am 412f6b91: am 7401a30e: am 36e62782: Merge "Upgrade to elfutils 0.161."

* commit '412f6b917fc658c24dd7d624bb82bf1a1e791b95':
  Upgrade to elfutils 0.161.
diff --git a/bionic-fixup/AndroidFixup.h b/bionic-fixup/AndroidFixup.h
new file mode 100644
index 0000000..6e2f26f
--- /dev/null
+++ b/bionic-fixup/AndroidFixup.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_FIXUP_H
+#define ANDROID_FIXUP_H
+
+/* These two don't seem like things we want in bionic, but elfutils uses every crazy thing. */
+#define strdupa(s) strcpy(alloca(strlen(s) + 1), s)
+#define strndupa(s, n) strncpy(alloca(strnlen(s, n) + 1), s, n)
+
+static inline void *rawmemchr(const void *s, int c)
+{
+    const unsigned char *ptr = s;
+    while (1) {
+        if (*ptr == c) return (void *) ptr;
+        ptr++;
+    }
+}
+
+/* workaround for canonicalize_file_name */
+#define canonicalize_file_name(path) realpath(path, NULL)
+
+#endif /* ANDROID_FIXUP_H */
diff --git a/bionic-fixup/argp.h b/bionic-fixup/argp.h
new file mode 100644
index 0000000..784a040
--- /dev/null
+++ b/bionic-fixup/argp.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ELFUTILS_ARGP_H
+#define ELFUTILS_ARGP_H
+
+// We don't have an implementation, but elfutils unconditionally includes this,
+// and relies on its transitive includes in places.
+
+#include <ctype.h>
+#include <errno.h>
+#include <getopt.h>
+#include <limits.h>
+#include <stdio.h>
+
+#endif /* ELFUTILS_ARGP_H */
diff --git a/src/bionic-fixup/libintl.h b/bionic-fixup/libintl.h
similarity index 100%
rename from src/bionic-fixup/libintl.h
rename to bionic-fixup/libintl.h
diff --git a/src/CONTRIBUTING b/src/CONTRIBUTING
new file mode 100644
index 0000000..3f5e5aa
--- /dev/null
+++ b/src/CONTRIBUTING
@@ -0,0 +1,48 @@
+The project homepage is at https://fedorahosted.org/elfutils/
+
+The current elfutils source code can be checked out with
+git clone git://git.fedorahosted.org/git/elfutils.git
+
+The developer mailinglist to send patches to is
+elfutils-devel@lists.fedorahosted.org.
+https://fedorahosted.org/mailman/listinfo/elfutils-devel
+
+Please supply patches using git format-patch or using git send-email.
+
+Sign your work
+
+To facilitate tracking of who did what, we've adopted a "sign-off"
+procedure for patches based on the procedure used by the Linux kernel
+project.
+
+The sign-off is a simple line at the end of the explanation for the
+patch, which certifies that you wrote it or otherwise have the right
+to pass it on as a patch under an appropriate license. The rules are
+pretty simple: if you can certify the below:
+
+        Developer's Certificate of Origin
+
+        By making a contribution to this project, I certify that:
+
+	(a) The contribution was created in whole or in part by me,
+	    and I have the right to submit the contribution under each
+	    license indicated in, or otherwise designated as being
+	    applicable to, the file.
+
+        (b) The contribution was provided directly to me by some other
+            person who certified (a), and I have not modified it.
+
+        (c) I understand and agree that the project and the
+            contribution are public and that a record of the
+            contribution (including all personal information I submit
+            with it, including my sign-off) is maintained indefinitely
+            and may be redistributed.
+
+then you just add a line saying
+
+Signed-off-by: Random J Developer <random@developer.example.org>
+
+using your real name (sorry, no pseudonyms or anonymous contributions.)
+
+git commit --signoff will add such a Signed-off-by line at the end of
+the commit log message for you.
diff --git a/src/COPYING b/src/COPYING
index 60549be..94a9ed0 100644
--- a/src/COPYING
+++ b/src/COPYING
@@ -1,285 +1,626 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-			    Preamble
+                            Preamble
 
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, not
 price.  Our General Public Licenses are designed to make sure that you
 have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
 
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
 
   For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
 
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
 
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
 
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
 
   The precise terms and conditions for copying, distribution and
 modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
+                       TERMS AND CONDITIONS
 
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
+  0. Definitions.
 
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
+  "This License" refers to version 3 of the GNU General Public License.
 
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
 
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
 
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
 
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
 
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
 
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
 
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
 
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
+  1. Source Code.
 
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
 
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
 
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
 
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
 
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
 
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
+  The Corresponding Source for a work in source code form is that
+same work.
 
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
 this License.
 
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
 otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
 
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
+  13. Use with the GNU Affero General Public License.
 
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
 
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
+  14. Revised Versions of this License.
 
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
 be similar in spirit to the present version, but may differ in detail to
 address new problems or concerns.
 
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
 
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
 
-			    NO WARRANTY
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
 
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
+  15. Disclaimer of Warranty.
 
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
 possible use to the public, the best way to achieve this is to make it
@@ -287,15 +628,15 @@
 
   To do so, attach the following notices to the program.  It is safest
 to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
+state the exclusion of warranty; and each file should have at least
 the "copyright" line and a pointer to where the full notice is found.
 
     <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
+    Copyright (C) <year>  <name of author>
 
-    This program is free software; you can redistribute it and/or modify
+    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 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,
@@ -304,37 +645,30 @@
     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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Also add information on how to contact you by electronic and paper mail.
 
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
 
 The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
 
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
 
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/src/COPYING-GPLV2 b/src/COPYING-GPLV2
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/src/COPYING-GPLV2
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 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.
+
+    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.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/src/COPYING-LGPLV3 b/src/COPYING-LGPLV3
new file mode 100644
index 0000000..65c5ca8
--- /dev/null
+++ b/src/COPYING-LGPLV3
@@ -0,0 +1,165 @@
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ChangeLog b/src/ChangeLog
index 5d75595..f81b302 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,194 @@
+2014-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* configure.ac: Set version to 0.161.
+	* NEWS: Add dwarf.h additions.
+
+2014-12-15  Josh Stone  <jistone@redhat.com>
+
+	* .gitignore: Add config/compile as installed by automake 1.14.
+
+2014-11-27  Mark Wielaard  <mjw@redhat.com>
+
+	* configure.ac: Add --disable-textrelcheck.
+
+2014-10-06  Mark Wielaard  <mjw@redhat.com>
+
+	* NEWS: New section 0.161. Add dwarf_peel_type.
+
+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.
+
+2012-08-24  Mark Wielaard  <mjw@redhat.com>
+
+	* configure.ac: Add --enable-dwz check, defaults to no.
+
+2012-07-24  Mark Wielaard  <mjw@redhat.com>
+
+	* TODO: Add note on shdrs after elf_cntl (ELF_C_FDREAD).
+
+2012-06-22  Mark Wielaard  <mjw@redhat.com>
+
+	* configure.ac: Set version to 0.154.
+
+2012-01-24  Mark Wielaard  <mjw@redhat.com>
+
+	* COPYING: Fix address. Updated version from gnulib.
+
 2012-01-23  Mark Wielaard  <mjw@redhat.com>
 
 	* configure.ac: Set version to 0.153, update copyright years.
diff --git a/src/EXCEPTION b/src/EXCEPTION
deleted file mode 100644
index 491c576..0000000
--- a/src/EXCEPTION
+++ /dev/null
@@ -1,11 +0,0 @@
-This file describes the limits of the Exception under which you are allowed
-to distribute Non-GPL Code in linked combination with Red Hat elfutils.
-For the full text of the license, please see one of the header files
-included with the source distribution or the file COPYING found in the
-top level directory of the source.
-
-The Approved Interfaces are the functions declared in the files:
-
-libelf.h
-libdw.h
-libdwfl.h
diff --git a/src/INSTALL b/src/INSTALL
index 7d1c323..2099840 100644
--- a/src/INSTALL
+++ b/src/INSTALL
@@ -1,8 +1,8 @@
 Installation Instructions
 *************************
 
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+Inc.
 
    Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -12,8 +12,8 @@
 Basic Installation
 ==================
 
-   Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package.  The following
+   Briefly, the shell command `./configure && make && make install'
+should configure, build, and install this package.  The following
 more-detailed instructions are generic; see the `README' file for
 instructions specific to this package.  Some packages provide this
 `INSTALL' file but do not implement all of the features documented
@@ -226,6 +226,11 @@
 
 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
 
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
    On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
 parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
 a workaround.  If GNU CC is not installed, it is therefore recommended
@@ -304,9 +309,10 @@
 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
 ======================
@@ -362,4 +368,3 @@
 
 `configure' also accepts some other, not widely useful, options.  Run
 `configure --help' for more details.
-
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..6e75938
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,894 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = .
+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 $(pkginclude_HEADERS) \
+	ABOUT-NLS COPYING TODO $(top_srcdir)/config/ar-lib \
+	$(top_srcdir)/config/compile $(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/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)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = elfutils.spec version.h
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+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/||"`;; \
+    *) 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 = $(pkginclude_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+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)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && 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,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 0.161
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = 
+top_builddir = .
+top_srcdir = .
+zip_LIBS = -lz 
+ACLOCAL_AMFLAGS = -I m4
+pkginclude_HEADERS = version.h
+
+# Add doc back when we have some real content.
+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
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnits'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnits \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: # $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+elfutils.spec: $(top_builddir)/config.status $(top_srcdir)/config/elfutils.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+version.h: $(top_builddir)/config.status $(top_srcdir)/config/version.h.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+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)
+
+# 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.
+$(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//`; \
+	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; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(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-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
+
+GTAGS:
+	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 \
+	*"$(VERSION)"*) : ;; \
+	*) \
+	  echo "NEWS not updated; not releasing" 1>&2; \
+	  exit 1;; \
+	esac
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@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
+	@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; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__post_remove_distdir)
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
+
+dist-tarZ: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__post_remove_distdir)
+
+dist-shar: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__post_remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__post_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
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	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,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build \
+	  && ../configure \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=.. --prefix="$$dc_install_base" \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(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'
+distuninstallcheck:
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(HEADERS) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(pkgincludedir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+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:
+
+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-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pkgincludeHEADERS
+
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.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-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 installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-pkgincludeHEADERS
+
+
+distcheck-hook:
+	chmod -R u+w $(distdir)
+
+rpm: dist
+	rpmbuild -ts --sign elfutils-0.161.tar.bz2
+
+# Tell version 3.79 and up of GNU make to not build goals in this
+# directory in parallel.
+.NOTPARALLEL:
+
+# 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:
diff --git a/src/Makefile.am b/src/Makefile.am
index 4decc55..d044a7c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,44 +2,40 @@
 ## Configure input file for elfutils.
 ##
 ## Copyright (C) 1996-2002, 2003, 2004, 2005, 2006, 2008, 2009 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+## 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.
+## 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ##
 ACLOCAL_AMFLAGS = -I m4
 
 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 EXCEPTION
+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:
diff --git a/src/Makefile.in b/src/Makefile.in
index 97b7dd7..6c93c2e 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -16,6 +15,51 @@
 @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@
@@ -35,13 +79,18 @@
 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/compile $(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) \
@@ -52,15 +101,33 @@
 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/||"`;; \
@@ -82,23 +149,54 @@
 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 = $(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)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && 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,'; \
@@ -126,17 +224,24 @@
   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@
@@ -145,10 +250,13 @@
 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@
@@ -169,6 +277,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -179,6 +288,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -193,6 +303,7 @@
 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@
@@ -246,23 +357,27 @@
 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 EXCEPTION
+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
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-am--refresh:
+am--refresh: Makefile
 	@:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
@@ -298,10 +413,8 @@
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -319,8 +432,11 @@
 	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"; \
@@ -334,27 +450,28 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
+	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; \
@@ -369,57 +486,12 @@
 	  $(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 \
@@ -435,12 +507,7 @@
 	      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; \
@@ -452,15 +519,11 @@
 	      $$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
@@ -469,9 +532,31 @@
 	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 \
@@ -513,13 +598,10 @@
 	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; \
@@ -548,35 +630,41 @@
 	|| 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 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
 
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
 
 dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-shar: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	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 -9 -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
@@ -587,8 +675,8 @@
 	  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*) \
 	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
@@ -598,9 +686,9 @@
 	*.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,^[^:\\/]:[\\/],/,'` \
@@ -608,8 +696,10 @@
 	  && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	  && ../configure \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=.. --prefix="$$dc_install_base" \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -632,13 +722,21 @@
 	  && $(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'
 distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
 	          echo "  (check DESTDIR support)"; \
@@ -672,10 +770,15 @@
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -756,24 +859,23 @@
 
 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-lzma 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-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 \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
-	tags-recursive uninstall uninstall-am \
+.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-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 installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am tags tags-am uninstall uninstall-am \
 	uninstall-pkgincludeHEADERS
 
 
diff --git a/src/NEWS b/src/NEWS
index aa660a8..e4fd31e 100644
--- a/src/NEWS
+++ b/src/NEWS
@@ -1,3 +1,153 @@
+Version 0.161
+
+libdw: New function dwarf_peel_type. dwarf_aggregate_size now uses
+       dwarf_peel_type to also provide the sizes of qualified types.
+       dwarf_getmacros will now serve either of .debug_macro and
+       .debug_macinfo transparently.  New interfaces
+       dwarf_getmacros_off, dwarf_macro_getsrcfiles,
+       dwarf_macro_getparamcnt, and dwarf_macro_param are available
+       for more generalized inspection of macros and their parameters.
+       dwarf.h: Add DW_AT_GNU_deleted, DW_AT_noreturn, DW_LANG_C11,
+       DW_LANG_C_plus_plus_11 and DW_LANG_C_plus_plus_14.
+
+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.
+        elf_getshdr now works consistently on non-mmaped ELF files after
+        calling elf_cntl(ELF_C_FDREAD).
+        Implement support for ar archives with 64-bit symbol table.
+
+libdw: dwarf.h corrected the DW_LANG_ObjC constant name (was DW_LANG_Objc).
+       Any existing sources using the old name will have to be updated.
+       Add DW_MACRO_GNU .debug_macro type encodings constants, DW_ATE_UTF
+       and DW_OP_GNU_parameter_ref to dwarf.h.
+       Experimental support for DWZ multifile forms DW_FORM_GNU_ref_alt
+       and DW_FORM_GNU_strp_alt.  Disabled by default.  Use configure
+       --enable-dwz to test it.
+
+readelf: Add .debug_macro parsing support.
+         Add .gdb_index version 7 parsing support.
+         Recognize DW_OP_GNU_parameter_ref.
+
+backends: Add support for Tilera TILE-Gx processor.
+
+translations: Updated Ukrainian translation.
+
+Version 0.154
+
+libelf: [g]elf[32|64]_offscn() do not match SHT_NOBITS sections at OFFSET.
+
+libdw: dwarf_highpc function now handles DWARF 4 DW_AT_high_pc constant form.
+       Fix bug using dwarf_next_unit to iterate over .debug_types.
+
+elflint: Now accepts gold linker produced executables.
+
+The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
+programs. There is now also a formal CONTRIBUTING document describing how to
+submit patches.
+
 Version 0.153
 
 libdw: Support reading .zdebug_* DWARF sections compressed via zlib.
diff --git a/src/README b/src/README
index 33cac74..f7e4b61 100644
--- a/src/README
+++ b/src/README
@@ -10,3 +10,10 @@
   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.
diff --git a/src/TODO b/src/TODO
index 0012a56..ad10a5e 100644
--- a/src/TODO
+++ b/src/TODO
@@ -29,6 +29,11 @@
    is allowed or the structure is aligned.  Use ELF_F_MALLOCED flag
    to differentiate.
 
+** shdrs after elf_cntl (ELF_C_FDREAD)
+
+   Similar to the above. After ELF_C_FDREAD the file is completely
+   in memory.  See also this mailing list thread:
+   https://fedorahosted.org/pipermail/elfutils-devel/2012-July/002368.html
 
 * libdw
 
diff --git a/src/aclocal.m4 b/src/aclocal.m4
index 94f714a..eb59f52 100644
--- a/src/aclocal.m4
+++ b/src/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 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.
@@ -11,15 +11,16 @@
 # 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  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,
@@ -31,10 +32,10 @@
 # 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.14'
 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.1], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -50,22 +51,82 @@
 # 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.1])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])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],
+  [AC_LANG_PUSH([C])
+   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
+     ])
+   AC_LANG_POP([C])])
+
+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  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.
 
 # 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
@@ -84,7 +145,7 @@
 #
 # 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,
@@ -110,22 +171,19 @@
 
 # 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
@@ -144,16 +202,14 @@
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# 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 10
 
-# 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
@@ -163,7 +219,7 @@
 # _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
@@ -176,12 +232,13 @@
 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],
@@ -189,8 +246,9 @@
   # 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
   # using a relative directory.
@@ -229,16 +287,16 @@
     : > 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
@@ -247,16 +305,16 @@
       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
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # 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}
@@ -304,7 +362,7 @@
 # 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
@@ -314,34 +372,39 @@
 # 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='\'
+  am__nodep='_no'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
 ])
 
 # 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
@@ -354,7 +417,7 @@
     # 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.
@@ -366,21 +429,19 @@
       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"])`
@@ -398,7 +459,7 @@
 # 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],
@@ -408,18 +469,21 @@
 
 # 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.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -432,7 +496,7 @@
 # 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
@@ -461,31 +525,40 @@
 # 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
@@ -496,34 +569,78 @@
 			     [_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
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
+
+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],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -545,7 +662,7 @@
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005, 2008  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,
@@ -564,16 +681,14 @@
     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],
@@ -587,21 +702,18 @@
 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
@@ -611,20 +723,17 @@
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 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_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]),
@@ -632,13 +741,14 @@
        [disable], [m4_define([am_maintainer_other], [enable])],
        [m4_define([am_maintainer_other], [enable])
         m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+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
@@ -646,18 +756,14 @@
 ]
 )
 
-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.
@@ -675,7 +781,7 @@
 _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
@@ -702,15 +808,12 @@
 
 # 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],
@@ -718,11 +821,10 @@
 $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
@@ -735,63 +837,35 @@
   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  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_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  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_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
 
 # _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
 # 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)
-# ----------------------------------
+# ------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
 [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -802,24 +876,82 @@
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# 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) 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_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # 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__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# 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_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# 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.
 
 # 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='
@@ -830,32 +962,40 @@
 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
+   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 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
@@ -865,9 +1005,85 @@
    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  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.
+
+# 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,
@@ -875,34 +1091,32 @@
 
 # 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  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 2
-
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -910,24 +1124,22 @@
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
 # AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  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
@@ -937,79 +1149,119 @@
 # 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.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} 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.
+[# 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}'])
+
+# 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 -'],
 
-  # tar/untar a dummy directory, and stop if the command works
+  [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
+
+    # 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
-  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])
-    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])
diff --git a/src/backends/ChangeLog b/src/backends/ChangeLog
index 744d1d5..e800d16 100644
--- a/src/backends/ChangeLog
+++ b/src/backends/ChangeLog
@@ -1,3 +1,315 @@
+2014-12-18  Ulrich Drepper  <drepper@gmail.com>
+
+	* Makefile.am: Suppress output of textrel_check command.
+
+2014-11-22  Mark Wielaard  <mjw@redhat.com>
+
+	* ppc64_symbol.c (ppc64_bss_plt_p): Remove ehdr argument.
+	* ppc_symbol.c (find_dyn_got): Likewise. Use elf_getphdrnum.
+	(ppc_check_special_symbol): Call find_dyn_got without ehdr.
+	(ppc_bss_plt_p): Remove ehdr argument.
+
+2014-11-17  Mark Wielaard  <mjw@redhat.com>
+
+	* ppc64_init.c (ppc64_init): Check section name is not NULL.
+
+2014-10-06  Mark Wielaard  <mjw@redhat.com>
+
+	* libebl_CPU.h (dwarf_peel_type): Removed.
+	(dwarf_peeled_die_type): Use libdw dwarf_peel_type.
+
+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.
+	(libebl_pic): Add libebl_tilegx_pic.a.
+	(tilegx_SRCS): New variable.
+	(libebl_tilegx_pic_a_SOURCES): Likewise.
+	(am_libebl_tilegx_pic_a_OBJECTS): Likewise.
+	* tilegx_corenote.c: New file.
+	* tilegx_regs.c: New file.
+	* tilegx_reloc.def: New file.
+	* tilegx_init.c: New file.
+	* tilegx_retval.c: New file.
+	* tilegx_symbol.c: New file.
+
 2011-03-09  Mark Wielaard  <mjw@redhat.com>
 
 	* alpha_init.c (alpha_init): Initialize check_st_other_bits hook.
diff --git a/src/backends/Makefile b/src/backends/Makefile
new file mode 100644
index 0000000..a6152b5
--- /dev/null
+++ b/src/backends/Makefile
@@ -0,0 +1,914 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# backends/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+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/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_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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_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_3 = arm_init.$(OBJEXT) arm_symbol.$(OBJEXT) \
+	arm_regs.$(OBJEXT) arm_corenote.$(OBJEXT) arm_auxv.$(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_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_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_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_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_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_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_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_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_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_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_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_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) \
+	x86_64_initreg.$(OBJEXT)
+libebl_x86_64_pic_a_OBJECTS = $(am_libebl_x86_64_pic_a_OBJECTS)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+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_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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 0.161
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/backends
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/backends
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+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 -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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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)
+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_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)
+sh_SRCS = sh_init.c sh_symbol.c sh_corenote.c sh_regs.c sh_retval.c
+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_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)
+ia64_SRCS = ia64_init.c ia64_symbol.c ia64_regs.c ia64_retval.c
+libebl_ia64_pic_a_SOURCES = $(ia64_SRCS)
+am_libebl_ia64_pic_a_OBJECTS = $(ia64_SRCS:.c=.os)
+alpha_SRCS = alpha_init.c alpha_symbol.c alpha_retval.c alpha_regs.c \
+	     alpha_corenote.c alpha_auxv.c
+
+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_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_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 \
+	     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_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 \
+              tilegx_retval.c tilegx_corenote.c
+
+libebl_tilegx_pic_a_SOURCES = $(tilegx_SRCS)
+am_libebl_tilegx_pic_a_OBJECTS = $(tilegx_SRCS:.c=.os)
+noinst_HEADERS = libebl_CPU.h common-reloc.c linux-core-note.c x86_corenote.c
+EXTRA_DIST = $(foreach m,$(modules),$($(m)_SRCS)) $(modules:=_reloc.def)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: # $(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 backends/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits backends/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(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)
+
+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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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
+
+include ./$(DEPDIR)/aarch64_cfi.Po
+include ./$(DEPDIR)/aarch64_corenote.Po
+include ./$(DEPDIR)/aarch64_init.Po
+include ./$(DEPDIR)/aarch64_initreg.Po
+include ./$(DEPDIR)/aarch64_regs.Po
+include ./$(DEPDIR)/aarch64_retval.Po
+include ./$(DEPDIR)/aarch64_symbol.Po
+include ./$(DEPDIR)/alpha_auxv.Po
+include ./$(DEPDIR)/alpha_corenote.Po
+include ./$(DEPDIR)/alpha_init.Po
+include ./$(DEPDIR)/alpha_regs.Po
+include ./$(DEPDIR)/alpha_retval.Po
+include ./$(DEPDIR)/alpha_symbol.Po
+include ./$(DEPDIR)/arm_attrs.Po
+include ./$(DEPDIR)/arm_auxv.Po
+include ./$(DEPDIR)/arm_cfi.Po
+include ./$(DEPDIR)/arm_corenote.Po
+include ./$(DEPDIR)/arm_init.Po
+include ./$(DEPDIR)/arm_initreg.Po
+include ./$(DEPDIR)/arm_regs.Po
+include ./$(DEPDIR)/arm_retval.Po
+include ./$(DEPDIR)/arm_symbol.Po
+include ./$(DEPDIR)/i386_auxv.Po
+include ./$(DEPDIR)/i386_cfi.Po
+include ./$(DEPDIR)/i386_corenote.Po
+include ./$(DEPDIR)/i386_init.Po
+include ./$(DEPDIR)/i386_initreg.Po
+include ./$(DEPDIR)/i386_regs.Po
+include ./$(DEPDIR)/i386_retval.Po
+include ./$(DEPDIR)/i386_symbol.Po
+include ./$(DEPDIR)/i386_syscall.Po
+include ./$(DEPDIR)/ia64_init.Po
+include ./$(DEPDIR)/ia64_regs.Po
+include ./$(DEPDIR)/ia64_retval.Po
+include ./$(DEPDIR)/ia64_symbol.Po
+include ./$(DEPDIR)/ppc64_corenote.Po
+include ./$(DEPDIR)/ppc64_init.Po
+include ./$(DEPDIR)/ppc64_resolve_sym.Po
+include ./$(DEPDIR)/ppc64_retval.Po
+include ./$(DEPDIR)/ppc64_symbol.Po
+include ./$(DEPDIR)/ppc_attrs.Po
+include ./$(DEPDIR)/ppc_auxv.Po
+include ./$(DEPDIR)/ppc_cfi.Po
+include ./$(DEPDIR)/ppc_corenote.Po
+include ./$(DEPDIR)/ppc_init.Po
+include ./$(DEPDIR)/ppc_initreg.Po
+include ./$(DEPDIR)/ppc_regs.Po
+include ./$(DEPDIR)/ppc_retval.Po
+include ./$(DEPDIR)/ppc_symbol.Po
+include ./$(DEPDIR)/ppc_syscall.Po
+include ./$(DEPDIR)/s390_cfi.Po
+include ./$(DEPDIR)/s390_corenote.Po
+include ./$(DEPDIR)/s390_init.Po
+include ./$(DEPDIR)/s390_initreg.Po
+include ./$(DEPDIR)/s390_regs.Po
+include ./$(DEPDIR)/s390_retval.Po
+include ./$(DEPDIR)/s390_symbol.Po
+include ./$(DEPDIR)/s390_unwind.Po
+include ./$(DEPDIR)/s390x_corenote.Po
+include ./$(DEPDIR)/sh_corenote.Po
+include ./$(DEPDIR)/sh_init.Po
+include ./$(DEPDIR)/sh_regs.Po
+include ./$(DEPDIR)/sh_retval.Po
+include ./$(DEPDIR)/sh_symbol.Po
+include ./$(DEPDIR)/sparc64_corenote.Po
+include ./$(DEPDIR)/sparc_auxv.Po
+include ./$(DEPDIR)/sparc_corenote.Po
+include ./$(DEPDIR)/sparc_init.Po
+include ./$(DEPDIR)/sparc_regs.Po
+include ./$(DEPDIR)/sparc_retval.Po
+include ./$(DEPDIR)/sparc_symbol.Po
+include ./$(DEPDIR)/tilegx_corenote.Po
+include ./$(DEPDIR)/tilegx_init.Po
+include ./$(DEPDIR)/tilegx_regs.Po
+include ./$(DEPDIR)/tilegx_retval.Po
+include ./$(DEPDIR)/tilegx_symbol.Po
+include ./$(DEPDIR)/x86_64_cfi.Po
+include ./$(DEPDIR)/x86_64_corenote.Po
+include ./$(DEPDIR)/x86_64_init.Po
+include ./$(DEPDIR)/x86_64_initreg.Po
+include ./$(DEPDIR)/x86_64_regs.Po
+include ./$(DEPDIR)/x86_64_retval.Po
+include ./$(DEPDIR)/x86_64_symbol.Po
+include ./$(DEPDIR)/x86_64_syscall.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(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`; \
+	$(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) $(DATA) $(HEADERS)
+installdirs:
+install-exec: install-exec-am
+install-data: install-data-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-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:
+
+.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-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
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
+
+libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw)
+	@rm -f $(@:.so=.map)
+	echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \
+	  > $(@:.so=.map)
+	$(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)
+	@$(textrel_check)
+
+libebl_i386.so: $(cpu_i386)
+libebl_x86_64.so: $(cpu_x86_64)
+
+install: install-am install-ebl-modules
+install-ebl-modules:
+	$(mkinstalldirs) $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)
+	for m in $(modules); do \
+	  $(INSTALL_PROGRAM) libebl_$${m}.so $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}-$(PACKAGE_VERSION).so; \
+	  ln -fs libebl_$${m}-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}.so; \
+	done
+
+uninstall: uninstall-am
+	for m in $(modules); do \
+	  rm -f $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}-$(PACKAGE_VERSION).so; \
+	  rm -f $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}.so; \
+	done
+	rmdir --ignore-fail-on-non-empty $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)
+
+# 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:
diff --git a/src/backends/Makefile.am b/src/backends/Makefile.am
index 3ce448a..687c089 100644
--- a/src/backends/Makefile.am
+++ b/src/backends/Makefile.am
@@ -1,53 +1,53 @@
 ## Process this file with automake to create Makefile.in
 ##
-## Copyright (C) 2000-2010 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## Copyright (C) 2000-2010, 2013, 2014 Red Hat, Inc.
+## Copyright (C) 2012 Tilera Corporation
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
-##
+## 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
-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
-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
+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)
@@ -57,7 +57,8 @@
 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)
@@ -72,29 +73,44 @@
 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 \
+              tilegx_retval.c tilegx_corenote.c
+libebl_tilegx_pic_a_SOURCES = $(tilegx_SRCS)
+am_libebl_tilegx_pic_a_OBJECTS = $(tilegx_SRCS:.c=.os)
+
 
 libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw)
 	@rm -f $(@:.so=.map)
@@ -103,8 +119,8 @@
 	$(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)
-	$(textrel_check)
+		-Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
+	@$(textrel_check)
 
 libebl_i386.so: $(cpu_i386)
 libebl_x86_64.so: $(cpu_x86_64)
diff --git a/src/backends/Makefile.in b/src/backends/Makefile.in
index b14a480..d204d03 100644
--- a/src/backends/Makefile.in
+++ b/src/backends/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -18,6 +17,51 @@
 
 
 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@
@@ -36,12 +80,13 @@
 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) \
@@ -51,102 +96,174 @@
 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_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_10 = 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_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_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@
@@ -155,10 +272,13 @@
 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@
@@ -179,6 +299,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -189,6 +310,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -203,6 +325,7 @@
 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@
@@ -252,36 +375,36 @@
 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
-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
+textrel_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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)
@@ -290,7 +413,8 @@
 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)
@@ -304,28 +428,44 @@
 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 \
+              tilegx_retval.c tilegx_corenote.c
+
+libebl_tilegx_pic_a_SOURCES = $(tilegx_SRCS)
+am_libebl_tilegx_pic_a_OBJECTS = $(tilegx_SRCS:.c=.os)
 noinst_HEADERS = libebl_CPU.h common-reloc.c linux-core-note.c x86_corenote.c
 EXTRA_DIST = $(foreach m,$(modules),$($(m)_SRCS)) $(modules:=_reloc.def)
 all: all-am
@@ -353,6 +493,7 @@
 	    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
@@ -365,46 +506,66 @@
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libebl_alpha_pic.a: $(libebl_alpha_pic_a_OBJECTS) $(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
-libebl_arm_pic.a: $(libebl_arm_pic_a_OBJECTS) $(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
-libebl_i386_pic.a: $(libebl_i386_pic_a_OBJECTS) $(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
-libebl_ia64_pic.a: $(libebl_ia64_pic_a_OBJECTS) $(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
-libebl_ppc64_pic.a: $(libebl_ppc64_pic_a_OBJECTS) $(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
-libebl_ppc_pic.a: $(libebl_ppc_pic_a_OBJECTS) $(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
-libebl_s390_pic.a: $(libebl_s390_pic_a_OBJECTS) $(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
-libebl_sh_pic.a: $(libebl_sh_pic_a_OBJECTS) $(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
-libebl_sparc_pic.a: $(libebl_sparc_pic_a_OBJECTS) $(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
-libebl_x86_64_pic.a: $(libebl_x86_64_pic_a_OBJECTS) $(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
+
+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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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)
@@ -412,6 +573,13 @@
 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@
@@ -420,8 +588,10 @@
 @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@
@@ -429,6 +599,7 @@
 @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@
@@ -439,20 +610,28 @@
 @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@
@@ -465,48 +644,43 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_regs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_retval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_symbol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_corenote.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_regs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_retval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_symbol.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 -o $@ $<
 
 .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 -o $@ `$(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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -518,15 +692,11 @@
 	      $$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
@@ -535,6 +705,21 @@
 	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
@@ -581,10 +766,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -668,17 +858,17 @@
 
 .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
 
 
@@ -698,8 +888,8 @@
 	$(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)
-	$(textrel_check)
+		-Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
+	@$(textrel_check)
 
 libebl_i386.so: $(cpu_i386)
 libebl_x86_64.so: $(cpu_x86_64)
diff --git a/src/backends/aarch64_cfi.c b/src/backends/aarch64_cfi.c
new file mode 100644
index 0000000..acbb9b6
--- /dev/null
+++ b/src/backends/aarch64_cfi.c
@@ -0,0 +1,82 @@
+/* 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;
+}
diff --git a/src/backends/aarch64_corenote.c b/src/backends/aarch64_corenote.c
new file mode 100644
index 0000000..9b42485
--- /dev/null
+++ b/src/backends/aarch64_corenote.c
@@ -0,0 +1,163 @@
+/* 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"
diff --git a/src/backends/aarch64_init.c b/src/backends/aarch64_init.c
new file mode 100644
index 0000000..b0fd17a
--- /dev/null
+++ b/src/backends/aarch64_init.c
@@ -0,0 +1,69 @@
+/* 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;
+}
diff --git a/src/backends/aarch64_initreg.c b/src/backends/aarch64_initreg.c
new file mode 100644
index 0000000..9706205
--- /dev/null
+++ b/src/backends/aarch64_initreg.c
@@ -0,0 +1,92 @@
+/* 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__ */
+}
diff --git a/src/backends/aarch64_regs.c b/src/backends/aarch64_regs.c
new file mode 100644
index 0000000..7a8a678
--- /dev/null
+++ b/src/backends/aarch64_regs.c
@@ -0,0 +1,102 @@
+/* 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;
+    }
+}
diff --git a/src/backends/aarch64_reloc.def b/src/backends/aarch64_reloc.def
new file mode 100644
index 0000000..36d29e6
--- /dev/null
+++ b/src/backends/aarch64_reloc.def
@@ -0,0 +1,157 @@
+/* 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)
diff --git a/src/backends/aarch64_retval.c b/src/backends/aarch64_retval.c
new file mode 100644
index 0000000..68de307
--- /dev/null
+++ b/src/backends/aarch64_retval.c
@@ -0,0 +1,376 @@
+/* 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;
+}
diff --git a/src/backends/aarch64_symbol.c b/src/backends/aarch64_symbol.c
new file mode 100644
index 0000000..3fdc9cf
--- /dev/null
+++ b/src/backends/aarch64_symbol.c
@@ -0,0 +1,87 @@
+/* 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;
+}
diff --git a/src/backends/alpha_auxv.c b/src/backends/alpha_auxv.c
index 38a8bcd..83e7199 100644
--- a/src/backends/alpha_auxv.c
+++ b/src/backends/alpha_auxv.c
@@ -1,27 +1,30 @@
 /* Alpha-specific auxv handling.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/alpha_corenote.c b/src/backends/alpha_corenote.c
index dcc62e9..6190df3 100644
--- a/src/backends/alpha_corenote.c
+++ b/src/backends/alpha_corenote.c
@@ -1,27 +1,30 @@
 /* PowerPC specific core note handling.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/alpha_init.c b/src/backends/alpha_init.c
index 30fe5c6..a3307d8 100644
--- a/src/backends/alpha_init.c
+++ b/src/backends/alpha_init.c
@@ -1,28 +1,31 @@
 /* Initialization of Alpha specific backend library.
    Copyright (C) 2002-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/alpha_regs.c b/src/backends/alpha_regs.c
index 3bb9a6c..436af3b 100644
--- a/src/backends/alpha_regs.c
+++ b/src/backends/alpha_regs.c
@@ -1,27 +1,30 @@
 /* Register names and numbers for Alpha DWARF.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/alpha_reloc.def b/src/backends/alpha_reloc.def
index 347a483..ed7e5c3 100644
--- a/src/backends/alpha_reloc.def
+++ b/src/backends/alpha_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for alpha.  -*- C -*-
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
diff --git a/src/backends/alpha_retval.c b/src/backends/alpha_retval.c
index 57ba867..53dbfa4 100644
--- a/src/backends/alpha_retval.c
+++ b/src/backends/alpha_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for Alpha ELF ABI.
-   Copyright (C) 2005, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2007, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -64,27 +67,10 @@
 {
   /* 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)
     {
@@ -94,9 +80,10 @@
     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.  */
 
@@ -105,6 +92,7 @@
     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)
diff --git a/src/backends/alpha_symbol.c b/src/backends/alpha_symbol.c
index 5d25d3e..657d9ee 100644
--- a/src/backends/alpha_symbol.c
+++ b/src/backends/alpha_symbol.c
@@ -1,28 +1,31 @@
 /* Alpha specific symbolic name handling.
    Copyright (C) 2002-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/arm_attrs.c b/src/backends/arm_attrs.c
index 84f4d45..c858715 100644
--- a/src/backends/arm_attrs.c
+++ b/src/backends/arm_attrs.c
@@ -1,27 +1,30 @@
 /* Object attribute tags for ARM.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/arm_auxv.c b/src/backends/arm_auxv.c
index 728f940..3282baf 100644
--- a/src/backends/arm_auxv.c
+++ b/src/backends/arm_auxv.c
@@ -1,27 +1,30 @@
 /* ARM-specific auxv handling.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/arm_cfi.c b/src/backends/arm_cfi.c
new file mode 100644
index 0000000..971a1fc
--- /dev/null
+++ b/src/backends/arm_cfi.c
@@ -0,0 +1,90 @@
+/* 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;
+}
diff --git a/src/backends/arm_corenote.c b/src/backends/arm_corenote.c
index 6f2d3a3..c5d8d88 100644
--- a/src/backends/arm_corenote.c
+++ b/src/backends/arm_corenote.c
@@ -1,27 +1,30 @@
 /* ARM specific core note handling.
-   Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009, 2012 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -55,7 +58,7 @@
   {
     { .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
@@ -70,4 +73,22 @@
 #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"
diff --git a/src/backends/arm_init.c b/src/backends/arm_init.c
index 15c0ee6..3283c97 100644
--- a/src/backends/arm_init.c
+++ b/src/backends/arm_init.c
@@ -1,28 +1,31 @@
 /* Initialization of Arm specific backend library.
-   Copyright (C) 2002, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002, 2005, 2009, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -59,6 +62,15 @@
   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;
 }
diff --git a/src/backends/arm_initreg.c b/src/backends/arm_initreg.c
new file mode 100644
index 0000000..a0a9be9
--- /dev/null
+++ b/src/backends/arm_initreg.c
@@ -0,0 +1,92 @@
+/* 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
+}
diff --git a/src/backends/arm_regs.c b/src/backends/arm_regs.c
index 0a9536d..21c5ad3 100644
--- a/src/backends/arm_regs.c
+++ b/src/backends/arm_regs.c
@@ -1,27 +1,30 @@
 /* Register names and numbers for ARM DWARF.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -45,7 +48,7 @@
   if (regno < 0 || regno > 320 || namelen < 5)
     return -1;
 
-  *prefix = NULL;
+  *prefix = "";
   *bits = 32;
   *type = DW_ATE_signed;
   *setname = "integer";
diff --git a/src/backends/arm_reloc.def b/src/backends/arm_reloc.def
index 4dc54b7..4b7894b 100644
--- a/src/backends/arm_reloc.def
+++ b/src/backends/arm_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for arm.  -*- C -*-
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
@@ -38,7 +41,7 @@
 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)
@@ -53,12 +56,78 @@
 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)
@@ -68,6 +137,17 @@
 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)
diff --git a/src/backends/arm_retval.c b/src/backends/arm_retval.c
index 191cb17..7aced74 100644
--- a/src/backends/arm_retval.c
+++ b/src/backends/arm_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for ARM EABI.
-   Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -60,27 +63,10 @@
 {
   /* 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)
@@ -91,9 +77,10 @@
     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.  */
 
@@ -101,24 +88,27 @@
     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);
-	}
+      {
+	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;
+      aggregate:
+	*locp = loc_aggregate;
+	return nloc_aggregate;
+      }
 
     case DW_TAG_structure_type:
     case DW_TAG_class_type:
diff --git a/src/backends/arm_symbol.c b/src/backends/arm_symbol.c
index e08874b..cd467ff 100644
--- a/src/backends/arm_symbol.c
+++ b/src/backends/arm_symbol.c
@@ -1,27 +1,30 @@
 /* Arm specific symbolic name handling.
-   Copyright (C) 2002-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002-2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -119,3 +122,10 @@
       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;
+}
diff --git a/src/backends/common-reloc.c b/src/backends/common-reloc.c
index 191b22a..2667ec4 100644
--- a/src/backends/common-reloc.c
+++ b/src/backends/common-reloc.c
@@ -1,27 +1,30 @@
 /* Common code for ebl reloc functions.
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "libebl_CPU.h"
 #include <assert.h>
diff --git a/src/backends/i386_auxv.c b/src/backends/i386_auxv.c
index 5f7b15e..dba63fe 100644
--- a/src/backends/i386_auxv.c
+++ b/src/backends/i386_auxv.c
@@ -1,27 +1,30 @@
 /* i386 specific auxv handling.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/i386_cfi.c b/src/backends/i386_cfi.c
index 77478f7..31f85f7 100644
--- a/src/backends/i386_cfi.c
+++ b/src/backends/i386_cfi.c
@@ -1,27 +1,30 @@
 /* i386 ABI-specified defaults for DWARF CFI.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/i386_corenote.c b/src/backends/i386_corenote.c
index 40b6a24..15cd66b 100644
--- a/src/backends/i386_corenote.c
+++ b/src/backends/i386_corenote.c
@@ -1,27 +1,30 @@
 /* i386 specific core note handling.
    Copyright (C) 2007-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/i386_init.c b/src/backends/i386_init.c
index be9bbf9..1e0b486 100644
--- a/src/backends/i386_init.c
+++ b/src/backends/i386_init.c
@@ -1,28 +1,31 @@
 /* Initialization of i386 specific backend library.
-   Copyright (C) 2000-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2009, 2013 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -60,6 +63,9 @@
   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;
 }
diff --git a/src/backends/i386_initreg.c b/src/backends/i386_initreg.c
new file mode 100644
index 0000000..51fd9ea
--- /dev/null
+++ b/src/backends/i386_initreg.c
@@ -0,0 +1,79 @@
+/* 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__ */
+}
diff --git a/src/backends/i386_regs.c b/src/backends/i386_regs.c
index 5cf0d81..fb8ded3 100644
--- a/src/backends/i386_regs.c
+++ b/src/backends/i386_regs.c
@@ -1,27 +1,30 @@
 /* Register names and numbers for i386 DWARF.
    Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/i386_reloc.def b/src/backends/i386_reloc.def
index 1befd1b..bd273b3 100644
--- a/src/backends/i386_reloc.def
+++ b/src/backends/i386_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for i386.	-*- C -*-
    Copyright (C) 2000, 2001, 2002, 2003, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
diff --git a/src/backends/i386_retval.c b/src/backends/i386_retval.c
index 67a090d..9da797d 100644
--- a/src/backends/i386_retval.c
+++ b/src/backends/i386_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for Linux/i386 ABI.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -64,27 +67,10 @@
 {
   /* 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)
     {
@@ -94,9 +80,10 @@
     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.  */
 
@@ -106,6 +93,7 @@
     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)
 	  {
diff --git a/src/backends/i386_symbol.c b/src/backends/i386_symbol.c
index 5d6c0ef..7dbf899 100644
--- a/src/backends/i386_symbol.c
+++ b/src/backends/i386_symbol.c
@@ -1,28 +1,31 @@
 /* i386 specific symbolic name handling.
    Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/i386_syscall.c b/src/backends/i386_syscall.c
index 4d6e438..535dcd8 100644
--- a/src/backends/i386_syscall.c
+++ b/src/backends/i386_syscall.c
@@ -1,27 +1,30 @@
 /* Linux/i386 system call ABI in DWARF register numbers.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/ia64_init.c b/src/backends/ia64_init.c
index 290c192..91da748 100644
--- a/src/backends/ia64_init.c
+++ b/src/backends/ia64_init.c
@@ -1,28 +1,31 @@
 /* Initialization of IA-64 specific backend library.
-   Copyright (C) 2002, 2003, 2005, 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -58,6 +61,7 @@
   HOOK (eh, machine_section_flag_check);
   HOOK (eh, register_info);
   HOOK (eh, return_value_location);
+  HOOK (eh, check_reloc_target_type);
 
   return MODVERSION;
 }
diff --git a/src/backends/ia64_regs.c b/src/backends/ia64_regs.c
index 0460739..a27fe63 100644
--- a/src/backends/ia64_regs.c
+++ b/src/backends/ia64_regs.c
@@ -1,27 +1,30 @@
 /* Register names and numbers for IA64 DWARF.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/ia64_reloc.def b/src/backends/ia64_reloc.def
index a423465..9e058c8 100644
--- a/src/backends/ia64_reloc.def
+++ b/src/backends/ia64_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for ia64.  -*- C -*-
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
diff --git a/src/backends/ia64_retval.c b/src/backends/ia64_retval.c
index 7645c3c..b5928c5 100644
--- a/src/backends/ia64_retval.c
+++ b/src/backends/ia64_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for IA64 ABI.
-   Copyright (C) 2006-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2006-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -106,7 +109,7 @@
       return fpregs_used + nregs;
     }
 
-  int tag = dwarf_tag (typedie);
+  int tag = DWARF_TAG_OR_RETURN (typedie);
   switch (tag)
     {
       Dwarf_Attribute attr_mem;
@@ -235,27 +238,10 @@
 {
   /* 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)
@@ -266,9 +252,10 @@
     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.  */
 
@@ -276,16 +263,21 @@
     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),
diff --git a/src/backends/ia64_symbol.c b/src/backends/ia64_symbol.c
index 1edef8b..f928b0b 100644
--- a/src/backends/ia64_symbol.c
+++ b/src/backends/ia64_symbol.c
@@ -1,28 +1,31 @@
 /* IA-64 specific symbolic name handling.
-   Copyright (C) 2002-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002-2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -145,3 +148,10 @@
 
   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;
+}
diff --git a/src/backends/libebl_CPU.h b/src/backends/libebl_CPU.h
index b00e723..ef2b922 100644
--- a/src/backends/libebl_CPU.h
+++ b/src/backends/libebl_CPU.h
@@ -1,31 +1,35 @@
 /* Common interface for libebl modules.
-   Copyright (C) 2000, 2001, 2002, 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000, 2001, 2002, 2003, 2005, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBEBL_CPU_H
 #define _LIBEBL_CPU_H 1
 
+#include <dwarf.h>
 #include <libeblP.h>
 
 #define EBLHOOK(name)	EBLHOOK_1(BACKEND, name)
@@ -42,5 +46,31 @@
 
 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); })
+
+/* 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;
+
+  if (dwarf_peel_type (result, result) != 0)
+    return -1;
+
+  return DWARF_TAG_OR_RETURN (result);
+}
 
 #endif	/* libebl_CPU.h */
diff --git a/src/backends/linux-core-note.c b/src/backends/linux-core-note.c
index 9d01219..e3c0109 100644
--- a/src/backends/linux-core-note.c
+++ b/src/backends/linux-core-note.c
@@ -1,27 +1,30 @@
 /* Common core note type descriptions for Linux.
    Copyright (C) 2007-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <string.h>
 
@@ -39,6 +42,9 @@
 #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)))
 
@@ -78,7 +84,14 @@
   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);
 };
 
@@ -120,8 +133,10 @@
     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'),
@@ -249,6 +264,28 @@
       *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
diff --git a/src/backends/ppc64_init.c b/src/backends/ppc64_init.c
index 3060a60..56e1828 100644
--- a/src/backends/ppc64_init.c
+++ b/src/backends/ppc64_init.c
@@ -1,33 +1,38 @@
 /* Initialization of PPC64 specific backend library.
-   Copyright (C) 2004, 2005, 2006, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <string.h>
+
 #define BACKEND		ppc64_
 #define RELOC_PREFIX	R_PPC64_
 #include "libebl_CPU.h"
@@ -53,14 +58,52 @@
   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)
+		{
+		  const char *name = elf_strptr (elf, ehdr->e_shstrndx,
+						 opd_shdr->sh_name);
+		  if (name != NULL && strcmp (name, ".opd") == 0)
+		    {
+		      eh->fd_addr = opd_shdr->sh_addr;
+		      eh->fd_data = elf_getdata (scn, NULL);
+		      break;
+		    }
+		}
+	    }
+	}
+    }
 
   return MODVERSION;
 }
diff --git a/src/backends/ppc64_reloc.def b/src/backends/ppc64_reloc.def
index e51512b..3a693cf 100644
--- a/src/backends/ppc64_reloc.def
+++ b/src/backends/ppc64_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for ppc64.  -*- C -*-
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
@@ -129,6 +132,21 @@
 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:
 
diff --git a/src/backends/ppc64_resolve_sym.c b/src/backends/ppc64_resolve_sym.c
new file mode 100644
index 0000000..03f6558
--- /dev/null
+++ b/src/backends/ppc64_resolve_sym.c
@@ -0,0 +1,63 @@
+/* Resolve symbol values through .opd function descriptors.
+   Copyright (C) 2013 Red Hat, Inc.
+   This file is part of elfutils.
+
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
+
+     * the GNU Lesser General Public License as published by the Free
+       Software Foundation; either version 3 of the License, or (at
+       your option) any later version
+
+   or
+
+     * the GNU General Public License as published by the Free
+       Software Foundation; either version 2 of the License, or (at
+       your option) any later version
+
+   or both in parallel, as here.
+
+   elfutils is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received copies of the GNU General Public License and
+   the GNU Lesser General Public License along with this program.  If
+   not, see <http://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#define BACKEND ppc64_
+#include "libebl_CPU.h"
+
+/* Resolve a function descriptor if addr points into the .opd section.
+   The .opd section contains function descriptors consisting of 3 addresses.
+   function, toc and chain. We are just interested in the first.
+   http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#FUNC-DES
+
+   Returns true if the given address could be resolved, false otherwise.
+*/
+bool
+ppc64_resolve_sym_value (Ebl *ebl, GElf_Addr *addr)
+{
+  if (ebl->fd_data != NULL && *addr >= ebl->fd_addr
+      && *addr + sizeof (Elf64_Addr) <= ebl->fd_addr + ebl->fd_data->d_size)
+    {
+      GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (ebl->elf, &ehdr_mem);
+      if (ehdr != NULL)
+	{
+	  Elf_Data opd_in, opd_out;
+	  opd_in.d_buf = ebl->fd_data->d_buf + (*addr - ebl->fd_addr);
+	  opd_out.d_buf = addr;
+	  opd_out.d_size = opd_in.d_size = sizeof (Elf64_Addr);
+	  opd_out.d_type = opd_in.d_type = ELF_T_ADDR;
+	  if (elf64_xlatetom (&opd_out, &opd_in,
+			      ehdr->e_ident[EI_DATA]) != NULL)
+	    return true;
+	}
+    }
+  return false;
+}
diff --git a/src/backends/ppc64_retval.c b/src/backends/ppc64_retval.c
index a5fc0dc..a251983 100644
--- a/src/backends/ppc64_retval.c
+++ b/src/backends/ppc64_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for Linux/PPC64 ABI.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -74,27 +77,10 @@
 {
   /* 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)
@@ -105,9 +91,10 @@
     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.  */
 
@@ -115,16 +102,21 @@
     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),
@@ -159,6 +151,7 @@
 
     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
@@ -176,9 +169,10 @@
 	  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,
diff --git a/src/backends/ppc64_symbol.c b/src/backends/ppc64_symbol.c
index 49fde0c..0feddce 100644
--- a/src/backends/ppc64_symbol.c
+++ b/src/backends/ppc64_symbol.c
@@ -1,28 +1,31 @@
 /* PPC64 specific symbolic name handling.
-   Copyright (C) 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2004, 2005, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -69,6 +72,8 @@
       return "PPC64_OPD";
     case DT_PPC64_OPDSZ:
       return "PPC64_OPDSZ";
+    case DT_PPC64_OPT:
+      return "PPC64_OPT";
     default:
       break;
     }
@@ -81,7 +86,8 @@
 {
   return (tag == DT_PPC64_GLINK
 	  || tag == DT_PPC64_OPD
-	  || tag == DT_PPC64_OPDSZ);
+	  || tag == DT_PPC64_OPDSZ
+	  || tag == DT_PPC64_OPT);
 }
 
 
@@ -102,8 +108,23 @@
 
 /* Check if backend uses a bss PLT in this file.  */
 bool
-ppc64_bss_plt_p (Elf *elf __attribute__ ((unused)),
-		 GElf_Ehdr *ehdr __attribute__ ((unused)))
+ppc64_bss_plt_p (Elf *elf __attribute__ ((unused)))
 {
   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);
+}
diff --git a/src/backends/ppc_attrs.c b/src/backends/ppc_attrs.c
index 985df3f..ebeafe5 100644
--- a/src/backends/ppc_attrs.c
+++ b/src/backends/ppc_attrs.c
@@ -1,27 +1,30 @@
 /* Object attribute tags for PowerPC.
    Copyright (C) 2008, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/ppc_auxv.c b/src/backends/ppc_auxv.c
index 1c0a5cf..a27a1da 100644
--- a/src/backends/ppc_auxv.c
+++ b/src/backends/ppc_auxv.c
@@ -1,27 +1,30 @@
 /* i386 specific auxv handling.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/ppc_cfi.c b/src/backends/ppc_cfi.c
new file mode 100644
index 0000000..55169ae
--- /dev/null
+++ b/src/backends/ppc_cfi.c
@@ -0,0 +1,77 @@
+/* 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")));
diff --git a/src/backends/ppc_corenote.c b/src/backends/ppc_corenote.c
index af0c46a..9ac8871 100644
--- a/src/backends/ppc_corenote.c
+++ b/src/backends/ppc_corenote.c
@@ -1,27 +1,30 @@
 /* PowerPC specific core note handling.
    Copyright (C) 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -120,7 +123,7 @@
   {									      \
     .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',		      \
diff --git a/src/backends/ppc_init.c b/src/backends/ppc_init.c
index 523c658..ad92765 100644
--- a/src/backends/ppc_init.c
+++ b/src/backends/ppc_init.c
@@ -1,28 +1,31 @@
 /* Initialization of PPC specific backend library.
-   Copyright (C) 2004, 2005, 2006, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -61,6 +64,11 @@
   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;
 }
diff --git a/src/backends/ppc_initreg.c b/src/backends/ppc_initreg.c
new file mode 100644
index 0000000..64f5379
--- /dev/null
+++ b/src/backends/ppc_initreg.c
@@ -0,0 +1,114 @@
+/* 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")));
diff --git a/src/backends/ppc_regs.c b/src/backends/ppc_regs.c
index 637c25d..4b92a9a 100644
--- a/src/backends/ppc_regs.c
+++ b/src/backends/ppc_regs.c
@@ -1,27 +1,30 @@
 /* Register names and numbers for PowerPC DWARF.
    Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -45,7 +48,7 @@
   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);
diff --git a/src/backends/ppc_reloc.def b/src/backends/ppc_reloc.def
index 974c24f..dc963a0 100644
--- a/src/backends/ppc_reloc.def
+++ b/src/backends/ppc_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for ppc.  -*- C -*-
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
diff --git a/src/backends/ppc_retval.c b/src/backends/ppc_retval.c
index 15a0dba..b14a99f 100644
--- a/src/backends/ppc_retval.c
+++ b/src/backends/ppc_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for Linux/PPC ABI.
-   Copyright (C) 2005, 2006, 2007, 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2006, 2007, 2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -86,27 +89,10 @@
 {
   /* 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)
@@ -117,9 +103,10 @@
     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.  */
 
@@ -127,18 +114,23 @@
     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,
@@ -162,6 +154,7 @@
 
     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
diff --git a/src/backends/ppc_symbol.c b/src/backends/ppc_symbol.c
index 9540a3e..c17ab37 100644
--- a/src/backends/ppc_symbol.c
+++ b/src/backends/ppc_symbol.c
@@ -1,28 +1,31 @@
 /* PPC specific symbolic name handling.
-   Copyright (C) 2004, 2005, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2004, 2005, 2007, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -78,9 +81,13 @@
 
 /* Look for DT_PPC_GOT.  */
 static bool
-find_dyn_got (Elf *elf, GElf_Ehdr *ehdr, GElf_Addr *addr)
+find_dyn_got (Elf *elf, GElf_Addr *addr)
 {
-  for (int i = 0; i < ehdr->e_phnum; ++i)
+  size_t phnum;
+  if (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);
@@ -124,7 +131,7 @@
     {
       /* In -msecure-plt mode, DT_PPC_GOT is present and must match.  */
       GElf_Addr gotaddr;
-      if (find_dyn_got (elf, ehdr, &gotaddr))
+      if (find_dyn_got (elf, &gotaddr))
 	return sym->st_value == gotaddr;
 
       /* In -mbss-plt mode, any place in the section is valid.  */
@@ -151,8 +158,8 @@
 
 /* Check if backend uses a bss PLT in this file.  */
 bool
-ppc_bss_plt_p (Elf *elf, GElf_Ehdr *ehdr)
+ppc_bss_plt_p (Elf *elf)
 {
   GElf_Addr addr;
-  return ! find_dyn_got (elf, ehdr, &addr);
+  return ! find_dyn_got (elf, &addr);
 }
diff --git a/src/backends/ppc_syscall.c b/src/backends/ppc_syscall.c
index 23eff81..b1b9c52 100644
--- a/src/backends/ppc_syscall.c
+++ b/src/backends/ppc_syscall.c
@@ -1,27 +1,30 @@
 /* Linux/PPC system call ABI in DWARF register numbers.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/s390_cfi.c b/src/backends/s390_cfi.c
new file mode 100644
index 0000000..cb49486
--- /dev/null
+++ b/src/backends/s390_cfi.c
@@ -0,0 +1,65 @@
+/* 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;
+}
diff --git a/src/backends/s390_corenote.c b/src/backends/s390_corenote.c
new file mode 100644
index 0000000..7ca3516
--- /dev/null
+++ b/src/backends/s390_corenote.c
@@ -0,0 +1,189 @@
+/* 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"
diff --git a/src/backends/s390_init.c b/src/backends/s390_init.c
index 05ffce6..26b20b4 100644
--- a/src/backends/s390_init.c
+++ b/src/backends/s390_init.c
@@ -1,27 +1,30 @@
 /* Initialization of S/390 specific backend library.
-   Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2006, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -34,6 +37,8 @@
 /* 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)
@@ -52,6 +57,20 @@
   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)
diff --git a/src/backends/s390_initreg.c b/src/backends/s390_initreg.c
new file mode 100644
index 0000000..b4c4b67
--- /dev/null
+++ b/src/backends/s390_initreg.c
@@ -0,0 +1,95 @@
+/* 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;
+}
diff --git a/src/backends/s390_regs.c b/src/backends/s390_regs.c
index 7e8113a..ba6178a 100644
--- a/src/backends/s390_regs.c
+++ b/src/backends/s390_regs.c
@@ -1,27 +1,30 @@
 /* Register names and numbers for S/390 DWARF.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/s390_reloc.def b/src/backends/s390_reloc.def
index b2bc922..b4686a3 100644
--- a/src/backends/s390_reloc.def
+++ b/src/backends/s390_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for s390.  -*- C -*-
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
diff --git a/src/backends/s390_retval.c b/src/backends/s390_retval.c
index 15bd97b..a927d46 100644
--- a/src/backends/s390_retval.c
+++ b/src/backends/s390_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for S/390 ABI.
-   Copyright (C) 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2006, 2007, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -65,27 +68,10 @@
 {
   /* 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)
@@ -96,9 +82,10 @@
     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.  */
 
@@ -112,6 +99,7 @@
 	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)
 	  {
diff --git a/src/backends/s390_symbol.c b/src/backends/s390_symbol.c
index 98c7653..a0a4faf 100644
--- a/src/backends/s390_symbol.c
+++ b/src/backends/s390_symbol.c
@@ -1,27 +1,30 @@
 /* S/390-specific symbolic name handling.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/s390_unwind.c b/src/backends/s390_unwind.c
new file mode 100644
index 0000000..752bc28
--- /dev/null
+++ b/src/backends/s390_unwind.c
@@ -0,0 +1,139 @@
+/* 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;
+}
diff --git a/src/backends/s390x_corenote.c b/src/backends/s390x_corenote.c
new file mode 100644
index 0000000..427bf7d
--- /dev/null
+++ b/src/backends/s390x_corenote.c
@@ -0,0 +1,2 @@
+#define BITS 64
+#include "s390_corenote.c"
diff --git a/src/backends/sh_corenote.c b/src/backends/sh_corenote.c
index 80bcd6f..9268f56 100644
--- a/src/backends/sh_corenote.c
+++ b/src/backends/sh_corenote.c
@@ -1,28 +1,31 @@
 /* SH specific core note handling.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed Matt Fleming <matt@console-pimps.org>.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/sh_init.c b/src/backends/sh_init.c
index 7b36e7a..90ddcb2 100644
--- a/src/backends/sh_init.c
+++ b/src/backends/sh_init.c
@@ -1,28 +1,31 @@
 /* Initialization of SH specific backend library.
    Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/sh_regs.c b/src/backends/sh_regs.c
index fc6705e..d433236 100644
--- a/src/backends/sh_regs.c
+++ b/src/backends/sh_regs.c
@@ -1,28 +1,31 @@
 /* Register names and numbers for SH DWARF.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Matt Fleming <matt@console-pimps.org>.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -47,7 +50,7 @@
   if (regno < 0 || regno > 103 || namelen < 6)
     return -1;
 
-  *prefix = NULL;
+  *prefix = "";
   *bits = 32;
   *type = DW_ATE_signed;
 
diff --git a/src/backends/sh_reloc.def b/src/backends/sh_reloc.def
index e4f2442..66a5a9d 100644
--- a/src/backends/sh_reloc.def
+++ b/src/backends/sh_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for SH.  -*- C -*-
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
diff --git a/src/backends/sh_retval.c b/src/backends/sh_retval.c
index 096d955..d44f260 100644
--- a/src/backends/sh_retval.c
+++ b/src/backends/sh_retval.c
@@ -1,28 +1,31 @@
 /* Function return value location for Linux/SH ABI.
-   Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Contributed by Matt Fleming <matt@console-pimps.org>.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -62,27 +65,10 @@
 {
   /* 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)
@@ -93,9 +79,10 @@
     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.  */
 
@@ -103,18 +90,23 @@
     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,
diff --git a/src/backends/sh_symbol.c b/src/backends/sh_symbol.c
index 9fb5db4..8101e96 100644
--- a/src/backends/sh_symbol.c
+++ b/src/backends/sh_symbol.c
@@ -1,28 +1,31 @@
 /* SH specific relocation handling.
    Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/sparc_auxv.c b/src/backends/sparc_auxv.c
index a22b3ce..2da349c 100644
--- a/src/backends/sparc_auxv.c
+++ b/src/backends/sparc_auxv.c
@@ -1,27 +1,30 @@
 /* SPARC-specific auxv handling.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/sparc_corenote.c b/src/backends/sparc_corenote.c
index 55aed8f..7912539 100644
--- a/src/backends/sparc_corenote.c
+++ b/src/backends/sparc_corenote.c
@@ -1,27 +1,30 @@
 /* PowerPC specific core note handling.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/sparc_init.c b/src/backends/sparc_init.c
index 856bd48..7d22998 100644
--- a/src/backends/sparc_init.c
+++ b/src/backends/sparc_init.c
@@ -1,27 +1,30 @@
 /* Initialization of SPARC specific backend library.
    Copyright (C) 2002, 2005, 2006, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/sparc_regs.c b/src/backends/sparc_regs.c
index b3e9e20..f9709bb 100644
--- a/src/backends/sparc_regs.c
+++ b/src/backends/sparc_regs.c
@@ -1,27 +1,30 @@
 /* Register names and numbers for SPARC DWARF.
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/sparc_reloc.def b/src/backends/sparc_reloc.def
index a7ea52a..c39b0fa 100644
--- a/src/backends/sparc_reloc.def
+++ b/src/backends/sparc_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for sparc.  -*- C -*-
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
diff --git a/src/backends/sparc_retval.c b/src/backends/sparc_retval.c
index dcff67a..e1b1775 100644
--- a/src/backends/sparc_retval.c
+++ b/src/backends/sparc_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for SPARC.
-   Copyright (C) 2006-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2006-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -69,27 +72,10 @@
 {
   /* 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)
@@ -100,9 +86,10 @@
     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.  */
 
@@ -110,19 +97,24 @@
     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),
diff --git a/src/backends/sparc_symbol.c b/src/backends/sparc_symbol.c
index 7896e9f..ec11dc9 100644
--- a/src/backends/sparc_symbol.c
+++ b/src/backends/sparc_symbol.c
@@ -1,28 +1,31 @@
 /* SPARC specific symbolic name handling.
    Copyright (C) 2002, 2003, 2005, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Jakub Jelinek <jakub@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/tilegx_corenote.c b/src/backends/tilegx_corenote.c
new file mode 100644
index 0000000..be3e7db
--- /dev/null
+++ b/src/backends/tilegx_corenote.c
@@ -0,0 +1,64 @@
+/* TILE-Gx specific core note handling.
+   Copyright (C) 2012 Tilera Corporation
+   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	tilegx_
+#include "libebl_CPU.h"
+
+static const Ebl_Register_Location prstatus_regs[] =
+  {
+    { .offset = 0, .regno = 0, .count = 56, .bits = 64 }, /* r0-r55 */
+    { .offset = 56 * 8, .regno = 64, .count = 1, .bits = 64 } /* pc */
+  };
+#define PRSTATUS_REGS_SIZE	(57 * 8)
+
+#define ULONG			uint64_t
+#define ALIGN_ULONG		8
+#define TYPE_ULONG		ELF_T_XWORD
+#define TYPE_LONG		ELF_T_SXWORD
+#define PID_T			int32_t
+#define	UID_T			uint32_t
+#define	GID_T			uint32_t
+#define ALIGN_PID_T		4
+#define ALIGN_UID_T		4
+#define ALIGN_GID_T		4
+#define TYPE_PID_T		ELF_T_SWORD
+#define TYPE_UID_T		ELF_T_WORD
+#define TYPE_GID_T		ELF_T_WORD
+
+#include "linux-core-note.c"
diff --git a/src/backends/tilegx_init.c b/src/backends/tilegx_init.c
new file mode 100644
index 0000000..858798b
--- /dev/null
+++ b/src/backends/tilegx_init.c
@@ -0,0 +1,60 @@
+/* Initialization of TILE-Gx specific backend library.
+   Copyright (C) 2012 Tilera Corporation
+   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		tilegx_
+#define RELOC_PREFIX	R_TILEGX_
+#include "libebl_CPU.h"
+
+/* This defines the common reloc hooks based on tilegx_reloc.def.  */
+#include "common-reloc.c"
+
+const char *
+tilegx_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 = "TILE-Gx";
+  tilegx_init_reloc (eh);
+  HOOK (eh, reloc_simple_type);
+  HOOK (eh, return_value_location);
+  HOOK (eh, register_info);
+  HOOK (eh, core_note);
+
+  return MODVERSION;
+}
diff --git a/src/backends/tilegx_regs.c b/src/backends/tilegx_regs.c
new file mode 100644
index 0000000..b1e1743
--- /dev/null
+++ b/src/backends/tilegx_regs.c
@@ -0,0 +1,129 @@
+/* Register names and numbers for TILE-Gx DWARF.
+   Copyright (C) 2012 Tilera Corporation
+   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>
+
+#define BACKEND tilegx_
+#include "libebl_CPU.h"
+
+ssize_t
+tilegx_register_info (Ebl *ebl __attribute__ ((unused)),
+		    int regno, char *name, size_t namelen,
+		    const char **prefix, const char **setname,
+		    int *bits, int *type)
+{
+  if (name == NULL)
+    return 65;
+
+  if (regno < 0 || regno > 64 || namelen < 5)
+    return -1;
+
+  *prefix = "";
+  *setname = "integer";
+  *bits = 64;
+
+  switch (regno)
+    {
+    case 0 ... 9:
+      *type = DW_ATE_signed;
+      name[0] = 'r';
+      name[1] = regno + '0';
+      namelen = 2;
+      break;
+
+    case 10 ... 52:
+      *type = DW_ATE_signed;
+      name[0] = 'r';
+      name[1] = regno / 10 + '0';
+      name[2] = regno % 10 + '0';
+      namelen = 3;
+      break;
+
+    case 53:
+      *type = DW_ATE_address;
+      return stpcpy (name, "tp") + 1 - name;
+
+    case 54:
+      *type = DW_ATE_address;
+      return stpcpy (name, "sp") + 1 - name;
+
+    case 55:
+      *type = DW_ATE_address;
+      return stpcpy (name, "lr") + 1 - name;
+
+    case 56:
+      *type = DW_ATE_unsigned;
+      return stpcpy (name, "sn") + 1 - name;
+
+    case 57:
+      *type = DW_ATE_unsigned;
+      return stpcpy (name, "idn0") + 1 - name;
+
+    case 58:
+      *type = DW_ATE_unsigned;
+      return stpcpy (name, "idn1") + 1 - name;
+
+    case 59:
+      *type = DW_ATE_unsigned;
+      return stpcpy (name, "udn0") + 1 - name;
+
+    case 60:
+      *type = DW_ATE_unsigned;
+      return stpcpy (name, "udn1") + 1 - name;
+
+    case 61:
+      *type = DW_ATE_unsigned;
+      return stpcpy (name, "udn2") + 1 - name;
+
+    case 62:
+      *type = DW_ATE_unsigned;
+      return stpcpy (name, "udn3") + 1 - name;
+
+    case 63:
+      *type = DW_ATE_unsigned;
+      return stpcpy (name, "zero") + 1 - name;
+
+    case 64:
+      *type = DW_ATE_address;
+      return stpcpy (name, "pc") + 1 - name;
+
+    /* Can't happen.  */
+    default:
+      *setname = NULL;
+      return 0;
+    }
+
+  name[namelen++] = '\0';
+  return namelen;
+}
diff --git a/src/backends/tilegx_reloc.def b/src/backends/tilegx_reloc.def
new file mode 100644
index 0000000..9736286
--- /dev/null
+++ b/src/backends/tilegx_reloc.def
@@ -0,0 +1,120 @@
+/* List the relocation types for tilegx.  -*- C -*-
+   Copyright (C) 2012 Tilera Corporation
+   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 (NONE,			0)
+RELOC_TYPE (64,				REL|EXEC|DYN)
+RELOC_TYPE (32,				REL|EXEC|DYN)
+RELOC_TYPE (16,				REL|EXEC|DYN)
+RELOC_TYPE (8,				REL|EXEC|DYN)
+RELOC_TYPE (64_PCREL,			REL)
+RELOC_TYPE (32_PCREL,			REL)
+RELOC_TYPE (16_PCREL,			REL)
+RELOC_TYPE (8_PCREL,			REL)
+RELOC_TYPE (HW0,			REL)
+RELOC_TYPE (HW1,			REL)
+RELOC_TYPE (HW2,			REL)
+RELOC_TYPE (HW3,			REL)
+RELOC_TYPE (HW0_LAST,			REL)
+RELOC_TYPE (HW1_LAST,			REL)
+RELOC_TYPE (HW2_LAST,			REL)
+RELOC_TYPE (COPY,			EXEC)
+RELOC_TYPE (GLOB_DAT,			EXEC|DYN)
+RELOC_TYPE (JMP_SLOT,			EXEC|DYN)
+RELOC_TYPE (RELATIVE,			EXEC|DYN)
+RELOC_TYPE (BROFF_X1,			REL)
+RELOC_TYPE (JUMPOFF_X1,			REL)
+RELOC_TYPE (JUMPOFF_X1_PLT,		REL)
+RELOC_TYPE (IMM8_X0,			REL)
+RELOC_TYPE (IMM8_Y0,			REL)
+RELOC_TYPE (IMM8_X1,			REL)
+RELOC_TYPE (IMM8_Y1,			REL)
+RELOC_TYPE (DEST_IMM8_X1,		REL)
+RELOC_TYPE (MT_IMM14_X1,		REL)
+RELOC_TYPE (MF_IMM14_X1,		REL)
+RELOC_TYPE (MMSTART_X0,			REL)
+RELOC_TYPE (MMEND_X0,			REL)
+RELOC_TYPE (SHAMT_X0,			REL)
+RELOC_TYPE (SHAMT_X1,			REL)
+RELOC_TYPE (SHAMT_Y0,			REL)
+RELOC_TYPE (SHAMT_Y1,			REL)
+RELOC_TYPE (IMM16_X0_HW0,		REL)
+RELOC_TYPE (IMM16_X1_HW0,		REL)
+RELOC_TYPE (IMM16_X0_HW1,		REL)
+RELOC_TYPE (IMM16_X1_HW1,		REL)
+RELOC_TYPE (IMM16_X0_HW2,		REL)
+RELOC_TYPE (IMM16_X1_HW2,		REL)
+RELOC_TYPE (IMM16_X0_HW3,		REL)
+RELOC_TYPE (IMM16_X1_HW3,		REL)
+RELOC_TYPE (IMM16_X0_HW0_LAST,		REL)
+RELOC_TYPE (IMM16_X1_HW0_LAST,		REL)
+RELOC_TYPE (IMM16_X0_HW1_LAST,		REL)
+RELOC_TYPE (IMM16_X1_HW1_LAST,		REL)
+RELOC_TYPE (IMM16_X0_HW2_LAST,		REL)
+RELOC_TYPE (IMM16_X1_HW2_LAST,		REL)
+RELOC_TYPE (IMM16_X0_HW0_PCREL,		REL)
+RELOC_TYPE (IMM16_X1_HW0_PCREL,		REL)
+RELOC_TYPE (IMM16_X0_HW1_PCREL,		REL)
+RELOC_TYPE (IMM16_X1_HW1_PCREL,		REL)
+RELOC_TYPE (IMM16_X0_HW2_PCREL,		REL)
+RELOC_TYPE (IMM16_X1_HW2_PCREL,		REL)
+RELOC_TYPE (IMM16_X0_HW3_PCREL,		REL)
+RELOC_TYPE (IMM16_X1_HW3_PCREL,		REL)
+RELOC_TYPE (IMM16_X0_HW0_LAST_PCREL,	REL)
+RELOC_TYPE (IMM16_X1_HW0_LAST_PCREL,	REL)
+RELOC_TYPE (IMM16_X0_HW1_LAST_PCREL,	REL)
+RELOC_TYPE (IMM16_X1_HW1_LAST_PCREL,	REL)
+RELOC_TYPE (IMM16_X0_HW2_LAST_PCREL,	REL)
+RELOC_TYPE (IMM16_X1_HW2_LAST_PCREL,	REL)
+RELOC_TYPE (IMM16_X0_HW0_GOT,		REL)
+RELOC_TYPE (IMM16_X1_HW0_GOT,		REL)
+RELOC_TYPE (IMM16_X0_HW0_LAST_GOT,	REL)
+RELOC_TYPE (IMM16_X1_HW0_LAST_GOT,	REL)
+RELOC_TYPE (IMM16_X0_HW1_LAST_GOT,	REL)
+RELOC_TYPE (IMM16_X1_HW1_LAST_GOT,	REL)
+RELOC_TYPE (IMM16_X0_HW0_TLS_GD,	REL)
+RELOC_TYPE (IMM16_X1_HW0_TLS_GD,	REL)
+RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_GD,	REL)
+RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_GD,	REL)
+RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_GD,	REL)
+RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_GD,	REL)
+RELOC_TYPE (IMM16_X0_HW0_TLS_IE,	REL)
+RELOC_TYPE (IMM16_X1_HW0_TLS_IE,	REL)
+RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_IE,	REL)
+RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_IE,	REL)
+RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_IE,	REL)
+RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_IE,	REL)
+RELOC_TYPE (TLS_DTPMOD64,		EXEC|DYN)
+RELOC_TYPE (TLS_DTPOFF64,		EXEC|DYN)
+RELOC_TYPE (TLS_TPOFF64,		EXEC|DYN)
+RELOC_TYPE (TLS_DTPMOD32,		EXEC|DYN)
+RELOC_TYPE (TLS_DTPOFF32,		EXEC|DYN)
+RELOC_TYPE (TLS_TPOFF32,		EXEC|DYN)
+RELOC_TYPE (GNU_VTINHERIT,		REL)
+RELOC_TYPE (GNU_VTENTRY,		REL)
diff --git a/src/backends/tilegx_retval.c b/src/backends/tilegx_retval.c
new file mode 100644
index 0000000..db81a20
--- /dev/null
+++ b/src/backends/tilegx_retval.c
@@ -0,0 +1,154 @@
+/* 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
+   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 <assert.h>
+#include <dwarf.h>
+
+#define BACKEND tilegx_
+#include "libebl_CPU.h"
+
+
+/* r0.  */
+static const Dwarf_Op loc_intreg[] =
+  {
+    { .atom = DW_OP_reg0 }
+  };
+#define nloc_intreg	1
+
+/* The return value is a structure and is actually stored in stack space
+   passed in a hidden argument by the caller.  But, the compiler
+   helpfully returns the address of that space in r0.  */
+static const Dwarf_Op loc_aggregate[] =
+  {
+    { .atom = DW_OP_breg0, .number = 0 }
+  };
+#define nloc_aggregate 1
+
+int
+tilegx_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 die_mem, *typedie = &die_mem;
+  int tag = dwarf_peeled_die_type (functypedie, typedie);
+  if (tag <= 0)
+    return tag;
+
+  Dwarf_Word size;
+  switch (tag)
+    {
+    case -1:
+      return -1;
+
+    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_OR_RETURN (typedie);
+	}
+      /* Fall through.  */
+
+    case DW_TAG_base_type:
+    case DW_TAG_enumeration_type:
+    case DW_TAG_pointer_type:
+    case DW_TAG_ptr_to_member_type:
+      {
+	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)
+	{
+	intreg:
+	  *locp = loc_intreg;
+	  return nloc_intreg;
+	}
+
+      /* Else fall through.  */
+    case DW_TAG_structure_type:
+    case DW_TAG_class_type:
+    case DW_TAG_union_type:
+    aggregate:
+      *locp = loc_aggregate;
+      return nloc_aggregate;
+
+    case DW_TAG_array_type:
+    case DW_TAG_string_type:
+      if (dwarf_aggregate_size (typedie, &size) == 0 && 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_OR_RETURN (typedie);
+	      if (tag != DW_TAG_base_type)
+		goto aggregate;
+	      if (dwarf_formudata (dwarf_attr_integrate (typedie,
+							 DW_AT_byte_size,
+							 &attr_mem),
+				   &size) != 0)
+		return -1;
+	      if (size != 1)
+		goto aggregate;
+	    }
+	  goto intreg;
+	}
+      goto aggregate;
+    }
+
+  /* XXX We don't have a good way to return specific errors from ebl calls.
+     This value means we do not understand the type, but it is well-formed
+     DWARF and might be valid.  */
+  return -2;
+}
diff --git a/src/backends/tilegx_symbol.c b/src/backends/tilegx_symbol.c
new file mode 100644
index 0000000..b653326
--- /dev/null
+++ b/src/backends/tilegx_symbol.c
@@ -0,0 +1,57 @@
+/* TILEGX-specific symbolic name handling.
+   Copyright (C) 2012 Tilera Corporation
+   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>
+
+#define BACKEND		tilegx_
+#include "libebl_CPU.h"
+
+/* Check for the simple reloc types.  */
+Elf_Type
+tilegx_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type)
+{
+  switch (type)
+    {
+    case R_TILEGX_64:
+      return ELF_T_SXWORD;
+    case R_TILEGX_32:
+      return ELF_T_SWORD;
+    case R_TILEGX_16:
+      return ELF_T_HALF;
+    case R_TILEGX_8:
+      return ELF_T_BYTE;
+    default:
+      return ELF_T_NUM;
+    }
+}
diff --git a/src/backends/x86_64_cfi.c b/src/backends/x86_64_cfi.c
index caaee44..6db8ac4 100644
--- a/src/backends/x86_64_cfi.c
+++ b/src/backends/x86_64_cfi.c
@@ -1,27 +1,30 @@
 /* x86-64 ABI-specified defaults for DWARF CFI.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/x86_64_corenote.c b/src/backends/x86_64_corenote.c
index 552ac88..f9d8db4 100644
--- a/src/backends/x86_64_corenote.c
+++ b/src/backends/x86_64_corenote.c
@@ -1,27 +1,30 @@
 /* x86-64 specific core note handling.
    Copyright (C) 2005, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/x86_64_init.c b/src/backends/x86_64_init.c
index 32f32e0..b885558 100644
--- a/src/backends/x86_64_init.c
+++ b/src/backends/x86_64_init.c
@@ -1,28 +1,31 @@
 /* Initialization of x86-64 specific backend library.
-   Copyright (C) 2002-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002-2009, 2013 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -57,6 +60,9 @@
   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;
 }
diff --git a/src/backends/x86_64_initreg.c b/src/backends/x86_64_initreg.c
new file mode 100644
index 0000000..db9216e
--- /dev/null
+++ b/src/backends/x86_64_initreg.c
@@ -0,0 +1,73 @@
+/* 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__ */
+}
diff --git a/src/backends/x86_64_regs.c b/src/backends/x86_64_regs.c
index 8eb0d33..2172d9f 100644
--- a/src/backends/x86_64_regs.c
+++ b/src/backends/x86_64_regs.c
@@ -1,27 +1,30 @@
 /* Register names and numbers for x86-64 DWARF.
    Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/x86_64_reloc.def b/src/backends/x86_64_reloc.def
index ef302e5..8ed98f6 100644
--- a/src/backends/x86_64_reloc.def
+++ b/src/backends/x86_64_reloc.def
@@ -1,27 +1,30 @@
 /* List the relocation types for x86-64.  -*- C -*-
    Copyright (C) 2000, 2001, 2002, 2003, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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	*/
 
diff --git a/src/backends/x86_64_retval.c b/src/backends/x86_64_retval.c
index ba772bb..b3799ae 100644
--- a/src/backends/x86_64_retval.c
+++ b/src/backends/x86_64_retval.c
@@ -1,27 +1,30 @@
 /* Function return value location for Linux/x86-64 ABI.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -78,27 +81,10 @@
 {
   /* 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)
@@ -109,9 +95,10 @@
     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.  */
 
@@ -119,16 +106,21 @@
     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),
diff --git a/src/backends/x86_64_symbol.c b/src/backends/x86_64_symbol.c
index 97fd15b..1622461 100644
--- a/src/backends/x86_64_symbol.c
+++ b/src/backends/x86_64_symbol.c
@@ -1,28 +1,31 @@
 /* x86_64 specific symbolic name handling.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/x86_64_syscall.c b/src/backends/x86_64_syscall.c
index c3db715..0deb8ba 100644
--- a/src/backends/x86_64_syscall.c
+++ b/src/backends/x86_64_syscall.c
@@ -1,27 +1,30 @@
 /* Linux/x86-64 system call ABI in DWARF register numbers.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/backends/x86_corenote.c b/src/backends/x86_corenote.c
index 78849a6..629462c 100644
--- a/src/backends/x86_corenote.c
+++ b/src/backends/x86_corenote.c
@@ -1,27 +1,30 @@
 /* x86-specific core note handling, pieces common to x86-64 and i386.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define	EXTRA_NOTES_IOPERM \
   case NT_386_IOPERM: \
diff --git a/src/bionic-fixup/AndroidFixup.h b/src/bionic-fixup/AndroidFixup.h
deleted file mode 100644
index e7e6daa..0000000
--- a/src/bionic-fixup/AndroidFixup.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_FIXUP_H
-#define ANDROID_FIXUP_H
-
-#include <libgen.h> // for basename
-
-/* _mempcpy and mempcpy */
-#ifndef __mempcpy
-#define __mempcpy(dest, src, n)  mempcpy(dest, src, n)
-#endif
-
-#ifndef mempcpy
-#include <string.h>
-
-static inline void *mempcpy(void *dest, const void *src, size_t n)
-{
-    char *ptr = memcpy(dest, src, n);
-    return ptr + n;
-}
-#endif
-
-/* rawmemchr */
-static inline void *rawmemchr(const void *s, int c)
-{
-    const unsigned char *ptr = s;
-    while (1) {
-        if (*ptr == c) return (void *) ptr;
-        ptr++;
-    }
-}
-
-/* workaround for canonicalize_file_name */
-#define canonicalize_file_name(path) realpath(path, NULL)
-
-#endif /* ANDROID_FIXUP_H */
diff --git a/src/bionic-fixup/argp.h b/src/bionic-fixup/argp.h
deleted file mode 100644
index 8a8e1bb..0000000
--- a/src/bionic-fixup/argp.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ELFUTILS_ARGP_H
-#define ELFUTILS_ARGP_H
-
-/* intentionally blank */
-
-#endif /* ELFUTILS_ARGP_H */
diff --git a/src/config.h b/src/config.h
index 1925333..5642f46 100644
--- a/src/config.h
+++ b/src/config.h
@@ -4,11 +4,41 @@
 /* Should ar and ranlib use -D behavior by default? */
 #define DEFAULT_AR_DETERMINISTIC false
 
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if <sys/user.h> defines struct user_regs_struct */
+#define HAVE_SYS_USER_REGS 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
 /* $libdir subdirectory containing libebl modules. */
 #define LIBEBL_SUBDIR "elfutils"
 
 /* Identifier for modules in the build. */
-#define MODVERSION "Build on bccheng.mtv.corp.google.com 2013-11-20T14:06:10-0800"
+#define MODVERSION "Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800"
 
 /* Define to 32 or 64 if a specific implementation is wanted. */
 /* #undef NATIVE_ELF */
@@ -17,13 +47,13 @@
 #define PACKAGE "elfutils"
 
 /* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "http://bugzilla.redhat.com/bugzilla/"
+#define PACKAGE_BUGREPORT "https://bugzilla.redhat.com/"
 
 /* Define to the full name of this package. */
-#define PACKAGE_NAME "Red Hat elfutils"
+#define PACKAGE_NAME "elfutils"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Red Hat elfutils 0.153"
+#define PACKAGE_STRING "elfutils 0.161"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "elfutils"
@@ -32,7 +62,17 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "0.153"
+#define PACKAGE_VERSION "0.161"
+
+/* The size of `long', as computed by sizeof. */
+#if __LP64__
+#define SIZEOF_LONG 8
+#else
+#define SIZEOF_LONG 4
+#endif
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
 
 /* Support bzip2 decompression via -lbz2. */
 /* #undef USE_BZLIB */
@@ -47,15 +87,20 @@
 /* #undef USE_LZMA */
 
 /* Support gzip decompression via -lz. */
-/* #undef USE_ZLIB */
+#define USE_ZLIB 1
 
 /* Version number of package */
-#define VERSION "0.153"
+#define VERSION "0.161"
 
 /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
    `char[]'. */
 #define YYTEXT_POINTER 1
 
+/* 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 */
 
diff --git a/src/config.h.in b/src/config.h.in
index b44f89d..8ceb0f9 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -3,6 +3,36 @@
 /* Should ar and ranlib use -D behavior by default? */
 #undef DEFAULT_AR_DETERMINISTIC
 
+/* 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
 
@@ -33,6 +63,12 @@
 /* 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
 
@@ -55,6 +91,11 @@
    `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
 
diff --git a/src/config.status b/src/config.status
new file mode 100755
index 0000000..d9e41f1
--- /dev/null
+++ b/src/config.status
@@ -0,0 +1,1403 @@
+#! /bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... 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 -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# 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'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+# Save the log message, to keep $0 and so on meaningful, and to
+# 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.161, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+# Files that config.status was made for.
+config_files=" config/Makefile Makefile m4/Makefile elfutils.spec:config/elfutils.spec.in lib/Makefile libelf/Makefile libebl/Makefile libdwelf/Makefile libdw/Makefile libdwfl/Makefile libcpu/Makefile libasm/Makefile backends/Makefile src/Makefile po/Makefile.in tests/Makefile version.h:config/version.h.in"
+config_headers=" config.h"
+config_commands=" depfiles po-directories"
+
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <https://bugzilla.redhat.com/>."
+
+ac_cs_config=""
+ac_cs_version="\
+elfutils config.status 0.161
+configured by ./configure, generated by GNU Autoconf 2.69,
+  with options \"$ac_cs_config\"
+
+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."
+
+ac_pwd='/huge-ssd/aosp-arm64/external/elfutils/src'
+srcdir='.'
+INSTALL='/usr/bin/install -c'
+MKDIR_P='/bin/mkdir -p'
+AWK='gawk'
+test -n "$AWK" || AWK=awk
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+  set X /bin/sh './configure'  $ac_configure_extra_args --no-create --no-recursion
+  shift
+  $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6
+  CONFIG_SHELL='/bin/sh'
+  export CONFIG_SHELL
+  exec "$@"
+fi
+
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="" ac_aux_dir="config"
+# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''=""'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="%UNSET%"
+
+
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config/Makefile") CONFIG_FILES="$CONFIG_FILES config/Makefile" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
+    "elfutils.spec") CONFIG_FILES="$CONFIG_FILES elfutils.spec:config/elfutils.spec.in" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "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" ;;
+    "libasm/Makefile") CONFIG_FILES="$CONFIG_FILES libasm/Makefile" ;;
+    "backends/Makefile") CONFIG_FILES="$CONFIG_FILES backends/Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+    "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
+    "version.h") CONFIG_FILES="$CONFIG_FILES version.h:config/version.h.in" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+cat >>"$ac_tmp/subs1.awk" <<\_ACAWK &&
+S["am__EXEEXT_FALSE"]=""
+S["am__EXEEXT_TRUE"]="#"
+S["LTLIBOBJS"]=""
+S["LIBOBJS"]=""
+S["CC_BIARCH"]="gcc -m32"
+S["BIARCH_FALSE"]="#"
+S["BIARCH_TRUE"]=""
+S["EGREP"]="/bin/grep -E"
+S["GREP"]="/bin/grep"
+S["CPP"]="gcc -E"
+S["eu_version"]="161"
+S["XGETTEXT_EXTRA_OPTIONS"]=""
+S["MSGMERGE"]="/usr/bin/msgmerge"
+S["XGETTEXT_015"]="/usr/bin/xgettext"
+S["XGETTEXT"]="/usr/bin/xgettext"
+S["GMSGFMT_015"]="/usr/bin/msgfmt"
+S["MSGFMT_015"]="/usr/bin/msgfmt"
+S["GMSGFMT"]="/usr/bin/msgfmt"
+S["MSGFMT"]="/usr/bin/msgfmt"
+S["GETTEXT_MACRO_VERSION"]="0.18"
+S["USE_NLS"]="yes"
+S["STANDALONE_FALSE"]=""
+S["STANDALONE_TRUE"]="#"
+S["HAVE_LIBASM_FALSE"]="#"
+S["HAVE_LIBASM_TRUE"]=""
+S["FATAL_TEXTREL_FALSE"]="#"
+S["FATAL_TEXTREL_TRUE"]=""
+S["DEMANGLE_FALSE"]="#"
+S["DEMANGLE_TRUE"]=""
+S["zip_LIBS"]="-lz "
+S["LZMA_FALSE"]=""
+S["LZMA_TRUE"]="#"
+S["BZLIB_FALSE"]=""
+S["BZLIB_TRUE"]="#"
+S["ZLIB_FALSE"]="#"
+S["ZLIB_TRUE"]=""
+S["LIBEBL_SUBDIR"]="elfutils"
+S["TESTS_RPATH_FALSE"]=""
+S["TESTS_RPATH_TRUE"]="#"
+S["BUILD_STATIC_FALSE"]=""
+S["BUILD_STATIC_TRUE"]="#"
+S["USE_VALGRIND_FALSE"]=""
+S["USE_VALGRIND_TRUE"]="#"
+S["HAVE_VALGRIND"]=""
+S["GCOV_FALSE"]=""
+S["GCOV_TRUE"]="#"
+S["GPROF_FALSE"]=""
+S["GPROF_TRUE"]="#"
+S["DEBUGPRED"]="0"
+S["NEVER_FALSE"]=""
+S["NEVER_TRUE"]="#"
+S["base_cpu"]="none"
+S["NATIVE_LD_FALSE"]=""
+S["NATIVE_LD_TRUE"]="#"
+S["NM"]="nm"
+S["READELF"]="readelf"
+S["ac_ct_AR"]="ar"
+S["AR"]="ar"
+S["LEXLIB"]="-lfl"
+S["LEX_OUTPUT_ROOT"]="lex.yy"
+S["LEX"]="flex"
+S["YFLAGS"]=""
+S["YACC"]="bison -y"
+S["RANLIB"]="ranlib"
+S["am__fastdepCC_FALSE"]="#"
+S["am__fastdepCC_TRUE"]=""
+S["CCDEPMODE"]="depmode=gcc3"
+S["am__nodep"]="_no"
+S["AMDEPBACKSLASH"]="\\"
+S["AMDEP_FALSE"]="#"
+S["AMDEP_TRUE"]=""
+S["am__quote"]=""
+S["am__include"]="include"
+S["DEPDIR"]=".deps"
+S["OBJEXT"]="o"
+S["EXEEXT"]=""
+S["ac_ct_CC"]="gcc"
+S["CPPFLAGS"]=""
+S["LDFLAGS"]=""
+S["CFLAGS"]="-g -O2"
+S["CC"]="gcc"
+S["USE_LOCKS_FALSE"]=""
+S["USE_LOCKS_TRUE"]="#"
+S["host_os"]="linux-gnu"
+S["host_vendor"]="unknown"
+S["host_cpu"]="x86_64"
+S["host"]="x86_64-unknown-linux-gnu"
+S["build_os"]="linux-gnu"
+S["build_vendor"]="unknown"
+S["build_cpu"]="x86_64"
+S["build"]="x86_64-unknown-linux-gnu"
+S["MODVERSION"]="Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800"
+S["MAINT"]="#"
+S["MAINTAINER_MODE_FALSE"]=""
+S["MAINTAINER_MODE_TRUE"]="#"
+S["AM_BACKSLASH"]="\\"
+S["AM_DEFAULT_VERBOSITY"]="1"
+S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)"
+S["AM_V"]="$(V)"
+S["am__untar"]="$${TAR-tar} xf -"
+S["am__tar"]="$${TAR-tar} chof - \"$$tardir\""
+S["AMTAR"]="$${TAR-tar}"
+S["am__leading_dot"]="."
+S["SET_MAKE"]=""
+S["AWK"]="gawk"
+S["mkdir_p"]="$(MKDIR_P)"
+S["MKDIR_P"]="/bin/mkdir -p"
+S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
+S["STRIP"]=""
+S["install_sh"]="${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh"
+S["MAKEINFO"]="${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo"
+S["AUTOHEADER"]="${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader"
+S["AUTOMAKE"]="${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14"
+S["AUTOCONF"]="${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf"
+S["ACLOCAL"]="${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14"
+S["VERSION"]="0.161"
+S["PACKAGE"]="elfutils"
+S["CYGPATH_W"]="echo"
+S["am__isrc"]=""
+S["INSTALL_DATA"]="${INSTALL} -m 644"
+S["INSTALL_SCRIPT"]="${INSTALL}"
+S["INSTALL_PROGRAM"]="${INSTALL}"
+S["target_alias"]=""
+S["host_alias"]=""
+S["build_alias"]=""
+S["LIBS"]=""
+S["ECHO_T"]=""
+S["ECHO_N"]="-n"
+S["ECHO_C"]=""
+S["DEFS"]="-DHAVE_CONFIG_H"
+S["mandir"]="${datarootdir}/man"
+S["localedir"]="${datarootdir}/locale"
+S["libdir"]="${exec_prefix}/lib"
+S["psdir"]="${docdir}"
+S["pdfdir"]="${docdir}"
+S["dvidir"]="${docdir}"
+S["htmldir"]="${docdir}"
+S["infodir"]="${datarootdir}/info"
+S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}"
+S["oldincludedir"]="/usr/include"
+S["includedir"]="${prefix}/include"
+S["localstatedir"]="${prefix}/var"
+S["sharedstatedir"]="${prefix}/com"
+S["sysconfdir"]="${prefix}/etc"
+S["datadir"]="${datarootdir}"
+S["datarootdir"]="${prefix}/share"
+S["libexecdir"]="${exec_prefix}/libexec"
+S["sbindir"]="${exec_prefix}/sbin"
+S["bindir"]="${exec_prefix}/bin"
+S["program_transform_name"]="s,x,x,"
+S["prefix"]="/usr/local"
+S["exec_prefix"]="${prefix}"
+S["PACKAGE_URL"]=""
+S["PACKAGE_BUGREPORT"]="https://bugzilla.redhat.com/"
+S["PACKAGE_STRING"]="elfutils 0.161"
+S["PACKAGE_VERSION"]="0.161"
+S["PACKAGE_TARNAME"]="elfutils"
+S["PACKAGE_NAME"]="elfutils"
+S["PATH_SEPARATOR"]=":"
+S["SHELL"]="/bin/sh"
+_ACAWK
+cat >>"$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+D["PACKAGE_NAME"]=" \"elfutils\""
+D["PACKAGE_TARNAME"]=" \"elfutils\""
+D["PACKAGE_VERSION"]=" \"0.161\""
+D["PACKAGE_STRING"]=" \"elfutils 0.161\""
+D["PACKAGE_BUGREPORT"]=" \"https://bugzilla.redhat.com/\""
+D["PACKAGE_URL"]=" \"\""
+D["PACKAGE"]=" \"elfutils\""
+D["VERSION"]=" \"0.161\""
+D["MODVERSION"]=" \"Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800\""
+D["DEFAULT_AR_DETERMINISTIC"]=" false"
+D["YYTEXT_POINTER"]=" 1"
+D["LIBEBL_SUBDIR"]=" \"elfutils\""
+D["USE_ZLIB"]=" 1"
+D["USE_DEMANGLE"]=" 1"
+D["STDC_HEADERS"]=" 1"
+D["HAVE_SYS_TYPES_H"]=" 1"
+D["HAVE_SYS_STAT_H"]=" 1"
+D["HAVE_STDLIB_H"]=" 1"
+D["HAVE_STRING_H"]=" 1"
+D["HAVE_MEMORY_H"]=" 1"
+D["HAVE_STRINGS_H"]=" 1"
+D["HAVE_INTTYPES_H"]=" 1"
+D["HAVE_STDINT_H"]=" 1"
+D["HAVE_UNISTD_H"]=" 1"
+D["SIZEOF_LONG"]=" 8"
+D["HAVE_SYS_USER_REGS"]=" 1"
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ {
+  line = $ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  ac_datarootdir_hack='
+  s&@datadir@&${datarootdir}&g
+  s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g
+  s&@infodir@&${datarootdir}/info&g
+  s&@localedir@&${datarootdir}/locale&g
+  s&@mandir@&${datarootdir}/man&g
+  s&\${datarootdir}&${prefix}/share&g' ;;
+esac
+ac_sed_extra="/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # 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
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # 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
+    # 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.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # 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
+    am__quote=`sed -n 's/^am__quote = //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'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+    "po-directories":C)
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      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_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.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        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"
+          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
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              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 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 assignment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
diff --git a/src/config/ChangeLog b/src/config/ChangeLog
index 849d1b3..1b4e896 100644
--- a/src/config/ChangeLog
+++ b/src/config/ChangeLog
@@ -1,3 +1,68 @@
+2014-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* elfutils.spec.in: Update for 0.161.
+
+2014-11-27  Mark Wielaard  <mjw@redhat.com>
+
+	* eu.am: Define textrel_msg, textrel_found and textrel_check based
+	on FATAL_TEXTREL.
+
+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.
+
+2012-07-19  Mark Wielaard  <mjw@redhat.com>
+
+	* known-dwarf.awk: "Generated by" header had wrong file names,
+	mention config/known-dwarf.awk and libdw/dwarf.h contents.
+
+2012-06-22  Mark Wielaard  <mjw@redhat.com>
+
+	* config/elfutils.spec.in: Update for 0.154.
+
 2012-02-23  Mark Wielaard  <mjw@redhat.com>
 
 	* config/elfutils.spec.in: Update for 0.153.
diff --git a/src/config/Makefile b/src/config/Makefile
new file mode 100644
index 0000000..c1d6f15
--- /dev/null
+++ b/src/config/Makefile
@@ -0,0 +1,445 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# config/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = config
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ChangeLog \
+	ar-lib compile config.guess config.sub depcomp install-sh \
+	missing ylwrap
+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 =
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 0.161
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/config
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/config
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+EXTRA_DIST = elfutils.spec.in known-dwarf.awk
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.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 config/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits config/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_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+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
+installdirs:
+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:
+
+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 mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+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 -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.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
+
+
+#$(srcdir)/elfutils.spec.in: $(top_srcdir)/NEWS
+#	@tmpname=$$(mktemp $${TMPDIR:-/tmp}/elfutils.XXXXXX); \
+#	date +'* %a %b %e %Y' | tr '[\n]' '[ ]' > $$tmpname; \
+#	getent passwd "$$(whoami)" | \
+#	  awk 'BEGIN {FS=":"} { printf $$5; exit 0}' >> $$tmpname; \
+#	echo -n " <$$(whoami)@gmail.com> " >> $$tmpname; \
+#	awk '\
+#	  $$1 == "Version" && started { exit } \
+#	  $$1 == "Version" { started=1; line=""; sub(/:/,"",$$2); \
+#			     print $$2 "-1"; next } \
+#	  NF > 0 { line = (line != "") ? (line " " $$0) : ("- " $$0) } \
+#	  NF == 0 && line != "" { print line; line="" } \
+#	  END { if (line != "") print line; print "" }' $< \
+#	| fold -s -w 70 | sed '1!s/^[^-]/  &/' >> $$tmpname; \
+#	sed "/^%changelog/r $$tmpname" $@ > $@.new; \
+#	rm -f $$tmpname; \
+#	mv -f $@.new $@
+
+# 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:
diff --git a/src/config/Makefile.am b/src/config/Makefile.am
index 45ddd73..6e61b77 100644
--- a/src/config/Makefile.am
+++ b/src/config/Makefile.am
@@ -2,28 +2,31 @@
 ## Configure input file for elfutils.
 ##
 ## Copyright (C) 2004, 2005, 2008, 2009, 2011 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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/>.
 ##
 EXTRA_DIST = elfutils.spec.in known-dwarf.awk
 
diff --git a/src/config/Makefile.in b/src/config/Makefile.in
index f7d095f..1384d5f 100644
--- a/src/config/Makefile.in
+++ b/src/config/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -15,6 +14,51 @@
 
 @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@
@@ -34,10 +78,12 @@
 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 compile config.guess config.sub depcomp install-sh \
+	missing ylwrap
 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) \
@@ -46,18 +92,40 @@
 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@
@@ -66,10 +134,13 @@
 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@
@@ -90,6 +161,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -100,6 +172,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -114,6 +187,7 @@
 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@
@@ -197,11 +271,11 @@
 $(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)
@@ -248,10 +322,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -331,15 +410,16 @@
 
 .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
diff --git a/src/config/ar-lib b/src/config/ar-lib
new file mode 100755
index 0000000..fe2301e
--- /dev/null
+++ b/src/config/ar-lib
@@ -0,0 +1,270 @@
+#! /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
diff --git a/src/config/compile b/src/config/compile
new file mode 100755
index 0000000..531136b
--- /dev/null
+++ b/src/config/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+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/,$2, in
+	*,$file_conv,*)
+	  ;;
+	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_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# 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:
diff --git a/src/config/config.guess b/src/config/config.guess
index dc84c68..1f5c50c 100755
--- a/src/config/config.guess
+++ b/src/config/config.guess
@@ -1,14 +1,12 @@
 #! /bin/sh
 # 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
-#   Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2009-11-20'
+timestamp='2014-03-23'
 
 # 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
@@ -17,26 +15,22 @@
 # 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,.*/,,'`
 
@@ -56,8 +50,7 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright 1992-2014 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."
@@ -139,12 +132,33 @@
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	;;
+esac
+
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:NetBSD:*:*)
 	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
 	# switched to ELF, *-*-netbsd* would select the old
 	# object file format.  This provides both forward
@@ -180,7 +194,7 @@
 		fi
 		;;
 	    *)
-	        os=netbsd
+		os=netbsd
 		;;
 	esac
 	# The OS release
@@ -201,6 +215,10 @@
 	# 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}
@@ -223,7 +241,7 @@
 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
 		;;
 	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
 		;;
 	esac
 	# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -269,7 +287,10 @@
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
     Alpha\ *:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# Should we change UNAME_MACHINE based on the output of uname instead
@@ -295,12 +316,12 @@
 	echo s390-ibm-zvmoe
 	exit ;;
     *:OS400:*:*)
-        echo powerpc-ibm-os400
+	echo powerpc-ibm-os400
 	exit ;;
     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:*:*)
@@ -394,23 +415,23 @@
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint${UNAME_RELEASE}
 	exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
 	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
+	exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint${UNAME_RELEASE}
 	exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
     m68k:machten:*:*)
 	echo m68k-apple-machten${UNAME_RELEASE}
 	exit ;;
@@ -480,8 +501,8 @@
 	echo m88k-motorola-sysv3
 	exit ;;
     AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
 	then
 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -494,7 +515,7 @@
 	else
 	    echo i586-dg-dgux${UNAME_RELEASE}
 	fi
- 	exit ;;
+	exit ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
 	echo m88k-dolphin-sysv3
 	exit ;;
@@ -551,7 +572,7 @@
 		echo rs6000-ibm-aix3.2
 	fi
 	exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
@@ -594,52 +615,52 @@
 	    9000/[678][0-9][0-9])
 		if [ -x /usr/bin/getconf ]; then
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
 			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
+			esac ;;
+		    esac
 		fi
 		if [ "${HP_ARCH}" = "" ]; then
 		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
+		    sed 's/^		//' << EOF >$dummy.c
 
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
 
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
 
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
 EOF
 		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -730,22 +751,22 @@
 	exit ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
 	echo c1-convex-bsd
-        exit ;;
+	exit ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
 	if getsysinfo -f scalar_acc
 	then echo c32-convex-bsd
 	else echo c2-convex-bsd
 	fi
-        exit ;;
+	exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
 	echo c34-convex-bsd
-        exit ;;
+	exit ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
 	echo c38-convex-bsd
-        exit ;;
+	exit ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
 	echo c4-convex-bsd
-        exit ;;
+	exit ;;
     CRAY*Y-MP:*:*:*)
 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
@@ -769,14 +790,14 @@
 	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
     5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -788,30 +809,35 @@
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
 	exit ;;
     *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
 	    amd64)
 		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	esac
 	exit ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
 	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
     *:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
 	exit ;;
+    *:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
     i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
 	exit ;;
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
     *:Interix*:*)
-    	case ${UNAME_MACHINE} in
+	case ${UNAME_MACHINE} in
 	    x86)
 		echo i586-pc-interix${UNAME_RELEASE}
 		exit ;;
@@ -848,15 +874,22 @@
 	exit ;;
     *:GNU:*:*)
 	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
 	exit ;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
 	exit ;;
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     alpha:Linux:*:*)
 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
 	  EV5)   UNAME_MACHINE=alphaev5 ;;
@@ -866,52 +899,56 @@
 	  EV6)   UNAME_MACHINE=alphaev6 ;;
 	  EV67)  UNAME_MACHINE=alphaev67 ;;
 	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
+	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     arm*:Linux:*:*)
 	eval $set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_EABI__
 	then
-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	else
-	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+	    fi
 	fi
 	exit ;;
     avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     cris:Linux:*:*)
-	echo cris-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
     crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
     frv:Linux:*:*)
-    	echo frv-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     i*86:Linux:*:*)
-	LIBC=gnu
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
 	exit ;;
     ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
 	eval $set_cc_for_build
@@ -930,51 +967,63 @@
 	#endif
 EOF
 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
 	;;
-    or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
+    openrisc*:Linux:*:*)
+	echo or1k-unknown-linux-${LIBC}
+	exit ;;
+    or32:Linux:*:* | or1k*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     padre:Linux:*:*)
-	echo sparc-unknown-linux-gnu
+	echo sparc-unknown-linux-${LIBC}
 	exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
+	echo hppa64-unknown-linux-${LIBC}
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
 	esac
 	exit ;;
     ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
+	echo powerpc64-unknown-linux-${LIBC}
 	exit ;;
     ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
 	exit ;;
     sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
 	exit ;;
     x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     xtensa*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -983,11 +1032,11 @@
 	echo i386-sequent-sysv4
 	exit ;;
     i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
 	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
+	# Use sysv4.2uw... so that sysv4* matches it.
 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
 	exit ;;
     i*86:OS/2:*:*)
@@ -1019,7 +1068,7 @@
 	fi
 	exit ;;
     i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
 	case `/bin/uname -X | grep "^Machine"` in
 	    *486*)	     UNAME_MACHINE=i486 ;;
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
@@ -1047,13 +1096,13 @@
 	exit ;;
     pc:*:*:*)
 	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i586.
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
 	# Note: whatever this is, it MUST be the same as what config.sub
 	# prints for the "djgpp" host, or else GDB configury will decide that
 	# this is a cross-build.
 	echo i586-pc-msdosdjgpp
-        exit ;;
+	exit ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
 	exit ;;
@@ -1088,8 +1137,8 @@
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
 	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
 	OS_REL='.3'
 	test -r /etc/.relid \
@@ -1132,10 +1181,10 @@
 		echo ns32k-sni-sysv
 	fi
 	exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel@ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
     *:UNIX_System_V:4*:FTX*)
 	# From Gerald Hewes <hewes@openmarket.com>.
 	# How about differentiating between stratus architectures? -djm
@@ -1161,11 +1210,11 @@
 	exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
+		echo mips-nec-sysv${UNAME_RELEASE}
 	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
+		echo mips-unknown-sysv${UNAME_RELEASE}
 	fi
-        exit ;;
+	exit ;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
 	echo powerpc-be-beos
 	exit ;;
@@ -1178,6 +1227,9 @@
     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 ;;
@@ -1204,19 +1256,31 @@
 	exit ;;
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    i386)
-		eval $set_cc_for_build
-		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		      grep IS_64BIT_ARCH >/dev/null
-		  then
-		      UNAME_PROCESSOR="x86_64"
-		  fi
-		fi ;;
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		    grep IS_64BIT_ARCH >/dev/null
+		then
+		    case $UNAME_PROCESSOR in
+			i386) UNAME_PROCESSOR=x86_64 ;;
+			powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		    esac
+		fi
+	    fi
+	elif test "$UNAME_PROCESSOR" = i386 ; then
+	    # Avoid executing cc on OS X 10.9, as it ships with a stub
+	    # that puts up a graphical alert prompting to install
+	    # developer tools.  Any system running Mac OS X 10.7 or
+	    # later (Darwin 11 and later) is required to have a 64-bit
+	    # processor. This is not true of the ARM version of Darwin
+	    # that Apple uses in portable devices.
+	    UNAME_PROCESSOR=x86_64
+	fi
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
 	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1230,7 +1294,10 @@
     *:QNX:*:4*)
 	echo i386-pc-qnx
 	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
 	echo nse-tandem-nsk${UNAME_RELEASE}
 	exit ;;
     NSR-?:NONSTOP_KERNEL:*:*)
@@ -1275,13 +1342,13 @@
 	echo pdp10-unknown-its
 	exit ;;
     SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
+	echo mips-sei-seiux${UNAME_RELEASE}
 	exit ;;
     *:DragonFly:*:*)
 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
 	exit ;;
     *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
 	case "${UNAME_MACHINE}" in
 	    A*) echo alpha-dec-vms ; exit ;;
 	    I*) echo ia64-dec-vms ; exit ;;
@@ -1299,159 +1366,11 @@
     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_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-          "4"
-#else
-	  ""
-#endif
-         ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
 cat >&2 <<EOF
 $0: unable to guess system type
 
diff --git a/src/config/config.sub b/src/config/config.sub
index 2a55a50..66c5074 100755
--- a/src/config/config.sub
+++ b/src/config/config.sub
@@ -1,38 +1,31 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2009-11-20'
+timestamp='2014-07-28'
 
-# 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.
@@ -75,8 +68,7 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright 1992-2014 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."
@@ -123,13 +115,18 @@
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  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 ]
@@ -152,12 +149,12 @@
 	-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
 		;;
-        -bluegene*)
-	        os=-cnk
+	-bluegene*)
+		os=-cnk
 		;;
 	-sim | -cisco | -oki | -wec | -winbond)
 		os=
@@ -173,10 +170,10 @@
 		os=-chorusos
 		basic_machine=$1
 		;;
- 	-chorusrdb)
- 		os=-chorusrdb
+	-chorusrdb)
+		os=-chorusrdb
 		basic_machine=$1
- 		;;
+		;;
 	-hiux*)
 		os=-hiuxwe2
 		;;
@@ -221,6 +218,12 @@
 	-isc*)
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
 	-lynx*)
 		os=-lynxos
 		;;
@@ -245,20 +248,28 @@
 	# 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 \
+	| arc | arceb \
+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+	| avr | avr32 \
+	| be32 | be64 \
 	| bfin \
-	| c4x | clipper \
+	| c4x | c8051 | clipper \
 	| d10v | d30v | dlx | dsp16xx \
+	| epiphany \
 	| fido | fr30 | frv \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
+	| k1om \
+	| 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 \
@@ -272,38 +283,50 @@
 	| mips64vr5900 | mips64vr5900el \
 	| mipsisa32 | mipsisa32el \
 	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa32r6 | mipsisa32r6el \
 	| mipsisa64 | mipsisa64el \
 	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64r6 | mipsisa64r6el \
 	| mipsisa64sb1 | mipsisa64sb1el \
 	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
 	| moxie \
 	| mt \
 	| msp430 \
-	| nios | nios2 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 | nios2eb | nios2el \
 	| ns16k | ns32k \
-	| or32 \
+	| open8 | or1k | or1knd | or32 \
 	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
 	| pyramid \
-	| rx \
+	| rl78 | rx \
 	| score \
 	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
 	| ubicom32 \
-	| v850 | v850e \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
 	| we32k \
-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| x86 | xc16x | xstormy16 | xtensa \
 	| z8k | z80)
 		basic_machine=$basic_machine-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-		# Motorola 68HC11/12.
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
 		basic_machine=$basic_machine-unknown
 		os=-none
 		;;
@@ -313,6 +336,21 @@
 		basic_machine=mt-unknown
 		;;
 
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
 	# We use `pc' rather than `unknown'
 	# because (1) that's what they normally are, and
 	# (2) the word "unknown" tends to confuse beginning users.
@@ -327,25 +365,31 @@
 	# 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-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
+	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | craynv-* | cydra-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
+	| k1om-* \
+	| le32-* | le64-* \
 	| 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-* \
@@ -359,33 +403,41 @@
 	| mips64vr5900-* | mips64vr5900el-* \
 	| mipsisa32-* | mipsisa32el-* \
 	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa32r6-* | mipsisa32r6el-* \
 	| mipsisa64-* | mipsisa64el-* \
 	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64r6-* | mipsisa64r6el-* \
 	| mipsisa64sb1-* | mipsisa64sb1el-* \
 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
 	| mipstx39-* | mipstx39el-* \
 	| mmix-* \
 	| mt-* \
 	| msp430-* \
-	| nios-* | nios2-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
 	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| or1k*-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
 	| pyramid-* \
-	| romp-* | rs6000-* | rx-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
 	| tron-* \
 	| ubicom32-* \
-	| v850-* | v850e-* | vax-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
 	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
 	| ymp-* \
 	| z8k-* | z80-*)
@@ -410,7 +462,7 @@
 		basic_machine=a29k-amd
 		os=-udi
 		;;
-    	abacus)
+	abacus)
 		basic_machine=abacus-unknown
 		;;
 	adobe68k)
@@ -480,11 +532,20 @@
 		basic_machine=powerpc-ibm
 		os=-cnk
 		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	c90)
 		basic_machine=c90-cray
 		os=-unicos
 		;;
-        cegcc)
+	cegcc)
 		basic_machine=arm-unknown
 		os=-cegcc
 		;;
@@ -516,7 +577,7 @@
 		basic_machine=craynv-cray
 		os=-unicosmp
 		;;
-	cr16)
+	cr16 | cr16-*)
 		basic_machine=cr16-unknown
 		os=-elf
 		;;
@@ -674,7 +735,6 @@
 	i370-ibm* | ibm*)
 		basic_machine=i370-ibm
 		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
 	i*86v32)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-sysv32
@@ -732,11 +792,15 @@
 		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
+		basic_machine=i686-pc
 		os=-mingw32
 		;;
 	mingw32ce)
@@ -764,6 +828,10 @@
 		basic_machine=powerpc-unknown
 		os=-morphos
 		;;
+	moxiebox)
+		basic_machine=moxie-unknown
+		os=-moxiebox
+		;;
 	msdos)
 		basic_machine=i386-pc
 		os=-msdos
@@ -771,10 +839,18 @@
 	ms1-*)
 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
 		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
 	mvs)
 		basic_machine=i370-ibm
 		os=-mvs
 		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
 	ncr3000)
 		basic_machine=i486-ncr
 		os=-sysv4
@@ -839,6 +915,12 @@
 	np1)
 		basic_machine=np1-gould
 		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
@@ -921,9 +1003,10 @@
 		;;
 	power)	basic_machine=power-ibm
 		;;
-	ppc)	basic_machine=powerpc-unknown
+	ppc | ppcbe)	basic_machine=powerpc-unknown
 		;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
 	ppcle | powerpclittle | ppc-le | powerpc-little)
 		basic_machine=powerpcle-unknown
@@ -933,7 +1016,7 @@
 		;;
 	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
@@ -948,7 +1031,11 @@
 		basic_machine=i586-unknown
 		os=-pw32
 		;;
-	rdos)
+	rdos | rdos64)
+		basic_machine=x86_64-pc
+		os=-rdos
+		;;
+	rdos32)
 		basic_machine=i386-pc
 		os=-rdos
 		;;
@@ -1017,6 +1104,9 @@
 		basic_machine=i860-stratus
 		os=-sysv4
 		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	sun2)
 		basic_machine=m68000-sun
 		;;
@@ -1073,20 +1163,8 @@
 		basic_machine=t90-cray
 		os=-unicos
 		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
 	tile*)
-		basic_machine=tile-unknown
+		basic_machine=$basic_machine-unknown
 		os=-linux-gnu
 		;;
 	tx39)
@@ -1156,6 +1234,9 @@
 	xps | xps100)
 		basic_machine=xps100-honeywell
 		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
 	ymp)
 		basic_machine=ymp-cray
 		os=-unicos
@@ -1253,11 +1334,11 @@
 if [ x"$os" != x"" ]
 then
 case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
+	# First match some system type aliases
+	# that might get confused with valid system types.
 	# -solaris* is a basic system type, with this one exception.
-        -auroraux)
-	        os=-auroraux
+	-auroraux)
+		os=-auroraux
 		;;
 	-solaris1 | -solaris1.*)
 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
@@ -1281,28 +1362,29 @@
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
 	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
 	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* \
+	      | -sym* | -kopensolaris* | -plan9* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
 	      | -aos* | -aros* \
 	      | -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* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1341,7 +1423,7 @@
 	-opened*)
 		os=-openedition
 		;;
-        -os400*)
+	-os400*)
 		os=-os400
 		;;
 	-wince*)
@@ -1390,7 +1472,7 @@
 	-sinix*)
 		os=-sysv4
 		;;
-        -tpf*)
+	-tpf*)
 		os=-tpf
 		;;
 	-triton*)
@@ -1426,15 +1508,14 @@
 	-aros*)
 		os=-aros
 		;;
-	-kaos*)
-		os=-kaos
-		;;
 	-zvmoe)
 		os=-zvmoe
 		;;
 	-dicos*)
 		os=-dicos
 		;;
+	-nacl*)
+		;;
 	-none)
 		;;
 	*)
@@ -1457,10 +1538,10 @@
 # system, and we'll never get to this point.
 
 case $basic_machine in
-        score-*)
+	score-*)
 		os=-elf
 		;;
-        spu-*)
+	spu-*)
 		os=-elf
 		;;
 	*-acorn)
@@ -1472,8 +1553,23 @@
 	arm*-semi)
 		os=-aout
 		;;
-        c4x-* | tic4x-*)
-        	os=-coff
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	c8051-*)
+		os=-elf
+		;;
+	hexagon-*)
+		os=-elf
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
 		;;
 	# This must come before the *-dec entry.
 	pdp10-*)
@@ -1493,14 +1589,11 @@
 		;;
 	m68000-sun)
 		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
 		;;
 	m68*-cisco)
 		os=-aout
 		;;
-        mep-*)
+	mep-*)
 		os=-elf
 		;;
 	mips*-cisco)
@@ -1527,7 +1620,7 @@
 	*-ibm)
 		os=-aix
 		;;
-    	*-knuth)
+	*-knuth)
 		os=-mmixware
 		;;
 	*-wec)
diff --git a/src/config/depcomp b/src/config/depcomp
index df8eea7..4ebd5b3 100755
--- a/src/config/depcomp
+++ b/src/config/depcomp
@@ -1,10 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-05-30.07; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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
@@ -28,9 +27,9 @@
 
 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]
@@ -40,11 +39,11 @@
 
 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 outputing dependencies.
+  tmpdepfile  Temporary file to use when outputting dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake@gnu.org>.
@@ -57,6 +56,66 @@
     ;;
 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
@@ -69,6 +128,9 @@
 
 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
@@ -80,18 +142,32 @@
 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
+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
@@ -114,8 +190,7 @@
   done
   "$@"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -123,13 +198,17 @@
   ;;
 
 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
@@ -137,31 +216,31 @@
   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.
+## 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 '/:$/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"
   ;;
 
@@ -179,8 +258,7 @@
     "$@" -MDupdate "$tmpdepfile"
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -188,43 +266,41 @@
 
   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
@@ -237,9 +313,7 @@
     "$@" -M
   fi
   stat=$?
-
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
@@ -248,44 +322,100 @@
   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
 
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
+  # 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
+
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -297,8 +427,8 @@
   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"
   ;;
 
@@ -309,9 +439,8 @@
   # '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
@@ -322,8 +451,7 @@
     "$@" +Maked
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
      rm -f "$tmpdepfile1" "$tmpdepfile2"
      exit $stat
   fi
@@ -333,77 +461,107 @@
     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$//'`
+  # 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
-      # 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
+  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 -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    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"
-   ;;
+  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=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # 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
+  ;;
 
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
@@ -422,7 +580,7 @@
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -442,18 +600,18 @@
   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"
   ;;
 
@@ -503,12 +661,15 @@
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
-  cat < "$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"
+  # 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"
+  # 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
   ;;
 
@@ -525,7 +686,7 @@
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -544,10 +705,10 @@
     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"
@@ -579,23 +740,23 @@
       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"
   ;;
diff --git a/src/config/elfutils.spec.in b/src/config/elfutils.spec.in
index 2156d27..06f73fc 100644
--- a/src/config/elfutils.spec.in
+++ b/src/config/elfutils.spec.in
@@ -3,7 +3,7 @@
 Name: elfutils
 Version: @PACKAGE_VERSION@
 Release: 1
-License: GPLv2 with exceptions
+License: GPLv3+ and (GPLv2+ or LGPLv3+)
 Group: Development/Tools
 Source: elfutils-%{version}.tar.bz2
 Obsoletes: libelf libelf-devel
@@ -41,6 +41,7 @@
 %package devel
 Summary: Development libraries to handle compiled objects.
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 Requires: elfutils = %{version}-%{release}
 Requires: elfutils-libelf-devel = %{version}-%{release}
 
@@ -54,6 +55,7 @@
 %package devel-static
 Summary: Static archives to handle compiled objects.
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 Requires: elfutils-devel = %{version}-%{release}
 
 %description devel-static
@@ -63,6 +65,7 @@
 %package libelf
 Summary: Library to read and write ELF files.
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 
 %description libelf
 The elfutils-libelf package provides a DSO which allows reading and
@@ -73,6 +76,7 @@
 %package libelf-devel
 Summary: Development support for libelf
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 Requires: elfutils-libelf = %{version}-%{release}
 Conflicts: libelf-devel
 
@@ -85,6 +89,7 @@
 %package libelf-devel-static
 Summary: Static archive of libelf
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 Requires: elfutils-libelf-devel = %{version}-%{release}
 Conflicts: libelf-devel
 
@@ -132,7 +137,7 @@
 
 %files
 %defattr(-,root,root)
-%doc README TODO
+%doc COPYING COPYING-GPLV2 COPYING-LGPLV3 README TODO CONTRIBUTING
 %{_bindir}/eu-elflint
 %{_bindir}/eu-nm
 %{_bindir}/eu-readelf
@@ -164,6 +169,7 @@
 %{_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
@@ -190,6 +196,121 @@
 %{_libdir}/libelf.a
 
 %changelog
+* Thu Dec 18 2014 Mark Wielaard <mjw@redhat.com> 0.161-1
+- libdw: New function dwarf_peel_type. dwarf_aggregate_size now uses
+  dwarf_peel_type to also provide the sizes of qualified types.
+  dwarf_getmacros will now serve either of .debug_macro and
+  .debug_macinfo transparently.  New interfaces dwarf_getmacros_off,
+  dwarf_macro_getsrcfiles, dwarf_macro_getparamcnt, and
+  dwarf_macro_param are available for more generalized inspection of
+  macros and their parameters.
+  dwarf.h: Add DW_AT_GNU_deleted, DW_AT_noreturn, DW_LANG_C11,
+  DW_LANG_C_plus_plus_11 and DW_LANG_C_plus_plus_14.
+
+* 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 
+          calling elf_cntl(ELF_C_FDREAD).         Implement support for 
+  ar archives with 64-bit symbol table.
+- libdw: dwarf.h corrected the DW_LANG_ObjC constant name (was 
+  DW_LANG_Objc).        Any existing sources using the old name will 
+  have to be updated.        Add DW_MACRO_GNU .debug_macro type 
+  encodings constants, DW_ATE_UTF        and DW_OP_GNU_parameter_ref to 
+  dwarf.h.        Experimental support for DWZ multifile forms 
+  DW_FORM_GNU_ref_alt        and DW_FORM_GNU_strp_alt.  Disabled by 
+  default.  Use configure        --enable-dwz to test it.
+- readelf: Add .debug_macro parsing support.          Add .gdb_index 
+  version 7 parsing support.          Recognize DW_OP_GNU_parameter_ref.
+- backends: Add support for Tilera TILE-Gx processor.
+- translations: Updated Ukrainian translation.
+
+* Fri Jun 22 2012 Mark Wielaard <mjw@redhat.com> 0.154-1
+- libelf: [g]elf[32|64]_offscn() do not match SHT_NOBITS sections at 
+  OFFSET.
+- libdw: dwarf_highpc function now handles DWARF 4 DW_AT_high_pc 
+  constant form.        Fix bug using dwarf_next_unit to iterate over 
+  .debug_types.
+- elflint: Now accepts gold linker produced executables.
+- The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for 
+  stand-alone programs. There is now also a formal CONTRIBUTING 
+  document describing how to submit patches.
+
 * Thu Feb 23 2012 Mark Wielaard <mjw@redhat.com> 0.153-1
 - libdw: Support reading .zdebug_* DWARF sections compressed via zlib.
 - libdwfl: Speed up dwfl_module_addrsym.
diff --git a/src/config/eu.am b/src/config/eu.am
index f259c5b..faf8add 100644
--- a/src/config/eu.am
+++ b/src/config/eu.am
@@ -1,47 +1,42 @@
 ## Common automake fragments for elfutils subdirectory makefiles.
 ##
-## Copyright (C) 2010 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## Copyright (C) 2010, 2014 Red Hat, Inc.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+## 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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/>.
 ##
 
 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
@@ -57,4 +52,10 @@
 
 CLEANFILES = *.gcno *.gcda
 
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_msg = echo "WARNING: TEXTREL found in '$@'"
+if FATAL_TEXTREL
+textrel_found = $(textrel_msg); exit 1
+else
+textrel_found = $(textrel_msg)
+endif
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
diff --git a/src/config/install-sh b/src/config/install-sh
index 6781b98..377bb86 100755
--- a/src/config/install-sh
+++ b/src/config/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2009-04-28.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
@@ -35,7 +35,7 @@
 # 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
@@ -156,6 +156,10 @@
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
+	# Protect names problematic for 'test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
 	shift;;
 
     -T) no_target_directory=true;;
@@ -186,6 +190,10 @@
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -194,13 +202,17 @@
     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
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for 'test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
@@ -347,7 +354,7 @@
 	      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
@@ -385,7 +392,7 @@
 
       case $dstdir in
 	/*) prefix='/';;
-	-*) prefix='./';;
+	[-=\(\)!]*) prefix='./';;
 	*)  prefix='';;
       esac
 
@@ -403,7 +410,7 @@
 
       for d
       do
-	test -z "$d" && continue
+	test X"$d" = X && continue
 
 	prefix=$prefix$d
 	if test -d "$prefix"; then
diff --git a/src/config/known-dwarf.awk b/src/config/known-dwarf.awk
index bd7f026..52ec5b6 100644
--- a/src/config/known-dwarf.awk
+++ b/src/config/known-dwarf.awk
@@ -1,5 +1,22 @@
 #!/bin/gawk -f
 
+## 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/>.
+
 $1 == "enum" { set = ""; next }
 
 set == "" && $1 ~ /DW_([A-Z_]+)_([^ ]+)/ {
@@ -24,7 +41,7 @@
 }
 
 END {
-  print "/* Generated by config/dwarf-known.awk from libdw.h contents.  */";
+  print "/* Generated by config/known-dwarf.awk from libdw/dwarf.h contents.  */";
   n = asorti(DW, sets);
   for (i = 1; i <= n; ++i) {
     set = sets[i];
diff --git a/src/config/missing b/src/config/missing
index 28055d2..db98974 100755
--- a/src/config/missing
+++ b/src/config/missing
@@ -1,11 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 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
@@ -26,69 +25,40 @@
 # 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
-
-msg="missing on your system"
-
 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
-  ;;
+
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
+
+  --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
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  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 $?
@@ -100,272 +70,141 @@
     ;;
 
   -*)
-    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'`
+# Run the given program, remember its exit status.
+"$@"; st=$?
 
-# 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 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
+
+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 'autom4te' 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/>"
     ;;
+    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
+}
 
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
 
-  *)
-    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
-    ;;
-
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    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
-    ;;
-esac
-
-exit 0
+# 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)
diff --git a/src/config/test-driver b/src/config/test-driver
new file mode 100755
index 0000000..d306056
--- /dev/null
+++ b/src/config/test-driver
@@ -0,0 +1,139 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # 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 [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+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'";;
+   *) break;;
+  esac
+  shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='' # Red.
+  grn='' # Green.
+  lgn='' # Light green.
+  blu='' # Blue.
+  mgn='' # Magenta.
+  std=''     # 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:
diff --git a/src/config/version.h.in b/src/config/version.h.in
index 82c846e..34e62c3 100644
--- a/src/config/version.h.in
+++ b/src/config/version.h.in
@@ -1,51 +1,31 @@
 /* Version information about elfutils development libraries.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is part of elfutils.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _ELFUTILS_VERSION_H
 #define _ELFUTILS_VERSION_H	1
diff --git a/src/config/ylwrap b/src/config/ylwrap
index 84d5634..8f072a8 100755
--- a/src/config/ylwrap
+++ b/src/config/ylwrap
@@ -1,10 +1,9 @@
 #! /bin/sh
 # ylwrap - wrapper for lex/yacc invocations.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-01-12.17; # UTC
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-# 2007, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
@@ -30,9 +29,41 @@
 # 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)
@@ -65,41 +96,77 @@
 
 
 # The input.
-input="$1"
+input=$1
 shift
-case "$input" in
+# 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.
     ;;
   *)
     # Relative path.  Make it absolute.
-    input="`pwd`/$input"
+    input=`pwd`/$input
     ;;
 esac
+input_rx=`get_dirname "$input" | quote_for_sed`
 
-pairlist=
-while test "$#" -ne 0; do
-  if test "$1" = "--"; then
+# 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=
+
+while test $# -ne 0; do
+  if test x"$1" = x"--"; 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.
-prog="$1"
+prog=$1
 shift
 # Make any relative path in $prog absolute.
-case "$prog" in
+case $prog in
   [\\/]* | ?:[\\/]*) ;;
-  *[\\/]*) prog="`pwd`/$prog" ;;
+  *[\\/]*) prog=`pwd`/$prog ;;
 esac
 
-# FIXME: add hostname here for parallel makes that run commands on
-# other machines.  But that might take us over the 14-char limit.
 dirname=ylwrap$$
-trap "cd '`pwd`'; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
+do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret'
+trap "ret=129; $do_exit" 1
+trap "ret=130; $do_exit" 2
+trap "ret=141; $do_exit" 13
+trap "ret=143; $do_exit" 15
 mkdir $dirname || exit 1
 
 cd $dirname
@@ -111,98 +178,56 @@
 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
-	realtarget="$target"
-	target="tmp-`echo $target | sed s/.*[\\/]//g`"
+      # 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-`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=$?
+      # 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 header files must be updated.
-      if test $first = no; then
-	if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
-	  echo "$2" is unchanged
-	  rm -f "$target"
-	else
-          echo updating "$2"
+      # Check whether files must be updated.
+      if test "$from" != "$parser"; then
+        if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+          echo "$to is unchanged"
+          rm -f "$target"
+        else
+          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.
diff --git a/src/configure b/src/configure
index 616d161..09ea13a 100755
--- a/src/configure
+++ b/src/configure
@@ -1,19 +1,17 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for Red Hat elfutils 0.153.
+# Generated by GNU Autoconf 2.69 for elfutils 0.161.
 #
-# Report bugs to <http://bugzilla.redhat.com/bugzilla/>.
+# 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. ##
 ## -------------------- ##
@@ -138,6 +136,31 @@
 # 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
@@ -171,11 +194,13 @@
 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
@@ -215,21 +240,25 @@
 
 
       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 :
@@ -240,7 +269,7 @@
     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
     $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: http://bugzilla.redhat.com/bugzilla/ about your system,
+$0: https://bugzilla.redhat.com/ about your system,
 $0: including any error possibly output before this
 $0: message. Then install a modern shell, or manually run
 $0: the script under such a shell if you do have one."
@@ -332,6 +361,14 @@
 
 
 } # 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
@@ -453,6 +490,10 @@
   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).
@@ -487,16 +528,16 @@
     # ... 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
@@ -508,28 +549,8 @@
   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'"
@@ -559,18 +580,60 @@
 MAKEFLAGS=
 
 # Identity of this package.
-PACKAGE_NAME='Red Hat elfutils'
+PACKAGE_NAME='elfutils'
 PACKAGE_TARNAME='elfutils'
-PACKAGE_VERSION='0.153'
-PACKAGE_STRING='Red Hat elfutils 0.153'
-PACKAGE_BUGREPORT='http://bugzilla.redhat.com/bugzilla/'
+PACKAGE_VERSION='0.161'
+PACKAGE_STRING='elfutils 0.161'
+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
@@ -586,6 +649,8 @@
 STANDALONE_TRUE
 HAVE_LIBASM_FALSE
 HAVE_LIBASM_TRUE
+FATAL_TEXTREL_FALSE
+FATAL_TEXTREL_TRUE
 DEMANGLE_FALSE
 DEMANGLE_TRUE
 zip_LIBS
@@ -600,18 +665,23 @@
 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
@@ -621,6 +691,7 @@
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -648,6 +719,10 @@
 MAINT
 MAINTAINER_MODE_FALSE
 MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 am__untar
 am__tar
 AMTAR
@@ -712,22 +787,25 @@
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
+enable_silent_rules
 enable_maintainer_mode
 enable_deterministic_archives
 enable_thread_safety
 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_textrelcheck
 enable_nls
+with_biarch
 '
       ac_precious_vars='build_alias
 host_alias
@@ -738,7 +816,8 @@
 LIBS
 CPPFLAGS
 YACC
-YFLAGS'
+YFLAGS
+CPP'
 
 
 # Initialize some variables set by options.
@@ -1194,8 +1273,6 @@
 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
@@ -1281,7 +1358,7 @@
   # 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 Red Hat elfutils 0.153 to adapt to many kinds of systems.
+\`configure' configures elfutils 0.161 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1351,7 +1428,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Red Hat elfutils 0.153:";;
+     short | recursive ) echo "Configuration of elfutils 0.161:";;
    esac
   cat <<\_ACEOF
 
@@ -1359,23 +1436,29 @@
   --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
-  --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
+  --disable-textrelcheck  Disable textrelcheck being a fatal error
   --disable-nls           do not use Native Language Support
 
 Optional Packages:
@@ -1384,6 +1467,7 @@
   --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
@@ -1399,11 +1483,12 @@
   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.
 
-Report bugs to <http://bugzilla.redhat.com/bugzilla/>.
+Report bugs to <https://bugzilla.redhat.com/>.
 _ACEOF
 ac_status=$?
 fi
@@ -1466,14 +1551,14 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Red Hat elfutils configure 0.153
-generated by GNU Autoconf 2.68
+elfutils configure 0.161
+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
@@ -1547,7 +1632,7 @@
 	 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
@@ -1565,12 +1650,359 @@
   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 Red Hat elfutils $as_me 0.153, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+It was created by elfutils $as_me 0.161, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -1952,7 +2384,7 @@
 
 
 
-am__api_version='1.11'
+am__api_version='1.14'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -1991,7 +2423,7 @@
     # 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.
@@ -2049,9 +2481,6 @@
 
 { $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='
@@ -2062,32 +2491,40 @@
 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
+   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 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
@@ -2099,6 +2536,16 @@
 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.
@@ -2121,12 +2568,12 @@
   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
@@ -2138,10 +2585,10 @@
   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.
@@ -2160,7 +2607,7 @@
   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
@@ -2200,7 +2647,7 @@
   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
@@ -2251,7 +2698,7 @@
   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) '* | \
@@ -2280,12 +2727,6 @@
 { $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.
@@ -2304,7 +2745,7 @@
   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
@@ -2368,6 +2809,45 @@
 fi
 rmdir .tst 2>/dev/null
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+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."
@@ -2390,7 +2870,7 @@
 
 # Define the identity of the package.
  PACKAGE='elfutils'
- VERSION='0.153'
+ VERSION='0.161'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2418,19 +2898,71 @@
 
 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.
+# 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}'
 
-AMTAR=${AMTAR-"${am_missing_run}tar"}
 
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+# 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 -'
 
 
 
 
 
 
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
 { $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.
@@ -2585,6 +3117,10 @@
   $as_echo "#define USE_LOCKS 1" >>confdefs.h
 
 fi
+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
 
 
 
@@ -2610,7 +3146,7 @@
   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
@@ -2650,7 +3186,7 @@
   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
@@ -2703,7 +3239,7 @@
   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
@@ -2744,7 +3280,7 @@
   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
@@ -2802,7 +3338,7 @@
   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
@@ -2846,7 +3382,7 @@
   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
@@ -3292,8 +3828,7 @@
 /* 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);
@@ -3377,6 +3912,65 @@
 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
+
+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 whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # 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__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+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
+
 DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
@@ -3396,7 +3990,7 @@
 _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
@@ -3429,6 +4023,7 @@
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
  if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
@@ -3451,8 +4046,9 @@
   # 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
   # using a relative directory.
@@ -3486,16 +4082,16 @@
     : > 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
@@ -3504,16 +4100,16 @@
       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
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # 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}
@@ -3584,7 +4180,7 @@
   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
@@ -3624,7 +4220,7 @@
   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
@@ -3677,7 +4273,7 @@
   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
@@ -3721,7 +4317,7 @@
   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
@@ -3753,7 +4349,8 @@
 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; }
 %%
@@ -3864,6 +4461,362 @@
 if test "$LEX" = :; then
   LEX=${am_missing_run}flex
 fi
+# 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
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # 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_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
+fi
+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
+
+
+    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
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_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
+fi
+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
+
+
+  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
+
+: ${AR=ar}
+
+{ $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_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
+
+   am_cv_ar_interface=ar
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int some_variable = 0;
+_ACEOF
+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 conftest.$ac_ext
+   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
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5
+$as_echo "$am_cv_ar_interface" >&6; }
+
+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
+  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
+
+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; }
@@ -4125,6 +5078,8 @@
 esac
 rm -rf conftest*
   fi
+
+
 fi
 
 
@@ -4168,49 +5123,6 @@
 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
@@ -4266,7 +5178,66 @@
 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
@@ -4607,6 +5578,20 @@
 fi
 
 
+# Check whether --enable-textrelcheck was given.
+if test "${enable_textrelcheck+set}" = set; then :
+  enableval=$enable_textrelcheck;
+fi
+
+ if test "x$enable_textrelcheck" != "xno"; then
+  FATAL_TEXTREL_TRUE=
+  FATAL_TEXTREL_FALSE='#'
+else
+  FATAL_TEXTREL_TRUE='#'
+  FATAL_TEXTREL_FALSE=
+fi
+
+
 
 
 ac_config_files="$ac_config_files lib/Makefile"
@@ -4618,6 +5603,9 @@
 ac_config_files="$ac_config_files libebl/Makefile"
 
 
+ac_config_files="$ac_config_files libdwelf/Makefile"
+
+
 ac_config_files="$ac_config_files libdw/Makefile"
 
 
@@ -4673,7 +5661,7 @@
 
 
 
-      GETTEXT_MACRO_VERSION=0.17
+      GETTEXT_MACRO_VERSION=0.18
 
 
 
@@ -4765,7 +5753,7 @@
   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
@@ -4997,6 +5985,585 @@
 # 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
+
+fi
+
+# 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
+
+
+# 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
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
+
+else
+  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
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+
+# 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
+  sys_user_has_user_regs=no
+fi
+
+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
+  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
+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*
+
+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
+
+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
+
+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
+
+# `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
+CC_BIARCH="$CC $utrace_biarch"
+
+
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -5106,6 +6673,14 @@
 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='#'
@@ -5138,10 +6713,6 @@
   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
@@ -5150,6 +6721,10 @@
   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
@@ -5174,6 +6749,10 @@
   as_fn_error $? "conditional \"DEMANGLE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${FATAL_TEXTREL_TRUE}" && test -z "${FATAL_TEXTREL_FALSE}"; then
+  as_fn_error $? "conditional \"FATAL_TEXTREL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${HAVE_LIBASM_TRUE}" && test -z "${HAVE_LIBASM_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_LIBASM\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -5182,6 +6761,10 @@
   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
@@ -5480,16 +7063,16 @@
     # ... 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
@@ -5549,28 +7132,16 @@
   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'"
@@ -5591,8 +7162,8 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Red Hat elfutils $as_me 0.153, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+This file was extended by elfutils $as_me 0.161, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -5651,17 +7222,17 @@
 Configuration commands:
 $config_commands
 
-Report bugs to <http://bugzilla.redhat.com/bugzilla/>."
+Report bugs to <https://bugzilla.redhat.com/>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Red Hat elfutils config.status 0.153
-configured by $0, generated by GNU Autoconf 2.68,
+elfutils config.status 0.161
+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."
 
@@ -5752,7 +7323,7 @@
 _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'
@@ -5802,6 +7373,7 @@
     "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" ;;
@@ -6408,7 +7980,7 @@
 
   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
@@ -6421,7 +7993,7 @@
     # 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.
@@ -6455,21 +8027,19 @@
       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" ||
@@ -6512,7 +8082,7 @@
       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.
@@ -6528,7 +8098,8 @@
         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
@@ -6539,12 +8110,12 @@
               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
diff --git a/src/configure.ac b/src/configure.ac
index 2e36e7c..0e67a79 100644
--- a/src/configure.ac
+++ b/src/configure.ac
@@ -1,31 +1,32 @@
 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 program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation, version 2.
+dnl This file is part of elfutils.
 dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
+dnl  This file is free software; you can redistribute it and/or modify
+dnl  it under the terms of the GNU General Public License as published by
+dnl  the Free Software Foundation; either version 3 of the License, or
+dnl  (at your option) any later version.
 dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program; if not, write to the Free Software Foundation,
-dnl Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+dnl  elfutils is distributed in the hope that it will be useful, but
+dnl  WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl  GNU General Public License for more details.
 dnl
-AC_INIT([Red Hat elfutils],[0.153],[http://bugzilla.redhat.com/bugzilla/],[elfutils])
+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.161],[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.
@@ -59,10 +60,13 @@
 		   [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.])
 
@@ -70,6 +74,10 @@
 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"
@@ -133,26 +141,6 @@
 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]),
@@ -181,8 +169,19 @@
 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]),
@@ -213,6 +212,11 @@
 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
 
+AC_ARG_ENABLE([textrelcheck],
+AS_HELP_STRING([--disable-textrelcheck],
+               [Disable textrelcheck being a fatal error]))
+AM_CONDITIONAL(FATAL_TEXTREL, [test "x$enable_textrelcheck" != "xno"])
+
 dnl The directories with content.
 
 dnl Documentation.
@@ -228,6 +232,9 @@
 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])
 
@@ -297,4 +304,26 @@
 # 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
diff --git a/src/elfutils.spec b/src/elfutils.spec
index 29462ff..a6c5fbe 100644
--- a/src/elfutils.spec
+++ b/src/elfutils.spec
@@ -1,9 +1,9 @@
 # -*- rpm-spec-*-
 Summary: A collection of utilities and DSOs to handle compiled objects
 Name: elfutils
-Version: 0.153
+Version: 0.161
 Release: 1
-License: GPLv2 with exceptions
+License: GPLv3+ and (GPLv2+ or LGPLv3+)
 Group: Development/Tools
 Source: elfutils-%{version}.tar.bz2
 Obsoletes: libelf libelf-devel
@@ -41,6 +41,7 @@
 %package devel
 Summary: Development libraries to handle compiled objects.
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 Requires: elfutils = %{version}-%{release}
 Requires: elfutils-libelf-devel = %{version}-%{release}
 
@@ -54,6 +55,7 @@
 %package devel-static
 Summary: Static archives to handle compiled objects.
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 Requires: elfutils-devel = %{version}-%{release}
 
 %description devel-static
@@ -63,6 +65,7 @@
 %package libelf
 Summary: Library to read and write ELF files.
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 
 %description libelf
 The elfutils-libelf package provides a DSO which allows reading and
@@ -73,6 +76,7 @@
 %package libelf-devel
 Summary: Development support for libelf
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 Requires: elfutils-libelf = %{version}-%{release}
 Conflicts: libelf-devel
 
@@ -85,6 +89,7 @@
 %package libelf-devel-static
 Summary: Static archive of libelf
 Group: Development/Tools
+License: GPLv2+ or LGPLv3+
 Requires: elfutils-libelf-devel = %{version}-%{release}
 Conflicts: libelf-devel
 
@@ -132,7 +137,7 @@
 
 %files
 %defattr(-,root,root)
-%doc README TODO
+%doc COPYING COPYING-GPLV2 COPYING-LGPLV3 README TODO CONTRIBUTING
 %{_bindir}/eu-elflint
 %{_bindir}/eu-nm
 %{_bindir}/eu-readelf
@@ -164,6 +169,7 @@
 %{_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
@@ -190,6 +196,121 @@
 %{_libdir}/libelf.a
 
 %changelog
+* Thu Dec 18 2014 Mark Wielaard <mjw@redhat.com> 0.161-1
+- libdw: New function dwarf_peel_type. dwarf_aggregate_size now uses
+  dwarf_peel_type to also provide the sizes of qualified types.
+  dwarf_getmacros will now serve either of .debug_macro and
+  .debug_macinfo transparently.  New interfaces dwarf_getmacros_off,
+  dwarf_macro_getsrcfiles, dwarf_macro_getparamcnt, and
+  dwarf_macro_param are available for more generalized inspection of
+  macros and their parameters.
+  dwarf.h: Add DW_AT_GNU_deleted, DW_AT_noreturn, DW_LANG_C11,
+  DW_LANG_C_plus_plus_11 and DW_LANG_C_plus_plus_14.
+
+* 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 
+          calling elf_cntl(ELF_C_FDREAD).         Implement support for 
+  ar archives with 64-bit symbol table.
+- libdw: dwarf.h corrected the DW_LANG_ObjC constant name (was 
+  DW_LANG_Objc).        Any existing sources using the old name will 
+  have to be updated.        Add DW_MACRO_GNU .debug_macro type 
+  encodings constants, DW_ATE_UTF        and DW_OP_GNU_parameter_ref to 
+  dwarf.h.        Experimental support for DWZ multifile forms 
+  DW_FORM_GNU_ref_alt        and DW_FORM_GNU_strp_alt.  Disabled by 
+  default.  Use configure        --enable-dwz to test it.
+- readelf: Add .debug_macro parsing support.          Add .gdb_index 
+  version 7 parsing support.          Recognize DW_OP_GNU_parameter_ref.
+- backends: Add support for Tilera TILE-Gx processor.
+- translations: Updated Ukrainian translation.
+
+* Fri Jun 22 2012 Mark Wielaard <mjw@redhat.com> 0.154-1
+- libelf: [g]elf[32|64]_offscn() do not match SHT_NOBITS sections at 
+  OFFSET.
+- libdw: dwarf_highpc function now handles DWARF 4 DW_AT_high_pc 
+  constant form.        Fix bug using dwarf_next_unit to iterate over 
+  .debug_types.
+- elflint: Now accepts gold linker produced executables.
+- The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for 
+  stand-alone programs. There is now also a formal CONTRIBUTING 
+  document describing how to submit patches.
+
 * Thu Feb 23 2012 Mark Wielaard <mjw@redhat.com> 0.153-1
 - libdw: Support reading .zdebug_* DWARF sections compressed via zlib.
 - libdwfl: Speed up dwfl_module_addrsym.
diff --git a/src/lib/ChangeLog b/src/lib/ChangeLog
index 47e831e..4415213 100644
--- a/src/lib/ChangeLog
+++ b/src/lib/ChangeLog
@@ -1,3 +1,33 @@
+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.
diff --git a/src/lib/Makefile b/src/lib/Makefile
new file mode 100644
index 0000000..3b44ac5
--- /dev/null
+++ b/src/lib/Makefile
@@ -0,0 +1,598 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# lib/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+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/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_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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) \
+	xmalloc.$(OBJEXT) next_prime.$(OBJEXT) crc32.$(OBJEXT) \
+	crc32_file.$(OBJEXT) md5.$(OBJEXT) sha1.$(OBJEXT) \
+	color.$(OBJEXT)
+libeu_a_OBJECTS = $(am_libeu_a_OBJECTS)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 0.161
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/lib
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/lib
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+	-I$(srcdir)/../libelf
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
+	$($(*F)_no_Werror),,-Werror) $(if \
+	$($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) -fpic
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+CLEANFILES = *.gcno *.gcda
+textrel_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 \
+		  color.c
+
+noinst_HEADERS = fixedsizehash.h system.h dynamicsizehash.h list.h md5.h \
+		 sha1.h eu-config.h
+
+EXTRA_DIST = dynamicsizehash.c
+xmalloc_CFLAGS = -ffunction-sections
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: # $(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 lib/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits lib/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(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)
+
+libeu.a: $(libeu_a_OBJECTS) $(libeu_a_DEPENDENCIES) $(EXTRA_libeu_a_DEPENDENCIES) 
+	$(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)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/color.Po
+include ./$(DEPDIR)/crc32.Po
+include ./$(DEPDIR)/crc32_file.Po
+include ./$(DEPDIR)/md5.Po
+include ./$(DEPDIR)/next_prime.Po
+include ./$(DEPDIR)/sha1.Po
+include ./$(DEPDIR)/xmalloc.Po
+include ./$(DEPDIR)/xstrdup.Po
+include ./$(DEPDIR)/xstrndup.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(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`; \
+	$(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:
+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-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:
+
+.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-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
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(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:
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 4ea1436..97f295e 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -1,32 +1,35 @@
 ## Process this file with automake to create Makefile.in
 ##
 ## Copyright (C) 1996-2011 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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_CFLAGS += -fpic
-INCLUDES += -I$(srcdir)/../libelf
+AM_CPPFLAGS += -I$(srcdir)/../libelf
 
 noinst_LIBRARIES = libeu.a
 
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
index 54b04ad..8799ddb 100644
--- a/src/lib/Makefile.in
+++ b/src/lib/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -17,6 +16,51 @@
 
 
 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@
@@ -35,12 +79,13 @@
 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) \
@@ -50,8 +95,11 @@
 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) \
@@ -59,29 +107,75 @@
 	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@
@@ -90,10 +184,13 @@
 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@
@@ -114,6 +211,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -124,6 +222,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -138,6 +237,7 @@
 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@
@@ -187,20 +287,17 @@
 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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 \
@@ -236,6 +333,7 @@
 	    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
@@ -248,10 +346,11 @@
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libeu.a: $(libeu_a_OBJECTS) $(libeu_a_DEPENDENCIES) 
-	-rm -f libeu.a
-	$(libeu_a_AR) libeu.a $(libeu_a_OBJECTS) $(libeu_a_LIBADD)
-	$(RANLIB) libeu.a
+
+libeu.a: $(libeu_a_OBJECTS) $(libeu_a_DEPENDENCIES) $(EXTRA_libeu_a_DEPENDENCIES) 
+	$(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)
@@ -270,39 +369,28 @@
 @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 -o $@ $<
 
 .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 -o $@ `$(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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -314,15 +402,11 @@
 	      $$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
@@ -331,6 +415,21 @@
 	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
@@ -379,10 +478,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -466,17 +570,17 @@
 
 .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
 
 
diff --git a/src/lib/color.c b/src/lib/color.c
index ff82448..d1309ed 100644
--- a/src/lib/color.c
+++ b/src/lib/color.c
@@ -1,28 +1,31 @@
 /* Handling of color output.
    Copyright (C) 2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2011.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/lib/crc32.c b/src/lib/crc32.c
index e0ef2f6..1a76b1b 100644
--- a/src/lib/crc32.c
+++ b/src/lib/crc32.c
@@ -1,50 +1,29 @@
 /* Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <stdint.h>
 #include "system.h"
diff --git a/src/lib/crc32_file.c b/src/lib/crc32_file.c
index 5946df9..c0b18e9 100644
--- a/src/lib/crc32_file.c
+++ b/src/lib/crc32_file.c
@@ -1,50 +1,34 @@
 /* Compute CRC32 checksum of file contents.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
+   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/>.  */
 
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under an Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) and to distribute linked
-   combinations including the two.  Non-GPL Code permitted under this
-   exception must only link to the code of Red Hat elfutils through those
-   well defined interfaces identified in the file named EXCEPTION found in
-   the source code files (the "Approved Interfaces").  The files of Non-GPL
-   Code may instantiate templates or use macros or inline functions from
-   the Approved Interfaces without causing the resulting work to be covered
-   by the GNU General Public License.  Only Red Hat, Inc. may make changes
-   or additions to the list of Approved Interfaces.  Red Hat's grant of
-   this exception is conditioned upon your not adding any new exceptions.
-   If you wish to add a new Approved Interface or exception, please contact
-   Red Hat.  You must obey the GNU General Public License in all respects
-   for all of the Red Hat elfutils code and other code used in conjunction
-   with Red Hat elfutils except the Non-GPL Code covered by this exception.
-   If you modify this file, you may extend this exception to your version
-   of the file, but you are not obligated to do so.  If you do not wish to
-   provide this exception without modification, you must delete this
-   exception statement from your version and license this file solely under
-   the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
 
 #include "system.h"
 #include <errno.h>
diff --git a/src/lib/dynamicsizehash.c b/src/lib/dynamicsizehash.c
index 24335d4..1fdff1b 100644
--- a/src/lib/dynamicsizehash.c
+++ b/src/lib/dynamicsizehash.c
@@ -1,51 +1,30 @@
 /* Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <assert.h>
 #include <stdlib.h>
@@ -70,8 +49,9 @@
      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)
     {
diff --git a/src/lib/dynamicsizehash.h b/src/lib/dynamicsizehash.h
index f169d5e..ccd41d0 100644
--- a/src/lib/dynamicsizehash.h
+++ b/src/lib/dynamicsizehash.h
@@ -1,51 +1,30 @@
 /* Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <stddef.h>
 
diff --git a/src/lib/eu-config.h b/src/lib/eu-config.h
index f814604..3afff26 100644
--- a/src/lib/eu-config.h
+++ b/src/lib/eu-config.h
@@ -1,50 +1,30 @@
 /* Configuration definitions.
    Copyright (C) 2008, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under an Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) and to distribute linked
-   combinations including the two.  Non-GPL Code permitted under this
-   exception must only link to the code of Red Hat elfutils through those
-   well defined interfaces identified in the file named EXCEPTION found in
-   the source code files (the "Approved Interfaces").  The files of Non-GPL
-   Code may instantiate templates or use macros or inline functions from
-   the Approved Interfaces without causing the resulting work to be covered
-   by the GNU General Public License.  Only Red Hat, Inc. may make changes
-   or additions to the list of Approved Interfaces.  Red Hat's grant of
-   this exception is conditioned upon your not adding any new exceptions.
-   If you wish to add a new Approved Interface or exception, please contact
-   Red Hat.  You must obey the GNU General Public License in all respects
-   for all of the Red Hat elfutils code and other code used in conjunction
-   with Red Hat elfutils except the Non-GPL Code covered by this exception.
-   If you modify this file, you may extend this exception to your version
-   of the file, but you are not obligated to do so.  If you do not wish to
-   provide this exception without modification, you must delete this
-   exception statement from your version and license this file solely under
-   the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 EU_CONFIG_H
 #define EU_CONFIG_H	1
@@ -190,12 +170,18 @@
        ".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
 
diff --git a/src/lib/fixedsizehash.h b/src/lib/fixedsizehash.h
index a686051..06ce6a2 100644
--- a/src/lib/fixedsizehash.h
+++ b/src/lib/fixedsizehash.h
@@ -1,52 +1,31 @@
 /* Fixed size hash table with internal linking.
    Copyright (C) 2000, 2001, 2002, 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <errno.h>
 #include <stdlib.h>
diff --git a/src/lib/list.h b/src/lib/list.h
index c712c1f..fc5c73c 100644
--- a/src/lib/list.h
+++ b/src/lib/list.h
@@ -1,51 +1,30 @@
 /* Copyright (C) 2001, 2002, 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 LIST_H
 #define LIST_H	1
diff --git a/src/lib/md5.c b/src/lib/md5.c
index 1f2d5d3..1c27549 100644
--- a/src/lib/md5.c
+++ b/src/lib/md5.c
@@ -1,29 +1,32 @@
 /* Functions to compute MD5 message digest of files or memory blocks.
    according to the definition of MD5 in RFC 1321 from April 1992.
    Copyright (C) 1995-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1995.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/lib/md5.h b/src/lib/md5.h
index 3c8b8f3..f2d0f30 100644
--- a/src/lib/md5.h
+++ b/src/lib/md5.h
@@ -1,29 +1,32 @@
 /* Declaration of functions and data types used for MD5 sum computing
    library functions.
    Copyright (C) 1995,1996,1997,1999-2001,2004,2005,2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1995.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _MD5_H
 #define _MD5_H 1
diff --git a/src/lib/next_prime.c b/src/lib/next_prime.c
index 5d4fc3f..f2c921e 100644
--- a/src/lib/next_prime.c
+++ b/src/lib/next_prime.c
@@ -1,51 +1,31 @@
 /* Determine prime number.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under an Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) and to distribute linked
-   combinations including the two.  Non-GPL Code permitted under this
-   exception must only link to the code of Red Hat elfutils through those
-   well defined interfaces identified in the file named EXCEPTION found in
-   the source code files (the "Approved Interfaces").  The files of Non-GPL
-   Code may instantiate templates or use macros or inline functions from
-   the Approved Interfaces without causing the resulting work to be covered
-   by the GNU General Public License.  Only Red Hat, Inc. may make changes
-   or additions to the list of Approved Interfaces.  Red Hat's grant of
-   this exception is conditioned upon your not adding any new exceptions.
-   If you wish to add a new Approved Interface or exception, please contact
-   Red Hat.  You must obey the GNU General Public License in all respects
-   for all of the Red Hat elfutils code and other code used in conjunction
-   with Red Hat elfutils except the Non-GPL Code covered by this exception.
-   If you modify this file, you may extend this exception to your version
-   of the file, but you are not obligated to do so.  If you do not wish to
-   provide this exception without modification, you must delete this
-   exception statement from your version and license this file solely under
-   the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <stddef.h>
 
diff --git a/src/lib/sha1.c b/src/lib/sha1.c
index 53ddb78..0e84562 100644
--- a/src/lib/sha1.c
+++ b/src/lib/sha1.c
@@ -1,29 +1,32 @@
 /* Functions to compute SHA1 message digest of files or memory blocks.
    according to the definition of SHA1 in FIPS 180-1 from April 1997.
    Copyright (C) 2008-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2008.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/lib/sha1.h b/src/lib/sha1.h
index 9761754..05301c8 100644
--- a/src/lib/sha1.h
+++ b/src/lib/sha1.h
@@ -1,29 +1,32 @@
 /* Declaration of functions and data types used for SHA1 sum computing
    library functions.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2008.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _SHA1_H
 #define _SHA1_H 1
diff --git a/src/lib/system.h b/src/lib/system.h
index 3f9f0af..f31cfd0 100644
--- a/src/lib/system.h
+++ b/src/lib/system.h
@@ -1,50 +1,30 @@
 /* Declarations for common convenience functions.
    Copyright (C) 2006-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under an Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) and to distribute linked
-   combinations including the two.  Non-GPL Code permitted under this
-   exception must only link to the code of Red Hat elfutils through those
-   well defined interfaces identified in the file named EXCEPTION found in
-   the source code files (the "Approved Interfaces").  The files of Non-GPL
-   Code may instantiate templates or use macros or inline functions from
-   the Approved Interfaces without causing the resulting work to be covered
-   by the GNU General Public License.  Only Red Hat, Inc. may make changes
-   or additions to the list of Approved Interfaces.  Red Hat's grant of
-   this exception is conditioned upon your not adding any new exceptions.
-   If you wish to add a new Approved Interface or exception, please contact
-   Red Hat.  You must obey the GNU General Public License in all respects
-   for all of the Red Hat elfutils code and other code used in conjunction
-   with Red Hat elfutils except the Non-GPL Code covered by this exception.
-   If you modify this file, you may extend this exception to your version
-   of the file, but you are not obligated to do so.  If you do not wish to
-   provide this exception without modification, you must delete this
-   exception statement from your version and license this file solely under
-   the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 LIB_SYSTEM_H
 #define LIB_SYSTEM_H	1
@@ -54,13 +34,18 @@
 #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
@@ -84,12 +69,61 @@
 #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
@@ -141,4 +175,11 @@
 
 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 */
diff --git a/src/lib/xmalloc.c b/src/lib/xmalloc.c
index b12b059..27ccab9 100644
--- a/src/lib/xmalloc.c
+++ b/src/lib/xmalloc.c
@@ -1,27 +1,30 @@
 /* Convenience functions for allocation.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/lib/xstrdup.c b/src/lib/xstrdup.c
index c4e7a52..d9d6010 100644
--- a/src/lib/xstrdup.c
+++ b/src/lib/xstrdup.c
@@ -1,27 +1,30 @@
 /* Convenience function for string allocation.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/lib/xstrndup.c b/src/lib/xstrndup.c
index 2082c17..52304e6 100644
--- a/src/lib/xstrndup.c
+++ b/src/lib/xstrndup.c
@@ -1,27 +1,30 @@
 /* Convenience function for string allocation.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/ChangeLog b/src/libasm/ChangeLog
index f9a863d..9b25af9 100644
--- a/src/libasm/ChangeLog
+++ b/src/libasm/ChangeLog
@@ -1,3 +1,19 @@
+2014-12-18  Ulrich Drepper  <drepper@gmail.com>
+
+	* Makefile.am: Suppress output of textrel_check command.
+
+2014-11-27  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (libasm.so): Use textrel_check.
+
+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.
diff --git a/src/libasm/Makefile b/src/libasm/Makefile
new file mode 100644
index 0000000..1c8f5a1
--- /dev/null
+++ b/src/libasm/Makefile
@@ -0,0 +1,772 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# libasm/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+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)
+#am__append_1 = -lpthread
+subdir = libasm
+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 =
+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)$(libdir)" "$(DESTDIR)$(pkgincludedir)"
+LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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) \
+	asm_end.$(OBJEXT) asm_error.$(OBJEXT) asm_getelf.$(OBJEXT) \
+	asm_newscn.$(OBJEXT) asm_newscn_ingrp.$(OBJEXT) \
+	asm_newsubscn.$(OBJEXT) asm_newsym.$(OBJEXT) \
+	asm_newcomsym.$(OBJEXT) asm_newabssym.$(OBJEXT) \
+	asm_newscngrp.$(OBJEXT) asm_scngrp_newsignature.$(OBJEXT) \
+	asm_fill.$(OBJEXT) asm_align.$(OBJEXT) asm_addstrz.$(OBJEXT) \
+	asm_addint8.$(OBJEXT) asm_adduint8.$(OBJEXT) \
+	asm_addint16.$(OBJEXT) asm_adduint16.$(OBJEXT) \
+	asm_addint32.$(OBJEXT) asm_adduint32.$(OBJEXT) \
+	asm_addint64.$(OBJEXT) asm_adduint64.$(OBJEXT) \
+	asm_adduleb128.$(OBJEXT) asm_addsleb128.$(OBJEXT) \
+	disasm_begin.$(OBJEXT) disasm_cb.$(OBJEXT) \
+	disasm_end.$(OBJEXT) disasm_str.$(OBJEXT) symbolhash.$(OBJEXT)
+libasm_a_OBJECTS = $(am_libasm_a_OBJECTS)
+libasm_pic_a_AR = $(AR) $(ARFLAGS)
+libasm_pic_a_LIBADD =
+libasm_pic_a_OBJECTS = $(am_libasm_pic_a_OBJECTS)
+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_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 1
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/libasm
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/libasm
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+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 -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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
+GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
+lib_LIBRARIES = libasm.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 \
+		   asm_newsubscn.c asm_newsym.c asm_newcomsym.c \
+		   asm_newabssym.c \
+		   asm_newscngrp.c asm_scngrp_newsignature.c \
+		   asm_fill.c asm_align.c asm_addstrz.c \
+		   asm_addint8.c asm_adduint8.c \
+		   asm_addint16.c asm_adduint16.c \
+		   asm_addint32.c asm_adduint32.c \
+		   asm_addint64.c asm_adduint64.c \
+		   asm_adduleb128.c asm_addsleb128.c \
+		   disasm_begin.c disasm_cb.c disasm_end.c disasm_str.c \
+		   symbolhash.c
+
+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
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: # $(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 libasm/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits libasm/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLIBRARIES: $(lib_LIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  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)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  if test -f $$p; then \
+	    $(am__strip_dir) \
+	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+	  else :; fi; \
+	done
+
+uninstall-libLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libasm.a: $(libasm_a_OBJECTS) $(libasm_a_DEPENDENCIES) $(EXTRA_libasm_a_DEPENDENCIES) 
+	$(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) 
+	$(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)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/asm_abort.Po
+include ./$(DEPDIR)/asm_addint16.Po
+include ./$(DEPDIR)/asm_addint32.Po
+include ./$(DEPDIR)/asm_addint64.Po
+include ./$(DEPDIR)/asm_addint8.Po
+include ./$(DEPDIR)/asm_addsleb128.Po
+include ./$(DEPDIR)/asm_addstrz.Po
+include ./$(DEPDIR)/asm_adduint16.Po
+include ./$(DEPDIR)/asm_adduint32.Po
+include ./$(DEPDIR)/asm_adduint64.Po
+include ./$(DEPDIR)/asm_adduint8.Po
+include ./$(DEPDIR)/asm_adduleb128.Po
+include ./$(DEPDIR)/asm_align.Po
+include ./$(DEPDIR)/asm_begin.Po
+include ./$(DEPDIR)/asm_end.Po
+include ./$(DEPDIR)/asm_error.Po
+include ./$(DEPDIR)/asm_fill.Po
+include ./$(DEPDIR)/asm_getelf.Po
+include ./$(DEPDIR)/asm_newabssym.Po
+include ./$(DEPDIR)/asm_newcomsym.Po
+include ./$(DEPDIR)/asm_newscn.Po
+include ./$(DEPDIR)/asm_newscn_ingrp.Po
+include ./$(DEPDIR)/asm_newscngrp.Po
+include ./$(DEPDIR)/asm_newsubscn.Po
+include ./$(DEPDIR)/asm_newsym.Po
+include ./$(DEPDIR)/asm_scngrp_newsignature.Po
+include ./$(DEPDIR)/disasm_begin.Po
+include ./$(DEPDIR)/disasm_cb.Po
+include ./$(DEPDIR)/disasm_end.Po
+include ./$(DEPDIR)/disasm_str.Po
+include ./$(DEPDIR)/symbolhash.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(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) $(PROGRAMS) $(HEADERS)
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install-exec: install-exec-am
+install-data: install-data-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-libLIBRARIES clean-noinstLIBRARIES \
+	clean-noinstPROGRAMS 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-libLIBRARIES
+
+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-libLIBRARIES uninstall-pkgincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libLIBRARIES 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-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
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
+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)
+	@$(textrel_check)
+	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.
+.NOEXPORT:
diff --git a/src/libasm/Makefile.am b/src/libasm/Makefile.am
index 52de7a3..6ea2a8e 100644
--- a/src/libasm/Makefile.am
+++ b/src/libasm/Makefile.am
@@ -1,40 +1,41 @@
 ## Process this file with automake to create Makefile.in
 ##
 ## Copyright (C) 2002-2010 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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
-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 \
@@ -51,7 +52,6 @@
 		   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)
 
@@ -61,12 +61,12 @@
 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
+	@$(textrel_check)
 	ln -fs $@ $@.$(VERSION)
 
 install: install-am libasm.so
@@ -80,7 +80,6 @@
 	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
diff --git a/src/libasm/Makefile.in b/src/libasm/Makefile.in
index b31c32c..2c26324 100644
--- a/src/libasm/Makefile.in
+++ b/src/libasm/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -18,6 +17,51 @@
 
 
 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@
@@ -36,16 +80,15 @@
 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) \
@@ -75,10 +118,19 @@
 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)$(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) \
@@ -99,36 +151,82 @@
 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@
@@ -137,10 +235,13 @@
 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@
@@ -161,6 +262,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -171,6 +273,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -185,6 +288,7 @@
 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@
@@ -234,25 +338,24 @@
 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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 \
@@ -268,10 +371,10 @@
 		   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
@@ -299,6 +402,7 @@
 	    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
@@ -310,7 +414,6 @@
 $(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 \
@@ -318,6 +421,8 @@
 	  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)
@@ -334,29 +439,26 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
-	cd "$(DESTDIR)$(libdir)" && rm -f $$files
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
 
 clean-libLIBRARIES:
 	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libasm.a: $(libasm_a_OBJECTS) $(libasm_a_DEPENDENCIES) 
-	-rm -f libasm.a
-	$(libasm_a_AR) libasm.a $(libasm_a_OBJECTS) $(libasm_a_LIBADD)
-	$(RANLIB) libasm.a
-libasm_pic.a: $(libasm_pic_a_OBJECTS) $(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
+
+libasm.a: $(libasm_a_OBJECTS) $(libasm_a_DEPENDENCIES) $(EXTRA_libasm_a_DEPENDENCIES) 
+	$(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) 
+	$(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) 
-@MUDFLAP_TRUE@	@rm -f libasm.so$(EXEEXT)
-@MUDFLAP_TRUE@	$(LINK) $(libasm_so_OBJECTS) $(libasm_so_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -397,22 +499,25 @@
 @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 -o $@ $<
 
 .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 -o $@ `$(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"; \
@@ -426,30 +531,17 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
+	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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -461,15 +553,11 @@
 	      $$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
@@ -478,6 +566,21 @@
 	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
@@ -519,20 +622,23 @@
 	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
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -617,20 +723,20 @@
 
 .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
@@ -641,25 +747,25 @@
 @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)
+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)
+	@$(textrel_check)
+	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
+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
 
-@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
+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.
diff --git a/src/libasm/asm_abort.c b/src/libasm/asm_abort.c
index d12c163..ef55ee9 100644
--- a/src/libasm/asm_abort.c
+++ b/src/libasm/asm_abort.c
@@ -1,28 +1,31 @@
 /* Abort operations on the assembler context, free all resources.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_addint16.c b/src/libasm/asm_addint16.c
index 5aa8d60..4ae4597 100644
--- a/src/libasm/asm_addint16.c
+++ b/src/libasm/asm_addint16.c
@@ -1,28 +1,31 @@
 /* Add integer to a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define SIZE 16
 
diff --git a/src/libasm/asm_addint32.c b/src/libasm/asm_addint32.c
index 25c50ce..776cf6f 100644
--- a/src/libasm/asm_addint32.c
+++ b/src/libasm/asm_addint32.c
@@ -1,28 +1,31 @@
 /* Add integer to a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define SIZE 32
 
diff --git a/src/libasm/asm_addint64.c b/src/libasm/asm_addint64.c
index 9116d94..ee33834 100644
--- a/src/libasm/asm_addint64.c
+++ b/src/libasm/asm_addint64.c
@@ -1,28 +1,31 @@
 /* Add integer to a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define SIZE 64
 
diff --git a/src/libasm/asm_addint8.c b/src/libasm/asm_addint8.c
index ff4376b..ec05b8d 100644
--- a/src/libasm/asm_addint8.c
+++ b/src/libasm/asm_addint8.c
@@ -1,28 +1,31 @@
 /* Add integer to a section.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_addsleb128.c b/src/libasm/asm_addsleb128.c
index 614ba69..3692789 100644
--- a/src/libasm/asm_addsleb128.c
+++ b/src/libasm/asm_addsleb128.c
@@ -1,28 +1,31 @@
 /* Add signed little endian base 128 integer to a section.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_addstrz.c b/src/libasm/asm_addstrz.c
index ddd0354..87663f3 100644
--- a/src/libasm/asm_addstrz.c
+++ b/src/libasm/asm_addstrz.c
@@ -1,28 +1,31 @@
 /* Add string to a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_adduint16.c b/src/libasm/asm_adduint16.c
index 063e5d4..65a1303 100644
--- a/src/libasm/asm_adduint16.c
+++ b/src/libasm/asm_adduint16.c
@@ -1,28 +1,31 @@
 /* Add unsigned integer to a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define SIZE 16
 
diff --git a/src/libasm/asm_adduint32.c b/src/libasm/asm_adduint32.c
index 6dc814f..9a3ec6d 100644
--- a/src/libasm/asm_adduint32.c
+++ b/src/libasm/asm_adduint32.c
@@ -1,28 +1,31 @@
 /* Add unsigned integer to a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define SIZE 32
 
diff --git a/src/libasm/asm_adduint64.c b/src/libasm/asm_adduint64.c
index 71bb16a..b2c57a4 100644
--- a/src/libasm/asm_adduint64.c
+++ b/src/libasm/asm_adduint64.c
@@ -1,28 +1,31 @@
 /* Add unsigned integer to a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define SIZE 64
 
diff --git a/src/libasm/asm_adduint8.c b/src/libasm/asm_adduint8.c
index c880153..30641b8 100644
--- a/src/libasm/asm_adduint8.c
+++ b/src/libasm/asm_adduint8.c
@@ -1,28 +1,31 @@
 /* Add unsigned integer to a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_adduleb128.c b/src/libasm/asm_adduleb128.c
index 042c76b..a3a8573 100644
--- a/src/libasm/asm_adduleb128.c
+++ b/src/libasm/asm_adduleb128.c
@@ -1,28 +1,31 @@
 /* Add integer to a section.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_align.c b/src/libasm/asm_align.c
index b5a573b..2025b02 100644
--- a/src/libasm/asm_align.c
+++ b/src/libasm/asm_align.c
@@ -1,28 +1,31 @@
 /* Align section.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_begin.c b/src/libasm/asm_begin.c
index b8094dc..48842d3 100644
--- a/src/libasm/asm_begin.c
+++ b/src/libasm/asm_begin.c
@@ -1,28 +1,31 @@
 /* Create descriptor for assembling.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_end.c b/src/libasm/asm_end.c
index 1d815fa..f4145a7 100644
--- a/src/libasm/asm_end.c
+++ b/src/libasm/asm_end.c
@@ -1,28 +1,31 @@
 /* Finalize operations on the assembler context, free all resources.
    Copyright (C) 2002, 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_error.c b/src/libasm/asm_error.c
index 4d249e9..300a798 100644
--- a/src/libasm/asm_error.c
+++ b/src/libasm/asm_error.c
@@ -1,28 +1,31 @@
 /* Error handling in libasm.
    Copyright (C) 2002, 2004, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_fill.c b/src/libasm/asm_fill.c
index 66f7134..6b92bc3 100644
--- a/src/libasm/asm_fill.c
+++ b/src/libasm/asm_fill.c
@@ -1,28 +1,31 @@
 /* Determine fill pattern for a section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_getelf.c b/src/libasm/asm_getelf.c
index df5cffd..edeff13 100644
--- a/src/libasm/asm_getelf.c
+++ b/src/libasm/asm_getelf.c
@@ -1,28 +1,31 @@
 /* Return ELF descriptor associated with the assembler context.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_newabssym.c b/src/libasm/asm_newabssym.c
index 1dacb01..4e59901 100644
--- a/src/libasm/asm_newabssym.c
+++ b/src/libasm/asm_newabssym.c
@@ -1,28 +1,31 @@
 /* Create new ABS symbol.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_newcomsym.c b/src/libasm/asm_newcomsym.c
index 4a7144e..7a578e0 100644
--- a/src/libasm/asm_newcomsym.c
+++ b/src/libasm/asm_newcomsym.c
@@ -1,28 +1,31 @@
 /* Create new COMMON symbol.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_newscn.c b/src/libasm/asm_newscn.c
index dd48d2b..ece7f5c 100644
--- a/src/libasm/asm_newscn.c
+++ b/src/libasm/asm_newscn.c
@@ -1,28 +1,31 @@
 /* Create new section in output file.
    Copyright (C) 2002-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_newscn_ingrp.c b/src/libasm/asm_newscn_ingrp.c
index c17e22e..6ef7cb9 100644
--- a/src/libasm/asm_newscn_ingrp.c
+++ b/src/libasm/asm_newscn_ingrp.c
@@ -1,28 +1,31 @@
 /* Create new section, which is member of a group, in output file.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_newscngrp.c b/src/libasm/asm_newscngrp.c
index 1eed25c..2808e69 100644
--- a/src/libasm/asm_newscngrp.c
+++ b/src/libasm/asm_newscngrp.c
@@ -1,28 +1,31 @@
 /* Create new section group.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_newsubscn.c b/src/libasm/asm_newsubscn.c
index d1a86dd..a83607a 100644
--- a/src/libasm/asm_newsubscn.c
+++ b/src/libasm/asm_newsubscn.c
@@ -1,28 +1,31 @@
 /* Create new subsection section in given section.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_newsym.c b/src/libasm/asm_newsym.c
index e2727b1..deca08a 100644
--- a/src/libasm/asm_newsym.c
+++ b/src/libasm/asm_newsym.c
@@ -1,28 +1,31 @@
 /* Define new symbol for current position in given section.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/asm_scngrp_newsignature.c b/src/libasm/asm_scngrp_newsignature.c
index 9908e40..d87f4a4 100644
--- a/src/libasm/asm_scngrp_newsignature.c
+++ b/src/libasm/asm_scngrp_newsignature.c
@@ -1,28 +1,31 @@
 /* Update signature of section group.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/disasm_begin.c b/src/libasm/disasm_begin.c
index 5b98b2a..d00852b 100644
--- a/src/libasm/disasm_begin.c
+++ b/src/libasm/disasm_begin.c
@@ -1,28 +1,31 @@
 /* Create context descriptor for disassembler.
    Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/disasm_cb.c b/src/libasm/disasm_cb.c
index 5610125..eb3689c 100644
--- a/src/libasm/disasm_cb.c
+++ b/src/libasm/disasm_cb.c
@@ -1,27 +1,30 @@
 /* Copyright (C) 2005, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/disasm_end.c b/src/libasm/disasm_end.c
index ee8b2f9..6878030 100644
--- a/src/libasm/disasm_end.c
+++ b/src/libasm/disasm_end.c
@@ -1,28 +1,31 @@
 /* Release descriptor for disassembler.
    Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/disasm_str.c b/src/libasm/disasm_str.c
index 856fd11..5b0bb29 100644
--- a/src/libasm/disasm_str.c
+++ b/src/libasm/disasm_str.c
@@ -1,27 +1,30 @@
 /* Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/libasm.h b/src/libasm/libasm.h
index 307c734..5c61224 100644
--- a/src/libasm/libasm.h
+++ b/src/libasm/libasm.h
@@ -1,27 +1,30 @@
 /* Interface for libasm.
    Copyright (C) 2002, 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBASM_H
 #define _LIBASM_H 1
diff --git a/src/libasm/libasmP.h b/src/libasm/libasmP.h
index ee7005f..49b6484 100644
--- a/src/libasm/libasmP.h
+++ b/src/libasm/libasmP.h
@@ -1,27 +1,30 @@
 /* Internal definitions for libasm.
    Copyright (C) 2002, 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBASMP_H
 #define _LIBASMP_H 1
diff --git a/src/libasm/symbolhash.c b/src/libasm/symbolhash.c
index e3aa5dd..1c95418 100644
--- a/src/libasm/symbolhash.c
+++ b/src/libasm/symbolhash.c
@@ -1,28 +1,31 @@
 /* Symbol hash table implementation.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libasm/symbolhash.h b/src/libasm/symbolhash.h
index 28768da..a5bceff 100644
--- a/src/libasm/symbolhash.h
+++ b/src/libasm/symbolhash.h
@@ -1,27 +1,30 @@
 /* Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 SYMBOLHASH_H
 #define SYMBOLHASH_H	1
diff --git a/src/libcpu/ChangeLog b/src/libcpu/ChangeLog
index 76340a1..a20f440 100644
--- a/src/libcpu/ChangeLog
+++ b/src/libcpu/ChangeLog
@@ -1,3 +1,25 @@
+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.
+
+2012-02-24  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (CLEANFILES): Move %_dis.h to...
+	(MAINTAINERCLEANFILES): here.
+
 2012-01-21  Ulrich Drepper  <drepper@gmail.com>
 
 	* i386_disasm.c (ADD_NSTRING): Define.
diff --git a/src/libcpu/Makefile b/src/libcpu/Makefile
new file mode 100644
index 0000000..1d74028
--- /dev/null
+++ b/src/libcpu/Makefile
@@ -0,0 +1,672 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# libcpu/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+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
+#noinst_PROGRAMS = i386_gendis$(EXEEXT)
+subdir = libcpu
+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_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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)
+libcpu_i386_a_OBJECTS = $(am_libcpu_i386_a_OBJECTS)
+libcpu_x86_64_a_AR = $(AR) $(ARFLAGS)
+libcpu_x86_64_a_LIBADD =
+am_libcpu_x86_64_a_OBJECTS = x86_64_disasm.$(OBJEXT)
+libcpu_x86_64_a_OBJECTS = $(am_libcpu_x86_64_a_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+am_i386_gendis_OBJECTS = i386_gendis.$(OBJEXT) i386_lex.$(OBJEXT) \
+	i386_parse.$(OBJEXT)
+i386_gendis_OBJECTS = $(am_i386_gendis_OBJECTS)
+i386_gendis_DEPENDENCIES = $(libeu)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+am__skiplex = test -f $@ ||
+AM_V_LEX = $(am__v_LEX_$(V))
+am__v_LEX_ = $(am__v_LEX_$(AM_DEFAULT_VERBOSITY))
+am__v_LEX_0 = @echo "  LEX     " $@;
+am__v_LEX_1 = 
+YLWRAP = $(top_srcdir)/config/ylwrap
+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_$(V))
+am__v_YACC_ = $(am__v_YACC_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.$(<F:lex.l=)
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 0.161
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/libcpu
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/libcpu
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+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 -Wformat=2 $(if \
+	$($(*F)_no_Werror),,-Werror) $(if \
+	$($(*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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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
+libcpu_i386_a_SOURCES = i386_disasm.c i386_dis.h
+libcpu_x86_64_a_SOURCES = x86_64_disasm.c x86_64_dis.h
+i386_gendis_SOURCES = i386_gendis.c i386_lex.l i386_parse.y
+#noinst_HEADERS = memory-access.h i386_parse.h i386_data.h
+i386_lex_no_Werror = yes
+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
+EXTRA_DIST = defs/i386
+MAINTAINERCLEANFILES = $(foreach P,i386 x86_64, $P_dis.h)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .l .o .obj .y
+$(srcdir)/Makefile.in: # $(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 libcpu/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits libcpu/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(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)
+
+libcpu_i386.a: $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_DEPENDENCIES) $(EXTRA_libcpu_i386_a_DEPENDENCIES) 
+	$(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) 
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(i386_gendis_OBJECTS) $(i386_gendis_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/i386_disasm.Po
+include ./$(DEPDIR)/i386_gendis.Po
+include ./$(DEPDIR)/i386_lex.Po
+include ./$(DEPDIR)/i386_parse.Po
+include ./$(DEPDIR)/x86_64_disasm.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.l.c:
+	$(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+
+.y.c:
+	$(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`; \
+	$(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) $(PROGRAMS) $(HEADERS)
+installdirs:
+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."
+	-rm -f i386_lex.c
+	-rm -f i386_parse.c
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS \
+	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-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:
+
+.MAKE: install-am install-strip
+
+.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
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
+
+i386_disasm.o: i386.mnemonics $(srcdir)/i386_dis.h
+x86_64_disasm.o: x86_64.mnemonics $(srcdir)/x86_64_dis.h
+
+%_defs: $(srcdir)/defs/i386
+	m4 -D$* -DDISASSEMBLER $< > $@T
+	mv -f $@T $@
+
+#$(srcdir)/%_dis.h: %_defs i386_gendis
+#	./i386_gendis $< > $@T
+#	mv -f $@T $@
+
+$(srcdir)/%_dis.h:
+	@echo '*** missing $@; configure with --enable-maintainer-mode'
+	@false
+
+%.mnemonics: %_defs
+	sed '1,/^%%/d;/^#/d;/^[[:space:]]*$$/d;s/[^:]*:\([^[:space:]]*\).*/MNE(\1)/;s/{[^}]*}//g;/INVALID/d' \
+	  $< | sort -u > $@
+i386_parse.o: i386_parse.c i386.mnemonics
+i386_lex.o: i386_parse.h
+
+i386_parse.h: i386_parse.c ;
+
+# 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:
diff --git a/src/libcpu/Makefile.am b/src/libcpu/Makefile.am
index 7dd2561..3beccf3 100644
--- a/src/libcpu/Makefile.am
+++ b/src/libcpu/Makefile.am
@@ -1,31 +1,34 @@
 ## Process this file with automake to create Makefile.in
 ##
-## Copyright (C) 2002-2011 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## Copyright (C) 2002-2012 Red Hat, Inc.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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
-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=)
@@ -43,7 +46,8 @@
 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
@@ -51,7 +55,15 @@
 noinst_PROGRAMS = i386_gendis
 
 $(srcdir)/%_dis.h: %_defs i386_gendis
-	./i386_gendis $< > $@
+	./i386_gendis $< > $@T
+	mv -f $@T $@
+
+else
+
+$(srcdir)/%_dis.h:
+	@echo '*** missing $@; configure with --enable-maintainer-mode'
+	@false
+
 endif
 
 %.mnemonics: %_defs
@@ -66,10 +78,11 @@
 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 ;
 
 EXTRA_DIST = defs/i386
 
-CLEANFILES += $(foreach P,i386 x86_64,$P_defs $P.mnemonics $P_dis.h)
+CLEANFILES += $(foreach P,i386 x86_64,$P_defs $P.mnemonics)
+MAINTAINERCLEANFILES = $(foreach P,i386 x86_64, $P_dis.h)
diff --git a/src/libcpu/Makefile.in b/src/libcpu/Makefile.in
index 1565505..3c90e34 100644
--- a/src/libcpu/Makefile.in
+++ b/src/libcpu/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -18,6 +17,51 @@
 
 
 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@
@@ -36,14 +80,15 @@
 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) \
@@ -53,8 +98,11 @@
 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)
@@ -67,38 +115,93 @@
 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 $@ ||
-YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+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@
@@ -107,10 +210,13 @@
 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@
@@ -131,6 +237,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -141,6 +248,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -155,6 +263,7 @@
 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@
@@ -204,22 +313,20 @@
 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 $P_dis.h)
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+	$P.mnemonics)
+textrel_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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
@@ -231,8 +338,9 @@
 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
 
 .SUFFIXES:
@@ -258,6 +366,7 @@
 	    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
@@ -270,20 +379,23 @@
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libcpu_i386.a: $(libcpu_i386_a_OBJECTS) $(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
-libcpu_x86_64.a: $(libcpu_x86_64_a_OBJECTS) $(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
+
+libcpu_i386.a: $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_DEPENDENCIES) $(EXTRA_libcpu_i386_a_DEPENDENCIES) 
+	$(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) 
+	$(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) 
+
+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)
@@ -298,45 +410,34 @@
 @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 -o $@ $<
 
 .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 -o $@ `$(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)
+	$(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` 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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -348,15 +449,11 @@
 	      $$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
@@ -365,6 +462,21 @@
 	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
@@ -413,10 +525,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -431,6 +548,7 @@
 	@echo "it deletes files that may require special tools to rebuild."
 	-rm -f i386_lex.c
 	-rm -f i386_parse.c
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-am
 
 clean-am: clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS \
@@ -503,18 +621,18 @@
 
 .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
@@ -530,10 +648,16 @@
 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'
+@MAINTAINER_MODE_FALSE@	@false
 
 %.mnemonics: %_defs
 	sed '1,/^%%/d;/^#/d;/^[[:space:]]*$$/d;s/[^:]*:\([^[:space:]]*\).*/MNE(\1)/;s/{[^}]*}//g;/INVALID/d' \
diff --git a/src/libcpu/i386_data.h b/src/libcpu/i386_data.h
index 42e6650..b8a34c3 100644
--- a/src/libcpu/i386_data.h
+++ b/src/libcpu/i386_data.h
@@ -1,28 +1,31 @@
 /* Helper routines for disassembler for x86/x86-64.
    Copyright (C) 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <inttypes.h>
 #include <stddef.h>
diff --git a/src/libcpu/i386_disasm.c b/src/libcpu/i386_disasm.c
index 6d58f0e..832241f 100644
--- a/src/libcpu/i386_disasm.c
+++ b/src/libcpu/i386_disasm.c
@@ -1,28 +1,31 @@
 /* Disassembler for x86.
    Copyright (C) 2007, 2008, 2009, 2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libcpu/i386_gendis.c b/src/libcpu/i386_gendis.c
index a8570f1..aae5eae 100644
--- a/src/libcpu/i386_gendis.c
+++ b/src/libcpu/i386_gendis.c
@@ -1,28 +1,31 @@
 /* Generate tables for x86 disassembler.
    Copyright (C) 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libcpu/i386_lex.c b/src/libcpu/i386_lex.c
index a4540b9..cb0be8d 100644
--- a/src/libcpu/i386_lex.c
+++ b/src/libcpu/i386_lex.c
@@ -27,7 +27,7 @@
 #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
@@ -72,7 +72,6 @@
 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
@@ -103,6 +102,8 @@
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#endif /* ! C99 */
+
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -171,7 +172,12 @@
 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;
 
@@ -210,11 +216,6 @@
 
 #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
@@ -232,7 +233,7 @@
 	/* 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
@@ -302,8 +303,8 @@
 
 /* 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;
@@ -331,7 +332,7 @@
 
 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  );
@@ -363,7 +364,7 @@
 
 /* Begin user sect3 */
 
-#define i386_wrap(n) 1
+#define i386_wrap() 1
 #define YY_SKIP_YYWRAP
 
 typedef unsigned char YY_CHAR;
@@ -536,31 +537,34 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *i386_text;
-#line 1 "i386_lex.l"
-#line 2 "i386_lex.l"
+#line 1 "/home/mark/src/elfutils/libcpu/i386_lex.l"
+#line 2 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 /* Copyright (C) 2004, 2005, 2007, 2008 Red Hat, Inc.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -577,7 +581,7 @@
 static void eat_to_eol (void);
 static void invalid_char (int ch);
 
-#line 581 "i386_lex.c"
+#line 585 "i386_lex.c"
 
 #define INITIAL 0
 #define MAIN 1
@@ -617,7 +621,7 @@
 
 void i386_set_out  (FILE * out_str  );
 
-int i386_get_leng (void );
+yy_size_t i386_get_leng (void );
 
 char *i386_get_text (void );
 
@@ -678,7 +682,7 @@
 	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; \
@@ -763,10 +767,10 @@
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
     
-#line 54 "i386_lex.l"
+#line 57 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 
 
-#line 770 "i386_lex.c"
+#line 774 "i386_lex.c"
 
 	if ( !(yy_init) )
 		{
@@ -837,7 +841,7 @@
 
 		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' )
 					   
@@ -858,119 +862,119 @@
 
 case 1:
 YY_RULE_SETUP
-#line 56 "i386_lex.l"
+#line 59 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return kMASK; }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 58 "i386_lex.l"
+#line 61 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return kPREFIX; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 59 "i386_lex.l"
+#line 62 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return kSUFFIX; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 61 "i386_lex.l"
+#line 64 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return kSYNONYM; }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 63 "i386_lex.l"
+#line 66 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { i386_lval.num = strtoul (i386_text, NULL, 10);
 				  return kNUMBER; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 66 "i386_lex.l"
+#line 69 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { BEGIN (MAIN); return kPERCPERC; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 69 "i386_lex.l"
+#line 72 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return '0'; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 70 "i386_lex.l"
+#line 73 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return '1'; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 72 "i386_lex.l"
+#line 75 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { i386_lval.str = xstrndup (i386_text + 1,
 							    i386_leng - 2);
 				  return kBITFIELD; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 76 "i386_lex.l"
+#line 79 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { i386_lval.str = (void *) -1l;
 				  return kID; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 79 "i386_lex.l"
+#line 82 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { i386_lval.str = xstrndup (i386_text, i386_leng);
 				  return kID; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 82 "i386_lex.l"
+#line 85 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return ','; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 84 "i386_lex.l"
+#line 87 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return ':'; }
 	YY_BREAK
 case 14:
 /* rule 14 can match eol */
 YY_RULE_SETUP
-#line 86 "i386_lex.l"
+#line 89 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { /* IGNORE */ }
 	YY_BREAK
 case 15:
 /* rule 15 can match eol */
 YY_RULE_SETUP
-#line 88 "i386_lex.l"
+#line 91 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return '\n'; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 90 "i386_lex.l"
+#line 93 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { eat_to_eol (); }
 	YY_BREAK
 case 17:
 /* rule 17 can match eol */
 YY_RULE_SETUP
-#line 92 "i386_lex.l"
+#line 95 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { /* IGNORE */ }
 	YY_BREAK
 case 18:
 /* rule 18 can match eol */
 YY_RULE_SETUP
-#line 94 "i386_lex.l"
+#line 97 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { return kSPACE; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 96 "i386_lex.l"
+#line 99 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { i386_lval.ch = *i386_text; return kCHAR; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 98 "i386_lex.l"
+#line 101 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 { invalid_char (*i386_text); }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 101 "i386_lex.l"
+#line 104 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 ECHO;
 	YY_BREAK
-#line 974 "i386_lex.c"
+#line 978 "i386_lex.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(MAIN):
 	yyterminate();
@@ -1158,21 +1162,21 @@
 
 	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;
@@ -1203,7 +1207,7 @@
 
 		/* 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);
 		}
@@ -1299,7 +1303,7 @@
 	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 )
@@ -1314,7 +1318,7 @@
 	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 =
@@ -1367,7 +1371,7 @@
 
 		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(  ) )
@@ -1645,7 +1649,7 @@
  */
 static void i386_ensure_buffer_stack (void)
 {
-	int num_to_alloc;
+	yy_size_t num_to_alloc;
     
 	if (!(yy_buffer_stack)) {
 
@@ -1737,17 +1741,17 @@
 
 /** 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;
@@ -1829,7 +1833,7 @@
 /** Get the length of the current token.
  * 
  */
-int i386_get_leng  (void)
+yy_size_t i386_get_leng  (void)
 {
         return i386_leng;
 }
@@ -1980,7 +1984,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 101 "i386_lex.l"
+#line 104 "/home/mark/src/elfutils/libcpu/i386_lex.l"
 
 
 
diff --git a/src/libcpu/i386_lex.l b/src/libcpu/i386_lex.l
index 828c558..1e10dd7 100644
--- a/src/libcpu/i386_lex.l
+++ b/src/libcpu/i386_lex.l
@@ -2,26 +2,29 @@
 /* Copyright (C) 2004, 2005, 2007, 2008 Red Hat, Inc.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libcpu/i386_parse.c b/src/libcpu/i386_parse.c
index 575fcc5..cf8fe25 100644
--- a/src/libcpu/i386_parse.c
+++ b/src/libcpu/i386_parse.c
@@ -1,8 +1,8 @@
-/* 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
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.7"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -58,8 +58,6 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 /* Substitute the variable and function names.  */
 #define yyparse         i386_parse
@@ -70,36 +68,37 @@
 #define yydebug         i386_debug
 #define yynerrs         i386_nerrs
 
-
 /* Copy the first part of user declarations.  */
-
-/* Line 268 of yacc.c  */
-#line 1 "i386_parse.y"
+/* Line 371 of yacc.c  */
+#line 1 "/home/mark/src/elfutils/libcpu/i386_parse.y"
 
 /* Parser for i386 CPU description.
    Copyright (C) 2004, 2005, 2007, 2008, 2009 Red Hat, Inc.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -287,14 +286,16 @@
 static size_t best_mnemonic_bits;
 #endif
 
+/* Line 371 of yacc.c  */
+#line 291 "i386_parse.c"
 
-/* Line 268 of yacc.c  */
-#line 293 "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
@@ -304,11 +305,17 @@
 # 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
@@ -342,13 +349,11 @@
 
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 293 of yacc.c  */
-#line 214 "i386_parse.y"
+/* Line 387 of yacc.c  */
+#line 217 "/home/mark/src/elfutils/libcpu/i386_parse.y"
 
   unsigned long int num;
   char *str;
@@ -359,21 +364,36 @@
   struct argument *arg;
 
 
-
-/* Line 293 of yacc.c  */
-#line 365 "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;
+
+#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 377 "i386_parse.c"
+/* Line 390 of yacc.c  */
+#line 397 "i386_parse.c"
 
 #ifdef short
 # undef short
@@ -426,24 +446,24 @@
 # 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)
@@ -479,6 +499,7 @@
 #    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
@@ -570,20 +591,20 @@
 #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
@@ -670,14 +691,14 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   244,   244,   254,   255,   258,   260,   262,   264,   276,
-     279,   280,   283,   366,   369,   385,   388,   398,   405,   413,
-     417,   424,   431,   453,   456,   459,   469,   477,   485,   488,
-     520,   529,   536
+       0,   247,   247,   257,   258,   261,   263,   265,   267,   279,
+     282,   283,   286,   369,   372,   388,   391,   401,   408,   416,
+     420,   427,   434,   456,   459,   462,   472,   480,   488,   491,
+     523,   532,   539
 };
 #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[] =
@@ -686,7 +707,7 @@
   "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
 
@@ -768,10 +789,10 @@
       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[] =
@@ -820,62 +841,35 @@
 
 #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
@@ -925,6 +919,8 @@
     YYSTYPE const * const yyvaluep;
 #endif
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
@@ -936,7 +932,7 @@
   switch (yytype)
     {
       default:
-	break;
+        break;
     }
 }
 
@@ -1176,12 +1172,11 @@
 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
@@ -1241,11 +1236,13 @@
                     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;
+                }
               }
         }
     }
@@ -1265,10 +1262,12 @@
 # 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)
     {
@@ -1328,32 +1327,27 @@
     {
 
       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;
@@ -1393,7 +1387,7 @@
        `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.  */
@@ -1411,7 +1405,7 @@
   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;
@@ -1429,9 +1423,8 @@
      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"));
@@ -1440,14 +1433,6 @@
   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;
 
 /*------------------------------------------------------------.
@@ -1588,7 +1573,9 @@
   yychar = YYEMPTY;
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
 
@@ -1625,9 +1612,8 @@
   switch (yyn)
     {
         case 2:
-
-/* Line 1806 of yacc.c  */
-#line 245 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 248 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      if (error_message_count != 0)
 			error (EXIT_FAILURE, 0,
@@ -1638,30 +1624,26 @@
     break;
 
   case 5:
-
-/* Line 1806 of yacc.c  */
-#line 259 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 262 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     { new_bitfield ((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].num)); }
     break;
 
   case 6:
-
-/* Line 1806 of yacc.c  */
-#line 261 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 264 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     { new_bitfield ((yyvsp[(2) - (2)].str), -1); }
     break;
 
   case 7:
-
-/* Line 1806 of yacc.c  */
-#line 263 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 266 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     { new_bitfield ((yyvsp[(2) - (2)].str), -2); }
     break;
 
   case 8:
-
-/* Line 1806 of yacc.c  */
-#line 265 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 268 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      struct synonym *newp = xmalloc (sizeof (*newp));
 		      newp->from = (yyvsp[(2) - (3)].str);
@@ -1676,9 +1658,8 @@
     break;
 
   case 12:
-
-/* Line 1806 of yacc.c  */
-#line 284 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 287 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      if ((yyvsp[(3) - (6)].field) != NULL && strcmp ((yyvsp[(3) - (6)].field)->name, "RE") != 0
 			  && strcmp ((yyvsp[(3) - (6)].field)->name, "R") != 0)
@@ -1764,9 +1745,8 @@
     break;
 
   case 14:
-
-/* Line 1806 of yacc.c  */
-#line 370 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 373 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      struct known_bitfield search;
 		      search.name = (yyvsp[(1) - (1)].str);
@@ -1784,16 +1764,14 @@
     break;
 
   case 15:
-
-/* Line 1806 of yacc.c  */
-#line 385 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 388 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     { (yyval.field) = NULL; }
     break;
 
   case 16:
-
-/* Line 1806 of yacc.c  */
-#line 389 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 392 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      check_bits ((yyvsp[(3) - (3)].bit));
 
@@ -1806,9 +1784,8 @@
     break;
 
   case 17:
-
-/* Line 1806 of yacc.c  */
-#line 399 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 402 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      check_bits ((yyvsp[(1) - (1)].bit));
 		      (yyval.bit) = (yyvsp[(1) - (1)].bit);
@@ -1816,9 +1793,8 @@
     break;
 
   case 18:
-
-/* Line 1806 of yacc.c  */
-#line 406 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 409 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      struct bitvalue *runp = (yyvsp[(1) - (2)].bit);
 		      while (runp->next != NULL)
@@ -1829,16 +1805,14 @@
     break;
 
   case 19:
-
-/* Line 1806 of yacc.c  */
-#line 414 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 417 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     { (yyval.bit) = (yyvsp[(1) - (1)].bit); }
     break;
 
   case 20:
-
-/* Line 1806 of yacc.c  */
-#line 418 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 421 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      (yyval.bit) = xmalloc (sizeof (struct bitvalue));
 		      (yyval.bit)->type = zeroone;
@@ -1848,9 +1822,8 @@
     break;
 
   case 21:
-
-/* Line 1806 of yacc.c  */
-#line 425 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 428 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      (yyval.bit) = xmalloc (sizeof (struct bitvalue));
 		      (yyval.bit)->type = zeroone;
@@ -1860,9 +1833,8 @@
     break;
 
   case 22:
-
-/* Line 1806 of yacc.c  */
-#line 432 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 435 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      (yyval.bit) = xmalloc (sizeof (struct bitvalue));
 		      struct known_bitfield search;
@@ -1885,23 +1857,20 @@
     break;
 
   case 23:
-
-/* Line 1806 of yacc.c  */
-#line 454 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 457 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     { (yyval.arg) = (yyvsp[(2) - (2)].arg); }
     break;
 
   case 24:
-
-/* Line 1806 of yacc.c  */
-#line 456 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 459 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     { (yyval.arg) = NULL; }
     break;
 
   case 25:
-
-/* Line 1806 of yacc.c  */
-#line 460 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 463 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      struct argument *runp = (yyvsp[(1) - (3)].arg);
 		      while (runp->next != NULL)
@@ -1914,9 +1883,8 @@
     break;
 
   case 26:
-
-/* Line 1806 of yacc.c  */
-#line 470 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 473 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      (yyval.arg) = xmalloc (sizeof (struct argument));
 		      (yyval.arg)->name = combine ((yyvsp[(1) - (1)].name));
@@ -1925,9 +1893,8 @@
     break;
 
   case 27:
-
-/* Line 1806 of yacc.c  */
-#line 478 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 481 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      struct argname *runp = (yyvsp[(1) - (2)].name);
 		      while (runp->next != NULL)
@@ -1938,16 +1905,14 @@
     break;
 
   case 28:
-
-/* Line 1806 of yacc.c  */
-#line 486 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 489 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     { (yyval.name) = (yyvsp[(1) - (1)].name); }
     break;
 
   case 29:
-
-/* Line 1806 of yacc.c  */
-#line 489 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 492 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      (yyval.name) = xmalloc (sizeof (struct argname));
 		      (yyval.name)->type = nfield;
@@ -1982,9 +1947,8 @@
     break;
 
   case 30:
-
-/* Line 1806 of yacc.c  */
-#line 521 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 524 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      (yyval.name) = xmalloc (sizeof (struct argname));
 		      (yyval.name)->type = string;
@@ -1996,9 +1960,8 @@
     break;
 
   case 31:
-
-/* Line 1806 of yacc.c  */
-#line 530 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 533 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      (yyval.name) = xmalloc (sizeof (struct argname));
 		      (yyval.name)->type = string;
@@ -2008,9 +1971,8 @@
     break;
 
   case 32:
-
-/* Line 1806 of yacc.c  */
-#line 537 "i386_parse.y"
+/* Line 1792 of yacc.c  */
+#line 540 "/home/mark/src/elfutils/libcpu/i386_parse.y"
     {
 		      (yyval.name) = xmalloc (sizeof (struct argname));
 		      (yyval.name)->type = string;
@@ -2022,9 +1984,8 @@
     break;
 
 
-
-/* Line 1806 of yacc.c  */
-#line 2028 "i386_parse.c"
+/* Line 1792 of yacc.c  */
+#line 1989 "i386_parse.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2187,7 +2148,9 @@
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
@@ -2211,7 +2174,7 @@
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2253,9 +2216,8 @@
 }
 
 
-
-/* Line 2067 of yacc.c  */
-#line 547 "i386_parse.y"
+/* Line 2055 of yacc.c  */
+#line 550 "/home/mark/src/elfutils/libcpu/i386_parse.y"
 
 
 static void
@@ -3394,4 +3356,3 @@
     }
 }
 #endif
-
diff --git a/src/libcpu/i386_parse.h b/src/libcpu/i386_parse.h
index a9486e3..320e2da 100644
--- a/src/libcpu/i386_parse.h
+++ b/src/libcpu/i386_parse.h
@@ -1,8 +1,8 @@
-/* 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
@@ -30,6 +30,15 @@
    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
@@ -63,13 +72,11 @@
 
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 2068 of yacc.c  */
-#line 214 "i386_parse.y"
+/* Line 2058 of yacc.c  */
+#line 217 "/home/mark/src/elfutils/libcpu/i386_parse.y"
 
   unsigned long int num;
   char *str;
@@ -80,9 +87,8 @@
   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 */
@@ -91,4 +97,18 @@
 
 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  */
diff --git a/src/libcpu/i386_parse.y b/src/libcpu/i386_parse.y
index bea0e33..689ba22 100644
--- a/src/libcpu/i386_parse.y
+++ b/src/libcpu/i386_parse.y
@@ -3,26 +3,29 @@
    Copyright (C) 2004, 2005, 2007, 2008, 2009 Red Hat, Inc.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libcpu/memory-access.h b/src/libcpu/memory-access.h
index c68eb4a..44210e2 100644
--- a/src/libcpu/memory-access.h
+++ b/src/libcpu/memory-access.h
@@ -2,26 +2,29 @@
    Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2008 Red Hat, Inc.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _MEMORY_ACCESS_H
 #define _MEMORY_ACCESS_H 1
diff --git a/src/libcpu/x86_64_disasm.c b/src/libcpu/x86_64_disasm.c
index b793b78..947bc94 100644
--- a/src/libcpu/x86_64_disasm.c
+++ b/src/libcpu/x86_64_disasm.c
@@ -1,28 +1,31 @@
 /* Disassembler for x86-64.
    Copyright (C) 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define i386_disasm x86_64_disasm
 #define DISFILE "x86_64_dis.h"
diff --git a/src/libdw/Android.mk b/src/libdw/Android.mk
index 5579b24..b0a1c99 100755
--- a/src/libdw/Android.mk
+++ b/src/libdw/Android.mk
@@ -15,107 +15,125 @@
 LOCAL_PATH := $(call my-dir)
 
 LIBDW_SRC_FILES := \
-        cfi.c \
-        cie.c \
-        dwarf_abbrevhaschildren.c \
-        dwarf_abbrev_hash.c \
-        dwarf_addrdie.c \
-        dwarf_arrayorder.c \
-        dwarf_attr.c \
-        dwarf_attr_integrate.c \
-        dwarf_begin.c \
-        dwarf_begin_elf.c \
-        dwarf_bitoffset.c \
-        dwarf_bitsize.c \
-        dwarf_bytesize.c \
-        dwarf_cfi_addrframe.c \
-        dwarf_child.c \
-        dwarf_cuoffset.c \
-        dwarf_decl_column.c \
-        dwarf_decl_file.c \
-        dwarf_decl_line.c \
-        dwarf_diecu.c \
-        dwarf_diename.c \
-        dwarf_dieoffset.c \
-        dwarf_end.c \
-        dwarf_entry_breakpoints.c \
-        dwarf_entrypc.c \
-        dwarf_error.c \
-        dwarf_filesrc.c \
-        dwarf_formaddr.c \
-        dwarf_formblock.c \
-        dwarf_formflag.c \
-        dwarf_formref.c \
-        dwarf_formref_die.c \
-        dwarf_formsdata.c \
-        dwarf_formstring.c \
-        dwarf_formudata.c \
-        dwarf_frame_cfa.c \
-        dwarf_func_inline.c \
-        dwarf_getabbrevattr.c \
-        dwarf_getabbrev.c \
-        dwarf_getabbrevcode.c \
-        dwarf_getabbrevtag.c \
-        dwarf_getarange_addr.c \
-        dwarf_getarangeinfo.c \
-        dwarf_getaranges.c \
-        dwarf_getattrcnt.c \
-        dwarf_getattrs.c \
-        dwarf_getcfi.c \
-        dwarf_getcfi_elf.c \
-        dwarf_getelf.c \
-        dwarf_getfuncs.c \
-        dwarf_getlocation.c \
-        dwarf_getmacros.c \
-        dwarf_getpubnames.c \
-        dwarf_getscopes.c \
-        dwarf_getscopes_die.c \
-        dwarf_getscopevar.c \
-        dwarf_getsrc_die.c \
-        dwarf_getsrcdirs.c \
-        dwarf_getsrc_file.c \
-        dwarf_getsrcfiles.c \
-        dwarf_getsrclines.c \
-        dwarf_getstring.c \
-        dwarf_hasattr.c \
-        dwarf_hasattr_integrate.c \
-        dwarf_haschildren.c \
-        dwarf_hasform.c \
-        dwarf_haspc.c \
-        dwarf_highpc.c \
-        dwarf_lineaddr.c \
-        dwarf_linebeginstatement.c \
-        dwarf_lineblock.c \
-        dwarf_linecol.c \
-        dwarf_lineendsequence.c \
-        dwarf_lineepiloguebegin.c \
-        dwarf_lineno.c \
-        dwarf_lineprologueend.c \
-        dwarf_linesrc.c \
-        dwarf_lowpc.c \
-        dwarf_macro_opcode.c \
-        dwarf_macro_param1.c \
-        dwarf_macro_param2.c \
-        dwarf_next_cfi.c \
-        dwarf_nextcu.c \
-        dwarf_offabbrev.c \
-        dwarf_offdie.c \
-        dwarf_onearange.c \
-        dwarf_onesrcline.c \
-        dwarf_ranges.c \
-        dwarf_siblingof.c \
-        dwarf_sig8_hash.c \
-        dwarf_srclang.c \
-        dwarf_tag.c \
-        dwarf_whatattr.c \
-        dwarf_whatform.c \
-        fde.c \
-        frame-cache.c \
-        libdw_alloc.c \
-        libdw_findcu.c \
-        libdw_form.c \
-        libdw_visit_scopes.c \
-        memory-access.c
+    cfi.c \
+    cie.c \
+    dwarf_abbrevhaschildren.c \
+    dwarf_abbrev_hash.c \
+    dwarf_addrdie.c \
+    dwarf_aggregate_size.c \
+    dwarf_arrayorder.c \
+    dwarf_attr.c \
+    dwarf_attr_integrate.c \
+    dwarf_begin.c \
+    dwarf_begin_elf.c \
+    dwarf_bitoffset.c \
+    dwarf_bitsize.c \
+    dwarf_bytesize.c \
+    dwarf_cfi_addrframe.c \
+    dwarf_cfi_end.c \
+    dwarf_child.c \
+    dwarf_cu_die.c \
+    dwarf_cu_getdwarf.c \
+    dwarf_cuoffset.c \
+    dwarf_decl_column.c \
+    dwarf_decl_file.c \
+    dwarf_decl_line.c \
+    dwarf_diecu.c \
+    dwarf_diename.c \
+    dwarf_dieoffset.c \
+    dwarf_end.c \
+    dwarf_entry_breakpoints.c \
+    dwarf_entrypc.c \
+    dwarf_error.c \
+    dwarf_filesrc.c \
+    dwarf_formaddr.c \
+    dwarf_formblock.c \
+    dwarf_formflag.c \
+    dwarf_formref.c \
+    dwarf_formref_die.c \
+    dwarf_formsdata.c \
+    dwarf_formstring.c \
+    dwarf_formudata.c \
+    dwarf_frame_cfa.c \
+    dwarf_frame_info.c \
+    dwarf_frame_register.c \
+    dwarf_func_inline.c \
+    dwarf_getabbrevattr.c \
+    dwarf_getabbrev.c \
+    dwarf_getabbrevcode.c \
+    dwarf_getabbrevtag.c \
+    dwarf_getalt.c \
+    dwarf_getarange_addr.c \
+    dwarf_getarangeinfo.c \
+    dwarf_getaranges.c \
+    dwarf_getattrcnt.c \
+    dwarf_getattrs.c \
+    dwarf_getcfi.c \
+    dwarf_getcfi_elf.c \
+    dwarf_getelf.c \
+    dwarf_getfuncs.c \
+    dwarf_getlocation_attr.c \
+    dwarf_getlocation.c \
+    dwarf_getlocation_die.c \
+    dwarf_getlocation_implicit_pointer.c \
+    dwarf_getmacros.c \
+    dwarf_getpubnames.c \
+    dwarf_getscopes.c \
+    dwarf_getscopes_die.c \
+    dwarf_getscopevar.c \
+    dwarf_getsrc_die.c \
+    dwarf_getsrcdirs.c \
+    dwarf_getsrc_file.c \
+    dwarf_getsrcfiles.c \
+    dwarf_getsrclines.c \
+    dwarf_getstring.c \
+    dwarf_hasattr.c \
+    dwarf_hasattr_integrate.c \
+    dwarf_haschildren.c \
+    dwarf_hasform.c \
+    dwarf_haspc.c \
+    dwarf_highpc.c \
+    dwarf_lineaddr.c \
+    dwarf_linebeginstatement.c \
+    dwarf_lineblock.c \
+    dwarf_linecol.c \
+    dwarf_linediscriminator.c \
+    dwarf_lineendsequence.c \
+    dwarf_lineepiloguebegin.c \
+    dwarf_lineisa.c \
+    dwarf_lineno.c \
+    dwarf_lineop_index.c \
+    dwarf_lineprologueend.c \
+    dwarf_linesrc.c \
+    dwarf_lowpc.c \
+    dwarf_macro_getparamcnt.c \
+    dwarf_macro_getsrcfiles.c \
+    dwarf_macro_opcode.c \
+    dwarf_macro_param1.c \
+    dwarf_macro_param2.c \
+    dwarf_macro_param.c \
+    dwarf_next_cfi.c \
+    dwarf_nextcu.c \
+    dwarf_offabbrev.c \
+    dwarf_offdie.c \
+    dwarf_onearange.c \
+    dwarf_onesrcline.c \
+    dwarf_peel_type.c \
+    dwarf_ranges.c \
+    dwarf_setalt.c \
+    dwarf_siblingof.c \
+    dwarf_sig8_hash.c \
+    dwarf_srclang.c \
+    dwarf_tag.c \
+    dwarf_whatattr.c \
+    dwarf_whatform.c \
+    fde.c \
+    frame-cache.c \
+    libdw_alloc.c \
+    libdw_findcu.c \
+    libdw_form.c \
+    libdw_visit_scopes.c \
+
 
 ifeq ($(HOST_OS),linux)
 
@@ -136,7 +154,7 @@
 	$(LOCAL_PATH)/../libdw \
 	$(LOCAL_PATH)/../libelf
 
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -DIS_LIBDW
+LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_BSD_SOURCE -DIS_LIBDW
 
 # to suppress the "pointer of type ‘void *’ used in arithmetic" warning
 LOCAL_CFLAGS += -Wno-pointer-arith
@@ -145,6 +163,8 @@
 
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
 
+LOCAL_STATIC_LIBRARIES := libz
+
 include $(BUILD_HOST_STATIC_LIBRARY)
 
 endif # linux
@@ -166,11 +186,11 @@
 	$(LOCAL_PATH)/../libdw \
 	$(LOCAL_PATH)/../libelf
 
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../bionic-fixup
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../bionic-fixup
 
-LOCAL_CFLAGS += -include $(LOCAL_PATH)/../bionic-fixup/AndroidFixup.h
+LOCAL_CFLAGS += -include $(LOCAL_PATH)/../../bionic-fixup/AndroidFixup.h
 
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -DIS_LIBDW -Werror
+LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_BSD_SOURCE -DIS_LIBDW -Werror
 
 # to suppress the "pointer of type ‘void *’ used in arithmetic" warning
 LOCAL_CFLAGS += -Wno-pointer-arith
@@ -181,4 +201,6 @@
 
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
 
+LOCAL_STATIC_LIBRARIES := libz
+
 include $(BUILD_STATIC_LIBRARY)
diff --git a/src/libdw/ChangeLog b/src/libdw/ChangeLog
index 98b67f4..abc2d71 100644
--- a/src/libdw/ChangeLog
+++ b/src/libdw/ChangeLog
@@ -1,3 +1,714 @@
+2014-12-18  Ulrich Drepper  <drepper@gmail.com>
+
+	* Makefile.am: Suppress output of textrel_check command.
+
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getsrclines.c (read_srclines): Check diridx is valid under
+	DW_LNE_define_file.
+
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getpubnames.c (dwarf_getpubnames): Make sure there is enough
+	space to read die offset.
+
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getsrclines.c (read_srclines): Correct overflow check for
+	unit_length.
+
+2014-12-15  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getpubnames.c (get_offsets): Make sure whole unit fall inside
+	section data. Set error to DWARF_E_NO_ENTRY if cnt is zero.
+	(dwarf_getpubnames): Make sure section data contains string zero
+	terminator.
+
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+	* memory-access.h (__libdw_get_sleb128): Unroll the first step to help
+	the compiler optimize for the common single-byte case.
+
+2014-12-15  Josh Stone  <jistone@redhat.com>
+
+	* memory-access.h (__libdw_max_len_leb128): New.
+	(__libdw_get_uleb128): Use __libdw_max_len_leb128.
+	(__libdw_get_sleb128): Likewise.
+
+2014-12-14  Mark Wielaard  <mjw@redhat.com>
+
+	* cfi.c (execute_cfi): Add program bounds checks.
+	* dwarf_child.c (__libdw_find_attr): Add attrp bounds checks.
+	* dwarf_formblock.c (dwarf_formblock): Call get_uleb128 with endp.
+	* dwarf_formref.c (__libdw_formref): Add datap bounds checks.
+	* dwarf_formsdata.c (dwarf_formsdata): Likewise.
+	* dwarf_formudata.c (dwarf_formudata): Likewise.
+	* dwarf_frame_register.c (dwarf_frame_register): Call get_uleb128
+	with end of data buf.
+	* dwarf_getabbrev.c (__libdw_getabbrev): Add abbrevp bounds checks.
+	* dwarf_getabbrevattr.c (dwarf_getabbrevattr): Assume get_uleb128
+	call gets enough data.
+	* dwarf_getattrs,c (dwarf_getattrs): Call get_uleb128 with endp.
+	* dwarf_getlocation.c (store_implicit_value): Call get_uleb128
+	with enough data.
+	(__libdw_intern_expression): Call get_uleb128/get_sleb128 with
+	end_data.
+	* dwarf_getmacros.c (get_table_for_offset): Add nforms bounds check.
+	* dwarf_getsrclines.c (read_srclines): Bounds check linep and call
+	get_uleb128 with lineendp.
+	* dwarf_hasattr.c (dwarf_hasattr): Bounds check attrp and call
+	get_uleb128 with endp.
+	* dwarf_next_cfi.c (dwarf_next_cfi): Bounds check bytes and call
+	get_uleb128/get_sleb128 with limit.
+	* encoded-value.h (read_encoded_value): Assume get_uleb128 and
+	get_sleb128 get called with enough data.
+	* fde.c (intern_fde): Call get_uleb128 with instructions_end.
+	* libdwP.h (__libdw_dieabbrev): Call get_uleb128 with die->cu->endp.
+	* libdw_form.c (__libdw_form_val_compute_len): Call get_uleb128 with
+	endp.
+	* memory-access.h (__libdw_get_uleb128): Take an extra endp.
+	Don't call get_uleb128_step if out of data.
+	(__libdw_get_sleb128): Likewise for get_sleb128_step.
+
+2014-12-12  Mark Wielaard  <mjw@redhat.com>
+
+	* libdwP.h (struct Dwarf): Add fake_loc_cu.
+	(cu_data): Removed.
+	(DIE_OFFSET_FROM_CU_OFFSET): Don't use cu_data, use cu_sec_idx.
+	(__libdw_form_val_compute_len): Drop dbg and endp arguments.
+	(__libdw_form_val_len): Likewise.
+	* libdw_form.c (__libdw_form_val_compute_len): Likewise.
+	* libdw_findcu.c (__libdw_intern_next_unit): Don't use cu_data, use
+	the already found data buffer directly.
+	* dwarf_begin_elf.c (valid_p): Setup fake_loc_cu.
+	* dwarf_end.c (dwarf_end): Free fake_loc_cu.
+	* dwarf_child.c (__libdw_find_attr): Call __libdw_form_val_len with
+	just cu.
+	* dwarf_getattrs.c (dwarf_getattrs): Likewise.
+	* dwarf_formblock.c (dwarf_formblock): Add bounds checking.
+	* dwarf_getlocation_attr.c (attr_form_cu): New function.
+	(dwarf_getlocation_attr): Use attr_form_cu to set result->cu.
+	(getlocation): Handle empty blocks immediately.
+	* dwarf_getlocation_implicit_pointer.c (empty_cu): New static var.
+	(__libdw_empty_loc_attr): Drop cu argument, use empty_cu.
+	(dwarf_getlocation_implicit_pointer): Call __libdw_empty_loc_attr with
+	one argument.
+	* dwarf_getmacros.c (read_macros): Also setup startp and endp for
+	fake_cu. Call __libdw_form_val_len with just fake_cu.
+	* dwarf_formref_die.c (dwarf_formref_die): Don't use cu_data, get
+	datap and size directly from cu startp and endp.
+
+2014-12-11  Mark Wielaard  <mjw@redhat.com>
+
+	* libdw_findcu.c (__libdw_intern_next_unit): Sanity check offset.
+
+2014-12-13  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getaranges.c (compare_aranges): Make sure Dwarf_Addr
+	difference doesn't wrap around before returning as int.
+
+2014-12-11  Josh Stone  <jistone@redhat.com>
+
+	* dwarf_getsrclines.c (struct linelist): Add sequence.
+	(compare_lines): Take linelists, and break ties by sequence.
+	(read_srclines): Use linelists for sorting.
+	(read_srclines::add_new_line): Set sequence.
+
+2014-12-10  Josh Stone  <jistone@redhat.com>
+
+	* libdwP.h (Dwarf_CU): Add startp and endp boundaries.
+	* libdw_findcu.c (__libdw_intern_next_unit): Set startp and endp.
+	* dwarf_child.c (dwarf_child): Use cu->endp.
+	* dwarf_cuoffset.c (dwarf_cuoffset): Use cu->startp.
+	* dwarf_dieoffset.c (dwarf_dieoffset): Use cu->startp.
+	* dwarf_siblingof.c (dwarf_siblingof): Use both.
+
+2014-12-10  Josh Stone  <jistone@redhat.com>
+
+	* dwarf_hasattr.c (dwarf_hasattr): Just walk abbrev for presence.
+
+2014-12-10  Josh Stone  <jistone@redhat.com>
+
+	* libdwP.h (__libdw_dieabbrev): New die->abbrev lookup function.
+	* dwarf_child.c (__libdw_find_attr, dwarf_child): Use it.
+	* dwarf_getattrs.c (dwarf_getattrs): Likewise.
+	* dwarf_haschildren.c (dwarf_haschildren): Likewise.
+	* dwarf_tag.c (dwarf_tag): Likewise.
+
+2014-12-04  Mark Wielaard  <mjw@redhat.com>
+
+	* libdwP.h (__libdw_form_val_compute_len): Add endp argument.
+	(__libdw_form_val_len): Likewise and check len doesn't overflow.
+	* libdw_form.c (__libdw_form_val_compute_len): Likewise.
+	* dwarf_child.c (__libdw_find_attr): Call __libdw_form_val_len
+	with endp.
+	* dwarf_getattrs.c (dwarf_getattrs): Likewise.
+	* dwarf_getmacros.c (read_macros): Likewise and check for errors.
+
+2014-12-02  Petr Machata  <pmachata@redhat.com>
+
+	* dwarf_getmacros.c (token_from_offset, offset_from_token): New
+	helper functions.
+	(do_dwarf_getmacros_die): Merge into dwarf_getmacros.
+	* libdw.h (DWARF_GETMACROS_START): New macro.
+
+2014-11-27  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (libdw.so): Use textrel_check.
+
+2014-11-27  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getcfi_elf.c (getcfi_gnu_eh_frame): Initialize
+	search_table_entries and search_table_encoding.
+
+2014-11-24  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getsrclines.c (read_srclines): Check line_range is not zero
+	before usage.
+
+2014-11-23  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_attr.c (dwarf_attr): Check __libdw_find_attr return value.
+	* dwarf_hasattr.c (dwarf_hasattr): Likewise.
+	* dwarf_siblingof.c (dwarf_siblingof): Likewise.
+
+2014-11-23  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getabbrev.c (__libdw_getabbrev): Don't assert on bad DWARF.
+	Set libdw errno and return NULL.
+
+2014-11-24  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf.h (DW_LANG_C_plus_plus_11): Added.
+	(DW_LANG_C11): Likewise.
+	(DW_LANG_C_plus_plus_14): Likewise.
+	* dwarf_aggregate_size.c (array_size): Handle DW_LANG_C11,
+	DW_LANG_C_plus_plus_11, DW_LANG_C_plus_plus_14 and DW_LANG_Go
+	lower bound.
+	* dwarf_getfuncs.c (dwarf_getfuncs): Set c_cu to true for
+	DW_LANG_C11.
+
+2014-11-26  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf.h (DW_AT_noreturn): Added.
+
+2014-11-11  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_getsrclines.c (read_srclines): Do address_size comparison
+	explicitly as uint8_t.
+	(__libdw_getsrclines): Add internal_function to declaration.
+
+2014-09-10  Petr Machata  <pmachata@redhat.com>
+
+	* dwarf_macro_getparamcnt.c: New file.
+	* dwarf_macro_param.c: New file.
+	* dwarf_macro_getsrcfiles.c: New file.
+	* Makefile.am (libdw_a_SOURCES): Add the new files.
+	* libdwP.h (struct files_lines_s): New structure.
+	(DWARF_E_INVALID_OPCODE): New enumerator.
+	(struct Dwarf): New fields macro_ops, files_lines.
+	(Dwarf_Macro_Op_Proto, Dwarf_Macro_Op_Table): New structures for
+	keeping macro opcode prototypes in.
+	(Dwarf_Macro_s): Redefine from scratch.
+	(__libdw_getsrclines, __libdw_getcompdir, libdw_macro_nforms): New
+	internal interfaces.
+	* dwarf_error.c (errmsgs): Add a message for
+	DWARF_E_INVALID_OPCODE.
+	* dwarf_end.c (dwarf_end): Destroy struct Dwarf.macro_ops and
+	files_lines.
+	* libdw.h (dwarf_getmacros_off, dwarf_macro_getparamcnt)
+	(dwarf_macro_getsrcfiles, dwarf_macro_param): New public
+	interfaces.
+	* dwarf_getmacros.c (dwarf_getmacros_off): New function,
+	(get_offset_from, macro_op_compare, build_table)
+	(init_macinfo_table, get_macinfo_table, get_table_for_offset)
+	(cache_op_table, read_macros, gnu_macros_getmacros_off)
+	(macro_info_getmacros_off, do_dwarf_getmacros_die): New helper
+	functions.
+	(dwarf_getmacros): Adjust to dispatch to the new interfaces.
+	* dwarf_getsrclines.c (read_srclines): New function with guts
+	taken from dwarf_getsrclines.
+	(__libdw_getsrclines): Likewise.
+	(__libdw_getcompdir, files_lines_compare): New functions.
+	(dwarf_getsrclines): Make it dispatch to the new interfaces.
+	* dwarf_macro_param1.c (dwarf_macro_param1): Adjust to dispatch to
+	the new interfaces.
+	* dwarf_macro_param2.c (dwarf_macro_param2): Likewise.
+	* libdw.map (ELFUTILS_0.161): New. Add dwarf_getmacros_off,
+	dwarf_macro_getsrcfiles, dwarf_macro_getparamcnt, dwarf_macro_param.
+
+2014-10-06  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (libdw_a_SOURCES): Add dwarf_peel_type.c.
+	* dwarf_aggregate_size.c (get_type): Use dwarf_peel_type.
+	(aggregate_size): Likewise. Add old and new version.
+	* dwarf_peel_type.c: New file.
+	* libdw.h (dwarf_peel_type): New function declaration.
+	* libdwP.h (dwarf_peel_type): New internal declaration.
+	* libdw.map (ELFUTILS_0.161): New section.
+
+2014-10-15  Petr Machata  <pmachata@redhat.com>
+
+	* libdwP.h (struct Dwarf_Files_s.cu): Drop field.
+	* dwarf_getsrclines.c (dwarf_getsrclines): Don't set it.
+
+2014-10-05  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf.h: Add DW_AT_GNU_deleted.
+
+2014-10-02  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_aggregate_size.c (aggregate_size): Return CU address_size
+	for sizeless DW_TAG_pointer_type, DW_TAG_reference_type or
+	DW_TAG_rvalue_reference_type.
+
+2014-09-12  Petr Machata  <pmachata@redhat.com>
+
+	* memory-access.h (read_ubyte_unaligned_inc): Allow only 4- and
+	8-byte quantities.  Consequently, rename to...
+	(read_addr_unaligned_inc): ... this.
+	(read_sbyte_unaligned_inc, read_ubyte_unaligned): Drop.
+	(read_sbyte_unaligned): Drop.
+
+2014-09-10  Petr Machata  <pmachata@redhat.com>
+
+	* dwarf_getlocation.c (attr_ok): Also accept
+	DW_AT_GNU_call_site_value, DW_AT_GNU_call_site_data_value,
+	DW_AT_GNU_call_site_target, DW_AT_GNU_call_site_target_clobbered.
+
+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
+	when ENABLE_DWZ is defined.
+	* libdwP.h (__check_build_id): Only declare when ENABLE_DWZ is
+	defined.
+
+2012-08-16  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Add known-dwarf.h.
+	* dwarf.h (DW_LANG_Go): Update comment.
+	(DW_LANG_Mips_Assembler): Likewise.
+
+2012-06-27  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf.h: Add DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt.
+	* dwarf_begin.c (dwarf_begin): Add INTDEF.
+	* dwarf_begin_elf.c (__check_build_id): New internal_function.
+	(try_debugaltlink): New function.
+	(open_debugaltlink): Likewise.
+	(check_section): Try open_debugaltlink for .gnu_debugaltlink.
+	* dwarf_end.c (dwarf_end): Free the alternative Dwarf descriptor if
+	necessary.
+	* dwarf_error.c (errmsgs): Add DWARF_E_NO_ALT_DEBUGLINK.
+	* dwarf_formref.c (__libdw_formref): Using DW_FORM_GNU_ref_alt
+	is an error here.
+	* dwarf_formref_die.c (dwarf_formref_die): Handle DW_FORM_GNU_ref_alt.
+	* dwarf_formstring.c (dwarf_formstring): Handle DW_FORM_GNU_strp_alt.
+	* dwarf_formudata.c (__libdw_formptr): Adjust __libdw_read_offset
+	calls.
+	* dwarf_getpubnames.c (get_offsets): Adjust __libdw_read_offset call.
+	* libdwP.h: Add DWARF_E_NO_ALT_DEBUGLINK.
+	(struct Dwarf): Add alt_dwarf and free_alt fields.
+	(__libdw_read_offset): Add dbg_ret argument, use to check with
+	__libdw_offset_in_section.
+	(__check_build_id): New function declaration.
+	(dwarf_begin): Define as INTDECL.
+	* libdw_form.c (__libdw_form_val_len): Handle DW_FORM_GNU_ref_alt
+	and DW_FORM_GNU_strp_alt.
+
+2012-07-19  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf.h: Add DW_OP_GNU_parameter_ref.
+
+2012-07-24  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf.h: Correct spelling of DW_LANG_ObjC.
+	* dwarf_aggregate_size.c (array_size): Use correct spelling of
+	DW_LANG_ObjC.
+
+2012-07-24  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf.h: Add DW_ATE_UTF.
+
+2012-06-27  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf.h: Add DW_MACRO_GNU .debug_macro type encodings.
+
+2012-06-26  Mark Wielaard  <mjw@redhat.com>
+
+	* libdwP.h: Add IDX_debug_macro.
+	* dwarf.h: Add DW_AT_GNU_macros.
+	* dwarf_begin_elf.c (dwarf_scnnames): Add .debug_macro.
+	* dwarf_formudata.c (dwarf_formudata): Recognize DW_AT_GNU_macros.
+
+2012-04-27  Mark Wielaard  <mjw@redhat.com>
+
+	* libdw/dwarf_highpc.c (dwarf_highpc): Handle DW_AT_high_pc being
+	a constant offset from DW_AT_low_pc.
+
+2012-03-19  Tom Tromey  <tromey@redhat.com>
+
+	* libdw_findcu.c (findcu_cb): Move earlier.
+	(__libdw_intern_next_unit): Add new CU to search tree here...
+	(__libdw_findcu): ... not here.
+
 2012-01-31  Mark Wielaard  <mjw@redhat.com>
 
 	* dwarf_formudata.c (dwarf_formudata): Handle DW_FORM_sec_offset.
diff --git a/src/libdw/Makefile b/src/libdw/Makefile
new file mode 100644
index 0000000..4c1acaa
--- /dev/null
+++ b/src/libdw/Makefile
@@ -0,0 +1,986 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# libdw/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+	$(include_HEADERS) $(noinst_HEADERS) $(pkginclude_HEADERS) \
+	ChangeLog
+#am__append_1 = -fpic
+noinst_PROGRAMS = $(am__EXEEXT_1)
+subdir = libdw
+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 =
+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)$(libdir)" "$(DESTDIR)$(includedir)" \
+	"$(DESTDIR)$(pkgincludedir)"
+LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+am__v_AR_0 = @echo "  AR      " $@;
+am__v_AR_1 = 
+libdw_a_AR = $(AR) $(ARFLAGS)
+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_tag.$(OBJEXT) dwarf_error.$(OBJEXT) \
+	dwarf_nextcu.$(OBJEXT) dwarf_diename.$(OBJEXT) \
+	dwarf_offdie.$(OBJEXT) dwarf_attr.$(OBJEXT) \
+	dwarf_formstring.$(OBJEXT) dwarf_abbrev_hash.$(OBJEXT) \
+	dwarf_sig8_hash.$(OBJEXT) dwarf_attr_integrate.$(OBJEXT) \
+	dwarf_hasattr_integrate.$(OBJEXT) dwarf_child.$(OBJEXT) \
+	dwarf_haschildren.$(OBJEXT) dwarf_formaddr.$(OBJEXT) \
+	dwarf_formudata.$(OBJEXT) dwarf_formsdata.$(OBJEXT) \
+	dwarf_lowpc.$(OBJEXT) dwarf_entrypc.$(OBJEXT) \
+	dwarf_haspc.$(OBJEXT) dwarf_highpc.$(OBJEXT) \
+	dwarf_ranges.$(OBJEXT) dwarf_formref.$(OBJEXT) \
+	dwarf_formref_die.$(OBJEXT) dwarf_siblingof.$(OBJEXT) \
+	dwarf_dieoffset.$(OBJEXT) dwarf_cuoffset.$(OBJEXT) \
+	dwarf_diecu.$(OBJEXT) dwarf_hasattr.$(OBJEXT) \
+	dwarf_hasform.$(OBJEXT) dwarf_whatform.$(OBJEXT) \
+	dwarf_whatattr.$(OBJEXT) dwarf_bytesize.$(OBJEXT) \
+	dwarf_arrayorder.$(OBJEXT) dwarf_bitsize.$(OBJEXT) \
+	dwarf_bitoffset.$(OBJEXT) dwarf_srclang.$(OBJEXT) \
+	dwarf_getabbrevtag.$(OBJEXT) dwarf_getabbrevcode.$(OBJEXT) \
+	dwarf_abbrevhaschildren.$(OBJEXT) dwarf_getattrcnt.$(OBJEXT) \
+	dwarf_getabbrevattr.$(OBJEXT) dwarf_getsrclines.$(OBJEXT) \
+	dwarf_getsrc_die.$(OBJEXT) dwarf_getscopes.$(OBJEXT) \
+	dwarf_getscopes_die.$(OBJEXT) dwarf_getscopevar.$(OBJEXT) \
+	dwarf_linesrc.$(OBJEXT) dwarf_lineno.$(OBJEXT) \
+	dwarf_lineaddr.$(OBJEXT) dwarf_linecol.$(OBJEXT) \
+	dwarf_linebeginstatement.$(OBJEXT) \
+	dwarf_lineendsequence.$(OBJEXT) dwarf_lineblock.$(OBJEXT) \
+	dwarf_lineprologueend.$(OBJEXT) \
+	dwarf_lineepiloguebegin.$(OBJEXT) dwarf_lineisa.$(OBJEXT) \
+	dwarf_linediscriminator.$(OBJEXT) dwarf_lineop_index.$(OBJEXT) \
+	dwarf_onesrcline.$(OBJEXT) dwarf_formblock.$(OBJEXT) \
+	dwarf_getsrcfiles.$(OBJEXT) dwarf_filesrc.$(OBJEXT) \
+	dwarf_getsrcdirs.$(OBJEXT) dwarf_getlocation.$(OBJEXT) \
+	dwarf_getstring.$(OBJEXT) dwarf_offabbrev.$(OBJEXT) \
+	dwarf_getaranges.$(OBJEXT) dwarf_onearange.$(OBJEXT) \
+	dwarf_getarangeinfo.$(OBJEXT) dwarf_getarange_addr.$(OBJEXT) \
+	dwarf_getattrs.$(OBJEXT) dwarf_formflag.$(OBJEXT) \
+	dwarf_getmacros.$(OBJEXT) dwarf_macro_getparamcnt.$(OBJEXT) \
+	dwarf_macro_opcode.$(OBJEXT) dwarf_macro_param.$(OBJEXT) \
+	dwarf_macro_param1.$(OBJEXT) dwarf_macro_param2.$(OBJEXT) \
+	dwarf_macro_getsrcfiles.$(OBJEXT) dwarf_addrdie.$(OBJEXT) \
+	dwarf_getfuncs.$(OBJEXT) dwarf_decl_file.$(OBJEXT) \
+	dwarf_decl_line.$(OBJEXT) dwarf_decl_column.$(OBJEXT) \
+	dwarf_func_inline.$(OBJEXT) dwarf_getsrc_file.$(OBJEXT) \
+	libdw_findcu.$(OBJEXT) libdw_form.$(OBJEXT) \
+	libdw_alloc.$(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_die.$(OBJEXT) \
+	dwarf_getlocation_attr.$(OBJEXT) dwarf_getalt.$(OBJEXT) \
+	dwarf_setalt.$(OBJEXT) dwarf_cu_getdwarf.$(OBJEXT) \
+	dwarf_cu_die.$(OBJEXT) dwarf_peel_type.$(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)
+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_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 1
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/libdw
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/libdw
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+	-I$(srcdir)/../libelf
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
+	$($(*F)_no_Werror),,-Werror) $(if \
+	$($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) \
+	$(am__append_1)
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+CLEANFILES = *.gcno *.gcda
+textrel_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
+lib_LIBRARIES = libdw.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_getpubnames.c dwarf_getabbrev.c dwarf_tag.c \
+		  dwarf_error.c dwarf_nextcu.c dwarf_diename.c dwarf_offdie.c \
+		  dwarf_attr.c dwarf_formstring.c \
+		  dwarf_abbrev_hash.c dwarf_sig8_hash.c \
+		  dwarf_attr_integrate.c dwarf_hasattr_integrate.c \
+		  dwarf_child.c dwarf_haschildren.c dwarf_formaddr.c \
+		  dwarf_formudata.c dwarf_formsdata.c dwarf_lowpc.c \
+		  dwarf_entrypc.c dwarf_haspc.c dwarf_highpc.c dwarf_ranges.c \
+		  dwarf_formref.c dwarf_formref_die.c dwarf_siblingof.c \
+		  dwarf_dieoffset.c dwarf_cuoffset.c dwarf_diecu.c \
+		  dwarf_hasattr.c dwarf_hasform.c \
+		  dwarf_whatform.c dwarf_whatattr.c \
+		  dwarf_bytesize.c dwarf_arrayorder.c dwarf_bitsize.c \
+		  dwarf_bitoffset.c dwarf_srclang.c dwarf_getabbrevtag.c \
+		  dwarf_getabbrevcode.c dwarf_abbrevhaschildren.c \
+		  dwarf_getattrcnt.c dwarf_getabbrevattr.c \
+		  dwarf_getsrclines.c dwarf_getsrc_die.c \
+		  dwarf_getscopes.c dwarf_getscopes_die.c dwarf_getscopevar.c \
+		  dwarf_linesrc.c dwarf_lineno.c dwarf_lineaddr.c \
+		  dwarf_linecol.c dwarf_linebeginstatement.c \
+		  dwarf_lineendsequence.c dwarf_lineblock.c \
+		  dwarf_lineprologueend.c dwarf_lineepiloguebegin.c \
+		  dwarf_lineisa.c dwarf_linediscriminator.c \
+		  dwarf_lineop_index.c \
+		  dwarf_onesrcline.c dwarf_formblock.c \
+		  dwarf_getsrcfiles.c dwarf_filesrc.c dwarf_getsrcdirs.c \
+		  dwarf_getlocation.c dwarf_getstring.c dwarf_offabbrev.c \
+		  dwarf_getaranges.c dwarf_onearange.c dwarf_getarangeinfo.c \
+		  dwarf_getarange_addr.c dwarf_getattrs.c dwarf_formflag.c \
+		  dwarf_getmacros.c dwarf_macro_getparamcnt.c	\
+		  dwarf_macro_opcode.c dwarf_macro_param.c	\
+		  dwarf_macro_param1.c dwarf_macro_param2.c	\
+		  dwarf_macro_getsrcfiles.c			\
+		  dwarf_addrdie.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 \
+		  libdw_visit_scopes.c \
+		  dwarf_entry_breakpoints.c \
+		  dwarf_next_cfi.c \
+		  cie.c fde.c cfi.c frame-cache.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_getlocation_die.c dwarf_getlocation_attr.c \
+		  dwarf_getalt.c dwarf_setalt.c dwarf_cu_getdwarf.c \
+		  dwarf_cu_die.c dwarf_peel_type.c
+
+#BUILT_SOURCES = $(srcdir)/known-dwarf.h
+#MAINTAINERCLEANFILES = $(srcdir)/known-dwarf.h
+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
+
+EXTRA_DIST = libdw.map known-dwarf.h
+MOSTLYCLEANFILES = $(am_libdw_pic_a_OBJECTS) libdw.so.$(VERSION)
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: # $(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 libdw/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits libdw/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLIBRARIES: $(lib_LIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  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)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  if test -f $$p; then \
+	    $(am__strip_dir) \
+	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+	  else :; fi; \
+	done
+
+uninstall-libLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libdw.a: $(libdw_a_OBJECTS) $(libdw_a_DEPENDENCIES) $(EXTRA_libdw_a_DEPENDENCIES) 
+	$(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) 
+	$(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)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/cfi.Po
+include ./$(DEPDIR)/cie.Po
+include ./$(DEPDIR)/dwarf_abbrev_hash.Po
+include ./$(DEPDIR)/dwarf_abbrevhaschildren.Po
+include ./$(DEPDIR)/dwarf_addrdie.Po
+include ./$(DEPDIR)/dwarf_aggregate_size.Po
+include ./$(DEPDIR)/dwarf_arrayorder.Po
+include ./$(DEPDIR)/dwarf_attr.Po
+include ./$(DEPDIR)/dwarf_attr_integrate.Po
+include ./$(DEPDIR)/dwarf_begin.Po
+include ./$(DEPDIR)/dwarf_begin_elf.Po
+include ./$(DEPDIR)/dwarf_bitoffset.Po
+include ./$(DEPDIR)/dwarf_bitsize.Po
+include ./$(DEPDIR)/dwarf_bytesize.Po
+include ./$(DEPDIR)/dwarf_cfi_addrframe.Po
+include ./$(DEPDIR)/dwarf_cfi_end.Po
+include ./$(DEPDIR)/dwarf_child.Po
+include ./$(DEPDIR)/dwarf_cu_die.Po
+include ./$(DEPDIR)/dwarf_cu_getdwarf.Po
+include ./$(DEPDIR)/dwarf_cuoffset.Po
+include ./$(DEPDIR)/dwarf_decl_column.Po
+include ./$(DEPDIR)/dwarf_decl_file.Po
+include ./$(DEPDIR)/dwarf_decl_line.Po
+include ./$(DEPDIR)/dwarf_diecu.Po
+include ./$(DEPDIR)/dwarf_diename.Po
+include ./$(DEPDIR)/dwarf_dieoffset.Po
+include ./$(DEPDIR)/dwarf_end.Po
+include ./$(DEPDIR)/dwarf_entry_breakpoints.Po
+include ./$(DEPDIR)/dwarf_entrypc.Po
+include ./$(DEPDIR)/dwarf_error.Po
+include ./$(DEPDIR)/dwarf_filesrc.Po
+include ./$(DEPDIR)/dwarf_formaddr.Po
+include ./$(DEPDIR)/dwarf_formblock.Po
+include ./$(DEPDIR)/dwarf_formflag.Po
+include ./$(DEPDIR)/dwarf_formref.Po
+include ./$(DEPDIR)/dwarf_formref_die.Po
+include ./$(DEPDIR)/dwarf_formsdata.Po
+include ./$(DEPDIR)/dwarf_formstring.Po
+include ./$(DEPDIR)/dwarf_formudata.Po
+include ./$(DEPDIR)/dwarf_frame_cfa.Po
+include ./$(DEPDIR)/dwarf_frame_info.Po
+include ./$(DEPDIR)/dwarf_frame_register.Po
+include ./$(DEPDIR)/dwarf_func_inline.Po
+include ./$(DEPDIR)/dwarf_getabbrev.Po
+include ./$(DEPDIR)/dwarf_getabbrevattr.Po
+include ./$(DEPDIR)/dwarf_getabbrevcode.Po
+include ./$(DEPDIR)/dwarf_getabbrevtag.Po
+include ./$(DEPDIR)/dwarf_getalt.Po
+include ./$(DEPDIR)/dwarf_getarange_addr.Po
+include ./$(DEPDIR)/dwarf_getarangeinfo.Po
+include ./$(DEPDIR)/dwarf_getaranges.Po
+include ./$(DEPDIR)/dwarf_getattrcnt.Po
+include ./$(DEPDIR)/dwarf_getattrs.Po
+include ./$(DEPDIR)/dwarf_getcfi.Po
+include ./$(DEPDIR)/dwarf_getcfi_elf.Po
+include ./$(DEPDIR)/dwarf_getelf.Po
+include ./$(DEPDIR)/dwarf_getfuncs.Po
+include ./$(DEPDIR)/dwarf_getlocation.Po
+include ./$(DEPDIR)/dwarf_getlocation_attr.Po
+include ./$(DEPDIR)/dwarf_getlocation_die.Po
+include ./$(DEPDIR)/dwarf_getlocation_implicit_pointer.Po
+include ./$(DEPDIR)/dwarf_getmacros.Po
+include ./$(DEPDIR)/dwarf_getpubnames.Po
+include ./$(DEPDIR)/dwarf_getscopes.Po
+include ./$(DEPDIR)/dwarf_getscopes_die.Po
+include ./$(DEPDIR)/dwarf_getscopevar.Po
+include ./$(DEPDIR)/dwarf_getsrc_die.Po
+include ./$(DEPDIR)/dwarf_getsrc_file.Po
+include ./$(DEPDIR)/dwarf_getsrcdirs.Po
+include ./$(DEPDIR)/dwarf_getsrcfiles.Po
+include ./$(DEPDIR)/dwarf_getsrclines.Po
+include ./$(DEPDIR)/dwarf_getstring.Po
+include ./$(DEPDIR)/dwarf_hasattr.Po
+include ./$(DEPDIR)/dwarf_hasattr_integrate.Po
+include ./$(DEPDIR)/dwarf_haschildren.Po
+include ./$(DEPDIR)/dwarf_hasform.Po
+include ./$(DEPDIR)/dwarf_haspc.Po
+include ./$(DEPDIR)/dwarf_highpc.Po
+include ./$(DEPDIR)/dwarf_lineaddr.Po
+include ./$(DEPDIR)/dwarf_linebeginstatement.Po
+include ./$(DEPDIR)/dwarf_lineblock.Po
+include ./$(DEPDIR)/dwarf_linecol.Po
+include ./$(DEPDIR)/dwarf_linediscriminator.Po
+include ./$(DEPDIR)/dwarf_lineendsequence.Po
+include ./$(DEPDIR)/dwarf_lineepiloguebegin.Po
+include ./$(DEPDIR)/dwarf_lineisa.Po
+include ./$(DEPDIR)/dwarf_lineno.Po
+include ./$(DEPDIR)/dwarf_lineop_index.Po
+include ./$(DEPDIR)/dwarf_lineprologueend.Po
+include ./$(DEPDIR)/dwarf_linesrc.Po
+include ./$(DEPDIR)/dwarf_lowpc.Po
+include ./$(DEPDIR)/dwarf_macro_getparamcnt.Po
+include ./$(DEPDIR)/dwarf_macro_getsrcfiles.Po
+include ./$(DEPDIR)/dwarf_macro_opcode.Po
+include ./$(DEPDIR)/dwarf_macro_param.Po
+include ./$(DEPDIR)/dwarf_macro_param1.Po
+include ./$(DEPDIR)/dwarf_macro_param2.Po
+include ./$(DEPDIR)/dwarf_next_cfi.Po
+include ./$(DEPDIR)/dwarf_nextcu.Po
+include ./$(DEPDIR)/dwarf_offabbrev.Po
+include ./$(DEPDIR)/dwarf_offdie.Po
+include ./$(DEPDIR)/dwarf_onearange.Po
+include ./$(DEPDIR)/dwarf_onesrcline.Po
+include ./$(DEPDIR)/dwarf_peel_type.Po
+include ./$(DEPDIR)/dwarf_ranges.Po
+include ./$(DEPDIR)/dwarf_setalt.Po
+include ./$(DEPDIR)/dwarf_siblingof.Po
+include ./$(DEPDIR)/dwarf_sig8_hash.Po
+include ./$(DEPDIR)/dwarf_srclang.Po
+include ./$(DEPDIR)/dwarf_tag.Po
+include ./$(DEPDIR)/dwarf_whatattr.Po
+include ./$(DEPDIR)/dwarf_whatform.Po
+include ./$(DEPDIR)/fde.Po
+include ./$(DEPDIR)/frame-cache.Po
+include ./$(DEPDIR)/libdw_alloc.Po
+include ./$(DEPDIR)/libdw_findcu.Po
+include ./$(DEPDIR)/libdw_form.Po
+include ./$(DEPDIR)/libdw_visit_scopes.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+install-includeHEADERS: $(include_HEADERS)
+	@$(NORMAL_INSTALL)
+	@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"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+	done
+
+uninstall-includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
+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: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(pkgincludedir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install-exec: install-exec-am
+install-data: install-data-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:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+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."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \
+	clean-noinstPROGRAMS 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-includeHEADERS install-pkgincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLIBRARIES
+
+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-includeHEADERS uninstall-libLIBRARIES \
+	uninstall-pkgincludeHEADERS
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libLIBRARIES 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-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
+
+
+%.os: %.c %.o
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
+#$(srcdir)/known-dwarf.h: $(top_srcdir)/config/known-dwarf.awk $(srcdir)/dwarf.h
+#	gawk -f $^ > $@.new
+#	mv -f $@.new $@
+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.
+	$(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)
+	@$(textrel_check)
+	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.
+.NOEXPORT:
diff --git a/src/libdw/Makefile.am b/src/libdw/Makefile.am
index 1efda35..887da6b 100644
--- a/src/libdw/Makefile.am
+++ b/src/libdw/Makefile.am
@@ -1,42 +1,42 @@
 ## Process this file with automake to create Makefile.in
 ##
-## Copyright (C) 2002-2010 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## Copyright (C) 2002-2010, 2012, 2014 Red Hat, Inc.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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
-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
@@ -71,12 +71,14 @@
 		  dwarf_getlocation.c dwarf_getstring.c dwarf_offabbrev.c \
 		  dwarf_getaranges.c dwarf_onearange.c dwarf_getarangeinfo.c \
 		  dwarf_getarange_addr.c dwarf_getattrs.c dwarf_formflag.c \
-		  dwarf_getmacros.c dwarf_macro_opcode.c dwarf_macro_param1.c \
-		  dwarf_macro_param2.c dwarf_addrdie.c \
-		  dwarf_getfuncs.c  \
+		  dwarf_getmacros.c dwarf_macro_getparamcnt.c	\
+		  dwarf_macro_opcode.c dwarf_macro_param.c	\
+		  dwarf_macro_param1.c dwarf_macro_param2.c	\
+		  dwarf_macro_getsrcfiles.c			\
+		  dwarf_addrdie.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 \
@@ -84,7 +86,10 @@
 		  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 dwarf_peel_type.c
 
 if MAINTAINER_MODE
 BUILT_SOURCES = $(srcdir)/known-dwarf.h
@@ -94,12 +99,11 @@
 	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
@@ -109,7 +113,7 @@
 		-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
+	@$(textrel_check)
 	ln -fs $@ $@.$(VERSION)
 
 install: install-am libdw.so
@@ -123,13 +127,16 @@
 	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
 
-EXTRA_DIST = libdw.map
+EXTRA_DIST = libdw.map known-dwarf.h
 
 MOSTLYCLEANFILES = $(am_libdw_pic_a_OBJECTS) libdw.so.$(VERSION)
diff --git a/src/libdw/Makefile.in b/src/libdw/Makefile.in
index 6cbfeaa..5e348eb 100644
--- a/src/libdw/Makefile.in
+++ b/src/libdw/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -18,6 +17,51 @@
 
 
 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@
@@ -36,16 +80,16 @@
 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) \
@@ -75,14 +119,23 @@
 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)$(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) \
@@ -123,14 +176,15 @@
 	dwarf_getaranges.$(OBJEXT) dwarf_onearange.$(OBJEXT) \
 	dwarf_getarangeinfo.$(OBJEXT) dwarf_getarange_addr.$(OBJEXT) \
 	dwarf_getattrs.$(OBJEXT) dwarf_formflag.$(OBJEXT) \
-	dwarf_getmacros.$(OBJEXT) dwarf_macro_opcode.$(OBJEXT) \
+	dwarf_getmacros.$(OBJEXT) dwarf_macro_getparamcnt.$(OBJEXT) \
+	dwarf_macro_opcode.$(OBJEXT) dwarf_macro_param.$(OBJEXT) \
 	dwarf_macro_param1.$(OBJEXT) dwarf_macro_param2.$(OBJEXT) \
-	dwarf_addrdie.$(OBJEXT) dwarf_getfuncs.$(OBJEXT) \
-	dwarf_decl_file.$(OBJEXT) dwarf_decl_line.$(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_macro_getsrcfiles.$(OBJEXT) dwarf_addrdie.$(OBJEXT) \
+	dwarf_getfuncs.$(OBJEXT) dwarf_decl_file.$(OBJEXT) \
+	dwarf_decl_line.$(OBJEXT) dwarf_decl_column.$(OBJEXT) \
+	dwarf_func_inline.$(OBJEXT) dwarf_getsrc_file.$(OBJEXT) \
+	libdw_findcu.$(OBJEXT) libdw_form.$(OBJEXT) \
+	libdw_alloc.$(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) \
@@ -138,54 +192,106 @@
 	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) dwarf_peel_type.$(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@
@@ -206,6 +312,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -216,6 +323,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -230,6 +338,7 @@
 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@
@@ -279,22 +388,20 @@
 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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 \
@@ -327,12 +434,14 @@
 		  dwarf_getlocation.c dwarf_getstring.c dwarf_offabbrev.c \
 		  dwarf_getaranges.c dwarf_onearange.c dwarf_getarangeinfo.c \
 		  dwarf_getarange_addr.c dwarf_getattrs.c dwarf_formflag.c \
-		  dwarf_getmacros.c dwarf_macro_opcode.c dwarf_macro_param1.c \
-		  dwarf_macro_param2.c dwarf_addrdie.c \
-		  dwarf_getfuncs.c  \
+		  dwarf_getmacros.c dwarf_macro_getparamcnt.c	\
+		  dwarf_macro_opcode.c dwarf_macro_param.c	\
+		  dwarf_macro_param1.c dwarf_macro_param2.c	\
+		  dwarf_macro_getsrcfiles.c			\
+		  dwarf_addrdie.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 \
@@ -340,18 +449,24 @@
 		  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 dwarf_peel_type.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
 
-EXTRA_DIST = libdw.map
+EXTRA_DIST = libdw.map known-dwarf.h
 MOSTLYCLEANFILES = $(am_libdw_pic_a_OBJECTS) libdw.so.$(VERSION)
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -379,6 +494,7 @@
 	    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
@@ -390,7 +506,6 @@
 $(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 \
@@ -398,6 +513,8 @@
 	  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)
@@ -414,29 +531,26 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
-	cd "$(DESTDIR)$(libdir)" && rm -f $$files
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
 
 clean-libLIBRARIES:
 	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libdw.a: $(libdw_a_OBJECTS) $(libdw_a_DEPENDENCIES) 
-	-rm -f libdw.a
-	$(libdw_a_AR) libdw.a $(libdw_a_OBJECTS) $(libdw_a_LIBADD)
-	$(RANLIB) libdw.a
-libdw_pic.a: $(libdw_pic_a_OBJECTS) $(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
+
+libdw.a: $(libdw_a_OBJECTS) $(libdw_a_DEPENDENCIES) $(EXTRA_libdw_a_DEPENDENCIES) 
+	$(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) 
+	$(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) 
-@MUDFLAP_TRUE@	@rm -f libdw.so$(EXEEXT)
-@MUDFLAP_TRUE@	$(LINK) $(libdw_so_OBJECTS) $(libdw_so_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -461,6 +575,8 @@
 @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@
@@ -489,6 +605,7 @@
 @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@
@@ -499,6 +616,8 @@
 @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@
@@ -530,7 +649,10 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lineprologueend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_linesrc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lowpc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_macro_getparamcnt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_macro_getsrcfiles.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_macro_opcode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_macro_param.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_macro_param1.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_macro_param2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_next_cfi.Po@am__quote@
@@ -539,7 +661,9 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_offdie.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_peel_type.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@
@@ -552,25 +676,27 @@
 @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 -o $@ $<
 
 .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 -o $@ `$(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"; \
@@ -584,13 +710,14 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
+	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"; \
@@ -604,30 +731,17 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
+	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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -639,15 +753,11 @@
 	      $$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
@@ -656,6 +766,21 @@
 	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
@@ -698,21 +823,23 @@
 	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
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
 	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
@@ -801,19 +928,20 @@
 
 .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
 
 
@@ -828,30 +956,30 @@
 @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)
+	$(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)
+	@$(textrel_check)
+	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
+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
 
-@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
+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.
diff --git a/src/libdw/cfi.c b/src/libdw/cfi.c
index aeb48e6..632e91d 100644
--- a/src/libdw/cfi.c
+++ b/src/libdw/cfi.c
@@ -1,51 +1,30 @@
 /* CFI program execution.
-   Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -56,6 +35,7 @@
 #include "cfi.h"
 #include "memory-access.h"
 #include "encoded-value.h"
+#include "system.h"
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
@@ -110,6 +90,9 @@
 	    }
 	  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;
 	    }
@@ -149,12 +132,15 @@
 	  break;
 
 	case DW_CFA_advance_loc2:
+	  cfi_assert (program + 2 <= end);
 	  operand = read_2ubyte_unaligned_inc (cache, program);
 	  goto advance_loc;
 	case DW_CFA_advance_loc4:
+	  cfi_assert (program + 4 <= end);
 	  operand = read_4ubyte_unaligned_inc (cache, program);
 	  goto advance_loc;
 	case DW_CFA_MIPS_advance_loc8:
+	  cfi_assert (program + 8 <= end);
 	  operand = read_8ubyte_unaligned_inc (cache, program);
 	  goto advance_loc;
 
@@ -170,8 +156,9 @@
 	     switch block for the row-copying (LOC-moving) cases above.  */
 
 	case DW_CFA_def_cfa:
-	  get_uleb128 (operand, program);
-	  get_uleb128 (offset, program);
+	  get_uleb128 (operand, program, end);
+	  cfi_assert (program < end);
+	  get_uleb128 (offset, program, end);
 	def_cfa:
 	  fs->cfa_rule = cfa_offset;
 	  fs->cfa_val_reg = operand;
@@ -182,32 +169,33 @@
 	  continue;
 
 	case DW_CFA_def_cfa_register:
-	  get_uleb128 (regno, program);
+	  get_uleb128 (regno, program, end);
 	  require_cfa_offset ();
 	  fs->cfa_val_reg = regno;
 	  continue;
 
 	case DW_CFA_def_cfa_sf:
-	  get_uleb128 (operand, program);
-	  get_sleb128 (sf_offset, program);
+	  get_uleb128 (operand, program, end);
+	  cfi_assert (program < end);
+	  get_sleb128 (sf_offset, program, end);
 	  offset = sf_offset * cie->data_alignment_factor;
 	  goto def_cfa;
 
 	case DW_CFA_def_cfa_offset:
-	  get_uleb128 (offset, program);
+	  get_uleb128 (offset, program, end);
 	def_cfa_offset:
 	  require_cfa_offset ();
 	  fs->cfa_val_offset = offset;
 	  continue;
 
 	case DW_CFA_def_cfa_offset_sf:
-	  get_sleb128 (sf_offset, program);
+	  get_sleb128 (sf_offset, program, end);
 	  offset = sf_offset * cie->data_alignment_factor;
 	  goto def_cfa_offset;
 
 	case DW_CFA_def_cfa_expression:
 	  /* DW_FORM_block is a ULEB128 length followed by that many bytes.  */
-	  get_uleb128 (operand, program);
+	  get_uleb128 (operand, program, end);
 	  cfi_assert (operand <= (Dwarf_Word) (end - program));
 	  fs->cfa_rule = cfa_expr;
 	  fs->cfa_data.expr.data = (unsigned char *) program;
@@ -216,80 +204,90 @@
 	  continue;
 
 	case DW_CFA_undefined:
-	  get_uleb128 (regno, program);
+	  get_uleb128 (regno, program, end);
 	  register_rule (regno, undefined, 0);
 	  continue;
 
 	case DW_CFA_same_value:
-	  get_uleb128 (regno, program);
+	  get_uleb128 (regno, program, end);
 	  register_rule (regno, same_value, 0);
 	  continue;
 
 	case DW_CFA_offset_extended:
-	  get_uleb128 (operand, program);
+	  get_uleb128 (operand, program, end);
+	  cfi_assert (program < end);
 	case DW_CFA_offset + 0 ... DW_CFA_offset + CFI_PRIMARY_MAX:
-	  get_uleb128 (offset, program);
+	  get_uleb128 (offset, program, end);
 	  offset *= cie->data_alignment_factor;
 	offset_extended:
 	  register_rule (operand, offset, offset);
 	  continue;
 
 	case DW_CFA_offset_extended_sf:
-	  get_uleb128 (operand, program);
-	  get_sleb128 (sf_offset, program);
+	  get_uleb128 (operand, program, end);
+	  get_sleb128 (sf_offset, program, end);
 	offset_extended_sf:
 	  offset = sf_offset * cie->data_alignment_factor;
 	  goto offset_extended;
 
 	case DW_CFA_GNU_negative_offset_extended:
 	  /* GNU extension obsoleted by DW_CFA_offset_extended_sf.  */
-	  get_uleb128 (operand, program);
-	  get_uleb128 (offset, program);
+	  get_uleb128 (operand, program, end);
+	  cfi_assert (program < end);
+	  get_uleb128 (offset, program, end);
 	  sf_offset = -offset;
 	  goto offset_extended_sf;
 
 	case DW_CFA_val_offset:
-	  get_uleb128 (operand, program);
-	  get_uleb128 (offset, program);
+	  get_uleb128 (operand, program, end);
+	  cfi_assert (program < end);
+	  get_uleb128 (offset, program, end);
 	  offset *= cie->data_alignment_factor;
 	val_offset:
 	  register_rule (operand, val_offset, offset);
 	  continue;
 
 	case DW_CFA_val_offset_sf:
-	  get_uleb128 (operand, program);
-	  get_sleb128 (sf_offset, program);
+	  get_uleb128 (operand, program, end);
+	  cfi_assert (program < end);
+	  get_sleb128 (sf_offset, program, end);
 	  offset = sf_offset * cie->data_alignment_factor;
 	  goto val_offset;
 
 	case DW_CFA_register:
-	  get_uleb128 (regno, program);
-	  get_uleb128 (operand, program);
+	  get_uleb128 (regno, program, end);
+	  cfi_assert (program < end);
+	  get_uleb128 (operand, program, end);
 	  register_rule (regno, register, operand);
 	  continue;
 
 	case DW_CFA_expression:
-	  get_uleb128 (regno, program);
+	  /* Expression rule relies on section data, abi_cfi cannot use it.  */
+	  assert (! abi_cfi);
+	  get_uleb128 (regno, program, end);
 	  offset = program - (const uint8_t *) cache->data->d.d_buf;
 	  /* DW_FORM_block is a ULEB128 length followed by that many bytes.  */
-	  get_uleb128 (operand, program);
+	  cfi_assert (program < end);
+	  get_uleb128 (operand, program, end);
 	  cfi_assert (operand <= (Dwarf_Word) (end - program));
 	  program += operand;
 	  register_rule (regno, expression, offset);
 	  continue;
 
 	case DW_CFA_val_expression:
-	  get_uleb128 (regno, program);
+	  /* Expression rule relies on section data, abi_cfi cannot use it.  */
+	  assert (! abi_cfi);
+	  get_uleb128 (regno, program, end);
 	  /* DW_FORM_block is a ULEB128 length followed by that many bytes.  */
 	  offset = program - (const uint8_t *) cache->data->d.d_buf;
-	  get_uleb128 (operand, program);
+	  get_uleb128 (operand, program, end);
 	  cfi_assert (operand <= (Dwarf_Word) (end - program));
 	  program += operand;
 	  register_rule (regno, val_expression, offset);
 	  continue;
 
 	case DW_CFA_restore_extended:
-	  get_uleb128 (operand, program);
+	  get_uleb128 (operand, program, end);
 	case DW_CFA_restore + 0 ... DW_CFA_restore + CFI_PRIMARY_MAX:
 
 	  if (unlikely (abi_cfi) && likely (opcode == DW_CFA_restore))
@@ -360,7 +358,7 @@
 
 	case DW_CFA_GNU_args_size:
 	  /* XXX is this useful for anything? */
-	  get_uleb128 (operand, program);
+	  get_uleb128 (operand, program, end);
 	  continue;
 
 	default:
diff --git a/src/libdw/cfi.h b/src/libdw/cfi.h
index ef9cd7e..98ac6cf 100644
--- a/src/libdw/cfi.h
+++ b/src/libdw/cfi.h
@@ -1,51 +1,30 @@
 /* Internal definitions for libdw CFI interpreter.
-   Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009-2010, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _UNWINDP_H
 #define _UNWINDP_H 1
@@ -171,8 +150,8 @@
   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).  */
diff --git a/src/libdw/cie.c b/src/libdw/cie.c
index 7c93f55..1b0aae7 100644
--- a/src/libdw/cie.c
+++ b/src/libdw/cie.c
@@ -1,51 +1,30 @@
 /* CIE reading.
    Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf.h b/src/libdw/dwarf.h
index e6a8367..da8cf3a 100644
--- a/src/libdw/dwarf.h
+++ b/src/libdw/dwarf.h
@@ -1,51 +1,30 @@
 /* This file defines standard DWARF types, structures, and macros.
-   Copyright (C) 2000-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2011, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _DWARF_H
 #define	_DWARF_H 1
@@ -108,7 +87,7 @@
     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,
@@ -242,6 +221,9 @@
     DW_AT_enum_class = 0x6d,
     DW_AT_linkage_name = 0x6e,
 
+    /* DWARF5 attribute values.  */
+    DW_AT_noreturn = 0x87,
+
     DW_AT_lo_user = 0x2000,
 
     DW_AT_MIPS_fde = 0x2001,
@@ -287,6 +269,8 @@
     DW_AT_GNU_all_tail_call_sites = 0x2116,
     DW_AT_GNU_all_call_sites = 0x2117,
     DW_AT_GNU_all_source_call_sites = 0x2118,
+    DW_AT_GNU_macros = 0x2119,
+    DW_AT_GNU_deleted = 0x211a,
 
     DW_AT_hi_user = 0x3fff
   };
@@ -319,7 +303,10 @@
     DW_FORM_sec_offset = 0x17,
     DW_FORM_exprloc = 0x18,
     DW_FORM_flag_present = 0x19,
-    DW_FORM_ref_sig8 = 0x20
+    DW_FORM_ref_sig8 = 0x20,
+
+    DW_FORM_GNU_ref_alt = 0x1f20, /* offset in alternate .debuginfo.  */
+    DW_FORM_GNU_strp_alt = 0x1f21 /* offset in alternate .debug_str. */
   };
 
 
@@ -492,6 +479,7 @@
     DW_OP_GNU_deref_type = 0xf6,
     DW_OP_GNU_convert = 0xf7,
     DW_OP_GNU_reinterpret = 0xf9,
+    DW_OP_GNU_parameter_ref = 0xfa,
 
     DW_OP_lo_user = 0xe0,	/* Implementation-defined range start.  */
     DW_OP_hi_user = 0xff	/* Implementation-defined range end.  */
@@ -517,6 +505,7 @@
     DW_ATE_signed_fixed = 0xd,
     DW_ATE_unsigned_fixed = 0xe,
     DW_ATE_decimal_float = 0xf,
+    DW_ATE_UTF = 0x10,
 
     DW_ATE_lo_user = 0x80,
     DW_ATE_hi_user = 0xff
@@ -591,15 +580,19 @@
     DW_LANG_Ada95 = 0x000d,	     /* ISO Ada:1995 */
     DW_LANG_Fortran95 = 0x000e,	     /* ISO Fortran 95 */
     DW_LANG_PL1 = 0x000f,	     /* ISO PL/1:1976 */
-    DW_LANG_Objc = 0x0010,	     /* Objective-C */
+    DW_LANG_ObjC = 0x0010,	     /* Objective-C */
     DW_LANG_ObjC_plus_plus = 0x0011, /* Objective-C++ */
     DW_LANG_UPC = 0x0012,	     /* Unified Parallel C */
     DW_LANG_D = 0x0013,		     /* D */
     DW_LANG_Python = 0x0014,	     /* Python */
-    DW_LANG_Go = 0x0016,	     /* Google's Go (provisionally in DWARF5) */
+    DW_LANG_Go = 0x0016,	     /* Go */
+    DW_LANG_C_plus_plus_11 = 0x001a, /* ISO C++:2011 */
+    DW_LANG_C11 = 0x001d,	     /* ISO C:2011 */
+    DW_LANG_C_plus_plus_14 = 0x0021, /* ISO C++:2014 */
+
 
     DW_LANG_lo_user = 0x8000,
-    DW_LANG_Mips_Assembler = 0x8001,
+    DW_LANG_Mips_Assembler = 0x8001, /* Assembler */
     DW_LANG_hi_user = 0xffff
   };
 
@@ -693,6 +686,21 @@
   };
 
 
+/* DWARF debug_macro type encodings.  GNU/DWARF5 extension.  */
+enum
+  {
+    DW_MACRO_GNU_define = 0x01,
+    DW_MACRO_GNU_undef = 0x02,
+    DW_MACRO_GNU_start_file = 0x03,
+    DW_MACRO_GNU_end_file = 0x04,
+    DW_MACRO_GNU_define_indirect = 0x05,
+    DW_MACRO_GNU_undef_indirect = 0x06,
+    DW_MACRO_GNU_transparent_include = 0x07,
+    DW_MACRO_GNU_lo_user = 0xe0,
+    DW_MACRO_GNU_hi_user = 0xff
+  };
+
+
 /* DWARF call frame instruction encodings.  */
 enum
   {
diff --git a/src/libdw/dwarf_abbrev_hash.c b/src/libdw/dwarf_abbrev_hash.c
index bec1ceb..f52f5ad 100644
--- a/src/libdw/dwarf_abbrev_hash.c
+++ b/src/libdw/dwarf_abbrev_hash.c
@@ -1,52 +1,31 @@
 /* Implementation of hash table for DWARF .debug_abbrev section content.
    Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_abbrev_hash.h b/src/libdw/dwarf_abbrev_hash.h
index f124d16..d2f02cc 100644
--- a/src/libdw/dwarf_abbrev_hash.h
+++ b/src/libdw/dwarf_abbrev_hash.h
@@ -1,52 +1,31 @@
 /* Hash table for DWARF .debug_abbrev section content.
    Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _DWARF_ABBREV_HASH_H
 #define _DWARF_ABBREV_HASH_H	1
diff --git a/src/libdw/dwarf_abbrevhaschildren.c b/src/libdw/dwarf_abbrevhaschildren.c
index 4e42a32..4a83e31 100644
--- a/src/libdw/dwarf_abbrevhaschildren.c
+++ b/src/libdw/dwarf_abbrevhaschildren.c
@@ -1,52 +1,31 @@
 /* Return true if abbreviation is children flag set.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_addrdie.c b/src/libdw/dwarf_addrdie.c
index 8461872..94eb148 100644
--- a/src/libdw/dwarf_addrdie.c
+++ b/src/libdw/dwarf_addrdie.c
@@ -1,52 +1,31 @@
 /* Return CU DIE containing given address.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_aggregate_size.c b/src/libdw/dwarf_aggregate_size.c
index e742014..667c274 100644
--- a/src/libdw/dwarf_aggregate_size.c
+++ b/src/libdw/dwarf_aggregate_size.c
@@ -1,51 +1,30 @@
 /* Compute size of an aggregate type from DWARF.
-   Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -58,8 +37,13 @@
 static Dwarf_Die *
 get_type (Dwarf_Die *die, Dwarf_Attribute *attr_mem, Dwarf_Die *type_mem)
 {
-  return INTUSE(dwarf_formref_die)
+  Dwarf_Die *type = INTUSE(dwarf_formref_die)
     (INTUSE(dwarf_attr_integrate) (die, DW_AT_type, attr_mem), type_mem);
+
+  if (INTUSE(dwarf_peel_type) (type, type) != 0)
+    return NULL;
+
+  return type;
 }
 
 static int
@@ -119,12 +103,16 @@
 		    case DW_LANG_C:
 		    case DW_LANG_C89:
 		    case DW_LANG_C99:
+		    case DW_LANG_C11:
 		    case DW_LANG_C_plus_plus:
-		    case DW_LANG_Objc:
+		    case DW_LANG_C_plus_plus_11:
+		    case DW_LANG_C_plus_plus_14:
+		    case DW_LANG_ObjC:
 		    case DW_LANG_ObjC_plus_plus:
 		    case DW_LANG_Java:
 		    case DW_LANG_D:
 		    case DW_LANG_UPC:
+		    case DW_LANG_Go:
 		      lower = 0;
 		      break;
 
@@ -219,13 +207,20 @@
 
   switch (INTUSE(dwarf_tag) (die))
     {
-    case DW_TAG_typedef:
     case DW_TAG_subrange_type:
       return aggregate_size (get_type (die, &attr_mem, type_mem),
 			     size, type_mem); /* Tail call.  */
 
     case DW_TAG_array_type:
       return array_size (die, size, &attr_mem, type_mem);
+
+    /* Assume references and pointers have pointer size if not given an
+       explicit DW_AT_byte_size.  */
+    case DW_TAG_pointer_type:
+    case DW_TAG_reference_type:
+    case DW_TAG_rvalue_reference_type:
+      *size = die->cu->address_size;
+      return 0;
     }
 
   /* Most types must give their size directly.  */
@@ -238,6 +233,12 @@
      Dwarf_Word *size;
 {
   Dwarf_Die type_mem;
+
+  if (INTUSE (dwarf_peel_type) (die, die) != 0)
+    return -1;
+
   return aggregate_size (die, size, &type_mem);
 }
 INTDEF (dwarf_aggregate_size)
+OLD_VERSION (dwarf_aggregate_size, ELFUTILS_0.144)
+NEW_VERSION (dwarf_aggregate_size, ELFUTILS_0.161)
diff --git a/src/libdw/dwarf_arrayorder.c b/src/libdw/dwarf_arrayorder.c
index 4929fb3..759fa4d 100644
--- a/src/libdw/dwarf_arrayorder.c
+++ b/src/libdw/dwarf_arrayorder.c
@@ -1,52 +1,31 @@
 /* Return array order attribute of DIE.
    Copyright (C) 2003, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_attr.c b/src/libdw/dwarf_attr.c
index d3b0324..f247c1a 100644
--- a/src/libdw/dwarf_attr.c
+++ b/src/libdw/dwarf_attr.c
@@ -1,52 +1,31 @@
 /* Return specific DWARF attribute of a DIE.
-   Copyright (C) 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003, 2005, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -71,6 +50,6 @@
   /* Always fill in the CU information.  */
   result->cu = die->cu;
 
-  return result->code == search_name ? result : NULL;
+  return result->valp != NULL && result->code == search_name ? result : NULL;
 }
 INTDEF(dwarf_attr)
diff --git a/src/libdw/dwarf_attr_integrate.c b/src/libdw/dwarf_attr_integrate.c
index ce062f5..812d74b 100644
--- a/src/libdw/dwarf_attr_integrate.c
+++ b/src/libdw/dwarf_attr_integrate.c
@@ -1,51 +1,30 @@
 /* Return specific DWARF attribute of a DIE, integrating indirections.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_begin.c b/src/libdw/dwarf_begin.c
index 8a41914..9f3050f 100644
--- a/src/libdw/dwarf_begin.c
+++ b/src/libdw/dwarf_begin.c
@@ -1,52 +1,31 @@
 /* Create descriptor from file descriptor for processing file.
    Copyright (C) 2002, 2003, 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -95,7 +74,6 @@
   elf = elf_begin (fd, elfcmd, NULL);
   if (elf == NULL)
     {
-#ifndef __APPLE__
       /* Test why the `elf_begin" call failed.  */
       struct stat64 st;
 
@@ -105,9 +83,6 @@
 	__libdw_seterrno (DWARF_E_INVALID_FILE);
       else
 	__libdw_seterrno (DWARF_E_IO_ERROR);
-#else
-      __libdw_seterrno (DWARF_E_IO_ERROR);
-#endif
     }
   else
     {
@@ -123,3 +98,4 @@
 
   return result;
 }
+INTDEF(dwarf_begin)
diff --git a/src/libdw/dwarf_begin_elf.c b/src/libdw/dwarf_begin_elf.c
index 9ec7d51..4c49ce2 100644
--- a/src/libdw/dwarf_begin_elf.c
+++ b/src/libdw/dwarf_begin_elf.c
@@ -1,63 +1,46 @@
 /* Create descriptor from ELF descriptor for processing file.
-   Copyright (C) 2002-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002-2011, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <assert.h>
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdlib.h>
+#include <stdio.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/types.h>
 #include <sys/stat.h>
+#include <fcntl.h>
 
 #include "libdwP.h"
 
@@ -70,7 +53,7 @@
 
 
 /* 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",
@@ -82,11 +65,12 @@
   [IDX_debug_pubnames] = ".debug_pubnames",
   [IDX_debug_str] = ".debug_str",
   [IDX_debug_macinfo] = ".debug_macinfo",
-  [IDX_debug_ranges] = ".debug_ranges"
+  [IDX_debug_macro] = ".debug_macro",
+  [IDX_debug_ranges] = ".debug_ranges",
+  [IDX_gnu_debugaltlink] = ".gnu_debugaltlink"
 };
 #define ndwarf_scnnames (sizeof (dwarf_scnnames) / sizeof (dwarf_scnnames[0]))
 
-
 static Dwarf *
 check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp)
 {
@@ -96,9 +80,9 @@
   /* 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
@@ -124,13 +108,14 @@
     {
       /* 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;
     }
 
-
   /* Recognize the various sections.  Most names start with .debug_.  */
   size_t cnt;
   for (cnt = 0; cnt < ndwarf_scnnames; ++cnt)
@@ -174,6 +159,12 @@
 	    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;
@@ -238,11 +229,34 @@
       && 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;
     }
 
+  if (result != NULL && result->sectiondata[IDX_debug_loc] != NULL)
+    {
+      result->fake_loc_cu = (Dwarf_CU *) calloc (1, sizeof (Dwarf_CU));
+      if (unlikely (result->fake_loc_cu == NULL))
+	{
+	  __libdw_free_zdata (result);
+	  Dwarf_Sig8_Hash_free (&result->sig8_hash);
+	  __libdw_seterrno (DWARF_E_NOMEM);
+	  free (result);
+	  result = NULL;
+	}
+      else
+	{
+	  result->fake_loc_cu->dbg = result;
+	  result->fake_loc_cu->startp
+	    = result->sectiondata[IDX_debug_loc]->d_buf;
+	  result->fake_loc_cu->endp
+	    = (result->sectiondata[IDX_debug_loc]->d_buf
+	       + result->sectiondata[IDX_debug_loc]->d_size);
+	}
+    }
+
   return result;
 }
 
@@ -269,6 +283,7 @@
     {
       /* We cannot read the section content.  Fail!  */
       __libdw_free_zdata (result);
+      Dwarf_Sig8_Hash_free (&result->sig8_hash);
       free (result);
       return NULL;
     }
@@ -285,6 +300,7 @@
 	  /* 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;
@@ -365,11 +381,13 @@
     }
   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;
diff --git a/src/libdw/dwarf_bitoffset.c b/src/libdw/dwarf_bitoffset.c
index 3ab1468..1648ecd 100644
--- a/src/libdw/dwarf_bitoffset.c
+++ b/src/libdw/dwarf_bitoffset.c
@@ -1,52 +1,31 @@
 /* Return bit offset attribute of DIE.
    Copyright (C) 2003, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_bitsize.c b/src/libdw/dwarf_bitsize.c
index 67d97dc..ea9946b 100644
--- a/src/libdw/dwarf_bitsize.c
+++ b/src/libdw/dwarf_bitsize.c
@@ -1,52 +1,31 @@
 /* Return bit size attribute of DIE.
    Copyright (C) 2003, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_bytesize.c b/src/libdw/dwarf_bytesize.c
index 2f2e198..6499a0a 100644
--- a/src/libdw/dwarf_bytesize.c
+++ b/src/libdw/dwarf_bytesize.c
@@ -1,52 +1,31 @@
 /* Return byte size attribute of DIE.
    Copyright (C) 2003, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_cfi_addrframe.c b/src/libdw/dwarf_cfi_addrframe.c
index 79d0e12..1c0da03 100644
--- a/src/libdw/dwarf_cfi_addrframe.c
+++ b/src/libdw/dwarf_cfi_addrframe.c
@@ -1,51 +1,30 @@
 /* Compute frame state at PC.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_cfi_end.c b/src/libdw/dwarf_cfi_end.c
index 5591e2a..6eb2ade 100644
--- a/src/libdw/dwarf_cfi_end.c
+++ b/src/libdw/dwarf_cfi_end.c
@@ -1,51 +1,30 @@
 /* Clean up Dwarf_CFI structure.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_child.c b/src/libdw/dwarf_child.c
index 0c2df00..58a438b 100644
--- a/src/libdw/dwarf_child.c
+++ b/src/libdw/dwarf_child.c
@@ -1,52 +1,31 @@
 /* Return child of current DIE.
-   Copyright (C) 2003-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2011, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -65,21 +44,11 @@
 		   unsigned int *codep, unsigned int *formp)
 {
   Dwarf *dbg = die->cu->dbg;
-  const unsigned char *readp = (unsigned char *) die->addr;
-
-  /* First we have to get the abbreviation code so that we can decode
-     the data in the DIE.  */
-  unsigned int abbrev_code;
-  get_uleb128 (abbrev_code, readp);
+  const unsigned char *readp;
 
   /* Find the abbreviation entry.  */
-  Dwarf_Abbrev *abbrevp = die->abbrev;
-  if (abbrevp == NULL)
-    {
-      abbrevp = __libdw_findabbrev (die->cu, abbrev_code);
-      die->abbrev = abbrevp ?: DWARF_END_ABBREV;
-    }
-  if (unlikely (die->abbrev == DWARF_END_ABBREV))
+  Dwarf_Abbrev *abbrevp = __libdw_dieabbrev (die, &readp);
+  if (unlikely (abbrevp == DWARF_END_ABBREV))
     {
     invalid_dwarf:
       __libdw_seterrno (DWARF_E_INVALID_DWARF);
@@ -91,21 +60,19 @@
     = ((unsigned char *) dbg->sectiondata[IDX_debug_abbrev]->d_buf
        + dbg->sectiondata[IDX_debug_abbrev]->d_size);
 
-  const unsigned char *attrp = die->abbrev->attrp;
+  const unsigned char *attrp = abbrevp->attrp;
   while (1)
     {
-      /* Are we still in bounds?  This test needs to be refined.  */
-      if (unlikely (attrp + 1 >= endp))
+      /* Get attribute name and form.  */
+      if (unlikely (attrp >= endp))
 	goto invalid_dwarf;
-
-      /* Get attribute name and form.
-
-	 XXX We don't check whether this reads beyond the end of the
-	 section.  */
       unsigned int attr_name;
-      get_uleb128 (attr_name, attrp);
+      get_uleb128 (attr_name, attrp, endp);
+
+      if (unlikely (attrp >= endp))
+	goto invalid_dwarf;
       unsigned int attr_form;
-      get_uleb128 (attr_form, attrp);
+      get_uleb128 (attr_form, attrp, endp);
 
       /* We can stop if we found the attribute with value zero.  */
       if (attr_name == 0 && attr_form == 0)
@@ -125,15 +92,14 @@
       /* Skip over the rest of this attribute (if there is any).  */
       if (attr_form != 0)
 	{
-	  size_t len = __libdw_form_val_len (dbg, die->cu, attr_form, readp);
-
+	  size_t len = __libdw_form_val_len (die->cu, attr_form, readp);
 	  if (unlikely (len == (size_t) -1l))
 	    {
 	      readp = NULL;
 	      break;
 	    }
 
-	  // XXX We need better boundary checks.
+	  // __libdw_form_val_len will have done a bounds check.
 	  readp += len;
 	}
     }
@@ -157,33 +123,32 @@
   if (die == NULL)
     return -1;
 
-  /* Skip past the last attribute.  */
-  void *addr = NULL;
+  /* Find the abbreviation entry.  */
+  Dwarf_Abbrev *abbrevp = __libdw_dieabbrev (die, NULL);
+  if (unlikely (abbrevp == DWARF_END_ABBREV))
+    {
+      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+      return -1;
+    }
 
-  /* If we already know there are no children do not search.  */
-  if (die->abbrev != DWARF_END_ABBREV
-      && (die->abbrev == NULL || die->abbrev->has_children))
-    addr = __libdw_find_attr (die, INVALID, NULL, NULL);
-  if (unlikely (die->abbrev == (Dwarf_Abbrev *) -1l))
-    return -1;
-
-  /* Make sure the DIE really has children.  */
-  if (! die->abbrev->has_children)
-    /* There cannot be any children.  */
+  /* If there are no children, do not search.  */
+  if (! abbrevp->has_children)
     return 1;
 
+  /* Skip past the last attribute.  */
+  void *addr = __libdw_find_attr (die, INVALID, NULL, NULL);
+
   if (addr == NULL)
     return -1;
 
   /* RESULT can be the same as DIE.  So preserve what we need.  */
   struct Dwarf_CU *cu = die->cu;
-  Elf_Data *cu_sec = cu_data (cu);
 
   /* It's kosher (just suboptimal) to have a null entry first thing (7.5.3).
      So if this starts with ULEB128 of 0 (even with silly encoding of 0),
      it is a kosher null entry and we do not really have any children.  */
   const unsigned char *code = addr;
-  const unsigned char *endp = (cu_sec->d_buf + cu_sec->d_size);
+  const unsigned char *endp = cu->endp;
   while (1)
     {
       if (unlikely (code >= endp)) /* Truncated section.  */
diff --git a/src/libdw/dwarf_cu_die.c b/src/libdw/dwarf_cu_die.c
new file mode 100644
index 0000000..48f4176
--- /dev/null
+++ b/src/libdw/dwarf_cu_die.c
@@ -0,0 +1,68 @@
+/* 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;
+}
diff --git a/src/libdw/dwarf_cu_getdwarf.c b/src/libdw/dwarf_cu_getdwarf.c
new file mode 100644
index 0000000..f8a2e9b
--- /dev/null
+++ b/src/libdw/dwarf_cu_getdwarf.c
@@ -0,0 +1,47 @@
+/* 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
+   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 *
+dwarf_cu_getdwarf (cu)
+     Dwarf_CU *cu;
+{
+  if (cu == NULL)
+    /* Some error occurred before.  */
+    return NULL;
+
+  return cu->dbg;
+}
diff --git a/src/libdw/dwarf_cuoffset.c b/src/libdw/dwarf_cuoffset.c
index 4765320..3ceffdb 100644
--- a/src/libdw/dwarf_cuoffset.c
+++ b/src/libdw/dwarf_cuoffset.c
@@ -1,52 +1,31 @@
 /* Return offset of DIE in CU.
-   Copyright (C) 2003-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -62,5 +41,5 @@
 {
   return (die == NULL
 	  ? (Dwarf_Off) -1l
-	  : (die->addr - cu_data (die->cu)->d_buf - die->cu->start));
+	  : (Dwarf_Off) (die->addr - die->cu->startp));
 }
diff --git a/src/libdw/dwarf_decl_column.c b/src/libdw/dwarf_decl_column.c
index 11ba5d7..08d36b8 100644
--- a/src/libdw/dwarf_decl_column.c
+++ b/src/libdw/dwarf_decl_column.c
@@ -1,52 +1,31 @@
 /* Get column number of beginning of given declaration.
    Copyright (C) 2005-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_decl_file.c b/src/libdw/dwarf_decl_file.c
index c81e35b..5657132 100644
--- a/src/libdw/dwarf_decl_file.c
+++ b/src/libdw/dwarf_decl_file.c
@@ -1,52 +1,31 @@
 /* Return file name containing definition of the given function.
    Copyright (C) 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -61,9 +40,9 @@
 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;
diff --git a/src/libdw/dwarf_decl_line.c b/src/libdw/dwarf_decl_line.c
index ab64e51..80fae6c 100644
--- a/src/libdw/dwarf_decl_line.c
+++ b/src/libdw/dwarf_decl_line.c
@@ -1,52 +1,31 @@
 /* Get line number of beginning of given function.
    Copyright (C) 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -71,15 +50,20 @@
 __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;
diff --git a/src/libdw/dwarf_diecu.c b/src/libdw/dwarf_diecu.c
index cd98cf6..bd9a37a 100644
--- a/src/libdw/dwarf_diecu.c
+++ b/src/libdw/dwarf_diecu.c
@@ -1,51 +1,30 @@
 /* Return CU DIE containing given DIE.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_diename.c b/src/libdw/dwarf_diename.c
index 3b66d12..050d8f1 100644
--- a/src/libdw/dwarf_diename.c
+++ b/src/libdw/dwarf_diename.c
@@ -1,52 +1,31 @@
 /* Return string in name attribute of DIE.
    Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_dieoffset.c b/src/libdw/dwarf_dieoffset.c
index ac4a84c..965b2c8 100644
--- a/src/libdw/dwarf_dieoffset.c
+++ b/src/libdw/dwarf_dieoffset.c
@@ -1,52 +1,31 @@
 /* Return offset of DIE.
-   Copyright (C) 2003-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -62,6 +41,6 @@
 {
   return (die == NULL
 	  ? ~0ul
-	  : (Dwarf_Off) (die->addr - cu_data (die->cu)->d_buf));
+	  : (Dwarf_Off) (die->addr - die->cu->startp + die->cu->start));
 }
 INTDEF(dwarf_dieoffset)
diff --git a/src/libdw/dwarf_end.c b/src/libdw/dwarf_end.c
index 1e733ca..922dc8f 100644
--- a/src/libdw/dwarf_end.c
+++ b/src/libdw/dwarf_end.c
@@ -1,52 +1,31 @@
 /* Release debugging handling context.
-   Copyright (C) 2002-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002-2011, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -114,6 +93,12 @@
       tdestroy (dwarf->cu_tree, cu_free);
       tdestroy (dwarf->tu_tree, cu_free);
 
+      /* Search tree for macro opcode tables.  */
+      tdestroy (dwarf->macro_ops, noop_free);
+
+      /* Search tree for decoded .debug_lines units.  */
+      tdestroy (dwarf->files_lines, noop_free);
+
       struct libdw_memblock *memp = dwarf->mem_tail;
       /* The first block is allocated together with the Dwarf object.  */
       while (memp->prev != NULL)
@@ -132,6 +117,9 @@
       if (dwarf->free_elf)
 	elf_end (dwarf->elf);
 
+      /* Free the fake location list CU.  */
+      free (dwarf->fake_loc_cu);
+
       /* Free the context descriptor.  */
       free (dwarf);
     }
diff --git a/src/libdw/dwarf_entry_breakpoints.c b/src/libdw/dwarf_entry_breakpoints.c
index 1e5c1b8..ffd5169 100644
--- a/src/libdw/dwarf_entry_breakpoints.c
+++ b/src/libdw/dwarf_entry_breakpoints.c
@@ -1,51 +1,30 @@
 /* Find entry breakpoint locations for a function.
    Copyright (C) 2005-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_entrypc.c b/src/libdw/dwarf_entrypc.c
index 1719be2..8eb39db 100644
--- a/src/libdw/dwarf_entrypc.c
+++ b/src/libdw/dwarf_entrypc.c
@@ -1,51 +1,30 @@
 /* Return entry PC attribute of DIE.
    Copyright (C) 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_error.c b/src/libdw/dwarf_error.c
index a298a19..08b691a 100644
--- a/src/libdw/dwarf_error.c
+++ b/src/libdw/dwarf_error.c
@@ -1,52 +1,31 @@
 /* Retrieve ELF descriptor used for DWARF access.
-   Copyright (C) 2002, 2003, 2004, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002, 2003, 2004, 2005, 2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -59,11 +38,7 @@
 
 
 /* The error number.  */
-#ifdef __APPLE__
-static int global_error;
-#else
 static __thread int global_error;
-#endif
 
 
 int
@@ -116,6 +91,8 @@
     [DWARF_E_INVALID_OFFSET] = N_("invalid offset"),
     [DWARF_E_NO_DEBUG_RANGES] = N_(".debug_ranges section missing"),
     [DWARF_E_INVALID_CFI] = N_("invalid CFI section"),
+    [DWARF_E_NO_ALT_DEBUGLINK] = N_("no alternative debug link found"),
+    [DWARF_E_INVALID_OPCODE] = N_("invalid opcode"),
   };
 #define nerrmsgs (sizeof (errmsgs) / sizeof (errmsgs[0]))
 
diff --git a/src/libdw/dwarf_filesrc.c b/src/libdw/dwarf_filesrc.c
index b48340d..d866ce7 100644
--- a/src/libdw/dwarf_filesrc.c
+++ b/src/libdw/dwarf_filesrc.c
@@ -1,52 +1,31 @@
 /* Find source file information.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_formaddr.c b/src/libdw/dwarf_formaddr.c
index a8c786f..9d4a388 100644
--- a/src/libdw/dwarf_formaddr.c
+++ b/src/libdw/dwarf_formaddr.c
@@ -1,52 +1,31 @@
 /* Return address represented by attribute.
    Copyright (C) 2003-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_formblock.c b/src/libdw/dwarf_formblock.c
index 4eb815c..3d56f22 100644
--- a/src/libdw/dwarf_formblock.c
+++ b/src/libdw/dwarf_formblock.c
@@ -1,52 +1,31 @@
 /* Return block represented by attribute.
-   Copyright (C) 2004-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2004-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -64,29 +43,37 @@
   if (attr == NULL)
     return -1;
 
-  const unsigned char *datap;
+  const unsigned char *datap = attr->valp;
+  const unsigned char *endp = attr->cu->endp;
 
   switch (attr->form)
     {
     case DW_FORM_block1:
+      if (unlikely (endp - datap < 1))
+	goto invalid;
       return_block->length = *(uint8_t *) attr->valp;
       return_block->data = attr->valp + 1;
       break;
 
     case DW_FORM_block2:
+      if (unlikely (endp - datap < 2))
+	goto invalid;
       return_block->length = read_2ubyte_unaligned (attr->cu->dbg, attr->valp);
       return_block->data = attr->valp + 2;
       break;
 
     case DW_FORM_block4:
+      if (unlikely (endp - datap < 4))
+	goto invalid;
       return_block->length = read_4ubyte_unaligned (attr->cu->dbg, attr->valp);
       return_block->data = attr->valp + 4;
       break;
 
     case DW_FORM_block:
     case DW_FORM_exprloc:
-      datap = attr->valp;
-      get_uleb128 (return_block->length, datap);
+      if (unlikely (endp - datap < 1))
+	goto invalid;
+      get_uleb128 (return_block->length, datap, endp);
       return_block->data = (unsigned char *) datap;
       break;
 
@@ -95,12 +82,10 @@
       return -1;
     }
 
-  if (unlikely (cu_data (attr->cu)->d_size
-		- (return_block->data
-		   - (unsigned char *) cu_data (attr->cu)->d_buf)
-		< return_block->length))
+  if (unlikely (return_block->length > (size_t) (endp - return_block->data)))
     {
       /* Block does not fit.  */
+    invalid:
       __libdw_seterrno (DWARF_E_INVALID_DWARF);
       return -1;
     }
diff --git a/src/libdw/dwarf_formflag.c b/src/libdw/dwarf_formflag.c
index fb60c8e..bdc2267 100644
--- a/src/libdw/dwarf_formflag.c
+++ b/src/libdw/dwarf_formflag.c
@@ -1,52 +1,31 @@
 /* Return flag represented by attribute.
    Copyright (C) 2004-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_formref.c b/src/libdw/dwarf_formref.c
index e4d35ae..2592437 100644
--- a/src/libdw/dwarf_formref.c
+++ b/src/libdw/dwarf_formref.c
@@ -1,52 +1,31 @@
 /* Return reference offset represented by attribute.
-   Copyright (C) 2003-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -60,7 +39,8 @@
      Dwarf_Attribute *attr;
      Dwarf_Off *return_offset;
 {
-  const unsigned char *datap;
+  const unsigned char *datap = attr->valp;
+  const unsigned char *endp = attr->cu->endp;
 
   if (attr->valp == NULL)
     {
@@ -71,28 +51,43 @@
   switch (attr->form)
     {
     case DW_FORM_ref1:
+      if (datap + 1 > endp)
+	{
+	invalid:
+	  __libdw_seterrno (DWARF_E_INVALID_DWARF);
+	  return -1;
+	}
       *return_offset = *attr->valp;
       break;
 
     case DW_FORM_ref2:
+      if (datap + 2 > endp)
+	goto invalid;
       *return_offset = read_2ubyte_unaligned (attr->cu->dbg, attr->valp);
       break;
 
     case DW_FORM_ref4:
+      if (datap + 4 > endp)
+	goto invalid;
       *return_offset = read_4ubyte_unaligned (attr->cu->dbg, attr->valp);
       break;
 
     case DW_FORM_ref8:
+      if (datap + 8 > endp)
+	goto invalid;
       *return_offset = read_8ubyte_unaligned (attr->cu->dbg, attr->valp);
       break;
 
     case DW_FORM_ref_udata:
-      datap = attr->valp;
-      get_uleb128 (*return_offset, datap);
+      if (datap + 1 > endp)
+	goto invalid;
+      get_uleb128 (*return_offset, datap, endp);
       break;
 
     case DW_FORM_ref_addr:
     case DW_FORM_ref_sig8:
+    case DW_FORM_GNU_ref_alt:
+      /* These aren't handled by dwarf_formref, only by dwarf_formref_die.  */
       __libdw_seterrno (DWARF_E_INVALID_REFERENCE);
       return -1;
 
diff --git a/src/libdw/dwarf_formref_die.c b/src/libdw/dwarf_formref_die.c
index 3ec770d..63f6697 100644
--- a/src/libdw/dwarf_formref_die.c
+++ b/src/libdw/dwarf_formref_die.c
@@ -1,51 +1,30 @@
 /* Look up the DIE in a reference-form attribute.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -67,22 +46,32 @@
   struct Dwarf_CU *cu = attr->cu;
 
   Dwarf_Off offset;
-  if (attr->form == DW_FORM_ref_addr)
+  if (attr->form == DW_FORM_ref_addr || attr->form == DW_FORM_GNU_ref_alt)
     {
       /* This has an absolute offset.  */
 
-      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);
 
-      if (__libdw_read_offset (cu->dbg, IDX_debug_info, attr->valp,
+      Dwarf *dbg_ret = (attr->form == DW_FORM_GNU_ref_alt
+			? cu->dbg->alt_dwarf : cu->dbg);
+
+      if (dbg_ret == NULL)
+	{
+	  __libdw_seterrno (DWARF_E_NO_ALT_DEBUGLINK);
+	  return NULL;
+	}
+
+      if (__libdw_read_offset (cu->dbg, dbg_ret, IDX_debug_info, attr->valp,
 			       ref_size, &offset, IDX_debug_info, 0))
 	return NULL;
 
-      return INTUSE(dwarf_offdie) (cu->dbg, offset, result);
+      return INTUSE(dwarf_offdie) (dbg_ret, offset, result);
     }
 
-  Elf_Data *data;
+  const unsigned char *datap;
+  size_t size;
   if (attr->form == DW_FORM_ref_sig8)
     {
       /* This doesn't have an offset, but instead a value we
@@ -101,11 +90,11 @@
 				  ?: DWARF_E_INVALID_REFERENCE);
 		return NULL;
 	      }
-	    Dwarf_Sig8_Hash_insert (&cu->dbg->sig8_hash, cu->type_sig8, cu);
 	  }
 	while (cu->type_sig8 != sig);
 
-      data = cu->dbg->sectiondata[IDX_debug_types];
+      datap = cu->dbg->sectiondata[IDX_debug_types]->d_buf;
+      size = cu->dbg->sectiondata[IDX_debug_types]->d_size;
       offset = cu->type_offset;
     }
   else
@@ -114,17 +103,18 @@
       if (unlikely (__libdw_formref (attr, &offset) != 0))
 	return NULL;
 
-      data = cu_data (cu);
+      datap = cu->startp;
+      size = cu->endp - cu->startp;
     }
 
-  if (unlikely (data->d_size - cu->start <= offset))
+  if (unlikely (offset >= size))
     {
       __libdw_seterrno (DWARF_E_INVALID_DWARF);
       return NULL;
     }
 
   memset (result, '\0', sizeof (Dwarf_Die));
-  result->addr = (char *) data->d_buf + cu->start + offset;
+  result->addr = (char *) datap + offset;
   result->cu = cu;
   return result;
 }
diff --git a/src/libdw/dwarf_formsdata.c b/src/libdw/dwarf_formsdata.c
index ab7249d..2380bf4 100644
--- a/src/libdw/dwarf_formsdata.c
+++ b/src/libdw/dwarf_formsdata.c
@@ -1,52 +1,31 @@
 /* Return signed constant represented by attribute.
-   Copyright (C) 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003, 2005, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -64,34 +43,49 @@
   if (attr == NULL)
     return -1;
 
-  const unsigned char *datap;
+  const unsigned char *datap = attr->valp;
+  const unsigned char *endp = attr->cu->endp;
 
   switch (attr->form)
     {
     case DW_FORM_data1:
+      if (datap + 1 > endp)
+	{
+	invalid:
+	  __libdw_seterrno (DWARF_E_INVALID_DWARF);
+	  return -1;
+	}
       *return_sval = *attr->valp;
       break;
 
     case DW_FORM_data2:
+      if (datap + 2 > endp)
+	goto invalid;
       *return_sval = read_2ubyte_unaligned (attr->cu->dbg, attr->valp);
       break;
 
     case DW_FORM_data4:
+      if (datap + 4 > endp)
+	goto invalid;
       *return_sval = read_4ubyte_unaligned (attr->cu->dbg, attr->valp);
       break;
 
     case DW_FORM_data8:
+      if (datap + 8 > endp)
+	goto invalid;
       *return_sval = read_8ubyte_unaligned (attr->cu->dbg, attr->valp);
       break;
 
     case DW_FORM_sdata:
-      datap = attr->valp;
-      get_sleb128 (*return_sval, datap);
+      if (datap + 1 > endp)
+	goto invalid;
+      get_sleb128 (*return_sval, datap, endp);
       break;
 
     case DW_FORM_udata:
-      datap = attr->valp;
-      get_uleb128 (*return_sval, datap);
+      if (datap + 1 > endp)
+	goto invalid;
+      get_uleb128 (*return_sval, datap, endp);
       break;
 
     default:
diff --git a/src/libdw/dwarf_formstring.c b/src/libdw/dwarf_formstring.c
index 1dee9b2..02b56d4 100644
--- a/src/libdw/dwarf_formstring.c
+++ b/src/libdw/dwarf_formstring.c
@@ -1,52 +1,31 @@
 /* Return string associated with given attribute.
-   Copyright (C) 2003-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2010, 2013 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -70,19 +49,28 @@
     return (const char *) attrp->valp;
 
   Dwarf *dbg = attrp->cu->dbg;
+  Dwarf *dbg_ret = attrp->form == DW_FORM_GNU_strp_alt ? dbg->alt_dwarf : dbg;
 
-  if (unlikely (attrp->form != DW_FORM_strp)
-      || dbg->sectiondata[IDX_debug_str] == NULL)
+  if (unlikely (dbg_ret == NULL))
+    {
+      __libdw_seterrno (DWARF_E_NO_ALT_DEBUGLINK);
+      return NULL;
+    }
+
+
+  if (unlikely (attrp->form != DW_FORM_strp
+		   && attrp->form != DW_FORM_GNU_strp_alt)
+      || dbg_ret->sectiondata[IDX_debug_str] == NULL)
     {
       __libdw_seterrno (DWARF_E_NO_STRING);
       return NULL;
     }
 
   uint64_t off;
-  if (__libdw_read_offset (dbg, cu_sec_idx (attrp->cu), attrp->valp,
+  if (__libdw_read_offset (dbg, dbg_ret, cu_sec_idx (attrp->cu), attrp->valp,
 			   attrp->cu->offset_size, &off, IDX_debug_str, 1))
     return NULL;
 
-  return (const char *) dbg->sectiondata[IDX_debug_str]->d_buf + off;
+  return (const char *) dbg_ret->sectiondata[IDX_debug_str]->d_buf + off;
 }
 INTDEF(dwarf_formstring)
diff --git a/src/libdw/dwarf_formudata.c b/src/libdw/dwarf_formudata.c
index 07efbe0..a01ff31 100644
--- a/src/libdw/dwarf_formudata.c
+++ b/src/libdw/dwarf_formudata.c
@@ -1,52 +1,31 @@
 /* Return unsigned constant represented by attribute.
-   Copyright (C) 2003-2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -73,7 +52,8 @@
   Dwarf_Word offset;
   if (attr->form == DW_FORM_sec_offset)
     {
-      if (__libdw_read_offset (attr->cu->dbg, cu_sec_idx (attr->cu), attr->valp,
+      if (__libdw_read_offset (attr->cu->dbg, attr->cu->dbg,
+			       cu_sec_idx (attr->cu), attr->valp,
 			       attr->cu->offset_size, &offset, sec_index, 0))
 	return NULL;
     }
@@ -84,7 +64,8 @@
       {
       case DW_FORM_data4:
       case DW_FORM_data8:
-	if (__libdw_read_offset (attr->cu->dbg, cu_sec_idx (attr->cu),
+	if (__libdw_read_offset (attr->cu->dbg, attr->cu->dbg,
+				 cu_sec_idx (attr->cu),
 				 attr->valp,
 				 attr->form == DW_FORM_data4 ? 4 : 8,
 				 &offset, sec_index, 0))
@@ -120,15 +101,24 @@
   if (attr == NULL)
     return -1;
 
-  const unsigned char *datap;
+  const unsigned char *datap = attr->valp;
+  const unsigned char *endp = attr->cu->endp;
 
   switch (attr->form)
     {
     case DW_FORM_data1:
+      if (datap + 1 > endp)
+	{
+	invalid:
+	  __libdw_seterrno (DWARF_E_INVALID_DWARF);
+	  return -1;
+	}
       *return_uval = *attr->valp;
       break;
 
     case DW_FORM_data2:
+      if (datap + 2 > endp)
+	goto invalid;
       *return_uval = read_2ubyte_unaligned (attr->cu->dbg, attr->valp);
       break;
 
@@ -161,13 +151,21 @@
 	      break;
 
 	    case DW_AT_macro_info:
-	      /* macptr */
+	      /* macptr into .debug_macinfo */
 	      if (__libdw_formptr (attr, IDX_debug_macinfo,
 				   DWARF_E_NO_ENTRY, NULL,
 				   return_uval) == NULL)
 		return -1;
 	      break;
 
+	    case DW_AT_GNU_macros:
+	      /* macptr into .debug_macro */
+	      if (__libdw_formptr (attr, IDX_debug_macro,
+				   DWARF_E_NO_ENTRY, NULL,
+				   return_uval) == NULL)
+		return -1;
+	      break;
+
 	    case DW_AT_ranges:
 	    case DW_AT_start_scope:
 	      /* rangelistptr */
@@ -214,13 +212,15 @@
       break;
 
     case DW_FORM_sdata:
-      datap = attr->valp;
-      get_sleb128 (*return_uval, datap);
+      if (datap + 1 > endp)
+	goto invalid;
+      get_sleb128 (*return_uval, datap, endp);
       break;
 
     case DW_FORM_udata:
-      datap = attr->valp;
-      get_uleb128 (*return_uval, datap);
+      if (datap + 1 > endp)
+	goto invalid;
+      get_uleb128 (*return_uval, datap, endp);
       break;
 
     default:
diff --git a/src/libdw/dwarf_frame_cfa.c b/src/libdw/dwarf_frame_cfa.c
index 2f3268a..a9ae7e7 100644
--- a/src/libdw/dwarf_frame_cfa.c
+++ b/src/libdw/dwarf_frame_cfa.c
@@ -1,51 +1,30 @@
 /* Get CFA expression for frame.
    Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_frame_info.c b/src/libdw/dwarf_frame_info.c
index 4bdd806..7da46fb 100644
--- a/src/libdw/dwarf_frame_info.c
+++ b/src/libdw/dwarf_frame_info.c
@@ -1,51 +1,30 @@
 /* Get return address register for frame.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_frame_register.c b/src/libdw/dwarf_frame_register.c
index ae0db02..10d2fe4 100644
--- a/src/libdw/dwarf_frame_register.c
+++ b/src/libdw/dwarf_frame_register.c
@@ -1,51 +1,30 @@
 /* Get register location expression for frame.
-   Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -123,7 +102,9 @@
 
 	Dwarf_Block block;
 	const uint8_t *p = fs->cache->data->d.d_buf + reg->value;
-	get_uleb128 (block.length, p);
+	const uint8_t *end = (fs->cache->data->d.d_buf
+			      + fs->cache->data->d.d_size);
+	get_uleb128 (block.length, p, end);
 	block.data = (void *) p;
 
 	/* Parse the expression into internal form.  */
diff --git a/src/libdw/dwarf_func_inline.c b/src/libdw/dwarf_func_inline.c
index 6018691..bc9db1c 100644
--- a/src/libdw/dwarf_func_inline.c
+++ b/src/libdw/dwarf_func_inline.c
@@ -1,50 +1,30 @@
 /* Convenience functions for handling DWARF descriptions of inline functions.
    Copyright (C) 2005,2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under an Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) and to distribute linked
-   combinations including the two.  Non-GPL Code permitted under this
-   exception must only link to the code of Red Hat elfutils through those
-   well defined interfaces identified in the file named EXCEPTION found in
-   the source code files (the "Approved Interfaces").  The files of Non-GPL
-   Code may instantiate templates or use macros or inline functions from
-   the Approved Interfaces without causing the resulting work to be covered
-   by the GNU General Public License.  Only Red Hat, Inc. may make changes
-   or additions to the list of Approved Interfaces.  Red Hat's grant of
-   this exception is conditioned upon your not adding any new exceptions.
-   If you wish to add a new Approved Interface or exception, please contact
-   Red Hat.  You must obey the GNU General Public License in all respects
-   for all of the Red Hat elfutils code and other code used in conjunction
-   with Red Hat elfutils except the Non-GPL Code covered by this exception.
-   If you modify this file, you may extend this exception to your version
-   of the file, but you are not obligated to do so.  If you do not wish to
-   provide this exception without modification, you must delete this
-   exception statement from your version and license this file solely under
-   the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getabbrev.c b/src/libdw/dwarf_getabbrev.c
index 07bf6df..0efde45 100644
--- a/src/libdw/dwarf_getabbrev.c
+++ b/src/libdw/dwarf_getabbrev.c
@@ -1,58 +1,36 @@
 /* Get abbreviation at given offset.
-   Copyright (C) 2003, 2004, 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003, 2004, 2005, 2006, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <assert.h>
 #include <dwarf.h>
 #include "libdwP.h"
 
@@ -99,9 +77,11 @@
      consists of two parts. The first part is an unsigned LEB128
      number representing the attribute's name. The second part is
      an unsigned LEB128 number representing the attribute's form.  */
+  const unsigned char *end = (dbg->sectiondata[IDX_debug_abbrev]->d_buf
+			      + dbg->sectiondata[IDX_debug_abbrev]->d_size);
   const unsigned char *start_abbrevp = abbrevp;
   unsigned int code;
-  get_uleb128 (code, abbrevp);
+  get_uleb128 (code, abbrevp, end);
 
   /* Check whether this code is already in the hash table.  */
   bool foundit = false;
@@ -118,7 +98,14 @@
     {
       foundit = true;
 
-      assert (abb->offset == offset);
+      if (unlikely (abb->offset != offset))
+	{
+	  /* A duplicate abbrev code at a different offset,
+	     that should never happen.  */
+	invalid:
+	  __libdw_seterrno (DWARF_E_INVALID_DWARF);
+	  return NULL;
+	}
 
       /* If the caller doesn't need the length we are done.  */
       if (lengthp == NULL)
@@ -129,7 +116,11 @@
      overwrite its content.  This must not be a problem, since the
      content better be the same.  */
   abb->code = code;
-  get_uleb128 (abb->tag, abbrevp);
+  if (abbrevp >= end)
+    goto invalid;
+  get_uleb128 (abb->tag, abbrevp, end);
+  if (abbrevp + 1 >= end)
+    goto invalid;
   abb->has_children = *abbrevp++ == DW_CHILDREN_yes;
   abb->attrp = (unsigned char *) abbrevp;
   abb->offset = offset;
@@ -140,8 +131,12 @@
   unsigned int attrform;
   do
     {
-      get_uleb128 (attrname, abbrevp);
-      get_uleb128 (attrform, abbrevp);
+      if (abbrevp >= end)
+	goto invalid;
+      get_uleb128 (attrname, abbrevp, end);
+      if (abbrevp >= end)
+	goto invalid;
+      get_uleb128 (attrform, abbrevp, end);
     }
   while (attrname != 0 && attrform != 0 && ++abb->attrcnt);
 
diff --git a/src/libdw/dwarf_getabbrevattr.c b/src/libdw/dwarf_getabbrevattr.c
index 05da17c..574467c 100644
--- a/src/libdw/dwarf_getabbrevattr.c
+++ b/src/libdw/dwarf_getabbrevattr.c
@@ -1,52 +1,31 @@
 /* Get specific attribute of abbreviation.
-   Copyright (C) 2003, 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003, 2004, 2005, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -78,9 +57,10 @@
     {
       start_attrp = attrp;
 
-      /* Attribute code and form are encoded as ULEB128 values.  */
-      get_uleb128 (name, attrp);
-      get_uleb128 (form, attrp);
+      /* Attribute code and form are encoded as ULEB128 values.i
+         XXX We have no way to bounds check.  */
+      get_uleb128 (name, attrp, attrp + len_leb128 (name));
+      get_uleb128 (form, attrp, attrp + len_leb128 (form));
 
       /* If both values are zero the index is out of range.  */
       if (name == 0 && form == 0)
diff --git a/src/libdw/dwarf_getabbrevcode.c b/src/libdw/dwarf_getabbrevcode.c
index edf492d..0df9064 100644
--- a/src/libdw/dwarf_getabbrevcode.c
+++ b/src/libdw/dwarf_getabbrevcode.c
@@ -1,52 +1,31 @@
 /* Get abbreviation code.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getabbrevtag.c b/src/libdw/dwarf_getabbrevtag.c
index 4f1f72c..36a5262 100644
--- a/src/libdw/dwarf_getabbrevtag.c
+++ b/src/libdw/dwarf_getabbrevtag.c
@@ -1,52 +1,31 @@
 /* Get abbreviation tag.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getalt.c b/src/libdw/dwarf_getalt.c
new file mode 100644
index 0000000..cc434f0
--- /dev/null
+++ b/src/libdw/dwarf_getalt.c
@@ -0,0 +1,42 @@
+/* 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)
diff --git a/src/libdw/dwarf_getarange_addr.c b/src/libdw/dwarf_getarange_addr.c
index 855c855..fc143de 100644
--- a/src/libdw/dwarf_getarange_addr.c
+++ b/src/libdw/dwarf_getarange_addr.c
@@ -1,52 +1,31 @@
 /* Get address range which includes given address.
    Copyright (C) 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getarangeinfo.c b/src/libdw/dwarf_getarangeinfo.c
index 7cefbf7..67b6e67 100644
--- a/src/libdw/dwarf_getarangeinfo.c
+++ b/src/libdw/dwarf_getarangeinfo.c
@@ -1,52 +1,31 @@
 /* Return list address ranges.
    Copyright (C) 2000, 2001, 2002, 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getaranges.c b/src/libdw/dwarf_getaranges.c
index f18d63d..4953af5 100644
--- a/src/libdw/dwarf_getaranges.c
+++ b/src/libdw/dwarf_getaranges.c
@@ -1,52 +1,31 @@
 /* Return list address ranges.
    Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -69,7 +48,9 @@
 {
   struct arangelist *const *p1 = a, *const *p2 = b;
   struct arangelist *l1 = *p1, *l2 = *p2;
-  return l1->arange.addr - l2->arange.addr;
+  if (l1->arange.addr != l2->arange.addr)
+    return (l1->arange.addr < l2->arange.addr) ? -1 : 1;
+  return 0;
 }
 
 int
@@ -165,9 +146,10 @@
       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)))
diff --git a/src/libdw/dwarf_getattrcnt.c b/src/libdw/dwarf_getattrcnt.c
index f85adf0..72be766 100644
--- a/src/libdw/dwarf_getattrcnt.c
+++ b/src/libdw/dwarf_getattrcnt.c
@@ -1,52 +1,31 @@
 /* Get number of attributes of abbreviation.
    Copyright (C) 2003, 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getattrs.c b/src/libdw/dwarf_getattrs.c
index 051dc25..0da8b5b 100644
--- a/src/libdw/dwarf_getattrs.c
+++ b/src/libdw/dwarf_getattrs.c
@@ -1,52 +1,31 @@
 /* Get attributes of the DIE.
-   Copyright (C) 2004, 2005, 2008, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2004, 2005, 2008, 2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -65,17 +44,12 @@
   if (unlikely (offset == 1))
     return 1;
 
-  const unsigned char *die_addr = die->addr;
+  const unsigned char *die_addr;
 
-  /* Get the abbreviation code.  */
-  unsigned int u128;
-  get_uleb128 (u128, die_addr);
+  /* Find the abbreviation entry.  */
+  Dwarf_Abbrev *abbrevp = __libdw_dieabbrev (die, &die_addr);
 
-  if (die->abbrev == NULL)
-    /* Find the abbreviation.  */
-    die->abbrev = __libdw_findabbrev (die->cu, u128);
-
-  if (unlikely (die->abbrev == DWARF_END_ABBREV))
+  if (unlikely (abbrevp == DWARF_END_ABBREV))
     {
     invalid_dwarf:
       __libdw_seterrno (DWARF_E_INVALID_DWARF);
@@ -83,26 +57,28 @@
     }
 
   /* This is where the attributes start.  */
-  const unsigned char *attrp = die->abbrev->attrp;
-  const unsigned char *const offset_attrp = die->abbrev->attrp + offset;
+  const unsigned char *attrp = abbrevp->attrp;
+  const unsigned char *const offset_attrp = abbrevp->attrp + offset;
 
   /* Go over the list of attributes.  */
   Dwarf *dbg = die->cu->dbg;
+  const unsigned char *endp;
+  endp = ((const unsigned char *) dbg->sectiondata[IDX_debug_abbrev]->d_buf
+	  + dbg->sectiondata[IDX_debug_abbrev]->d_size);
   while (1)
     {
       /* Are we still in bounds?  */
-      if (unlikely (attrp
-		    >= ((unsigned char *) dbg->sectiondata[IDX_debug_abbrev]->d_buf
-			+ dbg->sectiondata[IDX_debug_abbrev]->d_size)))
+      if (unlikely (attrp >= endp))
 	goto invalid_dwarf;
 
       /* Get attribute name and form.  */
       Dwarf_Attribute attr;
       const unsigned char *remembered_attrp = attrp;
 
-      // XXX Fix bound checks
-      get_uleb128 (attr.code, attrp);
-      get_uleb128 (attr.form, attrp);
+      get_uleb128 (attr.code, attrp, endp);
+      if (unlikely (attrp >= endp))
+	goto invalid_dwarf;
+      get_uleb128 (attr.form, attrp, endp);
 
       /* We can stop if we found the attribute with value zero.  */
       if (attr.code == 0 && attr.form == 0)
@@ -125,20 +101,18 @@
 	    /* Return the offset of the start of the attribute, so that
 	       dwarf_getattrs() can be restarted from this point if the
 	       caller so desires.  */
-	    return remembered_attrp - die->abbrev->attrp;
+	    return remembered_attrp - abbrevp->attrp;
 	}
 
       /* Skip over the rest of this attribute (if there is any).  */
       if (attr.form != 0)
 	{
-	  size_t len = __libdw_form_val_len (dbg, die->cu, attr.form,
-					     die_addr);
-
+	  size_t len = __libdw_form_val_len (die->cu, attr.form, die_addr);
 	  if (unlikely (len == (size_t) -1l))
 	    /* Something wrong with the file.  */
 	    return -1l;
 
-	  // XXX We need better boundary checks.
+	  // __libdw_form_val_len will have done a bounds check.
 	  die_addr += len;
 	}
     }
diff --git a/src/libdw/dwarf_getcfi.c b/src/libdw/dwarf_getcfi.c
index c935631..a49a9f0 100644
--- a/src/libdw/dwarf_getcfi.c
+++ b/src/libdw/dwarf_getcfi.c
@@ -1,51 +1,30 @@
 /* Get CFI from DWARF file.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getcfi_elf.c b/src/libdw/dwarf_getcfi_elf.c
index 64a2a88..61ca60d 100644
--- a/src/libdw/dwarf_getcfi_elf.c
+++ b/src/libdw/dwarf_getcfi_elf.c
@@ -1,51 +1,30 @@
 /* Get CFI from ELF file's exception-handling info.
-   Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -161,8 +140,8 @@
     }
 
   Dwarf_Addr eh_frame_ptr;
-  size_t search_table_entries;
-  uint8_t search_table_encoding;
+  size_t search_table_entries = 0;
+  uint8_t search_table_encoding = 0;
   const uint8_t *search_table = parse_eh_frame_hdr (data->d_buf, phdr->p_filesz,
 						    phdr->p_vaddr, ehdr,
 						    &eh_frame_ptr,
@@ -301,8 +280,13 @@
 	      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;
+	    }
 	}
     }
 
diff --git a/src/libdw/dwarf_getelf.c b/src/libdw/dwarf_getelf.c
index daf3b9a..ecd1859 100644
--- a/src/libdw/dwarf_getelf.c
+++ b/src/libdw/dwarf_getelf.c
@@ -1,52 +1,31 @@
 /* Retrieve ELF descriptor used for DWARF access.
    Copyright (C) 2002, 2004, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getfuncs.c b/src/libdw/dwarf_getfuncs.c
index c0352fb..f79b0a7 100644
--- a/src/libdw/dwarf_getfuncs.c
+++ b/src/libdw/dwarf_getfuncs.c
@@ -1,52 +1,31 @@
 /* Get function information.
-   Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2013 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -56,6 +35,63 @@
 #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)
@@ -64,31 +100,19 @@
 		|| 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
+	       || lang == DW_LANG_C11);
 
-  int res;
-  if (offset == 0)
-    res = INTUSE(dwarf_child) (cudie, &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);
+
+  if (res == DWARF_CB_ABORT)
+    return (ptrdiff_t) v.last_addr;
   else
-    {
-      die = INTUSE(dwarf_offdie) (cudie->cu->dbg, offset, &die_mem);
-      res = INTUSE(dwarf_siblingof) (die, &die_mem);
-    }
-  die = res != 0 ? NULL : &die_mem;
-
-  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;
+    return res;
 }
diff --git a/src/libdw/dwarf_getlocation.c b/src/libdw/dwarf_getlocation.c
index f7a60f9..068f385 100644
--- a/src/libdw/dwarf_getlocation.c
+++ b/src/libdw/dwarf_getlocation.c
@@ -1,52 +1,31 @@
 /* Return location expression list.
-   Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2010, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -77,6 +56,11 @@
     case DW_AT_frame_base:
     case DW_AT_return_addr:
     case DW_AT_static_link:
+    case DW_AT_segment:
+    case DW_AT_GNU_call_site_value:
+    case DW_AT_GNU_call_site_data_value:
+    case DW_AT_GNU_call_site_target:
+    case DW_AT_GNU_call_site_target_clobbered:
       break;
 
     default:
@@ -115,13 +99,15 @@
 /* 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;
+  // Ignored, equal to op->number.  And data length already checked.
+  (void) __libdw_get_uleb128 (&data, data + len_leb128 (Dwarf_Word));
   block->addr = op;
-  block->data = data + op->number2;
+  block->data = (unsigned char *) data;
   block->length = op->number;
   (void) tsearch (block, cache, loc_compare);
 }
@@ -220,6 +206,13 @@
 			   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);
@@ -245,6 +238,21 @@
 
   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)
@@ -360,6 +368,7 @@
 
 	case DW_OP_const4s:
 	case DW_OP_call4:
+	case DW_OP_GNU_parameter_ref:
 	  if (unlikely (data + 4 > end_data))
 	    goto invalid;
 
@@ -384,39 +393,43 @@
 	case DW_OP_plus_uconst:
 	case DW_OP_regx:
 	case DW_OP_piece:
-	  /* XXX Check size.  */
-	  get_uleb128 (newloc->number, data);
+	case DW_OP_GNU_convert:
+	case DW_OP_GNU_reinterpret:
+	  get_uleb128 (newloc->number, data, end_data);
 	  break;
 
 	case DW_OP_consts:
 	case DW_OP_breg0 ... DW_OP_breg31:
 	case DW_OP_fbreg:
-	  /* XXX Check size.  */
-	  get_sleb128 (newloc->number, data);
+	  get_sleb128 (newloc->number, data, end_data);
 	  break;
 
 	case DW_OP_bregx:
-	  /* XXX Check size.  */
-	  get_uleb128 (newloc->number, data);
-	  get_sleb128 (newloc->number2, data);
+	  get_uleb128 (newloc->number, data, end_data);
+	  if (unlikely (data >= end_data))
+	    goto invalid;
+	  get_sleb128 (newloc->number2, data, end_data);
 	  break;
 
 	case DW_OP_bit_piece:
-	  /* XXX Check size.  */
-	  get_uleb128 (newloc->number, data);
-	  get_uleb128 (newloc->number2, data);
+	case DW_OP_GNU_regval_type:
+	  get_uleb128 (newloc->number, data, end_data);
+	  if (unlikely (data >= end_data))
+	    goto invalid;
+	  get_uleb128 (newloc->number2, data, end_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;
 
-	  /* XXX Check size.  */
-	  get_uleb128 (newloc->number, data); /* Block length.  */
+	  /* start of block inc. len.  */
+	  newloc->number2 = (Dwarf_Word) (uintptr_t) data;
+	  get_uleb128 (newloc->number, data, end_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;
 
@@ -425,8 +438,32 @@
 	  if (__libdw_read_offset_inc (dbg, sec_index, &data, ref_size,
 				       &newloc->number, IDX_debug_info, 0))
 	    return -1;
-	  /* XXX Check size.  */
-	  get_uleb128 (newloc->number2, data); /* Byte offset.  */
+	  if (unlikely (data >= end_data))
+	    goto invalid;
+	  get_uleb128 (newloc->number2, data, end_data); /* Byte offset.  */
+	  break;
+
+	case DW_OP_GNU_deref_type:
+	  if (unlikely (data + 1 >= end_data))
+	    goto invalid;
+	  newloc->number = *data++;
+	  get_uleb128 (newloc->number2, data, end_data);
+	  break;
+
+	case DW_OP_GNU_const_type:
+	  {
+	    size_t size;
+	    get_uleb128 (newloc->number, data, end_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:
@@ -437,8 +474,8 @@
   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;
     }
 
@@ -455,9 +492,6 @@
       ++n;
     }
 
-  if (cfap)
-    ++n;
-
   /* Allocate the array.  */
   Dwarf_Op *result;
   if (dbg != NULL)
@@ -477,16 +511,6 @@
   *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.  */
@@ -497,7 +521,7 @@
       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;
     }
@@ -530,6 +554,14 @@
 getlocation (struct Dwarf_CU *cu, const Dwarf_Block *block,
 	     Dwarf_Op **llbuf, size_t *listlen, int sec_index)
 {
+  /* Empty location expressions don't have any ops to intern.
+     Note that synthetic empty_cu doesn't have an associated DWARF dbg.  */
+  if (block->length == 0)
+    {
+      *listlen = 0;
+      return 0;
+    }
+
   return __libdw_intern_expression (cu->dbg, cu->dbg->other_byte_order,
 				    cu->address_size, (cu->version == 2
 						       ? cu->address_size
@@ -560,6 +592,121 @@
   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;
@@ -598,85 +745,109 @@
   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);
+	  llbufs[got] = expr;
+	  listlens[got] = expr_len;
+	}
+      ++got;
+    }
+
+  /* We might stop early, so off can be zero or positive on success.  */
+  if (off < 0)
+    return -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)
+	{
+	  if (getlocation (attr->cu, &block, expr, exprlen,
+			   cu_sec_idx (attr->cu)) != 0)
+	    return -1;
+
+	  /* This is the one and only location covering everything. */
+	  *startp = 0;
+	  *endp = -1;
+	  return 1;
+	}
+
+      int error = INTUSE(dwarf_errno) ();
+      if (unlikely (error != DWARF_E_NO_BLOCK))
+	{
+	  __libdw_seterrno (error);
 	  return -1;
 	}
 
-      Dwarf_Addr begin;
-      Dwarf_Addr end;
-
-      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)
+      int result = check_constant_offset (attr, expr, exprlen);
+      if (result != 1)
 	{
-	  /* 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 (result == 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.  */
-	      base = 0;
+	      /* This is the one and only location covering everything. */
+	      *startp = 0;
+	      *endp = -1;
+	      return 1;
 	    }
+	  return result;
 	}
 
-      if (address >= base + begin && address < base + end)
-	{
-	  /* This one matches the address.  */
-	  if (llbufs != NULL
-	      && unlikely (getlocation (attr->cu, &block,
-					&llbufs[got], &listlens[got],
-					IDX_debug_loc) != 0))
-	    return -1;
-	  ++got;
-	}
+      /* 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);
 }
diff --git a/src/libdw/dwarf_getlocation_attr.c b/src/libdw/dwarf_getlocation_attr.c
new file mode 100644
index 0000000..3229baf
--- /dev/null
+++ b/src/libdw/dwarf_getlocation_attr.c
@@ -0,0 +1,122 @@
+/* Return DWARF attribute associated with a location expression op.
+   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 <dwarf.h>
+#include <libdwP.h>
+
+static Dwarf_CU *
+attr_form_cu (Dwarf_Attribute *attr)
+{
+  /* If the attribute has block/expr form the data comes from the
+     .debug_info from the same cu as the attr.  Otherwise it comes from
+     the .debug_loc data section.  */
+  switch (attr->form)
+    {
+    case DW_FORM_block1:
+    case DW_FORM_block2:
+    case DW_FORM_block4:
+    case DW_FORM_block:
+    case DW_FORM_exprloc:
+      return attr->cu;
+    default:
+      return attr->cu->dbg->fake_loc_cu;
+    }
+}
+
+int
+dwarf_getlocation_attr (attr, op, result)
+     Dwarf_Attribute *attr;
+     const Dwarf_Op *op;
+     Dwarf_Attribute *result;
+{
+  if (attr == NULL)
+    return -1;
+
+  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;
+	result->cu = attr_form_cu (attr);
+	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;
+	result->cu = attr_form_cu (attr);
+	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;
+	result->cu = attr_form_cu (attr);
+	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);
+	      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);
+	      return 0;
+	    }
+	}
+	break;
+
+      default:
+	__libdw_seterrno (DWARF_E_INVALID_ACCESS);
+	return -1;
+    }
+
+  return 0;
+}
diff --git a/src/libdw/dwarf_getlocation_die.c b/src/libdw/dwarf_getlocation_die.c
new file mode 100644
index 0000000..fa03aac
--- /dev/null
+++ b/src/libdw/dwarf_getlocation_die.c
@@ -0,0 +1,78 @@
+/* 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);
diff --git a/src/libdw/dwarf_getlocation_implicit_pointer.c b/src/libdw/dwarf_getlocation_implicit_pointer.c
index 4d9f6b9..f1c16be 100644
--- a/src/libdw/dwarf_getlocation_implicit_pointer.c
+++ b/src/libdw/dwarf_getlocation_implicit_pointer.c
@@ -1,51 +1,30 @@
 /* Return associated attribute for DW_OP_GNU_implicit_pointer.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -55,6 +34,20 @@
 #include <dwarf.h>
 
 
+static unsigned char empty_exprloc = 0;
+static Dwarf_CU empty_cu = { .startp = &empty_exprloc,
+			     .endp = &empty_exprloc + 1 };
+
+void
+internal_function
+__libdw_empty_loc_attr (Dwarf_Attribute *attr)
+{
+  attr->code = DW_AT_location;
+  attr->form = DW_FORM_exprloc;
+  attr->valp = &empty_exprloc;
+  attr->cu = &empty_cu;
+}
+
 int
 dwarf_getlocation_implicit_pointer (attr, op, result)
      Dwarf_Attribute *attr;
@@ -78,8 +71,8 @@
   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);
+      return 0;
     }
 
   return 0;
diff --git a/src/libdw/dwarf_getmacros.c b/src/libdw/dwarf_getmacros.c
index b9ec34b..f9f2996 100644
--- a/src/libdw/dwarf_getmacros.c
+++ b/src/libdw/dwarf_getmacros.c
@@ -1,165 +1,548 @@
 /* Get macro information.
-   Copyright (C) 2002-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002-2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <assert.h>
 #include <dwarf.h>
+#include <search.h>
+#include <stdlib.h>
 #include <string.h>
 
 #include <libdwP.h>
 
-
-ptrdiff_t
-dwarf_getmacros (die, callback, arg, offset)
-     Dwarf_Die *die;
-     int (*callback) (Dwarf_Macro *, void *);
-     void *arg;
-     ptrdiff_t offset;
+static int
+get_offset_from (Dwarf_Die *die, int name, Dwarf_Word *retp)
 {
-  if (die == NULL)
+  /* Get the appropriate attribute.  */
+  Dwarf_Attribute attr;
+  if (INTUSE(dwarf_attr) (die, name, &attr) == NULL)
     return -1;
 
-  Elf_Data *d = die->cu->dbg->sectiondata[IDX_debug_macinfo];
-  if (unlikely (d == NULL) || unlikely (d->d_buf == NULL))
+  /* Offset into the corresponding section.  */
+  return INTUSE(dwarf_formudata) (&attr, retp);
+}
+
+static int
+macro_op_compare (const void *p1, const void *p2)
+{
+  const Dwarf_Macro_Op_Table *t1 = (const Dwarf_Macro_Op_Table *) p1;
+  const Dwarf_Macro_Op_Table *t2 = (const Dwarf_Macro_Op_Table *) p2;
+
+  if (t1->offset < t2->offset)
+    return -1;
+  if (t1->offset > t2->offset)
+    return 1;
+
+  if (t1->sec_index < t2->sec_index)
+    return -1;
+  if (t1->sec_index > t2->sec_index)
+    return 1;
+
+  return 0;
+}
+
+static void
+build_table (Dwarf_Macro_Op_Table *table,
+	     Dwarf_Macro_Op_Proto op_protos[static 255])
+{
+  unsigned ct = 0;
+  for (unsigned i = 1; i < 256; ++i)
+    if (op_protos[i - 1].forms != NULL)
+      table->table[table->opcodes[i - 1] = ct++] = op_protos[i - 1];
+    else
+      table->opcodes[i - 1] = 0xff;
+}
+
+#define MACRO_PROTO(NAME, ...)					\
+  Dwarf_Macro_Op_Proto NAME = ({				\
+      static const uint8_t proto[] = {__VA_ARGS__};		\
+      (Dwarf_Macro_Op_Proto) {sizeof proto, proto};		\
+    })
+
+enum { macinfo_data_size = offsetof (Dwarf_Macro_Op_Table, table[5]) };
+static unsigned char macinfo_data[macinfo_data_size]
+	__attribute__ ((aligned (__alignof (Dwarf_Macro_Op_Table))));
+
+static __attribute__ ((constructor)) void
+init_macinfo_table (void)
+{
+  MACRO_PROTO (p_udata_str, DW_FORM_udata, DW_FORM_string);
+  MACRO_PROTO (p_udata_udata, DW_FORM_udata, DW_FORM_udata);
+  MACRO_PROTO (p_none);
+
+  Dwarf_Macro_Op_Proto op_protos[255] =
+    {
+      [DW_MACINFO_define - 1] = p_udata_str,
+      [DW_MACINFO_undef - 1] = p_udata_str,
+      [DW_MACINFO_vendor_ext - 1] = p_udata_str,
+      [DW_MACINFO_start_file - 1] = p_udata_udata,
+      [DW_MACINFO_end_file - 1] = p_none,
+      /* If you are adding more elements to this array, increase
+	 MACINFO_DATA_SIZE above.  */
+    };
+
+  Dwarf_Macro_Op_Table *macinfo_table = (void *) macinfo_data;
+  memset (macinfo_table, 0, sizeof macinfo_data);
+  build_table (macinfo_table, op_protos);
+  macinfo_table->sec_index = IDX_debug_macinfo;
+}
+
+static Dwarf_Macro_Op_Table *
+get_macinfo_table (Dwarf *dbg, Dwarf_Word macoff, Dwarf_Die *cudie)
+{
+  assert (cudie != NULL);
+
+  Dwarf_Attribute attr_mem, *attr
+    = INTUSE(dwarf_attr) (cudie, DW_AT_stmt_list, &attr_mem);
+  Dwarf_Off line_offset = (Dwarf_Off) -1;
+  if (attr != NULL)
+    INTUSE(dwarf_formudata) (attr, &line_offset);
+
+  Dwarf_Macro_Op_Table *table = libdw_alloc (dbg, Dwarf_Macro_Op_Table,
+					     macinfo_data_size, 1);
+  memcpy (table, macinfo_data, macinfo_data_size);
+
+  table->offset = macoff;
+  table->sec_index = IDX_debug_macinfo;
+  table->line_offset = line_offset;
+  table->is_64bit = cudie->cu->address_size == 8;
+  table->comp_dir = __libdw_getcompdir (cudie);
+
+  return table;
+}
+
+static Dwarf_Macro_Op_Table *
+get_table_for_offset (Dwarf *dbg, Dwarf_Word macoff,
+		      const unsigned char *readp,
+		      const unsigned char *const endp,
+		      Dwarf_Die *cudie)
+{
+  const unsigned char *startp = readp;
+
+  /* Request at least 3 bytes for header.  */
+  if (readp + 3 > endp)
+    {
+    invalid_dwarf:
+      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+      return NULL;
+    }
+
+  uint16_t version = read_2ubyte_unaligned_inc (dbg, readp);
+  if (version != 4)
+    {
+      __libdw_seterrno (DWARF_E_INVALID_VERSION);
+      return NULL;
+    }
+
+  uint8_t flags = *readp++;
+  bool is_64bit = (flags & 0x1) != 0;
+
+  Dwarf_Off line_offset = (Dwarf_Off) -1;
+  if ((flags & 0x2) != 0)
+    {
+      line_offset = read_addr_unaligned_inc (is_64bit ? 8 : 4, dbg, readp);
+      if (readp > endp)
+	goto invalid_dwarf;
+    }
+  else if (cudie != NULL)
+    {
+      Dwarf_Attribute attr_mem, *attr
+	= INTUSE(dwarf_attr) (cudie, DW_AT_stmt_list, &attr_mem);
+      if (attr != NULL)
+	INTUSE(dwarf_formudata) (attr, &line_offset);
+    }
+
+  /* """The macinfo entry types defined in this standard may, but
+     might not, be described in the table""".
+
+     I.e. these may be present.  It's tempting to simply skip them,
+     but it's probably more correct to tolerate that a producer tweaks
+     the way certain opcodes are encoded, for whatever reasons.  */
+
+  MACRO_PROTO (p_udata_str, DW_FORM_udata, DW_FORM_string);
+  MACRO_PROTO (p_udata_strp, DW_FORM_udata, DW_FORM_strp);
+  MACRO_PROTO (p_udata_udata, DW_FORM_udata, DW_FORM_udata);
+  MACRO_PROTO (p_secoffset, DW_FORM_sec_offset);
+  MACRO_PROTO (p_none);
+
+  Dwarf_Macro_Op_Proto op_protos[255] =
+    {
+      [DW_MACRO_GNU_define - 1] = p_udata_str,
+      [DW_MACRO_GNU_undef - 1] = p_udata_str,
+      [DW_MACRO_GNU_define_indirect - 1] = p_udata_strp,
+      [DW_MACRO_GNU_undef_indirect - 1] = p_udata_strp,
+      [DW_MACRO_GNU_start_file - 1] = p_udata_udata,
+      [DW_MACRO_GNU_end_file - 1] = p_none,
+      [DW_MACRO_GNU_transparent_include - 1] = p_secoffset,
+      /* N.B. DW_MACRO_undef_indirectx, DW_MACRO_define_indirectx
+	 should be added when 130313.1 is supported.  */
+    };
+
+  if ((flags & 0x4) != 0)
+    {
+      unsigned count = *readp++;
+      for (unsigned i = 0; i < count; ++i)
+	{
+	  unsigned opcode = *readp++;
+
+	  Dwarf_Macro_Op_Proto e;
+	  if (readp >= endp)
+	    goto invalid;
+	  get_uleb128 (e.nforms, readp, endp);
+	  e.forms = readp;
+	  op_protos[opcode - 1] = e;
+
+	  readp += e.nforms;
+	  if (readp > endp)
+	    {
+	    invalid:
+	      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+	      return NULL;
+	    }
+	}
+    }
+
+  size_t ct = 0;
+  for (unsigned i = 1; i < 256; ++i)
+    if (op_protos[i - 1].forms != NULL)
+      ++ct;
+
+  /* We support at most 0xfe opcodes defined in the table, as 0xff is
+     a value that means that given opcode is not stored at all.  But
+     that should be fine, as opcode 0 is not allocated.  */
+  assert (ct < 0xff);
+
+  size_t macop_table_size = offsetof (Dwarf_Macro_Op_Table, table[ct]);
+
+  Dwarf_Macro_Op_Table *table = libdw_alloc (dbg, Dwarf_Macro_Op_Table,
+					     macop_table_size, 1);
+
+  *table = (Dwarf_Macro_Op_Table) {
+    .offset = macoff,
+    .sec_index = IDX_debug_macro,
+    .line_offset = line_offset,
+    .header_len = readp - startp,
+    .version = version,
+    .is_64bit = is_64bit,
+
+    /* NULL if CUDIE is NULL or DW_AT_comp_dir is absent.  */
+    .comp_dir = __libdw_getcompdir (cudie),
+  };
+  build_table (table, op_protos);
+
+  return table;
+}
+
+static Dwarf_Macro_Op_Table *
+cache_op_table (Dwarf *dbg, int sec_index, Dwarf_Off macoff,
+		const unsigned char *startp,
+		const unsigned char *const endp,
+		Dwarf_Die *cudie)
+{
+  Dwarf_Macro_Op_Table fake = { .offset = macoff, .sec_index = sec_index };
+  Dwarf_Macro_Op_Table **found = tfind (&fake, &dbg->macro_ops,
+					macro_op_compare);
+  if (found != NULL)
+    return *found;
+
+  Dwarf_Macro_Op_Table *table = sec_index == IDX_debug_macro
+    ? get_table_for_offset (dbg, macoff, startp, endp, cudie)
+    : get_macinfo_table (dbg, macoff, cudie);
+
+  if (table == NULL)
+    return NULL;
+
+  Dwarf_Macro_Op_Table **ret = tsearch (table, &dbg->macro_ops,
+					macro_op_compare);
+  if (unlikely (ret == NULL))
+    {
+      __libdw_seterrno (DWARF_E_NOMEM);
+      return NULL;
+    }
+
+  return *ret;
+}
+
+static ptrdiff_t
+read_macros (Dwarf *dbg, int sec_index,
+	     Dwarf_Off macoff, int (*callback) (Dwarf_Macro *, void *),
+	     void *arg, ptrdiff_t offset, bool accept_0xff,
+	     Dwarf_Die *cudie)
+{
+  Elf_Data *d = dbg->sectiondata[sec_index];
+  if (unlikely (d == NULL || d->d_buf == NULL))
     {
       __libdw_seterrno (DWARF_E_NO_ENTRY);
       return -1;
     }
 
-  if (offset == 0)
+  if (unlikely (macoff >= d->d_size))
     {
-      /* Get the appropriate attribute.  */
-      Dwarf_Attribute attr;
-      if (INTUSE(dwarf_attr) (die, DW_AT_macro_info, &attr) == NULL)
-	return -1;
-
-      /* Offset into the .debug_macinfo section.  */
-      Dwarf_Word macoff;
-      if (INTUSE(dwarf_formudata) (&attr, &macoff) != 0)
-	return -1;
-
-      offset = macoff;
+      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+      return -1;
     }
-  if (unlikely (offset > (ptrdiff_t) d->d_size))
-    goto invalid;
 
-  const unsigned char *readp = d->d_buf + offset;
-  const unsigned char *readendp = d->d_buf + d->d_size;
+  const unsigned char *const startp = d->d_buf + macoff;
+  const unsigned char *const endp = d->d_buf + d->d_size;
 
-  if (readp == readendp)
-    return 0;
+  Dwarf_Macro_Op_Table *table = cache_op_table (dbg, sec_index, macoff,
+						startp, endp, cudie);
+  if (table == NULL)
+    return -1;
 
-  while (readp < readendp)
+  if (offset == 0)
+    offset = table->header_len;
+
+  assert (offset >= 0);
+  assert (offset < endp - startp);
+  const unsigned char *readp = startp + offset;
+
+  while (readp < endp)
     {
       unsigned int opcode = *readp++;
-      unsigned int u128;
-      unsigned int u128_2 = 0;
-      const char *str = NULL;
-      const unsigned char *endp;
+      if (opcode == 0)
+	/* Nothing more to do.  */
+	return 0;
 
-      switch (opcode)
+      if (unlikely (opcode == 0xff && ! accept_0xff))
 	{
-	case DW_MACINFO_define:
-	case DW_MACINFO_undef:
-	case DW_MACINFO_vendor_ext:
-	  /*  For the first two opcodes the parameters are
-	        line, string
-	      For the latter
-	        number, string.
-	      We can treat these cases together.  */
-	  get_uleb128 (u128, readp);
-
-	  endp = memchr (readp, '\0', readendp - readp);
-	  if (endp == NULL)
-	    goto invalid;
-
-	  str = (char *) readp;
-	  readp = endp + 1;
-	  break;
-
-	case DW_MACINFO_start_file:
-	  /* The two parameters are line and file index.  */
-	  get_uleb128 (u128, readp);
-	  get_uleb128 (u128_2, readp);
-	  break;
-
-	case DW_MACINFO_end_file:
-	  /* No parameters for this one.  */
-	  u128 = 0;
-	  break;
-
-	case 0:
-	  /* Nothing more to do.  */
-	  return 0;
-
-	default:
-	  goto invalid;
+	  /* See comment below at dwarf_getmacros for explanation of
+	     why we are doing this.  */
+	  __libdw_seterrno (DWARF_E_INVALID_OPCODE);
+	  return -1;
 	}
 
-      Dwarf_Macro mac;
-      mac.opcode = opcode;
-      mac.param1 = u128;
-      if (str == NULL)
-	mac.param2.u = u128_2;
-      else
-	mac.param2.s = str;
+      unsigned int idx = table->opcodes[opcode - 1];
+      if (idx == 0xff)
+	{
+	  __libdw_seterrno (DWARF_E_INVALID_OPCODE);
+	  return -1;
+	}
 
-      if (callback (&mac, arg) != DWARF_CB_OK)
-	return readp - (const unsigned char *) d->d_buf;
+      Dwarf_Macro_Op_Proto *proto = &table->table[idx];
+
+      /* A fake CU with bare minimum data to fool dwarf_formX into
+	 doing the right thing with the attributes that we put out.
+	 We arbitrarily pretend it's version 4.  */
+      Dwarf_CU fake_cu = {
+	.dbg = dbg,
+	.version = 4,
+	.offset_size = table->is_64bit ? 8 : 4,
+	.startp = (void *) startp + offset,
+	.endp = (void *) endp,
+      };
+
+      Dwarf_Attribute attributes[proto->nforms];
+      for (Dwarf_Word i = 0; i < proto->nforms; ++i)
+	{
+	  /* We pretend this is a DW_AT_GNU_macros attribute so that
+	     DW_FORM_sec_offset forms get correctly interpreted as
+	     offset into .debug_macro.  */
+	  attributes[i].code = DW_AT_GNU_macros;
+	  attributes[i].form = proto->forms[i];
+	  attributes[i].valp = (void *) readp;
+	  attributes[i].cu = &fake_cu;
+
+	  size_t len = __libdw_form_val_len (&fake_cu, proto->forms[i], readp);
+	  if (len == (size_t) -1)
+	    return -1;
+
+	  readp += len;
+	}
+
+      Dwarf_Macro macro = {
+	.table = table,
+	.opcode = opcode,
+	.attributes = attributes,
+      };
+
+      if (callback (&macro, arg) != DWARF_CB_OK)
+	return readp - startp;
     }
 
-  /* If we come here the termination of the data for the CU is not
-     present.  */
- invalid:
-  __libdw_seterrno (DWARF_E_INVALID_DWARF);
-  return -1;
+  return 0;
+}
+
+/* Token layout:
+
+   - The highest bit is used for distinguishing between callers that
+     know that opcode 0xff may have one of two incompatible meanings.
+     The mask that we use for selecting this bit is
+     DWARF_GETMACROS_START.
+
+   - The rest of the token (31 or 63 bits) encodes address inside the
+     macro unit.
+
+   Besides, token value of 0 signals end of iteration and -1 is
+   reserved for signaling errors.  That means it's impossible to
+   represent maximum offset of a .debug_macro unit to new-style
+   callers (which in practice decreases the permissible macro unit
+   size by another 1 byte).  */
+
+static ptrdiff_t
+token_from_offset (ptrdiff_t offset, bool accept_0xff)
+{
+  if (offset == -1 || offset == 0)
+    return offset;
+
+  /* Make sure the offset didn't overflow into the flag bit.  */
+  if ((offset & DWARF_GETMACROS_START) != 0)
+    {
+      __libdw_seterrno (DWARF_E_TOO_BIG);
+      return -1;
+    }
+
+  if (accept_0xff)
+    offset |= DWARF_GETMACROS_START;
+
+  return offset;
+}
+
+static ptrdiff_t
+offset_from_token (ptrdiff_t token, bool *accept_0xffp)
+{
+  *accept_0xffp = (token & DWARF_GETMACROS_START) != 0;
+  token &= ~DWARF_GETMACROS_START;
+
+  return token;
+}
+
+static ptrdiff_t
+gnu_macros_getmacros_off (Dwarf *dbg, Dwarf_Off macoff,
+			  int (*callback) (Dwarf_Macro *, void *),
+			  void *arg, ptrdiff_t offset, bool accept_0xff,
+			  Dwarf_Die *cudie)
+{
+  assert (offset >= 0);
+
+  if (macoff >= dbg->sectiondata[IDX_debug_macro]->d_size)
+    {
+      __libdw_seterrno (DWARF_E_INVALID_OFFSET);
+      return -1;
+    }
+
+  return read_macros (dbg, IDX_debug_macro, macoff,
+		      callback, arg, offset, accept_0xff, cudie);
+}
+
+static ptrdiff_t
+macro_info_getmacros_off (Dwarf *dbg, Dwarf_Off macoff,
+			  int (*callback) (Dwarf_Macro *, void *),
+			  void *arg, ptrdiff_t offset, Dwarf_Die *cudie)
+{
+  assert (offset >= 0);
+
+  return read_macros (dbg, IDX_debug_macinfo, macoff,
+		      callback, arg, offset, true, cudie);
+}
+
+ptrdiff_t
+dwarf_getmacros_off (Dwarf *dbg, Dwarf_Off macoff,
+		     int (*callback) (Dwarf_Macro *, void *),
+		     void *arg, ptrdiff_t token)
+{
+  if (dbg == NULL)
+    {
+      __libdw_seterrno (DWARF_E_NO_DWARF);
+      return -1;
+    }
+
+  bool accept_0xff;
+  ptrdiff_t offset = offset_from_token (token, &accept_0xff);
+  assert (accept_0xff);
+
+  offset = gnu_macros_getmacros_off (dbg, macoff, callback, arg, offset,
+				     accept_0xff, NULL);
+
+  return token_from_offset (offset, accept_0xff);
+}
+
+ptrdiff_t
+dwarf_getmacros (cudie, callback, arg, token)
+     Dwarf_Die *cudie;
+     int (*callback) (Dwarf_Macro *, void *);
+     void *arg;
+     ptrdiff_t token;
+{
+  if (cudie == NULL)
+    {
+      __libdw_seterrno (DWARF_E_NO_DWARF);
+      return -1;
+    }
+
+  /* This function might be called from a code that expects to see
+     DW_MACINFO_* opcodes, not DW_MACRO_{GNU_,}* ones.  It is fine to
+     serve most DW_MACRO_{GNU_,}* opcodes to such code, because those
+     whose values are the same as DW_MACINFO_* ones also have the same
+     behavior.  It is not very likely that a .debug_macro section
+     would only use the part of opcode space that it shares with
+     .debug_macinfo, but it is possible.  Serving the opcodes that are
+     only valid in DW_MACRO_{GNU_,}* domain is OK as well, because
+     clients in general need to be ready that newer standards define
+     more opcodes, and have coping mechanisms for unfamiliar opcodes.
+
+     The one exception to the above rule is opcode 0xff, which has
+     concrete semantics in .debug_macinfo, but falls into vendor block
+     in .debug_macro, and can be assigned to do whatever.  There is
+     some small probability that the two opcodes would look
+     superficially similar enough that a client would be confused and
+     misbehave as a result.  For this reason, we refuse to serve
+     through this interface 0xff's originating from .debug_macro
+     unless the TOKEN that we obtained indicates the call originates
+     from a new-style caller.  See above for details on what
+     information is encoded into tokens.  */
+
+  bool accept_0xff;
+  ptrdiff_t offset = offset_from_token (token, &accept_0xff);
+
+  /* DW_AT_macro_info */
+  if (dwarf_hasattr (cudie, DW_AT_macro_info))
+    {
+      Dwarf_Word macoff;
+      if (get_offset_from (cudie, DW_AT_macro_info, &macoff) != 0)
+	return -1;
+      offset = macro_info_getmacros_off (cudie->cu->dbg, macoff,
+					 callback, arg, offset, cudie);
+    }
+  else
+    {
+      /* DW_AT_GNU_macros, DW_AT_macros */
+      Dwarf_Word macoff;
+      if (get_offset_from (cudie, DW_AT_GNU_macros, &macoff) != 0)
+	return -1;
+      offset = gnu_macros_getmacros_off (cudie->cu->dbg, macoff,
+					 callback, arg, offset, accept_0xff,
+					 cudie);
+    }
+
+  return token_from_offset (offset, accept_0xff);
 }
diff --git a/src/libdw/dwarf_getpubnames.c b/src/libdw/dwarf_getpubnames.c
index 5560a75..19f4eae 100644
--- a/src/libdw/dwarf_getpubnames.c
+++ b/src/libdw/dwarf_getpubnames.c
@@ -1,52 +1,31 @@
 /* Get public symbol information.
    Copyright (C) 2002, 2003, 2004, 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -109,9 +88,11 @@
       /* Now we know the offset of the first offset/name pair.  */
       mem[cnt].set_start = readp + 2 + 2 * len_bytes - startp;
       mem[cnt].address_len = len_bytes;
-      if (mem[cnt].set_start >= dbg->sectiondata[IDX_debug_pubnames]->d_size)
+      size_t max_size = dbg->sectiondata[IDX_debug_pubnames]->d_size;
+      if (mem[cnt].set_start >= max_size
+	  || len - (2 + 2 * len_bytes) > max_size - mem[cnt].set_start)
 	/* Something wrong, the first entry is beyond the end of
-	   the section.  */
+	   the section.  Or the length of the whole unit is too big.  */
 	break;
 
       /* Read the version.  It better be two for now.  */
@@ -123,7 +104,8 @@
 	}
 
       /* Get the CU offset.  */
-      if (__libdw_read_offset (dbg, IDX_debug_pubnames, readp + 2, len_bytes,
+      if (__libdw_read_offset (dbg, dbg, IDX_debug_pubnames,
+			       readp + 2, len_bytes,
 			       &mem[cnt].cu_offset, IDX_debug_info, 3))
 	/* Error has been already set in reader.  */
 	goto err_return;
@@ -143,7 +125,7 @@
       readp += len;
     }
 
-  if (mem == NULL)
+  if (mem == NULL || cnt == 0)
     {
       __libdw_seterrno (DWARF_E_NO_ENTRY);
       return -1;
@@ -204,6 +186,8 @@
 
   unsigned char *startp
     = (unsigned char *) dbg->sectiondata[IDX_debug_pubnames]->d_buf;
+  unsigned char *endp
+    = startp + dbg->sectiondata[IDX_debug_pubnames]->d_size;
   unsigned char *readp = startp + offset;
   while (1)
     {
@@ -215,6 +199,8 @@
       while (1)
 	{
 	  /* READP points to the next offset/name pair.  */
+	  if (readp + dbg->pubnames_sets[cnt].address_len > endp)
+	    goto invalid_dwarf;
 	  if (dbg->pubnames_sets[cnt].address_len == 4)
 	    gl.die_offset = read_4ubyte_unaligned_inc (dbg, readp);
 	  else
@@ -228,7 +214,14 @@
 	  gl.die_offset += dbg->pubnames_sets[cnt].cu_offset;
 
 	  gl.name = (char *) readp;
-	  readp = (unsigned char *) rawmemchr (gl.name, '\0') + 1;
+	  readp = (unsigned char *) memchr (gl.name, '\0', endp - readp);
+	  if (unlikely (readp == NULL))
+	    {
+	    invalid_dwarf:
+	      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+	      return -1l;
+	    }
+	  readp++;
 
 	  /* We found name and DIE offset.  Report it.  */
 	  if (callback (dbg, &gl, arg) != DWARF_CB_OK)
diff --git a/src/libdw/dwarf_getscopes.c b/src/libdw/dwarf_getscopes.c
index 73431ba..0ca6da0 100644
--- a/src/libdw/dwarf_getscopes.c
+++ b/src/libdw/dwarf_getscopes.c
@@ -1,51 +1,30 @@
 /* Return scope DIEs containing PC address.
    Copyright (C) 2005, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getscopes_die.c b/src/libdw/dwarf_getscopes_die.c
index 07fb9b0..d361585 100644
--- a/src/libdw/dwarf_getscopes_die.c
+++ b/src/libdw/dwarf_getscopes_die.c
@@ -1,51 +1,30 @@
 /* Return scope DIEs containing given DIE.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getscopevar.c b/src/libdw/dwarf_getscopevar.c
index 6ce214f..eb50c0a 100644
--- a/src/libdw/dwarf_getscopevar.c
+++ b/src/libdw/dwarf_getscopevar.c
@@ -1,51 +1,30 @@
 /* Find a named variable or parameter within given scopes.
    Copyright (C) 2005-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getsrc_die.c b/src/libdw/dwarf_getsrc_die.c
index 96aa41f..1914cdf 100644
--- a/src/libdw/dwarf_getsrc_die.c
+++ b/src/libdw/dwarf_getsrc_die.c
@@ -1,52 +1,31 @@
 /* Find line information for address.
    Copyright (C) 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getsrc_file.c b/src/libdw/dwarf_getsrc_file.c
index bc612f6..5289c7d 100644
--- a/src/libdw/dwarf_getsrc_file.c
+++ b/src/libdw/dwarf_getsrc_file.c
@@ -1,52 +1,31 @@
 /* Find line information for given file/line/column triple.
    Copyright (C) 2005-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getsrcdirs.c b/src/libdw/dwarf_getsrcdirs.c
index 74786dd..47283ec 100644
--- a/src/libdw/dwarf_getsrcdirs.c
+++ b/src/libdw/dwarf_getsrcdirs.c
@@ -1,51 +1,30 @@
 /* Find include directories in source file information.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_getsrcfiles.c b/src/libdw/dwarf_getsrcfiles.c
index ee4de52..4bfc34b 100644
--- a/src/libdw/dwarf_getsrcfiles.c
+++ b/src/libdw/dwarf_getsrcfiles.c
@@ -1,52 +1,31 @@
 /* Return source file information of CU.
-   Copyright (C) 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2004, 2005, 2013 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -61,7 +40,8 @@
 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;
diff --git a/src/libdw/dwarf_getsrclines.c b/src/libdw/dwarf_getsrclines.c
index 6840b2b..053b30f 100644
--- a/src/libdw/dwarf_getsrclines.c
+++ b/src/libdw/dwarf_getsrclines.c
@@ -1,52 +1,31 @@
 /* Return line number information of CU.
-   Copyright (C) 2004-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2004-2010, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -55,6 +34,8 @@
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
+#include <search.h>
+
 #include "dwarf.h"
 #include "libdwP.h"
 
@@ -69,6 +50,7 @@
 {
   Dwarf_Line line;
   struct linelist *next;
+  size_t sequence;
 };
 
 
@@ -76,25 +58,791 @@
 static int
 compare_lines (const void *a, const void *b)
 {
-  Dwarf_Line *const *p1 = a;
-  Dwarf_Line *const *p2 = b;
+  struct linelist *const *p1 = a;
+  struct linelist *const *p2 = b;
+  struct linelist *list1 = *p1;
+  struct linelist *list2 = *p2;
+  Dwarf_Line *line1 = &list1->line;
+  Dwarf_Line *line2 = &list2->line;
 
-  if ((*p1)->addr == (*p2)->addr)
-    /* An end_sequence marker precedes a normal record at the same address.  */
-    return (*p2)->end_sequence - (*p1)->end_sequence;
+  if (line1->addr != line2->addr)
+    return (line1->addr < line2->addr) ? -1 : 1;
 
-  return (*p1)->addr - (*p2)->addr;
+  /* An end_sequence marker precedes a normal record at the same address.  */
+  if (line1->end_sequence != line2->end_sequence)
+    return line2->end_sequence - line1->end_sequence;
+
+  /* Otherwise, the linelist sequence maintains a stable sort.  */
+  return (list1->sequence < list2->sequence) ? -1
+    : (list1->sequence > list2->sequence) ? 1
+    : 0;
+}
+
+static int
+read_srclines (Dwarf *dbg,
+	       const unsigned char *linep, const unsigned char *lineendp,
+	       const char *comp_dir, unsigned address_size,
+	       Dwarf_Lines **linesp, Dwarf_Files **filesp)
+{
+  int res = -1;
+
+  struct linelist *linelist = NULL;
+  size_t 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;
+
+  if (unlikely (linep + 4 > lineendp))
+    {
+    invalid_data:
+      __libdw_seterrno (DWARF_E_INVALID_DEBUG_LINE);
+      goto out;
+    }
+
+  Dwarf_Word unit_length = read_4ubyte_unaligned_inc (dbg, linep);
+  unsigned int length = 4;
+  if (unlikely (unit_length == DWARF3_LENGTH_64_BIT))
+    {
+      if (unlikely (linep + 8 > lineendp))
+	goto invalid_data;
+      unit_length = read_8ubyte_unaligned_inc (dbg, linep);
+      length = 8;
+    }
+
+  /* Check whether we have enough room in the section.  */
+  if (unlikely (unit_length > (size_t) (lineendp - linep)
+      || unit_length < 2 + length + 5 * 1))
+    goto invalid_data;
+  lineendp = linep + unit_length;
+
+  /* The next element of the header is the version identifier.  */
+  uint_fast16_t version = read_2ubyte_unaligned_inc (dbg, linep);
+  if (unlikely (version < 2) || unlikely (version > 4))
+    {
+      __libdw_seterrno (DWARF_E_VERSION);
+      goto out;
+    }
+
+  /* Next comes the header length.  */
+  Dwarf_Word header_length;
+  if (length == 4)
+    header_length = read_4ubyte_unaligned_inc (dbg, linep);
+  else
+    header_length = read_8ubyte_unaligned_inc (dbg, linep);
+  const unsigned char *header_start = linep;
+
+  /* Next the minimum instruction length.  */
+  uint_fast8_t minimum_instr_len = *linep++;
+
+  /* Next the maximum operations per instruction, in version 4 format.  */
+  uint_fast8_t max_ops_per_instr = 1;
+  if (version >= 4)
+    {
+      if (unlikely (lineendp - linep < 5))
+	goto invalid_data;
+      max_ops_per_instr = *linep++;
+      if (unlikely (max_ops_per_instr == 0))
+	goto invalid_data;
+    }
+
+  /* Then the flag determining the default value of the is_stmt
+     register.  */
+  uint_fast8_t default_is_stmt = *linep++;
+
+  /* Now the line base.  */
+  int_fast8_t line_base = (int8_t) *linep++;
+
+  /* And the line range.  */
+  uint_fast8_t line_range = *linep++;
+
+  /* The opcode base.  */
+  uint_fast8_t opcode_base = *linep++;
+
+  /* Remember array with the standard opcode length (-1 to account for
+     the opcode with value zero not being mentioned).  */
+  const uint8_t *standard_opcode_lengths = linep - 1;
+  if (unlikely (lineendp - linep < opcode_base - 1))
+    goto invalid_data;
+  linep += opcode_base - 1;
+
+  /* First comes the list of directories.  Add the compilation
+     directory first since the index zero is used for it.  */
+  struct dirlist
+  {
+    const char *dir;
+    size_t len;
+    struct dirlist *next;
+  } comp_dir_elem =
+    {
+      .dir = comp_dir,
+      .len = comp_dir ? strlen (comp_dir) : 0,
+      .next = NULL
+    };
+  struct dirlist *dirlist = &comp_dir_elem;
+  unsigned int ndirlist = 1;
+
+  // XXX Directly construct array to conserve memory?
+  while (*linep != 0)
+    {
+      struct dirlist *new_dir =
+	(struct dirlist *) alloca (sizeof (*new_dir));
+
+      new_dir->dir = (char *) linep;
+      uint8_t *endp = memchr (linep, '\0', lineendp - linep);
+      if (endp == NULL)
+	goto invalid_data;
+      new_dir->len = endp - linep;
+      new_dir->next = dirlist;
+      dirlist = new_dir;
+      ++ndirlist;
+      linep = endp + 1;
+    }
+  /* Skip the final NUL byte.  */
+  ++linep;
+
+  /* Rearrange the list in array form.  */
+  struct dirlist **dirarray
+    = (struct dirlist **) alloca (ndirlist * sizeof (*dirarray));
+  for (unsigned int n = ndirlist; n-- > 0; dirlist = dirlist->next)
+    dirarray[n] = dirlist;
+
+  /* Now read the files.  */
+  struct filelist null_file =
+    {
+      .info =
+      {
+	.name = "???",
+	.mtime = 0,
+	.length = 0
+      },
+      .next = NULL
+    };
+  struct filelist *filelist = &null_file;
+  unsigned int nfilelist = 1;
+
+  if (unlikely (linep >= lineendp))
+    goto invalid_data;
+  while (*linep != 0)
+    {
+      struct filelist *new_file =
+	(struct filelist *) alloca (sizeof (*new_file));
+
+      /* First comes the file name.  */
+      char *fname = (char *) linep;
+      uint8_t *endp = memchr (fname, '\0', lineendp - linep);
+      if (endp == NULL)
+	goto invalid_data;
+      size_t fnamelen = endp - (uint8_t *) fname;
+      linep = endp + 1;
+
+      /* Then the index.  */
+      Dwarf_Word diridx;
+      if (unlikely (linep >= lineendp))
+	goto invalid_data;
+      get_uleb128 (diridx, linep, lineendp);
+      if (unlikely (diridx >= ndirlist))
+	{
+	  __libdw_seterrno (DWARF_E_INVALID_DIR_IDX);
+	  goto out;
+	}
+
+      if (*fname == '/')
+	/* It's an absolute path.  */
+	new_file->info.name = fname;
+      else
+	{
+	  new_file->info.name = libdw_alloc (dbg, char, 1,
+					     dirarray[diridx]->len + 1
+					     + fnamelen + 1);
+	  char *cp = new_file->info.name;
+
+	  if (dirarray[diridx]->dir != NULL)
+	    {
+	      /* This value could be NULL in case the DW_AT_comp_dir
+		 was not present.  We cannot do much in this case.
+		 The easiest thing is to convert the path in an
+		 absolute path.  */
+	      cp = stpcpy (cp, dirarray[diridx]->dir);
+	    }
+	  *cp++ = '/';
+	  strcpy (cp, fname);
+	  assert (strlen (new_file->info.name)
+		  < dirarray[diridx]->len + 1 + fnamelen + 1);
+	}
+
+      /* Next comes the modification time.  */
+      if (unlikely (linep >= lineendp))
+	goto invalid_data;
+      get_uleb128 (new_file->info.mtime, linep, lineendp);
+
+      /* Finally the length of the file.  */
+      if (unlikely (linep >= lineendp))
+	goto invalid_data;
+      get_uleb128 (new_file->info.length, linep, lineendp);
+
+      new_file->next = filelist;
+      filelist = new_file;
+      ++nfilelist;
+    }
+  /* Skip the final NUL byte.  */
+  ++linep;
+
+  /* Consistency check.  */
+  if (unlikely (linep != header_start + header_length))
+    {
+      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+      goto out;
+    }
+
+  /* We are about to process the statement program.  Initialize the
+     state machine registers (see 6.2.2 in the v2.1 specification).  */
+  Dwarf_Word addr = 0;
+  unsigned int op_index = 0;
+  unsigned int file = 1;
+  int line = 1;
+  unsigned int column = 0;
+  uint_fast8_t is_stmt = default_is_stmt;
+  bool basic_block = false;
+  bool prologue_end = false;
+  bool epilogue_begin = false;
+  unsigned int isa = 0;
+  unsigned int discriminator = 0;
+
+  /* Apply the "operation advance" from a special opcode or
+     DW_LNS_advance_pc (as per DWARF4 6.2.5.1).  */
+  inline void advance_pc (unsigned int op_advance)
+  {
+    addr += minimum_instr_len * ((op_index + op_advance)
+				 / max_ops_per_instr);
+    op_index = (op_index + op_advance) % max_ops_per_instr;
+  }
+
+  /* Process the instructions.  */
+
+  /* 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 {								\
+    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;
+    new_line->sequence = nlinelist;
+    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
+       violates our assumptions on reasonable limits for the values.  */
+#define SET(field)							      \
+    do {								      \
+      new_line->line.field = field;					      \
+      if (unlikely (new_line->line.field != field))			      \
+	return true;						      \
+    } while (0)
+
+    SET (addr);
+    SET (op_index);
+    SET (file);
+    SET (line);
+    SET (column);
+    SET (is_stmt);
+    SET (basic_block);
+    SET (end_sequence);
+    SET (prologue_end);
+    SET (epilogue_begin);
+    SET (isa);
+    SET (discriminator);
+
+#undef SET
+
+    return false;
+  }
+
+  while (linep < lineendp)
+    {
+      unsigned int opcode;
+      unsigned int u128;
+      int s128;
+
+      /* Read the opcode.  */
+      opcode = *linep++;
+
+      /* Is this a special opcode?  */
+      if (likely (opcode >= opcode_base))
+	{
+	  if (unlikely (line_range == 0))
+	    goto invalid_data;
+
+	  /* Yes.  Handling this is quite easy since the opcode value
+	     is computed with
+
+	     opcode = (desired line increment - line_base)
+		       + (line_range * address advance) + opcode_base
+	  */
+	  int line_increment = (line_base
+				+ (opcode - opcode_base) % line_range);
+
+	  /* Perform the increments.  */
+	  line += line_increment;
+	  advance_pc ((opcode - opcode_base) / line_range);
+
+	  /* Add a new line with the current state machine values.  */
+	  NEW_LINE (0);
+
+	  /* Reset the flags.  */
+	  basic_block = false;
+	  prologue_end = false;
+	  epilogue_begin = false;
+	  discriminator = 0;
+	}
+      else if (opcode == 0)
+	{
+	  /* This an extended opcode.  */
+	  if (unlikely (lineendp - linep < 2))
+	    goto invalid_data;
+
+	  /* The length.  */
+	  uint_fast8_t len = *linep++;
+
+	  if (unlikely ((size_t) (lineendp - linep) < len))
+	    goto invalid_data;
+
+	  /* The sub-opcode.  */
+	  opcode = *linep++;
+
+	  switch (opcode)
+	    {
+	    case DW_LNE_end_sequence:
+	      /* Add a new line with the current state machine values.
+		 The is the end of the sequence.  */
+	      NEW_LINE (1);
+
+	      /* Reset the registers.  */
+	      addr = 0;
+	      op_index = 0;
+	      file = 1;
+	      line = 1;
+	      column = 0;
+	      is_stmt = default_is_stmt;
+	      basic_block = false;
+	      prologue_end = false;
+	      epilogue_begin = false;
+	      isa = 0;
+	      discriminator = 0;
+	      break;
+
+	    case DW_LNE_set_address:
+	      /* The value is an address.  The size is defined as
+		 apporiate for the target machine.  We use the
+		 address size field from the CU header.  */
+	      op_index = 0;
+	      if (unlikely (lineendp - linep < (uint8_t) address_size))
+		goto invalid_data;
+	      if (__libdw_read_address_inc (dbg, IDX_debug_line, &linep,
+					    address_size, &addr))
+		goto out;
+	      break;
+
+	    case DW_LNE_define_file:
+	      {
+		char *fname = (char *) linep;
+		uint8_t *endp = memchr (linep, '\0', lineendp - linep);
+		if (endp == NULL)
+		  goto invalid_data;
+		size_t fnamelen = endp - linep;
+		linep = endp + 1;
+
+		unsigned int diridx;
+		if (unlikely (linep >= lineendp))
+		  goto invalid_data;
+		get_uleb128 (diridx, linep, lineendp);
+		if (unlikely (diridx >= ndirlist))
+		  {
+		    __libdw_seterrno (DWARF_E_INVALID_DIR_IDX);
+		    goto invalid_data;
+		  }
+		Dwarf_Word mtime;
+		if (unlikely (linep >= lineendp))
+		  goto invalid_data;
+		get_uleb128 (mtime, linep, lineendp);
+		Dwarf_Word filelength;
+		if (unlikely (linep >= lineendp))
+		  goto invalid_data;
+		get_uleb128 (filelength, linep, lineendp);
+
+		struct filelist *new_file =
+		  (struct filelist *) alloca (sizeof (*new_file));
+		if (fname[0] == '/')
+		  new_file->info.name = fname;
+		else
+		  {
+		    new_file->info.name =
+		      libdw_alloc (dbg, char, 1, (dirarray[diridx]->len + 1
+						  + fnamelen + 1));
+		    char *cp = new_file->info.name;
+
+		    if (dirarray[diridx]->dir != NULL)
+		      /* This value could be NULL in case the
+			 DW_AT_comp_dir was not present.  We
+			 cannot do much in this case.  The easiest
+			 thing is to convert the path in an
+			 absolute path.  */
+		      cp = stpcpy (cp, dirarray[diridx]->dir);
+		    *cp++ = '/';
+		    strcpy (cp, fname);
+		  }
+
+		new_file->info.mtime = mtime;
+		new_file->info.length = filelength;
+		new_file->next = filelist;
+		filelist = new_file;
+		++nfilelist;
+	      }
+	      break;
+
+	    case DW_LNE_set_discriminator:
+	      /* Takes one ULEB128 parameter, the discriminator.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 1))
+		goto invalid_data;
+
+	      if (unlikely (linep >= lineendp))
+		goto invalid_data;
+	      get_uleb128 (discriminator, linep, lineendp);
+	      break;
+
+	    default:
+	      /* Unknown, ignore it.  */
+	      if (unlikely ((size_t) (lineendp - (linep - 1)) < len))
+		goto invalid_data;
+	      linep += len - 1;
+	      break;
+	    }
+	}
+      else if (opcode <= DW_LNS_set_isa)
+	{
+	  /* This is a known standard opcode.  */
+	  switch (opcode)
+	    {
+	    case DW_LNS_copy:
+	      /* Takes no argument.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 0))
+		goto invalid_data;
+
+	      /* Add a new line with the current state machine values.  */
+	      NEW_LINE (0);
+
+	      /* Reset the flags.  */
+	      basic_block = false;
+	      prologue_end = false;
+	      epilogue_begin = false;
+	      discriminator = 0;
+	      break;
+
+	    case DW_LNS_advance_pc:
+	      /* Takes one uleb128 parameter which is added to the
+		 address.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 1))
+		goto invalid_data;
+
+	      if (unlikely (linep >= lineendp))
+		goto invalid_data;
+	      get_uleb128 (u128, linep, lineendp);
+	      advance_pc (u128);
+	      break;
+
+	    case DW_LNS_advance_line:
+	      /* Takes one sleb128 parameter which is added to the
+		 line.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 1))
+		goto invalid_data;
+
+	      if (unlikely (linep >= lineendp))
+		goto invalid_data;
+	      get_sleb128 (s128, linep, lineendp);
+	      line += s128;
+	      break;
+
+	    case DW_LNS_set_file:
+	      /* Takes one uleb128 parameter which is stored in file.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 1))
+		goto invalid_data;
+
+	      if (unlikely (linep >= lineendp))
+		goto invalid_data;
+	      get_uleb128 (u128, linep, lineendp);
+	      file = u128;
+	      break;
+
+	    case DW_LNS_set_column:
+	      /* Takes one uleb128 parameter which is stored in column.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 1))
+		goto invalid_data;
+
+	      if (unlikely (linep >= lineendp))
+		goto invalid_data;
+	      get_uleb128 (u128, linep, lineendp);
+	      column = u128;
+	      break;
+
+	    case DW_LNS_negate_stmt:
+	      /* Takes no argument.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 0))
+		goto invalid_data;
+
+	      is_stmt = 1 - is_stmt;
+	      break;
+
+	    case DW_LNS_set_basic_block:
+	      /* Takes no argument.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 0))
+		goto invalid_data;
+
+	      basic_block = true;
+	      break;
+
+	    case DW_LNS_const_add_pc:
+	      /* Takes no argument.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 0))
+		goto invalid_data;
+
+	      if (unlikely (line_range == 0))
+		goto invalid_data;
+
+	      advance_pc ((255 - opcode_base) / line_range);
+	      break;
+
+	    case DW_LNS_fixed_advance_pc:
+	      /* Takes one 16 bit parameter which is added to the
+		 address.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 1)
+		  || unlikely (lineendp - linep < 2))
+		goto invalid_data;
+
+	      addr += read_2ubyte_unaligned_inc (dbg, linep);
+	      op_index = 0;
+	      break;
+
+	    case DW_LNS_set_prologue_end:
+	      /* Takes no argument.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 0))
+		goto invalid_data;
+
+	      prologue_end = true;
+	      break;
+
+	    case DW_LNS_set_epilogue_begin:
+	      /* Takes no argument.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 0))
+		goto invalid_data;
+
+	      epilogue_begin = true;
+	      break;
+
+	    case DW_LNS_set_isa:
+	      /* Takes one uleb128 parameter which is stored in isa.  */
+	      if (unlikely (standard_opcode_lengths[opcode] != 1))
+		goto invalid_data;
+
+	      if (unlikely (linep >= lineendp))
+		goto invalid_data;
+	      get_uleb128 (isa, linep, lineendp);
+	      break;
+	    }
+	}
+      else
+	{
+	  /* This is a new opcode the generator but not we know about.
+	     Read the parameters associated with it but then discard
+	     everything.  Read all the parameters for this opcode.  */
+	  for (int n = standard_opcode_lengths[opcode]; n > 0; --n)
+	    {
+	      if (unlikely (linep >= lineendp))
+		goto invalid_data;
+	      get_uleb128 (u128, linep, lineendp);
+	    }
+
+	  /* Next round, ignore this opcode.  */
+	  continue;
+	}
+    }
+
+  /* Put all the files in an array.  */
+  Dwarf_Files *files = libdw_alloc (dbg, Dwarf_Files,
+				    sizeof (Dwarf_Files)
+				    + nfilelist * sizeof (Dwarf_Fileinfo)
+				    + (ndirlist + 1) * sizeof (char *),
+				    1);
+  const char **dirs = (void *) &files->info[nfilelist];
+
+  files->nfiles = nfilelist;
+  while (nfilelist-- > 0)
+    {
+      files->info[nfilelist] = filelist->info;
+      filelist = filelist->next;
+    }
+  assert (filelist == NULL);
+
+  /* Put all the directory strings in an array.  */
+  files->ndirs = ndirlist;
+  for (unsigned int i = 0; i < ndirlist; ++i)
+    dirs[i] = dirarray[i]->dir;
+  dirs[ndirlist] = NULL;
+
+  /* Pass the file data structure to the caller.  */
+  if (filesp != NULL)
+    *filesp = files;
+
+  size_t buf_size = (sizeof (Dwarf_Lines) + (sizeof (Dwarf_Line) * nlinelist));
+  void *buf = libdw_alloc (dbg, Dwarf_Lines, buf_size, 1);
+
+  /* First use the buffer for the pointers, and sort the entries.
+     We'll write the pointers in the end of the buffer, and then
+     copy into the buffer from the beginning so the overlap works.  */
+  assert (sizeof (Dwarf_Line) >= sizeof (struct linelist *));
+  struct linelist **sortlines = (buf + buf_size
+				 - sizeof (struct linelist **) * nlinelist);
+
+  /* The list is in LIFO order and usually they come in clumps with
+     ascending addresses.  So fill from the back to probably start with
+     runs already in order before we sort.  */
+  for (size_t i = nlinelist; i-- > 0; )
+    {
+      sortlines[i] = linelist;
+      linelist = linelist->next;
+    }
+  assert (linelist == NULL);
+
+  /* Sort by ascending address.  */
+  qsort (sortlines, nlinelist, sizeof sortlines[0], &compare_lines);
+
+  /* Now that they are sorted, put them in the final array.
+     The buffers overlap, so we've clobbered the early elements
+     of SORTLINES by the time we're reading the later ones.  */
+  Dwarf_Lines *lines = buf;
+  lines->nlines = nlinelist;
+  for (size_t i = 0; i < nlinelist; ++i)
+    {
+      lines->info[i] = sortlines[i]->line;
+      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)
+    lines->info[nlinelist - 1].end_sequence = 1;
+
+  /* Pass the line structure back to the caller.  */
+  if (linesp != NULL)
+    *linesp = lines;
+
+  /* Success.  */
+  res = 0;
+
+ out:
+  /* Free malloced line records, if any.  */
+  for (size_t i = MAX_STACK_ALLOC; i < nlinelist; i++)
+    {
+      struct linelist *ll = malloc_linelist->next;
+      free (malloc_linelist);
+      malloc_linelist = ll;
+    }
+
+  return res;
+}
+
+static int
+files_lines_compare (const void *p1, const void *p2)
+{
+  const struct files_lines_s *t1 = p1;
+  const struct files_lines_s *t2 = p2;
+
+  if (t1->debug_line_offset < t2->debug_line_offset)
+    return -1;
+  if (t1->debug_line_offset > t2->debug_line_offset)
+    return 1;
+
+  return 0;
+}
+
+int
+internal_function
+__libdw_getsrclines (Dwarf *dbg, Dwarf_Off debug_line_offset,
+		     const char *comp_dir, unsigned address_size,
+		     Dwarf_Lines **linesp, Dwarf_Files **filesp)
+{
+  struct files_lines_s fake = { .debug_line_offset = debug_line_offset };
+  struct files_lines_s **found = tfind (&fake, &dbg->files_lines,
+					files_lines_compare);
+  if (found == NULL)
+    {
+      Elf_Data *data = __libdw_checked_get_data (dbg, IDX_debug_line);
+      if (data == NULL
+	  || __libdw_offset_in_section (dbg, IDX_debug_line,
+					debug_line_offset, 1) != 0)
+	return -1;
+
+      const unsigned char *linep = data->d_buf + debug_line_offset;
+      const unsigned char *lineendp = data->d_buf + data->d_size;
+
+      struct files_lines_s *node = libdw_alloc (dbg, struct files_lines_s,
+						sizeof *node, 1);
+
+      if (read_srclines (dbg, linep, lineendp, comp_dir, address_size,
+			 &node->lines, &node->files) != 0)
+	return -1;
+
+      node->debug_line_offset = debug_line_offset;
+
+      found = tsearch (node, &dbg->files_lines, files_lines_compare);
+      if (found == NULL)
+	{
+	  __libdw_seterrno (DWARF_E_NOMEM);
+	  return -1;
+	}
+    }
+
+  if (linesp != NULL)
+    *linesp = (*found)->lines;
+
+  if (filesp != NULL)
+    *filesp = (*found)->files;
+
+  return 0;
+}
+
+/* Get the compilation directory, if any is set.  */
+const char *
+__libdw_getcompdir (Dwarf_Die *cudie)
+{
+  Dwarf_Attribute compdir_attr_mem;
+  Dwarf_Attribute *compdir_attr = INTUSE(dwarf_attr) (cudie,
+						      DW_AT_comp_dir,
+						      &compdir_attr_mem);
+  return INTUSE(dwarf_formstring) (compdir_attr);
 }
 
 int
 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;
-
   /* Get the information if it is not already known.  */
   struct Dwarf_CU *const cu = cudie->cu;
   if (cu->lines == NULL)
@@ -110,644 +858,24 @@
 
       /* Get the offset into the .debug_line section.  NB: this call
 	 also checks whether the previous dwarf_attr call failed.  */
-      const unsigned char *lineendp;
-      const unsigned char *linep
-	= __libdw_formptr (stmt_list, IDX_debug_line, DWARF_E_NO_DEBUG_LINE,
-			   (unsigned char **) &lineendp, NULL);
-      if (linep == NULL)
-	goto out;
+      Dwarf_Off debug_line_offset;
+      if (__libdw_formptr (stmt_list, IDX_debug_line, DWARF_E_NO_DEBUG_LINE,
+			   NULL, &debug_line_offset) == NULL)
+	return -1;
 
-      /* Get the compilation directory.  */
-      Dwarf_Attribute compdir_attr_mem;
-      Dwarf_Attribute *compdir_attr = INTUSE(dwarf_attr) (cudie,
-							  DW_AT_comp_dir,
-							  &compdir_attr_mem);
-      const char *comp_dir = INTUSE(dwarf_formstring) (compdir_attr);
-
-      if (unlikely (linep + 4 > lineendp))
-	{
-	invalid_data:
-	  __libdw_seterrno (DWARF_E_INVALID_DEBUG_LINE);
-	  goto out;
-	}
-
-      Dwarf *dbg = cu->dbg;
-      Dwarf_Word unit_length = read_4ubyte_unaligned_inc (dbg, linep);
-      unsigned int length = 4;
-      if (unlikely (unit_length == DWARF3_LENGTH_64_BIT))
-	{
-	  if (unlikely (linep + 8 > lineendp))
-	    goto invalid_data;
-	  unit_length = read_8ubyte_unaligned_inc (dbg, linep);
-	  length = 8;
-	}
-
-      /* Check whether we have enough room in the section.  */
-      if (unit_length < 2 + length + 5 * 1
-	  || unlikely (linep + unit_length > lineendp))
-	goto invalid_data;
-      lineendp = linep + unit_length;
-
-      /* The next element of the header is the version identifier.  */
-      uint_fast16_t version = read_2ubyte_unaligned_inc (dbg, linep);
-      if (unlikely (version < 2) || unlikely (version > 4))
-	{
-	  __libdw_seterrno (DWARF_E_VERSION);
-	  goto out;
-	}
-
-      /* Next comes the header length.  */
-      Dwarf_Word header_length;
-      if (length == 4)
-	header_length = read_4ubyte_unaligned_inc (dbg, linep);
-      else
-	header_length = read_8ubyte_unaligned_inc (dbg, linep);
-      const unsigned char *header_start = linep;
-
-      /* Next the minimum instruction length.  */
-      uint_fast8_t minimum_instr_len = *linep++;
-
-      /* Next the maximum operations per instruction, in version 4 format.  */
-      uint_fast8_t max_ops_per_instr = 1;
-      if (version >= 4)
-	{
-	  if (unlikely (lineendp - linep < 5))
-	    goto invalid_data;
-	  max_ops_per_instr = *linep++;
-	  if (unlikely (max_ops_per_instr == 0))
-	    goto invalid_data;
-	}
-
-      /* Then the flag determining the default value of the is_stmt
-	 register.  */
-      uint_fast8_t default_is_stmt = *linep++;
-
-      /* Now the line base.  */
-      int_fast8_t line_base = (int8_t) *linep++;
-
-      /* And the line range.  */
-      uint_fast8_t line_range = *linep++;
-
-      /* The opcode base.  */
-      uint_fast8_t opcode_base = *linep++;
-
-      /* Remember array with the standard opcode length (-1 to account for
-	 the opcode with value zero not being mentioned).  */
-      const uint8_t *standard_opcode_lengths = linep - 1;
-      if (unlikely (lineendp - linep < opcode_base - 1))
-	goto invalid_data;
-      linep += opcode_base - 1;
-
-      /* First comes the list of directories.  Add the compilation
-	 directory first since the index zero is used for it.  */
-      struct dirlist
-      {
-	const char *dir;
-	size_t len;
-	struct dirlist *next;
-      } comp_dir_elem =
-	{
-	  .dir = comp_dir,
-	  .len = comp_dir ? strlen (comp_dir) : 0,
-	  .next = NULL
-	};
-      struct dirlist *dirlist = &comp_dir_elem;
-      unsigned int ndirlist = 1;
-
-      // XXX Directly construct array to conserve memory?
-      while (*linep != 0)
-	{
-	  struct dirlist *new_dir =
-	    (struct dirlist *) alloca (sizeof (*new_dir));
-
-	  new_dir->dir = (char *) linep;
-	  uint8_t *endp = memchr (linep, '\0', lineendp - linep);
-	  if (endp == NULL)
-	    goto invalid_data;
-	  new_dir->len = endp - linep;
-	  new_dir->next = dirlist;
-	  dirlist = new_dir;
-	  ++ndirlist;
-	  linep = endp + 1;
-	}
-      /* Skip the final NUL byte.  */
-      ++linep;
-
-      /* Rearrange the list in array form.  */
-      struct dirlist **dirarray
-	= (struct dirlist **) alloca (ndirlist * sizeof (*dirarray));
-      for (unsigned int n = ndirlist; n-- > 0; dirlist = dirlist->next)
-	dirarray[n] = dirlist;
-
-      /* Now read the files.  */
-      struct filelist null_file =
-	{
-	  .info =
-	  {
-	    .name = "???",
-	    .mtime = 0,
-	    .length = 0
-	  },
-	  .next = NULL
-	};
-      struct filelist *filelist = &null_file;
-      unsigned int nfilelist = 1;
-
-      if (unlikely (linep >= lineendp))
-	goto invalid_data;
-      while (*linep != 0)
-	{
-	  struct filelist *new_file =
-	    (struct filelist *) alloca (sizeof (*new_file));
-
-	  /* First comes the file name.  */
-	  char *fname = (char *) linep;
-	  uint8_t *endp = memchr (fname, '\0', lineendp - linep);
-	  if (endp == NULL)
-	    goto invalid_data;
-	  size_t fnamelen = endp - (uint8_t *) fname;
-	  linep = endp + 1;
-
-	  /* Then the index.  */
-	  Dwarf_Word diridx;
-	  get_uleb128 (diridx, linep);
-	  if (unlikely (diridx >= ndirlist))
-	    {
-	      __libdw_seterrno (DWARF_E_INVALID_DIR_IDX);
-	      goto out;
-	    }
-
-	  if (*fname == '/')
-	    /* It's an absolute path.  */
-	    new_file->info.name = fname;
-	  else
-	    {
-	      new_file->info.name = libdw_alloc (dbg, char, 1,
-						 dirarray[diridx]->len + 1
-						 + fnamelen + 1);
-              char *cp = new_file->info.name;
-
-              if (dirarray[diridx]->dir != NULL)
-		{
-		  /* This value could be NULL in case the DW_AT_comp_dir
-		     was not present.  We cannot do much in this case.
-		     The easiest thing is to convert the path in an
-                   absolute path.  */
-		  cp = stpcpy (cp, dirarray[diridx]->dir);
-		}
-              *cp++ = '/';
-              strcpy (cp, fname);
-	      assert (strlen (new_file->info.name)
-		      < dirarray[diridx]->len + 1 + fnamelen + 1);
-            }
-
-	  /* Next comes the modification time.  */
-	  get_uleb128 (new_file->info.mtime, linep);
-
-	  /* Finally the length of the file.  */
-	  get_uleb128 (new_file->info.length, linep);
-
-	  new_file->next = filelist;
-	  filelist = new_file;
-	  ++nfilelist;
-	}
-      /* Skip the final NUL byte.  */
-      ++linep;
-
-      /* Consistency check.  */
-      if (unlikely (linep != header_start + header_length))
-	{
-	  __libdw_seterrno (DWARF_E_INVALID_DWARF);
-	  goto out;
-	}
-
-        /* We are about to process the statement program.  Initialize the
-	   state machine registers (see 6.2.2 in the v2.1 specification).  */
-      Dwarf_Word addr = 0;
-      unsigned int op_index = 0;
-      unsigned int file = 1;
-      int line = 1;
-      unsigned int column = 0;
-      uint_fast8_t is_stmt = default_is_stmt;
-      bool basic_block = false;
-      bool prologue_end = false;
-      bool epilogue_begin = false;
-      unsigned int isa = 0;
-      unsigned int discriminator = 0;
-
-      /* Apply the "operation advance" from a special opcode
-	 or DW_LNS_advance_pc (as per DWARF4 6.2.5.1).  */
-      inline void advance_pc (unsigned int op_advance)
-      {
-	addr += minimum_instr_len * ((op_index + op_advance)
-				     / max_ops_per_instr);
-	op_index = (op_index + op_advance) % max_ops_per_instr;
-      }
-
-      /* 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)))				\
-	  goto invalid_data;						\
-      } while (0)
-
-      inline bool add_new_line (struct linelist *new_line, bool end_sequence)
-      {
-	/* 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
-	   violates our assumptions on reasonable limits for the values.  */
-#define SET(field)							      \
-	do {								      \
-	  new_line->line.field = field;					      \
-	  if (unlikely (new_line->line.field != field))			      \
-	    return true;						      \
-        } while (0)
-
-	SET (addr);
-	SET (op_index);
-	SET (file);
-	SET (line);
-	SET (column);
-	SET (is_stmt);
-	SET (basic_block);
-	SET (end_sequence);
-	SET (prologue_end);
-	SET (epilogue_begin);
-	SET (isa);
-	SET (discriminator);
-
-#undef SET
-
-	new_line->next = linelist;
-	linelist = new_line;
-	++nlinelist;
-
-	return false;
-      }
-
-      while (linep < lineendp)
-	{
-	  unsigned int opcode;
-	  unsigned int u128;
-	  int s128;
-
-	  /* Read the opcode.  */
-	  opcode = *linep++;
-
-	  /* Is this a special opcode?  */
-	  if (likely (opcode >= opcode_base))
-	    {
-	      /* Yes.  Handling this is quite easy since the opcode value
-		 is computed with
-
-		 opcode = (desired line increment - line_base)
-		           + (line_range * address advance) + opcode_base
-	      */
-	      int line_increment = (line_base
-				    + (opcode - opcode_base) % line_range);
-
-	      /* Perform the increments.  */
-	      line += line_increment;
-	      advance_pc ((opcode - opcode_base) / line_range);
-
-	      /* Add a new line with the current state machine values.  */
-	      NEW_LINE (0);
-
-	      /* Reset the flags.  */
-	      basic_block = false;
-	      prologue_end = false;
-	      epilogue_begin = false;
-	      discriminator = 0;
-	    }
-	  else if (opcode == 0)
-	    {
-	      /* This an extended opcode.  */
-	      if (unlikely (lineendp - linep < 2))
-		goto invalid_data;
-
-	      /* The length.  */
-	      uint_fast8_t len = *linep++;
-
-	      if (unlikely ((size_t) (lineendp - linep) < len))
-		goto invalid_data;
-
-	      /* The sub-opcode.  */
-	      opcode = *linep++;
-
-	      switch (opcode)
-		{
-		case DW_LNE_end_sequence:
-		  /* Add a new line with the current state machine values.
-		     The is the end of the sequence.  */
-		  NEW_LINE (1);
-
-		  /* Reset the registers.  */
-		  addr = 0;
-		  op_index = 0;
-		  file = 1;
-		  line = 1;
-		  column = 0;
-		  is_stmt = default_is_stmt;
-		  basic_block = false;
-		  prologue_end = false;
-		  epilogue_begin = false;
-		  isa = 0;
-		  discriminator = 0;
-		  break;
-
-		case DW_LNE_set_address:
-		  /* The value is an address.  The size is defined as
-		     apporiate for the target machine.  We use the
-		     address size field from the CU header.  */
-		  op_index = 0;
-		  if (unlikely (lineendp - linep < cu->address_size))
-		    goto invalid_data;
-		  if (__libdw_read_address_inc (dbg, IDX_debug_line, &linep,
-						cu->address_size, &addr))
-		    goto out;
-		  break;
-
-		case DW_LNE_define_file:
-		  {
-		    char *fname = (char *) linep;
-		    uint8_t *endp = memchr (linep, '\0', lineendp - linep);
-		    if (endp == NULL)
-		      goto invalid_data;
-		    size_t fnamelen = endp - linep;
-		    linep = endp + 1;
-
-		    unsigned int diridx;
-		    get_uleb128 (diridx, linep);
-		    Dwarf_Word mtime;
-		    get_uleb128 (mtime, linep);
-		    Dwarf_Word filelength;
-		    get_uleb128 (filelength, linep);
-
-		    struct filelist *new_file =
-		      (struct filelist *) alloca (sizeof (*new_file));
-		    if (fname[0] == '/')
-		      new_file->info.name = fname;
-		    else
-		      {
-			new_file->info.name =
-			  libdw_alloc (dbg, char, 1, (dirarray[diridx]->len + 1
-						      + fnamelen + 1));
-			char *cp = new_file->info.name;
-
-			if (dirarray[diridx]->dir != NULL)
-			  /* This value could be NULL in case the
-			     DW_AT_comp_dir was not present.  We
-			     cannot do much in this case.  The easiest
-			     thing is to convert the path in an
-			     absolute path.  */
-			  cp = stpcpy (cp, dirarray[diridx]->dir);
-			*cp++ = '/';
-			strcpy (cp, fname);
-		      }
-
-		    new_file->info.mtime = mtime;
-		    new_file->info.length = filelength;
-		    new_file->next = filelist;
-		    filelist = new_file;
-		    ++nfilelist;
-		  }
-		  break;
-
-		case DW_LNE_set_discriminator:
-		  /* Takes one ULEB128 parameter, the discriminator.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 1))
-		    goto invalid_data;
-
-		  get_uleb128 (discriminator, linep);
-		  break;
-
-		default:
-		  /* Unknown, ignore it.  */
-		  if (unlikely ((size_t) (lineendp - (linep - 1)) < len))
-		    goto invalid_data;
-		  linep += len - 1;
-		  break;
-		}
-	    }
-	  else if (opcode <= DW_LNS_set_isa)
-	    {
-	      /* This is a known standard opcode.  */
-	      switch (opcode)
-		{
-		case DW_LNS_copy:
-		  /* Takes no argument.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 0))
-		    goto invalid_data;
-
-		  /* Add a new line with the current state machine values.  */
-		  NEW_LINE (0);
-
-		  /* Reset the flags.  */
-		  basic_block = false;
-		  prologue_end = false;
-		  epilogue_begin = false;
-		  discriminator = 0;
-		  break;
-
-		case DW_LNS_advance_pc:
-		  /* Takes one uleb128 parameter which is added to the
-		     address.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 1))
-		    goto invalid_data;
-
-		  get_uleb128 (u128, linep);
-		  advance_pc (u128);
-		  break;
-
-		case DW_LNS_advance_line:
-		  /* Takes one sleb128 parameter which is added to the
-		     line.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 1))
-		    goto invalid_data;
-
-		  get_sleb128 (s128, linep);
-		  line += s128;
-		  break;
-
-		case DW_LNS_set_file:
-		  /* Takes one uleb128 parameter which is stored in file.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 1))
-		    goto invalid_data;
-
-		  get_uleb128 (u128, linep);
-		  file = u128;
-		  break;
-
-		case DW_LNS_set_column:
-		  /* Takes one uleb128 parameter which is stored in column.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 1))
-		    goto invalid_data;
-
-		  get_uleb128 (u128, linep);
-		  column = u128;
-		  break;
-
-		case DW_LNS_negate_stmt:
-		  /* Takes no argument.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 0))
-		    goto invalid_data;
-
-		  is_stmt = 1 - is_stmt;
-		  break;
-
-		case DW_LNS_set_basic_block:
-		  /* Takes no argument.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 0))
-		    goto invalid_data;
-
-		  basic_block = true;
-		  break;
-
-		case DW_LNS_const_add_pc:
-		  /* Takes no argument.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 0))
-		    goto invalid_data;
-
-		  advance_pc ((255 - opcode_base) / line_range);
-		  break;
-
-		case DW_LNS_fixed_advance_pc:
-		  /* Takes one 16 bit parameter which is added to the
-		     address.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 1)
-		      || unlikely (lineendp - linep < 2))
-		    goto invalid_data;
-
-		  addr += read_2ubyte_unaligned_inc (dbg, linep);
-		  op_index = 0;
-		  break;
-
-		case DW_LNS_set_prologue_end:
-		  /* Takes no argument.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 0))
-		    goto invalid_data;
-
-		  prologue_end = true;
-		  break;
-
-		case DW_LNS_set_epilogue_begin:
-		  /* Takes no argument.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 0))
-		    goto invalid_data;
-
-		  epilogue_begin = true;
-		  break;
-
-		case DW_LNS_set_isa:
-		  /* Takes one uleb128 parameter which is stored in isa.  */
-		  if (unlikely (standard_opcode_lengths[opcode] != 1))
-		    goto invalid_data;
-
-		  get_uleb128 (isa, linep);
-		  break;
-		}
-	    }
-	  else
-	    {
-	      /* This is a new opcode the generator but not we know about.
-		 Read the parameters associated with it but then discard
-		 everything.  Read all the parameters for this opcode.  */
-	      for (int n = standard_opcode_lengths[opcode]; n > 0; --n)
-		get_uleb128 (u128, linep);
-
-	      /* Next round, ignore this opcode.  */
-	      continue;
-	    }
-	}
-
-      /* Put all the files in an array.  */
-      Dwarf_Files *files = libdw_alloc (dbg, Dwarf_Files,
-					sizeof (Dwarf_Files)
-					+ nfilelist * sizeof (Dwarf_Fileinfo)
-					+ (ndirlist + 1) * sizeof (char *),
-					1);
-      const char **dirs = (void *) &files->info[nfilelist];
-
-      files->nfiles = nfilelist;
-      while (nfilelist-- > 0)
-	{
-	  files->info[nfilelist] = filelist->info;
-	  filelist = filelist->next;
-	}
-      assert (filelist == NULL);
-
-      /* Put all the directory strings in an array.  */
-      files->ndirs = ndirlist;
-      for (unsigned int i = 0; i < ndirlist; ++i)
-	dirs[i] = dirarray[i]->dir;
-      dirs[ndirlist] = NULL;
-
-      /* Remember the referring CU.  */
-      files->cu = cu;
-
-      /* Make the file data structure available through the CU.  */
-      cu->files = files;
-
-      void *buf = libdw_alloc (dbg, Dwarf_Lines, (sizeof (Dwarf_Lines)
-						  + (sizeof (Dwarf_Line)
-						     * nlinelist)), 1);
-
-      /* First use the buffer for the pointers, and sort the entries.
-	 We'll write the pointers in the end of the buffer, and then
-	 copy into the buffer from the beginning so the overlap works.  */
-      assert (sizeof (Dwarf_Line) >= sizeof (Dwarf_Line *));
-      Dwarf_Line **sortlines = (buf + sizeof (Dwarf_Lines)
-				+ ((sizeof (Dwarf_Line)
-				    - sizeof (Dwarf_Line *)) * nlinelist));
-
-      /* The list is in LIFO order and usually they come in clumps with
-	 ascending addresses.  So fill from the back to probably start with
-	 runs already in order before we sort.  */
-      unsigned int i = nlinelist;
-      while (i-- > 0)
-	{
-	  sortlines[i] = &linelist->line;
-	  linelist = linelist->next;
-	}
-      assert (linelist == NULL);
-
-      /* Sort by ascending address.  */
-      qsort (sortlines, nlinelist, sizeof sortlines[0], &compare_lines);
-
-      /* Now that they are sorted, put them in the final array.
-	 The buffers overlap, so we've clobbered the early elements
-	 of SORTLINES by the time we're reading the later ones.  */
-      cu->lines = buf;
-      cu->lines->nlines = nlinelist;
-      for (i = 0; i < nlinelist; ++i)
-	{
-	  cu->lines->info[i] = *sortlines[i];
-	  cu->lines->info[i].files = files;
-	}
-
-      /* Success.  */
-      res = 0;
+      if (__libdw_getsrclines (cu->dbg, debug_line_offset,
+			       __libdw_getcompdir (cudie),
+			       cu->address_size, &cu->lines, &cu->files) < 0)
+	return -1;
     }
-  else if (cu->lines != (void *) -1l)
-    /* We already have the information.  */
-    res = 0;
+  else if (cu->lines == (void *) -1l)
+    return -1;
 
-  if (likely (res == 0))
-    {
-      *lines = cu->lines;
-      *nlines = cu->lines->nlines;
-    }
- out:
+  *lines = cu->lines;
+  *nlines = cu->lines->nlines;
 
   // XXX Eventually: unlocking here.
 
-  return res;
+  return 0;
 }
 INTDEF(dwarf_getsrclines)
diff --git a/src/libdw/dwarf_getstring.c b/src/libdw/dwarf_getstring.c
index d5e7abf..672bb27 100644
--- a/src/libdw/dwarf_getstring.c
+++ b/src/libdw/dwarf_getstring.c
@@ -1,52 +1,31 @@
 /* Get string.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_hasattr.c b/src/libdw/dwarf_hasattr.c
index b1c4292..812c09b 100644
--- a/src/libdw/dwarf_hasattr.c
+++ b/src/libdw/dwarf_hasattr.c
@@ -1,52 +1,31 @@
 /* Check whether given DIE has specific attribute.
-   Copyright (C) 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003, 2005, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -64,10 +43,43 @@
   if (die == NULL)
     return 0;
 
-  /* Search for the attribute with the given name.  */
-  unsigned int code;
-  (void) __libdw_find_attr (die, search_name, &code, NULL);
+  /* Find the abbreviation entry.  */
+  Dwarf_Abbrev *abbrevp = __libdw_dieabbrev (die, NULL);
+  if (unlikely (abbrevp == DWARF_END_ABBREV))
+    {
+    invalid_dwarf:
+      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+      return 0;
+    }
 
-  return code == search_name;
+  Dwarf *dbg = die->cu->dbg;
+
+  /* Search the name attribute.  */
+  unsigned char *const endp
+    = ((unsigned char *) dbg->sectiondata[IDX_debug_abbrev]->d_buf
+       + dbg->sectiondata[IDX_debug_abbrev]->d_size);
+
+  const unsigned char *attrp = abbrevp->attrp;
+  while (1)
+    {
+      /* Are we still in bounds?  This test needs to be refined.  */
+      if (unlikely (attrp >= endp))
+	goto invalid_dwarf;
+
+      /* Get attribute name and form.  */
+      unsigned int attr_name;
+      get_uleb128 (attr_name, attrp, endp);
+      unsigned int attr_form;
+      if (unlikely (attrp >= endp))
+	goto invalid_dwarf;
+      get_uleb128 (attr_form, attrp, endp);
+
+      /* We can stop if we found the attribute with value zero.  */
+      if (attr_name == 0 || attr_form == 0)
+	return 0;
+
+      if (attr_name == search_name)
+	return 1;
+    }
 }
 INTDEF (dwarf_hasattr)
diff --git a/src/libdw/dwarf_hasattr_integrate.c b/src/libdw/dwarf_hasattr_integrate.c
index 806742d..2d5348c 100644
--- a/src/libdw/dwarf_hasattr_integrate.c
+++ b/src/libdw/dwarf_hasattr_integrate.c
@@ -1,51 +1,30 @@
 /* Check whether DIE has specific attribute, integrating DW_AT_abstract_origin.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_haschildren.c b/src/libdw/dwarf_haschildren.c
index d9a47ad..d0ce51e 100644
--- a/src/libdw/dwarf_haschildren.c
+++ b/src/libdw/dwarf_haschildren.c
@@ -1,52 +1,31 @@
 /* Return string associated with given attribute.
-   Copyright (C) 2003, 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003, 2005, 2008, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -61,25 +40,13 @@
      Dwarf_Die *die;
 {
   /* Find the abbreviation entry.  */
-  Dwarf_Abbrev *abbrevp = die->abbrev;
-  if (abbrevp != DWARF_END_ABBREV)
-    {
-      const unsigned char *readp = (unsigned char *) die->addr;
-
-      /* First we have to get the abbreviation code so that we can decode
-	 the data in the DIE.  */
-      unsigned int abbrev_code;
-      get_uleb128 (abbrev_code, readp);
-
-      abbrevp = __libdw_findabbrev (die->cu, abbrev_code);
-      die->abbrev = abbrevp ?: DWARF_END_ABBREV;
-    }
-  if (unlikely (die->abbrev == DWARF_END_ABBREV))
+  Dwarf_Abbrev *abbrevp = __libdw_dieabbrev (die, NULL);
+  if (unlikely (abbrevp == DWARF_END_ABBREV))
     {
       __libdw_seterrno (DWARF_E_INVALID_DWARF);
       return -1;
     }
 
-  return die->abbrev->has_children;
+  return abbrevp->has_children;
 }
 INTDEF (dwarf_haschildren)
diff --git a/src/libdw/dwarf_hasform.c b/src/libdw/dwarf_hasform.c
index 66e0e74..a95ca9e 100644
--- a/src/libdw/dwarf_hasform.c
+++ b/src/libdw/dwarf_hasform.c
@@ -1,52 +1,31 @@
 /* Check whether given attribute has specific form.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_haspc.c b/src/libdw/dwarf_haspc.c
index 58b87b6..47e2b05 100644
--- a/src/libdw/dwarf_haspc.c
+++ b/src/libdw/dwarf_haspc.c
@@ -1,51 +1,30 @@
 /* Determine whether a DIE covers a PC address.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_highpc.c b/src/libdw/dwarf_highpc.c
index c88e072..8bf93f0 100644
--- a/src/libdw/dwarf_highpc.c
+++ b/src/libdw/dwarf_highpc.c
@@ -1,52 +1,31 @@
 /* Return high PC attribute of DIE.
-   Copyright (C) 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003, 2005, 2012 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -61,10 +40,29 @@
      Dwarf_Die *die;
      Dwarf_Addr *return_addr;
 {
-  Dwarf_Attribute attr_mem;
+  Dwarf_Attribute attr_high_mem;
+  Dwarf_Attribute *attr_high = INTUSE(dwarf_attr) (die, DW_AT_high_pc,
+						   &attr_high_mem);
+  if (attr_high == NULL)
+    return -1;
 
-  return INTUSE(dwarf_formaddr) (INTUSE(dwarf_attr) (die, DW_AT_high_pc,
-						     &attr_mem),
-				 return_addr);
+  if (attr_high->form == DW_FORM_addr)
+    return INTUSE(dwarf_formaddr) (attr_high, return_addr);
+
+  /* DWARF 4 allows high_pc to be a constant offset from low_pc. */
+  Dwarf_Attribute attr_low_mem;
+  if (INTUSE(dwarf_formaddr) (INTUSE(dwarf_attr) (die, DW_AT_low_pc,
+						  &attr_low_mem),
+			      return_addr) == 0)
+    {
+      Dwarf_Word uval;
+      if (INTUSE(dwarf_formudata) (attr_high, &uval) == 0)
+	{
+	  *return_addr += uval;
+	  return 0;
+	}
+      __libdw_seterrno (DWARF_E_NO_ADDR);
+    }
+  return -1;
 }
 INTDEF(dwarf_highpc)
diff --git a/src/libdw/dwarf_lineaddr.c b/src/libdw/dwarf_lineaddr.c
index c59dd5d..4e1952d 100644
--- a/src/libdw/dwarf_lineaddr.c
+++ b/src/libdw/dwarf_lineaddr.c
@@ -1,52 +1,31 @@
 /* Return line address.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_linebeginstatement.c b/src/libdw/dwarf_linebeginstatement.c
index 2a99e67..4854c56 100644
--- a/src/libdw/dwarf_linebeginstatement.c
+++ b/src/libdw/dwarf_linebeginstatement.c
@@ -1,52 +1,31 @@
 /* Return true if record is for beginning of a statement.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_lineblock.c b/src/libdw/dwarf_lineblock.c
index 5ad2bb5..e3c7f41 100644
--- a/src/libdw/dwarf_lineblock.c
+++ b/src/libdw/dwarf_lineblock.c
@@ -1,52 +1,31 @@
 /* Return true if record is for beginning of a basic block.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_linecol.c b/src/libdw/dwarf_linecol.c
index 8a1228c..c667b1b 100644
--- a/src/libdw/dwarf_linecol.c
+++ b/src/libdw/dwarf_linecol.c
@@ -1,52 +1,31 @@
 /* Return column in line.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_linediscriminator.c b/src/libdw/dwarf_linediscriminator.c
index d17a99f..552205a 100644
--- a/src/libdw/dwarf_linediscriminator.c
+++ b/src/libdw/dwarf_linediscriminator.c
@@ -1,51 +1,30 @@
 /* Return code path discriminator in line record.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_lineendsequence.c b/src/libdw/dwarf_lineendsequence.c
index cea86aa..61bde93 100644
--- a/src/libdw/dwarf_lineendsequence.c
+++ b/src/libdw/dwarf_lineendsequence.c
@@ -1,52 +1,31 @@
 /* Return true if record is for end of sequence.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_lineepiloguebegin.c b/src/libdw/dwarf_lineepiloguebegin.c
index 9d80611..b914787 100644
--- a/src/libdw/dwarf_lineepiloguebegin.c
+++ b/src/libdw/dwarf_lineepiloguebegin.c
@@ -1,52 +1,31 @@
 /* Return true if record is for beginning of epilogue.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_lineisa.c b/src/libdw/dwarf_lineisa.c
index 064761e..30181fc 100644
--- a/src/libdw/dwarf_lineisa.c
+++ b/src/libdw/dwarf_lineisa.c
@@ -1,51 +1,30 @@
 /* Return ISA in line.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_lineno.c b/src/libdw/dwarf_lineno.c
index 98840b1..009999c 100644
--- a/src/libdw/dwarf_lineno.c
+++ b/src/libdw/dwarf_lineno.c
@@ -1,52 +1,31 @@
 /* Return line number.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_lineop_index.c b/src/libdw/dwarf_lineop_index.c
index 3b43310..9ea4ef4 100644
--- a/src/libdw/dwarf_lineop_index.c
+++ b/src/libdw/dwarf_lineop_index.c
@@ -1,51 +1,30 @@
 /* Return line VLIW operation index.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_lineprologueend.c b/src/libdw/dwarf_lineprologueend.c
index c7a0557..6ba8be2 100644
--- a/src/libdw/dwarf_lineprologueend.c
+++ b/src/libdw/dwarf_lineprologueend.c
@@ -1,52 +1,31 @@
 /* Return true if record is for end of prologue.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_linesrc.c b/src/libdw/dwarf_linesrc.c
index 6ecce93..27b5990 100644
--- a/src/libdw/dwarf_linesrc.c
+++ b/src/libdw/dwarf_linesrc.c
@@ -1,52 +1,31 @@
 /* Find line information for address.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_lowpc.c b/src/libdw/dwarf_lowpc.c
index 97ece03..4677aed 100644
--- a/src/libdw/dwarf_lowpc.c
+++ b/src/libdw/dwarf_lowpc.c
@@ -1,52 +1,31 @@
 /* Return low PC attribute of DIE.
    Copyright (C) 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_macro_getparamcnt.c b/src/libdw/dwarf_macro_getparamcnt.c
new file mode 100644
index 0000000..e218eb1
--- /dev/null
+++ b/src/libdw/dwarf_macro_getparamcnt.c
@@ -0,0 +1,43 @@
+/* Return number of parameters of a macro.
+   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"
+
+int
+dwarf_macro_getparamcnt (Dwarf_Macro *macro, size_t *paramcntp)
+{
+  if (macro == NULL)
+    return -1;
+
+  *paramcntp = libdw_macro_nforms (macro);
+  return 0;
+}
diff --git a/src/libdw/dwarf_macro_getsrcfiles.c b/src/libdw/dwarf_macro_getsrcfiles.c
new file mode 100644
index 0000000..cc19043
--- /dev/null
+++ b/src/libdw/dwarf_macro_getsrcfiles.c
@@ -0,0 +1,88 @@
+/* Find line information for a given macro.
+   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"
+
+int
+dwarf_macro_getsrcfiles (Dwarf *dbg, Dwarf_Macro *macro,
+			 Dwarf_Files **files, size_t *nfiles)
+{
+  if (macro == NULL)
+    return -1;
+
+  Dwarf_Macro_Op_Table *const table = macro->table;
+  if (table->files == NULL)
+    {
+      Dwarf_Off line_offset = table->line_offset;
+      if (line_offset == (Dwarf_Off) -1)
+	{
+	  *files = NULL;
+	  *nfiles = 0;
+	  return 0;
+	}
+
+      /* If TABLE->comp_dir is NULL that could mean any of the
+	 following:
+
+	 - The macro unit is not bound to a CU.  It's an auxiliary
+           unit used purely for import from other units.  In that case
+           there's actually no COMP_DIR value that we could use.
+
+	 - The macro unit is bound to a CU, but there's no
+           DW_AT_comp_dir attribute at the CU DIE.
+
+	 - The macro unit is bound to a CU, but we don't know that,
+           likely because its iteration was requested through
+           dwarf_getmacros_off interface.  This might be legitimate if
+           one macro unit imports another CU's macro unit, but that is
+           unlikely to happen in practice.  Most probably this is not
+           legitimate use of the interfaces.
+
+	 So when the interfaces are used correctly, COMP_DIR value is
+	 always right.  That means that we can cache the parsed
+	 .debug_line unit without fear that later on someone requests
+	 the same unit through dwarf_getsrcfiles, and the file names
+	 will be broken.  */
+
+      if (__libdw_getsrclines (dbg, line_offset, table->comp_dir,
+			       table->is_64bit ? 8 : 4,
+			       NULL, &table->files) < 0)
+	table->files = (void *) -1;
+    }
+
+  if (table->files == (void *) -1)
+    return -1;
+
+  *files = table->files;
+  *nfiles = table->files->nfiles;
+  return 0;
+}
diff --git a/src/libdw/dwarf_macro_opcode.c b/src/libdw/dwarf_macro_opcode.c
index c40ebc7..8607777 100644
--- a/src/libdw/dwarf_macro_opcode.c
+++ b/src/libdw/dwarf_macro_opcode.c
@@ -1,52 +1,31 @@
 /* Return macro opcode.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_macro_param.c b/src/libdw/dwarf_macro_param.c
new file mode 100644
index 0000000..bd846a7
--- /dev/null
+++ b/src/libdw/dwarf_macro_param.c
@@ -0,0 +1,46 @@
+/* Return a given parameter of a macro.
+   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"
+
+int
+dwarf_macro_param (Dwarf_Macro *macro, size_t idx, Dwarf_Attribute *ret)
+{
+  if (macro == NULL)
+    return -1;
+
+  if (idx >= libdw_macro_nforms (macro))
+    return -1;
+
+  *ret = macro->attributes[idx];
+  return 0;
+}
diff --git a/src/libdw/dwarf_macro_param1.c b/src/libdw/dwarf_macro_param1.c
index 409865f..87ce003 100644
--- a/src/libdw/dwarf_macro_param1.c
+++ b/src/libdw/dwarf_macro_param1.c
@@ -1,52 +1,31 @@
 /* Return first macro parameter.
-   Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -61,7 +40,9 @@
   if (macro == NULL)
     return -1;
 
-  *paramp = macro->param1;
+  Dwarf_Attribute param;
+  if (dwarf_macro_param (macro, 0, &param) != 0)
+    return -1;
 
-  return 0;
+  return dwarf_formudata (&param, paramp);
 }
diff --git a/src/libdw/dwarf_macro_param2.c b/src/libdw/dwarf_macro_param2.c
index c1eff93..cc902c9 100644
--- a/src/libdw/dwarf_macro_param2.c
+++ b/src/libdw/dwarf_macro_param2.c
@@ -1,52 +1,31 @@
 /* Return second macro parameter.
-   Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -61,10 +40,16 @@
   if (macro == NULL)
     return -1;
 
-  if (paramp != NULL)
-    *paramp = macro->param2.u;
-  if (strp != NULL)
-    *strp = macro->param2.s;
+  Dwarf_Attribute param;
+  if (dwarf_macro_param (macro, 1, &param) != 0)
+    return -1;
 
-  return 0;
+  if (param.form == DW_FORM_string
+      || param.form == DW_FORM_strp)
+    {
+      *strp = dwarf_formstring (&param);
+      return 0;
+    }
+  else
+    return dwarf_formudata (&param, paramp);
 }
diff --git a/src/libdw/dwarf_next_cfi.c b/src/libdw/dwarf_next_cfi.c
index 0e90457..b5af49e 100644
--- a/src/libdw/dwarf_next_cfi.c
+++ b/src/libdw/dwarf_next_cfi.c
@@ -1,51 +1,30 @@
 /* Advance to next CFI entry.
-   Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -191,11 +170,19 @@
 	  bytes += address_size;
 	}
 
-      get_uleb128 (entry->cie.code_alignment_factor, bytes);
-      get_sleb128 (entry->cie.data_alignment_factor, bytes);
+      if (bytes >= limit)
+	goto invalid;
+      get_uleb128 (entry->cie.code_alignment_factor, bytes, limit);
+
+      if (bytes >= limit)
+	goto invalid;
+      get_sleb128 (entry->cie.data_alignment_factor, bytes, limit);
+
+      if (bytes >= limit)
+	goto invalid;
 
       if (version >= 3)		/* DWARF 3+ */
-	get_uleb128 (entry->cie.return_address_register, bytes);
+	get_uleb128 (entry->cie.return_address_register, bytes, limit);
       else			/* DWARF 2 */
 	entry->cie.return_address_register = *bytes++;
 
@@ -205,7 +192,9 @@
       bool sized_augmentation = *ap == 'z';
       if (sized_augmentation)
 	{
-	  get_uleb128 (entry->cie.augmentation_data_size, bytes);
+	  if (bytes >= limit)
+	    goto invalid;
+	  get_uleb128 (entry->cie.augmentation_data_size, bytes, limit);
 	  if ((Dwarf_Word) (limit - bytes) < entry->cie.augmentation_data_size)
 	    goto invalid;
 	  entry->cie.augmentation_data = bytes;
diff --git a/src/libdw/dwarf_nextcu.c b/src/libdw/dwarf_nextcu.c
index 2e8f4d7..875d869 100644
--- a/src/libdw/dwarf_nextcu.c
+++ b/src/libdw/dwarf_nextcu.c
@@ -1,52 +1,31 @@
 /* Advance to next CU header.
    Copyright (C) 2002-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_offabbrev.c b/src/libdw/dwarf_offabbrev.c
index 2cac279..27cdad6 100644
--- a/src/libdw/dwarf_offabbrev.c
+++ b/src/libdw/dwarf_offabbrev.c
@@ -1,52 +1,31 @@
 /* Get abbreviation at given offset.
    Copyright (C) 2004, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_offdie.c b/src/libdw/dwarf_offdie.c
index 4c650cf..b5dd405 100644
--- a/src/libdw/dwarf_offdie.c
+++ b/src/libdw/dwarf_offdie.c
@@ -1,52 +1,31 @@
 /* Return DIE at given offset.
    Copyright (C) 2002-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_onearange.c b/src/libdw/dwarf_onearange.c
index 5a9b9f3..de49f6c 100644
--- a/src/libdw/dwarf_onearange.c
+++ b/src/libdw/dwarf_onearange.c
@@ -1,52 +1,31 @@
 /* Return one of the address range entries.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_onesrcline.c b/src/libdw/dwarf_onesrcline.c
index 3e71630..5d3c3de 100644
--- a/src/libdw/dwarf_onesrcline.c
+++ b/src/libdw/dwarf_onesrcline.c
@@ -1,52 +1,31 @@
 /* Return one of the sources lines of a CU.
    Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_peel_type.c b/src/libdw/dwarf_peel_type.c
new file mode 100644
index 0000000..a110bc5
--- /dev/null
+++ b/src/libdw/dwarf_peel_type.c
@@ -0,0 +1,74 @@
+/* Peel type aliases and qualifier tags from a type DIE.
+   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"
+#include <dwarf.h>
+#include <string.h>
+
+
+int
+dwarf_peel_type (die, result)
+     Dwarf_Die *die;
+     Dwarf_Die *result;
+{
+  int tag;
+
+  /* Ignore previous errors.  */
+  if (die == NULL)
+    return -1;
+
+  *result = *die;
+  tag = INTUSE (dwarf_tag) (result);
+  while (tag == DW_TAG_typedef
+	 || tag == DW_TAG_const_type
+	 || tag == DW_TAG_volatile_type
+	 || tag == DW_TAG_restrict_type)
+    {
+      Dwarf_Attribute attr_mem;
+      Dwarf_Attribute *attr = INTUSE (dwarf_attr_integrate) (die, DW_AT_type,
+							     &attr_mem);
+      if (attr == NULL)
+	return 1;
+
+      result = INTUSE (dwarf_formref_die) (attr, result);
+      if (result == NULL)
+	return -1;
+
+      tag = INTUSE (dwarf_tag) (result);
+    }
+
+  if (tag == DW_TAG_invalid)
+    return -1;
+
+  return 0;
+}
+INTDEF(dwarf_peel_type)
diff --git a/src/libdw/dwarf_ranges.c b/src/libdw/dwarf_ranges.c
index 50fb6ba..d9b7293 100644
--- a/src/libdw/dwarf_ranges.c
+++ b/src/libdw/dwarf_ranges.c
@@ -1,51 +1,30 @@
 /* Enumerate the PC ranges covered by a DIE.
    Copyright (C) 2005, 2007, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_setalt.c b/src/libdw/dwarf_setalt.c
new file mode 100644
index 0000000..9bd566f
--- /dev/null
+++ b/src/libdw/dwarf_setalt.c
@@ -0,0 +1,40 @@
+/* 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)
diff --git a/src/libdw/dwarf_siblingof.c b/src/libdw/dwarf_siblingof.c
index f8e54c1..27830ea 100644
--- a/src/libdw/dwarf_siblingof.c
+++ b/src/libdw/dwarf_siblingof.c
@@ -1,52 +1,31 @@
 /* Return sibling of given DIE.
-   Copyright (C) 2003-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -83,8 +62,7 @@
   /* That's the address we start looking.  */
   unsigned char *addr = this_die.addr;
   /* End of the buffer.  */
-  unsigned char *endp
-    = ((unsigned char *) cu_data (sibattr.cu)->d_buf + sibattr.cu->end);
+  unsigned char *endp = sibattr.cu->endp;
 
   /* Search for the beginning of the next die on this level.  We
      must not return the dies for children of the given die.  */
@@ -93,7 +71,7 @@
       /* Find the end of the DIE or the sibling attribute.  */
       addr = __libdw_find_attr (&this_die, DW_AT_sibling, &sibattr.code,
 				&sibattr.form);
-      if (sibattr.code == DW_AT_sibling)
+      if (addr != NULL && sibattr.code == DW_AT_sibling)
 	{
 	  Dwarf_Off offset;
 	  sibattr.valp = addr;
@@ -102,8 +80,7 @@
 	    return -1;
 
 	  /* Compute the next address.  */
-	  addr = ((unsigned char *) cu_data (sibattr.cu)->d_buf
-		  + sibattr.cu->start + offset);
+	  addr = sibattr.cu->startp + offset;
 	}
       else if (unlikely (addr == NULL)
 	       || unlikely (this_die.abbrev == DWARF_END_ABBREV))
diff --git a/src/libdw/dwarf_sig8_hash.c b/src/libdw/dwarf_sig8_hash.c
index 53c07ea..043cac7 100644
--- a/src/libdw/dwarf_sig8_hash.c
+++ b/src/libdw/dwarf_sig8_hash.c
@@ -1,51 +1,30 @@
 /* Implementation of hash table for DWARF .debug_types section content.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_sig8_hash.h b/src/libdw/dwarf_sig8_hash.h
index 0d8932b..705ffbc 100644
--- a/src/libdw/dwarf_sig8_hash.h
+++ b/src/libdw/dwarf_sig8_hash.h
@@ -1,51 +1,30 @@
 /* Hash table for DWARF .debug_types section content.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _DWARF_SIG8_HASH_H
 #define _DWARF_SIG8_HASH_H	1
diff --git a/src/libdw/dwarf_srclang.c b/src/libdw/dwarf_srclang.c
index 305ffcd..6cc06ff 100644
--- a/src/libdw/dwarf_srclang.c
+++ b/src/libdw/dwarf_srclang.c
@@ -1,52 +1,31 @@
 /* Return source language attribute of DIE.
    Copyright (C) 2003-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_tag.c b/src/libdw/dwarf_tag.c
index fa8b384..0b1a4b0 100644
--- a/src/libdw/dwarf_tag.c
+++ b/src/libdw/dwarf_tag.c
@@ -1,52 +1,31 @@
 /* Return tag of given DIE.
-   Copyright (C) 2003-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2011, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -103,24 +82,14 @@
 dwarf_tag (die)
      Dwarf_Die *die;
 {
-  /* Do we already know the abbreviation?  */
-  if (die->abbrev == NULL)
-    {
-      /* Get the abbreviation code.  */
-      unsigned int u128;
-      const unsigned char *addr = die->addr;
-      get_uleb128 (u128, addr);
-
-      /* Find the abbreviation.  */
-      die->abbrev = __libdw_findabbrev (die->cu, u128);
-    }
-
-  if (unlikely (die->abbrev == DWARF_END_ABBREV))
+  /* Find the abbreviation entry.  */
+  Dwarf_Abbrev *abbrevp = __libdw_dieabbrev (die, NULL);
+  if (unlikely (abbrevp == DWARF_END_ABBREV))
     {
       __libdw_seterrno (DWARF_E_INVALID_DWARF);
       return DW_TAG_invalid;
     }
 
-  return die->abbrev->tag;
+  return abbrevp->tag;
 }
 INTDEF(dwarf_tag)
diff --git a/src/libdw/dwarf_whatattr.c b/src/libdw/dwarf_whatattr.c
index 9b8bddf..8fe5535 100644
--- a/src/libdw/dwarf_whatattr.c
+++ b/src/libdw/dwarf_whatattr.c
@@ -1,52 +1,31 @@
 /* Return attribute code of given attribute.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/dwarf_whatform.c b/src/libdw/dwarf_whatform.c
index 8a9076b..1d0d14b 100644
--- a/src/libdw/dwarf_whatform.c
+++ b/src/libdw/dwarf_whatform.c
@@ -1,52 +1,31 @@
 /* Return form code of given attribute.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/encoded-value.h b/src/libdw/encoded-value.h
index e118a1c..ae9a38f 100644
--- a/src/libdw/encoded-value.h
+++ b/src/libdw/encoded-value.h
@@ -1,51 +1,30 @@
 /* DW_EH_PE_* support for libdw unwinder.
-   Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _ENCODED_VALUE_H
 #define _ENCODED_VALUE_H 1
@@ -184,11 +163,13 @@
       break;
 
     case DW_EH_PE_uleb128:
-      get_uleb128 (value, *p);
+      // XXX we trust there is enough data.
+      get_uleb128 (value, *p, *p + len_leb128 (Dwarf_Addr));
       break;
 
     case DW_EH_PE_sleb128:
-      get_sleb128 (value, *p);
+      // XXX we trust there is enough data.
+      get_sleb128 (value, *p, *p + len_leb128 (Dwarf_Addr));
       break;
 
     default:
diff --git a/src/libdw/fde.c b/src/libdw/fde.c
index 5685252..18a522b 100644
--- a/src/libdw/fde.c
+++ b/src/libdw/fde.c
@@ -1,51 +1,30 @@
 /* FDE reading.
-   Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2009-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -104,7 +83,11 @@
 				    &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;
@@ -114,7 +97,7 @@
       /* The CIE augmentation says the FDE has a DW_FORM_block
 	 before its actual instruction stream.  */
       Dwarf_Word len;
-      get_uleb128 (len, fde->instructions);
+      get_uleb128 (len, fde->instructions, fde->instructions_end);
       if ((Dwarf_Word) (fde->instructions_end - fde->instructions) < len)
 	{
 	  free (fde);
@@ -202,32 +185,30 @@
 	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;
 	}
     }
 
@@ -252,12 +233,17 @@
       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;
     }
diff --git a/src/libdw/frame-cache.c b/src/libdw/frame-cache.c
index f487663..54a1cc9 100644
--- a/src/libdw/frame-cache.c
+++ b/src/libdw/frame-cache.c
@@ -1,51 +1,30 @@
 /* Frame cache handling.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/known-dwarf.h b/src/libdw/known-dwarf.h
new file mode 100644
index 0000000..2aeada9
--- /dev/null
+++ b/src/libdw/known-dwarf.h
@@ -0,0 +1,629 @@
+/* Generated by config/known-dwarf.awk from libdw/dwarf.h contents.  */
+
+#define ALL_KNOWN_DW_ACCESS \
+  ONE_KNOWN_DW_ACCESS (private, DW_ACCESS_private) \
+  ONE_KNOWN_DW_ACCESS (protected, DW_ACCESS_protected) \
+  ONE_KNOWN_DW_ACCESS (public, DW_ACCESS_public) \
+  /* End of DW_ACCESS_*.  */
+
+#define ALL_KNOWN_DW_AT \
+  ONE_KNOWN_DW_AT (GNU_all_call_sites, DW_AT_GNU_all_call_sites) \
+  ONE_KNOWN_DW_AT (GNU_all_source_call_sites, DW_AT_GNU_all_source_call_sites) \
+  ONE_KNOWN_DW_AT (GNU_all_tail_call_sites, DW_AT_GNU_all_tail_call_sites) \
+  ONE_KNOWN_DW_AT (GNU_call_site_data_value, DW_AT_GNU_call_site_data_value) \
+  ONE_KNOWN_DW_AT (GNU_call_site_target, DW_AT_GNU_call_site_target) \
+  ONE_KNOWN_DW_AT (GNU_call_site_target_clobbered, DW_AT_GNU_call_site_target_clobbered) \
+  ONE_KNOWN_DW_AT (GNU_call_site_value, DW_AT_GNU_call_site_value) \
+  ONE_KNOWN_DW_AT (GNU_deleted, DW_AT_GNU_deleted) \
+  ONE_KNOWN_DW_AT (GNU_exclusive_locks_required, DW_AT_GNU_exclusive_locks_required) \
+  ONE_KNOWN_DW_AT (GNU_guarded, DW_AT_GNU_guarded) \
+  ONE_KNOWN_DW_AT (GNU_guarded_by, DW_AT_GNU_guarded_by) \
+  ONE_KNOWN_DW_AT (GNU_locks_excluded, DW_AT_GNU_locks_excluded) \
+  ONE_KNOWN_DW_AT (GNU_macros, DW_AT_GNU_macros) \
+  ONE_KNOWN_DW_AT (GNU_odr_signature, DW_AT_GNU_odr_signature) \
+  ONE_KNOWN_DW_AT (GNU_pt_guarded, DW_AT_GNU_pt_guarded) \
+  ONE_KNOWN_DW_AT (GNU_pt_guarded_by, DW_AT_GNU_pt_guarded_by) \
+  ONE_KNOWN_DW_AT (GNU_shared_locks_required, DW_AT_GNU_shared_locks_required) \
+  ONE_KNOWN_DW_AT (GNU_tail_call, DW_AT_GNU_tail_call) \
+  ONE_KNOWN_DW_AT (GNU_template_name, DW_AT_GNU_template_name) \
+  ONE_KNOWN_DW_AT (GNU_vector, DW_AT_GNU_vector) \
+  ONE_KNOWN_DW_AT (MIPS_abstract_name, DW_AT_MIPS_abstract_name) \
+  ONE_KNOWN_DW_AT (MIPS_allocatable_dopetype, DW_AT_MIPS_allocatable_dopetype) \
+  ONE_KNOWN_DW_AT (MIPS_assumed_shape_dopetype, DW_AT_MIPS_assumed_shape_dopetype) \
+  ONE_KNOWN_DW_AT (MIPS_assumed_size, DW_AT_MIPS_assumed_size) \
+  ONE_KNOWN_DW_AT (MIPS_clone_origin, DW_AT_MIPS_clone_origin) \
+  ONE_KNOWN_DW_AT (MIPS_epilog_begin, DW_AT_MIPS_epilog_begin) \
+  ONE_KNOWN_DW_AT (MIPS_fde, DW_AT_MIPS_fde) \
+  ONE_KNOWN_DW_AT (MIPS_has_inlines, DW_AT_MIPS_has_inlines) \
+  ONE_KNOWN_DW_AT (MIPS_linkage_name, DW_AT_MIPS_linkage_name) \
+  ONE_KNOWN_DW_AT (MIPS_loop_begin, DW_AT_MIPS_loop_begin) \
+  ONE_KNOWN_DW_AT (MIPS_loop_unroll_factor, DW_AT_MIPS_loop_unroll_factor) \
+  ONE_KNOWN_DW_AT (MIPS_ptr_dopetype, DW_AT_MIPS_ptr_dopetype) \
+  ONE_KNOWN_DW_AT (MIPS_software_pipeline_depth, DW_AT_MIPS_software_pipeline_depth) \
+  ONE_KNOWN_DW_AT (MIPS_stride, DW_AT_MIPS_stride) \
+  ONE_KNOWN_DW_AT (MIPS_stride_byte, DW_AT_MIPS_stride_byte) \
+  ONE_KNOWN_DW_AT (MIPS_stride_elem, DW_AT_MIPS_stride_elem) \
+  ONE_KNOWN_DW_AT (MIPS_tail_loop_begin, DW_AT_MIPS_tail_loop_begin) \
+  ONE_KNOWN_DW_AT (abstract_origin, DW_AT_abstract_origin) \
+  ONE_KNOWN_DW_AT (accessibility, DW_AT_accessibility) \
+  ONE_KNOWN_DW_AT (address_class, DW_AT_address_class) \
+  ONE_KNOWN_DW_AT (allocated, DW_AT_allocated) \
+  ONE_KNOWN_DW_AT (artificial, DW_AT_artificial) \
+  ONE_KNOWN_DW_AT (associated, DW_AT_associated) \
+  ONE_KNOWN_DW_AT (base_types, DW_AT_base_types) \
+  ONE_KNOWN_DW_AT (binary_scale, DW_AT_binary_scale) \
+  ONE_KNOWN_DW_AT (bit_offset, DW_AT_bit_offset) \
+  ONE_KNOWN_DW_AT (bit_size, DW_AT_bit_size) \
+  ONE_KNOWN_DW_AT (bit_stride, DW_AT_bit_stride) \
+  ONE_KNOWN_DW_AT (body_begin, DW_AT_body_begin) \
+  ONE_KNOWN_DW_AT (body_end, DW_AT_body_end) \
+  ONE_KNOWN_DW_AT (byte_size, DW_AT_byte_size) \
+  ONE_KNOWN_DW_AT (byte_stride, DW_AT_byte_stride) \
+  ONE_KNOWN_DW_AT (call_column, DW_AT_call_column) \
+  ONE_KNOWN_DW_AT (call_file, DW_AT_call_file) \
+  ONE_KNOWN_DW_AT (call_line, DW_AT_call_line) \
+  ONE_KNOWN_DW_AT (calling_convention, DW_AT_calling_convention) \
+  ONE_KNOWN_DW_AT (common_reference, DW_AT_common_reference) \
+  ONE_KNOWN_DW_AT (comp_dir, DW_AT_comp_dir) \
+  ONE_KNOWN_DW_AT (const_expr, DW_AT_const_expr) \
+  ONE_KNOWN_DW_AT (const_value, DW_AT_const_value) \
+  ONE_KNOWN_DW_AT (containing_type, DW_AT_containing_type) \
+  ONE_KNOWN_DW_AT (count, DW_AT_count) \
+  ONE_KNOWN_DW_AT (data_bit_offset, DW_AT_data_bit_offset) \
+  ONE_KNOWN_DW_AT (data_location, DW_AT_data_location) \
+  ONE_KNOWN_DW_AT (data_member_location, DW_AT_data_member_location) \
+  ONE_KNOWN_DW_AT (decimal_scale, DW_AT_decimal_scale) \
+  ONE_KNOWN_DW_AT (decimal_sign, DW_AT_decimal_sign) \
+  ONE_KNOWN_DW_AT (decl_column, DW_AT_decl_column) \
+  ONE_KNOWN_DW_AT (decl_file, DW_AT_decl_file) \
+  ONE_KNOWN_DW_AT (decl_line, DW_AT_decl_line) \
+  ONE_KNOWN_DW_AT (declaration, DW_AT_declaration) \
+  ONE_KNOWN_DW_AT (default_value, DW_AT_default_value) \
+  ONE_KNOWN_DW_AT (description, DW_AT_description) \
+  ONE_KNOWN_DW_AT (digit_count, DW_AT_digit_count) \
+  ONE_KNOWN_DW_AT (discr, DW_AT_discr) \
+  ONE_KNOWN_DW_AT (discr_list, DW_AT_discr_list) \
+  ONE_KNOWN_DW_AT (discr_value, DW_AT_discr_value) \
+  ONE_KNOWN_DW_AT (element_list, DW_AT_element_list) \
+  ONE_KNOWN_DW_AT (elemental, DW_AT_elemental) \
+  ONE_KNOWN_DW_AT (encoding, DW_AT_encoding) \
+  ONE_KNOWN_DW_AT (endianity, DW_AT_endianity) \
+  ONE_KNOWN_DW_AT (entry_pc, DW_AT_entry_pc) \
+  ONE_KNOWN_DW_AT (enum_class, DW_AT_enum_class) \
+  ONE_KNOWN_DW_AT (explicit, DW_AT_explicit) \
+  ONE_KNOWN_DW_AT (extension, DW_AT_extension) \
+  ONE_KNOWN_DW_AT (external, DW_AT_external) \
+  ONE_KNOWN_DW_AT (frame_base, DW_AT_frame_base) \
+  ONE_KNOWN_DW_AT (friend, DW_AT_friend) \
+  ONE_KNOWN_DW_AT (high_pc, DW_AT_high_pc) \
+  ONE_KNOWN_DW_AT (identifier_case, DW_AT_identifier_case) \
+  ONE_KNOWN_DW_AT (import, DW_AT_import) \
+  ONE_KNOWN_DW_AT (inline, DW_AT_inline) \
+  ONE_KNOWN_DW_AT (is_optional, DW_AT_is_optional) \
+  ONE_KNOWN_DW_AT (language, DW_AT_language) \
+  ONE_KNOWN_DW_AT (linkage_name, DW_AT_linkage_name) \
+  ONE_KNOWN_DW_AT (location, DW_AT_location) \
+  ONE_KNOWN_DW_AT (low_pc, DW_AT_low_pc) \
+  ONE_KNOWN_DW_AT (lower_bound, DW_AT_lower_bound) \
+  ONE_KNOWN_DW_AT (mac_info, DW_AT_mac_info) \
+  ONE_KNOWN_DW_AT (macro_info, DW_AT_macro_info) \
+  ONE_KNOWN_DW_AT (main_subprogram, DW_AT_main_subprogram) \
+  ONE_KNOWN_DW_AT (member, DW_AT_member) \
+  ONE_KNOWN_DW_AT (mutable, DW_AT_mutable) \
+  ONE_KNOWN_DW_AT (name, DW_AT_name) \
+  ONE_KNOWN_DW_AT (namelist_item, DW_AT_namelist_item) \
+  ONE_KNOWN_DW_AT (noreturn, DW_AT_noreturn) \
+  ONE_KNOWN_DW_AT (object_pointer, DW_AT_object_pointer) \
+  ONE_KNOWN_DW_AT (ordering, DW_AT_ordering) \
+  ONE_KNOWN_DW_AT (picture_string, DW_AT_picture_string) \
+  ONE_KNOWN_DW_AT (priority, DW_AT_priority) \
+  ONE_KNOWN_DW_AT (producer, DW_AT_producer) \
+  ONE_KNOWN_DW_AT (prototyped, DW_AT_prototyped) \
+  ONE_KNOWN_DW_AT (pure, DW_AT_pure) \
+  ONE_KNOWN_DW_AT (ranges, DW_AT_ranges) \
+  ONE_KNOWN_DW_AT (recursive, DW_AT_recursive) \
+  ONE_KNOWN_DW_AT (return_addr, DW_AT_return_addr) \
+  ONE_KNOWN_DW_AT (segment, DW_AT_segment) \
+  ONE_KNOWN_DW_AT (sf_names, DW_AT_sf_names) \
+  ONE_KNOWN_DW_AT (sibling, DW_AT_sibling) \
+  ONE_KNOWN_DW_AT (signature, DW_AT_signature) \
+  ONE_KNOWN_DW_AT (small, DW_AT_small) \
+  ONE_KNOWN_DW_AT (specification, DW_AT_specification) \
+  ONE_KNOWN_DW_AT (src_coords, DW_AT_src_coords) \
+  ONE_KNOWN_DW_AT (src_info, DW_AT_src_info) \
+  ONE_KNOWN_DW_AT (start_scope, DW_AT_start_scope) \
+  ONE_KNOWN_DW_AT (static_link, DW_AT_static_link) \
+  ONE_KNOWN_DW_AT (stmt_list, DW_AT_stmt_list) \
+  ONE_KNOWN_DW_AT (string_length, DW_AT_string_length) \
+  ONE_KNOWN_DW_AT (subscr_data, DW_AT_subscr_data) \
+  ONE_KNOWN_DW_AT (threads_scaled, DW_AT_threads_scaled) \
+  ONE_KNOWN_DW_AT (trampoline, DW_AT_trampoline) \
+  ONE_KNOWN_DW_AT (type, DW_AT_type) \
+  ONE_KNOWN_DW_AT (upper_bound, DW_AT_upper_bound) \
+  ONE_KNOWN_DW_AT (use_UTF8, DW_AT_use_UTF8) \
+  ONE_KNOWN_DW_AT (use_location, DW_AT_use_location) \
+  ONE_KNOWN_DW_AT (variable_parameter, DW_AT_variable_parameter) \
+  ONE_KNOWN_DW_AT (virtuality, DW_AT_virtuality) \
+  ONE_KNOWN_DW_AT (visibility, DW_AT_visibility) \
+  ONE_KNOWN_DW_AT (vtable_elem_location, DW_AT_vtable_elem_location) \
+  /* End of DW_AT_*.  */
+
+#define ALL_KNOWN_DW_ATE \
+  ONE_KNOWN_DW_ATE (UTF, DW_ATE_UTF) \
+  ONE_KNOWN_DW_ATE (address, DW_ATE_address) \
+  ONE_KNOWN_DW_ATE (boolean, DW_ATE_boolean) \
+  ONE_KNOWN_DW_ATE (complex_float, DW_ATE_complex_float) \
+  ONE_KNOWN_DW_ATE (decimal_float, DW_ATE_decimal_float) \
+  ONE_KNOWN_DW_ATE (edited, DW_ATE_edited) \
+  ONE_KNOWN_DW_ATE (float, DW_ATE_float) \
+  ONE_KNOWN_DW_ATE (imaginary_float, DW_ATE_imaginary_float) \
+  ONE_KNOWN_DW_ATE (numeric_string, DW_ATE_numeric_string) \
+  ONE_KNOWN_DW_ATE (packed_decimal, DW_ATE_packed_decimal) \
+  ONE_KNOWN_DW_ATE (signed, DW_ATE_signed) \
+  ONE_KNOWN_DW_ATE (signed_char, DW_ATE_signed_char) \
+  ONE_KNOWN_DW_ATE (signed_fixed, DW_ATE_signed_fixed) \
+  ONE_KNOWN_DW_ATE (unsigned, DW_ATE_unsigned) \
+  ONE_KNOWN_DW_ATE (unsigned_char, DW_ATE_unsigned_char) \
+  ONE_KNOWN_DW_ATE (unsigned_fixed, DW_ATE_unsigned_fixed) \
+  ONE_KNOWN_DW_ATE (void, DW_ATE_void) \
+  /* End of DW_ATE_*.  */
+
+#define ALL_KNOWN_DW_CC \
+  ONE_KNOWN_DW_CC (nocall, DW_CC_nocall) \
+  ONE_KNOWN_DW_CC (normal, DW_CC_normal) \
+  ONE_KNOWN_DW_CC (program, DW_CC_program) \
+  /* End of DW_CC_*.  */
+
+#define ALL_KNOWN_DW_CFA \
+  ONE_KNOWN_DW_CFA (GNU_args_size, DW_CFA_GNU_args_size) \
+  ONE_KNOWN_DW_CFA (GNU_negative_offset_extended, DW_CFA_GNU_negative_offset_extended) \
+  ONE_KNOWN_DW_CFA (GNU_window_save, DW_CFA_GNU_window_save) \
+  ONE_KNOWN_DW_CFA (MIPS_advance_loc8, DW_CFA_MIPS_advance_loc8) \
+  ONE_KNOWN_DW_CFA (advance_loc, DW_CFA_advance_loc) \
+  ONE_KNOWN_DW_CFA (advance_loc1, DW_CFA_advance_loc1) \
+  ONE_KNOWN_DW_CFA (advance_loc2, DW_CFA_advance_loc2) \
+  ONE_KNOWN_DW_CFA (advance_loc4, DW_CFA_advance_loc4) \
+  ONE_KNOWN_DW_CFA (def_cfa, DW_CFA_def_cfa) \
+  ONE_KNOWN_DW_CFA (def_cfa_expression, DW_CFA_def_cfa_expression) \
+  ONE_KNOWN_DW_CFA (def_cfa_offset, DW_CFA_def_cfa_offset) \
+  ONE_KNOWN_DW_CFA (def_cfa_offset_sf, DW_CFA_def_cfa_offset_sf) \
+  ONE_KNOWN_DW_CFA (def_cfa_register, DW_CFA_def_cfa_register) \
+  ONE_KNOWN_DW_CFA (def_cfa_sf, DW_CFA_def_cfa_sf) \
+  ONE_KNOWN_DW_CFA (expression, DW_CFA_expression) \
+  ONE_KNOWN_DW_CFA (extended, DW_CFA_extended) \
+  ONE_KNOWN_DW_CFA (nop, DW_CFA_nop) \
+  ONE_KNOWN_DW_CFA (offset, DW_CFA_offset) \
+  ONE_KNOWN_DW_CFA (offset_extended, DW_CFA_offset_extended) \
+  ONE_KNOWN_DW_CFA (offset_extended_sf, DW_CFA_offset_extended_sf) \
+  ONE_KNOWN_DW_CFA (register, DW_CFA_register) \
+  ONE_KNOWN_DW_CFA (remember_state, DW_CFA_remember_state) \
+  ONE_KNOWN_DW_CFA (restore, DW_CFA_restore) \
+  ONE_KNOWN_DW_CFA (restore_extended, DW_CFA_restore_extended) \
+  ONE_KNOWN_DW_CFA (restore_state, DW_CFA_restore_state) \
+  ONE_KNOWN_DW_CFA (same_value, DW_CFA_same_value) \
+  ONE_KNOWN_DW_CFA (set_loc, DW_CFA_set_loc) \
+  ONE_KNOWN_DW_CFA (undefined, DW_CFA_undefined) \
+  ONE_KNOWN_DW_CFA (val_expression, DW_CFA_val_expression) \
+  ONE_KNOWN_DW_CFA (val_offset, DW_CFA_val_offset) \
+  ONE_KNOWN_DW_CFA (val_offset_sf, DW_CFA_val_offset_sf) \
+  /* End of DW_CFA_*.  */
+
+#define ALL_KNOWN_DW_CHILDREN \
+  ONE_KNOWN_DW_CHILDREN (no, DW_CHILDREN_no) \
+  ONE_KNOWN_DW_CHILDREN (yes, DW_CHILDREN_yes) \
+  /* End of DW_CHILDREN_*.  */
+
+#define ALL_KNOWN_DW_CIE_ID \
+  ONE_KNOWN_DW_CIE_ID_DESC (32, DW_CIE_ID_32, "In 32-bit format CIE header.") \
+  ONE_KNOWN_DW_CIE_ID_DESC (64, DW_CIE_ID_64, "In 64-bit format CIE header.") \
+  /* End of DW_CIE_ID_*.  */
+
+#define ALL_KNOWN_DW_DS \
+  ONE_KNOWN_DW_DS (leading_overpunch, DW_DS_leading_overpunch) \
+  ONE_KNOWN_DW_DS (leading_separate, DW_DS_leading_separate) \
+  ONE_KNOWN_DW_DS (trailing_overpunch, DW_DS_trailing_overpunch) \
+  ONE_KNOWN_DW_DS (trailing_separate, DW_DS_trailing_separate) \
+  ONE_KNOWN_DW_DS (unsigned, DW_DS_unsigned) \
+  /* End of DW_DS_*.  */
+
+#define ALL_KNOWN_DW_DSC \
+  ONE_KNOWN_DW_DSC (label, DW_DSC_label) \
+  ONE_KNOWN_DW_DSC (range, DW_DSC_range) \
+  /* End of DW_DSC_*.  */
+
+#define ALL_KNOWN_DW_EH_PE \
+  ONE_KNOWN_DW_EH_PE (absptr, DW_EH_PE_absptr) \
+  ONE_KNOWN_DW_EH_PE (aligned, DW_EH_PE_aligned) \
+  ONE_KNOWN_DW_EH_PE (datarel, DW_EH_PE_datarel) \
+  ONE_KNOWN_DW_EH_PE (funcrel, DW_EH_PE_funcrel) \
+  ONE_KNOWN_DW_EH_PE (indirect, DW_EH_PE_indirect) \
+  ONE_KNOWN_DW_EH_PE (omit, DW_EH_PE_omit) \
+  ONE_KNOWN_DW_EH_PE (pcrel, DW_EH_PE_pcrel) \
+  ONE_KNOWN_DW_EH_PE (sdata2, DW_EH_PE_sdata2) \
+  ONE_KNOWN_DW_EH_PE (sdata4, DW_EH_PE_sdata4) \
+  ONE_KNOWN_DW_EH_PE (sdata8, DW_EH_PE_sdata8) \
+  ONE_KNOWN_DW_EH_PE (signed, DW_EH_PE_signed) \
+  ONE_KNOWN_DW_EH_PE (sleb128, DW_EH_PE_sleb128) \
+  ONE_KNOWN_DW_EH_PE (textrel, DW_EH_PE_textrel) \
+  ONE_KNOWN_DW_EH_PE (udata2, DW_EH_PE_udata2) \
+  ONE_KNOWN_DW_EH_PE (udata4, DW_EH_PE_udata4) \
+  ONE_KNOWN_DW_EH_PE (udata8, DW_EH_PE_udata8) \
+  ONE_KNOWN_DW_EH_PE (uleb128, DW_EH_PE_uleb128) \
+  /* End of DW_EH_PE_*.  */
+
+#define ALL_KNOWN_DW_END \
+  ONE_KNOWN_DW_END (big, DW_END_big) \
+  ONE_KNOWN_DW_END (default, DW_END_default) \
+  ONE_KNOWN_DW_END (little, DW_END_little) \
+  /* End of DW_END_*.  */
+
+#define ALL_KNOWN_DW_FORM \
+  ONE_KNOWN_DW_FORM_DESC (GNU_ref_alt, DW_FORM_GNU_ref_alt, "offset in alternate .debuginfo.") \
+  ONE_KNOWN_DW_FORM_DESC (GNU_strp_alt, DW_FORM_GNU_strp_alt, "offset in alternate .debug_str.") \
+  ONE_KNOWN_DW_FORM (addr, DW_FORM_addr) \
+  ONE_KNOWN_DW_FORM (block, DW_FORM_block) \
+  ONE_KNOWN_DW_FORM (block1, DW_FORM_block1) \
+  ONE_KNOWN_DW_FORM (block2, DW_FORM_block2) \
+  ONE_KNOWN_DW_FORM (block4, DW_FORM_block4) \
+  ONE_KNOWN_DW_FORM (data1, DW_FORM_data1) \
+  ONE_KNOWN_DW_FORM (data2, DW_FORM_data2) \
+  ONE_KNOWN_DW_FORM (data4, DW_FORM_data4) \
+  ONE_KNOWN_DW_FORM (data8, DW_FORM_data8) \
+  ONE_KNOWN_DW_FORM (exprloc, DW_FORM_exprloc) \
+  ONE_KNOWN_DW_FORM (flag, DW_FORM_flag) \
+  ONE_KNOWN_DW_FORM (flag_present, DW_FORM_flag_present) \
+  ONE_KNOWN_DW_FORM (indirect, DW_FORM_indirect) \
+  ONE_KNOWN_DW_FORM (ref1, DW_FORM_ref1) \
+  ONE_KNOWN_DW_FORM (ref2, DW_FORM_ref2) \
+  ONE_KNOWN_DW_FORM (ref4, DW_FORM_ref4) \
+  ONE_KNOWN_DW_FORM (ref8, DW_FORM_ref8) \
+  ONE_KNOWN_DW_FORM (ref_addr, DW_FORM_ref_addr) \
+  ONE_KNOWN_DW_FORM (ref_sig8, DW_FORM_ref_sig8) \
+  ONE_KNOWN_DW_FORM (ref_udata, DW_FORM_ref_udata) \
+  ONE_KNOWN_DW_FORM (sdata, DW_FORM_sdata) \
+  ONE_KNOWN_DW_FORM (sec_offset, DW_FORM_sec_offset) \
+  ONE_KNOWN_DW_FORM (string, DW_FORM_string) \
+  ONE_KNOWN_DW_FORM (strp, DW_FORM_strp) \
+  ONE_KNOWN_DW_FORM (udata, DW_FORM_udata) \
+  /* End of DW_FORM_*.  */
+
+#define ALL_KNOWN_DW_ID \
+  ONE_KNOWN_DW_ID (case_insensitive, DW_ID_case_insensitive) \
+  ONE_KNOWN_DW_ID (case_sensitive, DW_ID_case_sensitive) \
+  ONE_KNOWN_DW_ID (down_case, DW_ID_down_case) \
+  ONE_KNOWN_DW_ID (up_case, DW_ID_up_case) \
+  /* End of DW_ID_*.  */
+
+#define ALL_KNOWN_DW_INL \
+  ONE_KNOWN_DW_INL (declared_inlined, DW_INL_declared_inlined) \
+  ONE_KNOWN_DW_INL (declared_not_inlined, DW_INL_declared_not_inlined) \
+  ONE_KNOWN_DW_INL (inlined, DW_INL_inlined) \
+  ONE_KNOWN_DW_INL (not_inlined, DW_INL_not_inlined) \
+  /* End of DW_INL_*.  */
+
+#define ALL_KNOWN_DW_LANG \
+  ONE_KNOWN_DW_LANG_DESC (Ada83, DW_LANG_Ada83, "ISO Ada:1983") \
+  ONE_KNOWN_DW_LANG_DESC (Ada95, DW_LANG_Ada95, "ISO Ada:1995") \
+  ONE_KNOWN_DW_LANG_DESC (C, DW_LANG_C, "C") \
+  ONE_KNOWN_DW_LANG_DESC (C11, DW_LANG_C11, "ISO C:2011") \
+  ONE_KNOWN_DW_LANG_DESC (C89, DW_LANG_C89, "ISO C:1989") \
+  ONE_KNOWN_DW_LANG_DESC (C99, DW_LANG_C99, "ISO C:1999") \
+  ONE_KNOWN_DW_LANG_DESC (C_plus_plus, DW_LANG_C_plus_plus, "ISO C++:1998") \
+  ONE_KNOWN_DW_LANG_DESC (C_plus_plus_11, DW_LANG_C_plus_plus_11, "ISO C++:2011") \
+  ONE_KNOWN_DW_LANG_DESC (C_plus_plus_14, DW_LANG_C_plus_plus_14, "ISO C++:2014") \
+  ONE_KNOWN_DW_LANG_DESC (Cobol74, DW_LANG_Cobol74, "ISO Cobol:1974") \
+  ONE_KNOWN_DW_LANG_DESC (Cobol85, DW_LANG_Cobol85, "ISO Cobol:1985") \
+  ONE_KNOWN_DW_LANG_DESC (D, DW_LANG_D, "D") \
+  ONE_KNOWN_DW_LANG_DESC (Fortran77, DW_LANG_Fortran77, "ISO FORTRAN 77") \
+  ONE_KNOWN_DW_LANG_DESC (Fortran90, DW_LANG_Fortran90, "ISO Fortran 90") \
+  ONE_KNOWN_DW_LANG_DESC (Fortran95, DW_LANG_Fortran95, "ISO Fortran 95") \
+  ONE_KNOWN_DW_LANG_DESC (Go, DW_LANG_Go, "Go") \
+  ONE_KNOWN_DW_LANG_DESC (Java, DW_LANG_Java, "Java") \
+  ONE_KNOWN_DW_LANG_DESC (Mips_Assembler, DW_LANG_Mips_Assembler, "Assembler") \
+  ONE_KNOWN_DW_LANG_DESC (Modula2, DW_LANG_Modula2, "ISO Modula-2:1996") \
+  ONE_KNOWN_DW_LANG_DESC (ObjC, DW_LANG_ObjC, "Objective-C") \
+  ONE_KNOWN_DW_LANG_DESC (ObjC_plus_plus, DW_LANG_ObjC_plus_plus, "Objective-C++") \
+  ONE_KNOWN_DW_LANG_DESC (PL1, DW_LANG_PL1, "ISO PL/1:1976") \
+  ONE_KNOWN_DW_LANG_DESC (Pascal83, DW_LANG_Pascal83, "ISO Pascal:1983") \
+  ONE_KNOWN_DW_LANG_DESC (Python, DW_LANG_Python, "Python") \
+  ONE_KNOWN_DW_LANG_DESC (UPC, DW_LANG_UPC, "Unified Parallel C") \
+  /* End of DW_LANG_*.  */
+
+#define ALL_KNOWN_DW_LNE \
+  ONE_KNOWN_DW_LNE (define_file, DW_LNE_define_file) \
+  ONE_KNOWN_DW_LNE (end_sequence, DW_LNE_end_sequence) \
+  ONE_KNOWN_DW_LNE (set_address, DW_LNE_set_address) \
+  ONE_KNOWN_DW_LNE (set_discriminator, DW_LNE_set_discriminator) \
+  /* End of DW_LNE_*.  */
+
+#define ALL_KNOWN_DW_LNS \
+  ONE_KNOWN_DW_LNS (advance_line, DW_LNS_advance_line) \
+  ONE_KNOWN_DW_LNS (advance_pc, DW_LNS_advance_pc) \
+  ONE_KNOWN_DW_LNS (const_add_pc, DW_LNS_const_add_pc) \
+  ONE_KNOWN_DW_LNS (copy, DW_LNS_copy) \
+  ONE_KNOWN_DW_LNS (fixed_advance_pc, DW_LNS_fixed_advance_pc) \
+  ONE_KNOWN_DW_LNS (negate_stmt, DW_LNS_negate_stmt) \
+  ONE_KNOWN_DW_LNS (set_basic_block, DW_LNS_set_basic_block) \
+  ONE_KNOWN_DW_LNS (set_column, DW_LNS_set_column) \
+  ONE_KNOWN_DW_LNS (set_epilogue_begin, DW_LNS_set_epilogue_begin) \
+  ONE_KNOWN_DW_LNS (set_file, DW_LNS_set_file) \
+  ONE_KNOWN_DW_LNS (set_isa, DW_LNS_set_isa) \
+  ONE_KNOWN_DW_LNS (set_prologue_end, DW_LNS_set_prologue_end) \
+  /* End of DW_LNS_*.  */
+
+#define ALL_KNOWN_DW_MACINFO \
+  ONE_KNOWN_DW_MACINFO (define, DW_MACINFO_define) \
+  ONE_KNOWN_DW_MACINFO (end_file, DW_MACINFO_end_file) \
+  ONE_KNOWN_DW_MACINFO (start_file, DW_MACINFO_start_file) \
+  ONE_KNOWN_DW_MACINFO (undef, DW_MACINFO_undef) \
+  ONE_KNOWN_DW_MACINFO (vendor_ext, DW_MACINFO_vendor_ext) \
+  /* End of DW_MACINFO_*.  */
+
+#define ALL_KNOWN_DW_MACRO_GNU \
+  ONE_KNOWN_DW_MACRO_GNU (define, DW_MACRO_GNU_define) \
+  ONE_KNOWN_DW_MACRO_GNU (define_indirect, DW_MACRO_GNU_define_indirect) \
+  ONE_KNOWN_DW_MACRO_GNU (end_file, DW_MACRO_GNU_end_file) \
+  ONE_KNOWN_DW_MACRO_GNU (start_file, DW_MACRO_GNU_start_file) \
+  ONE_KNOWN_DW_MACRO_GNU (transparent_include, DW_MACRO_GNU_transparent_include) \
+  ONE_KNOWN_DW_MACRO_GNU (undef, DW_MACRO_GNU_undef) \
+  ONE_KNOWN_DW_MACRO_GNU (undef_indirect, DW_MACRO_GNU_undef_indirect) \
+  /* End of DW_MACRO_GNU_*.  */
+
+#define ALL_KNOWN_DW_OP \
+  ONE_KNOWN_DW_OP (GNU_const_type, DW_OP_GNU_const_type) \
+  ONE_KNOWN_DW_OP (GNU_convert, DW_OP_GNU_convert) \
+  ONE_KNOWN_DW_OP (GNU_deref_type, DW_OP_GNU_deref_type) \
+  ONE_KNOWN_DW_OP (GNU_encoded_addr, DW_OP_GNU_encoded_addr) \
+  ONE_KNOWN_DW_OP (GNU_entry_value, DW_OP_GNU_entry_value) \
+  ONE_KNOWN_DW_OP (GNU_implicit_pointer, DW_OP_GNU_implicit_pointer) \
+  ONE_KNOWN_DW_OP (GNU_parameter_ref, DW_OP_GNU_parameter_ref) \
+  ONE_KNOWN_DW_OP (GNU_push_tls_address, DW_OP_GNU_push_tls_address) \
+  ONE_KNOWN_DW_OP (GNU_regval_type, DW_OP_GNU_regval_type) \
+  ONE_KNOWN_DW_OP (GNU_reinterpret, DW_OP_GNU_reinterpret) \
+  ONE_KNOWN_DW_OP (GNU_uninit, DW_OP_GNU_uninit) \
+  ONE_KNOWN_DW_OP (abs, DW_OP_abs) \
+  ONE_KNOWN_DW_OP_DESC (addr, DW_OP_addr, "Constant address.") \
+  ONE_KNOWN_DW_OP (and, DW_OP_and) \
+  ONE_KNOWN_DW_OP_DESC (bit_piece, DW_OP_bit_piece, "ULEB128 size and ULEB128 offset in bits.") \
+  ONE_KNOWN_DW_OP_DESC (bra, DW_OP_bra, "Signed 2-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (breg0, DW_OP_breg0, "Base register 0.") \
+  ONE_KNOWN_DW_OP_DESC (breg1, DW_OP_breg1, "Base register 1.") \
+  ONE_KNOWN_DW_OP_DESC (breg10, DW_OP_breg10, "Base register 10.") \
+  ONE_KNOWN_DW_OP_DESC (breg11, DW_OP_breg11, "Base register 11.") \
+  ONE_KNOWN_DW_OP_DESC (breg12, DW_OP_breg12, "Base register 12.") \
+  ONE_KNOWN_DW_OP_DESC (breg13, DW_OP_breg13, "Base register 13.") \
+  ONE_KNOWN_DW_OP_DESC (breg14, DW_OP_breg14, "Base register 14.") \
+  ONE_KNOWN_DW_OP_DESC (breg15, DW_OP_breg15, "Base register 15.") \
+  ONE_KNOWN_DW_OP_DESC (breg16, DW_OP_breg16, "Base register 16.") \
+  ONE_KNOWN_DW_OP_DESC (breg17, DW_OP_breg17, "Base register 17.") \
+  ONE_KNOWN_DW_OP_DESC (breg18, DW_OP_breg18, "Base register 18.") \
+  ONE_KNOWN_DW_OP_DESC (breg19, DW_OP_breg19, "Base register 19.") \
+  ONE_KNOWN_DW_OP_DESC (breg2, DW_OP_breg2, "Base register 2.") \
+  ONE_KNOWN_DW_OP_DESC (breg20, DW_OP_breg20, "Base register 20.") \
+  ONE_KNOWN_DW_OP_DESC (breg21, DW_OP_breg21, "Base register 21.") \
+  ONE_KNOWN_DW_OP_DESC (breg22, DW_OP_breg22, "Base register 22.") \
+  ONE_KNOWN_DW_OP_DESC (breg23, DW_OP_breg23, "Base register 23.") \
+  ONE_KNOWN_DW_OP_DESC (breg24, DW_OP_breg24, "Base register 24.") \
+  ONE_KNOWN_DW_OP_DESC (breg25, DW_OP_breg25, "Base register 25.") \
+  ONE_KNOWN_DW_OP_DESC (breg26, DW_OP_breg26, "Base register 26.") \
+  ONE_KNOWN_DW_OP_DESC (breg27, DW_OP_breg27, "Base register 27.") \
+  ONE_KNOWN_DW_OP_DESC (breg28, DW_OP_breg28, "Base register 28.") \
+  ONE_KNOWN_DW_OP_DESC (breg29, DW_OP_breg29, "Base register 29.") \
+  ONE_KNOWN_DW_OP_DESC (breg3, DW_OP_breg3, "Base register 3.") \
+  ONE_KNOWN_DW_OP_DESC (breg30, DW_OP_breg30, "Base register 30.") \
+  ONE_KNOWN_DW_OP_DESC (breg31, DW_OP_breg31, "Base register 31.") \
+  ONE_KNOWN_DW_OP_DESC (breg4, DW_OP_breg4, "Base register 4.") \
+  ONE_KNOWN_DW_OP_DESC (breg5, DW_OP_breg5, "Base register 5.") \
+  ONE_KNOWN_DW_OP_DESC (breg6, DW_OP_breg6, "Base register 6.") \
+  ONE_KNOWN_DW_OP_DESC (breg7, DW_OP_breg7, "Base register 7.") \
+  ONE_KNOWN_DW_OP_DESC (breg8, DW_OP_breg8, "Base register 8.") \
+  ONE_KNOWN_DW_OP_DESC (breg9, DW_OP_breg9, "Base register 9.") \
+  ONE_KNOWN_DW_OP_DESC (bregx, DW_OP_bregx, "ULEB128 register followed by SLEB128 off.") \
+  ONE_KNOWN_DW_OP (call2, DW_OP_call2) \
+  ONE_KNOWN_DW_OP (call4, DW_OP_call4) \
+  ONE_KNOWN_DW_OP (call_frame_cfa, DW_OP_call_frame_cfa) \
+  ONE_KNOWN_DW_OP (call_ref, DW_OP_call_ref) \
+  ONE_KNOWN_DW_OP_DESC (const1s, DW_OP_const1s, "Signed 1-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (const1u, DW_OP_const1u, "Unsigned 1-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (const2s, DW_OP_const2s, "Signed 2-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (const2u, DW_OP_const2u, "Unsigned 2-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (const4s, DW_OP_const4s, "Signed 4-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (const4u, DW_OP_const4u, "Unsigned 4-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (const8s, DW_OP_const8s, "Signed 8-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (const8u, DW_OP_const8u, "Unsigned 8-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (consts, DW_OP_consts, "Signed LEB128 constant.") \
+  ONE_KNOWN_DW_OP_DESC (constu, DW_OP_constu, "Unsigned LEB128 constant.") \
+  ONE_KNOWN_DW_OP (deref, DW_OP_deref) \
+  ONE_KNOWN_DW_OP_DESC (deref_size, DW_OP_deref_size, "1-byte size of data retrieved.") \
+  ONE_KNOWN_DW_OP (div, DW_OP_div) \
+  ONE_KNOWN_DW_OP (drop, DW_OP_drop) \
+  ONE_KNOWN_DW_OP (dup, DW_OP_dup) \
+  ONE_KNOWN_DW_OP (eq, DW_OP_eq) \
+  ONE_KNOWN_DW_OP_DESC (fbreg, DW_OP_fbreg, "Signed LEB128 offset.") \
+  ONE_KNOWN_DW_OP (form_tls_address, DW_OP_form_tls_address) \
+  ONE_KNOWN_DW_OP (ge, DW_OP_ge) \
+  ONE_KNOWN_DW_OP (gt, DW_OP_gt) \
+  ONE_KNOWN_DW_OP_DESC (implicit_value, DW_OP_implicit_value, "DW_FORM_block follows opcode.") \
+  ONE_KNOWN_DW_OP (le, DW_OP_le) \
+  ONE_KNOWN_DW_OP_DESC (lit0, DW_OP_lit0, "Literal 0.") \
+  ONE_KNOWN_DW_OP_DESC (lit1, DW_OP_lit1, "Literal 1.") \
+  ONE_KNOWN_DW_OP_DESC (lit10, DW_OP_lit10, "Literal 10.") \
+  ONE_KNOWN_DW_OP_DESC (lit11, DW_OP_lit11, "Literal 11.") \
+  ONE_KNOWN_DW_OP_DESC (lit12, DW_OP_lit12, "Literal 12.") \
+  ONE_KNOWN_DW_OP_DESC (lit13, DW_OP_lit13, "Literal 13.") \
+  ONE_KNOWN_DW_OP_DESC (lit14, DW_OP_lit14, "Literal 14.") \
+  ONE_KNOWN_DW_OP_DESC (lit15, DW_OP_lit15, "Literal 15.") \
+  ONE_KNOWN_DW_OP_DESC (lit16, DW_OP_lit16, "Literal 16.") \
+  ONE_KNOWN_DW_OP_DESC (lit17, DW_OP_lit17, "Literal 17.") \
+  ONE_KNOWN_DW_OP_DESC (lit18, DW_OP_lit18, "Literal 18.") \
+  ONE_KNOWN_DW_OP_DESC (lit19, DW_OP_lit19, "Literal 19.") \
+  ONE_KNOWN_DW_OP_DESC (lit2, DW_OP_lit2, "Literal 2.") \
+  ONE_KNOWN_DW_OP_DESC (lit20, DW_OP_lit20, "Literal 20.") \
+  ONE_KNOWN_DW_OP_DESC (lit21, DW_OP_lit21, "Literal 21.") \
+  ONE_KNOWN_DW_OP_DESC (lit22, DW_OP_lit22, "Literal 22.") \
+  ONE_KNOWN_DW_OP_DESC (lit23, DW_OP_lit23, "Literal 23.") \
+  ONE_KNOWN_DW_OP_DESC (lit24, DW_OP_lit24, "Literal 24.") \
+  ONE_KNOWN_DW_OP_DESC (lit25, DW_OP_lit25, "Literal 25.") \
+  ONE_KNOWN_DW_OP_DESC (lit26, DW_OP_lit26, "Literal 26.") \
+  ONE_KNOWN_DW_OP_DESC (lit27, DW_OP_lit27, "Literal 27.") \
+  ONE_KNOWN_DW_OP_DESC (lit28, DW_OP_lit28, "Literal 28.") \
+  ONE_KNOWN_DW_OP_DESC (lit29, DW_OP_lit29, "Literal 29.") \
+  ONE_KNOWN_DW_OP_DESC (lit3, DW_OP_lit3, "Literal 3.") \
+  ONE_KNOWN_DW_OP_DESC (lit30, DW_OP_lit30, "Literal 30.") \
+  ONE_KNOWN_DW_OP_DESC (lit31, DW_OP_lit31, "Literal 31.") \
+  ONE_KNOWN_DW_OP_DESC (lit4, DW_OP_lit4, "Literal 4.") \
+  ONE_KNOWN_DW_OP_DESC (lit5, DW_OP_lit5, "Literal 5.") \
+  ONE_KNOWN_DW_OP_DESC (lit6, DW_OP_lit6, "Literal 6.") \
+  ONE_KNOWN_DW_OP_DESC (lit7, DW_OP_lit7, "Literal 7.") \
+  ONE_KNOWN_DW_OP_DESC (lit8, DW_OP_lit8, "Literal 8.") \
+  ONE_KNOWN_DW_OP_DESC (lit9, DW_OP_lit9, "Literal 9.") \
+  ONE_KNOWN_DW_OP (lt, DW_OP_lt) \
+  ONE_KNOWN_DW_OP (minus, DW_OP_minus) \
+  ONE_KNOWN_DW_OP (mod, DW_OP_mod) \
+  ONE_KNOWN_DW_OP (mul, DW_OP_mul) \
+  ONE_KNOWN_DW_OP (ne, DW_OP_ne) \
+  ONE_KNOWN_DW_OP (neg, DW_OP_neg) \
+  ONE_KNOWN_DW_OP (nop, DW_OP_nop) \
+  ONE_KNOWN_DW_OP (not, DW_OP_not) \
+  ONE_KNOWN_DW_OP (or, DW_OP_or) \
+  ONE_KNOWN_DW_OP (over, DW_OP_over) \
+  ONE_KNOWN_DW_OP_DESC (pick, DW_OP_pick, "1-byte stack index.") \
+  ONE_KNOWN_DW_OP_DESC (piece, DW_OP_piece, "ULEB128 size of piece addressed.") \
+  ONE_KNOWN_DW_OP (plus, DW_OP_plus) \
+  ONE_KNOWN_DW_OP_DESC (plus_uconst, DW_OP_plus_uconst, "Unsigned LEB128 addend.") \
+  ONE_KNOWN_DW_OP (push_object_address, DW_OP_push_object_address) \
+  ONE_KNOWN_DW_OP_DESC (reg0, DW_OP_reg0, "Register 0.") \
+  ONE_KNOWN_DW_OP_DESC (reg1, DW_OP_reg1, "Register 1.") \
+  ONE_KNOWN_DW_OP_DESC (reg10, DW_OP_reg10, "Register 10.") \
+  ONE_KNOWN_DW_OP_DESC (reg11, DW_OP_reg11, "Register 11.") \
+  ONE_KNOWN_DW_OP_DESC (reg12, DW_OP_reg12, "Register 12.") \
+  ONE_KNOWN_DW_OP_DESC (reg13, DW_OP_reg13, "Register 13.") \
+  ONE_KNOWN_DW_OP_DESC (reg14, DW_OP_reg14, "Register 14.") \
+  ONE_KNOWN_DW_OP_DESC (reg15, DW_OP_reg15, "Register 15.") \
+  ONE_KNOWN_DW_OP_DESC (reg16, DW_OP_reg16, "Register 16.") \
+  ONE_KNOWN_DW_OP_DESC (reg17, DW_OP_reg17, "Register 17.") \
+  ONE_KNOWN_DW_OP_DESC (reg18, DW_OP_reg18, "Register 18.") \
+  ONE_KNOWN_DW_OP_DESC (reg19, DW_OP_reg19, "Register 19.") \
+  ONE_KNOWN_DW_OP_DESC (reg2, DW_OP_reg2, "Register 2.") \
+  ONE_KNOWN_DW_OP_DESC (reg20, DW_OP_reg20, "Register 20.") \
+  ONE_KNOWN_DW_OP_DESC (reg21, DW_OP_reg21, "Register 21.") \
+  ONE_KNOWN_DW_OP_DESC (reg22, DW_OP_reg22, "Register 22.") \
+  ONE_KNOWN_DW_OP_DESC (reg23, DW_OP_reg23, "Register 24.") \
+  ONE_KNOWN_DW_OP_DESC (reg24, DW_OP_reg24, "Register 24.") \
+  ONE_KNOWN_DW_OP_DESC (reg25, DW_OP_reg25, "Register 25.") \
+  ONE_KNOWN_DW_OP_DESC (reg26, DW_OP_reg26, "Register 26.") \
+  ONE_KNOWN_DW_OP_DESC (reg27, DW_OP_reg27, "Register 27.") \
+  ONE_KNOWN_DW_OP_DESC (reg28, DW_OP_reg28, "Register 28.") \
+  ONE_KNOWN_DW_OP_DESC (reg29, DW_OP_reg29, "Register 29.") \
+  ONE_KNOWN_DW_OP_DESC (reg3, DW_OP_reg3, "Register 3.") \
+  ONE_KNOWN_DW_OP_DESC (reg30, DW_OP_reg30, "Register 30.") \
+  ONE_KNOWN_DW_OP_DESC (reg31, DW_OP_reg31, "Register 31.") \
+  ONE_KNOWN_DW_OP_DESC (reg4, DW_OP_reg4, "Register 4.") \
+  ONE_KNOWN_DW_OP_DESC (reg5, DW_OP_reg5, "Register 5.") \
+  ONE_KNOWN_DW_OP_DESC (reg6, DW_OP_reg6, "Register 6.") \
+  ONE_KNOWN_DW_OP_DESC (reg7, DW_OP_reg7, "Register 7.") \
+  ONE_KNOWN_DW_OP_DESC (reg8, DW_OP_reg8, "Register 8.") \
+  ONE_KNOWN_DW_OP_DESC (reg9, DW_OP_reg9, "Register 9.") \
+  ONE_KNOWN_DW_OP_DESC (regx, DW_OP_regx, "Unsigned LEB128 register.") \
+  ONE_KNOWN_DW_OP (rot, DW_OP_rot) \
+  ONE_KNOWN_DW_OP (shl, DW_OP_shl) \
+  ONE_KNOWN_DW_OP (shr, DW_OP_shr) \
+  ONE_KNOWN_DW_OP (shra, DW_OP_shra) \
+  ONE_KNOWN_DW_OP_DESC (skip, DW_OP_skip, "Signed 2-byte constant.") \
+  ONE_KNOWN_DW_OP_DESC (stack_value, DW_OP_stack_value, "No operands, special like DW_OP_piece.") \
+  ONE_KNOWN_DW_OP (swap, DW_OP_swap) \
+  ONE_KNOWN_DW_OP (xderef, DW_OP_xderef) \
+  ONE_KNOWN_DW_OP_DESC (xderef_size, DW_OP_xderef_size, "1-byte size of data retrieved.") \
+  ONE_KNOWN_DW_OP (xor, DW_OP_xor) \
+  /* End of DW_OP_*.  */
+
+#define ALL_KNOWN_DW_ORD \
+  ONE_KNOWN_DW_ORD (col_major, DW_ORD_col_major) \
+  ONE_KNOWN_DW_ORD (row_major, DW_ORD_row_major) \
+  /* End of DW_ORD_*.  */
+
+#define ALL_KNOWN_DW_TAG \
+  ONE_KNOWN_DW_TAG (GNU_BINCL, DW_TAG_GNU_BINCL) \
+  ONE_KNOWN_DW_TAG (GNU_EINCL, DW_TAG_GNU_EINCL) \
+  ONE_KNOWN_DW_TAG (GNU_call_site, DW_TAG_GNU_call_site) \
+  ONE_KNOWN_DW_TAG (GNU_call_site_parameter, DW_TAG_GNU_call_site_parameter) \
+  ONE_KNOWN_DW_TAG (GNU_formal_parameter_pack, DW_TAG_GNU_formal_parameter_pack) \
+  ONE_KNOWN_DW_TAG (GNU_template_parameter_pack, DW_TAG_GNU_template_parameter_pack) \
+  ONE_KNOWN_DW_TAG (GNU_template_template_param, DW_TAG_GNU_template_template_param) \
+  ONE_KNOWN_DW_TAG (MIPS_loop, DW_TAG_MIPS_loop) \
+  ONE_KNOWN_DW_TAG (access_declaration, DW_TAG_access_declaration) \
+  ONE_KNOWN_DW_TAG (array_type, DW_TAG_array_type) \
+  ONE_KNOWN_DW_TAG (base_type, DW_TAG_base_type) \
+  ONE_KNOWN_DW_TAG (catch_block, DW_TAG_catch_block) \
+  ONE_KNOWN_DW_TAG (class_template, DW_TAG_class_template) \
+  ONE_KNOWN_DW_TAG (class_type, DW_TAG_class_type) \
+  ONE_KNOWN_DW_TAG (common_block, DW_TAG_common_block) \
+  ONE_KNOWN_DW_TAG (common_inclusion, DW_TAG_common_inclusion) \
+  ONE_KNOWN_DW_TAG (compile_unit, DW_TAG_compile_unit) \
+  ONE_KNOWN_DW_TAG (condition, DW_TAG_condition) \
+  ONE_KNOWN_DW_TAG (const_type, DW_TAG_const_type) \
+  ONE_KNOWN_DW_TAG (constant, DW_TAG_constant) \
+  ONE_KNOWN_DW_TAG (dwarf_procedure, DW_TAG_dwarf_procedure) \
+  ONE_KNOWN_DW_TAG (entry_point, DW_TAG_entry_point) \
+  ONE_KNOWN_DW_TAG (enumeration_type, DW_TAG_enumeration_type) \
+  ONE_KNOWN_DW_TAG (enumerator, DW_TAG_enumerator) \
+  ONE_KNOWN_DW_TAG (file_type, DW_TAG_file_type) \
+  ONE_KNOWN_DW_TAG (formal_parameter, DW_TAG_formal_parameter) \
+  ONE_KNOWN_DW_TAG (format_label, DW_TAG_format_label) \
+  ONE_KNOWN_DW_TAG (friend, DW_TAG_friend) \
+  ONE_KNOWN_DW_TAG (function_template, DW_TAG_function_template) \
+  ONE_KNOWN_DW_TAG (imported_declaration, DW_TAG_imported_declaration) \
+  ONE_KNOWN_DW_TAG (imported_module, DW_TAG_imported_module) \
+  ONE_KNOWN_DW_TAG (imported_unit, DW_TAG_imported_unit) \
+  ONE_KNOWN_DW_TAG (inheritance, DW_TAG_inheritance) \
+  ONE_KNOWN_DW_TAG (inlined_subroutine, DW_TAG_inlined_subroutine) \
+  ONE_KNOWN_DW_TAG (interface_type, DW_TAG_interface_type) \
+  ONE_KNOWN_DW_TAG (label, DW_TAG_label) \
+  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 (namelist, DW_TAG_namelist) \
+  ONE_KNOWN_DW_TAG (namelist_item, DW_TAG_namelist_item) \
+  ONE_KNOWN_DW_TAG (namespace, DW_TAG_namespace) \
+  ONE_KNOWN_DW_TAG (packed_type, DW_TAG_packed_type) \
+  ONE_KNOWN_DW_TAG (partial_unit, DW_TAG_partial_unit) \
+  ONE_KNOWN_DW_TAG (pointer_type, DW_TAG_pointer_type) \
+  ONE_KNOWN_DW_TAG (ptr_to_member_type, DW_TAG_ptr_to_member_type) \
+  ONE_KNOWN_DW_TAG (reference_type, DW_TAG_reference_type) \
+  ONE_KNOWN_DW_TAG (restrict_type, DW_TAG_restrict_type) \
+  ONE_KNOWN_DW_TAG (rvalue_reference_type, DW_TAG_rvalue_reference_type) \
+  ONE_KNOWN_DW_TAG (set_type, DW_TAG_set_type) \
+  ONE_KNOWN_DW_TAG (shared_type, DW_TAG_shared_type) \
+  ONE_KNOWN_DW_TAG (string_type, DW_TAG_string_type) \
+  ONE_KNOWN_DW_TAG (structure_type, DW_TAG_structure_type) \
+  ONE_KNOWN_DW_TAG (subprogram, DW_TAG_subprogram) \
+  ONE_KNOWN_DW_TAG (subrange_type, DW_TAG_subrange_type) \
+  ONE_KNOWN_DW_TAG (subroutine_type, DW_TAG_subroutine_type) \
+  ONE_KNOWN_DW_TAG (template_alias, DW_TAG_template_alias) \
+  ONE_KNOWN_DW_TAG (template_type_parameter, DW_TAG_template_type_parameter) \
+  ONE_KNOWN_DW_TAG (template_value_parameter, DW_TAG_template_value_parameter) \
+  ONE_KNOWN_DW_TAG (thrown_type, DW_TAG_thrown_type) \
+  ONE_KNOWN_DW_TAG (try_block, DW_TAG_try_block) \
+  ONE_KNOWN_DW_TAG (type_unit, DW_TAG_type_unit) \
+  ONE_KNOWN_DW_TAG (typedef, DW_TAG_typedef) \
+  ONE_KNOWN_DW_TAG (union_type, DW_TAG_union_type) \
+  ONE_KNOWN_DW_TAG (unspecified_parameters, DW_TAG_unspecified_parameters) \
+  ONE_KNOWN_DW_TAG (unspecified_type, DW_TAG_unspecified_type) \
+  ONE_KNOWN_DW_TAG (variable, DW_TAG_variable) \
+  ONE_KNOWN_DW_TAG (variant, DW_TAG_variant) \
+  ONE_KNOWN_DW_TAG (variant_part, DW_TAG_variant_part) \
+  ONE_KNOWN_DW_TAG (volatile_type, DW_TAG_volatile_type) \
+  ONE_KNOWN_DW_TAG (with_stmt, DW_TAG_with_stmt) \
+  /* End of DW_TAG_*.  */
+
+#define ALL_KNOWN_DW_VIRTUALITY \
+  ONE_KNOWN_DW_VIRTUALITY (none, DW_VIRTUALITY_none) \
+  ONE_KNOWN_DW_VIRTUALITY (pure_virtual, DW_VIRTUALITY_pure_virtual) \
+  ONE_KNOWN_DW_VIRTUALITY (virtual, DW_VIRTUALITY_virtual) \
+  /* End of DW_VIRTUALITY_*.  */
+
+#define ALL_KNOWN_DW_VIS \
+  ONE_KNOWN_DW_VIS (exported, DW_VIS_exported) \
+  ONE_KNOWN_DW_VIS (local, DW_VIS_local) \
+  ONE_KNOWN_DW_VIS (qualified, DW_VIS_qualified) \
+  /* End of DW_VIS_*.  */
diff --git a/src/libdw/libdw.h b/src/libdw/libdw.h
index e001b7a..b2b2282 100644
--- a/src/libdw/libdw.h
+++ b/src/libdw/libdw.h
@@ -1,51 +1,30 @@
 /* Interfaces for libdw.
-   Copyright (C) 2002-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002-2010, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBDW_H
 #define _LIBDW_H	1
@@ -53,6 +32,7 @@
 #include <gelf.h>
 #include <stdbool.h>
 #include <stddef.h>
+#include <stdint.h>
 
 
 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
@@ -133,6 +113,7 @@
 
 /* CU representation.  */
 struct Dwarf_CU;
+typedef struct Dwarf_CU Dwarf_CU;
 
 /* Macro information.  */
 typedef struct Dwarf_Macro_s Dwarf_Macro;
@@ -281,6 +262,24 @@
 /* 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);
 
@@ -366,6 +365,23 @@
 			       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);
@@ -383,6 +399,24 @@
 extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result)
      __nonnull_attribute__ (2);
 
+/* For type aliases and qualifier type DIEs follow the DW_AT_type
+   attribute (recursively) and return the underlying type Dwarf_Die.
+   Returns 0 when RESULT contains a Dwarf_Die (possibly equal to the
+   given DIE) that isn't a type alias or qualifier type.  Returns 1
+   when RESULT contains a type alias or qualifier Dwarf_Die that
+   couldn't be peeled further (it doesn't have a DW_TAG_type
+   attribute).  Returns -1 when an error occured.
+
+   The current DWARF specification defines one type alias tag
+   (DW_TAG_typedef) and three qualifier type tags (DW_TAG_const_type,
+   DW_TAG_volatile_type, DW_TAG_restrict_type).  A future version of
+   this function might peel other alias or qualifier type tags if a
+   future DWARF version or GNU extension defines other type aliases or
+   qualifier type tags that don't modify or change the structural
+   layout of the underlying type.  */
+extern int dwarf_peel_type (Dwarf_Die *die, Dwarf_Die *result)
+    __nonnull_attribute__ (2);
+
 /* Check whether the DIE has children.  */
 extern int dwarf_haschildren (Dwarf_Die *die) __nonnull_attribute__ (1);
 
@@ -651,6 +685,22 @@
 				   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.  */
@@ -669,6 +719,29 @@
 					       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.
@@ -729,7 +802,16 @@
 
 
 
-/* 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);
@@ -763,26 +845,95 @@
 extern int dwarf_entry_breakpoints (Dwarf_Die *die, Dwarf_Addr **bkpts);
 
 
-/* Call callback function for each of the macro information entry for
-   the CU.  */
+/* Iterate through the macro unit referenced by CUDIE and call
+   CALLBACK for each macro information entry.  To start the iteration,
+   one would pass DWARF_GETMACROS_START for TOKEN.
+
+   The iteration continues while CALLBACK returns DWARF_CB_OK.  If the
+   callback returns DWARF_CB_ABORT, the iteration stops and a
+   continuation token is returned, which can be used to restart the
+   iteration at the point where it ended.  Returns -1 for errors or 0
+   if there are no more macro entries.
+
+   Note that the Dwarf_Macro pointer passed to the callback is only
+   valid for the duration of the callback invocation.
+
+   For backward compatibility, a token of 0 is accepted for starting
+   the iteration as well, but in that case this interface will refuse
+   to serve opcode 0xff from .debug_macro sections.  Such opcode would
+   be considered invalid and would cause dwarf_getmacros to return
+   with error.  */
+#define DWARF_GETMACROS_START PTRDIFF_MIN
 extern ptrdiff_t dwarf_getmacros (Dwarf_Die *cudie,
 				  int (*callback) (Dwarf_Macro *, void *),
-				  void *arg, ptrdiff_t offset)
+				  void *arg, ptrdiff_t token)
      __nonnull_attribute__ (2);
 
-/* Return macro opcode.  */
+/* This is similar in operation to dwarf_getmacros, but selects the
+   unit to iterate through by offset instead of by CU, and always
+   iterates .debug_macro.  This can be used for handling
+   DW_MACRO_GNU_transparent_include's or similar opcodes.
+
+   TOKEN value of DWARF_GETMACROS_START can be used to start the
+   iteration.
+
+   It is not appropriate to obtain macro unit offset by hand from a CU
+   DIE and then request iteration through this interface.  The reason
+   for this is that if a dwarf_macro_getsrcfiles is later called,
+   there would be no way to figure out what DW_AT_comp_dir was present
+   on the CU DIE, and file names referenced in either the macro unit
+   itself, or the .debug_line unit that it references, might be wrong.
+   Use dwarf_getmacros.  */
+extern ptrdiff_t dwarf_getmacros_off (Dwarf *dbg, Dwarf_Off macoff,
+				      int (*callback) (Dwarf_Macro *, void *),
+				      void *arg, ptrdiff_t token)
+  __nonnull_attribute__ (3);
+
+/* Get the source files used by the macro entry.  You shouldn't assume
+   that Dwarf_Files references will remain valid after MACRO becomes
+   invalid.  (Which is to say it's only valid within the
+   dwarf_getmacros* callback.)  Returns 0 for success or a negative
+   value in case of an error.  */
+extern int dwarf_macro_getsrcfiles (Dwarf *dbg, Dwarf_Macro *macro,
+				    Dwarf_Files **files, size_t *nfiles)
+  __nonnull_attribute__ (2, 3, 4);
+
+/* Return macro opcode.  That's a constant that can be either from
+   DW_MACINFO_* domain or DW_MACRO_GNU_* domain.  The two domains have
+   compatible values, so it's OK to use either of them for
+   comparisons.  The only differences is 0xff, which could be either
+   DW_MACINFO_vendor_ext or a vendor-defined DW_MACRO_* constant.  One
+   would need to look if the CU DIE which the iteration was requested
+   for has attribute DW_AT_macro_info, or either of DW_AT_GNU_macros
+   or DW_AT_macros to differentiate the two interpretations.  */
 extern int dwarf_macro_opcode (Dwarf_Macro *macro, unsigned int *opcodep)
      __nonnull_attribute__ (2);
 
-/* Return first macro parameter.  */
+/* Get number of parameters of MACRO and store it to *PARAMCNTP.  */
+extern int dwarf_macro_getparamcnt (Dwarf_Macro *macro, size_t *paramcntp);
+
+/* Get IDX-th parameter of MACRO (numbered from zero), and stores it
+   to *ATTRIBUTE.  Returns 0 on success or -1 for errors.
+
+   After a successful call, you can query ATTRIBUTE by dwarf_whatform
+   to determine which of the dwarf_formX calls to make to get actual
+   value out of ATTRIBUTE.  Note that calling dwarf_whatattr is not
+   meaningful for pseudo-attributes formed this way.  */
+extern int dwarf_macro_param (Dwarf_Macro *macro, size_t idx,
+			      Dwarf_Attribute *attribute);
+
+/* Return macro parameter with index 0.  This will return -1 if the
+   parameter is not an integral value.  Use dwarf_macro_param for more
+   general access.  */
 extern int dwarf_macro_param1 (Dwarf_Macro *macro, Dwarf_Word *paramp)
      __nonnull_attribute__ (2);
 
-/* Return second macro parameter.  */
+/* Return macro parameter with index 1.  This will return -1 if the
+   parameter is not an integral or string value.  Use
+   dwarf_macro_param for more general access.  */
 extern int dwarf_macro_param2 (Dwarf_Macro *macro, Dwarf_Word *paramp,
 			       const char **strp);
 
-
 /* Compute what's known about a call frame when the PC is at ADDRESS.
    Returns 0 for success or -1 for errors.
    On success, *FRAME is a malloc'd pointer.  */
diff --git a/src/libdw/libdw.map b/src/libdw/libdw.map
index 1f71d03..1d4cbb0 100644
--- a/src/libdw/libdw.map
+++ b/src/libdw/libdw.map
@@ -254,3 +254,71 @@
 
     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;
+
+ELFUTILS_0.161 {
+  global:
+    dwarf_peel_type;
+
+    # Replaced ELFUTILS_0.144 version.  Both versions point to the
+    # same implementation, but users of the new symbol version can
+    # presume that it uses dwarf_peel_type.
+    dwarf_aggregate_size;
+
+    dwarf_getmacros_off;
+    dwarf_macro_getsrcfiles;
+    dwarf_macro_getparamcnt;
+    dwarf_macro_param;
+} ELFUTILS_0.160;
diff --git a/src/libdw/libdwP.h b/src/libdw/libdwP.h
index b84bf02..5ab7219 100644
--- a/src/libdw/libdwP.h
+++ b/src/libdw/libdwP.h
@@ -1,52 +1,31 @@
 /* Internal definitions for libdwarf.
-   Copyright (C) 2002-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002-2011, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBDWP_H
 #define _LIBDWP_H 1
@@ -55,6 +34,7 @@
 #include <stdbool.h>
 
 #include <libdw.h>
+#include <dwarf.h>
 
 
 /* gettext helper macros.  */
@@ -79,6 +59,14 @@
   size_t length;
 };
 
+/* Already decoded .debug_line units.  */
+struct files_lines_s
+{
+  Dwarf_Off debug_line_offset;
+  Dwarf_Files *files;
+  Dwarf_Lines *lines;
+};
+
 /* Valid indeces for the section data.  */
 enum
   {
@@ -92,7 +80,9 @@
     IDX_debug_pubnames,
     IDX_debug_str,
     IDX_debug_macinfo,
+    IDX_debug_macro,
     IDX_debug_ranges,
+    IDX_gnu_debugaltlink,
     IDX_last
   };
 
@@ -136,6 +126,8 @@
   DWARF_E_INVALID_OFFSET,
   DWARF_E_NO_DEBUG_RANGES,
   DWARF_E_INVALID_CFI,
+  DWARF_E_NO_ALT_DEBUGLINK,
+  DWARF_E_INVALID_OPCODE,
 };
 
 
@@ -147,6 +139,9 @@
   /* The underlying ELF file.  */
   Elf *elf;
 
+  /* dwz alternate DWARF file.  */
+  Dwarf *alt_dwarf;
+
   /* The section data.  */
   Elf_Data *sectiondata[IDX_last];
 
@@ -181,12 +176,22 @@
   Dwarf_Off next_tu_offset;
   Dwarf_Sig8_Hash sig8_hash;
 
+  /* Search tree for .debug_macro operator tables.  */
+  void *macro_ops;
+
+  /* Search tree for decoded .debug_line units.  */
+  void *files_lines;
+
   /* Address ranges.  */
   Dwarf_Aranges *aranges;
 
   /* Cached info from the CFI section.  */
   struct Dwarf_CFI_s *cfi;
 
+  /* Fake loc CU.  Used when synthesizing attributes for Dwarf_Ops that
+     came from a location list entry in dwarf_getlocation_attr.  */
+  struct Dwarf_CU *fake_loc_cu;
+
   /* Internal memory handling.  This is basically a simplified
      reimplementation of obstacks.  Unfortunately the standard obstack
      implementation is not usable in libraries.  */
@@ -223,7 +228,6 @@
 /* Files in line information records.  */
 struct Dwarf_Files_s
   {
-    struct Dwarf_CU *cu;
     unsigned int ndirs;
     unsigned int nfiles;
     struct Dwarf_Fileinfo_s
@@ -310,6 +314,10 @@
 
   /* Known location lists.  */
   void *locs;
+
+  /* Memory boundaries of this CU.  */
+  void *startp;
+  void *endp;
 };
 
 /* Compute the offset of a CU's first DIE from its offset.  This
@@ -333,25 +341,65 @@
   ((Dwarf_Die)								      \
    {									      \
      .cu = (fromcu),							      \
-     .addr = ((char *) cu_data (fromcu)->d_buf				      \
+     .addr = ((char *) fromcu->dbg->sectiondata[cu_sec_idx (fromcu)]->d_buf   \
 	      + DIE_OFFSET_FROM_CU_OFFSET ((fromcu)->start,		      \
 					   (fromcu)->offset_size,	      \
 					   (fromcu)->type_offset != 0))	      \
    })									      \
 
 
-/* Macro information.  */
+/* Prototype of a single .debug_macro operator.  */
+typedef struct
+{
+  Dwarf_Word nforms;
+  unsigned char const *forms;
+} Dwarf_Macro_Op_Proto;
+
+/* Prototype table.  */
+typedef struct
+{
+  /* Offset of .debug_macro section.  */
+  Dwarf_Off offset;
+
+  /* Offset of associated .debug_line section.  */
+  Dwarf_Off line_offset;
+
+  /* The source file information.  */
+  Dwarf_Files *files;
+
+  /* If this macro unit was opened through dwarf_getmacros or
+     dwarf_getmacros_die, this caches value of DW_AT_comp_dir, if
+     present.  */
+  const char *comp_dir;
+
+  /* Header length.  */
+  Dwarf_Half header_len;
+
+  uint16_t version;
+  bool is_64bit;
+  uint8_t sec_index;	/* IDX_debug_macro or IDX_debug_macinfo.  */
+
+  /* Shows where in TABLE each opcode is defined.  Since opcode 0 is
+     never used, it stores index of opcode X in X-1'th element.  The
+     value of 0xff means not stored at all.  */
+  unsigned char opcodes[255];
+
+  /* Individual opcode prototypes.  */
+  Dwarf_Macro_Op_Proto table[];
+} Dwarf_Macro_Op_Table;
+
 struct Dwarf_Macro_s
 {
-  unsigned int opcode;
-  Dwarf_Word param1;
-  union
-  {
-    Dwarf_Word u;
-    const char *s;
-  } param2;
+  Dwarf_Macro_Op_Table *table;
+  Dwarf_Attribute *attributes;
+  uint8_t opcode;
 };
 
+static inline Dwarf_Word
+libdw_macro_nforms (Dwarf_Macro *macro)
+{
+  return macro->table->table[macro->table->opcodes[macro->opcode - 1]].nforms;
+}
 
 /* We have to include the file at this point because the inline
    functions access internals of the Dwarf structure.  */
@@ -404,7 +452,7 @@
 extern struct Dwarf_CU *__libdw_findcu (Dwarf *dbg, Dwarf_Off offset, bool tu)
      __nonnull_attribute__ (1) internal_function;
 
-/* Return tag of given DIE.  */
+/* Get abbreviation with given code.  */
 extern Dwarf_Abbrev *__libdw_findabbrev (struct Dwarf_CU *cu,
 					 unsigned int code)
      __nonnull_attribute__ (1) internal_function;
@@ -415,11 +463,72 @@
 					Dwarf_Abbrev *result)
      __nonnull_attribute__ (1) internal_function;
 
+/* Get abbreviation of given DIE, and optionally set *READP to the DIE memory
+   just past the abbreviation code.  */
+static inline Dwarf_Abbrev *
+__nonnull_attribute__ (1)
+__libdw_dieabbrev (Dwarf_Die *die, const unsigned char **readp)
+{
+  /* Do we need to get the abbreviation, or need to read after the code?  */
+  if (die->abbrev == NULL || readp != NULL)
+    {
+      /* Get the abbreviation code.  */
+      unsigned int code;
+      const unsigned char *addr = die->addr;
+      get_uleb128 (code, addr, die->cu->endp);
+      if (readp != NULL)
+	*readp = addr;
+
+      /* Find the abbreviation.  */
+      if (die->abbrev == NULL)
+	die->abbrev = __libdw_findabbrev (die->cu, code);
+    }
+  return die->abbrev;
+}
+
 /* 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)
-     __nonnull_attribute__ (1, 2, 4) internal_function;
+extern size_t __libdw_form_val_compute_len (struct Dwarf_CU *cu,
+					    unsigned int form,
+					    const unsigned char *valp)
+     __nonnull_attribute__ (1, 3) internal_function;
+
+/* Find the length of a form attribute.  */
+static inline size_t
+__nonnull_attribute__ (1, 3)
+__libdw_form_val_len (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)
+	{
+	  const unsigned char *endp = cu->endp;
+	  len &= 0x7f; /* Mask to allow 0x80 -> 0.  */
+	  if (unlikely (len > (size_t) (endp - valp)))
+	    {
+	      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+	      return -1;
+	    }
+	  return len;
+	}
+    }
+
+  /* Other forms require some computation.  */
+  return __libdw_form_val_compute_len (cu, form, valp);
+}
 
 /* Helper function for DW_FORM_ref* handling.  */
 extern int __libdw_formref (Dwarf_Attribute *attr, Dwarf_Off *return_offset)
@@ -600,13 +709,13 @@
 }
 
 static inline int
-__libdw_read_offset (Dwarf *dbg,
+__libdw_read_offset (Dwarf *dbg, Dwarf *dbg_ret,
 		     int sec_index, const unsigned char *addr,
 		     int width, Dwarf_Off *ret, int sec_ret,
 		     size_t size)
 {
   READ_AND_RELOCATE (__libdw_relocate_offset, (*ret));
-  return __libdw_offset_in_section (dbg, sec_ret, *ret, size);
+  return __libdw_offset_in_section (dbg_ret, sec_ret, *ret, size);
 }
 
 static inline size_t
@@ -615,12 +724,6 @@
   return cu->type_offset == 0 ? IDX_debug_info : IDX_debug_types;
 }
 
-static inline Elf_Data *
-cu_data (struct Dwarf_CU *cu)
-{
-  return cu->dbg->sectiondata[cu_sec_idx (cu)];
-}
-
 /* Read up begin/end pair and increment read pointer.
     - If it's normal range record, set up *BEGINP and *ENDP and return 0.
     - If it's base address selection record, set up *BASEP and return 1.
@@ -637,12 +740,30 @@
 				 Dwarf_Off *offsetp)
   internal_function;
 
+/* Fills in the given attribute to point at an empty location expression.  */
+void __libdw_empty_loc_attr (Dwarf_Attribute *attr)
+  internal_function;
+
+/* Load .debug_line unit at DEBUG_LINE_OFFSET.  COMP_DIR is a value of
+   DW_AT_comp_dir or NULL if that attribute is not available.  Caches
+   the loaded unit and optionally set *LINESP and/or *FILESP (if not
+   NULL) with loaded information.  Returns 0 for success or a negative
+   value for failure.  */
+int __libdw_getsrclines (Dwarf *dbg, Dwarf_Off debug_line_offset,
+			 const char *comp_dir, unsigned address_size,
+			 Dwarf_Lines **linesp, Dwarf_Files **filesp)
+  internal_function
+  __nonnull_attribute__ (1);
+
+/* Load and return value of DW_AT_comp_dir from CUDIE.  */
+const char *__libdw_getcompdir (Dwarf_Die *cudie);
 
 
 /* Aliases to avoid PLTs.  */
 INTDECL (dwarf_aggregate_size)
 INTDECL (dwarf_attr)
 INTDECL (dwarf_attr_integrate)
+INTDECL (dwarf_begin)
 INTDECL (dwarf_begin_elf)
 INTDECL (dwarf_child)
 INTDECL (dwarf_dieoffset)
@@ -656,9 +777,11 @@
 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)
@@ -669,7 +792,9 @@
 INTDECL (dwarf_nextcu)
 INTDECL (dwarf_next_unit)
 INTDECL (dwarf_offdie)
+INTDECL (dwarf_peel_type)
 INTDECL (dwarf_ranges)
+INTDECL (dwarf_setalt)
 INTDECL (dwarf_siblingof)
 INTDECL (dwarf_srclang)
 INTDECL (dwarf_tag)
diff --git a/src/libdw/libdw_alloc.c b/src/libdw/libdw_alloc.c
index 917cb30..a3b7958 100644
--- a/src/libdw/libdw_alloc.c
+++ b/src/libdw/libdw_alloc.c
@@ -1,52 +1,31 @@
 /* Memory handling for libdw.
    Copyright (C) 2003, 2004, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdw/libdw_findcu.c b/src/libdw/libdw_findcu.c
index 8e5f9e9..d8da2e3 100644
--- a/src/libdw/libdw_findcu.c
+++ b/src/libdw/libdw_findcu.c
@@ -1,52 +1,31 @@
 /* Find CU for given offset.
-   Copyright (C) 2003-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -56,59 +35,6 @@
 #include <search.h>
 #include "libdwP.h"
 
-
-struct Dwarf_CU *
-internal_function
-__libdw_intern_next_unit (dbg, debug_types)
-     Dwarf *dbg;
-     bool debug_types;
-{
-  Dwarf_Off *const offsetp
-    = debug_types ? &dbg->next_tu_offset : &dbg->next_cu_offset;
-
-  Dwarf_Off oldoff = *offsetp;
-  uint16_t version;
-  uint8_t address_size;
-  uint8_t offset_size;
-  Dwarf_Off abbrev_offset;
-  uint64_t type_sig8 = 0;
-  Dwarf_Off type_offset = 0;
-
-  if (INTUSE(dwarf_next_unit) (dbg, oldoff, offsetp, NULL,
-			       &version, &abbrev_offset,
-			       &address_size, &offset_size,
-			       debug_types ? &type_sig8 : NULL,
-			       debug_types ? &type_offset : NULL) != 0)
-    /* No more entries.  */
-    return NULL;
-
-  /* We only know how to handle the DWARF version 2 through 4 formats.  */
-  if (unlikely (version < 2) || unlikely (version > 4))
-    {
-      __libdw_seterrno (DWARF_E_INVALID_DWARF);
-      return NULL;
-    }
-
-  /* Create an entry for this CU.  */
-  struct Dwarf_CU *newp = libdw_typed_alloc (dbg, struct Dwarf_CU);
-
-  newp->dbg = dbg;
-  newp->start = oldoff;
-  newp->end = *offsetp;
-  newp->address_size = address_size;
-  newp->offset_size = offset_size;
-  newp->version = version;
-  newp->type_sig8 = type_sig8;
-  newp->type_offset = type_offset;
-  Dwarf_Abbrev_Hash_init (&newp->abbrev_hash, 41);
-  newp->orig_abbrev_offset = newp->last_abbrev_offset = abbrev_offset;
-  newp->lines = NULL;
-  newp->locs = NULL;
-
-  return newp;
-}
-
-
 static int
 findcu_cb (const void *arg1, const void *arg2)
 {
@@ -136,6 +62,79 @@
 }
 
 struct Dwarf_CU *
+internal_function
+__libdw_intern_next_unit (dbg, debug_types)
+     Dwarf *dbg;
+     bool debug_types;
+{
+  Dwarf_Off *const offsetp
+    = debug_types ? &dbg->next_tu_offset : &dbg->next_cu_offset;
+  void **tree = debug_types ? &dbg->tu_tree : &dbg->cu_tree;
+
+  Dwarf_Off oldoff = *offsetp;
+  uint16_t version;
+  uint8_t address_size;
+  uint8_t offset_size;
+  Dwarf_Off abbrev_offset;
+  uint64_t type_sig8 = 0;
+  Dwarf_Off type_offset = 0;
+
+  if (INTUSE(dwarf_next_unit) (dbg, oldoff, offsetp, NULL,
+			       &version, &abbrev_offset,
+			       &address_size, &offset_size,
+			       debug_types ? &type_sig8 : NULL,
+			       debug_types ? &type_offset : NULL) != 0)
+    /* No more entries.  */
+    return NULL;
+
+  /* We only know how to handle the DWARF version 2 through 4 formats.  */
+  if (unlikely (version < 2) || unlikely (version > 4))
+    {
+      __libdw_seterrno (DWARF_E_INVALID_DWARF);
+      return NULL;
+    }
+
+  /* Invalid or truncated debug section data?  */
+  Elf_Data *data = dbg->sectiondata[debug_types
+				    ? IDX_debug_types : IDX_debug_info];
+  if (unlikely (*offsetp > data->d_size))
+    *offsetp = data->d_size;
+
+  /* Create an entry for this CU.  */
+  struct Dwarf_CU *newp = libdw_typed_alloc (dbg, struct Dwarf_CU);
+
+  newp->dbg = dbg;
+  newp->start = oldoff;
+  newp->end = *offsetp;
+  newp->address_size = address_size;
+  newp->offset_size = offset_size;
+  newp->version = version;
+  newp->type_sig8 = type_sig8;
+  newp->type_offset = type_offset;
+  Dwarf_Abbrev_Hash_init (&newp->abbrev_hash, 41);
+  newp->orig_abbrev_offset = newp->last_abbrev_offset = abbrev_offset;
+  newp->lines = NULL;
+  newp->locs = NULL;
+
+  if (debug_types)
+    Dwarf_Sig8_Hash_insert (&dbg->sig8_hash, type_sig8, newp);
+
+  newp->startp = data->d_buf + newp->start;
+  newp->endp = data->d_buf + newp->end;
+
+  /* Add the new entry to the search tree.  */
+  if (tsearch (newp, tree, findcu_cb) == NULL)
+    {
+      /* Something went wrong.  Undo the operation.  */
+      *offsetp = oldoff;
+      __libdw_seterrno (DWARF_E_NOMEM);
+      return NULL;
+    }
+
+  return newp;
+}
+
+struct Dwarf_CU *
 __libdw_findcu (dbg, start, debug_types)
      Dwarf *dbg;
      Dwarf_Off start;
@@ -160,20 +159,10 @@
   /* No.  Then read more CUs.  */
   while (1)
     {
-      Dwarf_Off oldoff = *next_offset;
       struct Dwarf_CU *newp = __libdw_intern_next_unit (dbg, debug_types);
       if (newp == NULL)
 	return NULL;
 
-      /* Add the new entry to the search tree.  */
-      if (tsearch (newp, tree, findcu_cb) == NULL)
-	{
-	  /* Something went wrong.  Undo the operation.  */
-	  *next_offset = oldoff;
-	  __libdw_seterrno (DWARF_E_NOMEM);
-	  return NULL;
-	}
-
       /* Is this the one we are looking for?  */
       if (start < *next_offset)
 	// XXX Match exact offset.
diff --git a/src/libdw/libdw_form.c b/src/libdw/libdw_form.c
index 219dd79..72e2390 100644
--- a/src/libdw/libdw_form.c
+++ b/src/libdw/libdw_form.c
@@ -1,52 +1,31 @@
 /* Helper functions for form handling.
-   Copyright (C) 2003-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2003-2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -60,13 +39,16 @@
 
 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 (struct Dwarf_CU *cu, unsigned int form,
+			      const unsigned char *valp)
 {
-  const unsigned char *saved;
+  const unsigned char *startp = valp;
+  const unsigned char *endp = cu->endp;
   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:
@@ -79,79 +61,71 @@
 
     case DW_FORM_strp:
     case DW_FORM_sec_offset:
+    case DW_FORM_GNU_ref_alt:
+    case DW_FORM_GNU_strp_alt:
       result = cu->offset_size;
       break;
 
     case DW_FORM_block1:
+      if (unlikely ((size_t) (endp - startp) < 1))
+	goto invalid;
       result = *valp + 1;
       break;
 
     case DW_FORM_block2:
-      result = read_2ubyte_unaligned (dbg, valp) + 2;
+      if (unlikely ((size_t) (endp - startp) < 2))
+	goto invalid;
+      result = read_2ubyte_unaligned (cu->dbg, valp) + 2;
       break;
 
     case DW_FORM_block4:
-      result = read_4ubyte_unaligned (dbg, valp) + 4;
+      if (unlikely ((size_t) (endp - startp) < 4))
+	goto invalid;
+      result = read_4ubyte_unaligned (cu->dbg, valp) + 4;
       break;
 
     case DW_FORM_block:
     case DW_FORM_exprloc:
-      saved = valp;
-      get_uleb128 (u128, valp);
-      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;
+      get_uleb128 (u128, valp, endp);
+      result = u128 + (valp - startp);
       break;
 
     case DW_FORM_string:
-      result = strlen ((char *) valp) + 1;
-      break;
+      {
+	const unsigned char *endstrp = memchr (valp, '\0',
+					       (size_t) (endp - startp));
+	if (unlikely (endstrp == NULL))
+	  goto invalid;
+	result = (size_t) (endstrp - startp) + 1;
+	break;
+      }
 
     case DW_FORM_sdata:
     case DW_FORM_udata:
     case DW_FORM_ref_udata:
-      saved = valp;
-      get_uleb128 (u128, valp);
-      result = valp - saved;
+      get_uleb128 (u128, valp, endp);
+      result = valp - startp;
       break;
 
     case DW_FORM_indirect:
-      saved = valp;
-      get_uleb128 (u128, valp);
+      get_uleb128 (u128, valp, endp);
       // XXX Is this really correct?
-      result = __libdw_form_val_len (dbg, cu, u128, valp);
+      result = __libdw_form_val_len (cu, u128, valp);
       if (result != (size_t) -1)
-	result += valp - saved;
+	result += valp - startp;
+      else
+        return (size_t) -1;
       break;
 
     default:
+      goto invalid;
+    }
+
+  if (unlikely (result > (size_t) (endp - startp)))
+    {
+    invalid:
       __libdw_seterrno (DWARF_E_INVALID_DWARF);
-      result = (size_t) -1l;
-      break;
+      result = (size_t) -1;
     }
 
   return result;
diff --git a/src/libdw/libdw_visit_scopes.c b/src/libdw/libdw_visit_scopes.c
index 9c7c378..487375d 100644
--- a/src/libdw/libdw_visit_scopes.c
+++ b/src/libdw/libdw_visit_scopes.c
@@ -1,50 +1,30 @@
 /* Helper functions to descend DWARF scope trees.
    Copyright (C) 2005,2006,2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under an Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) and to distribute linked
-   combinations including the two.  Non-GPL Code permitted under this
-   exception must only link to the code of Red Hat elfutils through those
-   well defined interfaces identified in the file named EXCEPTION found in
-   the source code files (the "Approved Interfaces").  The files of Non-GPL
-   Code may instantiate templates or use macros or inline functions from
-   the Approved Interfaces without causing the resulting work to be covered
-   by the GNU General Public License.  Only Red Hat, Inc. may make changes
-   or additions to the list of Approved Interfaces.  Red Hat's grant of
-   this exception is conditioned upon your not adding any new exceptions.
-   If you wish to add a new Approved Interface or exception, please contact
-   Red Hat.  You must obey the GNU General Public License in all respects
-   for all of the Red Hat elfutils code and other code used in conjunction
-   with Red Hat elfutils except the Non-GPL Code covered by this exception.
-   If you modify this file, you may extend this exception to your version
-   of the file, but you are not obligated to do so.  If you do not wish to
-   provide this exception without modification, you must delete this
-   exception statement from your version and license this file solely under
-   the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -53,10 +33,9 @@
 #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))
     {
@@ -68,31 +47,21 @@
     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
@@ -104,10 +73,11 @@
      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)
     {
@@ -115,63 +85,63 @@
 				   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.  */
+	    /* Any "real" children left?  */
+	    if ((ret = INTUSE(dwarf_siblingof) (&orig_child_die,
+						&child.die)) != 0)
+	      return ret < 0 ? -1 : 0;
+	  };
 
-	      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;
+	child.prune = false;
 
-	  default:
-	    break;
+	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;
+	  }
 
-  return 0;
+	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 walk_children ();
 }
diff --git a/src/libdw/memory-access.c b/src/libdw/memory-access.c
deleted file mode 100644
index c9a0ca7..0000000
--- a/src/libdw/memory-access.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Out of line functions for memory-access.h macros.
-   Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
-
-   Red Hat elfutils 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; version 2 of the License.
-
-   Red Hat 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-#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)
-{
-  unsigned char __b;
-  int64_t _v = acc;
-  get_sleb128_rest_return (acc, i, addrp);
-}
diff --git a/src/libdw/memory-access.h b/src/libdw/memory-access.h
index b7799e9..a53f791 100644
--- a/src/libdw/memory-access.h
+++ b/src/libdw/memory-access.h
@@ -1,52 +1,31 @@
 /* Unaligned memory access functionality.
-   Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _MEMORY_ACCESS_H
 #define _MEMORY_ACCESS_H 1
@@ -58,90 +37,76 @@
 
 /* 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);			      \
+#define len_leb128(var) ((8 * sizeof (var) + 6) / 7)
+
+static inline size_t
+__libdw_max_len_leb128 (const unsigned char *addr, const unsigned char *end)
+{
+  const size_t type_len = len_leb128 (uint64_t);
+  const size_t pointer_len = likely (addr < end) ? end - addr : 0;
+  return likely (type_len <= pointer_len) ? type_len : pointer_len;
+}
+
+#define get_uleb128_step(var, addr, nth)				      \
+  do {									      \
+    unsigned char __b = *(addr)++;					      \
+    (var) |= (typeof (var)) (__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));			      \
+      return (var);							      \
   } while (0)
 
-#define get_uleb128_rest_return(var, i, addrp)				      \
-  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;							      \
-  } while (0)
+static inline uint64_t
+__libdw_get_uleb128 (const unsigned char **addrp, const unsigned char *end)
+{
+  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);
+
+  const size_t max = __libdw_max_len_leb128 (*addrp - 1, end);
+  for (size_t i = 1; i < max; ++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;
+}
+
+/* Note, addr needs to me smaller than end. */
+#define get_uleb128(var, addr, end) ((var) = __libdw_get_uleb128 (&(addr), end))
 
 /* The signed case is similar, but we sign-extend the result.  */
 
-#define get_sleb128_step(var, addr, nth, break)				      \
-    __b = *(addr)++;							      \
-    _v |= (uint64_t) (__b & 0x7f) << (nth * 7);				      \
+#define get_sleb128_step(var, addr, nth)				      \
+  do {									      \
+    unsigned char __b = *(addr)++;					      \
     if (likely ((__b & 0x80) == 0))					      \
       {									      \
-	var = (_v << (64 - (nth * 7) - 7)) >> (64 - (nth * 7) - 7);	      \
-        break;					 			      \
+	struct { signed int i:7; } __s = { .i = __b };			      \
+	(var) |= (typeof (var)) __s.i * ((typeof (var)) 1 << ((nth) * 7));    \
+	return (var);							      \
       }									      \
-    else do {} while (0)
-
-#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));				      \
+    (var) |= (typeof (var)) (__b & 0x7f) << ((nth) * 7);		      \
   } while (0)
 
-#define get_sleb128_rest_return(var, i, addrp)				      \
-  do {									      \
-    for (; i < 9; ++i)							      \
-      {									      \
-	get_sleb128_step (var, *addrp, i, 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;							      \
-  } 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, const unsigned char *end)
 {
-  unsigned char __b;
-  int64_t _v = acc;
-  get_sleb128_rest_return (acc, i, addrp);
+  int64_t acc = 0;
+
+  /* Unroll the first step to help the compiler optimize
+     for the common single-byte case.  */
+  get_sleb128_step (acc, *addrp, 0);
+
+  const size_t max = __libdw_max_len_leb128 (*addrp - 1, end);
+  for (size_t i = 1; i < max; ++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, end) ((var) = __libdw_get_sleb128 (&(addr), end))
 
 
 /* We use simple memory access functions in case the hardware allows it.
@@ -168,6 +133,8 @@
    ? (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)))				      \
@@ -244,6 +211,12 @@
 }
 
 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;
@@ -263,17 +236,6 @@
 #endif	/* allow unaligned */
 
 
-#define read_ubyte_unaligned(Nbytes, Dbg, Addr) \
-  ((Nbytes) == 2 ? read_2ubyte_unaligned (Dbg, Addr)			      \
-   : (Nbytes) == 4 ? read_4ubyte_unaligned (Dbg, Addr)			      \
-   : read_8ubyte_unaligned (Dbg, Addr))
-
-#define read_sbyte_unaligned(Nbytes, Dbg, Addr) \
-  ((Nbytes) == 2 ? read_2sbyte_unaligned (Dbg, Addr)			      \
-   : (Nbytes) == 4 ? read_4sbyte_unaligned (Dbg, Addr)			      \
-   : read_8sbyte_unaligned (Dbg, Addr))
-
-
 #define read_2ubyte_unaligned_inc(Dbg, Addr) \
   ({ uint16_t t_ = read_2ubyte_unaligned (Dbg, Addr);			      \
      Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 2);		      \
@@ -302,14 +264,9 @@
      t_; })
 
 
-#define read_ubyte_unaligned_inc(Nbytes, Dbg, Addr) \
-  ((Nbytes) == 2 ? read_2ubyte_unaligned_inc (Dbg, Addr)		      \
-   : (Nbytes) == 4 ? read_4ubyte_unaligned_inc (Dbg, Addr)		      \
-   : read_8ubyte_unaligned_inc (Dbg, Addr))
-
-#define read_sbyte_unaligned_inc(Nbytes, Dbg, Addr) \
-  ((Nbytes) == 2 ? read_2sbyte_unaligned_inc (Dbg, Addr)		      \
-   : (Nbytes) == 4 ? read_4sbyte_unaligned_inc (Dbg, Addr)		      \
-   : read_8sbyte_unaligned_inc (Dbg, Addr))
+#define read_addr_unaligned_inc(Nbytes, Dbg, Addr)			\
+  (assert ((Nbytes) == 4 || (Nbytes) == 8),				\
+    ((Nbytes) == 4 ? read_4ubyte_unaligned_inc (Dbg, Addr)		\
+     : read_8ubyte_unaligned_inc (Dbg, Addr)))
 
 #endif	/* memory-access.h */
diff --git a/src/libdwelf/Android.mk b/src/libdwelf/Android.mk
new file mode 100755
index 0000000..a91aa87
--- /dev/null
+++ b/src/libdwelf/Android.mk
@@ -0,0 +1,95 @@
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+LIBDWELF_SRC_FILES := \
+    dwelf_dwarf_gnu_debugaltlink.c \
+    dwelf_elf_gnu_build_id.c \
+    dwelf_elf_gnu_debuglink.c \
+
+
+ifeq ($(HOST_OS),linux)
+
+#
+# host libdwelf
+#
+
+include $(CLEAR_VARS)
+
+# Clang has no nested functions.
+LOCAL_CLANG := false
+
+LOCAL_SRC_FILES := $(LIBDWELF_SRC_FILES)
+
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH)/.. \
+	$(LOCAL_PATH)/../lib \
+	$(LOCAL_PATH)/../libdw \
+	$(LOCAL_PATH)/../libdwfl \
+	$(LOCAL_PATH)/../libebl \
+	$(LOCAL_PATH)/../libelf
+
+LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_BSD_SOURCE
+
+# to suppress the "pointer of type ‘void *’ used in arithmetic" warning
+LOCAL_CFLAGS += -Wno-pointer-arith
+
+LOCAL_MODULE:= libdwelf
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
+
+LOCAL_STATIC_LIBRARIES := libz
+
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+endif # linux
+
+#
+# target libdwelf
+#
+
+include $(CLEAR_VARS)
+
+# Clang has no nested functions.
+LOCAL_CLANG := false
+
+LOCAL_SRC_FILES := $(LIBDWELF_SRC_FILES)
+
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH)/.. \
+	$(LOCAL_PATH)/../lib \
+	$(LOCAL_PATH)/../libdw \
+	$(LOCAL_PATH)/../libdwfl \
+	$(LOCAL_PATH)/../libebl \
+	$(LOCAL_PATH)/../libelf
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../bionic-fixup
+
+LOCAL_CFLAGS += -include $(LOCAL_PATH)/../../bionic-fixup/AndroidFixup.h
+
+LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_BSD_SOURCE -Werror
+
+# to suppress the "pointer of type ‘void *’ used in arithmetic" warning
+LOCAL_CFLAGS += -Wno-pointer-arith
+
+LOCAL_MODULE_TAGS := eng
+
+LOCAL_MODULE:= libdwelf
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
+
+LOCAL_STATIC_LIBRARIES := libz
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/libdwelf/ChangeLog b/src/libdwelf/ChangeLog
new file mode 100644
index 0000000..342cb9c
--- /dev/null
+++ b/src/libdwelf/ChangeLog
@@ -0,0 +1,28 @@
+2014-11-14  Mark Wielaard  <mjw@redhat.com>
+
+	* dwelf_elf_gnu_debuglink.c (dwelf_elf_gnu_debuglink): Check d_buf
+	is not 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.
diff --git a/src/libdwelf/Makefile b/src/libdwelf/Makefile
new file mode 100644
index 0000000..3cb510a
--- /dev/null
+++ b/src/libdwelf/Makefile
@@ -0,0 +1,658 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# libdwelf/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+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_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 1
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/libdwelf
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/libdwelf
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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: # $(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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(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
+
+include ./$(DEPDIR)/dwelf_dwarf_gnu_debugaltlink.Po
+include ./$(DEPDIR)/dwelf_elf_gnu_build_id.Po
+include ./$(DEPDIR)/dwelf_elf_gnu_debuglink.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(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
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(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:
diff --git a/src/libdwelf/Makefile.am b/src/libdwelf/Makefile.am
new file mode 100644
index 0000000..cd4b7dd
--- /dev/null
+++ b/src/libdwelf/Makefile.am
@@ -0,0 +1,55 @@
+## 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)
diff --git a/src/libdwelf/Makefile.in b/src/libdwelf/Makefile.in
new file mode 100644
index 0000000..fc3e76a
--- /dev/null
+++ b/src/libdwelf/Makefile.in
@@ -0,0 +1,658 @@
+# Makefile.in generated by automake 1.14.1 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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 -o $@ $<
+
+.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 -o $@ `$(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:
diff --git a/src/libdwelf/dwelf_dwarf_gnu_debugaltlink.c b/src/libdwelf/dwelf_dwarf_gnu_debugaltlink.c
new file mode 100644
index 0000000..b8285d0
--- /dev/null
+++ b/src/libdwelf/dwelf_dwarf_gnu_debugaltlink.c
@@ -0,0 +1,62 @@
+/* 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)
diff --git a/src/libdwelf/dwelf_elf_gnu_build_id.c b/src/libdwelf/dwelf_elf_gnu_build_id.c
new file mode 100644
index 0000000..1ed501d
--- /dev/null
+++ b/src/libdwelf/dwelf_elf_gnu_build_id.c
@@ -0,0 +1,147 @@
+/* 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)
diff --git a/src/libdwelf/dwelf_elf_gnu_debuglink.c b/src/libdwelf/dwelf_elf_gnu_debuglink.c
new file mode 100644
index 0000000..6e22cf6
--- /dev/null
+++ b/src/libdwelf/dwelf_elf_gnu_debuglink.c
@@ -0,0 +1,99 @@
+/* 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 || rawdata->d_buf == 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)
diff --git a/src/libdwelf/libdwelf.h b/src/libdwelf/libdwelf.h
new file mode 100644
index 0000000..e16dc0f
--- /dev/null
+++ b/src/libdwelf/libdwelf.h
@@ -0,0 +1,72 @@
+/* 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 */
diff --git a/src/libdwelf/libdwelfP.h b/src/libdwelf/libdwelfP.h
new file mode 100644
index 0000000..d83c759
--- /dev/null
+++ b/src/libdwelf/libdwelfP.h
@@ -0,0 +1,42 @@
+/* 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 */
diff --git a/src/libdwfl/Android.mk b/src/libdwfl/Android.mk
index dc6a14a..2198fce 100755
--- a/src/libdwfl/Android.mk
+++ b/src/libdwfl/Android.mk
@@ -15,30 +15,71 @@
 LOCAL_PATH := $(call my-dir)
 
 LIBDWFL_SRC_FILES := \
-	dwfl_addrdwarf.c \
-	dwfl_addrmodule.c \
-	dwfl_begin.c \
-	dwfl_build_id_find_elf.c \
-	dwfl_build_id_find_debuginfo.c \
-	dwfl_end.c \
-	dwfl_error.c \
-	dwfl_module.c \
-	dwfl_module_addrdie.c \
-	dwfl_module_addrsym.c \
-	dwfl_module_build_id.c \
-	dwfl_report_elf.c \
-	dwfl_module_getdwarf.c \
-	dwfl_module_getsym.c \
-	dwfl_module_report_build_id.c \
-	find-debuginfo.c \
-	image-header.c \
-	libdwfl_crc32.c \
-	libdwfl_crc32_file.c \
-	linux-kernel-modules.c \
-	offline.c \
-	open.c \
-	relocate.c \
-	segment.c \
+    core-file.c \
+    cu.c \
+    derelocate.c \
+    dwfl_addrdie.c \
+    dwfl_addrdwarf.c \
+    dwfl_addrmodule.c \
+    dwfl_begin.c \
+    dwfl_build_id_find_debuginfo.c \
+    dwfl_build_id_find_elf.c \
+    dwfl_cumodule.c \
+    dwfl_dwarf_line.c \
+    dwfl_end.c \
+    dwfl_error.c \
+    dwfl_frame.c \
+    dwfl_frame_pc.c \
+    dwfl_frame_regs.c \
+    dwfl_getdwarf.c \
+    dwfl_getmodules.c \
+    dwfl_getsrc.c \
+    dwfl_getsrclines.c \
+    dwfl_line_comp_dir.c \
+    dwfl_linecu.c \
+    dwfl_lineinfo.c \
+    dwfl_linemodule.c \
+    dwfl_module_addrdie.c \
+    dwfl_module_addrname.c \
+    dwfl_module_addrsym.c \
+    dwfl_module_build_id.c \
+    dwfl_module.c \
+    dwfl_module_dwarf_cfi.c \
+    dwfl_module_eh_cfi.c \
+    dwfl_module_getdwarf.c \
+    dwfl_module_getelf.c \
+    dwfl_module_getsrc.c \
+    dwfl_module_getsrc_file.c \
+    dwfl_module_getsym.c \
+    dwfl_module_info.c \
+    dwfl_module_nextcu.c \
+    dwfl_module_register_names.c \
+    dwfl_module_report_build_id.c \
+    dwfl_module_return_value_location.c \
+    dwfl_nextcu.c \
+    dwfl_onesrcline.c \
+    dwfl_report_elf.c \
+    dwfl_segment_report_module.c \
+    dwfl_validate_address.c \
+    dwfl_version.c \
+    elf-from-memory.c \
+    find-debuginfo.c \
+    frame_unwind.c \
+    gzip.c \
+    image-header.c \
+    libdwfl_crc32.c \
+    libdwfl_crc32_file.c \
+    lines.c \
+    link_map.c \
+    linux-core-attach.c \
+    linux-kernel-modules.c \
+    linux-pid-attach.c \
+    linux-proc-maps.c \
+    offline.c \
+    open.c \
+    relocate.c \
+    segment.c \
+
 
 ifeq ($(HOST_OS),linux)
 
@@ -56,6 +97,7 @@
 LOCAL_C_INCLUDES := \
 	$(LOCAL_PATH)/.. \
 	$(LOCAL_PATH)/../lib \
+	$(LOCAL_PATH)/../libdwelf \
 	$(LOCAL_PATH)/../libdwfl \
 	$(LOCAL_PATH)/../libebl \
 	$(LOCAL_PATH)/../libdw \
@@ -74,6 +116,8 @@
 
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
 
+LOCAL_STATIC_LIBRARIES := libz
+
 include $(BUILD_HOST_STATIC_LIBRARY)
 
 endif # linux
@@ -92,16 +136,17 @@
 LOCAL_C_INCLUDES := \
 	$(LOCAL_PATH)/.. \
 	$(LOCAL_PATH)/../lib \
+	$(LOCAL_PATH)/../libdwelf \
 	$(LOCAL_PATH)/../libdwfl \
 	$(LOCAL_PATH)/../libebl \
 	$(LOCAL_PATH)/../libdw \
 	$(LOCAL_PATH)/../libelf
 
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../bionic-fixup
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../bionic-fixup
 
-LOCAL_CFLAGS += -include $(LOCAL_PATH)/../bionic-fixup/AndroidFixup.h
+LOCAL_CFLAGS += -include $(LOCAL_PATH)/../../bionic-fixup/AndroidFixup.h
 
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -Werror
+LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -Werror
 
 # to suppress the "pointer of type ‘void *’ used in arithmetic" warning
 LOCAL_CFLAGS += -Wno-pointer-arith
@@ -113,4 +158,6 @@
 
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
 
+LOCAL_STATIC_LIBRARIES := libz
+
 include $(BUILD_STATIC_LIBRARY)
diff --git a/src/libdwfl/ChangeLog b/src/libdwfl/ChangeLog
index 87a0555..69e59a6 100644
--- a/src/libdwfl/ChangeLog
+++ b/src/libdwfl/ChangeLog
@@ -1,3 +1,930 @@
+2014-12-19  Mark Wielaard  <mjw@redhat.com>
+
+	* dwfl_module_getdwarf.c (find_symtab): Always try find_dynsym last.
+
+2014-12-19  Mark Wielaard  <mjw@redhat.com>
+
+	* elf-from-memory.c (handle_segment): Remove palign sanity check.
+
+2014-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* relocate.c (resolve_symbol): Make sure symstrdata->d_buf != NULL.
+
+2014-12-13  Mark Wielaard  <mjw@redhat.com>
+
+	* dwfl_module_getdwarf.c (find_dynsym): elf_getdata_rawchunk takes
+	a size_t, make sure it doesn't overflow.
+
+2014-12-13  Mark Wielaard  <mjw@redhat.com>
+
+	* cu.c (cudie_offset): Make sure Dwarf_Off difference doesn't
+	wrap around before returning as int.
+
+2014-12-11  Josh Stone  <jistone@redhat.com>
+
+	* dwfl_module_getsrc.c (dwfl_module_getsrc): Return the *last* line
+	record <= addr, rather than returning immediately on matches.
+
+2014-12-09  Mark Wielaard  <mjw@redhat.com>
+
+	* dwfl_segment_report_module.c (handle_file_note): Check count doesn't
+	overflow.
+
+2014-12-07  Mark Wielaard  <mjw@redhat.com>
+
+	* relocate.c (relocate_section): Sanity check section overlap against
+	actually used ehsize, shentsize and phentsize.
+
+2014-12-07  Mark Wielaard  <mjw@redhat.com>
+
+	* offline.c (dwfl_offline_section_address): Assert shndx is not zero.
+	* relocate.c (__libdwfl_relocate_value): Don't relocate against
+	section zero.
+
+2014-11-29  Mark Wielaard  <mjw@redhat.com>
+
+	* relocate.c (relocate_section): Check relocation section and target
+	section data don't overlap any of the ELF headers.
+	(relocate): Check for offset + size overflow.
+
+2014-11-22  Mark Wielaard  <mjw@redhat.com>
+
+	* link_map.c (consider_executable): Use elf_getphdrnum.
+	(dwfl_link_map_report): Likewise.
+
+2014-11-18  Mark Wielaard  <mjw@redhat.com>
+
+	* dwfl_module_getdwarf.c (find_symtab): Sanity check the data buffer,
+	number of symbols and first_global before use.
+
+2014-11-14  Mark Wielaard  <mjw@redhat.com>
+
+	* dwfl_module_getdwarf.c (load_symtab): Don't use tables which have
+	a zero sh_entsize.
+
+2014-11-10  Mark Wielaard  <mjw@redhat.com>
+
+	* dwfl_module_getdwarf.c (find_dynsym): New inner function
+	translate_offs that takes an adjust argument. Try finding
+	the symbol table with and without adjusting to main_bias.
+
+2014-09-26  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Support NT_FILE for locating files.
+	* core-file.c (dwfl_core_file_report): New variables note_file and
+	note_file_size, set them and pass them to dwfl_segment_report_module.
+	* dwfl_segment_report_module.c: Include common.h and fcntl.h.
+	(buf_has_data, buf_read_ulong, handle_file_note): New functions.
+	(invalid_elf): New function from code of dwfl_segment_report_module.
+	(dwfl_segment_report_module): Add parameters note_file and
+	note_file_size.  New variables elf and fd, clean them up in finish.
+	Move some code to invalid_elf.  Call handle_file_note, if it found
+	a name verify the file by invalid_elf.  Protect elf and fd against
+	cleanup by finish if we found the file for new Dwfl_Module.
+	* libdwflP.h (dwfl_segment_report_module): Add parameters note_file and
+	note_file_size.
+
+2014-09-23  Mark Wielaard  <mjw@redhat.com>
+
+	* dwfl_segment_report_module.c (dwfl_segment_report_module):
+	Extract ei_class, ei_data and e_type early and use the result.
+
+2014-09-18  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Use IS_EXECUTABLE.
+	* dwfl_segment_report_module.c (dwfl_segment_report_module): Set
+	IS_EXECUTABLE.
+	* libdwflP.h (struct Dwfl_Module): New field is_executable.
+
+2014-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* dwfl_module_getdwarf.c (find_offsets): Add parameter main_bias, use
+	it.
+	(find_dynsym): Pass the new parameter main_bias.
+
+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/".
+
+2012-03-28  Roland McGrath  <roland@hack.frob.com>
+
+	* dwfl_segment_report_module.c
+	(dwfl_segment_report_module: read_portion): Don't use existing buffer
+	when FILESZ is zero (string mode) and available portion doesn't hold
+	a terminated string.
+
 2011-12-02  Roland McGrath  <roland@hack.frob.com>
 
 	* elf-from-memory.c (elf_from_remote_memory): Fix ELFCLASS64 case
diff --git a/src/libdwfl/Makefile b/src/libdwfl/Makefile
new file mode 100644
index 0000000..48180b2
--- /dev/null
+++ b/src/libdwfl/Makefile
@@ -0,0 +1,801 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# libdwfl/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+	$(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
+am__append_1 = gzip.c
+#am__append_2 = bzip2.c
+#am__append_3 = lzma.c
+subdir = libdwfl
+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_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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_version.c dwfl_module.c dwfl_report_elf.c relocate.c \
+	dwfl_module_build_id.c dwfl_module_report_build_id.c \
+	derelocate.c offline.c segment.c dwfl_module_info.c \
+	dwfl_getmodules.c dwfl_getdwarf.c dwfl_module_getdwarf.c \
+	dwfl_module_getelf.c dwfl_validate_address.c argp-std.c \
+	find-debuginfo.c dwfl_build_id_find_elf.c \
+	dwfl_build_id_find_debuginfo.c linux-kernel-modules.c \
+	linux-proc-maps.c dwfl_addrmodule.c dwfl_addrdwarf.c cu.c \
+	dwfl_module_nextcu.c dwfl_nextcu.c dwfl_cumodule.c \
+	dwfl_module_addrdie.c dwfl_addrdie.c lines.c dwfl_lineinfo.c \
+	dwfl_line_comp_dir.c dwfl_linemodule.c dwfl_linecu.c \
+	dwfl_dwarf_line.c dwfl_getsrclines.c dwfl_onesrcline.c \
+	dwfl_module_getsrc.c dwfl_getsrc.c dwfl_module_getsrc_file.c \
+	libdwfl_crc32.c libdwfl_crc32_file.c elf-from-memory.c \
+	dwfl_module_dwarf_cfi.c dwfl_module_eh_cfi.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 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
+am__objects_1 = gzip.$(OBJEXT)
+#am__objects_2 = bzip2.$(OBJEXT)
+#am__objects_3 = lzma.$(OBJEXT)
+am_libdwfl_a_OBJECTS = dwfl_begin.$(OBJEXT) dwfl_end.$(OBJEXT) \
+	dwfl_error.$(OBJEXT) dwfl_version.$(OBJEXT) \
+	dwfl_module.$(OBJEXT) dwfl_report_elf.$(OBJEXT) \
+	relocate.$(OBJEXT) dwfl_module_build_id.$(OBJEXT) \
+	dwfl_module_report_build_id.$(OBJEXT) derelocate.$(OBJEXT) \
+	offline.$(OBJEXT) segment.$(OBJEXT) dwfl_module_info.$(OBJEXT) \
+	dwfl_getmodules.$(OBJEXT) dwfl_getdwarf.$(OBJEXT) \
+	dwfl_module_getdwarf.$(OBJEXT) dwfl_module_getelf.$(OBJEXT) \
+	dwfl_validate_address.$(OBJEXT) argp-std.$(OBJEXT) \
+	find-debuginfo.$(OBJEXT) dwfl_build_id_find_elf.$(OBJEXT) \
+	dwfl_build_id_find_debuginfo.$(OBJEXT) \
+	linux-kernel-modules.$(OBJEXT) linux-proc-maps.$(OBJEXT) \
+	dwfl_addrmodule.$(OBJEXT) dwfl_addrdwarf.$(OBJEXT) \
+	cu.$(OBJEXT) dwfl_module_nextcu.$(OBJEXT) \
+	dwfl_nextcu.$(OBJEXT) dwfl_cumodule.$(OBJEXT) \
+	dwfl_module_addrdie.$(OBJEXT) dwfl_addrdie.$(OBJEXT) \
+	lines.$(OBJEXT) dwfl_lineinfo.$(OBJEXT) \
+	dwfl_line_comp_dir.$(OBJEXT) dwfl_linemodule.$(OBJEXT) \
+	dwfl_linecu.$(OBJEXT) dwfl_dwarf_line.$(OBJEXT) \
+	dwfl_getsrclines.$(OBJEXT) dwfl_onesrcline.$(OBJEXT) \
+	dwfl_module_getsrc.$(OBJEXT) dwfl_getsrc.$(OBJEXT) \
+	dwfl_module_getsrc_file.$(OBJEXT) libdwfl_crc32.$(OBJEXT) \
+	libdwfl_crc32_file.$(OBJEXT) elf-from-memory.$(OBJEXT) \
+	dwfl_module_dwarf_cfi.$(OBJEXT) dwfl_module_eh_cfi.$(OBJEXT) \
+	dwfl_module_getsym.$(OBJEXT) dwfl_module_addrname.$(OBJEXT) \
+	dwfl_module_addrsym.$(OBJEXT) \
+	dwfl_module_return_value_location.$(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_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+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/||"`;; \
+    *) 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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 1
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/libdwfl
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/libdwfl
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. -I$(srcdir) \
+	-I$(srcdir)/../libelf -I$(srcdir)/../libebl \
+	-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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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_build_id.c dwfl_module_report_build_id.c \
+	derelocate.c offline.c segment.c dwfl_module_info.c \
+	dwfl_getmodules.c dwfl_getdwarf.c dwfl_module_getdwarf.c \
+	dwfl_module_getelf.c dwfl_validate_address.c argp-std.c \
+	find-debuginfo.c dwfl_build_id_find_elf.c \
+	dwfl_build_id_find_debuginfo.c linux-kernel-modules.c \
+	linux-proc-maps.c dwfl_addrmodule.c dwfl_addrdwarf.c cu.c \
+	dwfl_module_nextcu.c dwfl_nextcu.c dwfl_cumodule.c \
+	dwfl_module_addrdie.c dwfl_addrdie.c lines.c dwfl_lineinfo.c \
+	dwfl_line_comp_dir.c dwfl_linemodule.c dwfl_linecu.c \
+	dwfl_dwarf_line.c dwfl_getsrclines.c dwfl_onesrcline.c \
+	dwfl_module_getsrc.c dwfl_getsrc.c dwfl_module_getsrc_file.c \
+	libdwfl_crc32.c libdwfl_crc32_file.c elf-from-memory.c \
+	dwfl_module_dwarf_cfi.c dwfl_module_eh_cfi.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 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
+libdwfl_pic_a_SOURCES = 
+am_libdwfl_pic_a_OBJECTS = $(libdwfl_a_SOURCES:.c=.os)
+noinst_HEADERS = libdwflP.h
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: # $(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 libdwfl/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits libdwfl/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(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)
+
+libdwfl.a: $(libdwfl_a_OBJECTS) $(libdwfl_a_DEPENDENCIES) $(EXTRA_libdwfl_a_DEPENDENCIES) 
+	$(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) 
+	$(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)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/argp-std.Po
+include ./$(DEPDIR)/bzip2.Po
+include ./$(DEPDIR)/core-file.Po
+include ./$(DEPDIR)/cu.Po
+include ./$(DEPDIR)/derelocate.Po
+include ./$(DEPDIR)/dwfl_addrdie.Po
+include ./$(DEPDIR)/dwfl_addrdwarf.Po
+include ./$(DEPDIR)/dwfl_addrmodule.Po
+include ./$(DEPDIR)/dwfl_begin.Po
+include ./$(DEPDIR)/dwfl_build_id_find_debuginfo.Po
+include ./$(DEPDIR)/dwfl_build_id_find_elf.Po
+include ./$(DEPDIR)/dwfl_cumodule.Po
+include ./$(DEPDIR)/dwfl_dwarf_line.Po
+include ./$(DEPDIR)/dwfl_end.Po
+include ./$(DEPDIR)/dwfl_error.Po
+include ./$(DEPDIR)/dwfl_frame.Po
+include ./$(DEPDIR)/dwfl_frame_pc.Po
+include ./$(DEPDIR)/dwfl_frame_regs.Po
+include ./$(DEPDIR)/dwfl_getdwarf.Po
+include ./$(DEPDIR)/dwfl_getmodules.Po
+include ./$(DEPDIR)/dwfl_getsrc.Po
+include ./$(DEPDIR)/dwfl_getsrclines.Po
+include ./$(DEPDIR)/dwfl_line_comp_dir.Po
+include ./$(DEPDIR)/dwfl_linecu.Po
+include ./$(DEPDIR)/dwfl_lineinfo.Po
+include ./$(DEPDIR)/dwfl_linemodule.Po
+include ./$(DEPDIR)/dwfl_module.Po
+include ./$(DEPDIR)/dwfl_module_addrdie.Po
+include ./$(DEPDIR)/dwfl_module_addrname.Po
+include ./$(DEPDIR)/dwfl_module_addrsym.Po
+include ./$(DEPDIR)/dwfl_module_build_id.Po
+include ./$(DEPDIR)/dwfl_module_dwarf_cfi.Po
+include ./$(DEPDIR)/dwfl_module_eh_cfi.Po
+include ./$(DEPDIR)/dwfl_module_getdwarf.Po
+include ./$(DEPDIR)/dwfl_module_getelf.Po
+include ./$(DEPDIR)/dwfl_module_getsrc.Po
+include ./$(DEPDIR)/dwfl_module_getsrc_file.Po
+include ./$(DEPDIR)/dwfl_module_getsym.Po
+include ./$(DEPDIR)/dwfl_module_info.Po
+include ./$(DEPDIR)/dwfl_module_nextcu.Po
+include ./$(DEPDIR)/dwfl_module_register_names.Po
+include ./$(DEPDIR)/dwfl_module_report_build_id.Po
+include ./$(DEPDIR)/dwfl_module_return_value_location.Po
+include ./$(DEPDIR)/dwfl_nextcu.Po
+include ./$(DEPDIR)/dwfl_onesrcline.Po
+include ./$(DEPDIR)/dwfl_report_elf.Po
+include ./$(DEPDIR)/dwfl_segment_report_module.Po
+include ./$(DEPDIR)/dwfl_validate_address.Po
+include ./$(DEPDIR)/dwfl_version.Po
+include ./$(DEPDIR)/elf-from-memory.Po
+include ./$(DEPDIR)/find-debuginfo.Po
+include ./$(DEPDIR)/frame_unwind.Po
+include ./$(DEPDIR)/gzip.Po
+include ./$(DEPDIR)/image-header.Po
+include ./$(DEPDIR)/libdwfl_crc32.Po
+include ./$(DEPDIR)/libdwfl_crc32_file.Po
+include ./$(DEPDIR)/lines.Po
+include ./$(DEPDIR)/link_map.Po
+include ./$(DEPDIR)/linux-core-attach.Po
+include ./$(DEPDIR)/linux-kernel-modules.Po
+include ./$(DEPDIR)/linux-pid-attach.Po
+include ./$(DEPDIR)/linux-proc-maps.Po
+include ./$(DEPDIR)/lzma.Po
+include ./$(DEPDIR)/offline.Po
+include ./$(DEPDIR)/open.Po
+include ./$(DEPDIR)/relocate.Po
+include ./$(DEPDIR)/segment.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(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
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(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:
diff --git a/src/libdwfl/Makefile.am b/src/libdwfl/Makefile.am
index 65b3896..72c980b 100644
--- a/src/libdwfl/Makefile.am
+++ b/src/libdwfl/Makefile.am
@@ -2,39 +2,40 @@
 ##
 ## Process this file with automake to create Makefile.in
 ##
-## Copyright (C) 2005-2010 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## Copyright (C) 2005-2010, 2013 Red Hat, Inc.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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
-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
 
@@ -65,7 +66,9 @@
 		    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
@@ -77,22 +80,14 @@
 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
 
diff --git a/src/libdwfl/Makefile.in b/src/libdwfl/Makefile.in
index b22e1ad..f00e79e 100644
--- a/src/libdwfl/Makefile.in
+++ b/src/libdwfl/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -17,6 +16,51 @@
 
 
 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@
@@ -35,18 +79,16 @@
 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) \
@@ -56,8 +98,11 @@
 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 \
@@ -79,8 +124,9 @@
 	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)
@@ -114,21 +160,49 @@
 	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/||"`;; \
@@ -150,20 +224,47 @@
 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@
@@ -172,10 +273,13 @@
 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@
@@ -196,6 +300,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -206,6 +311,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -220,6 +326,7 @@
 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@
@@ -269,22 +376,21 @@
 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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 \
@@ -305,18 +411,17 @@
 	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
 
@@ -343,6 +448,7 @@
 	    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
@@ -355,14 +461,16 @@
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libdwfl.a: $(libdwfl_a_OBJECTS) $(libdwfl_a_DEPENDENCIES) 
-	-rm -f libdwfl.a
-	$(libdwfl_a_AR) libdwfl.a $(libdwfl_a_OBJECTS) $(libdwfl_a_LIBADD)
-	$(RANLIB) libdwfl.a
-libdwfl_pic.a: $(libdwfl_pic_a_OBJECTS) $(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
+
+libdwfl.a: $(libdwfl_a_OBJECTS) $(libdwfl_a_DEPENDENCIES) $(EXTRA_libdwfl_a_DEPENDENCIES) 
+	$(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) 
+	$(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)
@@ -385,6 +493,9 @@
 @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@
@@ -418,13 +529,16 @@
 @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@
@@ -433,22 +547,25 @@
 @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 -o $@ $<
 
 .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 -o $@ `$(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"; \
@@ -462,30 +579,17 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
+	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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -497,15 +601,11 @@
 	      $$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
@@ -514,6 +614,21 @@
 	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
@@ -565,10 +680,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -652,18 +772,19 @@
 
 .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
diff --git a/src/libdwfl/argp-std.c b/src/libdwfl/argp-std.c
index e598c6e..42b7e78 100644
--- a/src/libdwfl/argp-std.c
+++ b/src/libdwfl/argp-std.c
@@ -1,51 +1,30 @@
 /* Standard argp argument parsers for tools using libdwfl.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2012 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <argp.h>
@@ -111,6 +90,16 @@
     .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)
 {
@@ -132,152 +121,145 @@
 
   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)
 	  {
@@ -286,7 +268,54 @@
 	    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
@@ -295,12 +324,22 @@
 
 	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:
@@ -308,7 +347,10 @@
     }
 
   /* 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;
 }
 
@@ -320,15 +362,3 @@
 {
   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
diff --git a/src/libdwfl/core-file.c b/src/libdwfl/core-file.c
index 1b556dd..50031ae 100644
--- a/src/libdwfl/core-file.c
+++ b/src/libdwfl/core-file.c
@@ -1,51 +1,30 @@
 /* Core file handling.
-   Copyright (C) 2008-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2008-2010, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <config.h>
 #include "../libelf/libelfP.h"	/* For NOTE_ALIGN.  */
@@ -402,8 +381,46 @@
   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))
@@ -412,36 +429,31 @@
       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, &notes_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;
+  const void *note_file = NULL;
   size_t auxv_size = 0;
+  size_t note_file_size = 0;
   if (likely (notes_phdr.p_type == PT_NOTE))
     {
       /* PT_NOTE -> NT_AUXV -> AT_PHDR -> PT_DYNAMIC -> DT_DEBUG */
@@ -458,13 +470,19 @@
 	  size_t desc_pos;
 	  while ((pos = gelf_getnote (notes, pos, &nhdr,
 				      &name_pos, &desc_pos)) > 0)
-	    if (nhdr.n_type == NT_AUXV
-		&& nhdr.n_namesz == sizeof "CORE"
+	    if (nhdr.n_namesz == sizeof "CORE"
 		&& !memcmp (notes->d_buf + name_pos, "CORE", sizeof "CORE"))
 	      {
-		auxv = notes->d_buf + desc_pos;
-		auxv_size = nhdr.n_descsz;
-		break;
+		if (nhdr.n_type == NT_AUXV)
+		  {
+		    auxv = notes->d_buf + desc_pos;
+		    auxv_size = nhdr.n_descsz;
+		  }
+		if (nhdr.n_type == NT_FILE)
+		  {
+		    note_file = notes->d_buf + desc_pos;
+		    note_file_size = nhdr.n_descsz;
+		  }
 	      }
 	}
     }
@@ -472,13 +490,100 @@
   /* 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,
+					    note_file, note_file_size,
+					    &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
diff --git a/src/libdwfl/cu.c b/src/libdwfl/cu.c
index 515aff3..5ce531b 100644
--- a/src/libdwfl/cu.c
+++ b/src/libdwfl/cu.c
@@ -1,51 +1,30 @@
 /* Keeping track of DWARF compilation units in libdwfl.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libdw/libdwP.h"
@@ -172,14 +151,20 @@
 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
 compare_cukey (const void *a, const void *b)
 {
-  return cudie_offset (a) - cudie_offset (b);
+  Dwarf_Off a_off = cudie_offset (a);
+  Dwarf_Off b_off = cudie_offset (b);
+  return (a_off < b_off) ? -1 : ((a_off > b_off) ? 1 : 0);
 }
 
 /* Intern the CU if necessary.  */
@@ -221,7 +206,10 @@
 	  /* 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)
diff --git a/src/libdwfl/derelocate.c b/src/libdwfl/derelocate.c
index b8c8dd7..da67908 100644
--- a/src/libdwfl/derelocate.c
+++ b/src/libdwfl/derelocate.c
@@ -1,51 +1,30 @@
 /* Recover relocatibility for addresses computed from debug information.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
@@ -338,7 +317,7 @@
 	     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;
 
@@ -351,6 +330,17 @@
   return -1;
 }
 
+size_t
+internal_function
+__libdwfl_find_section_ndx (Dwfl_Module *mod, Dwarf_Addr *addr)
+{
+  int idx = find_section (mod, addr);
+  if (unlikely (idx == -1))
+    return SHN_UNDEF;
+
+  return elf_ndxscn (mod->reloc_info->refs[idx].scn);
+}
+
 int
 dwfl_module_relocate_address (Dwfl_Module *mod, Dwarf_Addr *addr)
 {
diff --git a/src/libdwfl/dwfl_addrdie.c b/src/libdwfl/dwfl_addrdie.c
index 20c1578..1e9b3ab 100644
--- a/src/libdwfl/dwfl_addrdie.c
+++ b/src/libdwfl/dwfl_addrdie.c
@@ -1,51 +1,30 @@
 /* Fetch CU DIE from address.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_addrdwarf.c b/src/libdwfl/dwfl_addrdwarf.c
index 365c69c..ba412ec 100644
--- a/src/libdwfl/dwfl_addrdwarf.c
+++ b/src/libdwfl/dwfl_addrdwarf.c
@@ -1,51 +1,30 @@
 /* Fetch libdw handle from address.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_addrmodule.c b/src/libdwfl/dwfl_addrmodule.c
index 6455943..9234eb7 100644
--- a/src/libdwfl/dwfl_addrmodule.c
+++ b/src/libdwfl/dwfl_addrmodule.c
@@ -1,51 +1,30 @@
 /* Find module containing address.
    Copyright (C) 2005, 2006, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_begin.c b/src/libdwfl/dwfl_begin.c
index d388ee0..44c16a9 100644
--- a/src/libdwfl/dwfl_begin.c
+++ b/src/libdwfl/dwfl_begin.c
@@ -1,51 +1,30 @@
 /* Set up a session using libdwfl.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_build_id_find_debuginfo.c b/src/libdwfl/dwfl_build_id_find_debuginfo.c
index e51b65b..f1c64bc 100644
--- a/src/libdwfl/dwfl_build_id_find_debuginfo.c
+++ b/src/libdwfl/dwfl_build_id_find_debuginfo.c
@@ -1,51 +1,30 @@
 /* Find the debuginfo file for a module from its build ID.
-   Copyright (C) 2007, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2007, 2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <unistd.h>
@@ -62,10 +41,61 @@
 			      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
diff --git a/src/libdwfl/dwfl_build_id_find_elf.c b/src/libdwfl/dwfl_build_id_find_elf.c
index 12ce1b5..062aad1 100644
--- a/src/libdwfl/dwfl_build_id_find_elf.c
+++ b/src/libdwfl/dwfl_build_id_find_elf.c
@@ -1,51 +1,30 @@
 /* Find an ELF file for a module from its build ID.
-   Copyright (C) 2007-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2007-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <inttypes.h>
@@ -55,17 +34,9 @@
 
 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];
@@ -84,13 +55,8 @@
 	    ".debug");
 
   const Dwfl_Callbacks *const cb = mod->dwfl->callbacks;
-#if defined(__BIONIC__) || defined(__APPLE__)
-  char *path = strdup ((cb->debuginfo_path ? *cb->debuginfo_path : NULL)
-			?: DEFAULT_DEBUGINFO_PATH);
-#else
   char *path = strdupa ((cb->debuginfo_path ? *cb->debuginfo_path : NULL)
 			?: DEFAULT_DEBUGINFO_PATH);
-#endif
 
   int fd = -1;
   char *dir;
@@ -124,10 +90,6 @@
       free (name);
     }
 
-#if defined(__BIONIC__) || defined(__APPLE__)
-    free(path);
-#endif
-
   /* If we simply found nothing, clear errno.  If we had some other error
      with the file, report that.  Possibly this should treat other errors
      like ENOENT too.  But ignoring all errors could mask some that should
@@ -139,6 +101,22 @@
 }
 
 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)),
@@ -146,7 +124,23 @@
 			char **file_name, Elf **elfp)
 {
   *elfp = NULL;
-  int fd = __libdwfl_open_by_build_id (mod, false, file_name);
+  if (mod->is_executable && mod->dwfl->executable_for_core != NULL)
+    {
+      /* 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 MOD was identified as main executable
+	 (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);
diff --git a/src/libdwfl/dwfl_cumodule.c b/src/libdwfl/dwfl_cumodule.c
index 787c098..c5cf004 100644
--- a/src/libdwfl/dwfl_cumodule.c
+++ b/src/libdwfl/dwfl_cumodule.c
@@ -1,51 +1,30 @@
 /* Find the module for a CU DIE previously returned by libdwfl.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_dwarf_line.c b/src/libdwfl/dwfl_dwarf_line.c
index eb085e4..e96f859 100644
--- a/src/libdwfl/dwfl_dwarf_line.c
+++ b/src/libdwfl/dwfl_dwarf_line.c
@@ -1,51 +1,30 @@
 /* Get information from a source line record returned by libdwfl.
    Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libdw/libdwP.h"
diff --git a/src/libdwfl/dwfl_end.c b/src/libdwfl/dwfl_end.c
index 429abb1..33cae48 100644
--- a/src/libdwfl/dwfl_end.c
+++ b/src/libdwfl/dwfl_end.c
@@ -1,51 +1,30 @@
 /* Finish a session using libdwfl.
-   Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2008, 2012-2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
@@ -55,6 +34,9 @@
   if (dwfl == NULL)
     return;
 
+  if (dwfl->process)
+    __libdwfl_process_free (dwfl->process);
+
   free (dwfl->lookup_addr);
   free (dwfl->lookup_module);
   free (dwfl->lookup_segndx);
@@ -67,5 +49,6 @@
       __libdwfl_module_free (dead);
     }
 
+  free (dwfl->executable_for_core);
   free (dwfl);
 }
diff --git a/src/libdwfl/dwfl_error.c b/src/libdwfl/dwfl_error.c
index 966c990..d9ca9e7 100644
--- a/src/libdwfl/dwfl_error.c
+++ b/src/libdwfl/dwfl_error.c
@@ -1,51 +1,30 @@
 /* Error handling in libdwfl.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -62,11 +41,7 @@
 
 
 /* The error number.  */
-#ifdef __APPLE__
-static int global_error;
-#else
 static __thread int global_error;
-#endif
 
 
 int
@@ -167,12 +142,7 @@
   switch (error &~ 0xffff)
     {
     case OTHER_ERROR (ERRNO):
-#ifdef __BIONIC__
-      strerror_r (error & 0xffff, "bad", 0);
-      return "bad";
-#else
       return strerror_r (error & 0xffff, "bad", 0);
-#endif
     case OTHER_ERROR (LIBELF):
       return elf_errmsg (error & 0xffff);
     case OTHER_ERROR (LIBDW):
diff --git a/src/libdwfl/dwfl_frame.c b/src/libdwfl/dwfl_frame.c
new file mode 100644
index 0000000..f6f86c0
--- /dev/null
+++ b/src/libdwfl/dwfl_frame.c
@@ -0,0 +1,474 @@
+/* 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)
diff --git a/src/libdwfl/dwfl_frame_pc.c b/src/libdwfl/dwfl_frame_pc.c
new file mode 100644
index 0000000..296c815
--- /dev/null
+++ b/src/libdwfl/dwfl_frame_pc.c
@@ -0,0 +1,64 @@
+/* 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)
diff --git a/src/libdwfl/dwfl_frame_regs.c b/src/libdwfl/dwfl_frame_regs.c
new file mode 100644
index 0000000..10803fe
--- /dev/null
+++ b/src/libdwfl/dwfl_frame_regs.c
@@ -0,0 +1,57 @@
+/* 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)
diff --git a/src/libdwfl/dwfl_getdwarf.c b/src/libdwfl/dwfl_getdwarf.c
index 0a0656f..8d1d9ba 100644
--- a/src/libdwfl/dwfl_getdwarf.c
+++ b/src/libdwfl/dwfl_getdwarf.c
@@ -1,51 +1,30 @@
 /* Iterate through modules to fetch Dwarf information.
    Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_getmodules.c b/src/libdwfl/dwfl_getmodules.c
index 7c6ab97..eed9b4f 100644
--- a/src/libdwfl/dwfl_getmodules.c
+++ b/src/libdwfl/dwfl_getmodules.c
@@ -1,51 +1,30 @@
 /* Iterate through modules.
    Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_getsrc.c b/src/libdwfl/dwfl_getsrc.c
index 1cc1695..8d4ae02 100644
--- a/src/libdwfl/dwfl_getsrc.c
+++ b/src/libdwfl/dwfl_getsrc.c
@@ -1,51 +1,30 @@
 /* Find source location for PC address.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_getsrclines.c b/src/libdwfl/dwfl_getsrclines.c
index 790481f..bdfcf5c 100644
--- a/src/libdwfl/dwfl_getsrclines.c
+++ b/src/libdwfl/dwfl_getsrclines.c
@@ -1,51 +1,30 @@
 /* Fetch source line information for CU.
-   Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
@@ -65,5 +44,5 @@
     }
 
   *nlines = cu->die.cu->lines->nlines;
-  return -1;
+  return 0;
 }
diff --git a/src/libdwfl/dwfl_line_comp_dir.c b/src/libdwfl/dwfl_line_comp_dir.c
index a755524..bda09c4 100644
--- a/src/libdwfl/dwfl_line_comp_dir.c
+++ b/src/libdwfl/dwfl_line_comp_dir.c
@@ -1,51 +1,30 @@
 /* Get information from a source line record returned by libdwfl.
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <dwarf.h>
diff --git a/src/libdwfl/dwfl_linecu.c b/src/libdwfl/dwfl_linecu.c
index 34f5bb1..ce78d29 100644
--- a/src/libdwfl/dwfl_linecu.c
+++ b/src/libdwfl/dwfl_linecu.c
@@ -1,51 +1,30 @@
 /* Fetch the module containing a source line record returned by libdwfl.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_lineinfo.c b/src/libdwfl/dwfl_lineinfo.c
index 6049de8..dfb27d8 100644
--- a/src/libdwfl/dwfl_lineinfo.c
+++ b/src/libdwfl/dwfl_lineinfo.c
@@ -1,51 +1,30 @@
 /* Get information from a source line record returned by libdwfl.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libdw/libdwP.h"
diff --git a/src/libdwfl/dwfl_linemodule.c b/src/libdwfl/dwfl_linemodule.c
index fb98f83..e4a35e0 100644
--- a/src/libdwfl/dwfl_linemodule.c
+++ b/src/libdwfl/dwfl_linemodule.c
@@ -1,51 +1,30 @@
 /* Fetch the module containing a source line record returned by libdwfl.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_module.c b/src/libdwfl/dwfl_module.c
index d7e5413..8efcfaa 100644
--- a/src/libdwfl/dwfl_module.c
+++ b/src/libdwfl/dwfl_module.c
@@ -1,51 +1,30 @@
 /* Maintenance of module list in libdwfl.
-   Copyright (C) 2005, 2006, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2006, 2007, 2008, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <search.h>
@@ -92,7 +71,17 @@
     }
 
   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);
@@ -100,10 +89,17 @@
   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);
 }
diff --git a/src/libdwfl/dwfl_module_addrdie.c b/src/libdwfl/dwfl_module_addrdie.c
index 2733196..20d2842 100644
--- a/src/libdwfl/dwfl_module_addrdie.c
+++ b/src/libdwfl/dwfl_module_addrdie.c
@@ -1,51 +1,30 @@
 /* Fetch the CU DIE for a PC address in a given module.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_module_addrname.c b/src/libdwfl/dwfl_module_addrname.c
index 7d365fe..88a8139 100644
--- a/src/libdwfl/dwfl_module_addrname.c
+++ b/src/libdwfl/dwfl_module_addrname.c
@@ -1,57 +1,38 @@
 /* Find debugging and symbol information for a module in libdwfl.
-   Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2006, 2007, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
 const char *
 dwfl_module_addrname (Dwfl_Module *mod, GElf_Addr addr)
 {
+  GElf_Off off;
   GElf_Sym sym;
-  return INTUSE(dwfl_module_addrsym) (mod, addr, &sym, NULL);
+  return INTUSE(dwfl_module_addrinfo) (mod, addr, &off, &sym,
+				       NULL, NULL, NULL);
 }
diff --git a/src/libdwfl/dwfl_module_addrsym.c b/src/libdwfl/dwfl_module_addrsym.c
index 9ced0cf..d205832 100644
--- a/src/libdwfl/dwfl_module_addrsym.c
+++ b/src/libdwfl/dwfl_module_addrsym.c
@@ -1,51 +1,30 @@
 /* Find debugging and symbol information for a module in libdwfl.
-   Copyright (C) 2005-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
@@ -53,8 +32,10 @@
    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)
@@ -62,19 +43,36 @@
 
   /* 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);
@@ -88,113 +86,204 @@
 	    }
 	}
 
-      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)
diff --git a/src/libdwfl/dwfl_module_build_id.c b/src/libdwfl/dwfl_module_build_id.c
index f988866..350bbf8 100644
--- a/src/libdwfl/dwfl_module_build_id.c
+++ b/src/libdwfl/dwfl_module_build_id.c
@@ -1,51 +1,30 @@
 /* Return build ID information for a module.
-   Copyright (C) 2007-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2007-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
@@ -73,82 +52,25 @@
   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
diff --git a/src/libdwfl/dwfl_module_dwarf_cfi.c b/src/libdwfl/dwfl_module_dwarf_cfi.c
index 96e60fb..5182d6a 100644
--- a/src/libdwfl/dwfl_module_dwarf_cfi.c
+++ b/src/libdwfl/dwfl_module_dwarf_cfi.c
@@ -1,51 +1,30 @@
 /* Find DWARF CFI for a module in libdwfl.
    Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libdw/cfi.h"
diff --git a/src/libdwfl/dwfl_module_eh_cfi.c b/src/libdwfl/dwfl_module_eh_cfi.c
index 79c8279..da10d9f 100644
--- a/src/libdwfl/dwfl_module_eh_cfi.c
+++ b/src/libdwfl/dwfl_module_eh_cfi.c
@@ -1,51 +1,30 @@
 /* Find EH CFI for a module in libdwfl.
    Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libdw/cfi.h"
diff --git a/src/libdwfl/dwfl_module_getdwarf.c b/src/libdwfl/dwfl_module_getdwarf.c
index 14fcd55..494407d 100644
--- a/src/libdwfl/dwfl_module_getdwarf.c
+++ b/src/libdwfl/dwfl_module_getdwarf.c
@@ -1,65 +1,43 @@
 /* Find debugging and symbol information for a module in libdwfl.
-   Copyright (C) 2005-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <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.  */
@@ -67,25 +45,36 @@
 
       /* 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)
     {
@@ -97,7 +86,7 @@
       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".
 
@@ -151,15 +140,65 @@
 	}
     }
 
-  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
@@ -187,105 +226,11 @@
       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
@@ -303,7 +248,7 @@
    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;
@@ -530,8 +475,8 @@
 	  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;
     }
@@ -548,7 +493,9 @@
     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,
@@ -557,10 +504,59 @@
 							   &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.
@@ -579,6 +575,8 @@
 	switch (shdr->sh_type)
 	  {
 	  case SHT_SYMTAB:
+	    if (shdr->sh_entsize == 0)
+	      break;
 	    symtab = true;
 	    *symscn = scn;
 	    *symfile = file;
@@ -593,10 +591,13 @@
 	    if (symtab)
 	      break;
 	    /* Use this if need be, but keep looking for SHT_SYMTAB.  */
+	    if (shdr->sh_entsize == 0)
+	      break;
 	    *symscn = scn;
 	    *symfile = file;
 	    *strshndx = shdr->sh_link;
 	    *syments = shdr->sh_size / shdr->sh_entsize;
+	    *first_global = shdr->sh_info;
 	    break;
 
 	  case SHT_SYMTAB_SHNDX:
@@ -624,7 +625,7 @@
 /* Translate addresses into file offsets.
    OFFS[*] start out zero and remain zero if unresolved.  */
 static void
-find_offsets (Elf *elf, size_t phnum, size_t n,
+find_offsets (Elf *elf, GElf_Addr main_bias, size_t phnum, size_t n,
 	      GElf_Addr addrs[n], GElf_Off offs[n])
 {
   size_t unsolved = n;
@@ -635,10 +636,10 @@
       if (phdr != NULL && phdr->p_type == PT_LOAD && phdr->p_memsz > 0)
 	for (size_t j = 0; j < n; ++j)
 	  if (offs[j] == 0
-	      && addrs[j] >= phdr->p_vaddr
-	      && addrs[j] - phdr->p_vaddr < phdr->p_filesz)
+	      && addrs[j] >= phdr->p_vaddr + main_bias
+	      && addrs[j] - (phdr->p_vaddr + main_bias) < phdr->p_filesz)
 	    {
-	      offs[j] = addrs[j] - phdr->p_vaddr + phdr->p_offset;
+	      offs[j] = addrs[j] - (phdr->p_vaddr + main_bias) + phdr->p_offset;
 	      if (--unsolved == 0)
 		break;
 	    }
@@ -721,122 +722,288 @@
 	      break;
 	    }
 
-	  /* Translate pointers into file offsets.  */
-	  GElf_Off offs[i_max] = { 0, };
-	  find_offsets (mod->main.elf, phnum, i_max, addrs, offs);
+	  /* Translate pointers into file offsets.  ADJUST is either zero
+	     in case the dynamic segment wasn't adjusted or mod->main_bias.  */
+	  void translate_offs (GElf_Addr adjust)
+	  {
+	    GElf_Off offs[i_max] = { 0, };
+	    find_offsets (mod->main.elf, adjust, phnum, i_max, addrs, offs);
 
-	  /* Figure out the size of the symbol table.  */
-	  if (offs[i_hash] != 0)
-	    {
-	      /* In the original format, .hash says the size of .dynsym.  */
-
-	      size_t entsz = SH_ENTSIZE_HASH (ehdr);
-	      data = elf_getdata_rawchunk (mod->main.elf,
-					   offs[i_hash] + entsz, entsz,
-					   entsz == 4 ? ELF_T_WORD
-					   : ELF_T_XWORD);
-	      if (data != NULL)
-		mod->syments = (entsz == 4
-				? *(const GElf_Word *) data->d_buf
-				: *(const GElf_Xword *) data->d_buf);
-	    }
-	  if (offs[i_gnu_hash] != 0 && mod->syments == 0)
-	    {
-	      /* In the new format, we can derive it with some work.  */
-
-	      const struct
+	    /* Figure out the size of the symbol table.  */
+	    if (offs[i_hash] != 0)
 	      {
-		Elf32_Word nbuckets;
-		Elf32_Word symndx;
-		Elf32_Word maskwords;
-		Elf32_Word shift2;
-	      } *header;
+		/* In the original format, .hash says the size of .dynsym.  */
 
-	      data = elf_getdata_rawchunk (mod->main.elf, offs[i_gnu_hash],
-					   sizeof *header, ELF_T_WORD);
-	      if (data != NULL)
+		size_t entsz = SH_ENTSIZE_HASH (ehdr);
+		data = elf_getdata_rawchunk (mod->main.elf,
+					     offs[i_hash] + entsz, entsz,
+					     entsz == 4 ? ELF_T_WORD
+					     : ELF_T_XWORD);
+		if (data != NULL)
+		  mod->syments = (entsz == 4
+				  ? *(const GElf_Word *) data->d_buf
+				  : *(const GElf_Xword *) data->d_buf);
+	      }
+	    if (offs[i_gnu_hash] != 0 && mod->syments == 0)
+	      {
+		/* In the new format, we can derive it with some work.  */
+
+		const struct
 		{
-		  header = data->d_buf;
-		  Elf32_Word nbuckets = header->nbuckets;
-		  Elf32_Word symndx = header->symndx;
-		  GElf_Off buckets_at = (offs[i_gnu_hash] + sizeof *header
-					 + (gelf_getclass (mod->main.elf)
-					    * sizeof (Elf32_Word)
-					    * header->maskwords));
+		  Elf32_Word nbuckets;
+		  Elf32_Word symndx;
+		  Elf32_Word maskwords;
+		  Elf32_Word shift2;
+		} *header;
 
-		  data = elf_getdata_rawchunk (mod->main.elf, buckets_at,
-					       nbuckets * sizeof (Elf32_Word),
-					       ELF_T_WORD);
-		  if (data != NULL && symndx < nbuckets)
-		    {
-		      const Elf32_Word *const buckets = data->d_buf;
-		      Elf32_Word maxndx = symndx;
-		      for (Elf32_Word bucket = 0; bucket < nbuckets; ++bucket)
-			if (buckets[bucket] > maxndx)
-			  maxndx = buckets[bucket];
+		data = elf_getdata_rawchunk (mod->main.elf, offs[i_gnu_hash],
+					     sizeof *header, ELF_T_WORD);
+		if (data != NULL)
+		  {
+		    header = data->d_buf;
+		    Elf32_Word nbuckets = header->nbuckets;
+		    Elf32_Word symndx = header->symndx;
+		    GElf_Off buckets_at = (offs[i_gnu_hash] + sizeof *header
+					   + (gelf_getclass (mod->main.elf)
+					      * sizeof (Elf32_Word)
+					      * header->maskwords));
 
-		      GElf_Off hasharr_at = (buckets_at
-					     + nbuckets * sizeof (Elf32_Word));
-		      hasharr_at += (maxndx - symndx) * sizeof (Elf32_Word);
-		      do
-			{
-			  data = elf_getdata_rawchunk (mod->main.elf,
-						       hasharr_at,
-						       sizeof (Elf32_Word),
-						       ELF_T_WORD);
-			  if (data != NULL
-			      && (*(const Elf32_Word *) data->d_buf & 1u))
-			    {
-			      mod->syments = maxndx + 1;
-			      break;
-			    }
-			  ++maxndx;
-			  hasharr_at += sizeof (Elf32_Word);
-			} while (data != NULL);
-		    }
-		}
-	    }
-	  if (offs[i_strtab] > offs[i_symtab] && mod->syments == 0)
-	    mod->syments = ((offs[i_strtab] - offs[i_symtab])
-			    / gelf_fsize (mod->main.elf,
-					  ELF_T_SYM, 1, EV_CURRENT));
+		    // elf_getdata_rawchunk takes a size_t, make sure it
+		    // doesn't overflow.
+#if SIZE_MAX <= UINT32_MAX
+		    if (nbuckets > SIZE_MAX / sizeof (Elf32_Word))
+		      data = NULL;
+		    else
+#endif
+		      data
+			 = elf_getdata_rawchunk (mod->main.elf, buckets_at,
+						 nbuckets * sizeof (Elf32_Word),
+						 ELF_T_WORD);
+		    if (data != NULL && symndx < nbuckets)
+		      {
+			const Elf32_Word *const buckets = data->d_buf;
+			Elf32_Word maxndx = symndx;
+			for (Elf32_Word bucket = 0; bucket < nbuckets; ++bucket)
+			  if (buckets[bucket] > maxndx)
+			    maxndx = buckets[bucket];
 
-	  if (mod->syments > 0)
+			GElf_Off hasharr_at = (buckets_at
+					       + nbuckets * sizeof (Elf32_Word));
+			hasharr_at += (maxndx - symndx) * sizeof (Elf32_Word);
+			do
+			  {
+			    data = elf_getdata_rawchunk (mod->main.elf,
+							 hasharr_at,
+							 sizeof (Elf32_Word),
+							 ELF_T_WORD);
+			    if (data != NULL
+				&& (*(const Elf32_Word *) data->d_buf & 1u))
+			      {
+				mod->syments = maxndx + 1;
+				break;
+			      }
+			    ++maxndx;
+			    hasharr_at += sizeof (Elf32_Word);
+			  } while (data != NULL);
+		      }
+		  }
+	      }
+	    if (offs[i_strtab] > offs[i_symtab] && mod->syments == 0)
+	      mod->syments = ((offs[i_strtab] - offs[i_symtab])
+			      / gelf_fsize (mod->main.elf,
+					    ELF_T_SYM, 1, EV_CURRENT));
+
+	    if (mod->syments > 0)
+	      {
+		mod->symdata = elf_getdata_rawchunk (mod->main.elf,
+						     offs[i_symtab],
+						     gelf_fsize (mod->main.elf,
+								 ELF_T_SYM,
+								 mod->syments,
+								 EV_CURRENT),
+						     ELF_T_SYM);
+		if (mod->symdata != NULL)
+		  {
+		    mod->symstrdata = elf_getdata_rawchunk (mod->main.elf,
+							    offs[i_strtab],
+							    strsz,
+							    ELF_T_BYTE);
+		    if (mod->symstrdata == NULL)
+		      mod->symdata = NULL;
+		  }
+		if (mod->symdata == NULL)
+		  mod->symerr = DWFL_E (LIBELF, elf_errno ());
+		else
+		  {
+		    mod->symfile = &mod->main;
+		    mod->symerr = DWFL_E_NOERROR;
+		  }
+	      }
+	  }
+
+	  /* First try unadjusted, like ELF files from disk, vdso.
+	     Then try for already adjusted dynamic section, like ELF
+	     from remote memory.  */
+	  translate_offs (0);
+	  if (mod->symfile == NULL)
+	    translate_offs (mod->main_bias);
+
+	  return;
+	}
+    }
+}
+
+
+#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->symdata = elf_getdata_rawchunk (mod->main.elf,
-						   offs[i_symtab],
-						   gelf_fsize (mod->main.elf,
-							       ELF_T_SYM,
-							       mod->syments,
-							       EV_CURRENT),
-						   ELF_T_SYM);
-	      if (mod->symdata != NULL)
+	      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))
 		{
-		  mod->symstrdata = elf_getdata_rawchunk (mod->main.elf,
-							  offs[i_strtab],
-							  strsz,
-							  ELF_T_BYTE);
-		  if (mod->symstrdata == NULL)
-		    mod->symdata = NULL;
+		  elf_end (mod->aux_sym.elf);
+		  mod->aux_sym.elf = NULL;
+		  return;
 		}
-	      if (mod->symdata == NULL)
-		mod->symerr = DWFL_E (LIBELF, elf_errno ());
-	      else
+
+	      /* 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)
 		{
-		  mod->symfile = &mod->main;
-		  mod->symerr = DWFL_E_NOERROR;
+		  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;
 
@@ -845,11 +1012,10 @@
   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);
@@ -889,6 +1055,9 @@
 	  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.  */
@@ -896,6 +1065,13 @@
 	      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;
@@ -908,14 +1084,14 @@
     {
     elferr:
       mod->symerr = DWFL_E (LIBELF, elf_errno ());
-      return;
+      goto aux_cleanup; /* This cleans up some more and tries find_dynsym.  */
     }
 
   /* Cache the data; MOD->syments and MOD->first_global were set above.  */
 
   mod->symstrdata = elf_getdata (elf_getscn (mod->symfile->elf, strshndx),
 				 NULL);
-  if (mod->symstrdata == NULL)
+  if (mod->symstrdata == NULL || mod->symstrdata->d_buf == NULL)
     goto elferr;
 
   if (xndxscn == NULL)
@@ -923,13 +1099,63 @@
   else
     {
       mod->symxndxdata = elf_getdata (xndxscn, NULL);
-      if (mod->symxndxdata == NULL)
+      if (mod->symxndxdata == NULL || mod->symxndxdata->d_buf == NULL)
 	goto elferr;
     }
 
   mod->symdata = elf_getdata (symscn, NULL);
-  if (mod->symdata == NULL)
+  if (mod->symdata == NULL || mod->symdata->d_buf == NULL)
     goto elferr;
+
+  // Sanity check number of symbols.
+  GElf_Shdr shdr_mem, *shdr = gelf_getshdr (symscn, &shdr_mem);
+  if (mod->syments > mod->symdata->d_size / shdr->sh_entsize
+      || (size_t) mod->first_global > mod->syments)
+    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;
+	  /* We thought we had something through shdrs, but it failed...
+	     Last ditch, look for dynamic symbols without section headers.  */
+	  find_dynsym (mod);
+	  return;
+	}
+
+      mod->aux_symstrdata = elf_getdata (elf_getscn (mod->aux_sym.elf,
+						     aux_strshndx),
+					 NULL);
+      if (mod->aux_symstrdata == NULL || mod->aux_symstrdata->d_buf == 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
+	      || mod->aux_symxndxdata->d_buf == NULL)
+	    goto aux_cleanup;
+	}
+
+      mod->aux_symdata = elf_getdata (aux_symscn, NULL);
+      if (mod->aux_symdata == NULL || mod->aux_symdata->d_buf == NULL)
+	goto aux_cleanup;
+
+      // Sanity check number of aux symbols.
+      shdr = gelf_getshdr (aux_symscn, &shdr_mem);
+      if (mod->aux_syments > mod->aux_symdata->d_size / shdr->sh_entsize
+	  || (size_t) mod->aux_first_global > mod->aux_syments)
+	goto aux_cleanup;
+    }
 }
 
 
@@ -1020,6 +1246,11 @@
     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:
@@ -1035,6 +1266,15 @@
     {
     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.  */
@@ -1085,9 +1325,34 @@
 
   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)
diff --git a/src/libdwfl/dwfl_module_getelf.c b/src/libdwfl/dwfl_module_getelf.c
index b4e4a2b..f20fb04 100644
--- a/src/libdwfl/dwfl_module_getelf.c
+++ b/src/libdwfl/dwfl_module_getelf.c
@@ -1,51 +1,30 @@
 /* Find debugging and symbol information for a module in libdwfl.
    Copyright (C) 2009-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_module_getsrc.c b/src/libdwfl/dwfl_module_getsrc.c
index be03055..f6d8839 100644
--- a/src/libdwfl/dwfl_module_getsrc.c
+++ b/src/libdwfl/dwfl_module_getsrc.c
@@ -1,51 +1,30 @@
 /* Find source location for PC address in module.
-   Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2008, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libdw/libdwP.h"
@@ -63,33 +42,36 @@
     error = __libdwfl_cu_getsrclines (cu);
   if (likely (error == DWFL_E_NOERROR))
     {
-      /* Now we look at the module-relative address.  */
-      addr -= bias;
-
-      /* The lines are sorted by address, so we can use binary search.  */
-      size_t l = 0, u = cu->die.cu->lines->nlines;
-      while (l < u)
+      Dwarf_Lines *lines = cu->die.cu->lines;
+      size_t nlines = lines->nlines;
+      if (nlines > 0)
 	{
-	  size_t idx = (l + u) / 2;
-	  if (addr < cu->die.cu->lines->info[idx].addr)
-	    u = idx;
-	  else if (addr > cu->die.cu->lines->info[idx].addr)
-	    l = idx + 1;
-	  else
-	    return &cu->lines->idx[idx];
+	  /* This is guaranteed for us by libdw read_srclines.  */
+	  assert(lines->info[nlines - 1].end_sequence);
+
+	  /* Now we look at the module-relative address.  */
+	  addr -= bias;
+
+	  /* The lines are sorted by address, so we can use binary search.  */
+	  size_t l = 0, u = nlines - 1;
+	  while (l < u)
+	    {
+	      size_t idx = u - (u - l) / 2;
+	      Dwarf_Line *line = &lines->info[idx];
+	      if (addr < line->addr)
+		u = idx - 1;
+	      else
+		l = idx;
+	    }
+
+	  /* The last line which is less than or equal to addr is what we want,
+	     except with an end_sequence which can only be strictly equal.  */
+	  Dwarf_Line *line = &lines->info[l];
+	  if (line->addr == addr
+	      || (! line->end_sequence && line->addr < addr))
+	    return &cu->lines->idx[l];
 	}
 
-      if (cu->die.cu->lines->nlines > 0)
-	assert (cu->die.cu->lines->info
-		[cu->die.cu->lines->nlines - 1].end_sequence);
-
-      /* If none were equal, the closest one below is what we want.
-	 We never want the last one, because it's the end-sequence
-	 marker with an address at the high bound of the CU's code.  */
-      if (u > 0 && u < cu->die.cu->lines->nlines
-	  && addr > cu->die.cu->lines->info[u - 1].addr)
-	return &cu->lines->idx[u - 1];
-
       error = DWFL_E_ADDR_OUTOFRANGE;
     }
 
diff --git a/src/libdwfl/dwfl_module_getsrc_file.c b/src/libdwfl/dwfl_module_getsrc_file.c
index 9d0c786..20aa8a5 100644
--- a/src/libdwfl/dwfl_module_getsrc_file.c
+++ b/src/libdwfl/dwfl_module_getsrc_file.c
@@ -1,51 +1,30 @@
 /* Find matching source locations in a module.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libdw/libdwP.h"
diff --git a/src/libdwfl/dwfl_module_getsym.c b/src/libdwfl/dwfl_module_getsym.c
index 6bc063b..42d2b67 100644
--- a/src/libdwfl/dwfl_module_getsym.c
+++ b/src/libdwfl/dwfl_module_getsym.c
@@ -1,57 +1,38 @@
 /* Find debugging and symbol information for a module in libdwfl.
-   Copyright (C) 2006-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2006-2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
 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;
@@ -63,8 +44,56 @@
 	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);
@@ -81,11 +110,37 @@
 	  || (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;
@@ -103,9 +158,9 @@
 	  /* 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);
@@ -114,15 +169,48 @@
 	}
       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)
diff --git a/src/libdwfl/dwfl_module_info.c b/src/libdwfl/dwfl_module_info.c
index bfde6fc..df16be4 100644
--- a/src/libdwfl/dwfl_module_info.c
+++ b/src/libdwfl/dwfl_module_info.c
@@ -1,51 +1,30 @@
 /* Return information about a module.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
@@ -70,7 +49,7 @@
 	       : 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;
diff --git a/src/libdwfl/dwfl_module_nextcu.c b/src/libdwfl/dwfl_module_nextcu.c
index 1b37d29..6f81f4c 100644
--- a/src/libdwfl/dwfl_module_nextcu.c
+++ b/src/libdwfl/dwfl_module_nextcu.c
@@ -1,51 +1,30 @@
 /* Iterate through DWARF compilation units in a module.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_module_register_names.c b/src/libdwfl/dwfl_module_register_names.c
index 79a874a..2da4b53 100644
--- a/src/libdwfl/dwfl_module_register_names.c
+++ b/src/libdwfl/dwfl_module_register_names.c
@@ -1,51 +1,30 @@
 /* Enumerate DWARF register numbers and their names.
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_module_report_build_id.c b/src/libdwfl/dwfl_module_report_build_id.c
index 9a1b14f..b41512b 100644
--- a/src/libdwfl/dwfl_module_report_build_id.c
+++ b/src/libdwfl/dwfl_module_report_build_id.c
@@ -1,51 +1,30 @@
 /* Report build ID information for a module.
    Copyright (C) 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_module_return_value_location.c b/src/libdwfl/dwfl_module_return_value_location.c
index 3d5154e..ad83cbf 100644
--- a/src/libdwfl/dwfl_module_return_value_location.c
+++ b/src/libdwfl/dwfl_module_return_value_location.c
@@ -1,51 +1,30 @@
 /* Return location expression to find return value given a function type DIE.
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_nextcu.c b/src/libdwfl/dwfl_nextcu.c
index 90862d2..9ea8388 100644
--- a/src/libdwfl/dwfl_nextcu.c
+++ b/src/libdwfl/dwfl_nextcu.c
@@ -1,51 +1,30 @@
 /* Iterate through DWARF compilation units across all modules.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_onesrcline.c b/src/libdwfl/dwfl_onesrcline.c
index 558d240..4c20d65 100644
--- a/src/libdwfl/dwfl_onesrcline.c
+++ b/src/libdwfl/dwfl_onesrcline.c
@@ -1,51 +1,30 @@
 /* Return one of the sources lines of a CU.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_report_elf.c b/src/libdwfl/dwfl_report_elf.c
index 4c4132b..3a4ae2e 100644
--- a/src/libdwfl/dwfl_report_elf.c
+++ b/src/libdwfl/dwfl_report_elf.c
@@ -1,51 +1,30 @@
 /* Report a module to libdwfl based on ELF program headers.
    Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -59,17 +38,20 @@
    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;
@@ -187,6 +169,7 @@
     case ET_CORE:
       /* An assigned base address is meaningless for these.  */
       base = 0;
+      add_p_vaddr = true;
 
     case ET_DYN:
     default:;
@@ -202,13 +185,19 @@
 	    {
 	      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;)
 	{
@@ -218,7 +207,7 @@
 	  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;
 	    }
 	}
@@ -226,11 +215,37 @@
       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)
     {
@@ -255,7 +270,7 @@
 	  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
 	{
@@ -269,8 +284,8 @@
 }
 
 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)
@@ -293,7 +308,7 @@
     }
 
   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);
@@ -304,3 +319,20 @@
   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
diff --git a/src/libdwfl/dwfl_segment_report_module.c b/src/libdwfl/dwfl_segment_report_module.c
index 012a0fd..898457f 100644
--- a/src/libdwfl/dwfl_segment_report_module.c
+++ b/src/libdwfl/dwfl_segment_report_module.c
@@ -1,56 +1,36 @@
 /* Sniff out modules from ELF headers visible in memory segments.
-   Copyright (C) 2008-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2008-2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <config.h>
 #include "../libelf/libelfP.h"	/* For NOTE_ALIGN.  */
 #undef	_
 #include "libdwflP.h"
+#include "common.h"
 
 #include <elf.h>
 #include <gelf.h>
@@ -58,6 +38,8 @@
 #include <sys/param.h>
 #include <alloca.h>
 #include <endian.h>
+#include <unistd.h>
+#include <fcntl.h>
 
 
 /* A good size for the initial read from memory, if it's not too costly.
@@ -99,12 +81,165 @@
   return ndx;
 }
 
+/* Return whether there is SZ bytes available at PTR till END.  */
+
+static bool
+buf_has_data (const void *ptr, const void *end, size_t sz)
+{
+  return ptr < end && (size_t) (end - ptr) >= sz;
+}
+
+/* Read SZ bytes into *RETP from *PTRP (limited by END) in format EI_DATA.
+   Function comes from src/readelf.c .  */
+
+static bool
+buf_read_ulong (unsigned char ei_data, size_t sz,
+		const void **ptrp, const void *end, uint64_t *retp)
+{
+  if (! buf_has_data (*ptrp, end, sz))
+    return false;
+
+  union
+  {
+    uint64_t u64;
+    uint32_t u32;
+  } u;
+
+  memcpy (&u, *ptrp, sz);
+  (*ptrp) += sz;
+
+  if (retp == NULL)
+    return true;
+
+  if (MY_ELFDATA != ei_data)
+    {
+      if (sz == 4)
+	CONVERT (u.u32);
+      else
+	CONVERT (u.u64);
+    }
+  if (sz == 4)
+    *retp = u.u32;
+  else
+    *retp = u.u64;
+  return true;
+}
+
+/* Try to find matching entry for module from address MODULE_START to
+   MODULE_END in NT_FILE note located at NOTE_FILE of NOTE_FILE_SIZE
+   bytes in format EI_CLASS and EI_DATA.  */
+
+static const char *
+handle_file_note (GElf_Addr module_start, GElf_Addr module_end,
+		  unsigned char ei_class, unsigned char ei_data,
+		  const void *note_file, size_t note_file_size)
+{
+  if (note_file == NULL)
+    return NULL;
+
+  size_t sz;
+  switch (ei_class)
+    {
+    case ELFCLASS32:
+      sz = 4;
+      break;
+    case ELFCLASS64:
+      sz = 8;
+      break;
+    default:
+      return NULL;
+    }
+
+  const void *ptr = note_file;
+  const void *end = note_file + note_file_size;
+  uint64_t count;
+  if (! buf_read_ulong (ei_data, sz, &ptr, end, &count))
+    return NULL;
+  if (! buf_read_ulong (ei_data, sz, &ptr, end, NULL)) // page_size
+    return NULL;
+
+  uint64_t maxcount = (size_t) (end - ptr) / (3 * sz);
+  if (count > maxcount)
+    return NULL;
+
+  /* Where file names are stored.  */
+  const char *fptr = ptr + 3 * count * sz;
+
+  ssize_t firstix = -1;
+  ssize_t lastix = -1;
+  for (size_t mix = 0; mix < count; mix++)
+    {
+      uint64_t mstart, mend, moffset;
+      if (! buf_read_ulong (ei_data, sz, &ptr, fptr, &mstart)
+	  || ! buf_read_ulong (ei_data, sz, &ptr, fptr, &mend)
+	  || ! buf_read_ulong (ei_data, sz, &ptr, fptr, &moffset))
+	return NULL;
+      if (mstart == module_start && moffset == 0)
+	firstix = lastix = mix;
+      if (firstix != -1 && mstart < module_end)
+	lastix = mix;
+      if (mend >= module_end)
+	break;
+    }
+  if (firstix == -1)
+    return NULL;
+
+  const char *retval = NULL;
+  for (ssize_t mix = 0; mix <= lastix; mix++)
+    {
+      const char *fnext = memchr (fptr, 0, (const char *) end - fptr);
+      if (fnext == NULL)
+	return NULL;
+      if (mix == firstix)
+	retval = fptr;
+      if (firstix < mix && mix <= lastix && strcmp (fptr, retval) != 0)
+	return NULL;
+      fptr = fnext + 1;
+    }
+  return retval;
+}
+
+/* Return true iff we are certain ELF cannot match BUILD_ID of
+   BUILD_ID_LEN bytes.  Pass DISK_FILE_HAS_BUILD_ID as false if it is
+   certain ELF does not contain build-id (it is only a performance hit
+   to pass it always as true).  */
+
+static bool
+invalid_elf (Elf *elf, bool disk_file_has_build_id,
+	     const void *build_id, size_t build_id_len)
+{
+  if (! 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.   */
+      return true;
+    }
+  if (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) (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)
+	    return true;
+	}
+    }
+  return false;
+}
+
 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 void *note_file, size_t note_file_size,
+			    const struct r_debug_info *r_debug_info)
 {
   size_t segment = ndx;
 
@@ -140,10 +275,16 @@
 
   void *buffer = NULL;
   size_t buffer_available = INITIAL_READ;
+  Elf *elf = NULL;
+  int fd = -1;
 
   inline int finish (void)
   {
     release_buffer (&buffer, &buffer_available);
+    if (elf != NULL)
+      elf_end (elf);
+    if (fd != -1)
+      close (fd);
     return ndx;
   }
 
@@ -155,7 +296,11 @@
   inline bool read_portion (void **data, size_t *data_size,
 			    GElf_Addr vaddr, size_t filesz)
   {
-    if (vaddr - start + filesz > buffer_available)
+    if (vaddr - start + filesz > buffer_available
+	/* If we're in string mode, then don't consider the buffer we have
+	   sufficient unless it contains the terminator of the string.  */
+	|| (filesz == 0 && memchr (vaddr - start + buffer, '\0',
+				   buffer_available - (vaddr - start)) == NULL))
       {
 	*data = NULL;
 	*data_size = filesz;
@@ -176,6 +321,10 @@
   }
 
   /* Extract the information we need from the file header.  */
+  const unsigned char *e_ident;
+  unsigned char ei_class;
+  unsigned char ei_data;
+  uint16_t e_type;
   union
   {
     Elf32_Ehdr e32;
@@ -198,13 +347,16 @@
       .d_size = sizeof ehdr,
       .d_version = EV_CURRENT,
     };
-  switch (((const unsigned char *) buffer)[EI_CLASS])
+  e_ident = ((const unsigned char *) buffer);
+  ei_class = e_ident[EI_CLASS];
+  ei_data = e_ident[EI_DATA];
+  switch (ei_class)
     {
     case ELFCLASS32:
       xlatefrom.d_size = sizeof (Elf32_Ehdr);
-      if (elf32_xlatetom (&xlateto, &xlatefrom,
-			  ((const unsigned char *) buffer)[EI_DATA]) == NULL)
+      if (elf32_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
 	return finish ();
+      e_type = ehdr.e32.e_type;
       phoff = ehdr.e32.e_phoff;
       phnum = ehdr.e32.e_phnum;
       phentsize = ehdr.e32.e_phentsize;
@@ -215,9 +367,9 @@
 
     case ELFCLASS64:
       xlatefrom.d_size = sizeof (Elf64_Ehdr);
-      if (elf64_xlatetom (&xlateto, &xlatefrom,
-			  ((const unsigned char *) buffer)[EI_DATA]) == NULL)
+      if (elf64_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
 	return finish ();
+      e_type = ehdr.e64.e_type;
       phoff = ehdr.e64.e_phoff;
       phnum = ehdr.e64.e_phnum;
       phentsize = ehdr.e64.e_phentsize;
@@ -296,7 +448,7 @@
     assert (sizeof (Elf32_Nhdr) == sizeof (Elf64_Nhdr));
 
     void *notes;
-    if (ehdr.e32.e_ident[EI_DATA] == MY_ELFDATA)
+    if (ei_data == MY_ELFDATA)
       notes = data;
     else
       {
@@ -412,10 +564,9 @@
 	break;
       }
   }
-  if (ehdr.e32.e_ident[EI_CLASS] == ELFCLASS32)
+  if (ei_class == ELFCLASS32)
     {
-      if (elf32_xlatetom (&xlateto, &xlatefrom,
-			  ehdr.e32.e_ident[EI_DATA]) == NULL)
+      if (elf32_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
 	found_bias = false;	/* Trigger error check.  */
       else
 	for (uint_fast16_t i = 0; i < phnum; ++i)
@@ -426,8 +577,7 @@
     }
   else
     {
-      if (elf64_xlatetom (&xlateto, &xlatefrom,
-			  ehdr.e32.e_ident[EI_DATA]) == NULL)
+      if (elf64_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
 	found_bias = false;	/* Trigger error check.  */
       else
 	for (uint_fast16_t i = 0; i < phnum; ++i)
@@ -442,7 +592,10 @@
   /* 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;
@@ -450,6 +603,95 @@
 
   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)
+	  {
+	    if (module->elf != NULL
+	        && invalid_elf (module->elf, module->disk_file_has_build_id,
+				build_id, build_id_len))
+	      {
+		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 ();
+	}
+    }
+
+  const char *file_note_name = handle_file_note (module_start, module_end,
+						 ei_class, ei_data,
+						 note_file, note_file_size);
+  if (file_note_name)
+    {
+      name = file_note_name;
+      name_is_final = true;
+      bool invalid = false;
+      fd = open64 (name, O_RDONLY);
+      if (fd >= 0)
+	{
+	  Dwfl_Error error = __libdw_open_file (&fd, &elf, true, false);
+	  if (error == DWFL_E_NOERROR)
+	    invalid = invalid_elf (elf, true /* disk_file_has_build_id */,
+				   build_id, build_id_len);
+	}
+      if (invalid)
+	{
+	  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);
@@ -491,7 +733,7 @@
     return soname_stroff != 0 && dynstr_vaddr != 0 && dynstrsz != 0;
   }
 
-  const size_t dyn_entsize = (ehdr.e32.e_ident[EI_CLASS] == ELFCLASS32
+  const size_t dyn_entsize = (ei_class == ELFCLASS32
 			      ? sizeof (Elf32_Dyn) : sizeof (Elf64_Dyn));
   void *dyn_data = NULL;
   size_t dyn_data_size = 0;
@@ -510,18 +752,16 @@
       xlateto.d_buf = &dyn;
       xlateto.d_size = sizeof dyn;
 
-      if (ehdr.e32.e_ident[EI_CLASS] == ELFCLASS32)
+      if (ei_class == ELFCLASS32)
 	{
-	  if (elf32_xlatetom (&xlateto, &xlatefrom,
-			      ehdr.e32.e_ident[EI_DATA]) != NULL)
+	  if (elf32_xlatetom (&xlateto, &xlatefrom, ei_data) != NULL)
 	    for (size_t i = 0; i < dyn_filesz / sizeof dyn.d32[0]; ++i)
 	      if (consider_dyn (dyn.d32[i].d_tag, dyn.d32[i].d_un.d_val))
 		break;
 	}
       else
 	{
-	  if (elf64_xlatetom (&xlateto, &xlatefrom,
-			      ehdr.e32.e_ident[EI_DATA]) != NULL)
+	  if (elf64_xlatetom (&xlateto, &xlatefrom, ei_data) != NULL)
 	    for (size_t i = 0; i < dyn_filesz / sizeof dyn.d64[0]; ++i)
 	      if (consider_dyn (dyn.d64[i].d_tag, dyn.d64[i].d_un.d_val))
 		break;
@@ -531,11 +771,11 @@
 
   /* We'll use the name passed in or a stupid default if not DT_SONAME.  */
   if (name == NULL)
-    name = ehdr.e32.e_type == ET_EXEC ? "[exe]" : execlike ? "[pie]" : "[dso]";
+    name = e_type == ET_EXEC ? "[exe]" : execlike ? "[pie]" : "[dso]";
 
   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.
 
@@ -569,6 +809,12 @@
 
   Dwfl_Module *mod = INTUSE(dwfl_report_module) (dwfl, name,
 						 module_start, module_end);
+
+  // !execlike && ET_EXEC is PIE.
+  // execlike && !ET_EXEC is a static executable.
+  if (mod != NULL && (execlike || ehdr.e32.e_type == ET_EXEC))
+    mod->is_executable = true;
+
   if (likely (mod != NULL) && build_id != NULL
       && unlikely (INTUSE(dwfl_module_report_build_id) (mod,
 							build_id,
@@ -600,10 +846,10 @@
 			       : dynstr_vaddr + dynstrsz - start);
   const GElf_Off whole = MAX (file_trimmed_end, shdrs_end);
 
-  Elf *elf = NULL;
-  if ((*read_eagerly) (MODCB_ARGS (mod), &buffer, &buffer_available,
-		       cost, worthwhile, whole, contiguous,
-		       read_eagerly_arg, &elf)
+  if (elf == NULL
+      && (*read_eagerly) (MODCB_ARGS (mod), &buffer, &buffer_available,
+			  cost, worthwhile, whole, contiguous,
+			  read_eagerly_arg, &elf)
       && elf == NULL)
     {
       /* The caller wants to read the whole file in right now, but hasn't
@@ -633,7 +879,7 @@
 	      final_read (offset, vaddr + bias, filesz);
 	  }
 
-	  if (ehdr.e32.e_ident[EI_CLASS] == ELFCLASS32)
+	  if (ei_class == ELFCLASS32)
 	    for (uint_fast16_t i = 0; i < phnum; ++i)
 	      read_phdr (phdrs.p32[i].p_type, phdrs.p32[i].p_vaddr,
 			 phdrs.p32[i].p_offset, phdrs.p32[i].p_filesz);
@@ -665,8 +911,11 @@
     {
       /* Install the file in the module.  */
       mod->main.elf = elf;
+      elf = NULL;
+      fd = -1;
       mod->main.vaddr = module_start - bias;
       mod->main.address_sync = module_address_sync;
+      mod->main_bias = bias;
     }
 
   return finish ();
diff --git a/src/libdwfl/dwfl_validate_address.c b/src/libdwfl/dwfl_validate_address.c
index 8107376..7334c3e 100644
--- a/src/libdwfl/dwfl_validate_address.c
+++ b/src/libdwfl/dwfl_validate_address.c
@@ -1,51 +1,30 @@
 /* Validate an address and the relocatability of an offset from it.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/dwfl_version.c b/src/libdwfl/dwfl_version.c
index 9c7074c..9673a53 100644
--- a/src/libdwfl/dwfl_version.c
+++ b/src/libdwfl/dwfl_version.c
@@ -1,51 +1,30 @@
 /* Return implementation's version string suitable for printing.
    Copyright (C) 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
diff --git a/src/libdwfl/elf-from-memory.c b/src/libdwfl/elf-from-memory.c
index 0fb5f8a..b35fac7 100644
--- a/src/libdwfl/elf-from-memory.c
+++ b/src/libdwfl/elf-from-memory.c
@@ -1,51 +1,30 @@
 /* Reconstruct an ELF file by reading the segments out of remote memory.
-   Copyright (C) 2005-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2011, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <config.h>
 #include "../libelf/libelfP.h"
@@ -69,10 +48,14 @@
    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,
@@ -104,6 +87,7 @@
   if (memcmp (buffer, ELFMAG, SELFMAG) != 0)
     {
     bad_elf:
+      free (buffer);
       __libdwfl_seterrno (DWFL_E_BADELF);
       return NULL;
     }
@@ -212,25 +196,37 @@
   /* 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_Off segment_end = ((offset + filesz + align - 1) & -align);
+	  /* Sanity check the segment load aligns with the pagesize.  */
+	  if (((vaddr - offset) & (pagesize - 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:
@@ -239,8 +235,9 @@
 	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))
+	    goto bad_elf;
       break;
 
     case ELFCLASS64:
@@ -249,8 +246,9 @@
 	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))
+	    goto bad_elf;
       break;
 
     default:
@@ -260,9 +258,11 @@
 
   /* 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)
@@ -280,15 +280,17 @@
 
   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;
 	}
@@ -297,7 +299,7 @@
       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
@@ -322,9 +324,9 @@
 
     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
diff --git a/src/libdwfl/find-debuginfo.c b/src/libdwfl/find-debuginfo.c
index 12cfe63..3f5314a 100644
--- a/src/libdwfl/find-debuginfo.c
+++ b/src/libdwfl/find-debuginfo.c
@@ -1,51 +1,30 @@
 /* Standard find_debuginfo callback for libdwfl.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <stdio.h>
@@ -105,6 +84,45 @@
 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)
     {
@@ -145,7 +163,9 @@
   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;
@@ -163,13 +183,8 @@
      indicated by the debug directory path setting.  */
 
   const Dwfl_Callbacks *const cb = mod->dwfl->callbacks;
-#if defined(__BIONIC__) || defined(__APPLE__)
-  char *path = strdup ((cb->debuginfo_path ? *cb->debuginfo_path : NULL)
-			?: DEFAULT_DEBUGINFO_PATH);
-#else
   char *path = strdupa ((cb->debuginfo_path ? *cb->debuginfo_path : NULL)
 			?: DEFAULT_DEBUGINFO_PATH);
-#endif
 
   /* A leading - or + in the whole path sets whether to check file CRCs.  */
   bool defcheck = true;
@@ -189,14 +204,8 @@
       main_stat.st_ino = 0;
     }
 
-#if defined(__BIONIC__) || defined(__APPLE__)
-  char *file_dirname = (file_basename == file_name ? NULL
-			: strndup (file_name, file_basename - 1 - file_name));
-#else
   char *file_dirname = (file_basename == file_name ? NULL
 			: strndupa (file_name, file_basename - 1 - file_name));
-#endif
-
   char *p;
   while ((p = strsep (&path, ":")) != NULL)
     {
@@ -206,53 +215,74 @@
 	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:
-#if defined(__BIONIC__) || defined(__APPLE__)
-            free(path);
-            free(file_dirname);
-#endif
 	    return -1;
 	  }
       if (validate (mod, fd, check, debuglink_crc))
 	{
 	  *debuginfo_file_name = fname;
-#if defined(__BIONIC__) || defined(__APPLE__)
-          free(path);
-          free(file_dirname);
-#endif
 	  return fd;
 	}
       free (fname);
@@ -261,10 +291,6 @@
 
   /* No dice.  */
   errno = 0;
-#if defined(__BIONIC__) || defined(__APPLE__)
-  free(path);
-  free(file_dirname);
-#endif
   return -1;
 }
 
@@ -284,11 +310,21 @@
   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;
     }
 
diff --git a/src/libdwfl/frame_unwind.c b/src/libdwfl/frame_unwind.c
new file mode 100644
index 0000000..16cebd0
--- /dev/null
+++ b/src/libdwfl/frame_unwind.c
@@ -0,0 +1,725 @@
+/* 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, &regno))
+    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, &regno))
+    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, &reg_ops,
+				&reg_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, &regval))
+		continue;
+	    }
+	  else
+	    {
+	      __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+	      continue;
+	    }
+	}
+      else if (! expr_eval (state, frame, reg_ops, reg_nops, &regval, 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;
+}
diff --git a/src/libdwfl/gzip.c b/src/libdwfl/gzip.c
index 5604d49..b7dde5d 100644
--- a/src/libdwfl/gzip.c
+++ b/src/libdwfl/gzip.c
@@ -1,51 +1,30 @@
 /* Decompression support for libdwfl: zlib (gzip) and/or bzlib (bzip2).
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "system.h"
diff --git a/src/libdwfl/image-header.c b/src/libdwfl/image-header.c
index c36d10c..a4f6799 100644
--- a/src/libdwfl/image-header.c
+++ b/src/libdwfl/image-header.c
@@ -1,51 +1,30 @@
 /* Linux kernel image support for libdwfl.
    Copyright (C) 2009-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "system.h"
diff --git a/src/libdwfl/libdwfl.h b/src/libdwfl/libdwfl.h
index 4ea2796..2bb4f45 100644
--- a/src/libdwfl/libdwfl.h
+++ b/src/libdwfl/libdwfl.h
@@ -1,51 +1,30 @@
 /* Interfaces for libdwfl.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBDWFL_H
 #define _LIBDWFL_H	1
@@ -62,6 +41,14 @@
 /* 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
 {
@@ -158,14 +145,21 @@
 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.
@@ -363,15 +357,17 @@
    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
@@ -424,28 +420,99 @@
    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);
@@ -578,6 +645,166 @@
 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
diff --git a/src/libdwfl/libdwflP.h b/src/libdwfl/libdwflP.h
index bca82d2..12ee116 100644
--- a/src/libdwfl/libdwflP.h
+++ b/src/libdwfl/libdwflP.h
@@ -1,51 +1,30 @@
 /* Internal definitions for libdwfl.
-   Copyright (C) 2005-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBDWFLP_H
 #define _LIBDWFLP_H	1
@@ -56,12 +35,16 @@
 #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)
@@ -95,7 +78,21 @@
   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;
@@ -113,6 +110,9 @@
 
   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.  */
@@ -129,6 +129,8 @@
   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
@@ -161,7 +163,7 @@
   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.  */
@@ -171,12 +173,20 @@
 
   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.  */
@@ -201,9 +211,75 @@
 
   int segment;			/* Index of first segment table entry.  */
   bool gc;			/* Mark/sweep flag.  */
+  bool is_executable;		/* Use Dwfl::executable_for_core?  */
 };
 
+/* 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
@@ -274,20 +350,40 @@
 	  + mod->debug.address_sync);
 }
 
-static inline GElf_Addr
-dwfl_adjusted_st_value (Dwfl_Module *mod, GElf_Addr addr)
+static inline Dwarf_Addr
+dwfl_adjusted_aux_sym_addr (Dwfl_Module *mod, Dwarf_Addr addr)
 {
-  if (mod->symfile == &mod->main)
-    return dwfl_adjusted_address (mod, addr);
-  return dwfl_adjusted_dwarf_addr (mod, 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_deadjust_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);
+  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, Elf *symelf, GElf_Addr addr)
+{
+  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.
@@ -299,6 +395,56 @@
 };
 
 
+/* 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;
 
@@ -315,6 +461,12 @@
 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,
@@ -331,7 +483,6 @@
 					    GElf_Addr *value)
      internal_function;
 
-
 /* Ensure that MOD->ebl is set up.  */
 extern Dwfl_Error __libdwfl_module_getebl (Dwfl_Module *mod) internal_function;
 
@@ -354,6 +505,17 @@
 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.
@@ -362,19 +524,35 @@
   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.  */
@@ -385,6 +563,25 @@
 								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,
@@ -412,6 +609,11 @@
 				     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.  */
 
@@ -430,13 +632,37 @@
 				   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 void *note_file,
+				       size_t note_file_size,
+				       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,
@@ -450,10 +676,16 @@
    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.  */
@@ -464,16 +696,20 @@
 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)
@@ -489,6 +725,7 @@
 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)
@@ -499,6 +736,17 @@
 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
diff --git a/src/libdwfl/libdwfl_crc32.c b/src/libdwfl/libdwfl_crc32.c
index 0fa2378..b89d0d3 100644
--- a/src/libdwfl/libdwfl_crc32.c
+++ b/src/libdwfl/libdwfl_crc32.c
@@ -1,50 +1,29 @@
 /* Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdwfl/libdwfl_crc32_file.c b/src/libdwfl/libdwfl_crc32_file.c
index ca154be..6b6b7d3 100644
--- a/src/libdwfl/libdwfl_crc32_file.c
+++ b/src/libdwfl/libdwfl_crc32_file.c
@@ -1,50 +1,29 @@
 /* Copyright (C) 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libdwfl/lines.c b/src/libdwfl/lines.c
index ed4267f..721e29c 100644
--- a/src/libdwfl/lines.c
+++ b/src/libdwfl/lines.c
@@ -1,51 +1,30 @@
 /* Fetch source line info for CU.
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libdw/libdwP.h"
diff --git a/src/libdwfl/link_map.c b/src/libdwfl/link_map.c
index 05839b3..eaf43b5 100644
--- a/src/libdwfl/link_map.c
+++ b/src/libdwfl/link_map.c
@@ -1,57 +1,39 @@
 /* Report modules by examining dynamic linker data structures.
-   Copyright (C) 2008-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2008-2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <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.  */
@@ -59,18 +41,6 @@
 #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.  */
@@ -87,15 +57,22 @@
 
   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;
@@ -246,7 +223,10 @@
 }
 
 /* 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
@@ -258,7 +238,8 @@
 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);
@@ -340,7 +321,11 @@
       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];
@@ -373,42 +358,117 @@
       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)
 	{
-	  /* We have a module.  We can give it a better name from l_name.  */
-	  if (name != NULL && mod->name[0] == '[')
+	  /* 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)
+	{
+	  /* 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)
@@ -473,7 +533,11 @@
      address where &r_debug was written at runtime.  */
   GElf_Xword align = mod->dwfl->segment_align;
   GElf_Addr d_val_vaddr = 0;
-  for (uint_fast16_t i = 0; i < ehdr.e_phnum; ++i)
+  size_t phnum;
+  if (elf_getphdrnum (mod->main.elf, &phnum) != 0)
+    return 0;
+
+  for (size_t i = 0; i < phnum; ++i)
     {
       GElf_Phdr phdr_mem;
       GElf_Phdr *phdr = gelf_getphdr (mod->main.elf, i, &phdr_mem);
@@ -625,7 +689,8 @@
 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;
 
@@ -639,29 +704,32 @@
       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)
@@ -720,8 +788,73 @@
 	      .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;
+		}
+	      size_t e_phnum;
+	      if (elf_getphdrnum (elf, &e_phnum) != 0)
+		{
+		  elf_end (elf);
+		  close (fd);
+		  __libdwfl_seterrno (DWFL_E_LIBELF);
+		  return false;
+		}
+	      if (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
 	      {
@@ -883,6 +1016,6 @@
 
   /* 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)
diff --git a/src/libdwfl/linux-core-attach.c b/src/libdwfl/linux-core-attach.c
new file mode 100644
index 0000000..5a7b3b3
--- /dev/null
+++ b/src/libdwfl/linux-core-attach.c
@@ -0,0 +1,427 @@
+/* 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,
+			   &regs_offset, &nregloc, &reglocs, &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, &regs_offset,
+				     &nregloc, &reglocs, &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,
+			   &regs_offset, &nregloc, &reglocs, &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)
diff --git a/src/libdwfl/linux-kernel-modules.c b/src/libdwfl/linux-kernel-modules.c
index e239272..8f2dab3 100644
--- a/src/libdwfl/linux-kernel-modules.c
+++ b/src/libdwfl/linux-kernel-modules.c
@@ -1,58 +1,35 @@
 /* Standard libdwfl callbacks for debugging the running Linux kernel.
-   Copyright (C) 2005-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2011, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 /* We include this before config.h because it can't handle _FILE_OFFSET_BITS.
    Everything we need here is fine if its declarations just come first.  */
 
-/* TODO ANDROID - defined in AndroidConfig.h. */
-#undef _FILE_OFFSET_BITS
-
+#undef _FILE_OFFSET_BITS  // Undo the damage caused by AndroidConfig.h.
 #include <fts.h>
 
 #include <config.h>
@@ -112,23 +89,22 @@
 
   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;
 	}
     }
 
@@ -240,8 +216,14 @@
 
       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
@@ -249,12 +231,12 @@
 	    mod->e_type = ET_DYN;
 	}
 
+      free (fname);
+
       if (!report || result < 0)
 	close (fd);
     }
 
-  free (fname);
-
   return result;
 }
 
@@ -269,9 +251,10 @@
     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);
@@ -320,6 +303,9 @@
 #if USE_BZLIB
   TRY (".ko.bz2");
 #endif
+#if USE_LZMA
+  TRY (".ko.xz");
+#endif
 
   return 0;
 
diff --git a/src/libdwfl/linux-pid-attach.c b/src/libdwfl/linux-pid-attach.c
new file mode 100644
index 0000000..ae71702
--- /dev/null
+++ b/src/libdwfl/linux-pid-attach.c
@@ -0,0 +1,475 @@
+/* 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 __ */
+
diff --git a/src/libdwfl/linux-proc-maps.c b/src/libdwfl/linux-proc-maps.c
index 8504a5f..d085834 100644
--- a/src/libdwfl/linux-proc-maps.c
+++ b/src/libdwfl/linux-proc-maps.c
@@ -1,55 +1,35 @@
 /* Standard libdwfl callbacks for debugging a live Linux process.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <inttypes.h>
 #include <sys/types.h>
+#include <sys/stat.h>
 #include <errno.h>
 #include <stdio.h>
 #include <stdio_ext.h>
@@ -60,14 +40,53 @@
 #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)
@@ -81,61 +100,79 @@
   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;
-	      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;
-	      break;
-	    default:
-	      abort ();
-	      break;
-	    }
+	  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 AT_PAGESZ:
+	      segment_align32 = a32->a_un.a_val;
+	      break;
+	  }
+	}
+      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
@@ -189,7 +226,6 @@
 	    {
 	    bad_report:
 	      free (line);
-	      fclose (f);
 	      return -1;
 	    }
 
@@ -201,7 +237,7 @@
 	}
 
       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;
 
@@ -209,7 +245,8 @@
 	  && 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
@@ -288,6 +325,7 @@
 }
 
 extern Elf *elf_from_remote_memory (GElf_Addr ehdr_vma,
+				    GElf_Xword pagesize,
 				    GElf_Addr *loadbasep,
 				    ssize_t (*read_memory) (void *arg,
 							    void *data,
@@ -305,44 +343,80 @@
 			  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)
 	{
-	  *file_name = strdup (module_name);
-	  if (*file_name == NULL)
-	    {
-	      close (fd);
-	      return ENOMEM;
-	    }
+	  if (strcmp (strrchr (module_name, ' ') ?: "", " (deleted)") == 0)
+	    pid = INTUSE(dwfl_pid) (mod->dwfl);
+	  else
+	    return -1;
 	}
-      return fd;
+
+      if (pid == -1)
+	{
+	  int fd = open64 (module_name, O_RDONLY);
+	  if (fd >= 0)
+	    {
+	      *file_name = strdup (module_name);
+	      if (*file_name == NULL)
+		{
+		  close (fd);
+		  return ENOMEM;
+		}
+	    }
+	  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)
diff --git a/src/libdwfl/offline.c b/src/libdwfl/offline.c
index 34aa9f8..982ceab 100644
--- a/src/libdwfl/offline.c
+++ b/src/libdwfl/offline.c
@@ -1,51 +1,30 @@
 /* Recover relocatibility for addresses computed from debug information.
-   Copyright (C) 2005, 2006, 2007, 2008, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2009, 2012 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -69,6 +48,7 @@
   assert (mod->e_type == ET_REL);
   assert (shdr->sh_addr == 0);
   assert (shdr->sh_flags & SHF_ALLOC);
+  assert (shndx != 0);
 
   if (mod->debug.elf == NULL)
     /* We are only here because sh_addr is zero even though layout is complete.
@@ -148,7 +128,8 @@
 	     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
@@ -190,7 +171,8 @@
       return ELF_C_NULL;
     }
 
-  if (!strcmp (h->ar_name, "/") || !strcmp (h->ar_name, "//"))
+  if (!strcmp (h->ar_name, "/") || !strcmp (h->ar_name, "//")
+      || !strcmp (h->ar_name, "/SYM64/"))
     {
     skip:;
       /* Skip this and go to the next.  */
diff --git a/src/libdwfl/open.c b/src/libdwfl/open.c
index 397af35..40aac38 100644
--- a/src/libdwfl/open.c
+++ b/src/libdwfl/open.c
@@ -1,51 +1,30 @@
 /* Decompression support for libdwfl: zlib (gzip) and/or bzlib (bzip2).
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 "../libelf/libelfP.h"
 #undef	_
@@ -54,15 +33,15 @@
 #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.  */
diff --git a/src/libdwfl/relocate.c b/src/libdwfl/relocate.c
index 95206f4..e102e1e 100644
--- a/src/libdwfl/relocate.c
+++ b/src/libdwfl/relocate.c
@@ -1,51 +1,30 @@
 /* Relocate debug information.
-   Copyright (C) 2005-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2011, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
@@ -59,7 +38,11 @@
 __libdwfl_relocate_value (Dwfl_Module *mod, Elf *elf, size_t *shstrndx,
 			  Elf32_Word shndx, GElf_Addr *value)
 {
-  assert (mod->e_type == ET_REL);
+  /* No adjustment needed for section zero, it is never loaded.
+     Handle it first, just in case the ELF file has strange section
+     zero flags set.  */
+  if (shndx == 0)
+    return DWFL_E_NOERROR;
 
   Elf_Scn *refscn = elf_getscn (elf, shndx);
   GElf_Shdr refshdr_mem, *refshdr = gelf_getshdr (refscn, &refshdr_mem);
@@ -223,7 +206,8 @@
 	  symtab->symstrdata = elf_getdata (elf_getscn (symtab->symelf,
 							symtab->strtabndx),
 					    NULL);
-	  if (unlikely (symtab->symstrdata == NULL))
+	  if (unlikely (symtab->symstrdata == NULL
+			|| symtab->symstrdata->d_buf == NULL))
 	    return DWFL_E_LIBELF;
 	}
       if (unlikely (sym->st_name >= symtab->symstrdata->d_size))
@@ -275,7 +259,8 @@
 
 		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;
 		  }
 
@@ -319,6 +304,46 @@
   if (tdata == NULL)
     return DWFL_E_LIBELF;
 
+  /* If either the section that needs the relocation applied, or the
+     section that the relocations come from overlap one of the ehdrs,
+     shdrs or phdrs data then we refuse to do the relocations.  It
+     isn't illegal for ELF section data to overlap the header data,
+     but updating the (relocation) data might corrupt the in-memory
+     libelf headers causing strange corruptions or errors.  */
+  size_t ehsize = gelf_fsize (relocated, ELF_T_EHDR, 1, EV_CURRENT);
+  if (unlikely (shdr->sh_offset < ehsize
+		|| tshdr->sh_offset < ehsize))
+    return DWFL_E_BADELF;
+
+  GElf_Off shdrs_start = ehdr->e_shoff;
+  size_t shnums;
+  if (elf_getshdrnum (relocated, &shnums) < 0)
+    return DWFL_E_LIBELF;
+  /* Overflows will have been checked by elf_getshdrnum/get|rawdata.  */
+  size_t shentsize = gelf_fsize (relocated, ELF_T_SHDR, 1, EV_CURRENT);
+  GElf_Off shdrs_end = shdrs_start + shnums * shentsize;
+  if (unlikely ((shdrs_start < shdr->sh_offset + shdr->sh_size
+		 && shdr->sh_offset < shdrs_end)
+		|| (shdrs_start < tshdr->sh_offset + tshdr->sh_size
+		    && tshdr->sh_offset < shdrs_end)))
+    return DWFL_E_BADELF;
+
+  GElf_Off phdrs_start = ehdr->e_phoff;
+  size_t phnums;
+  if (elf_getphdrnum (relocated, &phnums) < 0)
+    return DWFL_E_LIBELF;
+  if (phdrs_start != 0 && phnums != 0)
+    {
+      /* Overflows will have been checked by elf_getphdrnum/get|rawdata.  */
+      size_t phentsize = gelf_fsize (relocated, ELF_T_PHDR, 1, EV_CURRENT);
+      GElf_Off phdrs_end = phdrs_start + phnums * phentsize;
+      if (unlikely ((phdrs_start < shdr->sh_offset + shdr->sh_size
+		     && shdr->sh_offset < phdrs_end)
+		    || (phdrs_start < tshdr->sh_offset + tshdr->sh_size
+			&& tshdr->sh_offset < phdrs_end)))
+	return DWFL_E_BADELF;
+    }
+
   /* Apply one relocation.  Returns true for any invalid data.  */
   Dwfl_Error relocate (GElf_Addr offset, const GElf_Sxword *addend,
 		       int rtype, int symndx)
@@ -387,7 +412,7 @@
 	return DWFL_E_BADRELTYPE;
       }
 
-    if (offset + size > tdata->d_size)
+    if (offset > tdata->d_size || tdata->d_size - offset < size)
       return DWFL_E_BADRELOFF;
 
 #define DO_TYPE(NAME, Name) GElf_##Name Name;
@@ -478,7 +503,10 @@
       }
   }
 
-  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)
@@ -580,7 +608,7 @@
 	  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);
     }
 
diff --git a/src/libdwfl/segment.c b/src/libdwfl/segment.c
index 9d78c87..9276917 100644
--- a/src/libdwfl/segment.c
+++ b/src/libdwfl/segment.c
@@ -1,64 +1,45 @@
 /* Manage address space lookup table for libdwfl.
-   Copyright (C) 2008, 2009, 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2008, 2009, 2010, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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"
 
-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;
@@ -177,8 +158,8 @@
   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);
@@ -317,8 +298,9 @@
       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
diff --git a/src/libebl/Android.mk b/src/libebl/Android.mk
index 2b94a37..0baa6b3 100755
--- a/src/libebl/Android.mk
+++ b/src/libebl/Android.mk
@@ -15,50 +15,60 @@
 LOCAL_PATH := $(call my-dir)
 
 LIBEBL_SRC_FILES := \
-        eblabicfi.c \
-        eblauxvinfo.c \
-        eblbackendname.c \
-        eblbsspltp.c \
-        eblcheckobjattr.c \
-        ebl_check_special_section.c \
-        ebl_check_special_symbol.c \
-        eblclosebackend.c \
-        eblcopyrelocp.c \
-        eblcorenote.c \
-        eblcorenotetypename.c \
-        ebldebugscnp.c \
-        ebldynamictagcheck.c \
-        ebldynamictagname.c \
-        eblelfclass.c \
-        eblelfdata.c \
-        eblelfmachine.c \
-        eblgotpcreloccheck.c \
-        eblgstrtab.c \
-        eblmachineflagcheck.c \
-        eblmachineflagname.c \
-        eblmachinesectionflagcheck.c \
-        eblnonerelocp.c \
-        eblobjecttypename.c \
-        eblobjnote.c \
-        eblobjnotetypename.c \
-        eblopenbackend.c \
-        eblosabiname.c \
-        eblreginfo.c \
-        eblrelativerelocp.c \
-        eblrelocsimpletype.c \
-        eblreloctypecheck.c \
-        eblreloctypename.c \
-        eblrelocvaliduse.c \
-        eblretval.c \
-        eblsectionname.c \
-        eblsectionstripp.c \
-        eblsectiontypename.c \
-        eblshflagscombine.c \
-        eblstrtab.c \
-        eblsymbolbindingname.c \
-        eblsymboltypename.c \
-        ebl_syscall_abi.c \
-        eblsysvhashentrysize.c
+eblabicfi.c \
+eblauxvinfo.c \
+eblbackendname.c \
+eblbsspltp.c \
+eblcheckobjattr.c \
+eblcheckreloctargettype.c \
+ebl_check_special_section.c \
+ebl_check_special_symbol.c \
+eblclosebackend.c \
+eblcopyrelocp.c \
+eblcorenote.c \
+eblcorenotetypename.c \
+ebldebugscnp.c \
+ebldwarftoregno.c \
+ebldynamictagcheck.c \
+ebldynamictagname.c \
+eblelfclass.c \
+eblelfdata.c \
+eblelfmachine.c \
+eblgotpcreloccheck.c \
+eblgstrtab.c \
+eblinitreg.c \
+eblmachineflagcheck.c \
+eblmachineflagname.c \
+eblmachinesectionflagcheck.c \
+eblnonerelocp.c \
+eblnormalizepc.c \
+eblobjecttypename.c \
+eblobjnote.c \
+eblobjnotetypename.c \
+eblopenbackend.c \
+eblosabiname.c \
+eblreginfo.c \
+eblrelativerelocp.c \
+eblrelocsimpletype.c \
+eblreloctypecheck.c \
+eblreloctypename.c \
+eblrelocvaliduse.c \
+eblresolvesym.c \
+eblretval.c \
+eblsectionname.c \
+eblsectionstripp.c \
+eblsectiontypename.c \
+eblsegmenttypename.c \
+eblshflagscombine.c \
+eblstother.c \
+eblstrtab.c \
+eblsymbolbindingname.c \
+eblsymboltypename.c \
+ebl_syscall_abi.c \
+eblsysvhashentrysize.c \
+eblunwind.c \
+eblwstrtab.c \
+
 
 ifeq ($(HOST_OS),linux)
 
@@ -112,11 +122,11 @@
 	$(LOCAL_PATH)/../libelf \
 	$(LOCAL_PATH)/../libdw
 
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../bionic-fixup
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../bionic-fixup
 
-LOCAL_CFLAGS += -include $(LOCAL_PATH)/../bionic-fixup/AndroidFixup.h
+LOCAL_CFLAGS += -include $(LOCAL_PATH)/../../bionic-fixup/AndroidFixup.h
 
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -Werror
+LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -Werror -Wno-error=pointer-arith
 
 LOCAL_MODULE:= libebl
 
diff --git a/src/libebl/ChangeLog b/src/libebl/ChangeLog
index ac2160d..5e635f2 100644
--- a/src/libebl/ChangeLog
+++ b/src/libebl/ChangeLog
@@ -1,3 +1,118 @@
+2014-11-22  Mark Wielaard  <mjw@redhat.com>
+
+	* ebl-hooks.h (bss_plt_p): Remove ehdr argument.
+	* eblbsspltp.c (ebl_bss_plt_p): Likewise.
+	* eblopenbackend.c (default_bss_plt_p): Likewise.
+	* libebl.h (ebl_bss_plt_p): Likewise.
+
+2014-11-17  Mark Wielaard  <mjw@redhat.com>
+
+	* ebldebugscnp.c (ebl_debugscn_p): Check name is not NULL.
+
+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.
+
+2011-06-26  Mark Wielaard  <mjw@redhat.com>
+
+	* eblopenbackend.c (default_debugscn_p): Add .debug_macro.
+
 2011-04-26  Mark Wielaard  <mjw@redhat.com>
 
 	* libebl.h (ebl_object_note_type_name): Add const char *name arg.
diff --git a/src/libebl/Makefile b/src/libebl/Makefile
new file mode 100644
index 0000000..244cdf5
--- /dev/null
+++ b/src/libebl/Makefile
@@ -0,0 +1,763 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# libebl/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+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/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 =
+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)$(libdir)" "$(DESTDIR)$(pkgincludedir)"
+LIBRARIES = $(lib_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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) \
+	eblstrtab.$(OBJEXT) eblreloctypename.$(OBJEXT) \
+	eblsegmenttypename.$(OBJEXT) eblsectiontypename.$(OBJEXT) \
+	eblmachineflagname.$(OBJEXT) eblsymboltypename.$(OBJEXT) \
+	ebldynamictagname.$(OBJEXT) eblsectionname.$(OBJEXT) \
+	eblobjecttypename.$(OBJEXT) eblsymbolbindingname.$(OBJEXT) \
+	eblbackendname.$(OBJEXT) eblshflagscombine.$(OBJEXT) \
+	eblwstrtab.$(OBJEXT) eblgstrtab.$(OBJEXT) \
+	eblosabiname.$(OBJEXT) eblmachineflagcheck.$(OBJEXT) \
+	eblmachinesectionflagcheck.$(OBJEXT) \
+	eblreloctypecheck.$(OBJEXT) eblrelocvaliduse.$(OBJEXT) \
+	eblrelocsimpletype.$(OBJEXT) ebldynamictagcheck.$(OBJEXT) \
+	eblcorenotetypename.$(OBJEXT) eblobjnotetypename.$(OBJEXT) \
+	eblcorenote.$(OBJEXT) eblobjnote.$(OBJEXT) \
+	ebldebugscnp.$(OBJEXT) eblgotpcreloccheck.$(OBJEXT) \
+	eblcopyrelocp.$(OBJEXT) eblsectionstripp.$(OBJEXT) \
+	eblelfclass.$(OBJEXT) eblelfdata.$(OBJEXT) \
+	eblelfmachine.$(OBJEXT) ebl_check_special_symbol.$(OBJEXT) \
+	eblbsspltp.$(OBJEXT) eblretval.$(OBJEXT) eblreginfo.$(OBJEXT) \
+	eblnonerelocp.$(OBJEXT) eblrelativerelocp.$(OBJEXT) \
+	eblsysvhashentrysize.$(OBJEXT) eblauxvinfo.$(OBJEXT) \
+	eblcheckobjattr.$(OBJEXT) ebl_check_special_section.$(OBJEXT) \
+	ebl_syscall_abi.$(OBJEXT) eblabicfi.$(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_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 1
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/libebl
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/libebl
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+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 -Wformat=2 $(if \
+	$($(*F)_no_Werror),,-Werror) $(if \
+	$($(*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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
+lib_LIBRARIES = libebl.a
+pkginclude_HEADERS = libebl.h
+gen_SOURCES = eblopenbackend.c eblclosebackend.c eblstrtab.c \
+	      eblreloctypename.c eblsegmenttypename.c \
+	      eblsectiontypename.c eblmachineflagname.c \
+	      eblsymboltypename.c ebldynamictagname.c eblsectionname.c \
+	      eblobjecttypename.c eblsymbolbindingname.c \
+	      eblbackendname.c eblshflagscombine.c eblwstrtab.c \
+	      eblgstrtab.c eblosabiname.c \
+	      eblmachineflagcheck.c eblmachinesectionflagcheck.c \
+	      eblreloctypecheck.c eblrelocvaliduse.c eblrelocsimpletype.c \
+	      ebldynamictagcheck.c eblcorenotetypename.c eblobjnotetypename.c \
+	      eblcorenote.c eblobjnote.c ebldebugscnp.c \
+	      eblgotpcreloccheck.c eblcopyrelocp.c eblsectionstripp.c \
+	      eblelfclass.c eblelfdata.c eblelfmachine.c \
+	      ebl_check_special_symbol.c eblbsspltp.c eblretval.c \
+	      eblreginfo.c eblnonerelocp.c eblrelativerelocp.c \
+	      eblsysvhashentrysize.c eblauxvinfo.c eblcheckobjattr.c \
+	      ebl_check_special_section.c ebl_syscall_abi.c eblabicfi.c \
+	      eblstother.c eblinitreg.c ebldwarftoregno.c eblnormalizepc.c \
+	      eblunwind.c eblresolvesym.c eblcheckreloctargettype.c
+
+libebl_a_SOURCES = $(gen_SOURCES)
+noinst_HEADERS = libeblP.h ebl-hooks.h
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: # $(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 libebl/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits libebl/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLIBRARIES: $(lib_LIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  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)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  if test -f $$p; then \
+	    $(am__strip_dir) \
+	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+	  else :; fi; \
+	done
+
+uninstall-libLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+
+libebl.a: $(libebl_a_OBJECTS) $(libebl_a_DEPENDENCIES) $(EXTRA_libebl_a_DEPENDENCIES) 
+	$(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)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/ebl_check_special_section.Po
+include ./$(DEPDIR)/ebl_check_special_symbol.Po
+include ./$(DEPDIR)/ebl_syscall_abi.Po
+include ./$(DEPDIR)/eblabicfi.Po
+include ./$(DEPDIR)/eblauxvinfo.Po
+include ./$(DEPDIR)/eblbackendname.Po
+include ./$(DEPDIR)/eblbsspltp.Po
+include ./$(DEPDIR)/eblcheckobjattr.Po
+include ./$(DEPDIR)/eblcheckreloctargettype.Po
+include ./$(DEPDIR)/eblclosebackend.Po
+include ./$(DEPDIR)/eblcopyrelocp.Po
+include ./$(DEPDIR)/eblcorenote.Po
+include ./$(DEPDIR)/eblcorenotetypename.Po
+include ./$(DEPDIR)/ebldebugscnp.Po
+include ./$(DEPDIR)/ebldwarftoregno.Po
+include ./$(DEPDIR)/ebldynamictagcheck.Po
+include ./$(DEPDIR)/ebldynamictagname.Po
+include ./$(DEPDIR)/eblelfclass.Po
+include ./$(DEPDIR)/eblelfdata.Po
+include ./$(DEPDIR)/eblelfmachine.Po
+include ./$(DEPDIR)/eblgotpcreloccheck.Po
+include ./$(DEPDIR)/eblgstrtab.Po
+include ./$(DEPDIR)/eblinitreg.Po
+include ./$(DEPDIR)/eblmachineflagcheck.Po
+include ./$(DEPDIR)/eblmachineflagname.Po
+include ./$(DEPDIR)/eblmachinesectionflagcheck.Po
+include ./$(DEPDIR)/eblnonerelocp.Po
+include ./$(DEPDIR)/eblnormalizepc.Po
+include ./$(DEPDIR)/eblobjecttypename.Po
+include ./$(DEPDIR)/eblobjnote.Po
+include ./$(DEPDIR)/eblobjnotetypename.Po
+include ./$(DEPDIR)/eblopenbackend.Po
+include ./$(DEPDIR)/eblosabiname.Po
+include ./$(DEPDIR)/eblreginfo.Po
+include ./$(DEPDIR)/eblrelativerelocp.Po
+include ./$(DEPDIR)/eblrelocsimpletype.Po
+include ./$(DEPDIR)/eblreloctypecheck.Po
+include ./$(DEPDIR)/eblreloctypename.Po
+include ./$(DEPDIR)/eblrelocvaliduse.Po
+include ./$(DEPDIR)/eblresolvesym.Po
+include ./$(DEPDIR)/eblretval.Po
+include ./$(DEPDIR)/eblsectionname.Po
+include ./$(DEPDIR)/eblsectionstripp.Po
+include ./$(DEPDIR)/eblsectiontypename.Po
+include ./$(DEPDIR)/eblsegmenttypename.Po
+include ./$(DEPDIR)/eblshflagscombine.Po
+include ./$(DEPDIR)/eblstother.Po
+include ./$(DEPDIR)/eblstrtab.Po
+include ./$(DEPDIR)/eblsymbolbindingname.Po
+include ./$(DEPDIR)/eblsymboltypename.Po
+include ./$(DEPDIR)/eblsysvhashentrysize.Po
+include ./$(DEPDIR)/eblunwind.Po
+include ./$(DEPDIR)/eblwstrtab.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(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)$(libdir)" "$(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-libLIBRARIES 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-libLIBRARIES
+
+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-libLIBRARIES uninstall-pkgincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.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
+
+
+%.os: %.c %.o
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(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:
diff --git a/src/libebl/Makefile.am b/src/libebl/Makefile.am
index ced5668..ec4477b 100644
--- a/src/libebl/Makefile.am
+++ b/src/libebl/Makefile.am
@@ -1,32 +1,35 @@
 ## Process this file with automake to create Makefile.in
 ##
-## Copyright (C) 2000-2010 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## Copyright (C) 2000-2010, 2013 Red Hat, Inc.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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_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@
 
@@ -51,7 +54,8 @@
 	      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)
 
diff --git a/src/libebl/Makefile.in b/src/libebl/Makefile.in
index 40edc5a..ef32334 100644
--- a/src/libebl/Makefile.in
+++ b/src/libebl/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -17,6 +16,51 @@
 
 
 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@
@@ -35,13 +79,13 @@
 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) \
@@ -71,10 +115,19 @@
 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)$(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) \
@@ -100,32 +153,81 @@
 	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@
@@ -134,10 +236,13 @@
 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@
@@ -158,6 +263,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -168,6 +274,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -182,6 +289,7 @@
 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@
@@ -231,21 +339,18 @@
 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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
 lib_LIBRARIES = libebl.a
 pkginclude_HEADERS = libebl.h
 gen_SOURCES = eblopenbackend.c eblclosebackend.c eblstrtab.c \
@@ -265,7 +370,8 @@
 	      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
@@ -294,6 +400,7 @@
 	    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
@@ -305,7 +412,6 @@
 $(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 \
@@ -313,6 +419,8 @@
 	  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)
@@ -329,16 +437,15 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
-	cd "$(DESTDIR)$(libdir)" && rm -f $$files
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
 
 clean-libLIBRARIES:
 	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
-libebl.a: $(libebl_a_OBJECTS) $(libebl_a_DEPENDENCIES) 
-	-rm -f libebl.a
-	$(libebl_a_AR) libebl.a $(libebl_a_OBJECTS) $(libebl_a_LIBADD)
-	$(RANLIB) libebl.a
+
+libebl.a: $(libebl_a_OBJECTS) $(libebl_a_DEPENDENCIES) $(EXTRA_libebl_a_DEPENDENCIES) 
+	$(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)
@@ -354,11 +461,13 @@
 @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@
@@ -366,10 +475,12 @@
 @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@
@@ -381,6 +492,7 @@
 @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@
@@ -392,25 +504,29 @@
 @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 -o $@ $<
 
 .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 -o $@ `$(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"; \
@@ -424,30 +540,17 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
+	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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -459,15 +562,11 @@
 	      $$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
@@ -476,6 +575,21 @@
 	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
@@ -527,10 +641,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -614,18 +733,19 @@
 
 .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
 
 
diff --git a/src/libebl/ebl-hooks.h b/src/libebl/ebl-hooks.h
index a04b3db..2e31446 100644
--- a/src/libebl/ebl-hooks.h
+++ b/src/libebl/ebl-hooks.h
@@ -1,51 +1,30 @@
 /* Backend hook signatures internal interface for libebl.
-   Copyright (C) 2000-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2011, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 /* Return symbol representaton of object file type.  */
 const char *EBLHOOK(object_type_name) (int, char *, size_t);
@@ -126,6 +105,9 @@
 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 **);
 
@@ -150,7 +132,7 @@
 bool EBLHOOK(check_st_other_bits) (unsigned char st_other);
 
 /* Check if backend uses a bss PLT in this file.  */
-bool EBLHOOK(bss_plt_p) (Elf *, GElf_Ehdr *);
+bool EBLHOOK(bss_plt_p) (Elf *);
 
 /* Return location expression to find return value given the
    DW_AT_type DIE of a DW_TAG_subprogram DIE.  */
@@ -172,8 +154,42 @@
 		     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 *);
diff --git a/src/libebl/ebl_check_special_section.c b/src/libebl/ebl_check_special_section.c
index d1f3c6e..aabe44e 100644
--- a/src/libebl/ebl_check_special_section.c
+++ b/src/libebl/ebl_check_special_section.c
@@ -1,51 +1,30 @@
 /* Check for a special section allowed to violate generic constraints.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/ebl_check_special_symbol.c b/src/libebl/ebl_check_special_symbol.c
index 875ed1c..8e702ba 100644
--- a/src/libebl/ebl_check_special_symbol.c
+++ b/src/libebl/ebl_check_special_symbol.c
@@ -1,51 +1,30 @@
 /* Check special symbol's st_value.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/ebl_syscall_abi.c b/src/libebl/ebl_syscall_abi.c
index 2d9a26b..de73703 100644
--- a/src/libebl/ebl_syscall_abi.c
+++ b/src/libebl/ebl_syscall_abi.c
@@ -1,51 +1,30 @@
 /* Return system call ABI mapped to DWARF register numbers.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblabicfi.c b/src/libebl/eblabicfi.c
index 221e83f..20a29ea 100644
--- a/src/libebl/eblabicfi.c
+++ b/src/libebl/eblabicfi.c
@@ -1,51 +1,30 @@
 /* Return ABI-specific DWARF CFI details.
    Copyright (C) 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblauxvinfo.c b/src/libebl/eblauxvinfo.c
index 6e02403..5c310b2 100644
--- a/src/libebl/eblauxvinfo.c
+++ b/src/libebl/eblauxvinfo.c
@@ -1,51 +1,30 @@
 /* Describe known auxv types.
    Copyright (C) 2007, 2008, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblbackendname.c b/src/libebl/eblbackendname.c
index daec880..92e576e 100644
--- a/src/libebl/eblbackendname.c
+++ b/src/libebl/eblbackendname.c
@@ -1,52 +1,31 @@
 /* Return backend name.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblbsspltp.c b/src/libebl/eblbsspltp.c
index 14b6f09..95a5d8a 100644
--- a/src/libebl/eblbsspltp.c
+++ b/src/libebl/eblbsspltp.c
@@ -1,51 +1,30 @@
 /* Check if backend uses a bss PLT.
-   Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -56,9 +35,8 @@
 
 
 bool
-ebl_bss_plt_p (ebl, ehdr)
+ebl_bss_plt_p (ebl)
      Ebl *ebl;
-     GElf_Ehdr *ehdr;
 {
-  return ebl == NULL ? false : ebl->bss_plt_p (ebl->elf, ehdr);
+  return ebl == NULL ? false : ebl->bss_plt_p (ebl->elf);
 }
diff --git a/src/libebl/eblcheckobjattr.c b/src/libebl/eblcheckobjattr.c
index fe75de7..b0481d2 100644
--- a/src/libebl/eblcheckobjattr.c
+++ b/src/libebl/eblcheckobjattr.c
@@ -1,51 +1,30 @@
 /* Check object attributes.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblcheckreloctargettype.c b/src/libebl/eblcheckreloctargettype.c
new file mode 100644
index 0000000..e135f8a
--- /dev/null
+++ b/src/libebl/eblcheckreloctargettype.c
@@ -0,0 +1,46 @@
+/* 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;
+}
diff --git a/src/libebl/eblclosebackend.c b/src/libebl/eblclosebackend.c
index a0fb344..67fbdfe 100644
--- a/src/libebl/eblclosebackend.c
+++ b/src/libebl/eblclosebackend.c
@@ -1,51 +1,30 @@
 /* Free ELF backend handle.
    Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblcopyrelocp.c b/src/libebl/eblcopyrelocp.c
index a7aea88..702f8c7 100644
--- a/src/libebl/eblcopyrelocp.c
+++ b/src/libebl/eblcopyrelocp.c
@@ -1,52 +1,31 @@
 /* Check whether given relocation is a copy relocation.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblcorenote.c b/src/libebl/eblcorenote.c
index 7549ca6..2a79278 100644
--- a/src/libebl/eblcorenote.c
+++ b/src/libebl/eblcorenote.c
@@ -1,51 +1,30 @@
 /* Describe known core note formats.
    Copyright (C) 2007, 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblcorenotetypename.c b/src/libebl/eblcorenotetypename.c
index 9376cf5..b6db6cd 100644
--- a/src/libebl/eblcorenotetypename.c
+++ b/src/libebl/eblcorenotetypename.c
@@ -1,52 +1,31 @@
 /* Return note type name.
-   Copyright (C) 2002, 2007, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002, 2007, 2008, 2012, 2013 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -99,8 +78,24 @@
 	    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:
diff --git a/src/libebl/ebldebugscnp.c b/src/libebl/ebldebugscnp.c
index c96622c..01a5675 100644
--- a/src/libebl/ebldebugscnp.c
+++ b/src/libebl/ebldebugscnp.c
@@ -1,52 +1,31 @@
 /* Check section name for being that of a debug informatino section.
-   Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -61,5 +40,5 @@
      Ebl *ebl;
      const char *name;
 {
-  return ebl->debugscn_p (name);
+  return name != NULL && ebl->debugscn_p (name);
 }
diff --git a/src/libebl/ebldwarftoregno.c b/src/libebl/ebldwarftoregno.c
new file mode 100644
index 0000000..8fb8540
--- /dev/null
+++ b/src/libebl/ebldwarftoregno.c
@@ -0,0 +1,41 @@
+/* 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);
+}
diff --git a/src/libebl/ebldynamictagcheck.c b/src/libebl/ebldynamictagcheck.c
index 1953a9c..17acee0 100644
--- a/src/libebl/ebldynamictagcheck.c
+++ b/src/libebl/ebldynamictagcheck.c
@@ -1,52 +1,31 @@
 /* Check dynamic tag.
    Copyright (C) 2001, 2002, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/ebldynamictagname.c b/src/libebl/ebldynamictagname.c
index cb65b92..6b09ee6 100644
--- a/src/libebl/ebldynamictagname.c
+++ b/src/libebl/ebldynamictagname.c
@@ -1,52 +1,31 @@
 /* Return dynamic tag name.
    Copyright (C) 2001, 2002, 2006, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblelfclass.c b/src/libebl/eblelfclass.c
index 222307e..62d1283 100644
--- a/src/libebl/eblelfclass.c
+++ b/src/libebl/eblelfclass.c
@@ -1,52 +1,31 @@
 /* Return ELF class.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblelfdata.c b/src/libebl/eblelfdata.c
index f84ae16..b09dbb5 100644
--- a/src/libebl/eblelfdata.c
+++ b/src/libebl/eblelfdata.c
@@ -1,52 +1,31 @@
 /* Return ELF data encoding.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblelfmachine.c b/src/libebl/eblelfmachine.c
index 9839fef..cd961e7 100644
--- a/src/libebl/eblelfmachine.c
+++ b/src/libebl/eblelfmachine.c
@@ -1,52 +1,31 @@
 /* Return ELF machine.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblgotpcreloccheck.c b/src/libebl/eblgotpcreloccheck.c
index e70fcb1..55625de 100644
--- a/src/libebl/eblgotpcreloccheck.c
+++ b/src/libebl/eblgotpcreloccheck.c
@@ -1,53 +1,32 @@
 /* Return true if the symbol type is that referencing the GOT.  E.g.,
    R_386_GOTPC.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblgstrtab.c b/src/libebl/eblgstrtab.c
index 73f0d27..0d92c00 100644
--- a/src/libebl/eblgstrtab.c
+++ b/src/libebl/eblgstrtab.c
@@ -1,52 +1,31 @@
 /* Generic string table handling.
    Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblinitreg.c b/src/libebl/eblinitreg.c
new file mode 100644
index 0000000..5729b3c
--- /dev/null
+++ b/src/libebl/eblinitreg.c
@@ -0,0 +1,58 @@
+/* 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);
+}
diff --git a/src/libebl/eblmachineflagcheck.c b/src/libebl/eblmachineflagcheck.c
index ac383f6..d6d7931 100644
--- a/src/libebl/eblmachineflagcheck.c
+++ b/src/libebl/eblmachineflagcheck.c
@@ -1,52 +1,31 @@
 /* Check machine flag.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblmachineflagname.c b/src/libebl/eblmachineflagname.c
index 88a8da8..e392f5a 100644
--- a/src/libebl/eblmachineflagname.c
+++ b/src/libebl/eblmachineflagname.c
@@ -1,52 +1,31 @@
 /* Return machine flag names.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblmachinesectionflagcheck.c b/src/libebl/eblmachinesectionflagcheck.c
index 9eb6d38..671eb8c 100644
--- a/src/libebl/eblmachinesectionflagcheck.c
+++ b/src/libebl/eblmachinesectionflagcheck.c
@@ -1,51 +1,30 @@
 /* Check SHF_MASKPROC flags.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblnonerelocp.c b/src/libebl/eblnonerelocp.c
index 3bca98b..07c6b0e 100644
--- a/src/libebl/eblnonerelocp.c
+++ b/src/libebl/eblnonerelocp.c
@@ -1,52 +1,31 @@
 /* Check whether given relocation is a no-op relocation.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2006.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblnormalizepc.c b/src/libebl/eblnormalizepc.c
new file mode 100644
index 0000000..a5fea77
--- /dev/null
+++ b/src/libebl/eblnormalizepc.c
@@ -0,0 +1,40 @@
+/* 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);
+}
diff --git a/src/libebl/eblobjecttypename.c b/src/libebl/eblobjecttypename.c
index ce100e7..1a2c8e8 100644
--- a/src/libebl/eblobjecttypename.c
+++ b/src/libebl/eblobjecttypename.c
@@ -1,52 +1,31 @@
 /* Return object file type name.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblobjnote.c b/src/libebl/eblobjnote.c
index ec5bb7d..d1fe821 100644
--- a/src/libebl/eblobjnote.c
+++ b/src/libebl/eblobjnote.c
@@ -1,52 +1,31 @@
 /* Print contents of object file note.
    Copyright (C) 2002, 2007, 2009, 2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblobjnotetypename.c b/src/libebl/eblobjnotetypename.c
index 0ceb5a8..8a70e61 100644
--- a/src/libebl/eblobjnotetypename.c
+++ b/src/libebl/eblobjnotetypename.c
@@ -1,52 +1,31 @@
 /* Return note type name.
    Copyright (C) 2002, 2007, 2009, 2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblopenbackend.c b/src/libebl/eblopenbackend.c
index 542df62..3a22f53 100644
--- a/src/libebl/eblopenbackend.c
+++ b/src/libebl/eblopenbackend.c
@@ -1,51 +1,30 @@
 /* Generate ELF backend handle.
-   Copyright (C) 2000-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -84,6 +63,7 @@
   { "x86_64", "elf_x86_64", "x86_64", 6, EM_X86_64, ELFCLASS64, ELFDATA2LSB },
   { "ppc", "elf_ppc", "ppc", 3, EM_PPC, ELFCLASS32, ELFDATA2MSB },
   { "ppc64", "elf_ppc64", "ppc64", 5, EM_PPC64, ELFCLASS64, ELFDATA2MSB },
+  { "tilegx", "elf_tilegx", "tilegx", 6, EM_TILEGX, ELFCLASS64, ELFDATA2LSB },
   // XXX class and machine fields need to be filled in for all archs.
   { "sh", "elf_sh", "sh", 2, EM_SH, 0, 0 },
   { "arm", "ebl_arm", "arm", 3, EM_ARM, 0, 0 },
@@ -151,6 +131,7 @@
   { "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]))
 
@@ -196,13 +177,8 @@
 				 uint32_t descsz, const char *desc);
 static bool default_debugscn_p (const char *name);
 static bool default_copy_reloc_p (int reloc);
-#ifndef __APPLE__
 static bool default_none_reloc_p (int reloc);
 static bool default_relative_reloc_p (int reloc);
-#else
-#define default_none_reloc_p            default_copy_reloc_p
-#define default_relative_reloc_p        default_copy_reloc_p
-#endif
 static bool default_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr,
 					  const GElf_Sym *sym,
 					  const char *name,
@@ -210,7 +186,7 @@
 static bool default_check_st_other_bits (unsigned char st_other);
 static bool default_check_special_section (Ebl *, int,
 					   const GElf_Shdr *, const char *);
-static bool default_bss_plt_p (Elf *elf, GElf_Ehdr *ehdr);
+static bool default_bss_plt_p (Elf *elf);
 static int default_return_value_location (Dwarf_Die *functypedie,
 					  const Dwarf_Op **locops);
 static ssize_t default_register_info (Ebl *ebl,
@@ -224,6 +200,7 @@
 					    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);
 
 
@@ -265,6 +242,7 @@
   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;
@@ -672,6 +650,8 @@
       ".debug_types",
       /* GDB DWARF 4 extension */
       ".gdb_index",
+      /* GNU/DWARF 5 extension/proposal */
+      ".debug_macro",
       /* SGI/MIPS DWARF 2 extensions */
       ".debug_weaknames",
       ".debug_funcnames",
@@ -692,10 +672,8 @@
 {
   return false;
 }
-#ifndef __APPLE__
 strong_alias (default_copy_reloc_p, default_none_reloc_p)
 strong_alias (default_copy_reloc_p, default_relative_reloc_p)
-#endif
 
 static bool
 default_check_special_symbol (Elf *elf __attribute__ ((unused)),
@@ -715,8 +693,7 @@
 
 
 static bool
-default_bss_plt_p (Elf *elf __attribute__ ((unused)),
-		   GElf_Ehdr *ehdr __attribute__ ((unused)))
+default_bss_plt_p (Elf *elf __attribute__ ((unused)))
 {
   return false;
 }
@@ -771,9 +748,16 @@
   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;
 }
diff --git a/src/libebl/eblosabiname.c b/src/libebl/eblosabiname.c
index 3b38b44..3ea6f56 100644
--- a/src/libebl/eblosabiname.c
+++ b/src/libebl/eblosabiname.c
@@ -1,52 +1,31 @@
 /* Return OS ABI name
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblreginfo.c b/src/libebl/eblreginfo.c
index 8fc4abf..f213b4a 100644
--- a/src/libebl/eblreginfo.c
+++ b/src/libebl/eblreginfo.c
@@ -1,51 +1,30 @@
 /* Return register name information.
    Copyright (C) 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblrelativerelocp.c b/src/libebl/eblrelativerelocp.c
index 9c28b59..297caec 100644
--- a/src/libebl/eblrelativerelocp.c
+++ b/src/libebl/eblrelativerelocp.c
@@ -1,52 +1,31 @@
 /* Check whether given relocation is a relative relocation.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2006.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblrelocsimpletype.c b/src/libebl/eblrelocsimpletype.c
index 87eb5a8..085fc93 100644
--- a/src/libebl/eblrelocsimpletype.c
+++ b/src/libebl/eblrelocsimpletype.c
@@ -1,51 +1,30 @@
 /* Check relocation type for simple types.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblreloctypecheck.c b/src/libebl/eblreloctypecheck.c
index 576073c..e322ace 100644
--- a/src/libebl/eblreloctypecheck.c
+++ b/src/libebl/eblreloctypecheck.c
@@ -1,52 +1,31 @@
 /* Check relocation type.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblreloctypename.c b/src/libebl/eblreloctypename.c
index 3f2c7d9..fb39101 100644
--- a/src/libebl/eblreloctypename.c
+++ b/src/libebl/eblreloctypename.c
@@ -1,52 +1,31 @@
 /* Return relocation type name.
    Copyright (C) 2001, 2002, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblrelocvaliduse.c b/src/libebl/eblrelocvaliduse.c
index 40f2715..62c4ae7 100644
--- a/src/libebl/eblrelocvaliduse.c
+++ b/src/libebl/eblrelocvaliduse.c
@@ -1,52 +1,31 @@
 /* Check relocation type use.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblresolvesym.c b/src/libebl/eblresolvesym.c
new file mode 100644
index 0000000..470f6f0
--- /dev/null
+++ b/src/libebl/eblresolvesym.c
@@ -0,0 +1,43 @@
+/* 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);
+}
diff --git a/src/libebl/eblretval.c b/src/libebl/eblretval.c
index 56dc30f..056a549 100644
--- a/src/libebl/eblretval.c
+++ b/src/libebl/eblretval.c
@@ -1,51 +1,30 @@
 /* Return location expression to find return value given a function type DIE.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblsectionname.c b/src/libebl/eblsectionname.c
index f1c2b56..81c7add 100644
--- a/src/libebl/eblsectionname.c
+++ b/src/libebl/eblsectionname.c
@@ -1,52 +1,31 @@
 /* Return section name.
    Copyright (C) 2001, 2002, 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblsectionstripp.c b/src/libebl/eblsectionstripp.c
index 9aa7502..c6cda63 100644
--- a/src/libebl/eblsectionstripp.c
+++ b/src/libebl/eblsectionstripp.c
@@ -1,51 +1,30 @@
 /* Check whether section can be stripped.
-   Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2013 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -72,7 +51,7 @@
 	  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);
diff --git a/src/libebl/eblsectiontypename.c b/src/libebl/eblsectiontypename.c
index a37e5f6..3a30cd6 100644
--- a/src/libebl/eblsectiontypename.c
+++ b/src/libebl/eblsectiontypename.c
@@ -1,52 +1,31 @@
 /* Return section type name.
    Copyright (C) 2001, 2002, 2006, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblsegmenttypename.c b/src/libebl/eblsegmenttypename.c
index 8c4c295..3cad66e 100644
--- a/src/libebl/eblsegmenttypename.c
+++ b/src/libebl/eblsegmenttypename.c
@@ -1,52 +1,31 @@
 /* Return segment type name.
    Copyright (C) 2001, 2002, 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblshflagscombine.c b/src/libebl/eblshflagscombine.c
index 49a6560..87625f8 100644
--- a/src/libebl/eblshflagscombine.c
+++ b/src/libebl/eblshflagscombine.c
@@ -1,52 +1,31 @@
 /* Return combines section header flags value.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblstother.c b/src/libebl/eblstother.c
index ba8c9da..ccbf138 100644
--- a/src/libebl/eblstother.c
+++ b/src/libebl/eblstother.c
@@ -1,51 +1,30 @@
 /* Check st_other flag.
    Copyright (C) 2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblstrtab.c b/src/libebl/eblstrtab.c
index 4222cfd..798c34c 100644
--- a/src/libebl/eblstrtab.c
+++ b/src/libebl/eblstrtab.c
@@ -1,52 +1,31 @@
 /* ELF string table handling.
    Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblsymbolbindingname.c b/src/libebl/eblsymbolbindingname.c
index 334a9c3..fd5bfda 100644
--- a/src/libebl/eblsymbolbindingname.c
+++ b/src/libebl/eblsymbolbindingname.c
@@ -1,52 +1,31 @@
 /* Return symbol binding name.
    Copyright (C) 2001, 2002, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblsymboltypename.c b/src/libebl/eblsymboltypename.c
index f2ac622..4e653d2 100644
--- a/src/libebl/eblsymboltypename.c
+++ b/src/libebl/eblsymboltypename.c
@@ -1,52 +1,31 @@
 /* Return symbol type name.
    Copyright (C) 2001, 2002, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblsysvhashentrysize.c b/src/libebl/eblsysvhashentrysize.c
index 341979c..f966646 100644
--- a/src/libebl/eblsysvhashentrysize.c
+++ b/src/libebl/eblsysvhashentrysize.c
@@ -1,52 +1,31 @@
 /* Return OS ABI name
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2006.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/eblunwind.c b/src/libebl/eblunwind.c
new file mode 100644
index 0000000..1251c1b
--- /dev/null
+++ b/src/libebl/eblunwind.c
@@ -0,0 +1,43 @@
+/* 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);
+}
diff --git a/src/libebl/eblwstrtab.c b/src/libebl/eblwstrtab.c
index f29c0c7..08e0ba7 100644
--- a/src/libebl/eblwstrtab.c
+++ b/src/libebl/eblwstrtab.c
@@ -1,52 +1,31 @@
 /* ELF string table handling.
    Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libebl/libebl.h b/src/libebl/libebl.h
index 3a33402..7c3c764 100644
--- a/src/libebl/libebl.h
+++ b/src/libebl/libebl.h
@@ -1,51 +1,30 @@
 /* Interface for libebl.
-   Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2010, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBEBL_H
 #define _LIBEBL_H 1
@@ -200,6 +179,9 @@
 					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);
@@ -219,7 +201,7 @@
 				 bool remove_comment, bool only_remove_debug);
 
 /* Check if backend uses a bss PLT in this file.  */
-extern bool ebl_bss_plt_p (Ebl *ebl, GElf_Ehdr *ehdr);
+extern bool ebl_bss_plt_p (Ebl *ebl);
 
 /* Return size of entry in SysV-style hash table.  */
 extern int ebl_sysvhash_entrysize (Ebl *ebl);
@@ -278,6 +260,11 @@
    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:
 
@@ -288,7 +275,10 @@
    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);
 
@@ -369,6 +359,7 @@
   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.  */
@@ -381,6 +372,7 @@
   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.
@@ -396,6 +388,76 @@
 			  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
 }
diff --git a/src/libebl/libeblP.h b/src/libebl/libeblP.h
index 32a4372..dbd67f3 100644
--- a/src/libebl/libeblP.h
+++ b/src/libebl/libeblP.h
@@ -1,51 +1,30 @@
 /* Internal definitions for interface for libebl.
-   Copyright (C) 2000-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2009, 2013, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBEBLP_H
 #define _LIBEBLP_H 1
@@ -81,6 +60,21 @@
   /* 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;
 };
diff --git a/src/libelf/Android.mk b/src/libelf/Android.mk
index 0fca8f6..7609730 100755
--- a/src/libelf/Android.mk
+++ b/src/libelf/Android.mk
@@ -172,14 +172,14 @@
 	$(LOCAL_PATH)/.. \
 	$(LOCAL_PATH)/../lib \
 
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../bionic-fixup
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../bionic-fixup
 
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -Werror
+LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
 
 # to suppress the "pointer of type ‘void *’ used in arithmetic" warning
 LOCAL_CFLAGS += -Wno-pointer-arith
 
-LOCAL_CFLAGS += -include $(LOCAL_PATH)/../bionic-fixup/AndroidFixup.h
+LOCAL_CFLAGS += -include $(LOCAL_PATH)/../../bionic-fixup/AndroidFixup.h
 
 LOCAL_MODULE := libelf
 
diff --git a/src/libelf/ChangeLog b/src/libelf/ChangeLog
index d88e2fe..3b88d03 100644
--- a/src/libelf/ChangeLog
+++ b/src/libelf/ChangeLog
@@ -1,3 +1,253 @@
+2014-12-18  Ulrich Drepper  <drepper@gmail.com>
+
+	* Makefile.am: Suppress output of textrel_check command.
+
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_begin.c (read_long_names): Make sure long_names len fits
+	in mapped ELF file.
+
+2014-12-15  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_getarsym.c (elf_getarsym): Check index_size doesn't overflow.
+
+2014-12-15  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_begin.c (read_long_names): Clear any garbage left in the
+	name table.
+
+2014-12-11  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_begin.c (file_read_elf): Correct ELF64 section offset check.
+
+2014-12-11  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_begin.c (read_long_names): Check for offset overflow.
+	(__libelf_next_arhdr_wrlock): Likewise. Sanity check the ar_size.
+	Don't allow it to go beyond end of file.
+
+2014-12-09  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_getarsym.c (elf_getarsym): Make sure n * w doesn't overflow.
+
+2014-11-27  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (libelf.so): Use textrel_check.
+
+2014-11-23  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Change signed
+	overflow check to unsigned.
+
+2014-11-23  Mark Wielaard  <mjw@redhat.com>
+
+	* note_xlate.h (elf_cvt_note): Copy over any leftover data if
+	src != dest. The data is probably part of truncated name/desc.
+
+2014-11-22  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_getphdrnum.c (elf_getphdrnum): Sanity check the
+	__elf_getphdrnum_rdlock result.
+
+2014-11-18  Mark Wielaard  <mjw@redhat.com>
+
+	* version_xlate.h (elf_cvt_Verdef): Check for overflow.
+	(elf_cvt_Verneed): Likewise.
+
+2014-11-17  Mark Wielaard  <mjw@redhat.com>
+
+	* elf-knowledge.h (SECTION_STRIP_P): Check name is not NULL.
+
+2014-11-16  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_getshdrstrndx.c: Check there are section headers before
+	handling SHN_XINDEX.
+
+2014-11-16  Mark Wielaard  <mjw@redhat.com>
+
+	* elf32_getphdr.c (getphdr_wrlock): Check e_phoff isn't zero.
+	Check for too many pheaders.
+	* elf_getphdrnum.c (__elf_getphdrnum_rdlock): Check section zero
+	actually exists before handling PN_XNUM.
+
+2014-11-16  Mark Wielaard  <mjw@redhat.com>
+
+	* gelf_getnote.c (gelf_getnote): Check padding overflow.
+
+2014-11-16  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_getdata.c (__libelf_set_rawdata_wrlock): Declare offset, size
+	and align as Elf64_Off and Elf64_Xword not size_t.
+
+2014-11-14  Mark Wielaard  <mjw@redhat.com>
+
+	* gelf_getnote.c (gelf_getnote): Check offset overflow.
+
+2014-11-13  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_getdata.c (__libelf_set_rawdata_wrlock): Fix unsigned overflow
+	check.
+
+2014-11-08  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_begin.c (__libelf_next_arhdr_wrlock): Use mempcpy not __mempcpy.
+
+2014-11-07  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_begin.c (file_read_elf): Correct sh_size check.
+	* elf_getdata.c (__libelf_set_rawdata_wrlock): Check for unsigned
+	overflow.
+
+2014-09-10  Petr Machata  <pmachata@redhat.com>
+
+	* elf_begin (read_unmmaped_file): Call __libelf_seterrno if the
+	file is unreadable.
+
+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.
+
+2012-08-14  Mark Wielaard  <mjw@redhat.com>
+
+	* elf32_checksum.c (ebl_debugscn_p): Removed unused define and
+	confusing outdated comment.
+
+2012-08-01  Petr Machata  <pmachata@redhat.com>
+
+	* elf_getarsym (read_number_entries): New function.
+	(elf_getarsym): Handle 64-bit symbol table, stored in special
+	entry named "/SYM64/".
+	* elf_begin.c (__libelf_next_arhdr_wrlock): Don't reject archive
+	because it contains 64-bit symbol table.
+
+2012-07-19  Mark Wielaard  <mjw@redhat.com>
+
+	* elf32_getshdr.c (load_shdr_wrlock): Add elf->flags & ELF_F_MALLOCED
+	to asserts.
+
+2012-07-17  Petr Machata  <pmachata@redhat.com>
+
+	* elf32_xlatetom.c (elfw2(LIBELFBITS, xlatetom)): Do not check for
+	integer number of records in case of ELF_T_NHDR.
+
+2012-04-02  Mark Wielaard  <mjw@redhat.com>
+
+	* elf32_offscn.c: Do not match SHT_NOBITS sections at OFFSET unless
+	there are no nonempty sections at that offset.
+
+2012-03-21  Roland McGrath  <roland@hack.frob.com>
+
+	* elf-knowledge.h (SECTION_STRIP_P): Remove < SHT_NUM check.
+
+2011-02-26  Mark Wielaard  <mjw@redhat.com>
+
+	* elf_end.c (elf_end): Call rwlock_unlock before rwlock_fini.
+
 2011-01-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Fix off64_t overflow
diff --git a/src/libelf/Makefile b/src/libelf/Makefile
new file mode 100644
index 0000000..d80b7be
--- /dev/null
+++ b/src/libelf/Makefile
@@ -0,0 +1,951 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# libelf/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+	$(include_HEADERS) $(noinst_HEADERS) $(pkginclude_HEADERS) \
+	ChangeLog
+#am__append_1 = -fpic
+noinst_PROGRAMS = $(am__EXEEXT_1)
+#am__append_2 = -lpthread
+subdir = libelf
+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 =
+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)$(libdir)" "$(DESTDIR)$(includedir)" \
+	"$(DESTDIR)$(pkgincludedir)"
+LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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) \
+	elf_error.$(OBJEXT) elf_fill.$(OBJEXT) elf_begin.$(OBJEXT) \
+	elf_next.$(OBJEXT) elf_rand.$(OBJEXT) elf_end.$(OBJEXT) \
+	elf_kind.$(OBJEXT) gelf_getclass.$(OBJEXT) \
+	elf_getbase.$(OBJEXT) elf_getident.$(OBJEXT) \
+	elf32_fsize.$(OBJEXT) elf64_fsize.$(OBJEXT) \
+	gelf_fsize.$(OBJEXT) elf32_xlatetof.$(OBJEXT) \
+	elf32_xlatetom.$(OBJEXT) elf64_xlatetof.$(OBJEXT) \
+	elf64_xlatetom.$(OBJEXT) gelf_xlate.$(OBJEXT) \
+	elf32_getehdr.$(OBJEXT) elf64_getehdr.$(OBJEXT) \
+	gelf_getehdr.$(OBJEXT) elf32_newehdr.$(OBJEXT) \
+	elf64_newehdr.$(OBJEXT) gelf_newehdr.$(OBJEXT) \
+	gelf_update_ehdr.$(OBJEXT) elf32_getphdr.$(OBJEXT) \
+	elf64_getphdr.$(OBJEXT) gelf_getphdr.$(OBJEXT) \
+	elf32_newphdr.$(OBJEXT) elf64_newphdr.$(OBJEXT) \
+	gelf_newphdr.$(OBJEXT) gelf_update_phdr.$(OBJEXT) \
+	elf_getarhdr.$(OBJEXT) elf_getarsym.$(OBJEXT) \
+	elf_rawfile.$(OBJEXT) elf_readall.$(OBJEXT) elf_cntl.$(OBJEXT) \
+	elf_getscn.$(OBJEXT) elf_nextscn.$(OBJEXT) \
+	elf_ndxscn.$(OBJEXT) elf_newscn.$(OBJEXT) \
+	elf32_getshdr.$(OBJEXT) elf64_getshdr.$(OBJEXT) \
+	gelf_getshdr.$(OBJEXT) gelf_update_shdr.$(OBJEXT) \
+	elf_strptr.$(OBJEXT) elf_rawdata.$(OBJEXT) \
+	elf_getdata.$(OBJEXT) elf_newdata.$(OBJEXT) \
+	elf_getdata_rawchunk.$(OBJEXT) elf_flagelf.$(OBJEXT) \
+	elf_flagehdr.$(OBJEXT) elf_flagphdr.$(OBJEXT) \
+	elf_flagscn.$(OBJEXT) elf_flagshdr.$(OBJEXT) \
+	elf_flagdata.$(OBJEXT) elf_memory.$(OBJEXT) \
+	elf_update.$(OBJEXT) elf32_updatenull.$(OBJEXT) \
+	elf64_updatenull.$(OBJEXT) elf32_updatefile.$(OBJEXT) \
+	elf64_updatefile.$(OBJEXT) gelf_getsym.$(OBJEXT) \
+	gelf_update_sym.$(OBJEXT) gelf_getversym.$(OBJEXT) \
+	gelf_getverneed.$(OBJEXT) gelf_getvernaux.$(OBJEXT) \
+	gelf_getverdef.$(OBJEXT) gelf_getverdaux.$(OBJEXT) \
+	gelf_getrel.$(OBJEXT) gelf_getrela.$(OBJEXT) \
+	gelf_update_rel.$(OBJEXT) gelf_update_rela.$(OBJEXT) \
+	gelf_getdyn.$(OBJEXT) gelf_update_dyn.$(OBJEXT) \
+	gelf_getmove.$(OBJEXT) gelf_update_move.$(OBJEXT) \
+	gelf_getsyminfo.$(OBJEXT) gelf_update_syminfo.$(OBJEXT) \
+	gelf_getauxv.$(OBJEXT) gelf_update_auxv.$(OBJEXT) \
+	gelf_getnote.$(OBJEXT) gelf_xlatetof.$(OBJEXT) \
+	gelf_xlatetom.$(OBJEXT) nlist.$(OBJEXT) \
+	gelf_getsymshndx.$(OBJEXT) gelf_update_symshndx.$(OBJEXT) \
+	gelf_update_versym.$(OBJEXT) gelf_update_verneed.$(OBJEXT) \
+	gelf_update_vernaux.$(OBJEXT) gelf_update_verdef.$(OBJEXT) \
+	gelf_update_verdaux.$(OBJEXT) elf_getphdrnum.$(OBJEXT) \
+	elf_getshdrnum.$(OBJEXT) elf_getshdrstrndx.$(OBJEXT) \
+	gelf_checksum.$(OBJEXT) elf32_checksum.$(OBJEXT) \
+	elf64_checksum.$(OBJEXT) libelf_crc32.$(OBJEXT) \
+	libelf_next_prime.$(OBJEXT) elf_clone.$(OBJEXT) \
+	gelf_getlib.$(OBJEXT) gelf_update_lib.$(OBJEXT) \
+	elf32_offscn.$(OBJEXT) elf64_offscn.$(OBJEXT) \
+	gelf_offscn.$(OBJEXT) elf_getaroff.$(OBJEXT) \
+	elf_gnu_hash.$(OBJEXT) elf_scnshndx.$(OBJEXT)
+libelf_a_OBJECTS = $(am_libelf_a_OBJECTS)
+libelf_pic_a_AR = $(AR) $(ARFLAGS)
+libelf_pic_a_LIBADD =
+libelf_pic_a_OBJECTS = $(am_libelf_pic_a_OBJECTS)
+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_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 1
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/libelf
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/libelf
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+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) $($(*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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
+GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
+lib_LIBRARIES = libelf.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_begin.c elf_next.c elf_rand.c elf_end.c elf_kind.c \
+		   gelf_getclass.c elf_getbase.c elf_getident.c \
+		   elf32_fsize.c elf64_fsize.c gelf_fsize.c \
+		   elf32_xlatetof.c elf32_xlatetom.c elf64_xlatetof.c \
+		   elf64_xlatetom.c gelf_xlate.c \
+		   elf32_getehdr.c elf64_getehdr.c gelf_getehdr.c \
+		   elf32_newehdr.c elf64_newehdr.c gelf_newehdr.c \
+		   gelf_update_ehdr.c \
+		   elf32_getphdr.c elf64_getphdr.c gelf_getphdr.c \
+		   elf32_newphdr.c elf64_newphdr.c gelf_newphdr.c \
+		   gelf_update_phdr.c \
+		   elf_getarhdr.c elf_getarsym.c \
+		   elf_rawfile.c elf_readall.c elf_cntl.c \
+		   elf_getscn.c elf_nextscn.c elf_ndxscn.c elf_newscn.c \
+		   elf32_getshdr.c elf64_getshdr.c gelf_getshdr.c \
+		   gelf_update_shdr.c \
+		   elf_strptr.c elf_rawdata.c elf_getdata.c elf_newdata.c \
+		   elf_getdata_rawchunk.c \
+		   elf_flagelf.c elf_flagehdr.c elf_flagphdr.c elf_flagscn.c \
+		   elf_flagshdr.c elf_flagdata.c elf_memory.c \
+		   elf_update.c elf32_updatenull.c elf64_updatenull.c \
+		   elf32_updatefile.c elf64_updatefile.c \
+		   gelf_getsym.c gelf_update_sym.c \
+		   gelf_getversym.c gelf_getverneed.c gelf_getvernaux.c \
+		   gelf_getverdef.c gelf_getverdaux.c \
+		   gelf_getrel.c gelf_getrela.c \
+		   gelf_update_rel.c gelf_update_rela.c \
+		   gelf_getdyn.c gelf_update_dyn.c \
+		   gelf_getmove.c gelf_update_move.c \
+		   gelf_getsyminfo.c gelf_update_syminfo.c \
+		   gelf_getauxv.c gelf_update_auxv.c \
+		   gelf_getnote.c \
+		   gelf_xlatetof.c gelf_xlatetom.c \
+		   nlist.c \
+		   gelf_getsymshndx.c gelf_update_symshndx.c \
+		   gelf_update_versym.c gelf_update_verneed.c \
+		   gelf_update_vernaux.c gelf_update_verdef.c \
+		   gelf_update_verdaux.c \
+		   elf_getphdrnum.c elf_getshdrnum.c elf_getshdrstrndx.c \
+		   gelf_checksum.c elf32_checksum.c elf64_checksum.c \
+		   libelf_crc32.c libelf_next_prime.c \
+		   elf_clone.c \
+		   gelf_getlib.c gelf_update_lib.c \
+		   elf32_offscn.c elf64_offscn.c gelf_offscn.c \
+		   elf_getaroff.c \
+		   elf_gnu_hash.c \
+		   elf_scnshndx.c
+
+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
+
+EXTRA_DIST = libelf.map
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: # $(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 libelf/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits libelf/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLIBRARIES: $(lib_LIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  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)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  if test -f $$p; then \
+	    $(am__strip_dir) \
+	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+	  else :; fi; \
+	done
+
+uninstall-libLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libelf.a: $(libelf_a_OBJECTS) $(libelf_a_DEPENDENCIES) $(EXTRA_libelf_a_DEPENDENCIES) 
+	$(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) 
+	$(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)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/elf32_checksum.Po
+include ./$(DEPDIR)/elf32_fsize.Po
+include ./$(DEPDIR)/elf32_getehdr.Po
+include ./$(DEPDIR)/elf32_getphdr.Po
+include ./$(DEPDIR)/elf32_getshdr.Po
+include ./$(DEPDIR)/elf32_newehdr.Po
+include ./$(DEPDIR)/elf32_newphdr.Po
+include ./$(DEPDIR)/elf32_offscn.Po
+include ./$(DEPDIR)/elf32_updatefile.Po
+include ./$(DEPDIR)/elf32_updatenull.Po
+include ./$(DEPDIR)/elf32_xlatetof.Po
+include ./$(DEPDIR)/elf32_xlatetom.Po
+include ./$(DEPDIR)/elf64_checksum.Po
+include ./$(DEPDIR)/elf64_fsize.Po
+include ./$(DEPDIR)/elf64_getehdr.Po
+include ./$(DEPDIR)/elf64_getphdr.Po
+include ./$(DEPDIR)/elf64_getshdr.Po
+include ./$(DEPDIR)/elf64_newehdr.Po
+include ./$(DEPDIR)/elf64_newphdr.Po
+include ./$(DEPDIR)/elf64_offscn.Po
+include ./$(DEPDIR)/elf64_updatefile.Po
+include ./$(DEPDIR)/elf64_updatenull.Po
+include ./$(DEPDIR)/elf64_xlatetof.Po
+include ./$(DEPDIR)/elf64_xlatetom.Po
+include ./$(DEPDIR)/elf_begin.Po
+include ./$(DEPDIR)/elf_clone.Po
+include ./$(DEPDIR)/elf_cntl.Po
+include ./$(DEPDIR)/elf_end.Po
+include ./$(DEPDIR)/elf_error.Po
+include ./$(DEPDIR)/elf_fill.Po
+include ./$(DEPDIR)/elf_flagdata.Po
+include ./$(DEPDIR)/elf_flagehdr.Po
+include ./$(DEPDIR)/elf_flagelf.Po
+include ./$(DEPDIR)/elf_flagphdr.Po
+include ./$(DEPDIR)/elf_flagscn.Po
+include ./$(DEPDIR)/elf_flagshdr.Po
+include ./$(DEPDIR)/elf_getarhdr.Po
+include ./$(DEPDIR)/elf_getaroff.Po
+include ./$(DEPDIR)/elf_getarsym.Po
+include ./$(DEPDIR)/elf_getbase.Po
+include ./$(DEPDIR)/elf_getdata.Po
+include ./$(DEPDIR)/elf_getdata_rawchunk.Po
+include ./$(DEPDIR)/elf_getident.Po
+include ./$(DEPDIR)/elf_getphdrnum.Po
+include ./$(DEPDIR)/elf_getscn.Po
+include ./$(DEPDIR)/elf_getshdrnum.Po
+include ./$(DEPDIR)/elf_getshdrstrndx.Po
+include ./$(DEPDIR)/elf_gnu_hash.Po
+include ./$(DEPDIR)/elf_hash.Po
+include ./$(DEPDIR)/elf_kind.Po
+include ./$(DEPDIR)/elf_memory.Po
+include ./$(DEPDIR)/elf_ndxscn.Po
+include ./$(DEPDIR)/elf_newdata.Po
+include ./$(DEPDIR)/elf_newscn.Po
+include ./$(DEPDIR)/elf_next.Po
+include ./$(DEPDIR)/elf_nextscn.Po
+include ./$(DEPDIR)/elf_rand.Po
+include ./$(DEPDIR)/elf_rawdata.Po
+include ./$(DEPDIR)/elf_rawfile.Po
+include ./$(DEPDIR)/elf_readall.Po
+include ./$(DEPDIR)/elf_scnshndx.Po
+include ./$(DEPDIR)/elf_strptr.Po
+include ./$(DEPDIR)/elf_update.Po
+include ./$(DEPDIR)/elf_version.Po
+include ./$(DEPDIR)/gelf_checksum.Po
+include ./$(DEPDIR)/gelf_fsize.Po
+include ./$(DEPDIR)/gelf_getauxv.Po
+include ./$(DEPDIR)/gelf_getclass.Po
+include ./$(DEPDIR)/gelf_getdyn.Po
+include ./$(DEPDIR)/gelf_getehdr.Po
+include ./$(DEPDIR)/gelf_getlib.Po
+include ./$(DEPDIR)/gelf_getmove.Po
+include ./$(DEPDIR)/gelf_getnote.Po
+include ./$(DEPDIR)/gelf_getphdr.Po
+include ./$(DEPDIR)/gelf_getrel.Po
+include ./$(DEPDIR)/gelf_getrela.Po
+include ./$(DEPDIR)/gelf_getshdr.Po
+include ./$(DEPDIR)/gelf_getsym.Po
+include ./$(DEPDIR)/gelf_getsyminfo.Po
+include ./$(DEPDIR)/gelf_getsymshndx.Po
+include ./$(DEPDIR)/gelf_getverdaux.Po
+include ./$(DEPDIR)/gelf_getverdef.Po
+include ./$(DEPDIR)/gelf_getvernaux.Po
+include ./$(DEPDIR)/gelf_getverneed.Po
+include ./$(DEPDIR)/gelf_getversym.Po
+include ./$(DEPDIR)/gelf_newehdr.Po
+include ./$(DEPDIR)/gelf_newphdr.Po
+include ./$(DEPDIR)/gelf_offscn.Po
+include ./$(DEPDIR)/gelf_update_auxv.Po
+include ./$(DEPDIR)/gelf_update_dyn.Po
+include ./$(DEPDIR)/gelf_update_ehdr.Po
+include ./$(DEPDIR)/gelf_update_lib.Po
+include ./$(DEPDIR)/gelf_update_move.Po
+include ./$(DEPDIR)/gelf_update_phdr.Po
+include ./$(DEPDIR)/gelf_update_rel.Po
+include ./$(DEPDIR)/gelf_update_rela.Po
+include ./$(DEPDIR)/gelf_update_shdr.Po
+include ./$(DEPDIR)/gelf_update_sym.Po
+include ./$(DEPDIR)/gelf_update_syminfo.Po
+include ./$(DEPDIR)/gelf_update_symshndx.Po
+include ./$(DEPDIR)/gelf_update_verdaux.Po
+include ./$(DEPDIR)/gelf_update_verdef.Po
+include ./$(DEPDIR)/gelf_update_vernaux.Po
+include ./$(DEPDIR)/gelf_update_verneed.Po
+include ./$(DEPDIR)/gelf_update_versym.Po
+include ./$(DEPDIR)/gelf_xlate.Po
+include ./$(DEPDIR)/gelf_xlatetof.Po
+include ./$(DEPDIR)/gelf_xlatetom.Po
+include ./$(DEPDIR)/libelf_crc32.Po
+include ./$(DEPDIR)/libelf_next_prime.Po
+include ./$(DEPDIR)/nlist.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+install-includeHEADERS: $(include_HEADERS)
+	@$(NORMAL_INSTALL)
+	@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"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+	done
+
+uninstall-includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
+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) $(PROGRAMS) $(HEADERS)
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(pkgincludedir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install-exec: install-exec-am
+install-data: install-data-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-libLIBRARIES clean-noinstLIBRARIES \
+	clean-noinstPROGRAMS 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-includeHEADERS install-pkgincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLIBRARIES
+
+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-includeHEADERS uninstall-libLIBRARIES \
+	uninstall-pkgincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libLIBRARIES 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-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
+
+
+%.os: %.c %.o
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
+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)
+	@$(textrel_check)
+	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.
+.NOEXPORT:
diff --git a/src/libelf/Makefile.am b/src/libelf/Makefile.am
index c7c83f3..afcb2aa 100644
--- a/src/libelf/Makefile.am
+++ b/src/libelf/Makefile.am
@@ -1,28 +1,31 @@
 ## Process this file with automake to create Makefile.in
 ##
 ## Copyright (C) 1996-2010 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## This file is free software; you can redistribute it and/or modify
+## it under the terms of either
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+##   * 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 a copy of the GNU General Public License along
-## with Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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
 if BUILD_STATIC
@@ -32,10 +35,8 @@
 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
@@ -89,7 +90,6 @@
 		   elf_gnu_hash.c \
 		   elf_scnshndx.c
 
-if !MUDFLAP
 libelf_pic_a_SOURCES =
 am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
 
@@ -99,11 +99,11 @@
 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
+	@$(textrel_check)
 	ln -fs $@ $@.$(VERSION)
 
 install: install-am libelf.so
@@ -116,7 +116,6 @@
 	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
diff --git a/src/libelf/Makefile.in b/src/libelf/Makefile.in
index fcb3ed5..05c2dd0 100644
--- a/src/libelf/Makefile.in
+++ b/src/libelf/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -18,6 +17,51 @@
 
 
 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@
@@ -36,17 +80,17 @@
 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) \
@@ -76,11 +120,20 @@
 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)$(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) \
@@ -141,36 +194,82 @@
 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@
@@ -179,10 +278,13 @@
 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@
@@ -203,6 +305,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -213,6 +316,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -227,6 +331,7 @@
 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@
@@ -276,23 +381,21 @@
 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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 \
@@ -344,10 +447,10 @@
 		   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
 
@@ -377,6 +480,7 @@
 	    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
@@ -388,7 +492,6 @@
 $(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 \
@@ -396,6 +499,8 @@
 	  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)
@@ -412,29 +517,26 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
-	cd "$(DESTDIR)$(libdir)" && rm -f $$files
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
 
 clean-libLIBRARIES:
 	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libelf.a: $(libelf_a_OBJECTS) $(libelf_a_DEPENDENCIES) 
-	-rm -f libelf.a
-	$(libelf_a_AR) libelf.a $(libelf_a_OBJECTS) $(libelf_a_LIBADD)
-	$(RANLIB) libelf.a
-libelf_pic.a: $(libelf_pic_a_OBJECTS) $(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
+
+libelf.a: $(libelf_a_OBJECTS) $(libelf_a_DEPENDENCIES) $(EXTRA_libelf_a_DEPENDENCIES) 
+	$(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) 
+	$(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) 
-@MUDFLAP_TRUE@	@rm -f libelf.so$(EXEEXT)
-@MUDFLAP_TRUE@	$(LINK) $(libelf_so_OBJECTS) $(libelf_so_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -555,22 +657,25 @@
 @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 -o $@ $<
 
 .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 -o $@ `$(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"; \
@@ -584,13 +689,14 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
+	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"; \
@@ -604,30 +710,17 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
+	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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -639,15 +732,11 @@
 	      $$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
@@ -656,6 +745,21 @@
 	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
@@ -697,20 +801,23 @@
 	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
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -796,19 +903,20 @@
 
 .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
 
 
@@ -820,23 +928,23 @@
 @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)
+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)
+	@$(textrel_check)
+	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
+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
 
-@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
+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.
diff --git a/src/libelf/abstract.h b/src/libelf/abstract.h
index e359f96..53713ee 100644
--- a/src/libelf/abstract.h
+++ b/src/libelf/abstract.h
@@ -1,52 +1,31 @@
 /* Abstract description of component ELF types.
    Copyright (C) 1998, 1999, 2000, 2002, 2004, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 /* ELF header.  */
 #define Ehdr(Bits, Ext) \
diff --git a/src/libelf/common.h b/src/libelf/common.h
index 8eef2a7..744f1bb 100644
--- a/src/libelf/common.h
+++ b/src/libelf/common.h
@@ -1,52 +1,31 @@
 /* Common definitions for handling files in memory or only on disk.
    Copyright (C) 1998, 1999, 2000, 2002, 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _COMMON_H
 #define _COMMON_H       1
diff --git a/src/libelf/dl-hash.h b/src/libelf/dl-hash.h
index fd59394..e286d2e 100644
--- a/src/libelf/dl-hash.h
+++ b/src/libelf/dl-hash.h
@@ -1,51 +1,31 @@
 /* Compute hash value for given string according to ELF standard.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1995.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under an Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) and to distribute linked
-   combinations including the two.  Non-GPL Code permitted under this
-   exception must only link to the code of Red Hat elfutils through those
-   well defined interfaces identified in the file named EXCEPTION found in
-   the source code files (the "Approved Interfaces").  The files of Non-GPL
-   Code may instantiate templates or use macros or inline functions from
-   the Approved Interfaces without causing the resulting work to be covered
-   by the GNU General Public License.  Only Red Hat, Inc. may make changes
-   or additions to the list of Approved Interfaces.  Red Hat's grant of
-   this exception is conditioned upon your not adding any new exceptions.
-   If you wish to add a new Approved Interface or exception, please contact
-   Red Hat.  You must obey the GNU General Public License in all respects
-   for all of the Red Hat elfutils code and other code used in conjunction
-   with Red Hat elfutils except the Non-GPL Code covered by this exception.
-   If you modify this file, you may extend this exception to your version
-   of the file, but you are not obligated to do so.  If you do not wish to
-   provide this exception without modification, you must delete this
-   exception statement from your version and license this file solely under
-   the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _DL_HASH_H
 #define _DL_HASH_H	1
diff --git a/src/libelf/elf-knowledge.h b/src/libelf/elf-knowledge.h
index 8b4c0d7..24534b3 100644
--- a/src/libelf/elf-knowledge.h
+++ b/src/libelf/elf-knowledge.h
@@ -1,52 +1,31 @@
 /* Accumulation of various pieces of knowledge about ELF.
-   Copyright (C) 2000, 2001, 2002, 2003, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _ELF_KNOWLEDGE_H
 #define _ELF_KNOWLEDGE_H	1
@@ -62,13 +41,11 @@
    && (shdr)->sh_type != SHT_NOTE					      \
    && (((shdr)->sh_type) != SHT_PROGBITS				      \
        /* Never remove .gnu.warning.* sections.  */			      \
-       || (strncmp (name, ".gnu.warning.", sizeof ".gnu.warning." - 1) != 0   \
+       || (name != NULL							      \
+	   && strncmp (name, ".gnu.warning.", sizeof ".gnu.warning." - 1) != 0\
 	   /* We remove .comment sections only if explicitly told to do so. */\
 	   && (remove_comment						      \
-	       || strcmp (name, ".comment") != 0)))			      \
-   /* So far we do not remove any of the non-standard sections.		      \
-      XXX Maybe in future.  */						      \
-   && (shdr)->sh_type < SHT_NUM)
+	       || strcmp (name, ".comment") != 0))))
 
 
 /* Test whether `sh_info' field in section header contains a section
diff --git a/src/libelf/elf.h b/src/libelf/elf.h
index 2b06377..40e87b2 100644
--- a/src/libelf/elf.h
+++ b/src/libelf/elf.h
@@ -1,6 +1,5 @@
 /* This file defines standard ELF types, structures, and macros.
-   Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010
-	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
@@ -14,16 +13,13 @@
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
 
 #ifndef _ELF_H
 #define	_ELF_H 1
 
-#ifndef __APPLE__
 #include <features.h>
-#endif
 
 __BEGIN_DECLS
 
@@ -144,7 +140,8 @@
 #define ELFOSABI_SYSV		0	/* Alias.  */
 #define ELFOSABI_HPUX		1	/* HP-UX */
 #define ELFOSABI_NETBSD		2	/* NetBSD.  */
-#define ELFOSABI_LINUX		3	/* Linux.  */
+#define ELFOSABI_GNU		3	/* Object uses GNU ELF extensions.  */
+#define ELFOSABI_LINUX		ELFOSABI_GNU /* Compatibility alias.  */
 #define ELFOSABI_SOLARIS	6	/* Sun Solaris.  */
 #define ELFOSABI_AIX		7	/* IBM AIX.  */
 #define ELFOSABI_IRIX		8	/* SGI Irix.  */
@@ -252,9 +249,11 @@
 #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_NUM		95
-
-#define EM_AARCH64	183		/* ARM 64-bit */
+#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
 
 /* If it is necessary to assign new unofficial EM_* values, please
    pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the
@@ -618,6 +617,10 @@
 #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 */
@@ -625,6 +628,19 @@
 #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.  */
 
@@ -788,6 +804,15 @@
 #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
@@ -968,7 +993,7 @@
 
 /* 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
@@ -990,6 +1015,9 @@
 
 #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
@@ -1205,7 +1233,7 @@
 #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
@@ -1330,6 +1358,7 @@
 #define R_SPARC_H34		85
 #define R_SPARC_SIZE32		86
 #define R_SPARC_SIZE64		87
+#define R_SPARC_WDISP10		88
 #define R_SPARC_JMP_IREL	248
 #define R_SPARC_IRELATIVE	249
 #define R_SPARC_GNU_VTINHERIT	250
@@ -1340,113 +1369,105 @@
 
 /* For Sparc64, legal values for d_tag of Elf64_Dyn.  */
 
-#define DT_SPARC_REGISTER 0x70000001
-#define DT_SPARC_NUM	2
-
-/* Bits present in AT_HWCAP on SPARC.  */
-
-#define HWCAP_SPARC_FLUSH	1	/* The CPU supports flush insn.  */
-#define HWCAP_SPARC_STBAR	2
-#define HWCAP_SPARC_SWAP	4
-#define HWCAP_SPARC_MULDIV	8
-#define HWCAP_SPARC_V9		16	/* The CPU is v9, so v8plus is ok.  */
-#define HWCAP_SPARC_ULTRA3	32
-#define HWCAP_SPARC_BLKINIT	64	/* Sun4v with block-init/load-twin.  */
-#define HWCAP_SPARC_N2		128
+#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.  */
+#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 non-official names and should not be used.  */
+/* The following are unofficial 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 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.  */
@@ -1468,23 +1489,23 @@
 {
   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.  */
@@ -2231,6 +2252,17 @@
 #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
@@ -2240,12 +2272,29 @@
 #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 */
 
@@ -2263,6 +2312,9 @@
 #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.  */
@@ -2307,25 +2359,154 @@
 #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
-#define R_ARM_THM_SWI8		14
-#define R_ARM_XPC25		15
-#define R_ARM_THM_XPC22		16
+#define R_ARM_SWI24		13	/* Obsolete static relocation.  */
+#define R_ARM_TLS_DESC		13      /* Dynamic relocation.  */
+#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 */
@@ -2336,17 +2517,109 @@
 #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	/* 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
@@ -2357,6 +2630,19 @@
 					   static TLS block offset */
 #define R_ARM_TLS_LE32		108	/* 32 bit offset relative to static
 					   TLS block */
+#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_ARM_THM_RPC22		251
@@ -2633,8 +2919,9 @@
 #define R_390_GOTPLT20		59	/* 20 bit offset to jump slot.  */
 #define R_390_TLS_GOTIE20	60	/* 20 bit GOT offset for static TLS
 					   block offset.  */
+#define R_390_IRELATIVE         61      /* STT_GNU_IFUNC relocation.  */
 /* Keep this the last entry.  */
-#define R_390_NUM		61
+#define R_390_NUM		62
 
 
 /* CRIS relocations.  */
@@ -2709,8 +2996,9 @@
 					   descriptor.  */
 #define R_X86_64_TLSDESC        36	/* TLS descriptor.  */
 #define R_X86_64_IRELATIVE	37	/* Adjust indirectly by program base */
+#define R_X86_64_RELATIVE64	38	/* 64-bit adjust by program base */
 
-#define R_X86_64_NUM		38
+#define R_X86_64_NUM		39
 
 
 /* AM33 relocations.  */
@@ -2738,8 +3026,23 @@
 #define R_MN10300_GLOB_DAT	21	/* Create GOT entry.  */
 #define R_MN10300_JMP_SLOT	22	/* Create PLT entry.  */
 #define R_MN10300_RELATIVE	23	/* Adjust by program base.  */
-
-#define R_MN10300_NUM		24
+#define R_MN10300_TLS_GD	24	/* 32-bit offset for global dynamic.  */
+#define R_MN10300_TLS_LD	25	/* 32-bit offset for local dynamic.  */
+#define R_MN10300_TLS_LDO	26	/* Module-relative offset.  */
+#define R_MN10300_TLS_GOTIE	27	/* GOT offset for static TLS block
+					   offset.  */
+#define R_MN10300_TLS_IE	28	/* GOT address for static TLS block
+					   offset.  */
+#define R_MN10300_TLS_LE	29	/* Offset relative to static TLS
+					   block.  */
+#define R_MN10300_TLS_DTPMOD	30	/* ID of module containing symbol.  */
+#define R_MN10300_TLS_DTPOFF	31	/* Offset in module TLS block.  */
+#define R_MN10300_TLS_TPOFF	32	/* Offset in static TLS block.  */
+#define R_MN10300_SYM_DIFF	33	/* Adjustment for next reloc as needed
+					   by linker relaxation.  */
+#define R_MN10300_ALIGN		34	/* Alignment requirement for linker
+					   relaxation.  */
+#define R_MN10300_NUM		35
 
 
 /* M32R relocs.  */
@@ -2797,6 +3100,263 @@
 #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_TILEPRO_32		1	/* Direct 32 bit */
+#define R_TILEPRO_16		2	/* Direct 16 bit */
+#define R_TILEPRO_8		3	/* Direct 8 bit */
+#define R_TILEPRO_32_PCREL	4	/* PC relative 32 bit */
+#define R_TILEPRO_16_PCREL	5	/* PC relative 16 bit */
+#define R_TILEPRO_8_PCREL	6	/* PC relative 8 bit */
+#define R_TILEPRO_LO16		7	/* Low 16 bit */
+#define R_TILEPRO_HI16		8	/* High 16 bit */
+#define R_TILEPRO_HA16		9	/* High 16 bit, adjusted */
+#define R_TILEPRO_COPY		10	/* Copy relocation */
+#define R_TILEPRO_GLOB_DAT	11	/* Create GOT entry */
+#define R_TILEPRO_JMP_SLOT	12	/* Create PLT entry */
+#define R_TILEPRO_RELATIVE	13	/* Adjust by program base */
+#define R_TILEPRO_BROFF_X1	14	/* X1 pipe branch offset */
+#define R_TILEPRO_JOFFLONG_X1	15	/* X1 pipe jump offset */
+#define R_TILEPRO_JOFFLONG_X1_PLT 16	/* X1 pipe jump offset to PLT */
+#define R_TILEPRO_IMM8_X0	17	/* X0 pipe 8-bit */
+#define R_TILEPRO_IMM8_Y0	18	/* Y0 pipe 8-bit */
+#define R_TILEPRO_IMM8_X1	19	/* X1 pipe 8-bit */
+#define R_TILEPRO_IMM8_Y1	20	/* Y1 pipe 8-bit */
+#define R_TILEPRO_MT_IMM15_X1	21	/* X1 pipe mtspr */
+#define R_TILEPRO_MF_IMM15_X1	22	/* X1 pipe mfspr */
+#define R_TILEPRO_IMM16_X0	23	/* X0 pipe 16-bit */
+#define R_TILEPRO_IMM16_X1	24	/* X1 pipe 16-bit */
+#define R_TILEPRO_IMM16_X0_LO	25	/* X0 pipe low 16-bit */
+#define R_TILEPRO_IMM16_X1_LO	26	/* X1 pipe low 16-bit */
+#define R_TILEPRO_IMM16_X0_HI	27	/* X0 pipe high 16-bit */
+#define R_TILEPRO_IMM16_X1_HI	28	/* X1 pipe high 16-bit */
+#define R_TILEPRO_IMM16_X0_HA	29	/* X0 pipe high 16-bit, adjusted */
+#define R_TILEPRO_IMM16_X1_HA	30	/* X1 pipe high 16-bit, adjusted */
+#define R_TILEPRO_IMM16_X0_PCREL 31	/* X0 pipe PC relative 16 bit */
+#define R_TILEPRO_IMM16_X1_PCREL 32	/* X1 pipe PC relative 16 bit */
+#define R_TILEPRO_IMM16_X0_LO_PCREL 33	/* X0 pipe PC relative low 16 bit */
+#define R_TILEPRO_IMM16_X1_LO_PCREL 34	/* X1 pipe PC relative low 16 bit */
+#define R_TILEPRO_IMM16_X0_HI_PCREL 35	/* X0 pipe PC relative high 16 bit */
+#define R_TILEPRO_IMM16_X1_HI_PCREL 36	/* X1 pipe PC relative high 16 bit */
+#define R_TILEPRO_IMM16_X0_HA_PCREL 37	/* X0 pipe PC relative ha() 16 bit */
+#define R_TILEPRO_IMM16_X1_HA_PCREL 38	/* X1 pipe PC relative ha() 16 bit */
+#define R_TILEPRO_IMM16_X0_GOT	39	/* X0 pipe 16-bit GOT offset */
+#define R_TILEPRO_IMM16_X1_GOT	40	/* X1 pipe 16-bit GOT offset */
+#define R_TILEPRO_IMM16_X0_GOT_LO 41	/* X0 pipe low 16-bit GOT offset */
+#define R_TILEPRO_IMM16_X1_GOT_LO 42	/* X1 pipe low 16-bit GOT offset */
+#define R_TILEPRO_IMM16_X0_GOT_HI 43	/* X0 pipe high 16-bit GOT offset */
+#define R_TILEPRO_IMM16_X1_GOT_HI 44	/* X1 pipe high 16-bit GOT offset */
+#define R_TILEPRO_IMM16_X0_GOT_HA 45	/* X0 pipe ha() 16-bit GOT offset */
+#define R_TILEPRO_IMM16_X1_GOT_HA 46	/* X1 pipe ha() 16-bit GOT offset */
+#define R_TILEPRO_MMSTART_X0	47	/* X0 pipe mm "start" */
+#define R_TILEPRO_MMEND_X0	48	/* X0 pipe mm "end" */
+#define R_TILEPRO_MMSTART_X1	49	/* X1 pipe mm "start" */
+#define R_TILEPRO_MMEND_X1	50	/* X1 pipe mm "end" */
+#define R_TILEPRO_SHAMT_X0	51	/* X0 pipe shift amount */
+#define R_TILEPRO_SHAMT_X1	52	/* X1 pipe shift amount */
+#define R_TILEPRO_SHAMT_Y0	53	/* Y0 pipe shift amount */
+#define R_TILEPRO_SHAMT_Y1	54	/* Y1 pipe shift amount */
+#define R_TILEPRO_DEST_IMM8_X1	55	/* X1 pipe destination 8-bit */
+/* Relocs 56-59 are currently not defined.  */
+#define R_TILEPRO_TLS_GD_CALL	60	/* "jal" for TLS GD */
+#define R_TILEPRO_IMM8_X0_TLS_GD_ADD 61	/* X0 pipe "addi" for TLS GD */
+#define R_TILEPRO_IMM8_X1_TLS_GD_ADD 62	/* X1 pipe "addi" for TLS GD */
+#define R_TILEPRO_IMM8_Y0_TLS_GD_ADD 63	/* Y0 pipe "addi" for TLS GD */
+#define R_TILEPRO_IMM8_Y1_TLS_GD_ADD 64	/* Y1 pipe "addi" for TLS GD */
+#define R_TILEPRO_TLS_IE_LOAD	65	/* "lw_tls" for TLS IE */
+#define R_TILEPRO_IMM16_X0_TLS_GD 66	/* X0 pipe 16-bit TLS GD offset */
+#define R_TILEPRO_IMM16_X1_TLS_GD 67	/* X1 pipe 16-bit TLS GD offset */
+#define R_TILEPRO_IMM16_X0_TLS_GD_LO 68	/* X0 pipe low 16-bit TLS GD offset */
+#define R_TILEPRO_IMM16_X1_TLS_GD_LO 69	/* X1 pipe low 16-bit TLS GD offset */
+#define R_TILEPRO_IMM16_X0_TLS_GD_HI 70	/* X0 pipe high 16-bit TLS GD offset */
+#define R_TILEPRO_IMM16_X1_TLS_GD_HI 71	/* X1 pipe high 16-bit TLS GD offset */
+#define R_TILEPRO_IMM16_X0_TLS_GD_HA 72	/* X0 pipe ha() 16-bit TLS GD offset */
+#define R_TILEPRO_IMM16_X1_TLS_GD_HA 73	/* X1 pipe ha() 16-bit TLS GD offset */
+#define R_TILEPRO_IMM16_X0_TLS_IE 74	/* X0 pipe 16-bit TLS IE offset */
+#define R_TILEPRO_IMM16_X1_TLS_IE 75	/* X1 pipe 16-bit TLS IE offset */
+#define R_TILEPRO_IMM16_X0_TLS_IE_LO 76	/* X0 pipe low 16-bit TLS IE offset */
+#define R_TILEPRO_IMM16_X1_TLS_IE_LO 77	/* X1 pipe low 16-bit TLS IE offset */
+#define R_TILEPRO_IMM16_X0_TLS_IE_HI 78	/* X0 pipe high 16-bit TLS IE offset */
+#define R_TILEPRO_IMM16_X1_TLS_IE_HI 79	/* X1 pipe high 16-bit TLS IE offset */
+#define R_TILEPRO_IMM16_X0_TLS_IE_HA 80	/* X0 pipe ha() 16-bit TLS IE offset */
+#define R_TILEPRO_IMM16_X1_TLS_IE_HA 81	/* X1 pipe ha() 16-bit TLS IE offset */
+#define R_TILEPRO_TLS_DTPMOD32	82	/* ID of module containing symbol */
+#define R_TILEPRO_TLS_DTPOFF32	83	/* Offset in TLS block */
+#define R_TILEPRO_TLS_TPOFF32	84	/* Offset in static TLS block */
+#define R_TILEPRO_IMM16_X0_TLS_LE 85	/* X0 pipe 16-bit TLS LE offset */
+#define R_TILEPRO_IMM16_X1_TLS_LE 86	/* X1 pipe 16-bit TLS LE offset */
+#define R_TILEPRO_IMM16_X0_TLS_LE_LO 87	/* X0 pipe low 16-bit TLS LE offset */
+#define R_TILEPRO_IMM16_X1_TLS_LE_LO 88	/* X1 pipe low 16-bit TLS LE offset */
+#define R_TILEPRO_IMM16_X0_TLS_LE_HI 89	/* X0 pipe high 16-bit TLS LE offset */
+#define R_TILEPRO_IMM16_X1_TLS_LE_HI 90	/* X1 pipe high 16-bit TLS LE offset */
+#define R_TILEPRO_IMM16_X0_TLS_LE_HA 91	/* X0 pipe ha() 16-bit TLS LE offset */
+#define R_TILEPRO_IMM16_X1_TLS_LE_HA 92	/* X1 pipe ha() 16-bit TLS LE offset */
+
+#define R_TILEPRO_GNU_VTINHERIT	128	/* GNU C++ vtable hierarchy */
+#define R_TILEPRO_GNU_VTENTRY	129	/* GNU C++ vtable member usage */
+
+#define R_TILEPRO_NUM		130
+
+
+/* TILE-Gx relocations.  */
+#define R_TILEGX_NONE		0	/* No reloc */
+#define R_TILEGX_64		1	/* Direct 64 bit */
+#define R_TILEGX_32		2	/* Direct 32 bit */
+#define R_TILEGX_16		3	/* Direct 16 bit */
+#define R_TILEGX_8		4	/* Direct 8 bit */
+#define R_TILEGX_64_PCREL	5	/* PC relative 64 bit */
+#define R_TILEGX_32_PCREL	6	/* PC relative 32 bit */
+#define R_TILEGX_16_PCREL	7	/* PC relative 16 bit */
+#define R_TILEGX_8_PCREL	8	/* PC relative 8 bit */
+#define R_TILEGX_HW0		9	/* hword 0 16-bit */
+#define R_TILEGX_HW1		10	/* hword 1 16-bit */
+#define R_TILEGX_HW2		11	/* hword 2 16-bit */
+#define R_TILEGX_HW3		12	/* hword 3 16-bit */
+#define R_TILEGX_HW0_LAST	13	/* last hword 0 16-bit */
+#define R_TILEGX_HW1_LAST	14	/* last hword 1 16-bit */
+#define R_TILEGX_HW2_LAST	15	/* last hword 2 16-bit */
+#define R_TILEGX_COPY		16	/* Copy relocation */
+#define R_TILEGX_GLOB_DAT	17	/* Create GOT entry */
+#define R_TILEGX_JMP_SLOT	18	/* Create PLT entry */
+#define R_TILEGX_RELATIVE	19	/* Adjust by program base */
+#define R_TILEGX_BROFF_X1	20	/* X1 pipe branch offset */
+#define R_TILEGX_JUMPOFF_X1	21	/* X1 pipe jump offset */
+#define R_TILEGX_JUMPOFF_X1_PLT	22	/* X1 pipe jump offset to PLT */
+#define R_TILEGX_IMM8_X0	23	/* X0 pipe 8-bit */
+#define R_TILEGX_IMM8_Y0	24	/* Y0 pipe 8-bit */
+#define R_TILEGX_IMM8_X1	25	/* X1 pipe 8-bit */
+#define R_TILEGX_IMM8_Y1	26	/* Y1 pipe 8-bit */
+#define R_TILEGX_DEST_IMM8_X1	27	/* X1 pipe destination 8-bit */
+#define R_TILEGX_MT_IMM14_X1	28	/* X1 pipe mtspr */
+#define R_TILEGX_MF_IMM14_X1	29	/* X1 pipe mfspr */
+#define R_TILEGX_MMSTART_X0	30	/* X0 pipe mm "start" */
+#define R_TILEGX_MMEND_X0	31	/* X0 pipe mm "end" */
+#define R_TILEGX_SHAMT_X0	32	/* X0 pipe shift amount */
+#define R_TILEGX_SHAMT_X1	33	/* X1 pipe shift amount */
+#define R_TILEGX_SHAMT_Y0	34	/* Y0 pipe shift amount */
+#define R_TILEGX_SHAMT_Y1	35	/* Y1 pipe shift amount */
+#define R_TILEGX_IMM16_X0_HW0	36	/* X0 pipe hword 0 */
+#define R_TILEGX_IMM16_X1_HW0	37	/* X1 pipe hword 0 */
+#define R_TILEGX_IMM16_X0_HW1	38	/* X0 pipe hword 1 */
+#define R_TILEGX_IMM16_X1_HW1	39	/* X1 pipe hword 1 */
+#define R_TILEGX_IMM16_X0_HW2	40	/* X0 pipe hword 2 */
+#define R_TILEGX_IMM16_X1_HW2	41	/* X1 pipe hword 2 */
+#define R_TILEGX_IMM16_X0_HW3	42	/* X0 pipe hword 3 */
+#define R_TILEGX_IMM16_X1_HW3	43	/* X1 pipe hword 3 */
+#define R_TILEGX_IMM16_X0_HW0_LAST 44	/* X0 pipe last hword 0 */
+#define R_TILEGX_IMM16_X1_HW0_LAST 45	/* X1 pipe last hword 0 */
+#define R_TILEGX_IMM16_X0_HW1_LAST 46	/* X0 pipe last hword 1 */
+#define R_TILEGX_IMM16_X1_HW1_LAST 47	/* X1 pipe last hword 1 */
+#define R_TILEGX_IMM16_X0_HW2_LAST 48	/* X0 pipe last hword 2 */
+#define R_TILEGX_IMM16_X1_HW2_LAST 49	/* X1 pipe last hword 2 */
+#define R_TILEGX_IMM16_X0_HW0_PCREL 50	/* X0 pipe PC relative hword 0 */
+#define R_TILEGX_IMM16_X1_HW0_PCREL 51	/* X1 pipe PC relative hword 0 */
+#define R_TILEGX_IMM16_X0_HW1_PCREL 52	/* X0 pipe PC relative hword 1 */
+#define R_TILEGX_IMM16_X1_HW1_PCREL 53	/* X1 pipe PC relative hword 1 */
+#define R_TILEGX_IMM16_X0_HW2_PCREL 54	/* X0 pipe PC relative hword 2 */
+#define R_TILEGX_IMM16_X1_HW2_PCREL 55	/* X1 pipe PC relative hword 2 */
+#define R_TILEGX_IMM16_X0_HW3_PCREL 56	/* X0 pipe PC relative hword 3 */
+#define R_TILEGX_IMM16_X1_HW3_PCREL 57	/* X1 pipe PC relative hword 3 */
+#define R_TILEGX_IMM16_X0_HW0_LAST_PCREL 58 /* X0 pipe PC-rel last hword 0 */
+#define R_TILEGX_IMM16_X1_HW0_LAST_PCREL 59 /* X1 pipe PC-rel last hword 0 */
+#define R_TILEGX_IMM16_X0_HW1_LAST_PCREL 60 /* X0 pipe PC-rel last hword 1 */
+#define R_TILEGX_IMM16_X1_HW1_LAST_PCREL 61 /* X1 pipe PC-rel last hword 1 */
+#define R_TILEGX_IMM16_X0_HW2_LAST_PCREL 62 /* X0 pipe PC-rel last hword 2 */
+#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 */
+#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 */
+#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 */
+#define R_TILEGX_IMM16_X1_HW0_TLS_LE 81	/* X1 pipe hword 0 TLS LE offset */
+#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE 82 /* X0 pipe last hword 0 LE off */
+#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE 83 /* X1 pipe last hword 0 LE off */
+#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE 84 /* X0 pipe last hword 1 LE off */
+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE 85 /* X1 pipe last hword 1 LE off */
+#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD 86 /* X0 pipe last hword 0 GD off */
+#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD 87 /* X1 pipe last hword 0 GD off */
+#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD 88 /* X0 pipe last hword 1 GD off */
+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD 89 /* X1 pipe last hword 1 GD off */
+/* 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 */
+#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 */
+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE 103 /* X1 pipe last hword 1 IE off */
+/* Relocs 104-105 are currently not defined.  */
+#define R_TILEGX_TLS_DTPMOD64	106	/* 64-bit ID of symbol's module */
+#define R_TILEGX_TLS_DTPOFF64	107	/* 64-bit offset in TLS block */
+#define R_TILEGX_TLS_TPOFF64	108	/* 64-bit offset in static TLS block */
+#define R_TILEGX_TLS_DTPMOD32	109	/* 32-bit ID of symbol's module */
+#define R_TILEGX_TLS_DTPOFF32	110	/* 32-bit offset in TLS block */
+#define R_TILEGX_TLS_TPOFF32	111	/* 32-bit offset in static TLS block */
+#define R_TILEGX_TLS_GD_CALL	112	/* "jal" for TLS GD */
+#define R_TILEGX_IMM8_X0_TLS_GD_ADD 113	/* X0 pipe "addi" for TLS GD */
+#define R_TILEGX_IMM8_X1_TLS_GD_ADD 114	/* X1 pipe "addi" for TLS GD */
+#define R_TILEGX_IMM8_Y0_TLS_GD_ADD 115	/* Y0 pipe "addi" for TLS GD */
+#define R_TILEGX_IMM8_Y1_TLS_GD_ADD 116	/* Y1 pipe "addi" for TLS GD */
+#define R_TILEGX_TLS_IE_LOAD	117	/* "ld_tls" for TLS IE */
+#define R_TILEGX_IMM8_X0_TLS_ADD 118	/* X0 pipe "addi" for TLS GD/IE */
+#define R_TILEGX_IMM8_X1_TLS_ADD 119	/* X1 pipe "addi" for TLS GD/IE */
+#define R_TILEGX_IMM8_Y0_TLS_ADD 120	/* Y0 pipe "addi" for TLS GD/IE */
+#define R_TILEGX_IMM8_Y1_TLS_ADD 121	/* Y1 pipe "addi" for TLS GD/IE */
+
+#define R_TILEGX_GNU_VTINHERIT	128	/* GNU C++ vtable hierarchy */
+#define R_TILEGX_GNU_VTENTRY	129	/* GNU C++ vtable member usage */
+
+#define R_TILEGX_NUM		130
+
 
 __END_DECLS
 
diff --git a/src/libelf/elf32_checksum.c b/src/libelf/elf32_checksum.c
index ad040b8..4c59856 100644
--- a/src/libelf/elf32_checksum.c
+++ b/src/libelf/elf32_checksum.c
@@ -1,52 +1,31 @@
 /* Compute simple checksum from permanent parts of the ELF file.
    Copyright (C) 2002, 2003, 2004, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -67,11 +46,6 @@
 #endif
 
 
-/* The SECTION_STRIP_P macro wants to call into libebl which we cannot
-   do and do not have to do here.  Provide a dummy replacement.  */
-#define ebl_debugscn_p(ebl, name) true
-
-
 #define process_block(crc, data) \
   __libelf_crc32 (crc, data->d_buf, data->d_size)
 
diff --git a/src/libelf/elf32_fsize.c b/src/libelf/elf32_fsize.c
index d23e3a4..d7496fa 100644
--- a/src/libelf/elf32_fsize.c
+++ b/src/libelf/elf32_fsize.c
@@ -1,52 +1,31 @@
 /* Return the size of an object file type.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -88,7 +67,5 @@
 	  * __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][type]);
 #endif
 }
-#ifndef __APPLE__
 #define local_strong_alias(n1, n2) strong_alias (n1, n2)
 local_strong_alias (elfw2(LIBELFBITS, fsize), __elfw2(LIBELFBITS, msize))
-#endif
diff --git a/src/libelf/elf32_getehdr.c b/src/libelf/elf32_getehdr.c
index 8009133..ee0a2e0 100644
--- a/src/libelf/elf32_getehdr.c
+++ b/src/libelf/elf32_getehdr.c
@@ -1,52 +1,31 @@
 /* Get ELF header.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf32_getphdr.c b/src/libelf/elf32_getphdr.c
index 80f54fd..1b82a48 100644
--- a/src/libelf/elf32_getphdr.c
+++ b/src/libelf/elf32_getphdr.c
@@ -1,52 +1,31 @@
 /* Get ELF program header table.
-   Copyright (C) 1998-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 1998-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -97,15 +76,17 @@
       size_t phnum;
       if (__elf_getphdrnum_rdlock (elf, &phnum) != 0)
 	goto out;
-      if (phnum == 0)
+      if (phnum == 0 || ehdr->e_phoff == 0)
 	{
 	  __libelf_seterrno (ELF_E_NO_PHDR);
 	  goto out;
 	}
 
+      /* Check this doesn't overflow.  */
       size_t size = phnum * sizeof (ElfW2(LIBELFBITS,Phdr));
 
-      if (ehdr->e_phoff > elf->maximum_size
+      if (phnum > SIZE_MAX / sizeof (ElfW2(LIBELFBITS,Phdr))
+	  || ehdr->e_phoff > elf->maximum_size
 	  || elf->maximum_size - ehdr->e_phoff < size)
 	{
 	  __libelf_seterrno (ELF_E_INVALID_DATA);
@@ -114,6 +95,16 @@
 
       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);
diff --git a/src/libelf/elf32_getshdr.c b/src/libelf/elf32_getshdr.c
index 8d650d9..7417047 100644
--- a/src/libelf/elf32_getshdr.c
+++ b/src/libelf/elf32_getshdr.c
@@ -1,52 +1,31 @@
 /* Return section header.
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005, 2007, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -81,7 +60,8 @@
     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));
 
@@ -98,14 +78,27 @@
 
   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
-	 directly this would already have happened.  */
+	 directly this would already have happened.  Unless
+	 we allocated the memory ourselves and the ELF_F_MALLOCED
+	 flag is set.  */
       void *file_shdr = ((char *) elf->map_address
 			 + elf->start_offset + ehdr->e_shoff);
 
-      assert (ehdr->e_ident[EI_DATA] != MY_ELFDATA
+      assert ((elf->flags & ELF_F_MALLOCED)
+	      || ehdr->e_ident[EI_DATA] != MY_ELFDATA
 	      || (! ALLOW_UNALIGNED
 		  && ((uintptr_t) file_shdr
 		      & (__alignof__ (ElfW2(LIBELFBITS,Shdr)) - 1)) != 0));
@@ -113,7 +106,7 @@
       /* Now copy the data and at the same time convert the byte order.  */
       if (ehdr->e_ident[EI_DATA] == MY_ELFDATA)
 	{
-	  assert (! ALLOW_UNALIGNED);
+	  assert ((elf->flags & ELF_F_MALLOCED) || ! ALLOW_UNALIGNED);
 	  memcpy (shdr, file_shdr, size);
 	}
       else
diff --git a/src/libelf/elf32_newehdr.c b/src/libelf/elf32_newehdr.c
index 4e20056..4b547bc 100644
--- a/src/libelf/elf32_newehdr.c
+++ b/src/libelf/elf32_newehdr.c
@@ -1,52 +1,31 @@
 /* Create new ELF header.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf32_newphdr.c b/src/libelf/elf32_newphdr.c
index 03ff100..01038e7 100644
--- a/src/libelf/elf32_newphdr.c
+++ b/src/libelf/elf32_newphdr.c
@@ -1,52 +1,31 @@
 /* Create new ELF program header table.
-   Copyright (C) 1999-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 1999-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -135,6 +114,12 @@
 	   || 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) *)
diff --git a/src/libelf/elf32_offscn.c b/src/libelf/elf32_offscn.c
index 86eff8b..a1ff6d4 100644
--- a/src/libelf/elf32_offscn.c
+++ b/src/libelf/elf32_offscn.c
@@ -1,52 +1,31 @@
 /* Get section at specific index.
    Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -101,7 +80,8 @@
 	    /* If this section is empty, the following one has the same
 	       sh_offset.  We presume the caller is looking for a nonempty
 	       section, so keep looking if this one is empty.  */
-	    if (runp->data[i].shdr.ELFW(e,LIBELFBITS)->sh_size != 0)
+	    if (runp->data[i].shdr.ELFW(e,LIBELFBITS)->sh_size != 0
+		&& runp->data[i].shdr.ELFW(e,LIBELFBITS)->sh_type != SHT_NOBITS)
 	      goto out;
 	  }
 
diff --git a/src/libelf/elf32_updatefile.c b/src/libelf/elf32_updatefile.c
index 898cf1a..153e377 100644
--- a/src/libelf/elf32_updatefile.c
+++ b/src/libelf/elf32_updatefile.c
@@ -1,52 +1,31 @@
 /* Write changed data structures.
-   Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -154,7 +133,7 @@
 	  (*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)));
 
@@ -223,6 +202,9 @@
   /* 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
@@ -645,6 +627,10 @@
   /* 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];
@@ -654,7 +640,8 @@
 #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
@@ -785,7 +772,8 @@
 	    (*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)));
 
diff --git a/src/libelf/elf32_updatenull.c b/src/libelf/elf32_updatenull.c
index ca9a870..be4cea0 100644
--- a/src/libelf/elf32_updatenull.c
+++ b/src/libelf/elf32_updatenull.c
@@ -1,52 +1,31 @@
 /* Update data structures for changes.
    Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf32_xlatetof.c b/src/libelf/elf32_xlatetof.c
index dc686ec..27a973e 100644
--- a/src/libelf/elf32_xlatetof.c
+++ b/src/libelf/elf32_xlatetof.c
@@ -1,52 +1,31 @@
 /* Convert from memory to file representation.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf32_xlatetom.c b/src/libelf/elf32_xlatetom.c
index 4f54df2..368df07 100644
--- a/src/libelf/elf32_xlatetom.c
+++ b/src/libelf/elf32_xlatetom.c
@@ -1,52 +1,31 @@
 /* Convert from file to memory representation.
-   Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 1998, 1999, 2000, 2002, 2012 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -80,7 +59,11 @@
 #endif
 
 
-  if (src->d_size % recsize != 0)
+  /* We shouldn't require integer number of records when processing
+     notes.  Payload bytes follow the header immediately, it's not an
+     array of records as is the case otherwise.  */
+  if (src->d_type != ELF_T_NHDR
+      && src->d_size % recsize != 0)
     {
       __libelf_seterrno (ELF_E_INVALID_DATA);
       return NULL;
diff --git a/src/libelf/elf64_checksum.c b/src/libelf/elf64_checksum.c
index 000b66f..1802240 100644
--- a/src/libelf/elf64_checksum.c
+++ b/src/libelf/elf64_checksum.c
@@ -1,52 +1,31 @@
 /* Compute simple checksum from permanent parts of the ELF file.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_checksum.c"
diff --git a/src/libelf/elf64_fsize.c b/src/libelf/elf64_fsize.c
index 2ee0512..1ee1067 100644
--- a/src/libelf/elf64_fsize.c
+++ b/src/libelf/elf64_fsize.c
@@ -1,52 +1,31 @@
 /* Return the size of an object file type.
    Copyright (C) 1998, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_fsize.c"
diff --git a/src/libelf/elf64_getehdr.c b/src/libelf/elf64_getehdr.c
index c649679..b35e7f6 100644
--- a/src/libelf/elf64_getehdr.c
+++ b/src/libelf/elf64_getehdr.c
@@ -1,52 +1,31 @@
 /* Return program header table.
    Copyright (C) 1998, 1999, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_getehdr.c"
diff --git a/src/libelf/elf64_getphdr.c b/src/libelf/elf64_getphdr.c
index 5e2d0ea..c1ee60f 100644
--- a/src/libelf/elf64_getphdr.c
+++ b/src/libelf/elf64_getphdr.c
@@ -1,52 +1,31 @@
 /* Return program header table.
    Copyright (C) 1998, 1999, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_getphdr.c"
diff --git a/src/libelf/elf64_getshdr.c b/src/libelf/elf64_getshdr.c
index 5b86dbe..c50cc71 100644
--- a/src/libelf/elf64_getshdr.c
+++ b/src/libelf/elf64_getshdr.c
@@ -1,52 +1,31 @@
 /* Return section header.
    Copyright (C) 1998, 1999, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_getshdr.c"
diff --git a/src/libelf/elf64_newehdr.c b/src/libelf/elf64_newehdr.c
index eaea2b1..65dd0f7 100644
--- a/src/libelf/elf64_newehdr.c
+++ b/src/libelf/elf64_newehdr.c
@@ -1,52 +1,31 @@
 /* Create new program header table.
    Copyright (C) 1999, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_newehdr.c"
diff --git a/src/libelf/elf64_newphdr.c b/src/libelf/elf64_newphdr.c
index 91a4133..58bfc73 100644
--- a/src/libelf/elf64_newphdr.c
+++ b/src/libelf/elf64_newphdr.c
@@ -1,52 +1,31 @@
 /* Create new program header table.
    Copyright (C) 1999, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_newphdr.c"
diff --git a/src/libelf/elf64_offscn.c b/src/libelf/elf64_offscn.c
index 6d31215..1b37b36 100644
--- a/src/libelf/elf64_offscn.c
+++ b/src/libelf/elf64_offscn.c
@@ -1,52 +1,31 @@
 /* Return program header table.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_offscn.c"
diff --git a/src/libelf/elf64_updatefile.c b/src/libelf/elf64_updatefile.c
index 5502d18..6941fe9 100644
--- a/src/libelf/elf64_updatefile.c
+++ b/src/libelf/elf64_updatefile.c
@@ -1,51 +1,30 @@
 /* Copyright (C) 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_updatefile.c"
diff --git a/src/libelf/elf64_updatenull.c b/src/libelf/elf64_updatenull.c
index 6838fd8..8333b5b 100644
--- a/src/libelf/elf64_updatenull.c
+++ b/src/libelf/elf64_updatenull.c
@@ -1,51 +1,30 @@
 /* Copyright (C) 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_updatenull.c"
diff --git a/src/libelf/elf64_xlatetof.c b/src/libelf/elf64_xlatetof.c
index 2747ce0..aacf5b0 100644
--- a/src/libelf/elf64_xlatetof.c
+++ b/src/libelf/elf64_xlatetof.c
@@ -1,52 +1,31 @@
 /* Convert from memory to file representation.
    Copyright (C) 1998, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_xlatetof.c"
diff --git a/src/libelf/elf64_xlatetom.c b/src/libelf/elf64_xlatetom.c
index 6fa6a02..034262c 100644
--- a/src/libelf/elf64_xlatetom.c
+++ b/src/libelf/elf64_xlatetom.c
@@ -1,52 +1,31 @@
 /* Convert from file to memory representation.
    Copyright (C) 1998, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 #define LIBELFBITS 64
 #include "elf32_xlatetom.c"
diff --git a/src/libelf/elf_begin.c b/src/libelf/elf_begin.c
index e46add3..30abe0b 100644
--- a/src/libelf/elf_begin.c
+++ b/src/libelf/elf_begin.c
@@ -1,52 +1,31 @@
 /* Create descriptor for processing file.
-   Copyright (C) 1998-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 1998-2010, 2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -165,7 +144,8 @@
 
       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;
 
@@ -213,7 +193,8 @@
 
       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;
 
@@ -285,6 +266,15 @@
     /* 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)
@@ -324,6 +314,16 @@
 	{
 	  /* 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);
 
@@ -337,8 +337,8 @@
 	      elf->state.elf32.scns.data[cnt].shdr.e32 =
 		&elf->state.elf32.shdr[cnt];
 	      if (likely (elf->state.elf32.shdr[cnt].sh_offset < maxsize)
-		  && likely (maxsize - elf->state.elf32.shdr[cnt].sh_offset
-			     <= elf->state.elf32.shdr[cnt].sh_size))
+		  && likely (elf->state.elf32.shdr[cnt].sh_size
+			     <= maxsize - elf->state.elf32.shdr[cnt].sh_offset))
 		elf->state.elf32.scns.data[cnt].rawdata_base =
 		  elf->state.elf32.scns.data[cnt].data_base =
 		  ((char *) map_address + offset
@@ -410,6 +410,11 @@
 	{
 	  /* We can use the mmapped memory.  */
 	  elf->state.elf64.ehdr = ehdr;
+
+	  if (unlikely (ehdr->e_shoff >= maxsize)
+	      || unlikely (maxsize - ehdr->e_shoff
+			   < scncnt * sizeof (Elf64_Shdr)))
+	    goto free_and_out;
 	  elf->state.elf64.shdr
 	    = (Elf64_Shdr *) ((char *) ehdr + ehdr->e_shoff);
 
@@ -423,8 +428,8 @@
 	      elf->state.elf64.scns.data[cnt].shdr.e64 =
 		&elf->state.elf64.shdr[cnt];
 	      if (likely (elf->state.elf64.shdr[cnt].sh_offset < maxsize)
-		  && likely (maxsize - elf->state.elf64.shdr[cnt].sh_offset
-			     <= elf->state.elf64.shdr[cnt].sh_size))
+		  && likely (elf->state.elf64.shdr[cnt].sh_size
+			     <= maxsize - elf->state.elf64.shdr[cnt].sh_offset))
 		elf->state.elf64.scns.data[cnt].rawdata_base =
 		  elf->state.elf64.scns.data[cnt].data_base =
 		  ((char *) map_address + offset
@@ -545,9 +550,12 @@
 				    maxsize),
 			       offset);
   if (unlikely (nread == -1))
-    /* We cannot even read the head of the file.  Maybe FILDES is associated
-       with an unseekable device.  This is nothing we can handle.  */
-    return NULL;
+    {
+      /* We cannot even read the head of the file.  Maybe FILDES is associated
+	 with an unseekable device.  This is nothing we can handle.  */
+      __libelf_seterrno (ELF_E_INVALID_FILE);
+      return NULL;
+    }
 
   /* See what kind of object we have here.  */
   Elf_Kind kind = determine_kind (mem.header, nread);
@@ -586,11 +594,6 @@
 		  || 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)
@@ -670,7 +673,8 @@
     {
       if (elf->map_address != NULL)
 	{
-	  if (offset + sizeof (struct ar_hdr) > elf->maximum_size)
+	  if ((size_t) offset > elf->maximum_size
+	      || elf->maximum_size - offset < sizeof (struct ar_hdr))
 	    return NULL;
 
 	  /* The data is mapped.  */
@@ -704,11 +708,15 @@
       char *runp;
 
       if (elf->map_address != NULL)
-	/* Simply copy it over.  */
-	elf->state.ar.long_names = (char *) memcpy (newp,
-						    elf->map_address + offset
-						    + sizeof (struct ar_hdr),
-						    len);
+	{
+	  if (len > elf->maximum_size - offset - sizeof (struct ar_hdr))
+	    goto too_much;
+	  /* Simply copy it over.  */
+	  elf->state.ar.long_names = (char *) memcpy (newp,
+						      elf->map_address + offset
+						      + sizeof (struct ar_hdr),
+						      len);
+	}
       else
 	{
 	  if (unlikely ((size_t) pread_retry (elf->fildes, newp, len,
@@ -716,6 +724,7 @@
 					      + sizeof (struct ar_hdr))
 			!= len))
 	    {
+	    too_much:
 	      /* We were not able to read all data.  */
 	      free (newp);
 	      elf->state.ar.long_names = NULL;
@@ -730,10 +739,14 @@
       runp = newp;
       while (1)
         {
+	  char *startp = runp;
 	  runp = (char *) memchr (runp, '/', newp + len - runp);
 	  if (runp == NULL)
-	    /* This was the last entry.  */
-	    break;
+	    {
+	      /* This was the last entry.  Clear any left overs.  */
+	      memset (startp, '\0', newp + len - startp);
+	      break;
+	    }
 
 	  /* NUL-terminate the string.  */
 	  *runp = '\0';
@@ -764,8 +777,10 @@
   if (elf->map_address != NULL)
     {
       /* See whether this entry is in the file.  */
-      if (unlikely (elf->state.ar.offset + sizeof (struct ar_hdr)
-		    > elf->start_offset + elf->maximum_size))
+      if (unlikely ((size_t) elf->state.ar.offset
+		    > elf->start_offset + elf->maximum_size
+		    || (elf->start_offset + elf->maximum_size
+			- elf->state.ar.offset) < sizeof (struct ar_hdr)))
 	{
 	  /* This record is not anymore in the file.  */
 	  __libelf_seterrno (ELF_E_RANGE);
@@ -796,7 +811,7 @@
     }
 
   /* Copy the raw name over to a NUL terminated buffer.  */
-  *((char *) __mempcpy (elf->state.ar.raw_name, ar_hdr->ar_name, 16)) = '\0';
+  *((char *) mempcpy (elf->state.ar.raw_name, ar_hdr->ar_name, 16)) = '\0';
 
   elf_ar_hdr = &elf->state.ar.elf_ar_hdr;
 
@@ -808,6 +823,10 @@
 	  && memcmp (ar_hdr->ar_name, "/               ", 16) == 0)
 	/* This is the index.  */
 	elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "/", 2);
+      else if (ar_hdr->ar_name[1] == 'S'
+	       && memcmp (ar_hdr->ar_name, "/SYM64/         ", 16) == 0)
+	/* 64-bit index.  */
+	elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "/SYM64/", 8);
       else if (ar_hdr->ar_name[1] == '/'
 	       && memcmp (ar_hdr->ar_name, "//              ", 16) == 0)
 	/* This is the array with the long names.  */
@@ -888,7 +907,7 @@
       const char *string = ar_hdr->FIELD;				      \
       if (ar_hdr->FIELD[sizeof (ar_hdr->FIELD) - 1] != ' ')		      \
 	{								      \
-	  *((char *) __mempcpy (buf, ar_hdr->FIELD, sizeof (ar_hdr->FIELD)))  \
+	  *((char *) mempcpy (buf, ar_hdr->FIELD, sizeof (ar_hdr->FIELD)))  \
 	    = '\0';							      \
 	  string = buf;							      \
 	}								      \
@@ -905,6 +924,12 @@
   INT_FIELD (ar_mode);
   INT_FIELD (ar_size);
 
+  /* Truncated file?  */
+  size_t maxsize;
+  maxsize = elf->maximum_size - elf->state.ar.offset - sizeof (struct ar_hdr);
+  if ((size_t) elf_ar_hdr->ar_size > maxsize)
+    elf_ar_hdr->ar_size = maxsize;
+
   return 0;
 }
 
diff --git a/src/libelf/elf_clone.c b/src/libelf/elf_clone.c
index 8b699fa..e6fe472 100644
--- a/src/libelf/elf_clone.c
+++ b/src/libelf/elf_clone.c
@@ -1,52 +1,31 @@
 /* Create clone of a given descriptor.
    Copyright (C) 2003, 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_cntl.c b/src/libelf/elf_cntl.c
index fd5b47b..a3c5805 100644
--- a/src/libelf/elf_cntl.c
+++ b/src/libelf/elf_cntl.c
@@ -1,52 +1,31 @@
 /* Control an ELF file desrciptor.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_end.c b/src/libelf/elf_end.c
index 5112eae..d4ae051 100644
--- a/src/libelf/elf_end.c
+++ b/src/libelf/elf_end.c
@@ -1,52 +1,31 @@
 /* Free resources associated with Elf descriptor.
    Copyright (C) 1998,1999,2000,2001,2002,2004,2005,2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -241,6 +220,7 @@
 	munmap (elf->map_address, elf->maximum_size);
     }
 
+  rwlock_unlock (elf->lock);
   rwlock_fini (elf->lock);
 
   /* Finally the descriptor itself.  */
diff --git a/src/libelf/elf_error.c b/src/libelf/elf_error.c
index 6394c02..aa7f917 100644
--- a/src/libelf/elf_error.c
+++ b/src/libelf/elf_error.c
@@ -1,52 +1,31 @@
 /* Error handling in libelf.
    Copyright (C) 1998-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -62,11 +41,7 @@
 
 
 /* The error number.  */
-#ifdef __APPLE__
-static int global_error;
-#else
 static __thread int global_error;
-#endif
 
 
 int
diff --git a/src/libelf/elf_fill.c b/src/libelf/elf_fill.c
index ae69951..174ab45 100644
--- a/src/libelf/elf_fill.c
+++ b/src/libelf/elf_fill.c
@@ -1,52 +1,31 @@
 /* Set fill byte used when constructing ELF objects.
    Copyright (C) 1998, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_flagdata.c b/src/libelf/elf_flagdata.c
index a2cbdd9..ace8cc5 100644
--- a/src/libelf/elf_flagdata.c
+++ b/src/libelf/elf_flagdata.c
@@ -1,52 +1,31 @@
 /* Manipulate ELF data flag.
    Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_flagehdr.c b/src/libelf/elf_flagehdr.c
index 499cf1d..d3a320b 100644
--- a/src/libelf/elf_flagehdr.c
+++ b/src/libelf/elf_flagehdr.c
@@ -1,52 +1,31 @@
 /* Manipulate ELF header flags.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_flagelf.c b/src/libelf/elf_flagelf.c
index 4ea4500..b34bd4f 100644
--- a/src/libelf/elf_flagelf.c
+++ b/src/libelf/elf_flagelf.c
@@ -1,52 +1,31 @@
 /* Manipulate ELF file flags.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_flagphdr.c b/src/libelf/elf_flagphdr.c
index de1bccf..2a589cc 100644
--- a/src/libelf/elf_flagphdr.c
+++ b/src/libelf/elf_flagphdr.c
@@ -1,52 +1,31 @@
 /* Manipulate ELF program header flags.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_flagscn.c b/src/libelf/elf_flagscn.c
index f4dba95..3ff826c 100644
--- a/src/libelf/elf_flagscn.c
+++ b/src/libelf/elf_flagscn.c
@@ -1,52 +1,31 @@
 /* Manipulate ELF section flags.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_flagshdr.c b/src/libelf/elf_flagshdr.c
index de645bb..8d797af 100644
--- a/src/libelf/elf_flagshdr.c
+++ b/src/libelf/elf_flagshdr.c
@@ -1,52 +1,31 @@
 /* Manipulate ELF section header flags.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_getarhdr.c b/src/libelf/elf_getarhdr.c
index 61e4e0a..f8b36b8 100644
--- a/src/libelf/elf_getarhdr.c
+++ b/src/libelf/elf_getarhdr.c
@@ -1,52 +1,31 @@
 /* Read header of next archive member.
    Copyright (C) 1998, 1999, 2000, 2002, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_getaroff.c b/src/libelf/elf_getaroff.c
index 8dea061..62da34d 100644
--- a/src/libelf/elf_getaroff.c
+++ b/src/libelf/elf_getaroff.c
@@ -1,52 +1,31 @@
 /* Return offset in archive for current file ELF.
    Copyright (C) 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_getarsym.c b/src/libelf/elf_getarsym.c
index e6ecaad..40633aa 100644
--- a/src/libelf/elf_getarsym.c
+++ b/src/libelf/elf_getarsym.c
@@ -1,52 +1,31 @@
 /* Return symbol table of archive.
-   Copyright (C) 1998, 1999, 2000, 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -56,6 +35,7 @@
 #include <byteswap.h>
 #include <endian.h>
 #include <errno.h>
+#include <stdbool.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
@@ -66,6 +46,33 @@
 #include "libelfP.h"
 
 
+static int
+read_number_entries (uint64_t *nump, Elf *elf, size_t *offp, bool index64_p)
+{
+  union u
+  {
+    uint64_t ret64;
+    uint32_t ret32;
+  } u;
+
+  size_t w = index64_p ? 8 : 4;
+  if (elf->map_address != NULL)
+    /* 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;
+
+  *offp += w;
+
+  if (__BYTE_ORDER == __LITTLE_ENDIAN)
+    *nump = index64_p ? bswap_64 (u.ret64) : bswap_32 (u.ret32);
+  else
+    *nump = index64_p ? u.ret64 : u.ret32;
+
+  return 0;
+}
+
 Elf_Arsym *
 elf_getarsym (elf, ptr)
      Elf *elf;
@@ -137,11 +144,17 @@
 	  goto out;
 	}
 
-      /* Now test whether this is the index.  It is denoted by the
-	 name being "/ ".
+      bool index64_p;
+      /* Now test whether this is the index.  If the name is "/", this
+	 is 32-bit index, if it's "/SYM64/", it's 64-bit index.
+
 	 XXX This is not entirely true.  There are some more forms.
 	 Which of them shall we handle?  */
-      if (memcmp (index_hdr->ar_name, "/               ", 16) != 0)
+      if (memcmp (index_hdr->ar_name, "/               ", 16) == 0)
+	index64_p = false;
+      else if (memcmp (index_hdr->ar_name, "/SYM64/         ", 16) == 0)
+	index64_p = true;
+      else
 	{
 	  /* If the index is not the first entry, there is no index.
 
@@ -149,27 +162,18 @@
 	  __libelf_seterrno (ELF_E_NO_INDEX);
 	  goto out;
 	}
+      int w = index64_p ? 8 : 4;
 
       /* We have an archive.  The first word in there is the number of
 	 entries in the table.  */
-      uint32_t n;
-      if (elf->map_address == NULL)
+      uint64_t n;
+      size_t off = elf->start_offset + SARMAG + sizeof (struct ar_hdr);
+      if (read_number_entries (&n, elf, &off, index64_p) < 0)
 	{
-	  if (pread_retry (elf->fildes, &n, sizeof (n),
-			   elf->start_offset + SARMAG + sizeof (struct ar_hdr))
-	      != sizeof (n))
-	    {
-	      /* Cannot read the number of entries.  */
-	      __libelf_seterrno (ELF_E_NO_INDEX);
-	      goto out;
-	    }
+	  /* Cannot read the number of entries.  */
+	  __libelf_seterrno (ELF_E_NO_INDEX);
+	  goto out;
 	}
-      else
-	n = *(uint32_t *) (elf->map_address + elf->start_offset
-			   + SARMAG + sizeof (struct ar_hdr));
-
-      if (__BYTE_ORDER == __LITTLE_ENDIAN)
-	n = bswap_32 (n);
 
       /* Now we can perform some first tests on whether all the data
 	 needed for the index is available.  */
@@ -178,8 +182,12 @@
       tmpbuf[10] = '\0';
       size_t index_size = atol (tmpbuf);
 
-      if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size
-	  || n * sizeof (uint32_t) > index_size)
+      if (index_size > elf->maximum_size
+	  || elf->maximum_size - index_size < SARMAG + sizeof (struct ar_hdr)
+#if SIZE_MAX <= 4294967295U
+	  || n >= SIZE_MAX / sizeof (Elf_Arsym)
+#endif
+	  || n > index_size / w)
 	{
 	  /* This index table cannot be right since it does not fit into
 	     the file.  */
@@ -192,14 +200,19 @@
       elf->state.ar.ar_sym = (Elf_Arsym *) malloc (ar_sym_len);
       if (elf->state.ar.ar_sym != NULL)
 	{
-	  uint32_t *file_data;
+	  union
+	  {
+	    uint32_t u32[n];
+	    uint64_t u64[n];
+	  } *file_data;
 	  char *str_data;
+	  size_t sz = n * w;
 
 	  if (elf->map_address == NULL)
 	    {
-	      file_data = (uint32_t *) alloca (n * sizeof (uint32_t));
+	      file_data = alloca (sz);
 
-	      ar_sym_len += index_size - n * sizeof (uint32_t);
+	      ar_sym_len += index_size - n * w;
 	      Elf_Arsym *newp = (Elf_Arsym *) realloc (elf->state.ar.ar_sym,
 						       ar_sym_len);
 	      if (newp == NULL)
@@ -214,18 +227,10 @@
 	      char *new_str = (char *) (elf->state.ar.ar_sym + n + 1);
 
 	      /* Now read the data from the file.  */
-	      if ((size_t) pread_retry (elf->fildes, file_data,
-					n * sizeof (uint32_t),
-					elf->start_offset + SARMAG
-					+ sizeof (struct ar_hdr)
-					+ sizeof (uint32_t))
-		  != n * sizeof (uint32_t)
+	      if ((size_t) pread_retry (elf->fildes, file_data, sz, off) != sz
 		  || ((size_t) pread_retry (elf->fildes, new_str,
-					    index_size - n * sizeof (uint32_t),
-					    elf->start_offset
-					    + SARMAG + sizeof (struct ar_hdr)
-					    + (n + 1) * sizeof (uint32_t))
-		      != index_size - n * sizeof (uint32_t)))
+					    index_size - sz, off + sz)
+		      != index_size - sz))
 		{
 		  /* We were not able to read the data.  */
 		  free (elf->state.ar.ar_sym);
@@ -238,10 +243,11 @@
 	    }
 	  else
 	    {
-	      file_data = (uint32_t *) (elf->map_address + elf->start_offset
-					+ SARMAG + sizeof (struct ar_hdr)
-					+ sizeof (uint32_t));
-	      str_data = (char *) &file_data[n];
+	      file_data = (void *) (elf->map_address + off);
+	      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);
 	    }
 
 	  /* Now we can build the data structure.  */
@@ -249,13 +255,38 @@
 	  for (size_t cnt = 0; cnt < n; ++cnt)
 	    {
 	      arsym[cnt].as_name = str_data;
-	      if (__BYTE_ORDER == __LITTLE_ENDIAN)
-		arsym[cnt].as_off = bswap_32 (file_data[cnt]);
+	      if (index64_p)
+		{
+		  uint64_t tmp = file_data->u64[cnt];
+		  if (__BYTE_ORDER == __LITTLE_ENDIAN)
+		    tmp = bswap_64 (tmp);
+
+		  arsym[cnt].as_off = tmp;
+
+		  /* Check whether 64-bit offset fits into 32-bit
+		     size_t.  */
+		  if (sizeof (arsym[cnt].as_off) < 8
+		      && arsym[cnt].as_off != tmp)
+		    {
+		      if (elf->map_address == NULL)
+			{
+			  free (elf->state.ar.ar_sym);
+			  elf->state.ar.ar_sym = NULL;
+			}
+
+		      __libelf_seterrno (ELF_E_RANGE);
+		      goto out;
+		    }
+		}
+	      else if (__BYTE_ORDER == __LITTLE_ENDIAN)
+		arsym[cnt].as_off = bswap_32 (file_data->u32[cnt]);
 	      else
-		arsym[cnt].as_off = file_data[cnt];
+		arsym[cnt].as_off = file_data->u32[cnt];
+
 	      arsym[cnt].as_hash = _dl_elf_hash (str_data);
 	      str_data = rawmemchr (str_data, '\0') + 1;
 	    }
+
 	  /* At the end a special entry.  */
 	  arsym[n].as_name = NULL;
 	  arsym[n].as_off = 0;
diff --git a/src/libelf/elf_getbase.c b/src/libelf/elf_getbase.c
index 2b6cf85..ff0feb4 100644
--- a/src/libelf/elf_getbase.c
+++ b/src/libelf/elf_getbase.c
@@ -1,52 +1,31 @@
 /* Return offset of first byte for the object.
    Copyright (C) 1998, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_getdata.c b/src/libelf/elf_getdata.c
index 5a718f8..0aeb997 100644
--- a/src/libelf/elf_getdata.c
+++ b/src/libelf/elf_getdata.c
@@ -1,52 +1,31 @@
 /* Return the next data element from the section after possibly converting it.
    Copyright (C) 1998-2005, 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -191,9 +170,9 @@
 internal_function
 __libelf_set_rawdata_wrlock (Elf_Scn *scn)
 {
-  size_t offset;
-  size_t size;
-  size_t align;
+  Elf64_Off offset;
+  Elf64_Xword size;
+  Elf64_Xword align;
   int type;
   Elf *elf = scn->elf;
 
@@ -264,8 +243,10 @@
       if (elf->map_address != NULL)
 	{
 	  /* First see whether the information in the section header is
-	     valid and it does not ask for too much.  */
-	  if (unlikely (offset + size > elf->maximum_size))
+	     valid and it does not ask for too much.  Check for unsigned
+	     overflow.  */
+	  if (unlikely (offset > elf->maximum_size
+	      || elf->maximum_size - offset < size))
 	    {
 	      /* Something is wrong.  */
 	      __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
diff --git a/src/libelf/elf_getdata_rawchunk.c b/src/libelf/elf_getdata_rawchunk.c
index 3ec2100..63a9914 100644
--- a/src/libelf/elf_getdata_rawchunk.c
+++ b/src/libelf/elf_getdata_rawchunk.c
@@ -1,51 +1,30 @@
 /* Return converted data from raw chunk of ELF file.
-   Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2007, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -78,8 +57,9 @@
       return NULL;
     }
 
-  if (unlikely (offset < 0 || offset + (off64_t) size < offset
-		|| offset + size > elf->maximum_size))
+  if (unlikely (offset < 0 || (uint64_t) offset > elf->maximum_size
+		|| elf->maximum_size - (uint64_t) offset < size))
+
     {
       /* Invalid request.  */
       __libelf_seterrno (ELF_E_INVALID_OP);
diff --git a/src/libelf/elf_getident.c b/src/libelf/elf_getident.c
index f9bac10..10beeaf 100644
--- a/src/libelf/elf_getident.c
+++ b/src/libelf/elf_getident.c
@@ -1,52 +1,31 @@
 /* Retrieve file identification data.
    Copyright (C) 1998, 1999, 2000, 2002, 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_getphdrnum.c b/src/libelf/elf_getphdrnum.c
index edf073e..63c27fb 100644
--- a/src/libelf/elf_getphdrnum.c
+++ b/src/libelf/elf_getphdrnum.c
@@ -1,51 +1,30 @@
 /* Return number of program headers in the ELF file.
-   Copyright (C) 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2010, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -83,10 +62,18 @@
      /* If there are no section headers, perhaps this is really just 65536
 	written without PN_XNUM support.  Either that or it's bad data.  */
 
-     if (likely (scns->cnt > 0))
-       *dst = (elf->class == ELFCLASS32
-	       ? scns->data[0].shdr.e32->sh_info
-	       : scns->data[0].shdr.e64->sh_info);
+     if (elf->class == ELFCLASS32)
+       {
+	 if (likely (scns->cnt > 0
+		     && elf->state.elf32.scns.data[0].shdr.e32 != NULL))
+	   *dst = scns->data[0].shdr.e32->sh_info;
+       }
+     else
+       {
+	 if (likely (scns->cnt > 0
+		     && elf->state.elf64.scns.data[0].shdr.e64 != NULL))
+	   *dst = scns->data[0].shdr.e64->sh_info;
+       }
    }
 
  return 0;
@@ -110,6 +97,39 @@
 
   rwlock_rdlock (elf->lock);
   result = __elf_getphdrnum_rdlock (elf, dst);
+
+  /* Do some sanity checking to make sure phnum and phoff are consistent.  */
+  Elf64_Off off = (elf->class == ELFCLASS32
+		   ? elf->state.elf32.ehdr->e_phoff
+		   : elf->state.elf64.ehdr->e_phoff);
+  if (unlikely (off == 0))
+    {
+      *dst = 0;
+      goto out;
+    }
+
+  if (unlikely (off >= elf->maximum_size))
+    {
+      __libelf_seterrno (ELF_E_INVALID_DATA);
+      result = -1;
+      goto out;
+    }
+
+  /* Check for too many sections.  */
+  size_t phdr_size = (elf->class == ELFCLASS32
+		      ? sizeof (Elf32_Phdr) : sizeof (Elf64_Phdr));
+  if (unlikely (*dst > SIZE_MAX / phdr_size))
+    {
+      __libelf_seterrno (ELF_E_INVALID_DATA);
+      result = -1;
+      goto out;
+    }
+
+  /* Truncated file?  Don't return more than can be indexed.  */
+  if (unlikely (elf->maximum_size - off < *dst * phdr_size))
+    *dst = (elf->maximum_size - off) / phdr_size;
+
+out:
   rwlock_unlock (elf->lock);
 
   return result;
diff --git a/src/libelf/elf_getscn.c b/src/libelf/elf_getscn.c
index 5c14a58..7c6b7de 100644
--- a/src/libelf/elf_getscn.c
+++ b/src/libelf/elf_getscn.c
@@ -1,52 +1,31 @@
 /* Get section at specific index.
    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_getshdrnum.c b/src/libelf/elf_getshdrnum.c
index 5ca7fdd..73a3300 100644
--- a/src/libelf/elf_getshdrnum.c
+++ b/src/libelf/elf_getshdrnum.c
@@ -1,52 +1,31 @@
 /* Return number of sections in the ELF file.
    Copyright (C) 2002, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -107,7 +86,5 @@
 
   return result;
 }
-#ifndef __APPLE__
 /* Alias for the deprecated name.  */
 strong_alias (elf_getshdrnum, elf_getshnum)
-#endif
diff --git a/src/libelf/elf_getshdrstrndx.c b/src/libelf/elf_getshdrstrndx.c
index a1aba5f..6f8d66e 100644
--- a/src/libelf/elf_getshdrstrndx.c
+++ b/src/libelf/elf_getshdrstrndx.c
@@ -1,52 +1,31 @@
 /* Return section index of section header string table.
-   Copyright (C) 2002, 2005, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2002, 2005, 2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -113,6 +92,13 @@
 	  if (elf->class == ELFCLASS32)
 	    {
 	      size_t offset;
+	      if (unlikely (elf->state.elf32.scns.cnt == 0))
+		{
+		  /* Cannot use SHN_XINDEX without section headers.  */
+		  __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
+		  result = -1;
+		  goto out;
+		}
 
 	      if (elf->state.elf32.scns.data[0].shdr.e32 != NULL)
 		{
@@ -125,10 +111,25 @@
 	      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
@@ -152,6 +153,14 @@
 	    }
 	  else
 	    {
+	      if (unlikely (elf->state.elf64.scns.cnt == 0))
+		{
+		  /* Cannot use SHN_XINDEX without section headers.  */
+		  __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
+		  result = -1;
+		  goto out;
+		}
+
 	      if (elf->state.elf64.scns.data[0].shdr.e64 != NULL)
 		{
 		  num = elf->state.elf64.scns.data[0].shdr.e64->sh_link;
@@ -163,10 +172,25 @@
 	      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
@@ -202,6 +226,4 @@
 }
 INTDEF(elf_getshdrstrndx)
 /* Alias for the deprecated name.  */
-#ifndef __APPLE__
 strong_alias (elf_getshdrstrndx, elf_getshstrndx)
-#endif
diff --git a/src/libelf/elf_gnu_hash.c b/src/libelf/elf_gnu_hash.c
index efaee43..4c21857 100644
--- a/src/libelf/elf_gnu_hash.c
+++ b/src/libelf/elf_gnu_hash.c
@@ -1,52 +1,31 @@
 /* GNU-style Hash function used in ELF implementations.
    Copyright (C) 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2006.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_hash.c b/src/libelf/elf_hash.c
index 94c0a85..306ebc2 100644
--- a/src/libelf/elf_hash.c
+++ b/src/libelf/elf_hash.c
@@ -1,52 +1,31 @@
 /* Hash function used in ELF implementations.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_kind.c b/src/libelf/elf_kind.c
index 06aeaa9..d8ab2fd 100644
--- a/src/libelf/elf_kind.c
+++ b/src/libelf/elf_kind.c
@@ -1,52 +1,31 @@
 /* Return the kind of file associated with the descriptor.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_memory.c b/src/libelf/elf_memory.c
index f6468c8..08f85a1 100644
--- a/src/libelf/elf_memory.c
+++ b/src/libelf/elf_memory.c
@@ -1,52 +1,31 @@
 /* Create descriptor for memory region.
    Copyright (C) 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_ndxscn.c b/src/libelf/elf_ndxscn.c
index 53082ae..bd4bfbf 100644
--- a/src/libelf/elf_ndxscn.c
+++ b/src/libelf/elf_ndxscn.c
@@ -1,52 +1,31 @@
 /* Get index of section.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_newdata.c b/src/libelf/elf_newdata.c
index db17ea5..90d1813 100644
--- a/src/libelf/elf_newdata.c
+++ b/src/libelf/elf_newdata.c
@@ -1,52 +1,31 @@
 /* Create new, empty section data.
    Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_newscn.c b/src/libelf/elf_newscn.c
index aefab33..6e0029e 100644
--- a/src/libelf/elf_newscn.c
+++ b/src/libelf/elf_newscn.c
@@ -1,52 +1,31 @@
 /* Append new section.
-   Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -104,10 +83,18 @@
   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);
diff --git a/src/libelf/elf_next.c b/src/libelf/elf_next.c
index 196c65a..1f5c03c 100644
--- a/src/libelf/elf_next.c
+++ b/src/libelf/elf_next.c
@@ -1,52 +1,31 @@
 /* Advance in archive to next element.
    Copyright (C) 1998-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_nextscn.c b/src/libelf/elf_nextscn.c
index a1842bb..0d2bd66 100644
--- a/src/libelf/elf_nextscn.c
+++ b/src/libelf/elf_nextscn.c
@@ -1,52 +1,31 @@
 /* Get next section.
    Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_rand.c b/src/libelf/elf_rand.c
index a766d38..cef4e44 100644
--- a/src/libelf/elf_rand.c
+++ b/src/libelf/elf_rand.c
@@ -1,52 +1,31 @@
 /* Select specific element in archive.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_rawdata.c b/src/libelf/elf_rawdata.c
index b8bb0f4..9672652 100644
--- a/src/libelf/elf_rawdata.c
+++ b/src/libelf/elf_rawdata.c
@@ -1,52 +1,31 @@
 /* Return raw section content.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_rawfile.c b/src/libelf/elf_rawfile.c
index a62a354..dd71b88 100644
--- a/src/libelf/elf_rawfile.c
+++ b/src/libelf/elf_rawfile.c
@@ -1,52 +1,31 @@
 /* Retrieve uninterpreted file contents.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_readall.c b/src/libelf/elf_readall.c
index 1f59932..0101618 100644
--- a/src/libelf/elf_readall.c
+++ b/src/libelf/elf_readall.c
@@ -1,52 +1,31 @@
 /* Read all of the file associated with the descriptor.
    Copyright (C) 1998-2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_scnshndx.c b/src/libelf/elf_scnshndx.c
index 987d23e..5b783fa 100644
--- a/src/libelf/elf_scnshndx.c
+++ b/src/libelf/elf_scnshndx.c
@@ -1,52 +1,31 @@
 /* Get the section index of the extended section index table.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_strptr.c b/src/libelf/elf_strptr.c
index 7b837b0..1f40429 100644
--- a/src/libelf/elf_strptr.c
+++ b/src/libelf/elf_strptr.c
@@ -1,52 +1,31 @@
 /* Return string pointer from string section.
    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2008, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/elf_update.c b/src/libelf/elf_update.c
index 5daece4..54c20f5 100644
--- a/src/libelf/elf_update.c
+++ b/src/libelf/elf_update.c
@@ -1,52 +1,31 @@
 /* Update data structures for changes and write them out.
    Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2006 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -90,14 +69,10 @@
   /* 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)
diff --git a/src/libelf/elf_version.c b/src/libelf/elf_version.c
index cbed496..dcb6758 100644
--- a/src/libelf/elf_version.c
+++ b/src/libelf/elf_version.c
@@ -1,52 +1,31 @@
 /* Coordinate ELF library and application versions.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/exttypes.h b/src/libelf/exttypes.h
index 2b15667..8cb2aae 100644
--- a/src/libelf/exttypes.h
+++ b/src/libelf/exttypes.h
@@ -1,52 +1,31 @@
 /* External ELF types.
    Copyright (C) 1998-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _EXTTYPES_H
 #define	_EXTTYPES_H 1
diff --git a/src/libelf/gelf.h b/src/libelf/gelf.h
index 533e15a..e3f0740 100644
--- a/src/libelf/gelf.h
+++ b/src/libelf/gelf.h
@@ -1,51 +1,30 @@
 /* This file defines generic ELF types, structures, and macros.
    Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _GELF_H
 #define	_GELF_H 1
@@ -171,7 +150,7 @@
 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,
diff --git a/src/libelf/gelf_checksum.c b/src/libelf/gelf_checksum.c
index fb0daa5..4906782 100644
--- a/src/libelf/gelf_checksum.c
+++ b/src/libelf/gelf_checksum.c
@@ -1,52 +1,31 @@
 /* Convert from file to memory representation.  Generic ELF version.
    Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_fsize.c b/src/libelf/gelf_fsize.c
index 7a9a308..a9d2288 100644
--- a/src/libelf/gelf_fsize.c
+++ b/src/libelf/gelf_fsize.c
@@ -1,52 +1,31 @@
 /* Return the size of an object file type.
    Copyright (C) 1998-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getauxv.c b/src/libelf/gelf_getauxv.c
index 036bdcc..a2f04e7 100644
--- a/src/libelf/gelf_getauxv.c
+++ b/src/libelf/gelf_getauxv.c
@@ -1,51 +1,30 @@
 /* Get information from auxiliary vector at the given index.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -118,7 +97,8 @@
 	  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;
diff --git a/src/libelf/gelf_getclass.c b/src/libelf/gelf_getclass.c
index 02784d7..53759dc 100644
--- a/src/libelf/gelf_getclass.c
+++ b/src/libelf/gelf_getclass.c
@@ -1,52 +1,31 @@
 /* Return the class of file associated with the descriptor.
    Copyright (C) 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getdyn.c b/src/libelf/gelf_getdyn.c
index 82f8e32..c366fd5 100644
--- a/src/libelf/gelf_getdyn.c
+++ b/src/libelf/gelf_getdyn.c
@@ -1,52 +1,31 @@
 /* Get information from dynamic table at the given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -93,7 +72,7 @@
 	 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;
@@ -114,7 +93,7 @@
 
       /* 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;
diff --git a/src/libelf/gelf_getehdr.c b/src/libelf/gelf_getehdr.c
index 34b5db3..ea83fc0 100644
--- a/src/libelf/gelf_getehdr.c
+++ b/src/libelf/gelf_getehdr.c
@@ -1,52 +1,31 @@
 /* Get ELF header.
    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getlib.c b/src/libelf/gelf_getlib.c
index aa91a73..880817e 100644
--- a/src/libelf/gelf_getlib.c
+++ b/src/libelf/gelf_getlib.c
@@ -1,52 +1,31 @@
 /* Get library from table at the given index.
-   Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2004, 2005, 2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -86,7 +65,7 @@
   /* 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
     {
diff --git a/src/libelf/gelf_getmove.c b/src/libelf/gelf_getmove.c
index 6e76948..b81d61f 100644
--- a/src/libelf/gelf_getmove.c
+++ b/src/libelf/gelf_getmove.c
@@ -1,52 +1,31 @@
 /* Get move structure at the given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -83,7 +62,7 @@
 
   /* 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;
diff --git a/src/libelf/gelf_getnote.c b/src/libelf/gelf_getnote.c
index e490018..7dc8215 100644
--- a/src/libelf/gelf_getnote.c
+++ b/src/libelf/gelf_getnote.c
@@ -1,51 +1,30 @@
 /* Get note information at the supplied offset.
-   Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2007, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -83,7 +62,8 @@
 
   /* The data is already in the correct form.  Just make sure the
      offset is OK.  */
-  if (unlikely (offset + sizeof (GElf_Nhdr) > data->d_size))
+  if (unlikely (offset > data->d_size
+		|| data->d_size - offset < sizeof (GElf_Nhdr)))
     {
       __libelf_seterrno (ELF_E_OFFSET_RANGE);
       offset = 0;
@@ -93,16 +73,21 @@
       const GElf_Nhdr *n = data->d_buf + offset;
       offset += sizeof *n;
 
+      /* Include padding.  Check below for overflow.  */
       GElf_Word namesz = NOTE_ALIGN (n->n_namesz);
       GElf_Word descsz = NOTE_ALIGN (n->n_descsz);
 
-      if (unlikely (data->d_size - offset < namesz))
+      if (unlikely (offset > data->d_size
+		    || data->d_size - offset < namesz
+		    || (namesz == 0 && n->n_namesz != 0)))
 	offset = 0;
       else
 	{
 	  *name_offset = offset;
 	  offset += namesz;
-	  if (unlikely (data->d_size - offset < descsz))
+	  if (unlikely (offset > data->d_size
+			|| data->d_size - offset < descsz
+			|| (descsz == 0 && n->n_descsz != 0)))
 	    offset = 0;
 	  else
 	    {
diff --git a/src/libelf/gelf_getphdr.c b/src/libelf/gelf_getphdr.c
index 7b04b39..3bf7123 100644
--- a/src/libelf/gelf_getphdr.c
+++ b/src/libelf/gelf_getphdr.c
@@ -1,52 +1,31 @@
 /* Return program header table entry.
    Copyright (C) 1998-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getrel.c b/src/libelf/gelf_getrel.c
index f3775bd..1f786ff 100644
--- a/src/libelf/gelf_getrel.c
+++ b/src/libelf/gelf_getrel.c
@@ -1,52 +1,31 @@
 /* Get REL relocation information at given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -71,12 +50,6 @@
   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);
@@ -93,7 +66,7 @@
   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;
@@ -113,7 +86,7 @@
     {
       /* 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;
diff --git a/src/libelf/gelf_getrela.c b/src/libelf/gelf_getrela.c
index 0275c37..cead7ee 100644
--- a/src/libelf/gelf_getrela.c
+++ b/src/libelf/gelf_getrela.c
@@ -1,52 +1,31 @@
 /* Get RELA relocation information at given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -71,12 +50,6 @@
   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);
@@ -93,7 +66,7 @@
   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;
@@ -114,7 +87,7 @@
     {
       /* 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;
diff --git a/src/libelf/gelf_getshdr.c b/src/libelf/gelf_getshdr.c
index 8b46dfa..4a48cb6 100644
--- a/src/libelf/gelf_getshdr.c
+++ b/src/libelf/gelf_getshdr.c
@@ -1,52 +1,31 @@
 /* Return section header.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getsym.c b/src/libelf/gelf_getsym.c
index 162061f..a141c2d 100644
--- a/src/libelf/gelf_getsym.c
+++ b/src/libelf/gelf_getsym.c
@@ -1,52 +1,31 @@
 /* Get symbol information from symbol table at the given index.
-   Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -90,7 +69,7 @@
 	 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;
@@ -119,7 +98,7 @@
 
       /* 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;
diff --git a/src/libelf/gelf_getsyminfo.c b/src/libelf/gelf_getsyminfo.c
index 2c07526..8d7da7f 100644
--- a/src/libelf/gelf_getsyminfo.c
+++ b/src/libelf/gelf_getsyminfo.c
@@ -1,52 +1,31 @@
 /* Get additional symbol information from symbol table at the given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -84,7 +63,7 @@
 
   /* 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;
diff --git a/src/libelf/gelf_getsymshndx.c b/src/libelf/gelf_getsymshndx.c
index a9cfc18..c19e876 100644
--- a/src/libelf/gelf_getsymshndx.c
+++ b/src/libelf/gelf_getsymshndx.c
@@ -1,53 +1,32 @@
 /* Get symbol information and separate section index from symbol table
    at the given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -90,7 +69,7 @@
      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;
@@ -110,7 +89,7 @@
 	 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;
@@ -139,7 +118,7 @@
 
       /* 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;
diff --git a/src/libelf/gelf_getverdaux.c b/src/libelf/gelf_getverdaux.c
index b8bcf14..d125d9e 100644
--- a/src/libelf/gelf_getverdaux.c
+++ b/src/libelf/gelf_getverdaux.c
@@ -1,52 +1,31 @@
 /* Get additional symbol version definition information at the given offset.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getverdef.c b/src/libelf/gelf_getverdef.c
index 05cc2e8..59a3214 100644
--- a/src/libelf/gelf_getverdef.c
+++ b/src/libelf/gelf_getverdef.c
@@ -1,52 +1,31 @@
 /* Get symbol version definition information at the given offset.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getvernaux.c b/src/libelf/gelf_getvernaux.c
index 45d3300..8ebf56a 100644
--- a/src/libelf/gelf_getvernaux.c
+++ b/src/libelf/gelf_getvernaux.c
@@ -1,52 +1,31 @@
 /* Get additional required symbol version information at the given offset.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getverneed.c b/src/libelf/gelf_getverneed.c
index e82a055..95fd11f 100644
--- a/src/libelf/gelf_getverneed.c
+++ b/src/libelf/gelf_getverneed.c
@@ -1,52 +1,31 @@
 /* Get required symbol version information at the given offset.
    Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_getversym.c b/src/libelf/gelf_getversym.c
index 397b7ed..fe8dc62 100644
--- a/src/libelf/gelf_getversym.c
+++ b/src/libelf/gelf_getversym.c
@@ -1,52 +1,31 @@
 /* Get symbol version information at the given index.
-   Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -92,7 +71,7 @@
 
   /* 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;
diff --git a/src/libelf/gelf_newehdr.c b/src/libelf/gelf_newehdr.c
index 2f720b8..e9f7a58 100644
--- a/src/libelf/gelf_newehdr.c
+++ b/src/libelf/gelf_newehdr.c
@@ -1,52 +1,31 @@
 /* Create new ELF header.
    Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_newphdr.c b/src/libelf/gelf_newphdr.c
index 6530692..b634037 100644
--- a/src/libelf/gelf_newphdr.c
+++ b/src/libelf/gelf_newphdr.c
@@ -1,52 +1,31 @@
 /* Create new ELF program header.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_offscn.c b/src/libelf/gelf_offscn.c
index 573195c..62d12e4 100644
--- a/src/libelf/gelf_offscn.c
+++ b/src/libelf/gelf_offscn.c
@@ -1,52 +1,31 @@
 /* Create new ELF header.
    Copyright (C) 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_auxv.c b/src/libelf/gelf_update_auxv.c
index b294ead..dd8f472 100644
--- a/src/libelf/gelf_update_auxv.c
+++ b/src/libelf/gelf_update_auxv.c
@@ -1,51 +1,30 @@
 /* Update information in dynamic table at the given index.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_dyn.c b/src/libelf/gelf_update_dyn.c
index 10bfb6a..2eb526e 100644
--- a/src/libelf/gelf_update_dyn.c
+++ b/src/libelf/gelf_update_dyn.c
@@ -1,52 +1,31 @@
 /* Update information in dynamic table at the given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -71,12 +50,6 @@
   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.  */
@@ -102,7 +75,7 @@
 	}
 
       /* 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;
@@ -116,7 +89,7 @@
   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;
diff --git a/src/libelf/gelf_update_ehdr.c b/src/libelf/gelf_update_ehdr.c
index baf7a3f..73d5af7 100644
--- a/src/libelf/gelf_update_ehdr.c
+++ b/src/libelf/gelf_update_ehdr.c
@@ -1,52 +1,31 @@
 /* Update ELF header.
    Copyright (C) 2000, 2001, 2002, 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_lib.c b/src/libelf/gelf_update_lib.c
index 9571016..1c8c23d 100644
--- a/src/libelf/gelf_update_lib.c
+++ b/src/libelf/gelf_update_lib.c
@@ -1,52 +1,31 @@
 /* Update library in table at the given index.
-   Copyright (C) 2004 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2004, 2005, 2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -68,12 +47,6 @@
   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))
     {
@@ -87,7 +60,7 @@
 
   /* 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
     {
diff --git a/src/libelf/gelf_update_move.c b/src/libelf/gelf_update_move.c
index fd67be1..ad2ca6a 100644
--- a/src/libelf/gelf_update_move.c
+++ b/src/libelf/gelf_update_move.c
@@ -1,52 +1,31 @@
 /* Update move structure at the given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -75,8 +54,7 @@
   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;
diff --git a/src/libelf/gelf_update_phdr.c b/src/libelf/gelf_update_phdr.c
index b90e5c0..a848677 100644
--- a/src/libelf/gelf_update_phdr.c
+++ b/src/libelf/gelf_update_phdr.c
@@ -1,52 +1,31 @@
 /* Update program header program header table entry.
    Copyright (C) 2000-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_rel.c b/src/libelf/gelf_update_rel.c
index 049b71a..14f62e9 100644
--- a/src/libelf/gelf_update_rel.c
+++ b/src/libelf/gelf_update_rel.c
@@ -1,52 +1,31 @@
 /* Update REL relocation information at given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -68,12 +47,6 @@
   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.  */
@@ -99,7 +72,7 @@
 	}
 
       /* 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;
@@ -114,7 +87,7 @@
   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;
diff --git a/src/libelf/gelf_update_rela.c b/src/libelf/gelf_update_rela.c
index dc99c68..8825270 100644
--- a/src/libelf/gelf_update_rela.c
+++ b/src/libelf/gelf_update_rela.c
@@ -1,52 +1,31 @@
 /* Update RELA relocation information at given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -68,12 +47,6 @@
   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.  */
@@ -101,7 +74,7 @@
 	}
 
       /* 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;
@@ -117,7 +90,7 @@
   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;
diff --git a/src/libelf/gelf_update_shdr.c b/src/libelf/gelf_update_shdr.c
index c4e3829..c93c6ec 100644
--- a/src/libelf/gelf_update_shdr.c
+++ b/src/libelf/gelf_update_shdr.c
@@ -1,52 +1,31 @@
 /* Update section header.
    Copyright (C) 2000, 2001, 2002, 2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_sym.c b/src/libelf/gelf_update_sym.c
index fff45fd..278129c 100644
--- a/src/libelf/gelf_update_sym.c
+++ b/src/libelf/gelf_update_sym.c
@@ -1,52 +1,31 @@
 /* Update symbol information in symbol table at the given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -72,12 +51,6 @@
   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.  */
@@ -102,7 +75,7 @@
 	}
 
       /* 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;
@@ -125,7 +98,7 @@
   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;
diff --git a/src/libelf/gelf_update_syminfo.c b/src/libelf/gelf_update_syminfo.c
index a0e176d..640a1ed 100644
--- a/src/libelf/gelf_update_syminfo.c
+++ b/src/libelf/gelf_update_syminfo.c
@@ -1,52 +1,31 @@
 /* Update additional symbol information in symbol table at the given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -72,12 +51,6 @@
   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.  */
@@ -93,7 +66,7 @@
   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;
diff --git a/src/libelf/gelf_update_symshndx.c b/src/libelf/gelf_update_symshndx.c
index 2d393c1..5e2c7f7 100644
--- a/src/libelf/gelf_update_symshndx.c
+++ b/src/libelf/gelf_update_symshndx.c
@@ -1,53 +1,32 @@
 /* Update symbol information and section index in symbol table at the
    given index.
-   Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -77,12 +56,6 @@
   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.  */
@@ -128,7 +101,7 @@
 	}
 
       /* 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;
@@ -151,7 +124,7 @@
   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;
diff --git a/src/libelf/gelf_update_verdaux.c b/src/libelf/gelf_update_verdaux.c
index 17866ef..b377d40 100644
--- a/src/libelf/gelf_update_verdaux.c
+++ b/src/libelf/gelf_update_verdaux.c
@@ -1,52 +1,31 @@
 /* Update additional symbol version definition information.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_verdef.c b/src/libelf/gelf_update_verdef.c
index cd19cb7..d591a4f 100644
--- a/src/libelf/gelf_update_verdef.c
+++ b/src/libelf/gelf_update_verdef.c
@@ -1,52 +1,31 @@
 /* Update symbol version definition information.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_vernaux.c b/src/libelf/gelf_update_vernaux.c
index 2be69e1..1f691b0 100644
--- a/src/libelf/gelf_update_vernaux.c
+++ b/src/libelf/gelf_update_vernaux.c
@@ -1,52 +1,31 @@
 /* Update additional required symbol version information.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_verneed.c b/src/libelf/gelf_update_verneed.c
index 95f2d18..713c017 100644
--- a/src/libelf/gelf_update_verneed.c
+++ b/src/libelf/gelf_update_verneed.c
@@ -1,52 +1,31 @@
 /* Update required symbol version information.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_update_versym.c b/src/libelf/gelf_update_versym.c
index 905c8f7..03a3c5a 100644
--- a/src/libelf/gelf_update_versym.c
+++ b/src/libelf/gelf_update_versym.c
@@ -1,52 +1,31 @@
 /* Update symbol version information.
-   Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -75,8 +54,7 @@
   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;
diff --git a/src/libelf/gelf_xlate.c b/src/libelf/gelf_xlate.c
index 7cf3b3c..c417051 100644
--- a/src/libelf/gelf_xlate.c
+++ b/src/libelf/gelf_xlate.c
@@ -1,52 +1,31 @@
 /* Transformation functions for ELF data types.
    Copyright (C) 1998,1999,2000,2002,2004,2005,2006,2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -232,6 +211,4 @@
 /* For now we only handle the case where the memory representation is the
    same as the file representation.  Should this change we have to define
    separate functions.  For now reuse them.  */
-#ifndef __APPLE__
 strong_alias (__elf_xfctstom, __elf_xfctstof)
-#endif
diff --git a/src/libelf/gelf_xlate.h b/src/libelf/gelf_xlate.h
index e7659f1..f11eb90 100644
--- a/src/libelf/gelf_xlate.h
+++ b/src/libelf/gelf_xlate.h
@@ -1,52 +1,31 @@
 /* Helper file for type conversion function generation.
    Copyright (C) 1998, 1999, 2000, 2002, 2004, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 
 /* Simple types.  */
diff --git a/src/libelf/gelf_xlatetof.c b/src/libelf/gelf_xlatetof.c
index e7f8238..3366bdc 100644
--- a/src/libelf/gelf_xlatetof.c
+++ b/src/libelf/gelf_xlatetof.c
@@ -1,52 +1,31 @@
 /* Convert from memory to file representation.  Generic ELF version.
    Copyright (C) 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gelf_xlatetom.c b/src/libelf/gelf_xlatetom.c
index b7da1b2..c3e812f 100644
--- a/src/libelf/gelf_xlatetom.c
+++ b/src/libelf/gelf_xlatetom.c
@@ -1,52 +1,31 @@
 /* Convert from file to memory representation.  Generic ELF version.
    Copyright (C) 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/gnuhash_xlate.h b/src/libelf/gnuhash_xlate.h
index d79764d..6faf113 100644
--- a/src/libelf/gnuhash_xlate.h
+++ b/src/libelf/gnuhash_xlate.h
@@ -1,52 +1,31 @@
 /* Conversion functions for versioning information.
    Copyright (C) 2006, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2006.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <assert.h>
 #include <gelf.h>
diff --git a/src/libelf/libelf.h b/src/libelf/libelf.h
index 7cbff03..5a2b3af 100644
--- a/src/libelf/libelf.h
+++ b/src/libelf/libelf.h
@@ -1,51 +1,30 @@
 /* Interface for libelf.
    Copyright (C) 1998-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBELF_H
 #define _LIBELF_H 1
@@ -198,13 +177,13 @@
 extern int elf_end (Elf *__elf);
 
 /* Update ELF descriptor and write file to disk.  */
-extern off_t elf_update (Elf *__elf, Elf_Cmd __cmd);
+extern loff_t elf_update (Elf *__elf, Elf_Cmd __cmd);
 
 /* Determine what kind of file is associated with ELF.  */
 extern Elf_Kind elf_kind (Elf *__elf) __attribute__ ((__pure__));
 
 /* Get the base offset for an object file.  */
-extern off_t elf_getbase (Elf *__elf);
+extern loff_t elf_getbase (Elf *__elf);
 
 
 /* Retrieve file identification data.  */
@@ -334,7 +313,7 @@
 extern Elf_Arhdr *elf_getarhdr (Elf *__elf);
 
 /* Return offset in archive for current file ELF.  */
-extern off_t elf_getaroff (Elf *__elf);
+extern loff_t elf_getaroff (Elf *__elf);
 
 /* Select archive element at OFFSET.  */
 extern size_t elf_rand (Elf *__elf, size_t __offset);
diff --git a/src/libelf/libelfP.h b/src/libelf/libelfP.h
index 8f2f33a..52cf745 100644
--- a/src/libelf/libelfP.h
+++ b/src/libelf/libelfP.h
@@ -1,52 +1,31 @@
 /* Internal interfaces for libelf.
    Copyright (C) 1998-2010 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _LIBELFP_H
 #define _LIBELFP_H 1
@@ -608,4 +587,8 @@
 /* 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 */
diff --git a/src/libelf/libelf_crc32.c b/src/libelf/libelf_crc32.c
index 10ce34c..1426faf 100644
--- a/src/libelf/libelf_crc32.c
+++ b/src/libelf/libelf_crc32.c
@@ -1,50 +1,29 @@
 /* Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/libelf_next_prime.c b/src/libelf/libelf_next_prime.c
index 1b96012..05229c3 100644
--- a/src/libelf/libelf_next_prime.c
+++ b/src/libelf/libelf_next_prime.c
@@ -1,50 +1,29 @@
 /* Copyright (C) 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/nlist.c b/src/libelf/nlist.c
index f1fe176..41e5ff6 100644
--- a/src/libelf/nlist.c
+++ b/src/libelf/nlist.c
@@ -1,52 +1,31 @@
 /* Extract symbol list from binary.
    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005, 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/libelf/nlist.h b/src/libelf/nlist.h
index ce6569e..5990918 100644
--- a/src/libelf/nlist.h
+++ b/src/libelf/nlist.h
@@ -1,51 +1,30 @@
 /* Interface for nlist.
    Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _NLIST_H
 #define _NLIST_H 1
diff --git a/src/libelf/note_xlate.h b/src/libelf/note_xlate.h
index a72fe86..62c6f63 100644
--- a/src/libelf/note_xlate.h
+++ b/src/libelf/note_xlate.h
@@ -1,51 +1,30 @@
 /* Conversion functions for notes.
-   Copyright (C) 2007, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2007, 2009, 2014 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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/>.  */
 
 static void
 elf_cvt_note (void *dest, const void *src, size_t len, int encode)
@@ -77,4 +56,9 @@
       src += namesz + descsz;
       dest += namesz + descsz;
     }
+
+    /* Copy opver any leftover data unconcerted.  Probably part of
+       truncated name/desc data.  */
+    if (unlikely (len > 0) && src != dest)
+      memcpy (dest, src, len);
 }
diff --git a/src/libelf/version_xlate.h b/src/libelf/version_xlate.h
index b32cacd..16eaa19 100644
--- a/src/libelf/version_xlate.h
+++ b/src/libelf/version_xlate.h
@@ -1,52 +1,31 @@
 /* Conversion functions for versioning information.
    Copyright (C) 1998, 1999, 2000, 2002, 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+     * 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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <assert.h>
 #include <gelf.h>
@@ -82,7 +61,7 @@
       GElf_Verdaux *asrc;
 
       /* Test for correct offset.  */
-      if (def_offset + sizeof (GElf_Verdef) > len)
+      if (def_offset > len || len - def_offset < sizeof (GElf_Verdef))
 	return;
 
       /* Work the tree from the first record.  */
@@ -111,7 +90,7 @@
 	  GElf_Verdaux *adest;
 
 	  /* Test for correct offset.  */
-	  if (aux_offset + sizeof (GElf_Verdaux) > len)
+	  if (aux_offset > len || len - aux_offset < sizeof (GElf_Verdaux))
 	    return;
 
 	  adest = (GElf_Verdaux *) ((char *) dest + aux_offset);
@@ -176,7 +155,7 @@
       GElf_Vernaux *asrc;
 
       /* Test for correct offset.  */
-      if (need_offset + sizeof (GElf_Verneed) > len)
+      if (need_offset > len || len - need_offset < sizeof (GElf_Verneed))
 	return;
 
       /* Work the tree from the first record.  */
@@ -203,7 +182,7 @@
 	  GElf_Vernaux *adest;
 
 	  /* Test for correct offset.  */
-	  if (aux_offset + sizeof (GElf_Vernaux) > len)
+	  if (aux_offset > len || len - aux_offset < sizeof (GElf_Vernaux))
 	    return;
 
 	  adest = (GElf_Vernaux *) ((char *) dest + aux_offset);
diff --git a/src/m4/ChangeLog b/src/m4/ChangeLog
index d4f2bc1..163ee73 100644
--- a/src/m4/ChangeLog
+++ b/src/m4/ChangeLog
@@ -1,3 +1,23 @@
+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.
diff --git a/src/m4/Makefile b/src/m4/Makefile
new file mode 100644
index 0000000..a540ae0
--- /dev/null
+++ b/src/m4/Makefile
@@ -0,0 +1,425 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# m4/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = m4
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ChangeLog
+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 =
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 0.161
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/m4
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/m4
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+EXTRA_DIST = codeset.m4 gettext.m4 iconv.m4 lcmessage.m4 progtest.m4 zip.m4
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.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 m4/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits m4/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_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+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
+installdirs:
+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:
+
+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 mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+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 -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.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.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/m4/Makefile.am b/src/m4/Makefile.am
index 156010c..3b0e114 100644
--- a/src/m4/Makefile.am
+++ b/src/m4/Makefile.am
@@ -1,28 +1,20 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
 ##
 ## Copyright (C) 2000-2009 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## 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.
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+## 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.
+## 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ##
 
 ##m4-files-begin
diff --git a/src/m4/Makefile.in b/src/m4/Makefile.in
index 1958a35..a74f3ec 100644
--- a/src/m4/Makefile.in
+++ b/src/m4/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -15,6 +14,51 @@
 
 @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@
@@ -34,9 +78,10 @@
 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) \
@@ -45,18 +90,40 @@
 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@
@@ -65,10 +132,13 @@
 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@
@@ -89,6 +159,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -99,6 +170,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -113,6 +185,7 @@
 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@
@@ -196,11 +269,11 @@
 $(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)
@@ -247,10 +320,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -330,15 +408,16 @@
 
 .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.
diff --git a/src/m4/biarch.m4 b/src/m4/biarch.m4
new file mode 100644
index 0000000..c238d8d
--- /dev/null
+++ b/src/m4/biarch.m4
@@ -0,0 +1,47 @@
+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])])
diff --git a/src/m4/gettext.m4 b/src/m4/gettext.m4
index c9ae1f7..8d1f066 100644
--- a/src/m4/gettext.m4
+++ b/src/m4/gettext.m4
@@ -1,5 +1,5 @@
-# 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.
@@ -15,7 +15,7 @@
 
 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.
 
@@ -35,7 +35,7 @@
 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
@@ -60,6 +60,8 @@
   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
 ])])])])
@@ -95,7 +97,7 @@
     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.
@@ -123,11 +125,11 @@
     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
@@ -155,12 +157,18 @@
         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"])])
 
@@ -181,35 +189,47 @@
             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"])
@@ -267,7 +287,7 @@
 
     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
@@ -301,9 +321,9 @@
       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
 
@@ -319,9 +339,9 @@
     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=
@@ -329,36 +349,36 @@
 
     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])
 ])
 
 
diff --git a/src/m4/iconv.m4 b/src/m4/iconv.m4
index 66bc76f..a503646 100644
--- a/src/m4/iconv.m4
+++ b/src/m4/iconv.m4
@@ -1,5 +1,5 @@
-# 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.
@@ -30,44 +30,55 @@
   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.  */
   {
@@ -84,7 +95,47 @@
                             (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.  */
@@ -103,7 +154,8 @@
                             (char **) &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if ((int)res > 0)
-          return 1;
+          result |= 8;
+        iconv_close (cd_88591_to_utf8);
       }
   }
 #endif
@@ -117,13 +169,19 @@
       && 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
@@ -134,7 +192,7 @@
     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
@@ -147,34 +205,64 @@
     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
 ])
diff --git a/src/m4/po.m4 b/src/m4/po.m4
index 0734762..f395723 100644
--- a/src/m4/po.m4
+++ b/src/m4/po.m4
@@ -1,5 +1,5 @@
-# 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.
@@ -17,19 +17,19 @@
 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.
@@ -41,7 +41,7 @@
     [$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
@@ -102,7 +102,7 @@
       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.
@@ -118,7 +118,8 @@
         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
@@ -129,12 +130,12 @@
               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
@@ -226,7 +227,7 @@
 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.
@@ -254,6 +255,7 @@
   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
@@ -261,9 +263,9 @@
 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
@@ -315,7 +317,7 @@
     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)
@@ -405,14 +407,15 @@
   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
@@ -422,8 +425,8 @@
       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
diff --git a/src/po/ChangeLog b/src/po/ChangeLog
index a2a933c..885cc58 100644
--- a/src/po/ChangeLog
+++ b/src/po/ChangeLog
@@ -1,3 +1,43 @@
+2014-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* *.po: Update for 0.161.
+
+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.
+
+2012-06-22  Mark Wielaard  <mjw@redhat.com>
+
+	* *.po: Update for 0.154.
+
 2012-02-23  Mark Wielaard  <mjw@redhat.com>
 
 	* *.po: Update for 0.153.
diff --git a/src/po/Makefile b/src/po/Makefile
new file mode 100644
index 0000000..86af82f
--- /dev/null
+++ b/src/po/Makefile
@@ -0,0 +1,579 @@
+# Makefile for PO directory in any package using GNU gettext.
+# 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
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# 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.18.2
+GETTEXT_MACRO_VERSION = 0.18
+
+PACKAGE = elfutils
+VERSION = 0.161
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+
+SHELL = /bin/sh
+
+
+srcdir = .
+top_srcdir = ..
+
+
+prefix = /usr/local
+exec_prefix = ${prefix}
+datarootdir = ${prefix}/share
+datadir = ${datarootdir}
+localedir = ${datarootdir}/locale
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh does not start with $(SHELL), so we add it.
+# In automake >= 1.10, $(MKDIR_P) is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh -d
+install_sh = $(SHELL) ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+MKDIR_P = /bin/mkdir -p
+mkdir_p = $(MKDIR_P)
+
+GMSGFMT_ = /usr/bin/msgfmt
+GMSGFMT_no = /usr/bin/msgfmt
+GMSGFMT_yes = /usr/bin/msgfmt
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = /usr/bin/msgfmt
+MSGFMT_no = /usr/bin/msgfmt
+MSGFMT_yes = /usr/bin/msgfmt
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = /usr/bin/xgettext
+XGETTEXT_no = /usr/bin/xgettext
+XGETTEXT_yes = /usr/bin/xgettext
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = /usr/bin/msgmerge --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES =  de.po es.po ja.po pl.po uk.po en@quot.po en@boldquot.po
+GMOFILES =  de.gmo es.gmo ja.gmo pl.gmo uk.gmo en@quot.gmo en@boldquot.gmo
+UPDATEPOFILES =  de.po-update es.po-update ja.po-update pl.po-update uk.po-update en@quot.po-update en@boldquot.po-update
+DUMMYPOFILES =  de.nop es.nop ja.nop pl.nop uk.nop en@quot.nop en@boldquot.nop
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+     ../lib/xmalloc.c \
+     ../lib/xstrndup.c \
+     ../libasm/asm_error.c \
+     ../libdw/dwarf_error.c \
+     ../libdwfl/argp-std.c \
+     ../libdwfl/libdwflP.h \
+     ../libebl/eblbackendname.c \
+     ../libebl/eblcorenotetypename.c \
+     ../libebl/ebldynamictagname.c \
+     ../libebl/eblobjecttypename.c \
+     ../libebl/eblobjnote.c \
+     ../libebl/eblobjnotetypename.c \
+     ../libebl/eblosabiname.c \
+     ../libebl/eblsectionname.c \
+     ../libebl/eblsectiontypename.c \
+     ../libebl/eblsegmenttypename.c \
+     ../libebl/eblsymbolbindingname.c \
+     ../libebl/eblsymboltypename.c \
+     ../libelf/elf_error.c \
+     ../src/addr2line.c \
+     ../src/ar.c \
+     ../src/arlib.c \
+     ../src/elfcmp.c \
+     ../src/elflint.c \
+     ../src/findtextrel.c \
+     ../src/i386_ld.c \
+     ../src/ld.c \
+     ../src/ldgeneric.c \
+     ../src/ldscript.y \
+     ../src/nm.c \
+     ../src/objdump.c \
+     ../src/ranlib.c \
+     ../src/readelf.c \
+     ../src/size.c \
+     ../src/strings.c \
+     ../src/strip.c \
+     ../src/unstrip.c
+
+CATALOGS =  de.gmo es.gmo ja.gmo pl.gmo uk.gmo en@quot.gmo en@boldquot.gmo
+
+# Makevars gets inserted here. (Don't remove this line!)
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_  --flag=error:3:c-format \
+		   --flag=ERROR:1:c-format --flag=argp_error:2:c-format
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Red Hat, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = http://bugzilla.redhat.com/
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+	@echo "$(MSGFMT) -c -o $@ $<"; \
+	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+	@lang=`echo $* | sed -e 's,.*/,,'`; \
+	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+	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: all-yes
+
+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)" = "0.18" \
+	  || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.18" 1>&2; \
+	       exit 1; \
+	     }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(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 || { \
+	  echo "touch stamp-po" && \
+	  echo timestamp > stamp-poT && \
+	  mv stamp-poT stamp-po; \
+	}
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# 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 { 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 elfutils' /dev/null '{}' ';' 2>/dev/null; \
+	     else \
+	       LC_ALL=C grep 'GNU elfutils' $(top_srcdir)/* 2>/dev/null; \
+	     fi; \
+	   } | grep -v 'libtool:' >/dev/null; then \
+	  package_gnu='GNU '; \
+	else \
+	  package_gnu=''; \
+	fi; \
+	if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+	  msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+	else \
+	  msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+	fi; \
+	case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+	  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS)  \
+	      --files-from=$(srcdir)/POTFILES.in \
+	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
+	      --msgid-bugs-address="$$msgid_bugs_address" \
+	    ;; \
+	  *) \
+	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS)  \
+	      --files-from=$(srcdir)/POTFILES.in \
+	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
+	      --package-name="$${package_gnu}elfutils" \
+	      --package-version='0.161' \
+	      --msgid-bugs-address="$$msgid_bugs_address" \
+	    ;; \
+	esac
+	test ! -f $(DOMAIN).po || { \
+	  if test -f $(srcdir)/$(DOMAIN).pot; then \
+	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+	    else \
+	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+	    fi; \
+	  else \
+	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+	  fi; \
+	}
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+	$(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+	@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) $(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
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-yes
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+	  for file in $(DISTFILES.common) Makevars.template; do \
+	    $(INSTALL_DATA) $(srcdir)/$$file \
+			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	  for file in Makevars; do \
+	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	else \
+	  : ; \
+	fi
+install-data-no: all
+install-data-yes: all
+	@catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+	  $(mkdir_p) $(DESTDIR)$$dir; \
+	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+	    if test -n "$$lc"; then \
+	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+	         for file in *; do \
+	           if test -f $$file; then \
+	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+	           fi; \
+	         done); \
+	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	      else \
+	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+	          :; \
+	        else \
+	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        fi; \
+	      fi; \
+	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+	    fi; \
+	  done; \
+	done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-yes
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+	else \
+	  : ; \
+	fi
+installdirs-data-no:
+installdirs-data-yes:
+	@catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+	  $(mkdir_p) $(DESTDIR)$$dir; \
+	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+	    if test -n "$$lc"; then \
+	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+	         for file in *; do \
+	           if test -f $$file; then \
+	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+	           fi; \
+	         done); \
+	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	      else \
+	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+	          :; \
+	        else \
+	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        fi; \
+	      fi; \
+	    fi; \
+	  done; \
+	done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-yes
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  for file in $(DISTFILES.common) Makevars.template; do \
+	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	else \
+	  : ; \
+	fi
+uninstall-data-no:
+uninstall-data-yes:
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	  done; \
+	done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+	rm -f remove-potcdate.sed
+	rm -f stamp-poT
+	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+	rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+	rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+	rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+	$(MAKE) update-po
+	@$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+	dists="$(DISTFILES)"; \
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  dists="$$dists Makevars.template"; \
+	fi; \
+	if test -f $(srcdir)/$(DOMAIN).pot; then \
+	  dists="$$dists $(DOMAIN).pot stamp-po"; \
+	fi; \
+	if test -f $(srcdir)/ChangeLog; then \
+	  dists="$$dists ChangeLog"; \
+	fi; \
+	for i in 0 1 2 3 4 5 6 7 8 9; do \
+	  if test -f $(srcdir)/ChangeLog.$$i; then \
+	    dists="$$dists ChangeLog.$$i"; \
+	  fi; \
+	done; \
+	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+	for file in $$dists; do \
+	  if test -f $$file; then \
+	    cp -p $$file $(distdir) || exit 1; \
+	  else \
+	    cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+	  fi; \
+	done
+
+update-po: Makefile
+	$(MAKE) $(DOMAIN).pot-update
+	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+	$(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+	@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+	echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+	exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+	if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+	tmpdir=`pwd`; \
+	echo "$$lang:"; \
+	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+	cd $(srcdir); \
+	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 \
+	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	      :; \
+	    else \
+	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	      exit 1; \
+	    fi; \
+	  fi; \
+	else \
+	  echo "msgmerge for $$lang.po failed!" 1>&2; \
+	  rm -f $$tmpdir/$$lang.new.po; \
+	fi
+
+$(DUMMYPOFILES):
+
+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 /bin/sh, 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 POTFILES.in LINGUAS
+	cd $(top_builddir) \
+	  && /bin/sh ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po-create:
+	$(MAKE) en@quot.po-update
+en@boldquot.po-create:
+	$(MAKE) en@boldquot.po-update
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+.insert-header.po-update-en:
+	@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+	if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+	tmpdir=`pwd`; \
+	echo "$$lang:"; \
+	ll=`echo $$lang | sed -e 's/@.*//'`; \
+	LC_ALL=C; export LC_ALL; \
+	cd $(srcdir); \
+	if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+	    rm -f $$tmpdir/$$lang.new.po; \
+	  else \
+	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	      :; \
+	    else \
+	      echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	      exit 1; \
+	    fi; \
+	  fi; \
+	else \
+	  echo "creation of $$lang.po failed!" 1>&2; \
+	  rm -f $$tmpdir/$$lang.new.po; \
+	fi
+
+en@quot.insert-header: insert-header.sin
+	sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+	sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+	rm -f *.insert-header
diff --git a/src/po/Makefile.in b/src/po/Makefile.in
new file mode 100644
index 0000000..1b4b44e
--- /dev/null
+++ b/src/po/Makefile.in
@@ -0,0 +1,453 @@
+# Makefile for PO directory in any package using GNU gettext.
+# 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
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# 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.18.2
+GETTEXT_MACRO_VERSION = 0.18
+
+PACKAGE = elfutils
+VERSION = 0.161
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+
+SHELL = /bin/sh
+
+
+srcdir = .
+top_srcdir = ..
+
+
+prefix = /usr/local
+exec_prefix = ${prefix}
+datarootdir = ${prefix}/share
+datadir = ${datarootdir}
+localedir = ${datarootdir}/locale
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh does not start with $(SHELL), so we add it.
+# In automake >= 1.10, $(MKDIR_P) is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh -d
+install_sh = $(SHELL) ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+MKDIR_P = /bin/mkdir -p
+mkdir_p = $(MKDIR_P)
+
+GMSGFMT_ = /usr/bin/msgfmt
+GMSGFMT_no = /usr/bin/msgfmt
+GMSGFMT_yes = /usr/bin/msgfmt
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = /usr/bin/msgfmt
+MSGFMT_no = /usr/bin/msgfmt
+MSGFMT_yes = /usr/bin/msgfmt
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = /usr/bin/xgettext
+XGETTEXT_no = /usr/bin/xgettext
+XGETTEXT_yes = /usr/bin/xgettext
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = /usr/bin/msgmerge --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+	@echo "$(MSGFMT) -c -o $@ $<"; \
+	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+	@lang=`echo $* | sed -e 's,.*/,,'`; \
+	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+	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: all-yes
+
+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)" = "0.18" \
+	  || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.18" 1>&2; \
+	       exit 1; \
+	     }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(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 || { \
+	  echo "touch stamp-po" && \
+	  echo timestamp > stamp-poT && \
+	  mv stamp-poT stamp-po; \
+	}
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# 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 { 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 elfutils' /dev/null '{}' ';' 2>/dev/null; \
+	     else \
+	       LC_ALL=C grep 'GNU elfutils' $(top_srcdir)/* 2>/dev/null; \
+	     fi; \
+	   } | grep -v 'libtool:' >/dev/null; then \
+	  package_gnu='GNU '; \
+	else \
+	  package_gnu=''; \
+	fi; \
+	if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+	  msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+	else \
+	  msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+	fi; \
+	case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+	  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS)  \
+	      --files-from=$(srcdir)/POTFILES.in \
+	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
+	      --msgid-bugs-address="$$msgid_bugs_address" \
+	    ;; \
+	  *) \
+	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS)  \
+	      --files-from=$(srcdir)/POTFILES.in \
+	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
+	      --package-name="$${package_gnu}elfutils" \
+	      --package-version='0.161' \
+	      --msgid-bugs-address="$$msgid_bugs_address" \
+	    ;; \
+	esac
+	test ! -f $(DOMAIN).po || { \
+	  if test -f $(srcdir)/$(DOMAIN).pot; then \
+	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+	    else \
+	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+	    fi; \
+	  else \
+	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+	  fi; \
+	}
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+	$(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+	@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) $(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
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-yes
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+	  for file in $(DISTFILES.common) Makevars.template; do \
+	    $(INSTALL_DATA) $(srcdir)/$$file \
+			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	  for file in Makevars; do \
+	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	else \
+	  : ; \
+	fi
+install-data-no: all
+install-data-yes: all
+	@catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+	  $(mkdir_p) $(DESTDIR)$$dir; \
+	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+	    if test -n "$$lc"; then \
+	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+	         for file in *; do \
+	           if test -f $$file; then \
+	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+	           fi; \
+	         done); \
+	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	      else \
+	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+	          :; \
+	        else \
+	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        fi; \
+	      fi; \
+	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+	    fi; \
+	  done; \
+	done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-yes
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+	else \
+	  : ; \
+	fi
+installdirs-data-no:
+installdirs-data-yes:
+	@catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+	  $(mkdir_p) $(DESTDIR)$$dir; \
+	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+	    if test -n "$$lc"; then \
+	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+	         for file in *; do \
+	           if test -f $$file; then \
+	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+	           fi; \
+	         done); \
+	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	      else \
+	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+	          :; \
+	        else \
+	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        fi; \
+	      fi; \
+	    fi; \
+	  done; \
+	done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-yes
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  for file in $(DISTFILES.common) Makevars.template; do \
+	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	else \
+	  : ; \
+	fi
+uninstall-data-no:
+uninstall-data-yes:
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	  done; \
+	done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+	rm -f remove-potcdate.sed
+	rm -f stamp-poT
+	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+	rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+	rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+	rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+	$(MAKE) update-po
+	@$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+	dists="$(DISTFILES)"; \
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  dists="$$dists Makevars.template"; \
+	fi; \
+	if test -f $(srcdir)/$(DOMAIN).pot; then \
+	  dists="$$dists $(DOMAIN).pot stamp-po"; \
+	fi; \
+	if test -f $(srcdir)/ChangeLog; then \
+	  dists="$$dists ChangeLog"; \
+	fi; \
+	for i in 0 1 2 3 4 5 6 7 8 9; do \
+	  if test -f $(srcdir)/ChangeLog.$$i; then \
+	    dists="$$dists ChangeLog.$$i"; \
+	  fi; \
+	done; \
+	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+	for file in $$dists; do \
+	  if test -f $$file; then \
+	    cp -p $$file $(distdir) || exit 1; \
+	  else \
+	    cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+	  fi; \
+	done
+
+update-po: Makefile
+	$(MAKE) $(DOMAIN).pot-update
+	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+	$(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+	@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+	echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+	exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+	if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+	tmpdir=`pwd`; \
+	echo "$$lang:"; \
+	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+	cd $(srcdir); \
+	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 \
+	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	      :; \
+	    else \
+	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	      exit 1; \
+	    fi; \
+	  fi; \
+	else \
+	  echo "msgmerge for $$lang.po failed!" 1>&2; \
+	  rm -f $$tmpdir/$$lang.new.po; \
+	fi
+
+$(DUMMYPOFILES):
+
+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 /bin/sh, 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) \
+	  && /bin/sh ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/po/Makefile.in.in b/src/po/Makefile.in.in
index fecf500..fce63a6 100644
--- a/src/po/Makefile.in.in
+++ b/src/po/Makefile.in.in
@@ -1,5 +1,5 @@
 # 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
@@ -8,8 +8,8 @@
 # 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@
@@ -88,22 +88,22 @@
 .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; \
 	     }
@@ -123,6 +123,7 @@
 # $(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 || { \
@@ -137,8 +138,16 @@
 
 # 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=''; \
@@ -193,8 +202,15 @@
 	@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
@@ -217,7 +233,6 @@
 	fi
 install-data-no: all
 install-data-yes: all
-	$(mkdir_p) $(DESTDIR)$(datadir)
 	@catalogs='$(CATALOGS)'; \
 	for cat in $$catalogs; do \
 	  cat=`basename $$cat`; \
@@ -269,7 +284,6 @@
 	fi
 installdirs-data-no:
 installdirs-data-yes:
-	$(mkdir_p) $(DESTDIR)$(datadir)
 	@catalogs='$(CATALOGS)'; \
 	for cat in $$catalogs; do \
 	  cat=`basename $$cat`; \
@@ -395,9 +409,15 @@
 	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 \
@@ -418,9 +438,13 @@
 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:
 
diff --git a/src/po/POTFILES b/src/po/POTFILES
new file mode 100644
index 0000000..ee2f104
--- /dev/null
+++ b/src/po/POTFILES
@@ -0,0 +1,37 @@
+     ../lib/xmalloc.c \
+     ../lib/xstrndup.c \
+     ../libasm/asm_error.c \
+     ../libdw/dwarf_error.c \
+     ../libdwfl/argp-std.c \
+     ../libdwfl/libdwflP.h \
+     ../libebl/eblbackendname.c \
+     ../libebl/eblcorenotetypename.c \
+     ../libebl/ebldynamictagname.c \
+     ../libebl/eblobjecttypename.c \
+     ../libebl/eblobjnote.c \
+     ../libebl/eblobjnotetypename.c \
+     ../libebl/eblosabiname.c \
+     ../libebl/eblsectionname.c \
+     ../libebl/eblsectiontypename.c \
+     ../libebl/eblsegmenttypename.c \
+     ../libebl/eblsymbolbindingname.c \
+     ../libebl/eblsymboltypename.c \
+     ../libelf/elf_error.c \
+     ../src/addr2line.c \
+     ../src/ar.c \
+     ../src/arlib.c \
+     ../src/elfcmp.c \
+     ../src/elflint.c \
+     ../src/findtextrel.c \
+     ../src/i386_ld.c \
+     ../src/ld.c \
+     ../src/ldgeneric.c \
+     ../src/ldscript.y \
+     ../src/nm.c \
+     ../src/objdump.c \
+     ../src/ranlib.c \
+     ../src/readelf.c \
+     ../src/size.c \
+     ../src/strings.c \
+     ../src/strip.c \
+     ../src/unstrip.c
diff --git a/src/po/de.gmo b/src/po/de.gmo
index cfa7f65..8cfb1cd 100644
--- a/src/po/de.gmo
+++ b/src/po/de.gmo
Binary files differ
diff --git a/src/po/de.po b/src/po/de.po
index 9177c3d..dd89c84 100644
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -11,639 +11,718 @@
 msgstr ""
 "Project-Id-Version: elfutils VERSION\n"
 "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-02-16 13:21+0100\n"
+"POT-Creation-Date: 2014-12-19 21:45+0100\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:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2844
-#: src/readelf.c:3183 src/unstrip.c:2098 src/unstrip.c:2306
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3182
+#: src/readelf.c:3559 src/readelf.c:8285 src/unstrip.c:2127 src/unstrip.c:2335
 #, c-format
 msgid "memory exhausted"
 msgstr "Kein Speicher mehr verfügbar"
 
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
+#: 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:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
+#: 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"
 
-#: libasm/asm_error.c:64 src/ldgeneric.c:2685
+#: libasm/asm_error.c:67 src/ldgeneric.c:2677
 #, c-format
 msgid "cannot create output file"
 msgstr "Ausgangsdatei konnte nicht erstellt werden"
 
-#: libasm/asm_error.c:65
+#: libasm/asm_error.c:68
 msgid "invalid parameter"
 msgstr "ungültiger Parameter"
 
-#: libasm/asm_error.c:66
+#: libasm/asm_error.c:69
 msgid "cannot change mode of output file"
 msgstr "konnte Modus der Ausgabedatei nicht ändern"
 
-#: libasm/asm_error.c:67 src/ldgeneric.c:6998
+#: libasm/asm_error.c:70 src/ldgeneric.c:6990
 #, c-format
 msgid "cannot rename output file"
 msgstr "Ausgangsdatei konnte nicht umbenannt werden"
 
-#: libasm/asm_error.c:68
+#: libasm/asm_error.c:71
 msgid "duplicate symbol"
 msgstr "Symbol doppelt vorhanden"
 
-#: libasm/asm_error.c:69
+#: libasm/asm_error.c:72
 msgid "invalid section type for operation"
 msgstr "ungültiger Abschnittstyp für Operation"
 
-#: libasm/asm_error.c:70
+#: libasm/asm_error.c:73
 msgid "error during output of data"
 msgstr "Fehler bei Datenausgabe"
 
-#: libasm/asm_error.c:71
+#: libasm/asm_error.c:74
 msgid "no backend support available"
 msgstr "keine Backend-Unterstützung verfügbar"
 
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
+#: 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"
 
-#: libdw/dwarf_error.c:81
+#: libdw/dwarf_error.c:60
 msgid "invalid access"
 msgstr "Ungültiger Zugriff"
 
-#: libdw/dwarf_error.c:82
+#: libdw/dwarf_error.c:61
 msgid "no regular file"
 msgstr "Keine reguläre Date"
 
-#: libdw/dwarf_error.c:83
+#: libdw/dwarf_error.c:62
 msgid "I/O error"
 msgstr "I/O Fehler"
 
-#: libdw/dwarf_error.c:84
+#: libdw/dwarf_error.c:63
 msgid "invalid ELF file"
 msgstr "Ungültige ELF Datei"
 
-#: libdw/dwarf_error.c:85
+#: libdw/dwarf_error.c:64
 msgid "no DWARF information"
 msgstr "keine DWARF Information"
 
-#: libdw/dwarf_error.c:86
+#: libdw/dwarf_error.c:65
 msgid "no ELF file"
 msgstr "keine ELF Datei"
 
-#: libdw/dwarf_error.c:87
+#: libdw/dwarf_error.c:66
 msgid "cannot get ELF header"
 msgstr "ELF Kopf konnte nicht ausgelesen werden"
 
-#: libdw/dwarf_error.c:89
+#: libdw/dwarf_error.c:68
 msgid "not implemented"
 msgstr "Nicht implementiert"
 
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
+#: libdw/dwarf_error.c:69 libelf/elf_error.c:107 libelf/elf_error.c:155
 msgid "invalid command"
 msgstr "Ungültiger Befehl"
 
-#: libdw/dwarf_error.c:91
+#: libdw/dwarf_error.c:70
 msgid "invalid version"
 msgstr "Ungültige Version"
 
-#: libdw/dwarf_error.c:92
+#: libdw/dwarf_error.c:71
 msgid "invalid file"
 msgstr "Ungültige Datei"
 
-#: libdw/dwarf_error.c:93
+#: libdw/dwarf_error.c:72
 msgid "no entries found"
 msgstr "Keine Einträge gefunden"
 
-#: libdw/dwarf_error.c:94
+#: libdw/dwarf_error.c:73
 msgid "invalid DWARF"
 msgstr "DWARF ungültig"
 
-#: libdw/dwarf_error.c:95
+#: libdw/dwarf_error.c:74
 msgid "no string data"
 msgstr ""
 
-#: libdw/dwarf_error.c:96
+#: libdw/dwarf_error.c:75
 msgid "no address value"
 msgstr "Kein Adress-Wert"
 
-#: libdw/dwarf_error.c:97
+#: libdw/dwarf_error.c:76
 msgid "no constant value"
 msgstr "Kein Konstanten-Wert"
 
-#: libdw/dwarf_error.c:98
+#: libdw/dwarf_error.c:77
 msgid "no reference value"
 msgstr "Kein Referenz-Wert"
 
-#: libdw/dwarf_error.c:99
+#: libdw/dwarf_error.c:78
 msgid "invalid reference value"
 msgstr "Ungültiger Referenz-Wert"
 
-#: libdw/dwarf_error.c:100
+#: libdw/dwarf_error.c:79
 msgid ".debug_line section missing"
 msgstr ".debug_line Sektion fehlt"
 
-#: libdw/dwarf_error.c:101
+#: libdw/dwarf_error.c:80
 msgid "invalid .debug_line section"
 msgstr "ungültige .debug_line Sektion"
 
-#: libdw/dwarf_error.c:102
+#: libdw/dwarf_error.c:81
 msgid "debug information too big"
 msgstr "Debug Information zu groß"
 
-#: libdw/dwarf_error.c:103
+#: libdw/dwarf_error.c:82
 msgid "invalid DWARF version"
 msgstr "Ungültige DWARF Version"
 
-#: libdw/dwarf_error.c:104
+#: libdw/dwarf_error.c:83
 msgid "invalid directory index"
 msgstr "ungültiger Verzeichnisindex"
 
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
 msgid "address out of range"
 msgstr "Außerhalb des Adressbereiches"
 
-#: libdw/dwarf_error.c:106
+#: libdw/dwarf_error.c:85
 msgid "no location list value"
 msgstr ""
 
-#: libdw/dwarf_error.c:107
+#: libdw/dwarf_error.c:86
 msgid "no block data"
 msgstr ""
 
-#: libdw/dwarf_error.c:108
+#: libdw/dwarf_error.c:87
 msgid "invalid line index"
 msgstr "Ungültiger Zeilenindex"
 
-#: libdw/dwarf_error.c:109
+#: libdw/dwarf_error.c:88
 msgid "invalid address range index"
 msgstr "Ungültiger Adressbereichs Index"
 
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
 msgid "no matching address range"
 msgstr "Kein passender Adressbereich"
 
-#: libdw/dwarf_error.c:111
+#: libdw/dwarf_error.c:90
 msgid "no flag value"
 msgstr ""
 
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
+#: libdw/dwarf_error.c:91 libelf/elf_error.c:232
 msgid "invalid offset"
 msgstr "ungültiger Offset"
 
-#: libdw/dwarf_error.c:113
+#: libdw/dwarf_error.c:92
 msgid ".debug_ranges section missing"
 msgstr ""
 
-#: libdw/dwarf_error.c:114
+#: libdw/dwarf_error.c:93
 #, fuzzy
 msgid "invalid CFI section"
 msgstr "ungültiger Abschnitt"
 
-#: libdwfl/argp-std.c:67 src/unstrip.c:2248
+#: libdw/dwarf_error.c:94
+msgid "no alternative debug link found"
+msgstr ""
+
+#: libdw/dwarf_error.c:95
+#, fuzzy
+msgid "invalid opcode"
+msgstr "ungültiger Operand"
+
+#: libdwfl/argp-std.c:46 src/unstrip.c:2277
 msgid "Input selection options:"
 msgstr "Eingabeauswahloptionen:"
 
-#: libdwfl/argp-std.c:68
+#: libdwfl/argp-std.c:47
 msgid "Find addresses in FILE"
 msgstr "Finde Adressen in FILE"
 
-#: libdwfl/argp-std.c:70
+#: libdwfl/argp-std.c:49
 msgid "Find addresses from signatures found in COREFILE"
 msgstr "Finde Adressen von Signatur aus COREFILE"
 
-#: libdwfl/argp-std.c:72
+#: libdwfl/argp-std.c:51
 msgid "Find addresses in files mapped into process PID"
 msgstr ""
 
-#: libdwfl/argp-std.c:74
+#: libdwfl/argp-std.c:53
 msgid ""
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
 msgstr ""
 
-#: libdwfl/argp-std.c:76
+#: libdwfl/argp-std.c:55
 msgid "Find addresses in the running kernel"
 msgstr "Finde Adressen im laufenden Kernel"
 
-#: libdwfl/argp-std.c:78
+#: libdwfl/argp-std.c:57
 msgid "Kernel with all modules"
 msgstr "Kernel mit allen Modulen"
 
-#: libdwfl/argp-std.c:80
+#: libdwfl/argp-std.c:59
 msgid "Search path for separate debuginfo files"
 msgstr "Dateisuchpfad für separate Debug-Informationen"
 
-#: libdwfl/argp-std.c:163
+#: 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:223
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
+msgstr "Konnte Kernel Symbole nicht laden"
+
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
+msgstr "Konnte Kernel Module nicht finden"
+
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
+msgstr "Konnte Kernel oder Module nicht finden"
+
+#: 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:241
+#: libdwfl/argp-std.c:311
 msgid "No modules recognized in core file"
 msgstr "Keine Module in der Kerndatei gefunden"
 
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr "Konnte Kernel Symbole nicht laden"
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr "Konnte Kernel Module nicht finden"
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr "Konnte Kernel oder Module nicht finden"
-
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:56
 msgid "See errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:57
 msgid "See elf_errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:58
 msgid "See dwarf_errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:59
 msgid "See ebl_errno (XXX missing)"
 msgstr ""
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:60
 msgid "gzip decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:61
 msgid "bzip2 decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:62
 msgid "LZMA decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:63
 msgid "no support library found for machine"
 msgstr ""
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:64
 msgid "Callbacks missing for ET_REL file"
 msgstr ""
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:65
 msgid "Unsupported relocation type"
 msgstr ""
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:66
 msgid "r_offset is bogus"
 msgstr ""
 
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
+#: 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:85
+#: libdwfl/libdwflP.h:68
 #, fuzzy
 msgid "relocation refers to undefined symbol"
 msgstr "Zeige Grösse der definierten Symbole"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:69
 msgid "Callback returned failure"
 msgstr ""
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:70
 #, fuzzy
 msgid "No DWARF information found"
 msgstr "keine DWARF Information"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:71
 msgid "No symbol table found"
 msgstr ""
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:72
 #, fuzzy
 msgid "No ELF program headers"
 msgstr "Programm-Köpfe anzeigen"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:73
 msgid "address range overlaps an existing module"
 msgstr ""
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:76
 msgid "image truncated"
 msgstr ""
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:77
 #, fuzzy
 msgid "ELF file opened"
 msgstr "keine ELF Datei"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:78
 #, fuzzy
 msgid "not a valid ELF file"
 msgstr "Ungültige ELF Datei"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:79
 #, fuzzy
 msgid "cannot handle DWARF type description"
 msgstr "konnte Elf-Deskriptor nicht erzeugen: %s"
 
-#: libdwfl/libdwflP.h:97
+#: libdwfl/libdwflP.h:80
 msgid "ELF file does not match build ID"
 msgstr ""
 
-#: libdwfl/libdwflP.h:98
+#: libdwfl/libdwflP.h:81
 #, fuzzy
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: libebl/eblbackendname.c:63
+#: 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:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:94 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
+#: 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 "<unknown>"
 msgstr "<Unbekannt>"
 
-#: libebl/ebldynamictagname.c:126
+#: libebl/ebldynamictagname.c:105
 #, c-format
 msgid "<unknown>: %#<PRIx64>"
 msgstr "<Unbekannt>: %#<PRIx64>"
 
-#: libebl/eblobjnote.c:76
+#: libebl/eblobjnote.c:55
 #, fuzzy, c-format
 msgid "unknown SDT version %u\n"
 msgstr "unbekannte Version"
 
-#: libebl/eblobjnote.c:94
+#: libebl/eblobjnote.c:73
 #, fuzzy, c-format
 msgid "invalid SDT probe descriptor\n"
 msgstr "ungültiger Datei-Deskriptor"
 
-#: libebl/eblobjnote.c:144
+#: libebl/eblobjnote.c:123
 #, c-format
 msgid "    PC: "
 msgstr ""
 
-#: libebl/eblobjnote.c:146
+#: libebl/eblobjnote.c:125
 #, c-format
 msgid " Base: "
 msgstr ""
 
-#: libebl/eblobjnote.c:148
+#: libebl/eblobjnote.c:127
 #, c-format
 msgid " Semaphore: "
 msgstr ""
 
-#: libebl/eblobjnote.c:150
+#: libebl/eblobjnote.c:129
 #, c-format
 msgid "    Provider: "
 msgstr ""
 
-#: libebl/eblobjnote.c:152
+#: libebl/eblobjnote.c:131
 #, c-format
 msgid " Name: "
 msgstr ""
 
-#: libebl/eblobjnote.c:154
+#: libebl/eblobjnote.c:133
 #, c-format
 msgid " Args: "
 msgstr ""
 
-#: libebl/eblobjnote.c:164
+#: libebl/eblobjnote.c:143
 #, c-format
 msgid "    Build ID: "
 msgstr "    Build ID: "
 
-#: libebl/eblobjnote.c:175
+#: libebl/eblobjnote.c:154
 #, c-format
 msgid "    Linker version: %.*s\n"
 msgstr ""
 
-#: libebl/eblobjnote.c:224
+#: libebl/eblobjnote.c:203
 #, c-format
 msgid "    OS: %s, ABI: "
 msgstr "    OS: %s, ABI: "
 
-#: libebl/eblosabiname.c:95
+#: libebl/eblosabiname.c:74
 msgid "Stand alone"
 msgstr ""
 
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
+#: libebl/eblsymbolbindingname.c:71 libebl/eblsymboltypename.c:77
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<unbekannt>: %d"
 
-#: libelf/elf_error.c:88
+#: libelf/elf_error.c:67
 msgid "unknown version"
 msgstr "unbekannte Version"
 
-#: libelf/elf_error.c:92
+#: libelf/elf_error.c:71
 msgid "unknown type"
 msgstr "unbekannter Typ"
 
-#: libelf/elf_error.c:96
+#: libelf/elf_error.c:75
 msgid "invalid `Elf' handle"
 msgstr "ungültiges `Elf'-Handle"
 
-#: libelf/elf_error.c:100
+#: libelf/elf_error.c:79
 msgid "invalid size of source operand"
 msgstr "ungültige Grösse des Quell-Operanden"
 
-#: libelf/elf_error.c:104
+#: libelf/elf_error.c:83
 msgid "invalid size of destination operand"
 msgstr "ungültige Grösse des Ziel-Operanden"
 
-#: libelf/elf_error.c:108 src/readelf.c:5176
+#: libelf/elf_error.c:87 src/readelf.c:5367
 #, c-format
 msgid "invalid encoding"
 msgstr "ungültige Kodierung"
 
-#: libelf/elf_error.c:116
+#: libelf/elf_error.c:95
 msgid "invalid file descriptor"
 msgstr "ungültiger Datei-Deskriptor"
 
-#: libelf/elf_error.c:120
+#: libelf/elf_error.c:99
 msgid "invalid operation"
 msgstr "ungültige Operation"
 
-#: libelf/elf_error.c:124
+#: libelf/elf_error.c:103
 msgid "ELF version not set"
 msgstr "ELF-Version nicht gesetzt"
 
-#: libelf/elf_error.c:136
+#: libelf/elf_error.c:115
 msgid "invalid fmag field in archive header"
 msgstr "ungültiges fmag-Feld im Archivheader"
 
-#: libelf/elf_error.c:140
+#: libelf/elf_error.c:119
 msgid "invalid archive file"
 msgstr "Ungültige Archiv-Datei"
 
-#: libelf/elf_error.c:144
+#: libelf/elf_error.c:123
 msgid "descriptor is not for an archive"
 msgstr ""
 
-#: libelf/elf_error.c:148
+#: libelf/elf_error.c:127
 msgid "no index available"
 msgstr "kein Index verfügbar"
 
-#: libelf/elf_error.c:152
+#: libelf/elf_error.c:131
 msgid "cannot read data from file"
 msgstr "Daten aus der Datei konnten nicht gelesen werden"
 
-#: libelf/elf_error.c:156
+#: libelf/elf_error.c:135
 msgid "cannot write data to file"
 msgstr "Daten konnten nicht in die Datei geschrieben werden"
 
-#: libelf/elf_error.c:160
+#: libelf/elf_error.c:139
 msgid "invalid binary class"
 msgstr "ungültige Binärklasse"
 
-#: libelf/elf_error.c:164
+#: libelf/elf_error.c:143
 msgid "invalid section index"
 msgstr "ungültiger Abschnittsindex"
 
-#: libelf/elf_error.c:168
+#: libelf/elf_error.c:147
 msgid "invalid operand"
 msgstr "ungültiger Operand"
 
-#: libelf/elf_error.c:172
+#: libelf/elf_error.c:151
 msgid "invalid section"
 msgstr "ungültiger Abschnitt"
 
-#: libelf/elf_error.c:180
+#: libelf/elf_error.c:159
 msgid "executable header not created first"
 msgstr "ausführbarer Header wurde nicht zuerst erstellt"
 
-#: libelf/elf_error.c:184
+#: libelf/elf_error.c:163
 msgid "file descriptor disabled"
 msgstr "Datei-Deskriptor deaktiviert"
 
-#: libelf/elf_error.c:188
+#: libelf/elf_error.c:167
 #, fuzzy
 msgid "archive/member file descriptor mismatch"
 msgstr "Datei-Deskriptor deaktiviert"
 
-#: libelf/elf_error.c:196
+#: libelf/elf_error.c:175
 msgid "cannot manipulate null section"
 msgstr ""
 
-#: libelf/elf_error.c:200
+#: libelf/elf_error.c:179
 #, fuzzy
 msgid "data/scn mismatch"
 msgstr "data/scn Unterschied"
 
-#: libelf/elf_error.c:204
+#: libelf/elf_error.c:183
 msgid "invalid section header"
 msgstr "ungültiger Abschnitts-Header"
 
-#: libelf/elf_error.c:208 src/readelf.c:6850 src/readelf.c:6951
-#: src/readelf.c:7113
+#: libelf/elf_error.c:187 src/readelf.c:7235 src/readelf.c:7683
+#: src/readelf.c:7784 src/readelf.c:7954
 #, c-format
 msgid "invalid data"
 msgstr "Ungültige Daten"
 
-#: libelf/elf_error.c:212
+#: libelf/elf_error.c:191
 msgid "unknown data encoding"
 msgstr "Unbekannte Datenkodierung"
 
-#: libelf/elf_error.c:216
+#: libelf/elf_error.c:195
 msgid "section `sh_size' too small for data"
 msgstr "Abschnitt `sh_size' zu klein für Daten"
 
-#: libelf/elf_error.c:220
+#: libelf/elf_error.c:199
 msgid "invalid section alignment"
 msgstr "ungültige Abschnittsausrichtung"
 
-#: libelf/elf_error.c:224
+#: libelf/elf_error.c:203
 msgid "invalid section entry size"
 msgstr ""
 
-#: libelf/elf_error.c:228
+#: libelf/elf_error.c:207
 msgid "update() for write on read-only file"
 msgstr ""
 
-#: libelf/elf_error.c:232
+#: libelf/elf_error.c:211
 msgid "no such file"
 msgstr "Datei nicht gefunden"
 
-#: libelf/elf_error.c:236
+#: libelf/elf_error.c:215
 msgid "only relocatable files can contain section groups"
 msgstr ""
 
-#: libelf/elf_error.c:241
+#: libelf/elf_error.c:220
 msgid ""
 "program header only allowed in executables, shared objects, and core files"
 msgstr ""
 
-#: libelf/elf_error.c:248
+#: libelf/elf_error.c:227
 msgid "file has no program header"
 msgstr "Datei hat keinen Programm-Kopf"
 
-#: src/addr2line.c:66
+#: src/addr2line.c:58
 msgid "Output selection options:"
 msgstr ""
 
-#: src/addr2line.c:67
+#: src/addr2line.c:59
 msgid "Show only base names of source files"
 msgstr ""
 
-#: src/addr2line.c:69
+#: src/addr2line.c:61
 msgid "Show absolute file names using compilation directory"
 msgstr ""
 
-#: src/addr2line.c:70
+#: src/addr2line.c:62
 msgid "Also show function names"
 msgstr ""
 
-#: src/addr2line.c:71
+#: src/addr2line.c:63
 msgid "Also show symbol or section names"
 msgstr ""
 
-#: src/addr2line.c:72
+#: 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:74
+#: src/addr2line.c:67
 msgid "Treat addresses as offsets relative to NAME section."
 msgstr ""
 
-#: src/addr2line.c:76 src/elfcmp.c:80 src/findtextrel.c:75 src/nm.c:108
-#: src/strings.c:83
+#: 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:85
+#: src/addr2line.c:81
 msgid ""
 "Locate source files and line information for ADDRs (in a.out by default)."
 msgstr ""
 
-#: src/addr2line.c:89
+#: src/addr2line.c:85
 msgid "[ADDR...]"
 msgstr ""
 
-#: src/addr2line.c:189 src/ar.c:296 src/elfcmp.c:670 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:273 src/objdump.c:189
-#: src/ranlib.c:136 src/readelf.c:462 src/size.c:219 src/strings.c:227
-#: src/strip.c:221 src/unstrip.c:234
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:663 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: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"
@@ -655,2953 +734,2959 @@
 "GARANTIE,\n"
 "auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n"
 
-#: src/addr2line.c:194 src/ar.c:301 src/elfcmp.c:675 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:278 src/objdump.c:194
-#: src/ranlib.c:141 src/readelf.c:467 src/size.c:224 src/strings.c:232
-#: src/strip.c:226 src/unstrip.c:239
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:668 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: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:413
+#: 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:436
+#: src/addr2line.c:497
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside section '%s'"
 msgstr ""
 
-#: src/addr2line.c:477
+#: src/addr2line.c:563
 #, c-format
 msgid "cannot find symbol '%s'"
 msgstr "Konnte Symbol '%s' nicht finden"
 
-#: src/addr2line.c:482
+#: src/addr2line.c:568
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
 msgstr ""
 
-#: src/ar.c:76
+#: src/ar.c:69
 msgid "Commands:"
 msgstr "Befehle:"
 
-#: src/ar.c:77
+#: src/ar.c:70
 msgid "Delete files from archive."
 msgstr "Dateien aus dem Archiv löschen."
 
-#: src/ar.c:78
+#: src/ar.c:71
 msgid "Move files in archive."
 msgstr "Dateien zum Archiv hinzufügen."
 
-#: src/ar.c:79
+#: src/ar.c:72
 msgid "Print files in archive."
 msgstr "Packe Dateien in Archiv"
 
-#: src/ar.c:80
+#: src/ar.c:73
 msgid "Quick append files to archive."
 msgstr "Hänge Dateien an ein Archiv"
 
-#: src/ar.c:82
+#: src/ar.c:75
 msgid "Replace existing or insert new file into archive."
 msgstr "Ersetze existierende oder füge neue Datei in das Archiv ein."
 
-#: src/ar.c:83
+#: src/ar.c:76
 msgid "Display content of archive."
 msgstr "Zeige Archivinhalt an."
 
-#: src/ar.c:84
+#: src/ar.c:77
 msgid "Extract files from archive."
 msgstr "Entpacke Dateien aus dem Archiv"
 
-#: src/ar.c:86
+#: src/ar.c:79
 msgid "Command Modifiers:"
 msgstr ""
 
-#: src/ar.c:87
+#: src/ar.c:80
 msgid "Preserve original dates."
 msgstr "Erhalte ursprüngliche Daten."
 
-#: src/ar.c:88
+#: src/ar.c:81
 msgid "Use instance [COUNT] of name."
 msgstr ""
 
-#: src/ar.c:90
+#: src/ar.c:83
 msgid "Do not replace existing files with extracted files."
 msgstr "Ersetze existierende Dateien nicht mit entpackten Dateien"
 
-#: src/ar.c:91
+#: src/ar.c:84
 msgid "Allow filename to be truncated if necessary."
 msgstr "Erlaube angehängte Dateinamen, wenn nötig"
 
-#: src/ar.c:93
+#: src/ar.c:86
 msgid "Provide verbose output."
 msgstr "Zeige detaillierte Ausgabe."
 
-#: src/ar.c:94
+#: src/ar.c:87
 msgid "Force regeneration of symbol table."
 msgstr "Erzwinge Regenerierung der Symboltabelle."
 
-#: src/ar.c:95
+#: src/ar.c:88
 msgid "Insert file after [MEMBER]."
 msgstr "Füge Datei nach [MEMBER] ein."
 
-#: src/ar.c:96
+#: src/ar.c:89
 msgid "Insert file before [MEMBER]."
 msgstr "Füge Datei vor [MEMBER] ein."
 
-#: src/ar.c:97
+#: src/ar.c:90
 msgid "Same as -b."
 msgstr "Genau wie -b."
 
-#: src/ar.c:98
+#: src/ar.c:91
 msgid "Suppress message when library has to be created."
 msgstr "Unterdrücke Nachricht wenn Bibliothek erstellt werden muss."
 
-#: src/ar.c:100
+#: src/ar.c:93
 #, fuzzy
 msgid "Use full path for file matching."
 msgstr "Vollständigen Pfad für Dateiabgleich verwenden."
 
-#: src/ar.c:101
+#: src/ar.c:94
 msgid "Update only older files in archive."
 msgstr "Nur ältere Datein im Archiv aktualisieren"
 
-#: src/ar.c:107
+#: src/ar.c:100
 msgid "Create, modify, and extract from archives."
 msgstr "Erstelle, ändere, extrahiere von Archiven"
 
-#: src/ar.c:110
+#: src/ar.c:103
 msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 msgstr "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 
-#: src/ar.c:192
+#: src/ar.c:185
 #, c-format
 msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
 msgstr "'a', 'b', und 'i' nur zusammen mit 'm' and 'r Optionen"
 
-#: src/ar.c:197
+#: src/ar.c:190
 #, c-format
 msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
 msgstr ""
 
-#: src/ar.c:213
+#: src/ar.c:206
 #, c-format
 msgid "'N' is only meaningful with the 'x' and 'd' options"
 msgstr "'N' ist nur mit den Optionen 'x' und 'd' von Bedeutung."
 
-#: src/ar.c:218
+#: src/ar.c:211
 #, c-format
 msgid "COUNT parameter required"
 msgstr "COUNT Parameter erforderlich"
 
-#: src/ar.c:230
+#: src/ar.c:223
 #, c-format
 msgid "invalid COUNT parameter %s"
 msgstr "Ungültiger COUNT Parameter %s"
 
-#: src/ar.c:237
+#: src/ar.c:230
 #, fuzzy, c-format
 msgid "'%c' is only meaningful with the 'x' option"
 msgstr "'%' ist nur mit der Option 'x' von Bedeutung"
 
-#: src/ar.c:243
+#: src/ar.c:236
 #, c-format
 msgid "archive name required"
 msgstr "Archivname erforderlich"
 
-#: src/ar.c:256
+#: src/ar.c:249
 #, c-format
 msgid "command option required"
 msgstr ""
 
-#: src/ar.c:321
+#: src/ar.c:314
 #, c-format
 msgid "More than one operation specified"
 msgstr "Mehr als eine Operation angegeben"
 
-#: src/ar.c:415
+#: src/ar.c:408
 #, c-format
 msgid "cannot open archive '%s'"
 msgstr "Konnte Archiv '%s' nicht öffnen"
 
-#: src/ar.c:425
+#: src/ar.c:418
 #, c-format
 msgid "cannot open archive '%s': %s"
 msgstr "Konnte Archiv '%s': %s nicht öffnen"
 
-#: src/ar.c:429
+#: src/ar.c:422
 #, c-format
 msgid "%s: not an archive file"
 msgstr "%s: Keine Archiv-Datei"
 
-#: src/ar.c:433
+#: src/ar.c:426
 #, c-format
 msgid "cannot stat archive '%s'"
 msgstr ""
 
-#: src/ar.c:445
+#: src/ar.c:438
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "Kein Eintrag %s in Archiv\n"
 
-#: src/ar.c:498 src/ar.c:940 src/ar.c:1140
+#: src/ar.c:491 src/ar.c:933 src/ar.c:1133
 #, c-format
 msgid "cannot create hash table"
 msgstr "Konnte Hash-Tabelle nicht erstellen"
 
-#: src/ar.c:505 src/ar.c:947 src/ar.c:1149
+#: src/ar.c:498 src/ar.c:940 src/ar.c:1142
 #, c-format
 msgid "cannot insert into hash table"
 msgstr "Konnte nicht in Hash-Tabelle einfügen"
 
-#: src/ar.c:513 src/ranlib.c:176
+#: src/ar.c:506 src/ranlib.c:168
 #, c-format
 msgid "cannot stat '%s'"
 msgstr ""
 
-#: src/ar.c:609
+#: src/ar.c:602
 #, c-format
 msgid "cannot read content of %s: %s"
 msgstr "Konnte Inhalt von %s: %s nicht lesen"
 
-#: src/ar.c:652
+#: src/ar.c:645
 #, c-format
 msgid "cannot open %.*s"
 msgstr "Konnte %.*s nicht öffnen"
 
-#: src/ar.c:674
+#: src/ar.c:667
 #, c-format
 msgid "failed to write %s"
 msgstr "Konnte %s nicht schreiben"
 
-#: src/ar.c:686
+#: src/ar.c:679
 #, c-format
 msgid "cannot change mode of %s"
 msgstr ""
 
-#: src/ar.c:702
+#: src/ar.c:695
 #, c-format
 msgid "cannot change modification time of %s"
 msgstr "Konnte Bearbeitungszeit von %s nicht ändern"
 
-#: src/ar.c:748
+#: src/ar.c:741
 #, c-format
 msgid "cannot rename temporary file to %.*s"
 msgstr "Konnte temporäre Datei nicht in %.*s umbenennen"
 
-#: src/ar.c:784 src/ar.c:1032 src/ar.c:1431 src/ranlib.c:250
+#: src/ar.c:777 src/ar.c:1025 src/ar.c:1424 src/ranlib.c:242
 #, c-format
 msgid "cannot create new file"
 msgstr "neue Datei konnte nicht angelegt werden"
 
-#: src/ar.c:1231
+#: src/ar.c:1224
 #, c-format
 msgid "position member %s not found"
 msgstr ""
 
-#: src/ar.c:1241
+#: src/ar.c:1234
 #, c-format
 msgid "%s: no entry %s in archive!\n"
 msgstr "%s: Kein Eintrag %s in dem Archiv!\n"
 
-#: src/ar.c:1270 src/ldgeneric.c:517 src/objdump.c:265
+#: src/ar.c:1263 src/ldgeneric.c:509 src/objdump.c:257
 #, c-format
 msgid "cannot open %s"
 msgstr "Konnte %s nicht öffnen"
 
-#: src/ar.c:1275
+#: src/ar.c:1268
 #, c-format
 msgid "cannot stat %s"
 msgstr ""
 
-#: src/ar.c:1281
+#: src/ar.c:1274
 #, c-format
 msgid "%s is no regular file"
 msgstr "%s ist keine reguläre Datei"
 
-#: src/ar.c:1294
+#: src/ar.c:1287
 #, c-format
 msgid "cannot get ELF descriptor for %s: %s\n"
 msgstr ""
 
-#: src/ar.c:1314
+#: src/ar.c:1307
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "Konnte %s: %s nicht lesen"
 
-#: src/arlib.c:216
+#: src/arlib.c:209
 #, c-format
 msgid "the archive '%s' is too large"
 msgstr "Das Archiv '%s' ist zu groß"
 
-#: src/arlib.c:229
+#: src/arlib.c:222
 #, c-format
 msgid "cannot read ELF header of %s(%s): %s"
 msgstr "\"Konnte ELF-Kopf von %s(%s): %s nicht lesen"
 
-#: src/elfcmp.c:70
+#: src/elfcmp.c:62
 msgid "Control options:"
 msgstr ""
 
-#: src/elfcmp.c:72
+#: src/elfcmp.c:64
 msgid "Output all differences, not just the first"
 msgstr ""
 
-#: src/elfcmp.c:73
+#: src/elfcmp.c:65
 msgid ""
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
 msgstr ""
 
-#: src/elfcmp.c:75
+#: src/elfcmp.c:67
 msgid "Ignore permutation of buckets in SHT_HASH section"
 msgstr ""
 
-#: src/elfcmp.c:77
+#: src/elfcmp.c:69
 msgid "Ignore differences in build ID"
 msgstr ""
 
-#: src/elfcmp.c:78
+#: src/elfcmp.c:70
 msgid "Output nothing; yield exit status only"
 msgstr ""
 
-#: src/elfcmp.c:85
+#: src/elfcmp.c:77
 msgid "Compare relevant parts of two ELF files for equality."
 msgstr ""
 
-#: src/elfcmp.c:89
+#: src/elfcmp.c:81
 #, fuzzy
 msgid "FILE1 FILE2"
 msgstr "DATEI1 DATEI2"
 
-#: src/elfcmp.c:151
+#: src/elfcmp.c:143
 msgid "Invalid number of parameters.\n"
 msgstr "Ungültige Anzahl von Parametern.\n"
 
-#: src/elfcmp.c:182 src/elfcmp.c:187
+#: src/elfcmp.c:174 src/elfcmp.c:179
 #, c-format
 msgid "cannot get ELF header of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:213
+#: src/elfcmp.c:205
 #, c-format
 msgid "%s %s diff: ELF header"
 msgstr ""
 
-#: src/elfcmp.c:220 src/elfcmp.c:223
+#: src/elfcmp.c:212 src/elfcmp.c:215
 #, fuzzy, c-format
 msgid "cannot get section count of '%s': %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elfcmp.c:228
+#: src/elfcmp.c:220
 #, c-format
 msgid "%s %s diff: section count"
 msgstr ""
 
-#: src/elfcmp.c:235 src/elfcmp.c:238
+#: src/elfcmp.c:227 src/elfcmp.c:230
 #, fuzzy, c-format
 msgid "cannot get program header count of '%s': %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/elfcmp.c:243
+#: src/elfcmp.c:235
 #, fuzzy, c-format
 msgid "%s %s diff: program header count"
 msgstr "Datei hat keinen Programm-Kopf"
 
-#: src/elfcmp.c:300
+#: src/elfcmp.c:292
 #, c-format
 msgid "%s %s differ: section [%zu], [%zu] name"
 msgstr ""
 
-#: src/elfcmp.c:323
+#: src/elfcmp.c:315
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' header"
 msgstr ""
 
-#: src/elfcmp.c:331 src/elfcmp.c:337
+#: src/elfcmp.c:323 src/elfcmp.c:329
 #, c-format
 msgid "cannot get content of section %zu in '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:353 src/elfcmp.c:359
+#: src/elfcmp.c:345 src/elfcmp.c:351
 #, c-format
 msgid "cannot get symbol in '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:380
+#: src/elfcmp.c:373
 #, c-format
 msgid "%s %s differ: symbol table [%zu]"
 msgstr ""
 
-#: src/elfcmp.c:383
+#: src/elfcmp.c:376
 #, c-format
 msgid "%s %s differ: symbol table [%zu,%zu]"
 msgstr ""
 
-#: src/elfcmp.c:429 src/elfcmp.c:498
+#: src/elfcmp.c:422 src/elfcmp.c:491
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' number of notes"
 msgstr ""
 
-#: src/elfcmp.c:437
+#: src/elfcmp.c:430
 #, fuzzy, c-format
 msgid "cannot read note section [%zu] '%s' in '%s': %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elfcmp.c:447
+#: src/elfcmp.c:440
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note name"
 msgstr ""
 
-#: src/elfcmp.c:455
+#: src/elfcmp.c:448
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' type"
 msgstr ""
 
-#: src/elfcmp.c:470
+#: src/elfcmp.c:463
 #, c-format
 msgid "%s %s differ: build ID length"
 msgstr ""
 
-#: src/elfcmp.c:478
+#: src/elfcmp.c:471
 #, c-format
 msgid "%s %s differ: build ID content"
 msgstr ""
 
-#: src/elfcmp.c:487
+#: src/elfcmp.c:480
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:527
+#: src/elfcmp.c:520
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:531
+#: src/elfcmp.c:524
 #, c-format
 msgid "%s %s differ: section [%zu,%zu] '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:546
+#: src/elfcmp.c:539
 #, c-format
 msgid "%s %s differ: unequal amount of important sections"
 msgstr ""
 
-#: src/elfcmp.c:579 src/elfcmp.c:584
+#: src/elfcmp.c:572 src/elfcmp.c:577
 #, c-format
 msgid "cannot load data of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:603 src/elfcmp.c:609
+#: src/elfcmp.c:596 src/elfcmp.c:602
 #, c-format
 msgid "cannot get program header entry %d of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:615
+#: src/elfcmp.c:608
 #, c-format
 msgid "%s %s differ: program header %d"
 msgstr ""
 
-#: src/elfcmp.c:639
+#: src/elfcmp.c:632
 #, c-format
 msgid "%s %s differ: gap"
 msgstr ""
 
-#: src/elfcmp.c:702
+#: src/elfcmp.c:695
 #, c-format
 msgid "Invalid value '%s' for --gaps parameter."
 msgstr ""
 
-#: src/elfcmp.c:730 src/findtextrel.c:229 src/ldgeneric.c:1765
-#: src/ldgeneric.c:4255 src/nm.c:389 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:458 src/strip.c:495 src/unstrip.c:1911
-#: src/unstrip.c:1940
+#: src/elfcmp.c:723 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:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1923
+#: src/unstrip.c:1952
 #, c-format
 msgid "cannot open '%s'"
 msgstr "'%s' kann nicht geöffnet werden"
 
-#: src/elfcmp.c:734 src/findtextrel.c:236 src/ranlib.c:186
+#: src/elfcmp.c:727 src/findtextrel.c:228 src/ranlib.c:178
 #, c-format
 msgid "cannot create ELF descriptor for '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:739
+#: src/elfcmp.c:732
 #, c-format
 msgid "cannot create EBL descriptor for '%s'"
 msgstr ""
 
-#: src/elfcmp.c:757
+#: src/elfcmp.c:750
 #, c-format
 msgid "cannot get section header of section %zu: %s"
 msgstr ""
 
-#: src/elfcmp.c:767
+#: src/elfcmp.c:760
 #, c-format
 msgid "cannot get content of section %zu: %s"
 msgstr ""
 
-#: src/elfcmp.c:777 src/elfcmp.c:791
+#: src/elfcmp.c:770 src/elfcmp.c:784
 #, c-format
 msgid "cannot get relocation: %s"
 msgstr ""
 
-#: src/elflint.c:72
+#: src/elflint.c:64
 msgid "Be extremely strict, flag level 2 features."
 msgstr ""
 
-#: src/elflint.c:73
+#: src/elflint.c:65
 msgid "Do not print anything if successful"
 msgstr "Gebe nichts aus, wenn erfolgreich"
 
-#: src/elflint.c:74
+#: src/elflint.c:66
 msgid "Binary is a separate debuginfo file"
 msgstr ""
 
-#: src/elflint.c:76
+#: src/elflint.c:68
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
 msgstr ""
 
-#: src/elflint.c:82
+#: src/elflint.c:74
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr ""
 
-#: src/elflint.c:86 src/readelf.c:119
+#: src/elflint.c:78 src/readelf.c:123
 msgid "FILE..."
 msgstr "DATEI..."
 
-#: src/elflint.c:159 src/readelf.c:275
+#: src/elflint.c:155 src/readelf.c:292
 #, c-format
 msgid "cannot open input file"
 msgstr "Kann Eingabedatei nicht öffnen"
 
-#: src/elflint.c:166
+#: src/elflint.c:162
 #, c-format
 msgid "cannot generate Elf descriptor: %s\n"
 msgstr "kann Elf-Deskriptor nicht erzeugen: %s\n"
 
-#: src/elflint.c:185
+#: 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:189
+#: src/elflint.c:185
 msgid "No errors"
 msgstr "Keine Fehler"
 
-#: src/elflint.c:223 src/readelf.c:436
+#: src/elflint.c:219 src/readelf.c:468
 msgid "Missing file name.\n"
 msgstr "Dateiname fehlt.\n"
 
-#: src/elflint.c:302
+#: src/elflint.c:298
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr ""
 
-#: src/elflint.c:310
+#: 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:370
+#: src/elflint.c:371
 #, c-format
 msgid "e_ident[%d] == %d is no known class\n"
 msgstr ""
 
-#: src/elflint.c:375
+#: src/elflint.c:376
 #, c-format
 msgid "e_ident[%d] == %d is no known data encoding\n"
 msgstr ""
 
-#: src/elflint.c:379
+#: src/elflint.c:380
 #, c-format
 msgid "unknown ELF header version number e_ident[%d] == %d\n"
 msgstr ""
 
-#: src/elflint.c:385
+#: src/elflint.c:386
 #, c-format
 msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
 msgstr ""
 
-#: src/elflint.c:391
+#: src/elflint.c:392
 #, c-format
 msgid "unsupport ABI version e_ident[%d] == %d\n"
 msgstr ""
 
-#: src/elflint.c:396
+#: 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:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr ""
 
-#: src/elflint.c:408
+#: src/elflint.c:409
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr ""
 
-#: src/elflint.c:412
+#: src/elflint.c:413
 #, c-format
 msgid "unknown object file version\n"
 msgstr ""
 
-#: src/elflint.c:418
+#: src/elflint.c:419
 #, c-format
 msgid "invalid program header offset\n"
 msgstr ""
 
-#: src/elflint.c:420
+#: src/elflint.c:421
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr ""
 
-#: src/elflint.c:432
+#: src/elflint.c:433
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr ""
 
-#: src/elflint.c:435
+#: src/elflint.c:436
 #, c-format
 msgid "section header table must be present\n"
 msgstr ""
 
-#: src/elflint.c:449
+#: src/elflint.c:450
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr ""
 
-#: src/elflint.c:466
+#: src/elflint.c:467
 #, c-format
 msgid "invalid section header index\n"
 msgstr ""
 
-#: src/elflint.c:480
+#: 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:489
+#: src/elflint.c:490
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr ""
 
-#: src/elflint.c:496 src/elflint.c:513
+#: src/elflint.c:497 src/elflint.c:514
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:499 src/elflint.c:516
+#: src/elflint.c:500 src/elflint.c:517
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:502 src/elflint.c:519
+#: src/elflint.c:503 src/elflint.c:520
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr ""
 
-#: src/elflint.c:505 src/elflint.c:522
+#: src/elflint.c:506 src/elflint.c:523
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:508 src/elflint.c:525
+#: src/elflint.c:509 src/elflint.c:526
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr ""
 
-#: src/elflint.c:569
+#: 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:573
+#: src/elflint.c:574
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
 msgstr ""
 
-#: src/elflint.c:589 src/elflint.c:1433 src/elflint.c:1483 src/elflint.c:1588
-#: src/elflint.c:2173 src/elflint.c:2687 src/elflint.c:2848 src/elflint.c:2978
-#: src/elflint.c:3150 src/elflint.c:4050
+#: 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:602 src/elflint.c:1595
+#: 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:625
+#: 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:636
+#: src/elflint.c:638
 #, c-format
 msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
 msgstr ""
 
-#: src/elflint.c:645
+#: src/elflint.c:647
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
+#: 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:668
+#: src/elflint.c:670
 #, c-format
 msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
 msgstr ""
 
-#: src/elflint.c:678
+#: src/elflint.c:680
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:687
+#: src/elflint.c:689
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr ""
 
-#: src/elflint.c:701
+#: 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:707
+#: 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:719
+#: src/elflint.c:722
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
 msgstr ""
 
-#: src/elflint.c:727
+#: src/elflint.c:730
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown type\n"
 msgstr ""
 
-#: src/elflint.c:733
+#: src/elflint.c:736
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
 msgstr ""
 
-#: src/elflint.c:738
+#: src/elflint.c:741
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
 msgstr ""
 
-#: src/elflint.c:746
+#: src/elflint.c:749
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
 msgstr ""
 
-#: src/elflint.c:750
+#: src/elflint.c:753
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
 msgstr ""
 
-#: src/elflint.c:754
+#: src/elflint.c:757
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
 msgstr ""
 
-#: src/elflint.c:786
+#: src/elflint.c:804
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:792 src/elflint.c:817 src/elflint.c:860
+#: 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:801
+#: 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:811 src/elflint.c:853
+#: 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:838
+#: 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:846
+#: 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:873
+#: 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:880
+#: 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:887
+#: src/elflint.c:905
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
 msgstr ""
 
-#: src/elflint.c:937
+#: src/elflint.c:955
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
 "[%2d]\n"
 msgstr ""
 
-#: src/elflint.c:944
+#: src/elflint.c:962
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
 "'%s'\n"
 msgstr ""
 
-#: src/elflint.c:960
+#: 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:967
+#: 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:975
+#: src/elflint.c:993
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
 "section\n"
 msgstr ""
 
-#: src/elflint.c:991
+#: 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:998
+#: 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:1011
+#: 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:1015
+#: src/elflint.c:1033
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
 msgstr ""
 
-#: src/elflint.c:1060
+#: src/elflint.c:1082
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
 msgstr ""
 
-#: src/elflint.c:1069 src/elflint.c:1121
+#: 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:1094 src/elflint.c:1146
+#: 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:1100 src/elflint.c:1152
+#: 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:1112
+#: src/elflint.c:1136
 #, c-format
 msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
 msgstr ""
 
-#: src/elflint.c:1194
+#: src/elflint.c:1218
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr ""
 
-#: src/elflint.c:1207
+#: src/elflint.c:1230
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr ""
 
-#: src/elflint.c:1215
+#: src/elflint.c:1238
 #, c-format
 msgid "section [%2d] '%s': sh_info should be zero\n"
 msgstr ""
 
-#: src/elflint.c:1222
+#: src/elflint.c:1245
 #, c-format
 msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
 msgstr ""
 
-#: src/elflint.c:1229
+#: src/elflint.c:1253
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
 msgstr ""
 
-#: src/elflint.c:1289
+#: src/elflint.c:1313
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr ""
 
-#: src/elflint.c:1316
+#: src/elflint.c:1340
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
 msgstr ""
 
-#: src/elflint.c:1324
+#: src/elflint.c:1348
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
 "type\n"
 msgstr ""
 
-#: src/elflint.c:1332
+#: src/elflint.c:1356
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
 msgstr ""
 
-#: src/elflint.c:1350
+#: 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:1367
+#: src/elflint.c:1391
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:1382
+#: src/elflint.c:1406
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
 "%s\n"
 msgstr ""
 
-#: src/elflint.c:1403
+#: 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:1418
+#: src/elflint.c:1442
 #, c-format
 msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
 msgstr ""
 
-#: src/elflint.c:1457 src/elflint.c:1507
+#: src/elflint.c:1482 src/elflint.c:1533
 #, c-format
 msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1583
+#: src/elflint.c:1609
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr ""
 
-#: src/elflint.c:1601
+#: src/elflint.c:1628
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
 msgstr ""
 
-#: src/elflint.c:1606 src/elflint.c:1889
+#: src/elflint.c:1633 src/elflint.c:1918
 #, c-format
 msgid "section [%2d] '%s': sh_info not zero\n"
 msgstr ""
 
-#: src/elflint.c:1616
+#: src/elflint.c:1643
 #, c-format
 msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1624
+#: src/elflint.c:1651
 #, c-format
 msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
 msgstr ""
 
-#: src/elflint.c:1631
+#: src/elflint.c:1658
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr ""
 
-#: src/elflint.c:1642
+#: src/elflint.c:1669
 #, c-format
 msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
 msgstr ""
 
-#: src/elflint.c:1652
+#: src/elflint.c:1679
 #, c-format
 msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
 msgstr ""
 
-#: src/elflint.c:1670
+#: 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:1683
+#: 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:1726
+#: src/elflint.c:1753
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:1741
+#: 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:1761 src/elflint.c:1789
+#: 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:1773
+#: src/elflint.c:1800
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr ""
 
-#: src/elflint.c:1782
+#: src/elflint.c:1809
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr ""
 
-#: src/elflint.c:1797 src/elflint.c:1804
+#: 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:1814 src/elflint.c:1818
+#: 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:1824
+#: src/elflint.c:1851
 #, c-format
 msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
 msgstr ""
 
-#: src/elflint.c:1835 src/elflint.c:1839 src/elflint.c:1843 src/elflint.c:1847
+#: 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:1859
+#: src/elflint.c:1886
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
 msgstr ""
 
-#: src/elflint.c:1869
+#: src/elflint.c:1896
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1874
+#: src/elflint.c:1901
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr ""
 
-#: src/elflint.c:1877
+#: src/elflint.c:1904
 #, c-format
 msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
 msgstr ""
 
-#: src/elflint.c:1884
+#: src/elflint.c:1913
 #, c-format
 msgid "section [%2d] '%s': extended index table too small for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1899
+#: 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:1910
+#: src/elflint.c:1945
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr ""
 
-#: src/elflint.c:1922
+#: src/elflint.c:1957
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr ""
 
-#: src/elflint.c:1927
+#: src/elflint.c:1962
 #, c-format
 msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
 msgstr ""
 
-#: src/elflint.c:1943 src/elflint.c:1984
+#: 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:1955 src/elflint.c:1996
+#: src/elflint.c:1990 src/elflint.c:2041
 #, c-format
 msgid "section [%2d] '%s': chain array too large\n"
 msgstr ""
 
-#: src/elflint.c:1964 src/elflint.c:2005
+#: 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:1970
+#: src/elflint.c:2014
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2011
+#: src/elflint.c:2065
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2026
+#: src/elflint.c:2081
 #, c-format
 msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
 msgstr ""
 
-#: src/elflint.c:2037
+#: 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:2045
+#: src/elflint.c:2100
 #, c-format
 msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
 msgstr ""
 
-#: src/elflint.c:2077
+#: 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:2098
+#: 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:2109
+#: 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:2140
+#: src/elflint.c:2195
 #, c-format
 msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2145
+#: 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:2151
+#: src/elflint.c:2206
 #, c-format
 msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
 msgstr ""
 
-#: src/elflint.c:2164
+#: src/elflint.c:2219
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
 
-#: src/elflint.c:2182
+#: src/elflint.c:2237
 #, c-format
 msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2190
+#: src/elflint.c:2245
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr ""
 
-#: src/elflint.c:2195
+#: src/elflint.c:2250
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr ""
 
-#: src/elflint.c:2200
+#: 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:2248
+#: src/elflint.c:2303
 #, c-format
 msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
 msgstr ""
 
-#: src/elflint.c:2326 src/elflint.c:2330
+#: src/elflint.c:2381 src/elflint.c:2385
 #, c-format
 msgid "section [%2zu] '%s': reference to symbol index 0\n"
 msgstr ""
 
-#: src/elflint.c:2337
+#: 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:2349
+#: 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:2365
+#: src/elflint.c:2420
 #, c-format
 msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
 msgstr ""
 
-#: src/elflint.c:2385
+#: src/elflint.c:2440
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
 msgstr ""
 
-#: src/elflint.c:2396
+#: src/elflint.c:2451
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr ""
 
-#: src/elflint.c:2401
+#: src/elflint.c:2456
 #, c-format
 msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2407
+#: src/elflint.c:2462
 #, c-format
 msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
 msgstr ""
 
-#: src/elflint.c:2412
+#: src/elflint.c:2467
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr ""
 
-#: src/elflint.c:2419
+#: src/elflint.c:2474
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr ""
 
-#: src/elflint.c:2424
+#: src/elflint.c:2479
 #, c-format
 msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
 msgstr ""
 
-#: src/elflint.c:2430
+#: src/elflint.c:2485
 #, c-format
 msgid "section [%2d] '%s': sh_flags not set correctly\n"
 msgstr ""
 
-#: src/elflint.c:2436
+#: src/elflint.c:2491
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr ""
 
-#: src/elflint.c:2445
+#: src/elflint.c:2500
 #, c-format
 msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
 msgstr ""
 
-#: src/elflint.c:2450
+#: src/elflint.c:2505
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr ""
 
-#: src/elflint.c:2456
+#: src/elflint.c:2511
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr ""
 
-#: src/elflint.c:2460
+#: src/elflint.c:2515
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr ""
 
-#: src/elflint.c:2471
+#: src/elflint.c:2526
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr ""
 
-#: src/elflint.c:2483
+#: src/elflint.c:2538
 #, c-format
 msgid "section [%2d] '%s': section index %Zu out of range\n"
 msgstr ""
 
-#: src/elflint.c:2492
+#: src/elflint.c:2547
 #, c-format
 msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:2499
+#: src/elflint.c:2554
 #, c-format
 msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2505
+#: 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:2512
+#: src/elflint.c:2567
 #, c-format
 msgid "section [%2d] '%s' is contained in more than one section group\n"
 msgstr ""
 
-#: src/elflint.c:2701
+#: 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:2712
+#: 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:2728
+#: src/elflint.c:2784
 #, c-format
 msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
 msgstr ""
 
-#: src/elflint.c:2744
+#: src/elflint.c:2800
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
 msgstr ""
 
-#: src/elflint.c:2752
+#: src/elflint.c:2808
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
 msgstr ""
 
-#: src/elflint.c:2766
+#: src/elflint.c:2822
 #, c-format
 msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
 msgstr ""
 
-#: src/elflint.c:2771
+#: src/elflint.c:2827
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
 msgstr ""
 
-#: src/elflint.c:2781
+#: src/elflint.c:2837
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
 msgstr ""
 
-#: src/elflint.c:2833
+#: src/elflint.c:2889
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr ""
 
-#: src/elflint.c:2841 src/elflint.c:2970
+#: 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:2864 src/elflint.c:3022
+#: 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:2870 src/elflint.c:3028
+#: 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:2878
+#: src/elflint.c:2934
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid file reference\n"
 msgstr ""
 
-#: src/elflint.c:2886
+#: src/elflint.c:2942
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr ""
 
-#: src/elflint.c:2898
+#: src/elflint.c:2954
 #, c-format
 msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:2905
+#: 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:2912
+#: 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:2922
+#: 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:2933
+#: 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:2949 src/elflint.c:3107
+#: 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:2962
+#: src/elflint.c:3018
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr ""
 
-#: src/elflint.c:3007
+#: src/elflint.c:3063
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3011
+#: src/elflint.c:3067
 #, c-format
 msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
 msgstr ""
 
-#: src/elflint.c:3017
+#: src/elflint.c:3073
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:3041
+#: src/elflint.c:3097
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid name reference\n"
 msgstr ""
 
-#: src/elflint.c:3048
+#: src/elflint.c:3104
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
 msgstr ""
 
-#: src/elflint.c:3057
+#: src/elflint.c:3113
 #, c-format
 msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3076
+#: src/elflint.c:3132
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3091
+#: src/elflint.c:3147
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3113
+#: src/elflint.c:3169
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3129
+#: src/elflint.c:3185
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3142
+#: src/elflint.c:3198
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr ""
 
-#: src/elflint.c:3163
+#: src/elflint.c:3219
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr ""
 
-#: src/elflint.c:3179
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3188
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3200
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
-#: src/elflint.c:3217
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-msgstr ""
-
-#: src/elflint.c:3226
-#, c-format
-msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
-msgstr ""
-
 #: src/elflint.c:3235
 #, c-format
 msgid ""
+"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3244
+#, c-format
+msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3256
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
+msgstr ""
+
+#: src/elflint.c:3273
+#, c-format
+msgid ""
+"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
+msgstr ""
+
+#: src/elflint.c:3282
+#, c-format
+msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3291
+#, c-format
+msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
 msgstr ""
 
-#: src/elflint.c:3248
+#: src/elflint.c:3304
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
 msgstr ""
 
-#: src/elflint.c:3259
+#: src/elflint.c:3315
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3277
+#: src/elflint.c:3333
 #, c-format
 msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
 msgstr ""
 
-#: src/elflint.c:3288
+#: src/elflint.c:3344
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
 msgstr ""
 
-#: src/elflint.c:3301
+#: src/elflint.c:3357
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3305
+#: src/elflint.c:3361
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:3315
+#: src/elflint.c:3371
 #, c-format
 msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
 msgstr ""
 
-#: src/elflint.c:3321
+#: src/elflint.c:3377
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
 msgstr ""
 
-#: src/elflint.c:3410
+#: src/elflint.c:3466
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr ""
 
-#: src/elflint.c:3414
+#: src/elflint.c:3470
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr ""
 
-#: src/elflint.c:3416
+#: src/elflint.c:3472
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr ""
 
-#: src/elflint.c:3418
+#: src/elflint.c:3474
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr ""
 
-#: src/elflint.c:3420
+#: src/elflint.c:3476
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr ""
 
-#: src/elflint.c:3422
+#: src/elflint.c:3478
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr ""
 
-#: src/elflint.c:3424
+#: src/elflint.c:3480
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr ""
 
-#: src/elflint.c:3426
+#: src/elflint.c:3482
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr ""
 
-#: src/elflint.c:3429
+#: 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:3433
+#: 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:3437
+#: 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:3454
+#: src/elflint.c:3510
 #, c-format
 msgid "cannot get section header for section [%2zu] '%s': %s\n"
 msgstr ""
 
-#: src/elflint.c:3463
+#: src/elflint.c:3519
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr ""
 
-#: src/elflint.c:3490
+#: src/elflint.c:3546
 #, c-format
 msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3506
+#: src/elflint.c:3562
 #, c-format
 msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3523
+#: 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:3541
+#: src/elflint.c:3597
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr ""
 
-#: src/elflint.c:3547 src/elflint.c:3579
+#: 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:3552 src/elflint.c:3584
+#: 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:3560
+#: src/elflint.c:3616
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
 msgstr ""
 
-#: src/elflint.c:3603
+#: src/elflint.c:3659
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr ""
 
-#: src/elflint.c:3608
+#: src/elflint.c:3664
 #, c-format
 msgid "cannot get section header\n"
 msgstr ""
 
-#: src/elflint.c:3618
+#: src/elflint.c:3674
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr ""
 
-#: src/elflint.c:3632
+#: src/elflint.c:3688
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3639
+#: src/elflint.c:3695
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3647
+#: src/elflint.c:3703
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 
-#: src/elflint.c:3655
+#: src/elflint.c:3711
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 
-#: src/elflint.c:3660
+#: src/elflint.c:3716
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 
-#: src/elflint.c:3667
+#: src/elflint.c:3723
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr ""
 
-#: src/elflint.c:3672
+#: src/elflint.c:3728
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 
-#: src/elflint.c:3690
+#: src/elflint.c:3746
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr ""
 
-#: src/elflint.c:3699
+#: src/elflint.c:3755
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr ""
 
-#: src/elflint.c:3726
+#: 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:3734
+#: 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:3743
+#: 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:3754
+#: src/elflint.c:3812
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:3764
+#: src/elflint.c:3822
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:3774
+#: 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:3780
+#: 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:3788
+#: src/elflint.c:3846
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
 msgstr ""
 
-#: src/elflint.c:3839
+#: src/elflint.c:3897
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr ""
 
-#: src/elflint.c:3862
+#: src/elflint.c:3920
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr ""
 
-#: src/elflint.c:3873
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
 msgstr ""
 
-#: src/elflint.c:3879
+#: src/elflint.c:3937
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 
-#: src/elflint.c:3890
+#: 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:3903
+#: src/elflint.c:3961
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr ""
 
-#: src/elflint.c:3917
+#: src/elflint.c:3975
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 
-#: src/elflint.c:3966
+#: src/elflint.c:4024
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:3970
+#: src/elflint.c:4028
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:3993
+#: src/elflint.c:4051
 #, c-format
 msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:3997
+#: src/elflint.c:4055
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:4014
+#: src/elflint.c:4072
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4033
+#: src/elflint.c:4091
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr ""
 
-#: src/elflint.c:4036
+#: src/elflint.c:4094
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4057
+#: src/elflint.c:4115
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4064
+#: src/elflint.c:4122
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr ""
 
-#: src/elflint.c:4067
+#: src/elflint.c:4125
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4085
+#: src/elflint.c:4143
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
 msgstr ""
 
-#: src/elflint.c:4100
+#: src/elflint.c:4158
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:4109
+#: src/elflint.c:4167
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:4120
+#: src/elflint.c:4178
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4128
+#: src/elflint.c:4186
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4135
+#: src/elflint.c:4193
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr ""
 
-#: src/elflint.c:4149
+#: src/elflint.c:4207
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4152
+#: src/elflint.c:4210
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4162
+#: src/elflint.c:4220
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4183
+#: src/elflint.c:4241
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 
-#: src/elflint.c:4186
+#: src/elflint.c:4244
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4194 src/elflint.c:4217
+#: src/elflint.c:4252 src/elflint.c:4275
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4223
+#: src/elflint.c:4281
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 
-#: src/elflint.c:4247
+#: src/elflint.c:4305
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4250
+#: src/elflint.c:4308
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4263
+#: src/elflint.c:4321
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr ""
 
-#: src/elflint.c:4271
+#: src/elflint.c:4329
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4274
+#: src/elflint.c:4332
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4278
+#: src/elflint.c:4336
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4281
+#: src/elflint.c:4339
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4286
+#: src/elflint.c:4344
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4289
+#: src/elflint.c:4347
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4300
+#: src/elflint.c:4358
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr ""
 
-#: src/elflint.c:4307
+#: src/elflint.c:4365
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr ""
 
-#: src/elflint.c:4310
+#: 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:4323
+#: 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:4357
+#: src/elflint.c:4415
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr ""
 
-#: src/elflint.c:4383
+#: src/elflint.c:4441
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
 
-#: src/findtextrel.c:70
+#: src/findtextrel.c:62
 msgid "Input Selection:"
 msgstr ""
 
-#: src/findtextrel.c:71
+#: src/findtextrel.c:63
 msgid "Prepend PATH to all file names"
 msgstr ""
 
-#: src/findtextrel.c:73
+#: src/findtextrel.c:65
 msgid "Use PATH as root of debuginfo hierarchy"
 msgstr ""
 
-#: src/findtextrel.c:80
+#: src/findtextrel.c:72
 msgid "Locate source of text relocations in FILEs (a.out by default)."
 msgstr ""
 
-#: src/findtextrel.c:84 src/nm.c:116 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:104
+#: src/findtextrel.c:76 src/nm.c:108 src/objdump.c:72 src/size.c:84
+#: src/strings.c:84 src/strip.c:96
 msgid "[FILE...]"
 msgstr ""
 
-#: src/findtextrel.c:246
+#: src/findtextrel.c:238
 #, c-format
 msgid "cannot get ELF header '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:257
+#: src/findtextrel.c:249
 #, c-format
 msgid "'%s' is not a DSO or PIE"
 msgstr ""
 
-#: src/findtextrel.c:277
+#: src/findtextrel.c:269
 #, c-format
 msgid "getting get section header of section %zu: %s"
 msgstr ""
 
-#: src/findtextrel.c:300
+#: src/findtextrel.c:292
 #, c-format
 msgid "cannot read dynamic section: %s"
 msgstr ""
 
-#: src/findtextrel.c:321
+#: src/findtextrel.c:313
 #, c-format
 msgid "no text relocations reported in '%s'"
 msgstr ""
 
-#: src/findtextrel.c:333
+#: src/findtextrel.c:325
 #, c-format
 msgid "while reading ELF file"
 msgstr ""
 
-#: src/findtextrel.c:342 src/findtextrel.c:359
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr ""
+#: src/findtextrel.c:329
+#, fuzzy, c-format
+msgid "cannot get program header count: %s"
+msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/findtextrel.c:411
+#: src/findtextrel.c:340 src/findtextrel.c:357
+#, fuzzy, c-format
+msgid "cannot get program header index at offset %zd: %s"
+msgstr "konnte Programm-Kopf nicht erstellen: %s"
+
+#: src/findtextrel.c:409
 #, c-format
 msgid "cannot get section header of section %Zu: %s"
 msgstr ""
 
-#: src/findtextrel.c:423
+#: src/findtextrel.c:421
 #, c-format
 msgid "cannot get symbol table section %zu in '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:443 src/findtextrel.c:466
+#: src/findtextrel.c:441 src/findtextrel.c:464
 #, c-format
 msgid "cannot get relocation at index %d in section %zu in '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:531
+#: src/findtextrel.c:529
 #, c-format
 msgid "%s not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:584
+#: src/findtextrel.c:582
 #, c-format
 msgid ""
 "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:591 src/findtextrel.c:611
+#: src/findtextrel.c:589 src/findtextrel.c:609
 #, c-format
 msgid ""
 "the file containing the function '%s' might not be compiled with -fpic/-"
 "fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:599
+#: src/findtextrel.c:597
 #, c-format
 msgid ""
 "either the file containing the function '%s' or the file containing the "
 "function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:619
+#: src/findtextrel.c:617
 #, c-format
 msgid ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
 msgstr ""
 
-#: src/i386_ld.c:210
+#: src/i386_ld.c:202
 #, c-format
 msgid "cannot allocate PLT section: %s"
 msgstr ""
 
-#: src/i386_ld.c:232
+#: src/i386_ld.c:224
 #, c-format
 msgid "cannot allocate PLTREL section: %s"
 msgstr ""
 
-#: src/i386_ld.c:253
+#: src/i386_ld.c:245
 #, c-format
 msgid "cannot allocate GOT section: %s"
 msgstr ""
 
-#: src/i386_ld.c:274
+#: src/i386_ld.c:266
 #, c-format
 msgid "cannot allocate GOTPLT section: %s"
 msgstr ""
 
-#: src/i386_ld.c:661
+#: src/i386_ld.c:653
 #, c-format
 msgid "initial-executable TLS relocation cannot be used "
 msgstr ""
 
-#: src/ld.c:87
+#: src/ld.c:79
 msgid "Input File Control:"
 msgstr ""
 
-#: src/ld.c:89
+#: src/ld.c:81
 msgid "Include whole archives in the output from now on."
 msgstr ""
 
-#: src/ld.c:91
+#: src/ld.c:83
 msgid "Stop including the whole archives in the output."
 msgstr ""
 
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
+#: src/ld.c:84 src/ld.c:98 src/ld.c:176
 msgid "FILE"
 msgstr "DATEI"
 
-#: src/ld.c:93
+#: src/ld.c:85
 msgid "Start a group."
 msgstr "Eine Gruppe starten."
 
-#: src/ld.c:94
+#: src/ld.c:86
 msgid "End a group."
 msgstr "Eine Gruppe beenden."
 
-#: src/ld.c:95
+#: src/ld.c:87
 msgid "PATH"
 msgstr "PFAD"
 
-#: src/ld.c:96
+#: src/ld.c:88
 msgid "Add PATH to list of directories files are searched in."
 msgstr ""
 
-#: src/ld.c:98
+#: src/ld.c:90
 msgid "Only set DT_NEEDED for following dynamic libs if actually used"
 msgstr ""
 
-#: src/ld.c:100
+#: src/ld.c:92
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr ""
 
-#: src/ld.c:102
+#: src/ld.c:94
 msgid "Ignore LD_LIBRARY_PATH environment variable."
 msgstr ""
 
-#: src/ld.c:105
+#: src/ld.c:97
 msgid "Output File Control:"
 msgstr ""
 
-#: src/ld.c:106
+#: src/ld.c:98
 msgid "Place output in FILE."
 msgstr ""
 
-#: src/ld.c:109
+#: src/ld.c:101
 msgid "Object is marked to not use default search path at runtime."
 msgstr ""
 
-#: src/ld.c:111
+#: src/ld.c:103
 msgid "Same as --whole-archive."
 msgstr "Genau wie --whole-archive."
 
-#: src/ld.c:112
+#: src/ld.c:104
 msgid ""
 "Default rules of extracting from archive; weak references are not enough."
 msgstr ""
 
-#: src/ld.c:116
+#: src/ld.c:108
 msgid "Weak references cause extraction from archive."
 msgstr ""
 
-#: src/ld.c:118
+#: src/ld.c:110
 msgid "Allow multiple definitions; first is used."
 msgstr ""
 
-#: src/ld.c:120
+#: src/ld.c:112
 msgid "Disallow/allow undefined symbols in DSOs."
 msgstr ""
 
-#: src/ld.c:123
+#: src/ld.c:115
 msgid "Object requires immediate handling of $ORIGIN."
 msgstr ""
 
-#: src/ld.c:125
+#: src/ld.c:117
 msgid "Relocation will not be processed lazily."
 msgstr ""
 
-#: src/ld.c:127
+#: src/ld.c:119
 msgid "Object cannot be unloaded at runtime."
 msgstr ""
 
-#: src/ld.c:129
+#: src/ld.c:121
 msgid "Mark object to be initialized first."
 msgstr ""
 
-#: src/ld.c:131
+#: src/ld.c:123
 msgid "Enable/disable lazy-loading flag for following dependencies."
 msgstr ""
 
-#: src/ld.c:133
+#: src/ld.c:125
 msgid "Mark object as not loadable with 'dlopen'."
 msgstr ""
 
-#: src/ld.c:135
+#: src/ld.c:127
 msgid "Ignore/record dependencies on unused DSOs."
 msgstr ""
 
-#: src/ld.c:137
+#: src/ld.c:129
 msgid "Generated DSO will be a system library."
 msgstr ""
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "ADDRESS"
 msgstr "ADRESSE"
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "Set entry point address."
 msgstr ""
 
-#: src/ld.c:141
+#: src/ld.c:133
 msgid "Do not link against shared libraries."
 msgstr ""
 
-#: src/ld.c:144
+#: src/ld.c:136
 msgid "Prefer linking against shared libraries."
 msgstr ""
 
-#: src/ld.c:145
+#: src/ld.c:137
 msgid "Export all dynamic symbols."
 msgstr ""
 
-#: src/ld.c:146
+#: src/ld.c:138
 msgid "Strip all symbols."
 msgstr ""
 
-#: src/ld.c:147
+#: src/ld.c:139
 msgid "Strip debugging symbols."
 msgstr ""
 
-#: src/ld.c:149
+#: src/ld.c:141
 msgid "Assume pagesize for the target system to be SIZE."
 msgstr ""
 
-#: src/ld.c:151
+#: src/ld.c:143
 msgid "Set runtime DSO search path."
 msgstr ""
 
-#: src/ld.c:154
+#: src/ld.c:146
 msgid "Set link time DSO search path."
 msgstr ""
 
-#: src/ld.c:155
+#: src/ld.c:147
 msgid "Generate dynamic shared object."
 msgstr ""
 
-#: src/ld.c:156
+#: src/ld.c:148
 msgid "Generate relocatable object."
 msgstr ""
 
-#: src/ld.c:159
+#: src/ld.c:151
 msgid "Causes symbol not assigned to a version be reduced to local."
 msgstr ""
 
-#: src/ld.c:160
+#: src/ld.c:152
 msgid "Remove unused sections."
 msgstr ""
 
-#: src/ld.c:163
+#: src/ld.c:155
 msgid "Don't remove unused sections."
 msgstr ""
 
-#: src/ld.c:164
+#: src/ld.c:156
 msgid "Set soname of shared object."
 msgstr ""
 
-#: src/ld.c:165
+#: src/ld.c:157
 msgid "Set the dynamic linker name."
 msgstr ""
 
-#: src/ld.c:168
+#: src/ld.c:160
 msgid "Add/suppress addition indentifying link-editor to .comment section."
 msgstr ""
 
-#: src/ld.c:171
+#: src/ld.c:163
 msgid "Create .eh_frame_hdr section"
 msgstr ""
 
-#: src/ld.c:173
+#: src/ld.c:165
 msgid "Set hash style to sysv, gnu or both."
 msgstr ""
 
-#: src/ld.c:175
+#: src/ld.c:167
 msgid "Generate build ID note (md5, sha1 (default), uuid)."
 msgstr ""
 
-#: src/ld.c:177
+#: src/ld.c:169
 msgid "Linker Operation Control:"
 msgstr ""
 
-#: src/ld.c:178
+#: src/ld.c:170
 msgid "Verbose messages."
 msgstr ""
 
-#: src/ld.c:179
+#: src/ld.c:171
 msgid "Trace file opens."
 msgstr ""
 
-#: src/ld.c:181
+#: src/ld.c:173
 msgid "Trade speed for less memory usage"
 msgstr ""
 
-#: src/ld.c:182
+#: src/ld.c:174
 msgid "LEVEL"
 msgstr ""
 
-#: src/ld.c:183
+#: src/ld.c:175
 msgid "Set optimization level to LEVEL."
 msgstr ""
 
-#: src/ld.c:184
+#: src/ld.c:176
 msgid "Use linker script in FILE."
 msgstr ""
 
-#: src/ld.c:187
+#: src/ld.c:179
 msgid "Select to get parser debug information"
 msgstr ""
 
-#: src/ld.c:190
+#: src/ld.c:182
 msgid "Read version information from FILE."
 msgstr ""
 
-#: src/ld.c:191
+#: src/ld.c:183
 msgid "Set emulation to NAME."
 msgstr ""
 
-#: src/ld.c:197
+#: src/ld.c:189
 msgid "Combine object and archive files."
 msgstr ""
 
-#: src/ld.c:200
+#: src/ld.c:192
 msgid "[FILE]..."
 msgstr "[DATEI]..."
 
-#: src/ld.c:333
+#: src/ld.c:325
 #, c-format
 msgid "At least one input file needed"
 msgstr "Mindestens eine Eingabedatei benötigt"
 
-#: src/ld.c:349
+#: src/ld.c:341
 #, c-format
 msgid "error while preparing linking"
 msgstr ""
 
-#: src/ld.c:356
+#: src/ld.c:348
 #, c-format
 msgid "cannot open linker script '%s'"
 msgstr ""
 
-#: src/ld.c:397
+#: src/ld.c:389
 #, c-format
 msgid "-( without matching -)"
 msgstr "-( ohne Übereinstimmung -)"
 
-#: src/ld.c:572 src/ld.c:610
+#: src/ld.c:564 src/ld.c:602
 #, c-format
 msgid "only one option of -G and -r is allowed"
 msgstr "nur eine Option aus -G und -r erlaubt"
 
-#: src/ld.c:594
+#: src/ld.c:586
 #, c-format
 msgid "more than one '-m' parameter"
 msgstr ""
 
-#: src/ld.c:604 src/ld.c:1013
+#: src/ld.c:596 src/ld.c:1005
 #, c-format
 msgid "unknown option `-%c %s'"
 msgstr ""
 
-#: src/ld.c:646
+#: src/ld.c:638
 #, c-format
 msgid "invalid page size value '%s': ignored"
 msgstr ""
 
-#: src/ld.c:687
+#: src/ld.c:679
 #, c-format
 msgid "invalid hash style '%s'"
 msgstr ""
 
-#: src/ld.c:697
+#: src/ld.c:689
 #, c-format
 msgid "invalid build-ID style '%s'"
 msgstr ""
 
-#: src/ld.c:785
+#: src/ld.c:777
 #, c-format
 msgid "More than one output file name given."
 msgstr "Mehr als ein Name der Ausgabedatei angegeben."
 
-#: src/ld.c:802
+#: src/ld.c:794
 #, c-format
 msgid "Invalid optimization level `%s'"
 msgstr ""
 
-#: src/ld.c:850
+#: src/ld.c:842
 #, c-format
 msgid "nested -( -) groups are not allowed"
 msgstr ""
 
-#: src/ld.c:869
+#: src/ld.c:861
 #, c-format
 msgid "-) without matching -("
 msgstr "-) ohne Übereinstimmung -("
 
-#: src/ld.c:1046
+#: src/ld.c:1038
 #, c-format
 msgid "unknown option '-%c %s'"
 msgstr "unbekannte Option '-%c %s'"
 
-#: src/ld.c:1150
+#: src/ld.c:1142
 #, c-format
 msgid "could not find input file to determine output file format"
 msgstr ""
 
-#: src/ld.c:1152
+#: src/ld.c:1144
 #, c-format
 msgid "try again with an appropriate '-m' parameter"
 msgstr ""
 
-#: src/ld.c:1446
+#: src/ld.c:1438
 #, c-format
 msgid "cannot read version script '%s'"
 msgstr ""
 
-#: src/ld.c:1512 src/ld.c:1551
+#: src/ld.c:1504 src/ld.c:1543
 #, c-format
 msgid "duplicate definition of '%s' in linker script"
 msgstr ""
 
-#: src/ldgeneric.c:209 src/ldgeneric.c:5149
+#: src/ldgeneric.c:201 src/ldgeneric.c:5141
 #, c-format
 msgid "cannot create string table"
 msgstr ""
 
-#: src/ldgeneric.c:255
+#: src/ldgeneric.c:247
 #, c-format
 msgid "cannot load ld backend library '%s': %s"
 msgstr ""
 
-#: src/ldgeneric.c:265
+#: src/ldgeneric.c:257
 #, c-format
 msgid "cannot find init function in ld backend library '%s': %s"
 msgstr ""
 
-#: src/ldgeneric.c:308
+#: src/ldgeneric.c:300
 #, c-format
 msgid "%s listed more than once as input"
 msgstr ""
 
-#: src/ldgeneric.c:422
+#: src/ldgeneric.c:414
 #, c-format
 msgid "%s (for -l%s)\n"
 msgstr ""
 
-#: src/ldgeneric.c:423
+#: src/ldgeneric.c:415
 #, c-format
 msgid "%s (for DT_NEEDED %s)\n"
 msgstr ""
 
-#: src/ldgeneric.c:571
+#: src/ldgeneric.c:563
 #, c-format
 msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
 msgstr ""
 
-#: src/ldgeneric.c:584
+#: src/ldgeneric.c:576
 #, c-format
 msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
 msgstr ""
 
-#: src/ldgeneric.c:659 src/ldgeneric.c:1120 src/readelf.c:642 src/strip.c:570
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:568
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr ""
 
-#: src/ldgeneric.c:675
+#: src/ldgeneric.c:667
 #, c-format
 msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
 msgstr ""
 
-#: src/ldgeneric.c:698
+#: src/ldgeneric.c:690
 #, c-format
 msgid "(%s+%#<PRIx64>): first defined here\n"
 msgstr ""
 
-#: src/ldgeneric.c:817
+#: src/ldgeneric.c:809
 #, c-format
 msgid "%s: cannot get section group data: %s"
 msgstr ""
 
-#: src/ldgeneric.c:838
+#: src/ldgeneric.c:830
 #, c-format
 msgid "%s: section '%s' with group flag set does not belong to any group"
 msgstr ""
 
-#: src/ldgeneric.c:883
+#: src/ldgeneric.c:875
 #, c-format
 msgid "%s: section [%2d] '%s' is not in the correct section group"
 msgstr ""
 
-#: src/ldgeneric.c:1154 src/ldgeneric.c:1411 src/ldgeneric.c:1420
-#: src/ldgeneric.c:1479 src/ldgeneric.c:1488 src/ldgeneric.c:1751
-#: src/ldgeneric.c:2003
+#: src/ldgeneric.c:1146 src/ldgeneric.c:1403 src/ldgeneric.c:1412
+#: src/ldgeneric.c:1471 src/ldgeneric.c:1480 src/ldgeneric.c:1743
+#: src/ldgeneric.c:1995
 #, c-format
 msgid "%s: invalid ELF file (%s:%d)\n"
 msgstr ""
 
-#: src/ldgeneric.c:1248
+#: src/ldgeneric.c:1240
 #, c-format
 msgid "%s: only files of type ET_REL might contain section groups"
 msgstr ""
 
-#: src/ldgeneric.c:1300
+#: src/ldgeneric.c:1292
 #, c-format
 msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
 msgstr ""
 
-#: src/ldgeneric.c:1312
+#: src/ldgeneric.c:1304
 #, c-format
 msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
 msgstr ""
 
-#: src/ldgeneric.c:1326
+#: src/ldgeneric.c:1318
 #, c-format
 msgid ""
 "%s: group member %zu of section group [%2zd] '%s' has too high index: "
 "%<PRIu32>"
 msgstr ""
 
-#: src/ldgeneric.c:1348
+#: src/ldgeneric.c:1340
 #, c-format
 msgid "%s: section '%s' has unknown type: %d"
 msgstr ""
 
-#: src/ldgeneric.c:1727
+#: src/ldgeneric.c:1719
 #, c-format
 msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
 msgstr ""
 
-#: src/ldgeneric.c:1897
+#: src/ldgeneric.c:1889
 #, c-format
 msgid "cannot read archive `%s': %s"
 msgstr ""
 
-#: src/ldgeneric.c:2018
+#: src/ldgeneric.c:2010
 #, c-format
 msgid "file of type %s cannot be linked in\n"
 msgstr ""
 
-#: src/ldgeneric.c:2030
+#: src/ldgeneric.c:2022
 #, c-format
 msgid "%s: input file incompatible with ELF machine type %s\n"
 msgstr ""
 
-#: src/ldgeneric.c:2042
+#: src/ldgeneric.c:2034
 #, c-format
 msgid "%s: cannot get section header string table index: %s\n"
 msgstr ""
 
-#: src/ldgeneric.c:2071
+#: src/ldgeneric.c:2063
 #, c-format
 msgid "cannot use DSO '%s' when generating relocatable object file"
 msgstr ""
 
-#: src/ldgeneric.c:2156
+#: src/ldgeneric.c:2148
 #, c-format
 msgid "input file '%s' ignored"
 msgstr "Eingabedatei '%s' ignoriert"
 
-#: src/ldgeneric.c:2370
+#: src/ldgeneric.c:2362
 #, c-format
 msgid "undefined symbol `%s' in %s"
 msgstr "undefiniertes Symbol `%s' in %s"
 
-#: src/ldgeneric.c:2700
+#: src/ldgeneric.c:2692
 #, c-format
 msgid "cannot create ELF descriptor for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:2707
+#: src/ldgeneric.c:2699
 #, c-format
 msgid "could not create ELF header for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:3222 src/ldgeneric.c:3292 src/ldgeneric.c:3328
-#: src/ldgeneric.c:4455 src/ldgeneric.c:4504 src/ldgeneric.c:4536
-#: src/ldgeneric.c:4771 src/ldgeneric.c:4826 src/ldgeneric.c:5073
-#: src/ldgeneric.c:5129 src/ldgeneric.c:5598 src/ldgeneric.c:5610
+#: src/ldgeneric.c:3214 src/ldgeneric.c:3284 src/ldgeneric.c:3320
+#: src/ldgeneric.c:4447 src/ldgeneric.c:4496 src/ldgeneric.c:4528
+#: src/ldgeneric.c:4763 src/ldgeneric.c:4818 src/ldgeneric.c:5065
+#: src/ldgeneric.c:5121 src/ldgeneric.c:5590 src/ldgeneric.c:5602
 #, c-format
 msgid "cannot create section for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:3442
+#: src/ldgeneric.c:3434
 #, c-format
 msgid "address computation expression contains variable '%s'"
 msgstr ""
 
-#: src/ldgeneric.c:3487
+#: src/ldgeneric.c:3479
 #, c-format
 msgid ""
 "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
 "of two"
 msgstr ""
 
-#: src/ldgeneric.c:3682
+#: src/ldgeneric.c:3674
 #, c-format
 msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 msgstr ""
 
-#: src/ldgeneric.c:3688
+#: src/ldgeneric.c:3680
 #, c-format
 msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
 msgstr ""
 
-#: src/ldgeneric.c:3918
+#: src/ldgeneric.c:3910
 #, c-format
 msgid "cannot create GNU hash table section for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4069
+#: src/ldgeneric.c:4061
 #, c-format
 msgid "cannot create hash table section for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4112
+#: src/ldgeneric.c:4104
 #, c-format
 msgid "cannot create build ID section: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4189
+#: src/ldgeneric.c:4181
 #, c-format
 msgid "cannot convert section data to file format: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4198
+#: src/ldgeneric.c:4190
 #, c-format
 msgid "cannot convert section data to memory format: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4259
+#: src/ldgeneric.c:4251
 #, c-format
 msgid "cannot read enough data for UUID"
 msgstr ""
 
-#: src/ldgeneric.c:4356 src/ldgeneric.c:4377 src/ldgeneric.c:4406
-#: src/ldgeneric.c:6059
+#: src/ldgeneric.c:4348 src/ldgeneric.c:4369 src/ldgeneric.c:4398
+#: src/ldgeneric.c:6051
 #, c-format
 msgid "cannot create symbol table for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:5298 src/ldgeneric.c:5850
+#: src/ldgeneric.c:5290 src/ldgeneric.c:5842
 #, c-format
 msgid "section index too large in dynamic symbol table"
 msgstr ""
 
-#: src/ldgeneric.c:5743
+#: src/ldgeneric.c:5735
 #, c-format
 msgid "cannot create versioning section: %s"
 msgstr "konnte Versionierungsabschnitt nicht erstellen: %s"
 
-#: src/ldgeneric.c:5816
+#: src/ldgeneric.c:5808
 #, c-format
 msgid "cannot create dynamic symbol table for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:5991
+#: src/ldgeneric.c:5983
 #, c-format
 msgid "cannot create versioning data: %s"
 msgstr "konnte Versionierungsdaten nicht erstellen: %s"
 
-#: src/ldgeneric.c:6091 src/ldgeneric.c:6104 src/ldgeneric.c:6168
-#: src/ldgeneric.c:6176
+#: src/ldgeneric.c:6083 src/ldgeneric.c:6096 src/ldgeneric.c:6160
+#: src/ldgeneric.c:6168
 #, c-format
 msgid "cannot create section header string section: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6098
+#: src/ldgeneric.c:6090
 #, c-format
 msgid "cannot create section header string section"
 msgstr ""
 
-#: src/ldgeneric.c:6256
+#: src/ldgeneric.c:6248
 #, c-format
 msgid "cannot create program header: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/ldgeneric.c:6264
+#: src/ldgeneric.c:6256
 #, c-format
 msgid "while determining file layout: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6385
+#: src/ldgeneric.c:6377
 #, c-format
 msgid "internal error: non-nobits section follows nobits section"
 msgstr ""
 
-#: src/ldgeneric.c:6922
+#: src/ldgeneric.c:6914
 #, c-format
 msgid "cannot get header of 0th section: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6938 src/unstrip.c:1818
+#: src/ldgeneric.c:6930 src/unstrip.c:1822
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6969
+#: src/ldgeneric.c:6961
 #, c-format
 msgid "linker backend didn't specify function to relocate section"
 msgstr ""
 
-#: src/ldgeneric.c:6981
+#: src/ldgeneric.c:6973
 #, c-format
 msgid "while writing output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6986
+#: src/ldgeneric.c:6978
 #, c-format
 msgid "while finishing output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6992
+#: src/ldgeneric.c:6984
 #, c-format
 msgid "cannot stat output file"
 msgstr ""
 
-#: src/ldgeneric.c:7008
+#: src/ldgeneric.c:7000
 #, c-format
 msgid "WARNING: temporary output file overwritten before linking finished"
 msgstr ""
 
-#: src/ldgeneric.c:7061 src/ldgeneric.c:7072 src/ldgeneric.c:7083
-#: src/ldgeneric.c:7094 src/ldgeneric.c:7113 src/ldgeneric.c:7126
-#: src/ldgeneric.c:7138
+#: src/ldgeneric.c:7053 src/ldgeneric.c:7064 src/ldgeneric.c:7075
+#: src/ldgeneric.c:7086 src/ldgeneric.c:7105 src/ldgeneric.c:7118
+#: src/ldgeneric.c:7130
 #, c-format
 msgid "no machine specific '%s' implementation"
 msgstr ""
 
-#: src/ldscript.y:178
+#: src/ldscript.y:170
 msgid "mode for segment invalid\n"
 msgstr ""
 
-#: src/ldscript.y:465
+#: src/ldscript.y:457
 #, c-format
 msgid "while reading version script '%s': %s at line %d"
 msgstr ""
 
-#: src/ldscript.y:466
+#: src/ldscript.y:458
 #, c-format
 msgid "while reading linker script '%s': %s at line %d"
 msgstr ""
 
-#: src/ldscript.y:745
+#: src/ldscript.y:737
 #, c-format
 msgid "symbol '%s' is declared both local and global for unnamed version"
 msgstr ""
 
-#: src/ldscript.y:747
+#: src/ldscript.y:739
 #, c-format
 msgid "symbol '%s' is declared both local and global for version '%s'"
 msgstr ""
 
-#: src/ldscript.y:767 src/ldscript.y:774
+#: src/ldscript.y:759 src/ldscript.y:766
 #, c-format
 msgid "default visibility set as local and global"
 msgstr "Standard-Sichtbarkeit auf lokal und global gesetzt"
 
-#: src/nm.c:74 src/strip.c:76
+#: src/nm.c:66 src/strip.c:68
 msgid "Output selection:"
 msgstr ""
 
-#: src/nm.c:75
+#: src/nm.c:67
 msgid "Display debugger-only symbols"
 msgstr ""
 
-#: src/nm.c:76
+#: src/nm.c:68
 msgid "Display only defined symbols"
 msgstr "Zeige nur definierte Symbole"
 
-#: src/nm.c:79
+#: src/nm.c:71
 msgid "Display dynamic symbols instead of normal symbols"
 msgstr "Zeige dynamische Symbole anstelle normaler Symbole"
 
-#: src/nm.c:80
+#: src/nm.c:72
 msgid "Display only external symbols"
 msgstr "Zeige nur externe Symbole"
 
-#: src/nm.c:81
+#: src/nm.c:73
 msgid "Display only undefined symbols"
 msgstr "Zeige nur undefinierte Symbole"
 
-#: src/nm.c:83
+#: src/nm.c:75
 msgid "Include index for symbols from archive members"
 msgstr ""
 
-#: src/nm.c:85 src/size.c:66
+#: src/nm.c:77 src/size.c:58
 msgid "Output format:"
 msgstr "Ausgabeformat:"
 
-#: src/nm.c:87
+#: src/nm.c:79
 #, fuzzy
 msgid "Print name of the input file before every symbol"
 msgstr "Zeige Name der Eingabedatei vor jedem Symbol"
 
-#: src/nm.c:90
+#: src/nm.c:82
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd', `sysv' or `posix'.  The "
 "default is `sysv'"
@@ -3609,74 +3694,74 @@
 "Benutze das Ausgabeformat FORMAT. FORMAT kann `bsd', `sysv' or `posix' sein. "
 "Der Standard ist `sysv'"
 
-#: src/nm.c:92
+#: src/nm.c:84
 msgid "Same as --format=bsd"
 msgstr "Genau wie --format=bsd"
 
-#: src/nm.c:93
+#: src/nm.c:85
 msgid "Same as --format=posix"
 msgstr "Genau wie --format=posix"
 
-#: src/nm.c:94 src/size.c:72
+#: src/nm.c:86 src/size.c:64
 msgid "Use RADIX for printing symbol values"
 msgstr "Benutze RADIX zur Ausgabe von Symbolwerten"
 
-#: src/nm.c:95
+#: src/nm.c:87
 #, fuzzy
 msgid "Mark special symbols"
 msgstr "Kennzeichne schwache Symbole"
 
-#: src/nm.c:97
+#: src/nm.c:89
 #, fuzzy
 msgid "Print size of defined symbols"
 msgstr "Zeige Grösse der definierten Symbole"
 
-#: src/nm.c:99 src/size.c:80 src/strip.c:81 src/unstrip.c:81
+#: src/nm.c:91 src/size.c:72 src/strip.c:73 src/unstrip.c:73
 msgid "Output options:"
 msgstr "Ausgabeoptionen:"
 
-#: src/nm.c:100
+#: src/nm.c:92
 msgid "Sort symbols numerically by address"
 msgstr "Symbole anhand der Adresse numerisch sortieren"
 
-#: src/nm.c:102
+#: src/nm.c:94
 msgid "Do not sort the symbols"
 msgstr "Symbole nicht sortieren"
 
-#: src/nm.c:103
+#: src/nm.c:95
 msgid "Reverse the sense of the sort"
 msgstr "Sortierreihenfolge umkehren"
 
-#: src/nm.c:106
+#: src/nm.c:98
 msgid "Decode low-level symbol names into source code names"
 msgstr ""
 
-#: src/nm.c:113
+#: src/nm.c:105
 msgid "List symbols from FILEs (a.out by default)."
 msgstr ""
 
-#: src/nm.c:124 src/objdump.c:88
+#: src/nm.c:116 src/objdump.c:80
 #, fuzzy
 msgid "Output formatting"
 msgstr "Ausgabeformat:"
 
-#: src/nm.c:148 src/objdump.c:112 src/size.c:117 src/strip.c:128
+#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
 #, c-format
 msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
 msgstr "%s: INTERNER FEHLER %d (%s-%s): %s"
 
-#: src/nm.c:406 src/nm.c:418 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:2132
+#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
+#: src/strip.c:2160
 #, c-format
 msgid "while closing '%s'"
 msgstr "beim Schliessen von '%s'"
 
-#: src/nm.c:428 src/objdump.c:304 src/strip.c:384
+#: src/nm.c:420 src/objdump.c:296 src/strip.c:376
 #, c-format
 msgid "%s: File format not recognized"
 msgstr "%s: Dateiformat nicht erkannt"
 
-#: src/nm.c:468
+#: src/nm.c:460
 #, fuzzy
 msgid ""
 "\n"
@@ -3685,42 +3770,42 @@
 "\n"
 "Archiv-Index:"
 
-#: src/nm.c:477
+#: src/nm.c:469
 #, c-format
 msgid "invalid offset %zu for symbol %s"
 msgstr "ungültiger Offset %zu für Symbol %s"
 
-#: src/nm.c:482
+#: src/nm.c:474
 #, c-format
 msgid "%s in %s\n"
 msgstr ""
 
-#: src/nm.c:490
+#: src/nm.c:482
 #, c-format
 msgid "cannot reset archive offset to beginning"
 msgstr ""
 
-#: src/nm.c:514 src/objdump.c:352
+#: src/nm.c:506 src/objdump.c:344
 #, c-format
 msgid "%s%s%s: file format not recognized"
 msgstr "%s%s%s: Dateiformat nicht erkannt"
 
-#: src/nm.c:726
+#: src/nm.c:718
 #, c-format
 msgid "cannot create search tree"
 msgstr "Kann Suchbaum nicht erstellen"
 
-#: src/nm.c:765 src/nm.c:1164 src/objdump.c:795 src/readelf.c:898
-#: src/readelf.c:1041 src/readelf.c:1189 src/readelf.c:1371 src/readelf.c:1571
-#: src/readelf.c:1757 src/readelf.c:1967 src/readelf.c:2221 src/readelf.c:2287
-#: src/readelf.c:2365 src/readelf.c:2863 src/readelf.c:2899 src/readelf.c:2961
-#: src/readelf.c:7307 src/readelf.c:8212 src/readelf.c:8359 src/readelf.c:8427
-#: src/size.c:425 src/size.c:499 src/strip.c:510
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:793 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:1975 src/readelf.c:2202 src/readelf.c:2460
+#: src/readelf.c:2536 src/readelf.c:2623 src/readelf.c:3201 src/readelf.c:3237
+#: src/readelf.c:3300 src/readelf.c:8187 src/readelf.c:9273 src/readelf.c:9420
+#: src/readelf.c:9488 src/size.c:417 src/size.c:486 src/strip.c:503
 #, c-format
 msgid "cannot get section header string table index"
 msgstr ""
 
-#: src/nm.c:790
+#: src/nm.c:784
 #, c-format
 msgid ""
 "\n"
@@ -3733,80 +3818,80 @@
 "Symbole aus %s:\n"
 "\n"
 
-#: src/nm.c:793
+#: src/nm.c:787
 #, c-format
 msgid ""
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
 "\n"
 msgstr ""
 
-#: src/nm.c:1174
+#: 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:1178
+#: src/nm.c:1177
 #, c-format
 msgid "%s: size of section `%s' is not multiple of entry size"
 msgstr ""
 
-#: src/nm.c:1436
+#: src/nm.c:1435
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: Ungültige Operation"
 
-#: src/nm.c:1493
+#: src/nm.c:1492
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: keine Symbole"
 
-#: src/objdump.c:61
+#: src/objdump.c:53
 msgid "Mode selection:"
 msgstr ""
 
-#: src/objdump.c:62
+#: src/objdump.c:54
 msgid "Display relocation information."
 msgstr ""
 
-#: src/objdump.c:64
+#: src/objdump.c:56
 msgid "Display the full contents of all sections requested"
 msgstr ""
 
-#: src/objdump.c:66
+#: src/objdump.c:58
 msgid "Display assembler code of executable sections"
 msgstr ""
 
-#: src/objdump.c:68
+#: src/objdump.c:60
 #, fuzzy
 msgid "Output content selection:"
 msgstr "Eingabeauswahloptionen:"
 
-#: src/objdump.c:70
+#: src/objdump.c:62
 msgid "Only display information for section NAME."
 msgstr ""
 
-#: src/objdump.c:76
+#: src/objdump.c:68
 msgid "Show information from FILEs (a.out by default)."
 msgstr ""
 
-#: src/objdump.c:244 src/readelf.c:441
+#: src/objdump.c:236 src/readelf.c:473
 msgid "No operation specified.\n"
 msgstr "Keine Operation angegeben.\n"
 
-#: src/objdump.c:282 src/objdump.c:294
+#: src/objdump.c:274 src/objdump.c:286
 #, c-format
 msgid "while close `%s'"
 msgstr ""
 
-#: src/objdump.c:387 src/readelf.c:1666 src/readelf.c:1840
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2072
 msgid "INVALID SYMBOL"
 msgstr ""
 
-#: src/objdump.c:402 src/readelf.c:1697 src/readelf.c:1873
+#: src/objdump.c:394 src/readelf.c:1914 src/readelf.c:2108
 msgid "INVALID SECTION"
 msgstr ""
 
-#: src/objdump.c:518
+#: src/objdump.c:514
 #, c-format
 msgid ""
 "\n"
@@ -3814,430 +3899,477 @@
 "%-*s TYPE                 VALUE\n"
 msgstr ""
 
-#: src/objdump.c:521
+#: src/objdump.c:517
 msgid "OFFSET"
 msgstr "OFFSET"
 
-#: src/objdump.c:584
+#: src/objdump.c:582
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Inhalt des Abschnitts %s:\n"
 
-#: src/objdump.c:705
+#: src/objdump.c:703
 #, c-format
 msgid "cannot disassemble"
 msgstr "Disassemblieren nicht möglich"
 
-#: src/objdump.c:744
+#: src/objdump.c:742
 #, fuzzy, c-format
 msgid "cannot allocate memory"
 msgstr "konnte Verzeichnis nicht erstellen: %s"
 
-#: src/ranlib.c:74
+#: src/ranlib.c:66
 msgid "Generate an index to speed access to archives."
 msgstr "Erstelle einen Index zur Beschleunigung des Zugriffs auf Archive."
 
-#: src/ranlib.c:77
+#: src/ranlib.c:69
 msgid "ARCHIVE"
 msgstr "ARCHIV"
 
-#: src/ranlib.c:116
+#: src/ranlib.c:108
 #, c-format
 msgid "Archive name required"
 msgstr "Archivname benötigt"
 
-#: src/ranlib.c:194
+#: src/ranlib.c:186
 #, c-format
 msgid "'%s' is no archive"
 msgstr "'%s' ist kein Archiv"
 
-#: src/ranlib.c:229
+#: src/ranlib.c:221
 #, c-format
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr ""
 
+#: 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:75
+#: src/readelf.c:77
 msgid "All these plus -p .strtab -p .dynstr -p .comment"
 msgstr ""
 
-#: src/readelf.c:76
+#: src/readelf.c:78
 msgid "Display the dynamic segment"
 msgstr ""
 
-#: src/readelf.c:77
+#: src/readelf.c:79
 msgid "Display the ELF file header"
 msgstr ""
 
-#: src/readelf.c:79
+#: src/readelf.c:81
 msgid "Display histogram of bucket list lengths"
 msgstr ""
 
-#: src/readelf.c:80
+#: src/readelf.c:82
 msgid "Display the program headers"
 msgstr "Programm-Köpfe anzeigen"
 
-#: src/readelf.c:82
+#: src/readelf.c:84
 msgid "Display relocations"
 msgstr "Relocations anzeigen"
 
-#: src/readelf.c:83
+#: src/readelf.c:85
 #, fuzzy
 msgid "Display the sections' headers"
 msgstr "Programm-Köpfe anzeigen"
 
-#: src/readelf.c:85
+#: src/readelf.c:87
 msgid "Display the symbol table"
 msgstr "Symboltabelle anzeigen"
 
-#: src/readelf.c:86
+#: src/readelf.c:88
 msgid "Display versioning information"
 msgstr "Versionierungsinformationen anzeigen"
 
-#: src/readelf.c:87
+#: src/readelf.c:89
 #, fuzzy
 msgid "Display the ELF notes"
 msgstr "Kernnotizen anzeigen"
 
-#: src/readelf.c:89
+#: src/readelf.c:91
 #, fuzzy
 msgid "Display architecture specific information, if any"
 msgstr "Architekturspezifische Informationen anzeigen (falls vorhanden)"
 
-#: src/readelf.c:91
+#: src/readelf.c:93
 msgid "Display sections for exception handling"
 msgstr "Abschnitte für Ausnahmebehandlung anzeigen"
 
-#: src/readelf.c:93
+#: src/readelf.c:95
 msgid "Additional output selection:"
 msgstr ""
 
-#: src/readelf.c:95
+#: 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, or "
-"exception"
-msgstr ""
-
-#: src/readelf.c:99
-msgid "Dump the uninterpreted contents of SECTION, by number or name"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
 msgstr ""
 
 #: src/readelf.c:101
+msgid "Dump the uninterpreted contents of SECTION, by number or name"
+msgstr ""
+
+#: src/readelf.c:103
 msgid "Print string contents of sections"
 msgstr ""
 
-#: src/readelf.c:104
+#: src/readelf.c:106
 msgid "Display the symbol index of an archive"
 msgstr "Symbolindex des Archivs anzeigen"
 
-#: src/readelf.c:106
+#: src/readelf.c:108
 msgid "Output control:"
 msgstr "Ausgabekontrolle:"
 
-#: src/readelf.c:108
+#: 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:110
+#: 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:115
+#: 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:412
+#: src/readelf.c:441
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr ""
 
-#: src/readelf.c:478
+#: 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:490
+#: 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:495
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9440
+#: src/unstrip.c:356 src/unstrip.c:387 src/unstrip.c:436 src/unstrip.c:544
+#: src/unstrip.c:561 src/unstrip.c:597 src/unstrip.c:795 src/unstrip.c:1063
+#: src/unstrip.c:1254 src/unstrip.c:1314 src/unstrip.c:1435 src/unstrip.c:1488
+#: src/unstrip.c:1595 src/unstrip.c:1784
+#, c-format
+msgid "cannot get section header: %s"
+msgstr ""
+
+#: 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:5398 src/readelf.c:7671 src/readelf.c:7773
+#: src/readelf.c:7939
+#, 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:587
+#: 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:589
+#: src/readelf.c:771
 #, c-format
 msgid "input file is empty"
 msgstr ""
 
-#: src/readelf.c:591
+#: src/readelf.c:773
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "Konnte '%s' nicht lesen: %s"
 
-#: src/readelf.c:627
+#: src/readelf.c:814
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr ""
 
-#: src/readelf.c:635
+#: src/readelf.c:822
 #, c-format
 msgid "cannot create EBL handle"
 msgstr ""
 
-#: src/readelf.c:648
+#: 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:734
+#: src/readelf.c:921
 msgid "NONE (None)"
 msgstr ""
 
-#: src/readelf.c:735
+#: src/readelf.c:922
 msgid "REL (Relocatable file)"
 msgstr ""
 
-#: src/readelf.c:736
+#: src/readelf.c:923
 msgid "EXEC (Executable file)"
 msgstr ""
 
-#: src/readelf.c:737
+#: src/readelf.c:924
 msgid "DYN (Shared object file)"
 msgstr ""
 
-#: src/readelf.c:738
+#: src/readelf.c:925
 msgid "CORE (Core file)"
 msgstr ""
 
-#: src/readelf.c:743
+#: src/readelf.c:930
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr ""
 
-#: src/readelf.c:745
+#: src/readelf.c:932
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr ""
 
-#: src/readelf.c:755
+#: src/readelf.c:942
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
 msgstr ""
 
-#: src/readelf.c:759
+#: src/readelf.c:946
 #, c-format
 msgid ""
 "\n"
 "  Class:                             %s\n"
 msgstr ""
 
-#: src/readelf.c:764
+#: src/readelf.c:951
 #, fuzzy, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Daten:                             %s\n"
 
-#: src/readelf.c:770
+#: src/readelf.c:957
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr ""
 
-#: src/readelf.c:772 src/readelf.c:789
+#: src/readelf.c:959 src/readelf.c:976
 msgid "(current)"
 msgstr "(aktuell)"
 
-#: src/readelf.c:776
+#: src/readelf.c:963
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr ""
 
-#: src/readelf.c:779
+#: src/readelf.c:966
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr ""
 
-#: src/readelf.c:782
+#: src/readelf.c:969
 msgid "  Type:                              "
 msgstr "  Typ:                               "
 
-#: src/readelf.c:785
+#: src/readelf.c:972
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr ""
 
-#: src/readelf.c:787
+#: src/readelf.c:974
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr ""
 
-#: src/readelf.c:791
+#: src/readelf.c:978
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:794
+#: src/readelf.c:981
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr ""
 
-#: src/readelf.c:795 src/readelf.c:798
+#: src/readelf.c:982 src/readelf.c:985
 msgid "(bytes into file)"
 msgstr ""
 
-#: src/readelf.c:797
+#: src/readelf.c:984
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr ""
 
-#: src/readelf.c:800
+#: src/readelf.c:987
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr ""
 
-#: src/readelf.c:803
+#: src/readelf.c:990
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:804 src/readelf.c:807 src/readelf.c:824
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
 msgid "(bytes)"
 msgstr "(Bytes)"
 
-#: src/readelf.c:806
+#: src/readelf.c:993
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:809
+#: src/readelf.c:996
 #, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr ""
 
-#: src/readelf.c:816
+#: src/readelf.c:1003
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr ""
 
-#: src/readelf.c:819 src/readelf.c:836 src/readelf.c:850
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
 msgid " ([0] not available)"
 msgstr ""
 
-#: src/readelf.c:823
+#: src/readelf.c:1010
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:826
+#: src/readelf.c:1013
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr ""
 
-#: src/readelf.c:833
+#: src/readelf.c:1020
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr ""
 
-#: src/readelf.c:846
+#: src/readelf.c:1033
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr ""
 
-#: src/readelf.c:854
+#: src/readelf.c:1041
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:858
+#: src/readelf.c:1045
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:890
+#: src/readelf.c:1077
 #, c-format
 msgid ""
 "There are %d section headers, starting at offset %#<PRIx64>:\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:900
+#: src/readelf.c:1087
 msgid "Section Headers:"
 msgstr ""
 
-#: src/readelf.c:903
+#: src/readelf.c:1090
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
 msgstr ""
 
-#: src/readelf.c:905
+#: src/readelf.c:1092
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
 msgstr ""
 
-#: src/readelf.c:912 src/readelf.c:1065
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:919 src/readelf.c:1073 src/readelf.c:8379 src/unstrip.c:353
-#: src/unstrip.c:384 src/unstrip.c:433 src/unstrip.c:541 src/unstrip.c:558
-#: src/unstrip.c:594 src/unstrip.c:792 src/unstrip.c:1060 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:977
+#: src/readelf.c:1164
 msgid "Program Headers:"
 msgstr "Programm-Köpfe:"
 
-#: src/readelf.c:979
+#: src/readelf.c:1166
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 
-#: src/readelf.c:982
+#: src/readelf.c:1169
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
 msgstr ""
 
-#: src/readelf.c:1022
+#: src/readelf.c:1226
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr ""
 
-#: src/readelf.c:1043
+#: src/readelf.c:1247
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
 "  Segment Sections..."
 msgstr ""
 
-#: src/readelf.c:1054 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
+#: src/readelf.c:1258 src/unstrip.c:1843 src/unstrip.c:1886 src/unstrip.c:1893
 #, c-format
 msgid "cannot get program header: %s"
 msgstr ""
 
-#: src/readelf.c:1195
+#: src/readelf.c:1401
 #, c-format
 msgid ""
 "\n"
@@ -4248,7 +4380,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1200
+#: src/readelf.c:1406
 #, c-format
 msgid ""
 "\n"
@@ -4259,15 +4391,21 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1208
+#: src/readelf.c:1414
 msgid "<INVALID SYMBOL>"
 msgstr ""
 
-#: src/readelf.c:1222
+#: src/readelf.c:1428
 msgid "<INVALID SECTION>"
 msgstr ""
 
-#: src/readelf.c:1373
+#: src/readelf.c:1585 src/readelf.c:2208 src/readelf.c:2466 src/readelf.c:2542
+#: src/readelf.c:2846 src/readelf.c:2920 src/readelf.c:4610
+#, 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"
@@ -4280,43 +4418,43 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1385
+#: src/readelf.c:1598
 msgid "  Type              Value\n"
 msgstr ""
 
-#: src/readelf.c:1409
+#: src/readelf.c:1622
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1414
+#: src/readelf.c:1627
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1419
+#: src/readelf.c:1632
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1424
+#: src/readelf.c:1637
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1444
+#: src/readelf.c:1657
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr ""
 
-#: src/readelf.c:1556 src/readelf.c:1742
+#: src/readelf.c:1770 src/readelf.c:1960
 #, c-format
 msgid ""
 "\n"
 "Invalid symbol table at offset %#0<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:1574 src/readelf.c:1759
+#: src/readelf.c:1788 src/readelf.c:1978
 #, c-format
 msgid ""
 "\n"
@@ -4329,7 +4467,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1589
+#: src/readelf.c:1803 src/readelf.c:1993
 #, c-format
 msgid ""
 "\n"
@@ -4340,29 +4478,29 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1599
+#: src/readelf.c:1813
 msgid "  Offset      Type                 Value       Name\n"
 msgstr ""
 
-#: src/readelf.c:1601
+#: src/readelf.c:1815
 msgid "  Offset              Type                 Value               Name\n"
 msgstr ""
 
-#: src/readelf.c:1654 src/readelf.c:1665 src/readelf.c:1678 src/readelf.c:1696
-#: src/readelf.c:1708 src/readelf.c:1827 src/readelf.c:1839 src/readelf.c:1853
-#: src/readelf.c:1872 src/readelf.c:1885
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1913
+#: src/readelf.c:1925 src/readelf.c:2059 src/readelf.c:2071 src/readelf.c:2085
+#: src/readelf.c:2107 src/readelf.c:2120
 msgid "<INVALID RELOC>"
 msgstr ""
 
-#: src/readelf.c:1771
+#: src/readelf.c:2003
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr ""
 
-#: src/readelf.c:1773
+#: src/readelf.c:2005
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 
-#: src/readelf.c:1974
+#: src/readelf.c:2216
 #, c-format
 msgid ""
 "\n"
@@ -4373,40 +4511,40 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1980
+#: src/readelf.c:2221
 #, 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:1990
+#: src/readelf.c:2229
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr ""
 
-#: src/readelf.c:1992
+#: src/readelf.c:2231
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr ""
 
-#: src/readelf.c:2012
+#: src/readelf.c:2251
 #, c-format
 msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
 msgstr ""
 
-#: src/readelf.c:2100
+#: src/readelf.c:2339
 #, c-format
 msgid "bad dynamic symbol"
 msgstr ""
 
-#: src/readelf.c:2182
+#: src/readelf.c:2421
 msgid "none"
 msgstr "keine"
 
-#: src/readelf.c:2199
+#: src/readelf.c:2438
 msgid "| <unknown>"
 msgstr "| <unbekannt>"
 
-#: src/readelf.c:2224
+#: src/readelf.c:2469
 #, c-format
 msgid ""
 "\n"
@@ -4419,17 +4557,17 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2247
+#: src/readelf.c:2490
 #, fuzzy, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Version: %hu  Datei: %s  Cnt: %hu\n"
 
-#: src/readelf.c:2260
+#: src/readelf.c:2503
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 
-#: src/readelf.c:2291
+#: src/readelf.c:2546
 #, c-format
 msgid ""
 "\n"
@@ -4442,17 +4580,17 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2321
+#: src/readelf.c:2574
 #, c-format
 msgid "  %#06x: Version: %hd  Flags: %s  Index: %hd  Cnt: %hd  Name: %s\n"
 msgstr ""
 
-#: src/readelf.c:2336
+#: src/readelf.c:2589
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr ""
 
-#: src/readelf.c:2568
+#: src/readelf.c:2850
 #, c-format
 msgid ""
 "\n"
@@ -4465,15 +4603,15 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2598
+#: src/readelf.c:2878
 msgid "   0 *local*                     "
 msgstr "   0 *lokal*                     "
 
-#: src/readelf.c:2603
+#: src/readelf.c:2883
 msgid "   1 *global*                    "
 msgstr "   1 *global*                    "
 
-#: src/readelf.c:2634
+#: src/readelf.c:2925
 #, c-format
 msgid ""
 "\n"
@@ -4488,41 +4626,56 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2658
+#: src/readelf.c:2947
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr ""
 
-#: src/readelf.c:2660
+#: src/readelf.c:2949
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:2667
+#: src/readelf.c:2956
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:2680
+#: src/readelf.c:2969
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
 "\t\t\t  unsuccessful lookup: %f\n"
 msgstr ""
 
-#: src/readelf.c:2698 src/readelf.c:2740 src/readelf.c:2781
+#: src/readelf.c:2987 src/readelf.c:3042 src/readelf.c:3098
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr ""
 
-#: src/readelf.c:2835
+#: src/readelf.c:2995
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash section %d"
+msgstr "ungültige .debug_line Sektion"
+
+#: src/readelf.c:3050
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash64 section %d"
+msgstr "ungültige .debug_line Sektion"
+
+#: src/readelf.c:3106
+#, fuzzy, c-format
+msgid "invalid data in gnu.hash section %d"
+msgstr "ungültige .debug_line Sektion"
+
+#: src/readelf.c:3173
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
 " Bitmask Size: %zu bytes  %<PRIuFAST32>%% bits set  2nd hash shift: %u\n"
 msgstr ""
 
-#: src/readelf.c:2909
+#: src/readelf.c:3248
 #, c-format
 msgid ""
 "\n"
@@ -4533,13 +4686,13 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2923
+#: src/readelf.c:3262
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
 msgstr ""
 
-#: src/readelf.c:2973
+#: src/readelf.c:3312
 #, c-format
 msgid ""
 "\n"
@@ -4547,160 +4700,140 @@
 "%#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:2989
+#: src/readelf.c:3329
 msgid "  Owner          Size\n"
 msgstr ""
 
-#: src/readelf.c:3015
+#: src/readelf.c:3358
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
-#: src/readelf.c:3047
+#: src/readelf.c:3397
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
-#: src/readelf.c:3052
+#: src/readelf.c:3402
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    File: %11<PRIu32>\n"
 
-#: src/readelf.c:3087
+#: src/readelf.c:3451
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3090
+#: src/readelf.c:3454
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3093
+#: src/readelf.c:3457
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3100
+#: src/readelf.c:3467
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3103
+#: src/readelf.c:3470
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3139
+#: src/readelf.c:3515
 #, c-format
 msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3142
+#: src/readelf.c:3518
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3147
+#: src/readelf.c:3523
 #, c-format
 msgid "%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3150
+#: src/readelf.c:3526
 #, c-format
 msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3156
+#: src/readelf.c:3532
 #, c-format
 msgid "%s+%#<PRIx64> <%s>"
 msgstr "%s+%#<PRIx64> <%s>"
 
-#: src/readelf.c:3159
+#: src/readelf.c:3535
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s>"
 msgstr "%s+%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3163
+#: src/readelf.c:3539
 #, c-format
 msgid "%#<PRIx64> <%s>"
 msgstr "%#<PRIx64> <%s>"
 
-#: src/readelf.c:3166
+#: src/readelf.c:3542
 #, c-format
 msgid "%#0*<PRIx64> <%s>"
 msgstr "%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3171
+#: src/readelf.c:3547
 #, c-format
 msgid "%s+%#<PRIx64>"
 msgstr "%s+%#<PRIx64>"
 
-#: src/readelf.c:3174
+#: src/readelf.c:3550
 #, c-format
 msgid "%s+%#0*<PRIx64>"
 msgstr "%s+%#0*<PRIx64>"
 
-#: src/readelf.c:3313
-#, c-format
-msgid "unknown tag %hx"
-msgstr "unbekannter Tag %hx"
-
-#: src/readelf.c:3315
-#, c-format
-msgid "unknown user tag %hx"
-msgstr "unbekannter Benutzer-Tag %hx"
-
-#: src/readelf.c:3603
-#, c-format
-msgid "unknown attribute %hx"
-msgstr "unbekanntes Attribut %hx"
-
-#: src/readelf.c:3606
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr "unbekanntes Benutzer-Attribut %hx"
-
-#: src/readelf.c:3657
-#, fuzzy, c-format
-msgid "unknown form %#<PRIx64>"
-msgstr "unbekannte Form %<PRIx64>"
-
-#: src/readelf.c:3893
+#: src/readelf.c:3932
 msgid "empty block"
 msgstr ""
 
-#: src/readelf.c:3896
+#: src/readelf.c:3935
 #, c-format
 msgid "%zu byte block:"
 msgstr ""
 
-#: src/readelf.c:4419
+#: src/readelf.c:4332
 #, c-format
 msgid "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr ""
 
-#: src/readelf.c:4455
+#: src/readelf.c:4389
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr ""
 
-#: src/readelf.c:4462
+#: src/readelf.c:4396
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr ""
 
-#: src/readelf.c:4542
+#: src/readelf.c:4403
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr ""
+
+#: src/readelf.c:4492
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr ""
 
-#: src/readelf.c:4550
+#: src/readelf.c:4500
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr ""
 
-#: src/readelf.c:4569
+#: src/readelf.c:4526
 #, c-format
 msgid ""
 "\n"
@@ -4708,37 +4841,37 @@
 " [ Code]\n"
 msgstr ""
 
-#: src/readelf.c:4577
+#: src/readelf.c:4534
 #, c-format
 msgid ""
 "\n"
 "Abbreviation section at offset %<PRIu64>:\n"
 msgstr ""
 
-#: src/readelf.c:4590
+#: src/readelf.c:4547
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr ""
 
-#: src/readelf.c:4606
+#: src/readelf.c:4563
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr ""
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "yes"
 msgstr "ja"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "no"
 msgstr "nein"
 
-#: src/readelf.c:4644
+#: src/readelf.c:4600 src/readelf.c:4673
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr ""
 
-#: src/readelf.c:4649
+#: src/readelf.c:4615
 #, c-format
 msgid ""
 "\n"
@@ -4749,123 +4882,193 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:4680
+#: src/readelf.c:4646
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:4682
+#: src/readelf.c:4648
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:4701
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4706 src/readelf.c:5207 src/readelf.c:5982 src/readelf.c:6483
-#: src/readelf.c:6598 src/readelf.c:6770
+#: src/readelf.c:4678 src/readelf.c:4832 src/readelf.c:5408 src/readelf.c:6362
+#: src/readelf.c:6894 src/readelf.c:7014 src/readelf.c:7177 src/readelf.c:7602
 #, c-format
 msgid ""
 "\n"
 "DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:4730 src/readelf.c:6508
+#: src/readelf.c:4691 src/readelf.c:6388
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+
+#: src/readelf.c:4695 src/readelf.c:5432 src/readelf.c:6399
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr ""
+
+#: src/readelf.c:4711
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Length:        %6<PRIu64>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4723
+#, fuzzy, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4727
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4738
+#, fuzzy, c-format
+msgid " CU offset:     %6<PRIx64>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4744
+#, c-format
+msgid " Address size:  %6<PRIu64>\n"
+msgstr ""
+
+#: src/readelf.c:4748
+#, fuzzy, c-format
+msgid "unsupported address size"
+msgstr "Kein Adress-Wert"
+
+#: src/readelf.c:4753
+#, c-format
+msgid ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+msgstr ""
+
+#: src/readelf.c:4757
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4797
+#, fuzzy, c-format
+msgid "   %s..%s (%<PRIx64>)\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4800
+#, fuzzy, c-format
+msgid "   %s..%s\n"
+msgstr " [%6tx]  %s..%s\n"
+
+#: src/readelf.c:4809
+#, c-format
+msgid "   %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4827
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr ""
+
+#: src/readelf.c:4857 src/readelf.c:6921
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:4752 src/readelf.c:6530
+#: src/readelf.c:4879 src/readelf.c:6943
 #, c-format
 msgid " [%6tx]  base address %s\n"
 msgstr ""
 
-#: src/readelf.c:4758 src/readelf.c:6536
+#: src/readelf.c:4886 src/readelf.c:6950
 #, fuzzy, c-format
 msgid " [%6tx]  empty list\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:4767
+#: src/readelf.c:4897
 #, c-format
 msgid " [%6tx]  %s..%s\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:4769
+#: src/readelf.c:4899
 #, c-format
 msgid "           %s..%s\n"
 msgstr "           %s..%s\n"
 
-#: src/readelf.c:5196 src/readelf.c:6838 src/readelf.c:6940 src/readelf.c:7098
-#, c-format
-msgid "cannot get %s content: %s"
+#: src/readelf.c:5078
+msgid "         <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:5203
+#: src/readelf.c:5387
+#, fuzzy, c-format
+msgid "cannot get ELF: %s"
+msgstr "ELF Kopf konnte nicht ausgelesen werden"
+
+#: src/readelf.c:5404
 #, c-format
 msgid ""
 "\n"
 "Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:5231 src/readelf.c:6017
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:5253
+#: src/readelf.c:5454
 #, c-format
 msgid ""
 "\n"
 " [%6tx] Zero terminator\n"
 msgstr ""
 
-#: src/readelf.c:5338
+#: src/readelf.c:5547 src/readelf.c:5702
 #, fuzzy, c-format
 msgid "invalid augmentation length"
 msgstr "ungültige Abschnittsausrichtung"
 
-#: src/readelf.c:5350
+#: src/readelf.c:5562
 msgid "FDE address encoding: "
 msgstr ""
 
-#: src/readelf.c:5356
+#: src/readelf.c:5568
 msgid "LSDA pointer encoding: "
 msgstr ""
 
-#: src/readelf.c:5454
+#: src/readelf.c:5679
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr ""
 
-#: src/readelf.c:5461
+#: src/readelf.c:5686
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr ""
 
-#: src/readelf.c:5488
+#: src/readelf.c:5723
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:5539
+#: src/readelf.c:5778
 #, c-format
 msgid "cannot get attribute code: %s"
 msgstr ""
 
-#: src/readelf.c:5548
+#: src/readelf.c:5787
 #, c-format
 msgid "cannot get attribute form: %s"
 msgstr ""
 
-#: src/readelf.c:5563
+#: src/readelf.c:5802
 #, c-format
 msgid "cannot get attribute value: %s"
 msgstr ""
 
-#: src/readelf.c:5819
+#: src/readelf.c:6101
 #, c-format
 msgid ""
 "\n"
@@ -4873,7 +5076,7 @@
 " [Offset]\n"
 msgstr ""
 
-#: src/readelf.c:5851
+#: src/readelf.c:6133
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -4882,7 +5085,7 @@
 " Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:5860
+#: src/readelf.c:6142
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -4890,44 +5093,45 @@
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 msgstr ""
 
-#: src/readelf.c:5886
+#: src/readelf.c:6167
 #, c-format
 msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
 msgstr ""
 
-#: src/readelf.c:5898
+#: src/readelf.c:6181
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr ""
 
-#: src/readelf.c:5907
+#: src/readelf.c:6190
 #, c-format
 msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
 msgstr ""
 
-#: src/readelf.c:5938
+#: src/readelf.c:6222
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr ""
 
-#: src/readelf.c:5946
+#: src/readelf.c:6230
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr ""
 
-#: src/readelf.c:5995
+#: src/readelf.c:6266
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+
+#: src/readelf.c:6375
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr ""
 
-#: src/readelf.c:6008
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-
-#: src/readelf.c:6063
+#: src/readelf.c:6445
 #, c-format
 msgid ""
 "\n"
@@ -4944,184 +5148,249 @@
 "Opcodes:\n"
 msgstr ""
 
-#: src/readelf.c:6084
+#: src/readelf.c:6466
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr ""
 
-#: src/readelf.c:6099
+#: src/readelf.c:6481
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:6107
+#: src/readelf.c:6489
 msgid ""
 "\n"
 "Directory table:"
 msgstr ""
 
-#: src/readelf.c:6123
+#: src/readelf.c:6505
 msgid ""
 "\n"
 "File name table:\n"
 " Entry Dir   Time      Size      Name"
 msgstr ""
 
-#: src/readelf.c:6152
+#: src/readelf.c:6540
 msgid ""
 "\n"
 "Line number statements:"
 msgstr ""
 
-#: src/readelf.c:6228
+#: src/readelf.c:6591
+#, c-format
+msgid "invalid maximum operations per instruction is zero"
+msgstr ""
+
+#: src/readelf.c:6627
 #, c-format
 msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:6233
+#: src/readelf.c:6632
 #, c-format
 msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:6253
+#: src/readelf.c:6652
 #, c-format
 msgid " extended opcode %u: "
 msgstr ""
 
-#: src/readelf.c:6258
+#: src/readelf.c:6657
 msgid " end of sequence"
 msgstr ""
 
-#: src/readelf.c:6275
+#: src/readelf.c:6676
 #, c-format
 msgid " set address to %s\n"
 msgstr ""
 
-#: src/readelf.c:6296
+#: src/readelf.c:6703
 #, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
 
-#: src/readelf.c:6309
+#: src/readelf.c:6716
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr ""
 
-#: src/readelf.c:6314
+#: src/readelf.c:6721
 #, fuzzy
 msgid " unknown opcode"
 msgstr "unbekannter Typ"
 
-#: src/readelf.c:6326
+#: src/readelf.c:6733
 msgid " copy"
 msgstr ""
 
-#: src/readelf.c:6337
+#: src/readelf.c:6744
 #, c-format
 msgid " advance address by %u to %s, op_index to %u\n"
 msgstr ""
 
-#: src/readelf.c:6341
+#: src/readelf.c:6748
 #, c-format
 msgid " advance address by %u to %s\n"
 msgstr ""
 
-#: src/readelf.c:6352
+#: src/readelf.c:6759
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:6360
+#: src/readelf.c:6767
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:6370
+#: src/readelf.c:6777
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:6377
+#: src/readelf.c:6784
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr ""
 
-#: src/readelf.c:6383
+#: src/readelf.c:6790
 msgid " set basic block flag"
 msgstr ""
 
-#: src/readelf.c:6392
+#: src/readelf.c:6803
 #, c-format
 msgid " advance address by constant %u to %s, op_index to %u\n"
 msgstr ""
 
-#: src/readelf.c:6396
+#: src/readelf.c:6807
 #, c-format
 msgid " advance address by constant %u to %s\n"
 msgstr ""
 
-#: src/readelf.c:6414
+#: src/readelf.c:6825
 #, c-format
 msgid " advance address by fixed value %u to %s\n"
 msgstr ""
 
-#: src/readelf.c:6423
+#: src/readelf.c:6834
 msgid " set prologue end flag"
 msgstr ""
 
-#: src/readelf.c:6428
+#: src/readelf.c:6839
 msgid " set epilogue begin flag"
 msgstr ""
 
-#: src/readelf.c:6437
+#: src/readelf.c:6848
 #, c-format
 msgid " set isa to %u\n"
 msgstr ""
 
-#: src/readelf.c:6446
+#: src/readelf.c:6857
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:6478
+#: src/readelf.c:6889
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr ""
 
-#: src/readelf.c:6548
+#: src/readelf.c:6964
 #, c-format
 msgid " [%6tx]  %s..%s"
 msgstr " [%6tx]  %s..%s"
 
-#: src/readelf.c:6550
+#: src/readelf.c:6966
 #, c-format
 msgid "           %s..%s"
 msgstr "           %s..%s"
 
-#: src/readelf.c:6557
+#: src/readelf.c:6973 src/readelf.c:7858
 msgid "   <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:6609
+#: src/readelf.c:7025 src/readelf.c:7186
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr ""
 
-#: src/readelf.c:6688
+#: src/readelf.c:7104
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr ""
 
-#: src/readelf.c:6756
+#: src/readelf.c:7127
+#, c-format
+msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
+msgstr ""
+
+#: src/readelf.c:7227
+#, fuzzy, c-format
+msgid " Offset:             0x%<PRIx64>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:7239
+#, fuzzy, c-format
+msgid " Version:            %<PRIu16>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:7245 src/readelf.c:7968
+#, c-format
+msgid "  unknown version, cannot parse section\n"
+msgstr ""
+
+#: src/readelf.c:7252
+#, fuzzy, c-format
+msgid " Flag:               0x%<PRIx8>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:7255
+#, c-format
+msgid " Offset length:      %<PRIu8>\n"
+msgstr ""
+
+#: src/readelf.c:7263
+#, c-format
+msgid " .debug_line offset: 0x%<PRIx64>\n"
+msgstr ""
+
+#: src/readelf.c:7276
+#, c-format
+msgid "  extension opcode table, %<PRIu8> items:\n"
+msgstr ""
+
+#: src/readelf.c:7283
+#, c-format
+msgid "    [%<PRIx8>]"
+msgstr ""
+
+#: src/readelf.c:7295
+#, c-format
+msgid " %<PRIu8> arguments:"
+msgstr ""
+
+#: src/readelf.c:7323
+#, c-format
+msgid " no arguments."
+msgstr ""
+
+#: src/readelf.c:7560
+#, c-format
+msgid "vendor opcode not verified?"
+msgstr ""
+
+#: src/readelf.c:7588
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
 
-#: src/readelf.c:6796
+#: src/readelf.c:7629
 #, c-format
 msgid ""
 "\n"
@@ -5129,47 +5398,47 @@
 " %*s  String\n"
 msgstr ""
 
-#: src/readelf.c:6810
+#: src/readelf.c:7643
 #, c-format
 msgid " *** error while reading strings: %s\n"
 msgstr ""
 
-#: src/readelf.c:6830
+#: src/readelf.c:7663
 #, c-format
 msgid ""
 "\n"
 "Call frame search table section [%2zu] '.eh_frame_hdr':\n"
 msgstr ""
 
-#: src/readelf.c:6932
+#: src/readelf.c:7765
 #, c-format
 msgid ""
 "\n"
 "Exception handling table section [%2zu] '.gcc_except_table':\n"
 msgstr ""
 
-#: src/readelf.c:6955
+#: src/readelf.c:7788
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr ""
 
-#: src/readelf.c:6967
+#: src/readelf.c:7800
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr ""
 
-#: src/readelf.c:6981
+#: src/readelf.c:7815
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr ""
 
-#: src/readelf.c:6994
+#: src/readelf.c:7828
 msgid ""
 "\n"
 " Call site table:"
 msgstr ""
 
-#: src/readelf.c:7008
+#: src/readelf.c:7842
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5178,791 +5447,819 @@
 "        Action:            %u\n"
 msgstr ""
 
-#: src/readelf.c:7068
+#: src/readelf.c:7909
 #, c-format
 msgid "invalid TType encoding"
 msgstr ""
 
-#: src/readelf.c:7089
+#: src/readelf.c:7930
 #, c-format
 msgid ""
 "\n"
 "GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
 msgstr ""
 
-#: src/readelf.c:7118
+#: src/readelf.c:7959
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:7124
-#, c-format
-msgid "  unknown version, cannot parse section\n"
-msgstr ""
-
-#: src/readelf.c:7133
+#: src/readelf.c:7977
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7140
+#: src/readelf.c:7984
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7147
+#: src/readelf.c:7991
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7154
+#: src/readelf.c:7998
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7161
+#: src/readelf.c:8005
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7168
+#: src/readelf.c:8012
 #, c-format
 msgid ""
 "\n"
 " CU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:7190
+#: src/readelf.c:8034
 #, c-format
 msgid ""
 "\n"
 " TU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:7216
+#: src/readelf.c:8060
 #, c-format
 msgid ""
 "\n"
 " Address list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:7243
+#: src/readelf.c:8089
 #, c-format
 msgid ""
 "\n"
 " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
 msgstr ""
 
-#: src/readelf.c:7296
+#: src/readelf.c:8176
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:7445 src/readelf.c:8046
+#: src/readelf.c:8336 src/readelf.c:8942 src/readelf.c:9053 src/readelf.c:9111
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr ""
 
-#: src/readelf.c:7786
+#: src/readelf.c:8683
 #, c-format
 msgid ""
 "\n"
 "%*s... <repeats %u more times> ..."
 msgstr ""
 
-#: src/readelf.c:8145
+#: src/readelf.c:9190
 msgid "  Owner          Data size  Type\n"
 msgstr ""
 
-#: src/readelf.c:8163
+#: src/readelf.c:9208
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr ""
 
-#: src/readelf.c:8197
+#: src/readelf.c:9258
 #, c-format
 msgid "cannot get content of note section: %s"
 msgstr ""
 
-#: src/readelf.c:8224
+#: src/readelf.c:9285
 #, c-format
 msgid ""
 "\n"
 "Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:8247
+#: src/readelf.c:9308
 #, c-format
 msgid ""
 "\n"
 "Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:8293
+#: src/readelf.c:9354
 #, c-format
 msgid ""
 "\n"
 "Section [%Zu] '%s' has no data to dump.\n"
 msgstr ""
 
-#: src/readelf.c:8299 src/readelf.c:8322
+#: src/readelf.c:9360 src/readelf.c:9383
 #, c-format
 msgid "cannot get data for section [%Zu] '%s': %s"
 msgstr ""
 
-#: src/readelf.c:8303
+#: src/readelf.c:9364
 #, c-format
 msgid ""
 "\n"
 "Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:8316
+#: src/readelf.c:9377
 #, c-format
 msgid ""
 "\n"
 "Section [%Zu] '%s' has no strings to dump.\n"
 msgstr ""
 
-#: src/readelf.c:8326
+#: src/readelf.c:9387
 #, c-format
 msgid ""
 "\n"
 "String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:8374
+#: src/readelf.c:9435
 #, c-format
 msgid ""
 "\n"
 "section [%lu] does not exist"
 msgstr ""
 
-#: src/readelf.c:8403
+#: src/readelf.c:9464
 #, c-format
 msgid ""
 "\n"
 "section '%s' does not exist"
 msgstr ""
 
-#: src/readelf.c:8460
+#: src/readelf.c:9521
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr ""
 
-#: src/readelf.c:8463
+#: src/readelf.c:9524
 #, c-format
 msgid ""
 "\n"
 "Archive '%s' has no symbol index\n"
 msgstr ""
 
-#: src/readelf.c:8467
+#: src/readelf.c:9528
 #, c-format
 msgid ""
 "\n"
 "Index of archive '%s' has %Zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:8485
+#: src/readelf.c:9546
 #, c-format
 msgid "cannot extract member at offset %Zu in '%s': %s"
 msgstr ""
 
-#: src/readelf.c:8490
+#: src/readelf.c:9551
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr ""
 
-#: src/size.c:68
+#: src/size.c:60
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd' or `sysv'.  The default "
 "is `bsd'"
 msgstr ""
 
-#: src/size.c:70
+#: src/size.c:62
 msgid "Same as `--format=sysv'"
 msgstr "Genau wie `--format=sysv'"
 
-#: src/size.c:71
+#: src/size.c:63
 msgid "Same as `--format=bsd'"
 msgstr "Genau wie `--format=bsd'"
 
-#: src/size.c:74
+#: src/size.c:66
 msgid "Same as `--radix=10'"
 msgstr "Genau wie `--radix=10'"
 
-#: src/size.c:75
+#: src/size.c:67
 msgid "Same as `--radix=8'"
 msgstr "Genau wie `--radix=8'"
 
-#: src/size.c:76
+#: src/size.c:68
 msgid "Same as `--radix=16'"
 msgstr "Genau wie `--radix=16'"
 
-#: src/size.c:78
+#: src/size.c:70
 msgid "Similar to `--format=sysv' output but in one line"
 msgstr ""
 
-#: src/size.c:82
+#: src/size.c:74
 msgid "Print size and permission flags for loadable segments"
 msgstr ""
 
-#: src/size.c:83
+#: src/size.c:75
 msgid "Display the total sizes (bsd only)"
 msgstr ""
 
-#: src/size.c:88
+#: src/size.c:80
 msgid "List section sizes of FILEs (a.out by default)."
 msgstr ""
 
-#: src/size.c:269
+#: src/size.c:261
 #, c-format
 msgid "Invalid format: %s"
 msgstr "Ungültiges Format: %s"
 
-#: src/size.c:280
+#: src/size.c:272
 #, c-format
 msgid "Invalid radix: %s"
 msgstr ""
 
-#: src/size.c:339
+#: src/size.c:331
 #, c-format
 msgid "%s: file format not recognized"
 msgstr ""
 
-#: src/size.c:446 src/size.c:589
+#: src/size.c:437 src/size.c:570
 #, c-format
 msgid " (ex %s)"
 msgstr ""
 
-#: src/size.c:614
+#: src/size.c:595
 msgid "(TOTALS)\n"
 msgstr ""
 
-#: src/strings.c:70
+#: src/strings.c:62
 msgid "Output Selection:"
 msgstr ""
 
-#: src/strings.c:71
+#: src/strings.c:63
 msgid "Scan entire file, not only loaded sections"
 msgstr ""
 
-#: src/strings.c:73
+#: src/strings.c:65
 msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 msgstr ""
 
-#: src/strings.c:74
+#: src/strings.c:66
 msgid ""
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
 msgstr ""
 
-#: src/strings.c:78
+#: src/strings.c:70
 msgid "Print name of the file before each string."
 msgstr ""
 
-#: src/strings.c:80
+#: src/strings.c:72
 msgid "Print location of the string in base 8, 10, or 16 respectively."
 msgstr ""
 
-#: src/strings.c:81
+#: src/strings.c:73
 msgid "Alias for --radix=o"
 msgstr "Alias für --radix=o"
 
-#: src/strings.c:88
+#: src/strings.c:80
 msgid "Print the strings of printable characters in files."
 msgstr ""
 
-#: src/strings.c:268 src/strings.c:303
+#: src/strings.c:267 src/strings.c:302
 #, c-format
 msgid "invalid value '%s' for %s parameter"
 msgstr ""
 
-#: src/strings.c:314
+#: src/strings.c:313
 #, c-format
 msgid "invalid minimum length of matched string size"
 msgstr ""
 
-#: src/strings.c:599
+#: src/strings.c:596
 #, c-format
 msgid "lseek64 failed"
 msgstr "lseek64 fehlgeschlagen"
 
-#: src/strings.c:616 src/strings.c:680
+#: src/strings.c:613 src/strings.c:677
 #, c-format
 msgid "re-mmap failed"
 msgstr "re-mmap fehlgeschlagen"
 
-#: src/strings.c:653
+#: src/strings.c:650
 #, c-format
 msgid "mprotect failed"
 msgstr "mprotect fehlgeschlagen"
 
-#: src/strip.c:77
+#: src/strip.c:69
 msgid "Place stripped output into FILE"
 msgstr ""
 
-#: src/strip.c:78
+#: src/strip.c:70
 msgid "Extract the removed sections into FILE"
 msgstr ""
 
-#: src/strip.c:79
+#: src/strip.c:71
 msgid "Embed name FILE instead of -f argument"
 msgstr ""
 
-#: src/strip.c:83
+#: src/strip.c:75
 msgid "Remove all debugging symbols"
 msgstr ""
 
-#: src/strip.c:87
+#: src/strip.c:79
 msgid "Remove section headers (not recommended)"
 msgstr ""
 
-#: src/strip.c:89
+#: src/strip.c:81
 msgid "Copy modified/access timestamps to the output"
 msgstr ""
 
-#: src/strip.c:91
+#: src/strip.c:83
 msgid ""
 "Resolve all trivial relocations between debug sections if the removed "
 "sections are placed in a debug file (only relevant for ET_REL files, "
 "operation is not reversable, needs -f)"
 msgstr ""
 
-#: src/strip.c:93
+#: src/strip.c:85
 msgid "Remove .comment section"
 msgstr ""
 
-#: src/strip.c:96
+#: src/strip.c:88
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr ""
 
-#: src/strip.c:101
+#: src/strip.c:93
 msgid "Discard symbols from object files."
 msgstr ""
 
-#: src/strip.c:189
+#: src/strip.c:181
 #, c-format
 msgid "--reloc-debug-sections used without -f"
 msgstr ""
 
-#: src/strip.c:203
+#: src/strip.c:195
 #, c-format
 msgid "Only one input file allowed together with '-o' and '-f'"
 msgstr ""
 
-#: src/strip.c:239
+#: src/strip.c:231
 #, c-format
 msgid "-f option specified twice"
 msgstr ""
 
-#: src/strip.c:248
+#: src/strip.c:240
 #, c-format
 msgid "-F option specified twice"
 msgstr ""
 
-#: src/strip.c:257 src/unstrip.c:125
+#: src/strip.c:249 src/unstrip.c:121
 #, c-format
 msgid "-o option specified twice"
 msgstr ""
 
-#: src/strip.c:281
+#: src/strip.c:273
 #, c-format
 msgid "-R option supports only .comment section"
 msgstr ""
 
-#: src/strip.c:323 src/strip.c:347
+#: src/strip.c:315 src/strip.c:339
 #, c-format
 msgid "cannot stat input file '%s'"
 msgstr ""
 
-#: src/strip.c:337
+#: src/strip.c:329
 #, c-format
 msgid "while opening '%s'"
 msgstr ""
 
-#: src/strip.c:375
+#: src/strip.c:367
 #, c-format
 msgid "%s: cannot use -o or -f when stripping archive"
 msgstr ""
 
-#: src/strip.c:475
+#: src/strip.c:468
 #, c-format
 msgid "cannot open EBL backend"
 msgstr ""
 
-#: src/strip.c:525 src/strip.c:549
+#: src/strip.c:508
+#, fuzzy, c-format
+msgid "cannot get number of phdrs"
+msgstr "konnte Programm-Kopf nicht erstellen: %s"
+
+#: src/strip.c:523 src/strip.c:547
 #, c-format
 msgid "cannot create new file '%s': %s"
 msgstr ""
 
-#: src/strip.c:609
+#: src/strip.c:613
 #, c-format
 msgid "illformed file '%s'"
 msgstr ""
 
-#: src/strip.c:913 src/strip.c:1002
+#: src/strip.c:935 src/strip.c:1024
 #, c-format
 msgid "while generating output file: %s"
 msgstr ""
 
-#: src/strip.c:975 src/strip.c:1937
+#: src/strip.c:997 src/strip.c:1962
 #, c-format
 msgid "%s: error while creating ELF header: %s"
 msgstr ""
 
-#: src/strip.c:989
+#: src/strip.c:1011
 #, c-format
 msgid "while preparing output for '%s'"
 msgstr ""
 
-#: src/strip.c:1040 src/strip.c:1096
+#: src/strip.c:1062 src/strip.c:1119
 #, c-format
 msgid "while create section header section: %s"
 msgstr ""
 
-#: src/strip.c:1046
+#: src/strip.c:1068
 #, c-format
 msgid "cannot allocate section data: %s"
 msgstr ""
 
-#: src/strip.c:1105
+#: src/strip.c:1128
 #, c-format
 msgid "while create section header string table: %s"
 msgstr ""
 
-#: src/strip.c:1732
+#: src/strip.c:1757
 #, fuzzy, c-format
 msgid "bad relocation"
 msgstr "Relocations anzeigen"
 
-#: src/strip.c:1849 src/strip.c:1959
+#: src/strip.c:1874 src/strip.c:1984
 #, c-format
 msgid "while writing '%s': %s"
 msgstr ""
 
-#: src/strip.c:1860
+#: src/strip.c:1885
 #, c-format
 msgid "while creating '%s'"
 msgstr ""
 
-#: src/strip.c:1882
+#: src/strip.c:1907
 #, c-format
 msgid "while computing checksum for debug information"
 msgstr ""
 
-#: src/strip.c:1945
+#: src/strip.c:1970
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr ""
 
-#: src/strip.c:1984 src/strip.c:2004
+#: src/strip.c:2009 src/strip.c:2029
 #, fuzzy, c-format
 msgid "while writing '%s'"
 msgstr "beim Schliessen von '%s'"
 
-#: src/strip.c:2038 src/strip.c:2045
+#: src/strip.c:2066 src/strip.c:2073
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr ""
 
-#: src/strip.c:2068 src/strip.c:2125
+#: src/strip.c:2096 src/strip.c:2153
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr ""
 
-#: src/unstrip.c:78
+#: src/unstrip.c:70
 msgid "Match MODULE against file names, not module names"
 msgstr ""
 
-#: src/unstrip.c:79
+#: src/unstrip.c:71
 msgid "Silently skip unfindable files"
 msgstr ""
 
-#: src/unstrip.c:82
+#: src/unstrip.c:74
 msgid "Place output into FILE"
 msgstr ""
 
-#: src/unstrip.c:84
+#: src/unstrip.c:76
 msgid "Create multiple output files under DIRECTORY"
 msgstr ""
 
-#: src/unstrip.c:85
+#: src/unstrip.c:77
 msgid "Use module rather than file names"
 msgstr ""
 
-#: src/unstrip.c:87
+#: src/unstrip.c:79
 msgid "Create output for modules that have no separate debug information"
 msgstr ""
 
-#: src/unstrip.c:90
+#: src/unstrip.c:82
 msgid "Apply relocations to section contents in ET_REL files"
 msgstr ""
 
-#: src/unstrip.c:92
+#: src/unstrip.c:84
 msgid "Only list module and file names, build IDs"
 msgstr ""
 
-#: src/unstrip.c:134
+#: 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:166
+#: src/unstrip.c:165
 #, c-format
 msgid "only one of -o or -d allowed"
 msgstr "nur entweder -o oder -d erlaubt"
 
-#: src/unstrip.c:175
+#: 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:190
+#: src/unstrip.c:189
 #, c-format
 msgid "output directory '%s'"
 msgstr "Ausgabeverzeichnis '%s'"
 
-#: src/unstrip.c:199
+#: src/unstrip.c:198
 #, c-format
 msgid "exactly two file arguments are required"
 msgstr "genau zwei Datei-Argumente werden benötigt"
 
-#: src/unstrip.c:205
+#: src/unstrip.c:204
 #, c-format
 msgid "-m, -a, -R, and -i options not allowed with explicit files"
 msgstr ""
 
-#: src/unstrip.c:218
+#: src/unstrip.c:217
 #, c-format
 msgid "-o or -d is required when using implicit files"
 msgstr ""
 
-#: src/unstrip.c:254
+#: src/unstrip.c:253
 #, c-format
 msgid "cannot create ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:259
+#: src/unstrip.c:258
 #, c-format
 msgid "cannot copy ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:264 src/unstrip.c:1828
+#: src/unstrip.c:262 src/unstrip.c:1832 src/unstrip.c:1876
+#, fuzzy, c-format
+msgid "cannot get number of program headers: %s"
+msgstr "konnte Programm-Kopf nicht erstellen: %s"
+
+#: src/unstrip.c:267 src/unstrip.c:1836
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/unstrip.c:270
+#: src/unstrip.c:273
 #, c-format
 msgid "cannot copy program header: %s"
 msgstr "konnte Programm-Kopf nicht kopieren: %s"
 
-#: src/unstrip.c:280
+#: src/unstrip.c:283
 #, c-format
 msgid "cannot copy section header: %s"
 msgstr ""
 
-#: src/unstrip.c:283 src/unstrip.c:1509
+#: src/unstrip.c:286 src/unstrip.c:1513
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:285 src/unstrip.c:1511
+#: src/unstrip.c:288 src/unstrip.c:1515
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "konnte Abschnittsdaten nicht kopieren: %s"
 
-#: src/unstrip.c:309
+#: src/unstrip.c:312
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "konnte Verzeichnis nicht erstellen: %s"
 
-#: src/unstrip.c:349 src/unstrip.c:766 src/unstrip.c:1543
+#: src/unstrip.c:352 src/unstrip.c:769 src/unstrip.c:1547
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s"
 
-#: src/unstrip.c:365 src/unstrip.c:583 src/unstrip.c:604 src/unstrip.c:616
-#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
+#: src/unstrip.c:368 src/unstrip.c:586 src/unstrip.c:607 src/unstrip.c:619
+#: src/unstrip.c:1568 src/unstrip.c:1698 src/unstrip.c:1722
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "konnte Symboltabelle nicht aktualisieren: %s"
 
-#: src/unstrip.c:375
+#: src/unstrip.c:378
 #, c-format
 msgid "cannot update section header: %s"
 msgstr ""
 
-#: src/unstrip.c:414 src/unstrip.c:425
+#: src/unstrip.c:417 src/unstrip.c:428
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr ""
 
-#: src/unstrip.c:512
+#: src/unstrip.c:515
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr ""
 
-#: src/unstrip.c:524
+#: src/unstrip.c:527
 #, c-format
 msgid "unexpected section type in [%Zu] with sh_link to symtab"
 msgstr ""
 
-#: src/unstrip.c:772
+#: src/unstrip.c:775
 #, c-format
 msgid "invalid string offset in symbol [%Zu]"
 msgstr ""
 
-#: src/unstrip.c:914 src/unstrip.c:1254
+#: src/unstrip.c:917 src/unstrip.c:1258
 #, c-format
 msgid "cannot read section [%Zu] name: %s"
 msgstr ""
 
-#: src/unstrip.c:955 src/unstrip.c:974 src/unstrip.c:1007
+#: src/unstrip.c:958 src/unstrip.c:977 src/unstrip.c:1010
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr ""
 
-#: src/unstrip.c:995
+#: src/unstrip.c:998
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr ""
 
-#: src/unstrip.c:1050 src/unstrip.c:1374
+#: src/unstrip.c:1053 src/unstrip.c:1378
 #, c-format
 msgid "cannot find matching section for [%Zu] '%s'"
 msgstr ""
 
-#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
+#: src/unstrip.c:1178 src/unstrip.c:1193 src/unstrip.c:1459
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1198
+#: src/unstrip.c:1202
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr ""
 
-#: src/unstrip.c:1225 src/unstrip.c:1229
+#: src/unstrip.c:1229 src/unstrip.c:1233
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr ""
 
-#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
+#: src/unstrip.c:1237 src/unstrip.c:1241 src/unstrip.c:1474
 #, c-format
 msgid "cannot get section count: %s"
 msgstr ""
 
-#: src/unstrip.c:1240
+#: src/unstrip.c:1244
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 
-#: src/unstrip.c:1299 src/unstrip.c:1389
+#: src/unstrip.c:1303 src/unstrip.c:1393
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1449
+#: src/unstrip.c:1453
 #, c-format
 msgid "cannot add new section: %s"
 msgstr ""
 
-#: src/unstrip.c:1551
+#: src/unstrip.c:1555
 #, c-format
 msgid "symbol [%Zu] has invalid section index"
 msgstr ""
 
-#: src/unstrip.c:1789
+#: src/unstrip.c:1793
 #, fuzzy, c-format
 msgid "cannot read section data: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:1810
+#: src/unstrip.c:1814
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:1838
+#: src/unstrip.c:1846
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "konnte Programm-Kopf nicht aktualisieren: %s"
 
-#: src/unstrip.c:1843 src/unstrip.c:1922
+#: src/unstrip.c:1851 src/unstrip.c:1934
 #, c-format
 msgid "cannot write output file: %s"
 msgstr ""
 
-#: src/unstrip.c:1891
+#: src/unstrip.c:1903
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:1894
+#: src/unstrip.c:1906
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:1913 src/unstrip.c:1953 src/unstrip.c:1965 src/unstrip.c:2045
+#: src/unstrip.c:1925 src/unstrip.c:1976 src/unstrip.c:1988 src/unstrip.c:2074
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr ""
 
-#: src/unstrip.c:1971
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
+#: src/unstrip.c:1967
+msgid "WARNING: "
 msgstr ""
 
-#: src/unstrip.c:2002
+#: src/unstrip.c:1969
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1992
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1995
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1998
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:2001
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2031
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2006
+#: src/unstrip.c:2035
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2021
+#: src/unstrip.c:2050
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2025
+#: src/unstrip.c:2054
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2038
+#: src/unstrip.c:2067
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr ""
 
-#: src/unstrip.c:2069
+#: src/unstrip.c:2098
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2202
+#: src/unstrip.c:2231
 #, c-format
 msgid "no matching modules found"
 msgstr "kein passendes Modul gefunden"
 
-#: src/unstrip.c:2211
+#: src/unstrip.c:2240
 #, c-format
 msgid "matched more than one module"
 msgstr "mehr als ein passendes Modul"
 
-#: src/unstrip.c:2258
+#: src/unstrip.c:2287
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 msgstr ""
 
-#: src/unstrip.c:2259
+#: src/unstrip.c:2288
 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"
@@ -5989,6 +6286,30 @@
 "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"
+
+#~ msgid "unknown user tag %hx"
+#~ msgstr "unbekannter Benutzer-Tag %hx"
+
+#~ msgid "unknown attribute %hx"
+#~ msgstr "unbekanntes Attribut %hx"
+
+#~ msgid "unknown user attribute %hx"
+#~ msgstr "unbekanntes Benutzer-Attribut %hx"
+
+#, fuzzy
+#~ msgid "unknown form %#<PRIx64>"
+#~ msgstr "unbekannte Form %<PRIx64>"
+
 #~ msgid ""
 #~ "\n"
 #~ "\n"
diff --git a/src/po/elfutils.pot b/src/po/elfutils.pot
index 4b2f264..2aef0f5 100644
--- a/src/po/elfutils.pot
+++ b/src/po/elfutils.pot
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: elfutils 0.153\n"
+"Project-Id-Version: elfutils 0.161\n"
 "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-02-16 13:21+0100\n"
+"POT-Creation-Date: 2014-12-19 21:45+0100\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"
@@ -18,618 +18,692 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2844
-#: src/readelf.c:3183 src/unstrip.c:2098 src/unstrip.c:2306
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3182
+#: src/readelf.c:3559 src/readelf.c:8285 src/unstrip.c:2127 src/unstrip.c:2335
 #, c-format
 msgid "memory exhausted"
 msgstr ""
 
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
+#: 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:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
+#: libelf/elf_error.c:91
 msgid "out of memory"
 msgstr ""
 
-#: libasm/asm_error.c:64 src/ldgeneric.c:2685
+#: libasm/asm_error.c:67 src/ldgeneric.c:2677
 #, c-format
 msgid "cannot create output file"
 msgstr ""
 
-#: libasm/asm_error.c:65
+#: libasm/asm_error.c:68
 msgid "invalid parameter"
 msgstr ""
 
-#: libasm/asm_error.c:66
+#: libasm/asm_error.c:69
 msgid "cannot change mode of output file"
 msgstr ""
 
-#: libasm/asm_error.c:67 src/ldgeneric.c:6998
+#: libasm/asm_error.c:70 src/ldgeneric.c:6990
 #, c-format
 msgid "cannot rename output file"
 msgstr ""
 
-#: libasm/asm_error.c:68
+#: libasm/asm_error.c:71
 msgid "duplicate symbol"
 msgstr ""
 
-#: libasm/asm_error.c:69
+#: libasm/asm_error.c:72
 msgid "invalid section type for operation"
 msgstr ""
 
-#: libasm/asm_error.c:70
+#: libasm/asm_error.c:73
 msgid "error during output of data"
 msgstr ""
 
-#: libasm/asm_error.c:71
+#: libasm/asm_error.c:74
 msgid "no backend support available"
 msgstr ""
 
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
+#: libelf/elf_error.c:63
 msgid "unknown error"
 msgstr ""
 
-#: libdw/dwarf_error.c:81
+#: libdw/dwarf_error.c:60
 msgid "invalid access"
 msgstr ""
 
-#: libdw/dwarf_error.c:82
+#: libdw/dwarf_error.c:61
 msgid "no regular file"
 msgstr ""
 
-#: libdw/dwarf_error.c:83
+#: libdw/dwarf_error.c:62
 msgid "I/O error"
 msgstr ""
 
-#: libdw/dwarf_error.c:84
+#: libdw/dwarf_error.c:63
 msgid "invalid ELF file"
 msgstr ""
 
-#: libdw/dwarf_error.c:85
+#: libdw/dwarf_error.c:64
 msgid "no DWARF information"
 msgstr ""
 
-#: libdw/dwarf_error.c:86
+#: libdw/dwarf_error.c:65
 msgid "no ELF file"
 msgstr ""
 
-#: libdw/dwarf_error.c:87
+#: libdw/dwarf_error.c:66
 msgid "cannot get ELF header"
 msgstr ""
 
-#: libdw/dwarf_error.c:89
+#: libdw/dwarf_error.c:68
 msgid "not implemented"
 msgstr ""
 
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
+#: libdw/dwarf_error.c:69 libelf/elf_error.c:107 libelf/elf_error.c:155
 msgid "invalid command"
 msgstr ""
 
-#: libdw/dwarf_error.c:91
+#: libdw/dwarf_error.c:70
 msgid "invalid version"
 msgstr ""
 
-#: libdw/dwarf_error.c:92
+#: libdw/dwarf_error.c:71
 msgid "invalid file"
 msgstr ""
 
-#: libdw/dwarf_error.c:93
+#: libdw/dwarf_error.c:72
 msgid "no entries found"
 msgstr ""
 
-#: libdw/dwarf_error.c:94
+#: libdw/dwarf_error.c:73
 msgid "invalid DWARF"
 msgstr ""
 
-#: libdw/dwarf_error.c:95
+#: libdw/dwarf_error.c:74
 msgid "no string data"
 msgstr ""
 
-#: libdw/dwarf_error.c:96
+#: libdw/dwarf_error.c:75
 msgid "no address value"
 msgstr ""
 
-#: libdw/dwarf_error.c:97
+#: libdw/dwarf_error.c:76
 msgid "no constant value"
 msgstr ""
 
-#: libdw/dwarf_error.c:98
+#: libdw/dwarf_error.c:77
 msgid "no reference value"
 msgstr ""
 
-#: libdw/dwarf_error.c:99
+#: libdw/dwarf_error.c:78
 msgid "invalid reference value"
 msgstr ""
 
-#: libdw/dwarf_error.c:100
+#: libdw/dwarf_error.c:79
 msgid ".debug_line section missing"
 msgstr ""
 
-#: libdw/dwarf_error.c:101
+#: libdw/dwarf_error.c:80
 msgid "invalid .debug_line section"
 msgstr ""
 
-#: libdw/dwarf_error.c:102
+#: libdw/dwarf_error.c:81
 msgid "debug information too big"
 msgstr ""
 
-#: libdw/dwarf_error.c:103
+#: libdw/dwarf_error.c:82
 msgid "invalid DWARF version"
 msgstr ""
 
-#: libdw/dwarf_error.c:104
+#: libdw/dwarf_error.c:83
 msgid "invalid directory index"
 msgstr ""
 
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
 msgid "address out of range"
 msgstr ""
 
-#: libdw/dwarf_error.c:106
+#: libdw/dwarf_error.c:85
 msgid "no location list value"
 msgstr ""
 
-#: libdw/dwarf_error.c:107
+#: libdw/dwarf_error.c:86
 msgid "no block data"
 msgstr ""
 
-#: libdw/dwarf_error.c:108
+#: libdw/dwarf_error.c:87
 msgid "invalid line index"
 msgstr ""
 
-#: libdw/dwarf_error.c:109
+#: libdw/dwarf_error.c:88
 msgid "invalid address range index"
 msgstr ""
 
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
 msgid "no matching address range"
 msgstr ""
 
-#: libdw/dwarf_error.c:111
+#: libdw/dwarf_error.c:90
 msgid "no flag value"
 msgstr ""
 
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
+#: libdw/dwarf_error.c:91 libelf/elf_error.c:232
 msgid "invalid offset"
 msgstr ""
 
-#: libdw/dwarf_error.c:113
+#: libdw/dwarf_error.c:92
 msgid ".debug_ranges section missing"
 msgstr ""
 
-#: libdw/dwarf_error.c:114
+#: libdw/dwarf_error.c:93
 msgid "invalid CFI section"
 msgstr ""
 
-#: libdwfl/argp-std.c:67 src/unstrip.c:2248
+#: libdw/dwarf_error.c:94
+msgid "no alternative debug link found"
+msgstr ""
+
+#: libdw/dwarf_error.c:95
+msgid "invalid opcode"
+msgstr ""
+
+#: libdwfl/argp-std.c:46 src/unstrip.c:2277
 msgid "Input selection options:"
 msgstr ""
 
-#: libdwfl/argp-std.c:68
+#: libdwfl/argp-std.c:47
 msgid "Find addresses in FILE"
 msgstr ""
 
-#: libdwfl/argp-std.c:70
+#: libdwfl/argp-std.c:49
 msgid "Find addresses from signatures found in COREFILE"
 msgstr ""
 
-#: libdwfl/argp-std.c:72
+#: libdwfl/argp-std.c:51
 msgid "Find addresses in files mapped into process PID"
 msgstr ""
 
-#: libdwfl/argp-std.c:74
+#: libdwfl/argp-std.c:53
 msgid ""
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
 msgstr ""
 
-#: libdwfl/argp-std.c:76
+#: libdwfl/argp-std.c:55
 msgid "Find addresses in the running kernel"
 msgstr ""
 
-#: libdwfl/argp-std.c:78
+#: libdwfl/argp-std.c:57
 msgid "Kernel with all modules"
 msgstr ""
 
-#: libdwfl/argp-std.c:80
+#: libdwfl/argp-std.c:59
 msgid "Search path for separate debuginfo files"
 msgstr ""
 
-#: libdwfl/argp-std.c:163
+#: libdwfl/argp-std.c:157
 msgid "only one of -e, -p, -k, -K, or --core allowed"
 msgstr ""
 
-#: libdwfl/argp-std.c:223
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
+msgstr ""
+
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
+msgstr ""
+
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
+msgstr ""
+
+#: libdwfl/argp-std.c:290
 #, c-format
 msgid "cannot read ELF core file: %s"
 msgstr ""
 
-#: libdwfl/argp-std.c:241
+#: libdwfl/argp-std.c:311
 msgid "No modules recognized in core file"
 msgstr ""
 
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr ""
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr ""
-
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:56
 msgid "See errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:57
 msgid "See elf_errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:58
 msgid "See dwarf_errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:59
 msgid "See ebl_errno (XXX missing)"
 msgstr ""
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:60
 msgid "gzip decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:61
 msgid "bzip2 decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:62
 msgid "LZMA decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:63
 msgid "no support library found for machine"
 msgstr ""
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:64
 msgid "Callbacks missing for ET_REL file"
 msgstr ""
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:65
 msgid "Unsupported relocation type"
 msgstr ""
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:66
 msgid "r_offset is bogus"
 msgstr ""
 
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
 msgid "offset out of range"
 msgstr ""
 
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:68
 msgid "relocation refers to undefined symbol"
 msgstr ""
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:69
 msgid "Callback returned failure"
 msgstr ""
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:70
 msgid "No DWARF information found"
 msgstr ""
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:71
 msgid "No symbol table found"
 msgstr ""
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:72
 msgid "No ELF program headers"
 msgstr ""
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:73
 msgid "address range overlaps an existing module"
 msgstr ""
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:76
 msgid "image truncated"
 msgstr ""
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:77
 msgid "ELF file opened"
 msgstr ""
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:78
 msgid "not a valid ELF file"
 msgstr ""
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:79
 msgid "cannot handle DWARF type description"
 msgstr ""
 
-#: libdwfl/libdwflP.h:97
+#: libdwfl/libdwflP.h:80
 msgid "ELF file does not match build ID"
 msgstr ""
 
-#: libdwfl/libdwflP.h:98
+#: libdwfl/libdwflP.h:81
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr ""
 
-#: libebl/eblbackendname.c:63
+#: 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:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:94 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
+#: 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 "<unknown>"
 msgstr ""
 
-#: libebl/ebldynamictagname.c:126
+#: libebl/ebldynamictagname.c:105
 #, c-format
 msgid "<unknown>: %#<PRIx64>"
 msgstr ""
 
-#: libebl/eblobjnote.c:76
+#: libebl/eblobjnote.c:55
 #, c-format
 msgid "unknown SDT version %u\n"
 msgstr ""
 
-#: libebl/eblobjnote.c:94
+#: libebl/eblobjnote.c:73
 #, c-format
 msgid "invalid SDT probe descriptor\n"
 msgstr ""
 
-#: libebl/eblobjnote.c:144
+#: libebl/eblobjnote.c:123
 #, c-format
 msgid "    PC: "
 msgstr ""
 
-#: libebl/eblobjnote.c:146
+#: libebl/eblobjnote.c:125
 #, c-format
 msgid " Base: "
 msgstr ""
 
-#: libebl/eblobjnote.c:148
+#: libebl/eblobjnote.c:127
 #, c-format
 msgid " Semaphore: "
 msgstr ""
 
-#: libebl/eblobjnote.c:150
+#: libebl/eblobjnote.c:129
 #, c-format
 msgid "    Provider: "
 msgstr ""
 
-#: libebl/eblobjnote.c:152
+#: libebl/eblobjnote.c:131
 #, c-format
 msgid " Name: "
 msgstr ""
 
-#: libebl/eblobjnote.c:154
+#: libebl/eblobjnote.c:133
 #, c-format
 msgid " Args: "
 msgstr ""
 
-#: libebl/eblobjnote.c:164
+#: libebl/eblobjnote.c:143
 #, c-format
 msgid "    Build ID: "
 msgstr ""
 
-#: libebl/eblobjnote.c:175
+#: libebl/eblobjnote.c:154
 #, c-format
 msgid "    Linker version: %.*s\n"
 msgstr ""
 
-#: libebl/eblobjnote.c:224
+#: libebl/eblobjnote.c:203
 #, c-format
 msgid "    OS: %s, ABI: "
 msgstr ""
 
-#: libebl/eblosabiname.c:95
+#: libebl/eblosabiname.c:74
 msgid "Stand alone"
 msgstr ""
 
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
+#: libebl/eblsymbolbindingname.c:71 libebl/eblsymboltypename.c:77
 #, c-format
 msgid "<unknown>: %d"
 msgstr ""
 
-#: libelf/elf_error.c:88
+#: libelf/elf_error.c:67
 msgid "unknown version"
 msgstr ""
 
-#: libelf/elf_error.c:92
+#: libelf/elf_error.c:71
 msgid "unknown type"
 msgstr ""
 
-#: libelf/elf_error.c:96
+#: libelf/elf_error.c:75
 msgid "invalid `Elf' handle"
 msgstr ""
 
-#: libelf/elf_error.c:100
+#: libelf/elf_error.c:79
 msgid "invalid size of source operand"
 msgstr ""
 
-#: libelf/elf_error.c:104
+#: libelf/elf_error.c:83
 msgid "invalid size of destination operand"
 msgstr ""
 
-#: libelf/elf_error.c:108 src/readelf.c:5176
+#: libelf/elf_error.c:87 src/readelf.c:5367
 #, c-format
 msgid "invalid encoding"
 msgstr ""
 
-#: libelf/elf_error.c:116
+#: libelf/elf_error.c:95
 msgid "invalid file descriptor"
 msgstr ""
 
-#: libelf/elf_error.c:120
+#: libelf/elf_error.c:99
 msgid "invalid operation"
 msgstr ""
 
-#: libelf/elf_error.c:124
+#: libelf/elf_error.c:103
 msgid "ELF version not set"
 msgstr ""
 
-#: libelf/elf_error.c:136
+#: libelf/elf_error.c:115
 msgid "invalid fmag field in archive header"
 msgstr ""
 
-#: libelf/elf_error.c:140
+#: libelf/elf_error.c:119
 msgid "invalid archive file"
 msgstr ""
 
-#: libelf/elf_error.c:144
+#: libelf/elf_error.c:123
 msgid "descriptor is not for an archive"
 msgstr ""
 
-#: libelf/elf_error.c:148
+#: libelf/elf_error.c:127
 msgid "no index available"
 msgstr ""
 
-#: libelf/elf_error.c:152
+#: libelf/elf_error.c:131
 msgid "cannot read data from file"
 msgstr ""
 
-#: libelf/elf_error.c:156
+#: libelf/elf_error.c:135
 msgid "cannot write data to file"
 msgstr ""
 
-#: libelf/elf_error.c:160
+#: libelf/elf_error.c:139
 msgid "invalid binary class"
 msgstr ""
 
-#: libelf/elf_error.c:164
+#: libelf/elf_error.c:143
 msgid "invalid section index"
 msgstr ""
 
-#: libelf/elf_error.c:168
+#: libelf/elf_error.c:147
 msgid "invalid operand"
 msgstr ""
 
-#: libelf/elf_error.c:172
+#: libelf/elf_error.c:151
 msgid "invalid section"
 msgstr ""
 
-#: libelf/elf_error.c:180
+#: libelf/elf_error.c:159
 msgid "executable header not created first"
 msgstr ""
 
-#: libelf/elf_error.c:184
+#: libelf/elf_error.c:163
 msgid "file descriptor disabled"
 msgstr ""
 
-#: libelf/elf_error.c:188
+#: libelf/elf_error.c:167
 msgid "archive/member file descriptor mismatch"
 msgstr ""
 
-#: libelf/elf_error.c:196
+#: libelf/elf_error.c:175
 msgid "cannot manipulate null section"
 msgstr ""
 
-#: libelf/elf_error.c:200
+#: libelf/elf_error.c:179
 msgid "data/scn mismatch"
 msgstr ""
 
-#: libelf/elf_error.c:204
+#: libelf/elf_error.c:183
 msgid "invalid section header"
 msgstr ""
 
-#: libelf/elf_error.c:208 src/readelf.c:6850 src/readelf.c:6951
-#: src/readelf.c:7113
+#: libelf/elf_error.c:187 src/readelf.c:7235 src/readelf.c:7683
+#: src/readelf.c:7784 src/readelf.c:7954
 #, c-format
 msgid "invalid data"
 msgstr ""
 
-#: libelf/elf_error.c:212
+#: libelf/elf_error.c:191
 msgid "unknown data encoding"
 msgstr ""
 
-#: libelf/elf_error.c:216
+#: libelf/elf_error.c:195
 msgid "section `sh_size' too small for data"
 msgstr ""
 
-#: libelf/elf_error.c:220
+#: libelf/elf_error.c:199
 msgid "invalid section alignment"
 msgstr ""
 
-#: libelf/elf_error.c:224
+#: libelf/elf_error.c:203
 msgid "invalid section entry size"
 msgstr ""
 
-#: libelf/elf_error.c:228
+#: libelf/elf_error.c:207
 msgid "update() for write on read-only file"
 msgstr ""
 
-#: libelf/elf_error.c:232
+#: libelf/elf_error.c:211
 msgid "no such file"
 msgstr ""
 
-#: libelf/elf_error.c:236
+#: libelf/elf_error.c:215
 msgid "only relocatable files can contain section groups"
 msgstr ""
 
-#: libelf/elf_error.c:241
+#: libelf/elf_error.c:220
 msgid ""
 "program header only allowed in executables, shared objects, and core files"
 msgstr ""
 
-#: libelf/elf_error.c:248
+#: libelf/elf_error.c:227
 msgid "file has no program header"
 msgstr ""
 
-#: src/addr2line.c:66
+#: src/addr2line.c:58
 msgid "Output selection options:"
 msgstr ""
 
-#: src/addr2line.c:67
+#: src/addr2line.c:59
 msgid "Show only base names of source files"
 msgstr ""
 
-#: src/addr2line.c:69
+#: src/addr2line.c:61
 msgid "Show absolute file names using compilation directory"
 msgstr ""
 
-#: src/addr2line.c:70
+#: src/addr2line.c:62
 msgid "Also show function names"
 msgstr ""
 
-#: src/addr2line.c:71
+#: src/addr2line.c:63
 msgid "Also show symbol or section names"
 msgstr ""
 
-#: src/addr2line.c:72
+#: 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:74
+#: src/addr2line.c:67
 msgid "Treat addresses as offsets relative to NAME section."
 msgstr ""
 
-#: src/addr2line.c:76 src/elfcmp.c:80 src/findtextrel.c:75 src/nm.c:108
-#: src/strings.c:83
+#: 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:85
+#: src/addr2line.c:81
 msgid ""
 "Locate source files and line information for ADDRs (in a.out by default)."
 msgstr ""
 
-#: src/addr2line.c:89
+#: src/addr2line.c:85
 msgid "[ADDR...]"
 msgstr ""
 
-#: src/addr2line.c:189 src/ar.c:296 src/elfcmp.c:670 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:273 src/objdump.c:189
-#: src/ranlib.c:136 src/readelf.c:462 src/size.c:219 src/strings.c:227
-#: src/strip.c:221 src/unstrip.c:234
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:663 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: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"
@@ -637,3061 +711,3067 @@
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
 
-#: src/addr2line.c:194 src/ar.c:301 src/elfcmp.c:675 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:278 src/objdump.c:194
-#: src/ranlib.c:141 src/readelf.c:467 src/size.c:224 src/strings.c:232
-#: src/strip.c:226 src/unstrip.c:239
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:668 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: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:413
+#: src/addr2line.c:474
 #, c-format
 msgid "Section syntax requires exactly one module"
 msgstr ""
 
-#: src/addr2line.c:436
+#: src/addr2line.c:497
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside section '%s'"
 msgstr ""
 
-#: src/addr2line.c:477
+#: src/addr2line.c:563
 #, c-format
 msgid "cannot find symbol '%s'"
 msgstr ""
 
-#: src/addr2line.c:482
+#: src/addr2line.c:568
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
 msgstr ""
 
-#: src/ar.c:76
+#: src/ar.c:69
 msgid "Commands:"
 msgstr ""
 
-#: src/ar.c:77
+#: src/ar.c:70
 msgid "Delete files from archive."
 msgstr ""
 
-#: src/ar.c:78
+#: src/ar.c:71
 msgid "Move files in archive."
 msgstr ""
 
-#: src/ar.c:79
+#: src/ar.c:72
 msgid "Print files in archive."
 msgstr ""
 
-#: src/ar.c:80
+#: src/ar.c:73
 msgid "Quick append files to archive."
 msgstr ""
 
-#: src/ar.c:82
+#: src/ar.c:75
 msgid "Replace existing or insert new file into archive."
 msgstr ""
 
-#: src/ar.c:83
+#: src/ar.c:76
 msgid "Display content of archive."
 msgstr ""
 
-#: src/ar.c:84
+#: src/ar.c:77
 msgid "Extract files from archive."
 msgstr ""
 
-#: src/ar.c:86
+#: src/ar.c:79
 msgid "Command Modifiers:"
 msgstr ""
 
-#: src/ar.c:87
+#: src/ar.c:80
 msgid "Preserve original dates."
 msgstr ""
 
-#: src/ar.c:88
+#: src/ar.c:81
 msgid "Use instance [COUNT] of name."
 msgstr ""
 
-#: src/ar.c:90
+#: src/ar.c:83
 msgid "Do not replace existing files with extracted files."
 msgstr ""
 
-#: src/ar.c:91
+#: src/ar.c:84
 msgid "Allow filename to be truncated if necessary."
 msgstr ""
 
-#: src/ar.c:93
+#: src/ar.c:86
 msgid "Provide verbose output."
 msgstr ""
 
-#: src/ar.c:94
+#: src/ar.c:87
 msgid "Force regeneration of symbol table."
 msgstr ""
 
-#: src/ar.c:95
+#: src/ar.c:88
 msgid "Insert file after [MEMBER]."
 msgstr ""
 
-#: src/ar.c:96
+#: src/ar.c:89
 msgid "Insert file before [MEMBER]."
 msgstr ""
 
-#: src/ar.c:97
+#: src/ar.c:90
 msgid "Same as -b."
 msgstr ""
 
-#: src/ar.c:98
+#: src/ar.c:91
 msgid "Suppress message when library has to be created."
 msgstr ""
 
-#: src/ar.c:100
+#: src/ar.c:93
 msgid "Use full path for file matching."
 msgstr ""
 
-#: src/ar.c:101
+#: src/ar.c:94
 msgid "Update only older files in archive."
 msgstr ""
 
-#: src/ar.c:107
+#: src/ar.c:100
 msgid "Create, modify, and extract from archives."
 msgstr ""
 
-#: src/ar.c:110
+#: src/ar.c:103
 msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 msgstr ""
 
-#: src/ar.c:192
+#: src/ar.c:185
 #, c-format
 msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
 msgstr ""
 
-#: src/ar.c:197
+#: src/ar.c:190
 #, c-format
 msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
 msgstr ""
 
-#: src/ar.c:213
+#: src/ar.c:206
 #, c-format
 msgid "'N' is only meaningful with the 'x' and 'd' options"
 msgstr ""
 
-#: src/ar.c:218
+#: src/ar.c:211
 #, c-format
 msgid "COUNT parameter required"
 msgstr ""
 
-#: src/ar.c:230
+#: src/ar.c:223
 #, c-format
 msgid "invalid COUNT parameter %s"
 msgstr ""
 
-#: src/ar.c:237
+#: src/ar.c:230
 #, c-format
 msgid "'%c' is only meaningful with the 'x' option"
 msgstr ""
 
-#: src/ar.c:243
+#: src/ar.c:236
 #, c-format
 msgid "archive name required"
 msgstr ""
 
-#: src/ar.c:256
+#: src/ar.c:249
 #, c-format
 msgid "command option required"
 msgstr ""
 
-#: src/ar.c:321
+#: src/ar.c:314
 #, c-format
 msgid "More than one operation specified"
 msgstr ""
 
-#: src/ar.c:415
+#: src/ar.c:408
 #, c-format
 msgid "cannot open archive '%s'"
 msgstr ""
 
-#: src/ar.c:425
+#: src/ar.c:418
 #, c-format
 msgid "cannot open archive '%s': %s"
 msgstr ""
 
-#: src/ar.c:429
+#: src/ar.c:422
 #, c-format
 msgid "%s: not an archive file"
 msgstr ""
 
-#: src/ar.c:433
+#: src/ar.c:426
 #, c-format
 msgid "cannot stat archive '%s'"
 msgstr ""
 
-#: src/ar.c:445
+#: src/ar.c:438
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr ""
 
-#: src/ar.c:498 src/ar.c:940 src/ar.c:1140
+#: src/ar.c:491 src/ar.c:933 src/ar.c:1133
 #, c-format
 msgid "cannot create hash table"
 msgstr ""
 
-#: src/ar.c:505 src/ar.c:947 src/ar.c:1149
+#: src/ar.c:498 src/ar.c:940 src/ar.c:1142
 #, c-format
 msgid "cannot insert into hash table"
 msgstr ""
 
-#: src/ar.c:513 src/ranlib.c:176
+#: src/ar.c:506 src/ranlib.c:168
 #, c-format
 msgid "cannot stat '%s'"
 msgstr ""
 
-#: src/ar.c:609
+#: src/ar.c:602
 #, c-format
 msgid "cannot read content of %s: %s"
 msgstr ""
 
-#: src/ar.c:652
+#: src/ar.c:645
 #, c-format
 msgid "cannot open %.*s"
 msgstr ""
 
-#: src/ar.c:674
+#: src/ar.c:667
 #, c-format
 msgid "failed to write %s"
 msgstr ""
 
-#: src/ar.c:686
+#: src/ar.c:679
 #, c-format
 msgid "cannot change mode of %s"
 msgstr ""
 
-#: src/ar.c:702
+#: src/ar.c:695
 #, c-format
 msgid "cannot change modification time of %s"
 msgstr ""
 
-#: src/ar.c:748
+#: src/ar.c:741
 #, c-format
 msgid "cannot rename temporary file to %.*s"
 msgstr ""
 
-#: src/ar.c:784 src/ar.c:1032 src/ar.c:1431 src/ranlib.c:250
+#: src/ar.c:777 src/ar.c:1025 src/ar.c:1424 src/ranlib.c:242
 #, c-format
 msgid "cannot create new file"
 msgstr ""
 
-#: src/ar.c:1231
+#: src/ar.c:1224
 #, c-format
 msgid "position member %s not found"
 msgstr ""
 
-#: src/ar.c:1241
+#: src/ar.c:1234
 #, c-format
 msgid "%s: no entry %s in archive!\n"
 msgstr ""
 
-#: src/ar.c:1270 src/ldgeneric.c:517 src/objdump.c:265
+#: src/ar.c:1263 src/ldgeneric.c:509 src/objdump.c:257
 #, c-format
 msgid "cannot open %s"
 msgstr ""
 
-#: src/ar.c:1275
+#: src/ar.c:1268
 #, c-format
 msgid "cannot stat %s"
 msgstr ""
 
-#: src/ar.c:1281
+#: src/ar.c:1274
 #, c-format
 msgid "%s is no regular file"
 msgstr ""
 
-#: src/ar.c:1294
+#: src/ar.c:1287
 #, c-format
 msgid "cannot get ELF descriptor for %s: %s\n"
 msgstr ""
 
-#: src/ar.c:1314
+#: src/ar.c:1307
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: src/arlib.c:216
+#: src/arlib.c:209
 #, c-format
 msgid "the archive '%s' is too large"
 msgstr ""
 
-#: src/arlib.c:229
+#: src/arlib.c:222
 #, c-format
 msgid "cannot read ELF header of %s(%s): %s"
 msgstr ""
 
-#: src/elfcmp.c:70
+#: src/elfcmp.c:62
 msgid "Control options:"
 msgstr ""
 
-#: src/elfcmp.c:72
+#: src/elfcmp.c:64
 msgid "Output all differences, not just the first"
 msgstr ""
 
-#: src/elfcmp.c:73
+#: src/elfcmp.c:65
 msgid ""
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
 msgstr ""
 
-#: src/elfcmp.c:75
+#: src/elfcmp.c:67
 msgid "Ignore permutation of buckets in SHT_HASH section"
 msgstr ""
 
-#: src/elfcmp.c:77
+#: src/elfcmp.c:69
 msgid "Ignore differences in build ID"
 msgstr ""
 
-#: src/elfcmp.c:78
+#: src/elfcmp.c:70
 msgid "Output nothing; yield exit status only"
 msgstr ""
 
-#: src/elfcmp.c:85
+#: src/elfcmp.c:77
 msgid "Compare relevant parts of two ELF files for equality."
 msgstr ""
 
-#: src/elfcmp.c:89
+#: src/elfcmp.c:81
 msgid "FILE1 FILE2"
 msgstr ""
 
-#: src/elfcmp.c:151
+#: src/elfcmp.c:143
 msgid "Invalid number of parameters.\n"
 msgstr ""
 
-#: src/elfcmp.c:182 src/elfcmp.c:187
+#: src/elfcmp.c:174 src/elfcmp.c:179
 #, c-format
 msgid "cannot get ELF header of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:213
+#: src/elfcmp.c:205
 #, c-format
 msgid "%s %s diff: ELF header"
 msgstr ""
 
-#: src/elfcmp.c:220 src/elfcmp.c:223
+#: src/elfcmp.c:212 src/elfcmp.c:215
 #, c-format
 msgid "cannot get section count of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:228
+#: src/elfcmp.c:220
 #, c-format
 msgid "%s %s diff: section count"
 msgstr ""
 
-#: src/elfcmp.c:235 src/elfcmp.c:238
+#: src/elfcmp.c:227 src/elfcmp.c:230
 #, c-format
 msgid "cannot get program header count of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:243
+#: src/elfcmp.c:235
 #, c-format
 msgid "%s %s diff: program header count"
 msgstr ""
 
-#: src/elfcmp.c:300
+#: src/elfcmp.c:292
 #, c-format
 msgid "%s %s differ: section [%zu], [%zu] name"
 msgstr ""
 
-#: src/elfcmp.c:323
+#: src/elfcmp.c:315
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' header"
 msgstr ""
 
-#: src/elfcmp.c:331 src/elfcmp.c:337
+#: src/elfcmp.c:323 src/elfcmp.c:329
 #, c-format
 msgid "cannot get content of section %zu in '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:353 src/elfcmp.c:359
+#: src/elfcmp.c:345 src/elfcmp.c:351
 #, c-format
 msgid "cannot get symbol in '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:380
+#: src/elfcmp.c:373
 #, c-format
 msgid "%s %s differ: symbol table [%zu]"
 msgstr ""
 
-#: src/elfcmp.c:383
+#: src/elfcmp.c:376
 #, c-format
 msgid "%s %s differ: symbol table [%zu,%zu]"
 msgstr ""
 
-#: src/elfcmp.c:429 src/elfcmp.c:498
+#: src/elfcmp.c:422 src/elfcmp.c:491
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' number of notes"
 msgstr ""
 
-#: src/elfcmp.c:437
+#: src/elfcmp.c:430
 #, c-format
 msgid "cannot read note section [%zu] '%s' in '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:447
+#: src/elfcmp.c:440
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note name"
 msgstr ""
 
-#: src/elfcmp.c:455
+#: src/elfcmp.c:448
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' type"
 msgstr ""
 
-#: src/elfcmp.c:470
+#: src/elfcmp.c:463
 #, c-format
 msgid "%s %s differ: build ID length"
 msgstr ""
 
-#: src/elfcmp.c:478
+#: src/elfcmp.c:471
 #, c-format
 msgid "%s %s differ: build ID content"
 msgstr ""
 
-#: src/elfcmp.c:487
+#: src/elfcmp.c:480
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:527
+#: src/elfcmp.c:520
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:531
+#: src/elfcmp.c:524
 #, c-format
 msgid "%s %s differ: section [%zu,%zu] '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:546
+#: src/elfcmp.c:539
 #, c-format
 msgid "%s %s differ: unequal amount of important sections"
 msgstr ""
 
-#: src/elfcmp.c:579 src/elfcmp.c:584
+#: src/elfcmp.c:572 src/elfcmp.c:577
 #, c-format
 msgid "cannot load data of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:603 src/elfcmp.c:609
+#: src/elfcmp.c:596 src/elfcmp.c:602
 #, c-format
 msgid "cannot get program header entry %d of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:615
+#: src/elfcmp.c:608
 #, c-format
 msgid "%s %s differ: program header %d"
 msgstr ""
 
-#: src/elfcmp.c:639
+#: src/elfcmp.c:632
 #, c-format
 msgid "%s %s differ: gap"
 msgstr ""
 
-#: src/elfcmp.c:702
+#: src/elfcmp.c:695
 #, c-format
 msgid "Invalid value '%s' for --gaps parameter."
 msgstr ""
 
-#: src/elfcmp.c:730 src/findtextrel.c:229 src/ldgeneric.c:1765
-#: src/ldgeneric.c:4255 src/nm.c:389 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:458 src/strip.c:495 src/unstrip.c:1911
-#: src/unstrip.c:1940
+#: src/elfcmp.c:723 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:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1923
+#: src/unstrip.c:1952
 #, c-format
 msgid "cannot open '%s'"
 msgstr ""
 
-#: src/elfcmp.c:734 src/findtextrel.c:236 src/ranlib.c:186
+#: src/elfcmp.c:727 src/findtextrel.c:228 src/ranlib.c:178
 #, c-format
 msgid "cannot create ELF descriptor for '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:739
+#: src/elfcmp.c:732
 #, c-format
 msgid "cannot create EBL descriptor for '%s'"
 msgstr ""
 
-#: src/elfcmp.c:757
+#: src/elfcmp.c:750
 #, c-format
 msgid "cannot get section header of section %zu: %s"
 msgstr ""
 
-#: src/elfcmp.c:767
+#: src/elfcmp.c:760
 #, c-format
 msgid "cannot get content of section %zu: %s"
 msgstr ""
 
-#: src/elfcmp.c:777 src/elfcmp.c:791
+#: src/elfcmp.c:770 src/elfcmp.c:784
 #, c-format
 msgid "cannot get relocation: %s"
 msgstr ""
 
-#: src/elflint.c:72
+#: src/elflint.c:64
 msgid "Be extremely strict, flag level 2 features."
 msgstr ""
 
-#: src/elflint.c:73
+#: src/elflint.c:65
 msgid "Do not print anything if successful"
 msgstr ""
 
-#: src/elflint.c:74
+#: src/elflint.c:66
 msgid "Binary is a separate debuginfo file"
 msgstr ""
 
-#: src/elflint.c:76
+#: src/elflint.c:68
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
 msgstr ""
 
-#: src/elflint.c:82
+#: src/elflint.c:74
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr ""
 
-#: src/elflint.c:86 src/readelf.c:119
+#: src/elflint.c:78 src/readelf.c:123
 msgid "FILE..."
 msgstr ""
 
-#: src/elflint.c:159 src/readelf.c:275
+#: src/elflint.c:155 src/readelf.c:292
 #, c-format
 msgid "cannot open input file"
 msgstr ""
 
-#: src/elflint.c:166
+#: src/elflint.c:162
 #, c-format
 msgid "cannot generate Elf descriptor: %s\n"
 msgstr ""
 
-#: src/elflint.c:185
+#: src/elflint.c:181
 #, c-format
 msgid "error while closing Elf descriptor: %s\n"
 msgstr ""
 
-#: src/elflint.c:189
+#: src/elflint.c:185
 msgid "No errors"
 msgstr ""
 
-#: src/elflint.c:223 src/readelf.c:436
+#: src/elflint.c:219 src/readelf.c:468
 msgid "Missing file name.\n"
 msgstr ""
 
-#: src/elflint.c:302
+#: src/elflint.c:298
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr ""
 
-#: src/elflint.c:310
+#: 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:370
+#: src/elflint.c:371
 #, c-format
 msgid "e_ident[%d] == %d is no known class\n"
 msgstr ""
 
-#: src/elflint.c:375
+#: src/elflint.c:376
 #, c-format
 msgid "e_ident[%d] == %d is no known data encoding\n"
 msgstr ""
 
-#: src/elflint.c:379
+#: src/elflint.c:380
 #, c-format
 msgid "unknown ELF header version number e_ident[%d] == %d\n"
 msgstr ""
 
-#: src/elflint.c:385
+#: src/elflint.c:386
 #, c-format
 msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
 msgstr ""
 
-#: src/elflint.c:391
+#: src/elflint.c:392
 #, c-format
 msgid "unsupport ABI version e_ident[%d] == %d\n"
 msgstr ""
 
-#: src/elflint.c:396
+#: src/elflint.c:397
 #, c-format
 msgid "e_ident[%zu] is not zero\n"
 msgstr ""
 
-#: src/elflint.c:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr ""
 
-#: src/elflint.c:408
+#: src/elflint.c:409
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr ""
 
-#: src/elflint.c:412
+#: src/elflint.c:413
 #, c-format
 msgid "unknown object file version\n"
 msgstr ""
 
-#: src/elflint.c:418
+#: src/elflint.c:419
 #, c-format
 msgid "invalid program header offset\n"
 msgstr ""
 
-#: src/elflint.c:420
+#: src/elflint.c:421
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr ""
 
-#: src/elflint.c:432
+#: src/elflint.c:433
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr ""
 
-#: src/elflint.c:435
+#: src/elflint.c:436
 #, c-format
 msgid "section header table must be present\n"
 msgstr ""
 
-#: src/elflint.c:449
+#: src/elflint.c:450
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr ""
 
-#: src/elflint.c:466
+#: src/elflint.c:467
 #, c-format
 msgid "invalid section header index\n"
 msgstr ""
 
-#: src/elflint.c:480
+#: src/elflint.c:481
 #, c-format
 msgid "invalid number of program header table entries\n"
 msgstr ""
 
-#: src/elflint.c:489
+#: src/elflint.c:490
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr ""
 
-#: src/elflint.c:496 src/elflint.c:513
+#: src/elflint.c:497 src/elflint.c:514
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:499 src/elflint.c:516
+#: src/elflint.c:500 src/elflint.c:517
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:502 src/elflint.c:519
+#: src/elflint.c:503 src/elflint.c:520
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr ""
 
-#: src/elflint.c:505 src/elflint.c:522
+#: src/elflint.c:506 src/elflint.c:523
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:508 src/elflint.c:525
+#: src/elflint.c:509 src/elflint.c:526
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr ""
 
-#: src/elflint.c:569
+#: 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:573
+#: src/elflint.c:574
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
 msgstr ""
 
-#: src/elflint.c:589 src/elflint.c:1433 src/elflint.c:1483 src/elflint.c:1588
-#: src/elflint.c:2173 src/elflint.c:2687 src/elflint.c:2848 src/elflint.c:2978
-#: src/elflint.c:3150 src/elflint.c:4050
+#: 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:602 src/elflint.c:1595
+#: 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:625
+#: 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:636
+#: src/elflint.c:638
 #, c-format
 msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
 msgstr ""
 
-#: src/elflint.c:645
+#: src/elflint.c:647
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
+#: 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:668
+#: src/elflint.c:670
 #, c-format
 msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
 msgstr ""
 
-#: src/elflint.c:678
+#: src/elflint.c:680
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:687
+#: src/elflint.c:689
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr ""
 
-#: src/elflint.c:701
+#: 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:707
+#: 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:719
+#: src/elflint.c:722
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
 msgstr ""
 
-#: src/elflint.c:727
+#: src/elflint.c:730
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown type\n"
 msgstr ""
 
-#: src/elflint.c:733
+#: src/elflint.c:736
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
 msgstr ""
 
-#: src/elflint.c:738
+#: src/elflint.c:741
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
 msgstr ""
 
-#: src/elflint.c:746
+#: src/elflint.c:749
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
 msgstr ""
 
-#: src/elflint.c:750
+#: src/elflint.c:753
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
 msgstr ""
 
-#: src/elflint.c:754
+#: src/elflint.c:757
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
 msgstr ""
 
-#: src/elflint.c:786
+#: src/elflint.c:804
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:792 src/elflint.c:817 src/elflint.c:860
+#: 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:801
+#: 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:811 src/elflint.c:853
+#: 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:838
+#: 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:846
+#: 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:873
+#: 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:880
+#: 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:887
+#: src/elflint.c:905
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
 msgstr ""
 
-#: src/elflint.c:937
+#: src/elflint.c:955
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
 "[%2d]\n"
 msgstr ""
 
-#: src/elflint.c:944
+#: src/elflint.c:962
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
 "'%s'\n"
 msgstr ""
 
-#: src/elflint.c:960
+#: 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:967
+#: 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:975
+#: src/elflint.c:993
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
 "section\n"
 msgstr ""
 
-#: src/elflint.c:991
+#: 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:998
+#: 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:1011
+#: 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:1015
+#: src/elflint.c:1033
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
 msgstr ""
 
-#: src/elflint.c:1060
+#: src/elflint.c:1082
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
 msgstr ""
 
-#: src/elflint.c:1069 src/elflint.c:1121
+#: 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:1094 src/elflint.c:1146
+#: 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:1100 src/elflint.c:1152
+#: 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:1112
+#: src/elflint.c:1136
 #, c-format
 msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
 msgstr ""
 
-#: src/elflint.c:1194
+#: src/elflint.c:1218
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr ""
 
-#: src/elflint.c:1207
+#: src/elflint.c:1230
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr ""
 
-#: src/elflint.c:1215
+#: src/elflint.c:1238
 #, c-format
 msgid "section [%2d] '%s': sh_info should be zero\n"
 msgstr ""
 
-#: src/elflint.c:1222
+#: src/elflint.c:1245
 #, c-format
 msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
 msgstr ""
 
-#: src/elflint.c:1229
+#: src/elflint.c:1253
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
 msgstr ""
 
-#: src/elflint.c:1289
+#: src/elflint.c:1313
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr ""
 
-#: src/elflint.c:1316
+#: src/elflint.c:1340
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
 msgstr ""
 
-#: src/elflint.c:1324
+#: src/elflint.c:1348
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
 "type\n"
 msgstr ""
 
-#: src/elflint.c:1332
+#: src/elflint.c:1356
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
 msgstr ""
 
-#: src/elflint.c:1350
+#: 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:1367
+#: src/elflint.c:1391
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:1382
+#: src/elflint.c:1406
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
 "%s\n"
 msgstr ""
 
-#: src/elflint.c:1403
+#: 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:1418
+#: src/elflint.c:1442
 #, c-format
 msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
 msgstr ""
 
-#: src/elflint.c:1457 src/elflint.c:1507
+#: src/elflint.c:1482 src/elflint.c:1533
 #, c-format
 msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1583
+#: src/elflint.c:1609
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr ""
 
-#: src/elflint.c:1601
+#: src/elflint.c:1628
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
 msgstr ""
 
-#: src/elflint.c:1606 src/elflint.c:1889
+#: src/elflint.c:1633 src/elflint.c:1918
 #, c-format
 msgid "section [%2d] '%s': sh_info not zero\n"
 msgstr ""
 
-#: src/elflint.c:1616
+#: src/elflint.c:1643
 #, c-format
 msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1624
+#: src/elflint.c:1651
 #, c-format
 msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
 msgstr ""
 
-#: src/elflint.c:1631
+#: src/elflint.c:1658
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr ""
 
-#: src/elflint.c:1642
+#: src/elflint.c:1669
 #, c-format
 msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
 msgstr ""
 
-#: src/elflint.c:1652
+#: src/elflint.c:1679
 #, c-format
 msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
 msgstr ""
 
-#: src/elflint.c:1670
+#: 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:1683
+#: 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:1726
+#: src/elflint.c:1753
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:1741
+#: 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:1761 src/elflint.c:1789
+#: 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:1773
+#: src/elflint.c:1800
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr ""
 
-#: src/elflint.c:1782
+#: src/elflint.c:1809
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr ""
 
-#: src/elflint.c:1797 src/elflint.c:1804
+#: 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:1814 src/elflint.c:1818
+#: 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:1824
+#: src/elflint.c:1851
 #, c-format
 msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
 msgstr ""
 
-#: src/elflint.c:1835 src/elflint.c:1839 src/elflint.c:1843 src/elflint.c:1847
+#: 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:1859
+#: src/elflint.c:1886
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
 msgstr ""
 
-#: src/elflint.c:1869
+#: src/elflint.c:1896
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1874
+#: src/elflint.c:1901
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr ""
 
-#: src/elflint.c:1877
+#: src/elflint.c:1904
 #, c-format
 msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
 msgstr ""
 
-#: src/elflint.c:1884
+#: src/elflint.c:1913
 #, c-format
 msgid "section [%2d] '%s': extended index table too small for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1899
+#: 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:1910
+#: src/elflint.c:1945
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr ""
 
-#: src/elflint.c:1922
+#: src/elflint.c:1957
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr ""
 
-#: src/elflint.c:1927
+#: src/elflint.c:1962
 #, c-format
 msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
 msgstr ""
 
-#: src/elflint.c:1943 src/elflint.c:1984
+#: 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:1955 src/elflint.c:1996
+#: src/elflint.c:1990 src/elflint.c:2041
 #, c-format
 msgid "section [%2d] '%s': chain array too large\n"
 msgstr ""
 
-#: src/elflint.c:1964 src/elflint.c:2005
+#: 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:1970
+#: src/elflint.c:2014
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2011
+#: src/elflint.c:2065
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2026
+#: src/elflint.c:2081
 #, c-format
 msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
 msgstr ""
 
-#: src/elflint.c:2037
+#: 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:2045
+#: src/elflint.c:2100
 #, c-format
 msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
 msgstr ""
 
-#: src/elflint.c:2077
+#: 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:2098
+#: 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:2109
+#: 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:2140
+#: src/elflint.c:2195
 #, c-format
 msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2145
+#: 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:2151
+#: src/elflint.c:2206
 #, c-format
 msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
 msgstr ""
 
-#: src/elflint.c:2164
+#: src/elflint.c:2219
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
 
-#: src/elflint.c:2182
+#: src/elflint.c:2237
 #, c-format
 msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2190
+#: src/elflint.c:2245
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr ""
 
-#: src/elflint.c:2195
+#: src/elflint.c:2250
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr ""
 
-#: src/elflint.c:2200
+#: 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:2248
+#: src/elflint.c:2303
 #, c-format
 msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
 msgstr ""
 
-#: src/elflint.c:2326 src/elflint.c:2330
+#: src/elflint.c:2381 src/elflint.c:2385
 #, c-format
 msgid "section [%2zu] '%s': reference to symbol index 0\n"
 msgstr ""
 
-#: src/elflint.c:2337
+#: 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:2349
+#: 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:2365
+#: src/elflint.c:2420
 #, c-format
 msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
 msgstr ""
 
-#: src/elflint.c:2385
+#: src/elflint.c:2440
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
 msgstr ""
 
-#: src/elflint.c:2396
+#: src/elflint.c:2451
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr ""
 
-#: src/elflint.c:2401
+#: src/elflint.c:2456
 #, c-format
 msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2407
+#: src/elflint.c:2462
 #, c-format
 msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
 msgstr ""
 
-#: src/elflint.c:2412
+#: src/elflint.c:2467
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr ""
 
-#: src/elflint.c:2419
+#: src/elflint.c:2474
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr ""
 
-#: src/elflint.c:2424
+#: src/elflint.c:2479
 #, c-format
 msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
 msgstr ""
 
-#: src/elflint.c:2430
+#: src/elflint.c:2485
 #, c-format
 msgid "section [%2d] '%s': sh_flags not set correctly\n"
 msgstr ""
 
-#: src/elflint.c:2436
+#: src/elflint.c:2491
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr ""
 
-#: src/elflint.c:2445
+#: src/elflint.c:2500
 #, c-format
 msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
 msgstr ""
 
-#: src/elflint.c:2450
+#: src/elflint.c:2505
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr ""
 
-#: src/elflint.c:2456
+#: src/elflint.c:2511
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr ""
 
-#: src/elflint.c:2460
+#: src/elflint.c:2515
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr ""
 
-#: src/elflint.c:2471
+#: src/elflint.c:2526
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr ""
 
-#: src/elflint.c:2483
+#: src/elflint.c:2538
 #, c-format
 msgid "section [%2d] '%s': section index %Zu out of range\n"
 msgstr ""
 
-#: src/elflint.c:2492
+#: src/elflint.c:2547
 #, c-format
 msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:2499
+#: src/elflint.c:2554
 #, c-format
 msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2505
+#: 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:2512
+#: src/elflint.c:2567
 #, c-format
 msgid "section [%2d] '%s' is contained in more than one section group\n"
 msgstr ""
 
-#: src/elflint.c:2701
+#: 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:2712
+#: 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:2728
+#: src/elflint.c:2784
 #, c-format
 msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
 msgstr ""
 
-#: src/elflint.c:2744
+#: src/elflint.c:2800
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
 msgstr ""
 
-#: src/elflint.c:2752
+#: src/elflint.c:2808
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
 msgstr ""
 
-#: src/elflint.c:2766
+#: src/elflint.c:2822
 #, c-format
 msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
 msgstr ""
 
-#: src/elflint.c:2771
+#: src/elflint.c:2827
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
 msgstr ""
 
-#: src/elflint.c:2781
+#: src/elflint.c:2837
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
 msgstr ""
 
-#: src/elflint.c:2833
+#: src/elflint.c:2889
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr ""
 
-#: src/elflint.c:2841 src/elflint.c:2970
+#: 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:2864 src/elflint.c:3022
+#: 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:2870 src/elflint.c:3028
+#: 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:2878
+#: src/elflint.c:2934
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid file reference\n"
 msgstr ""
 
-#: src/elflint.c:2886
+#: src/elflint.c:2942
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr ""
 
-#: src/elflint.c:2898
+#: src/elflint.c:2954
 #, c-format
 msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:2905
+#: 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:2912
+#: 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:2922
+#: 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:2933
+#: 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:2949 src/elflint.c:3107
+#: 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:2962
+#: src/elflint.c:3018
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr ""
 
-#: src/elflint.c:3007
+#: src/elflint.c:3063
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3011
+#: src/elflint.c:3067
 #, c-format
 msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
 msgstr ""
 
-#: src/elflint.c:3017
+#: src/elflint.c:3073
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:3041
+#: src/elflint.c:3097
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid name reference\n"
 msgstr ""
 
-#: src/elflint.c:3048
+#: src/elflint.c:3104
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
 msgstr ""
 
-#: src/elflint.c:3057
+#: src/elflint.c:3113
 #, c-format
 msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3076
+#: src/elflint.c:3132
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3091
+#: src/elflint.c:3147
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3113
+#: src/elflint.c:3169
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3129
+#: src/elflint.c:3185
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3142
+#: src/elflint.c:3198
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr ""
 
-#: src/elflint.c:3163
+#: src/elflint.c:3219
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr ""
 
-#: src/elflint.c:3179
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3188
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3200
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
-#: src/elflint.c:3217
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-msgstr ""
-
-#: src/elflint.c:3226
-#, c-format
-msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
-msgstr ""
-
 #: src/elflint.c:3235
 #, c-format
 msgid ""
+"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3244
+#, c-format
+msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3256
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
+msgstr ""
+
+#: src/elflint.c:3273
+#, c-format
+msgid ""
+"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
+msgstr ""
+
+#: src/elflint.c:3282
+#, c-format
+msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3291
+#, c-format
+msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
 msgstr ""
 
-#: src/elflint.c:3248
+#: src/elflint.c:3304
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
 msgstr ""
 
-#: src/elflint.c:3259
+#: src/elflint.c:3315
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3277
+#: src/elflint.c:3333
 #, c-format
 msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
 msgstr ""
 
-#: src/elflint.c:3288
+#: src/elflint.c:3344
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
 msgstr ""
 
-#: src/elflint.c:3301
+#: src/elflint.c:3357
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3305
+#: src/elflint.c:3361
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:3315
+#: src/elflint.c:3371
 #, c-format
 msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
 msgstr ""
 
-#: src/elflint.c:3321
+#: src/elflint.c:3377
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
 msgstr ""
 
-#: src/elflint.c:3410
+#: src/elflint.c:3466
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr ""
 
-#: src/elflint.c:3414
+#: src/elflint.c:3470
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr ""
 
-#: src/elflint.c:3416
+#: src/elflint.c:3472
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr ""
 
-#: src/elflint.c:3418
+#: src/elflint.c:3474
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr ""
 
-#: src/elflint.c:3420
+#: src/elflint.c:3476
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr ""
 
-#: src/elflint.c:3422
+#: src/elflint.c:3478
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr ""
 
-#: src/elflint.c:3424
+#: src/elflint.c:3480
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr ""
 
-#: src/elflint.c:3426
+#: src/elflint.c:3482
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr ""
 
-#: src/elflint.c:3429
+#: 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:3433
+#: 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:3437
+#: 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:3454
+#: src/elflint.c:3510
 #, c-format
 msgid "cannot get section header for section [%2zu] '%s': %s\n"
 msgstr ""
 
-#: src/elflint.c:3463
+#: src/elflint.c:3519
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr ""
 
-#: src/elflint.c:3490
+#: src/elflint.c:3546
 #, c-format
 msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3506
+#: src/elflint.c:3562
 #, c-format
 msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3523
+#: 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:3541
+#: src/elflint.c:3597
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr ""
 
-#: src/elflint.c:3547 src/elflint.c:3579
+#: 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:3552 src/elflint.c:3584
+#: 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:3560
+#: src/elflint.c:3616
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
 msgstr ""
 
-#: src/elflint.c:3603
+#: src/elflint.c:3659
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr ""
 
-#: src/elflint.c:3608
+#: src/elflint.c:3664
 #, c-format
 msgid "cannot get section header\n"
 msgstr ""
 
-#: src/elflint.c:3618
+#: src/elflint.c:3674
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr ""
 
-#: src/elflint.c:3632
+#: src/elflint.c:3688
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3639
+#: src/elflint.c:3695
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3647
+#: src/elflint.c:3703
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 
-#: src/elflint.c:3655
+#: src/elflint.c:3711
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 
-#: src/elflint.c:3660
+#: src/elflint.c:3716
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 
-#: src/elflint.c:3667
+#: src/elflint.c:3723
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr ""
 
-#: src/elflint.c:3672
+#: src/elflint.c:3728
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 
-#: src/elflint.c:3690
+#: src/elflint.c:3746
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr ""
 
-#: src/elflint.c:3699
+#: src/elflint.c:3755
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr ""
 
-#: src/elflint.c:3726
+#: 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:3734
+#: 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:3743
+#: 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:3754
+#: src/elflint.c:3812
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:3764
+#: src/elflint.c:3822
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:3774
+#: 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:3780
+#: 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:3788
+#: src/elflint.c:3846
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
 msgstr ""
 
-#: src/elflint.c:3839
+#: src/elflint.c:3897
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr ""
 
-#: src/elflint.c:3862
+#: src/elflint.c:3920
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr ""
 
-#: src/elflint.c:3873
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
 msgstr ""
 
-#: src/elflint.c:3879
+#: src/elflint.c:3937
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 
-#: src/elflint.c:3890
+#: 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:3903
+#: src/elflint.c:3961
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr ""
 
-#: src/elflint.c:3917
+#: src/elflint.c:3975
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 
-#: src/elflint.c:3966
+#: src/elflint.c:4024
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:3970
+#: src/elflint.c:4028
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:3993
+#: src/elflint.c:4051
 #, c-format
 msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:3997
+#: src/elflint.c:4055
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:4014
+#: src/elflint.c:4072
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4033
+#: src/elflint.c:4091
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr ""
 
-#: src/elflint.c:4036
+#: src/elflint.c:4094
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4057
+#: src/elflint.c:4115
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4064
+#: src/elflint.c:4122
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr ""
 
-#: src/elflint.c:4067
+#: src/elflint.c:4125
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4085
+#: src/elflint.c:4143
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
 msgstr ""
 
-#: src/elflint.c:4100
+#: src/elflint.c:4158
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:4109
+#: src/elflint.c:4167
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:4120
+#: src/elflint.c:4178
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4128
+#: src/elflint.c:4186
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4135
+#: src/elflint.c:4193
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr ""
 
-#: src/elflint.c:4149
+#: src/elflint.c:4207
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4152
+#: src/elflint.c:4210
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4162
+#: src/elflint.c:4220
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4183
+#: src/elflint.c:4241
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 
-#: src/elflint.c:4186
+#: src/elflint.c:4244
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4194 src/elflint.c:4217
+#: src/elflint.c:4252 src/elflint.c:4275
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4223
+#: src/elflint.c:4281
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 
-#: src/elflint.c:4247
+#: src/elflint.c:4305
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4250
+#: src/elflint.c:4308
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4263
+#: src/elflint.c:4321
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr ""
 
-#: src/elflint.c:4271
+#: src/elflint.c:4329
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4274
+#: src/elflint.c:4332
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4278
+#: src/elflint.c:4336
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4281
+#: src/elflint.c:4339
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4286
+#: src/elflint.c:4344
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4289
+#: src/elflint.c:4347
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4300
+#: src/elflint.c:4358
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr ""
 
-#: src/elflint.c:4307
+#: src/elflint.c:4365
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr ""
 
-#: src/elflint.c:4310
+#: 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:4323
+#: 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:4357
+#: src/elflint.c:4415
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr ""
 
-#: src/elflint.c:4383
+#: src/elflint.c:4441
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
 
-#: src/findtextrel.c:70
+#: src/findtextrel.c:62
 msgid "Input Selection:"
 msgstr ""
 
-#: src/findtextrel.c:71
+#: src/findtextrel.c:63
 msgid "Prepend PATH to all file names"
 msgstr ""
 
-#: src/findtextrel.c:73
+#: src/findtextrel.c:65
 msgid "Use PATH as root of debuginfo hierarchy"
 msgstr ""
 
-#: src/findtextrel.c:80
+#: src/findtextrel.c:72
 msgid "Locate source of text relocations in FILEs (a.out by default)."
 msgstr ""
 
-#: src/findtextrel.c:84 src/nm.c:116 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:104
+#: src/findtextrel.c:76 src/nm.c:108 src/objdump.c:72 src/size.c:84
+#: src/strings.c:84 src/strip.c:96
 msgid "[FILE...]"
 msgstr ""
 
-#: src/findtextrel.c:246
+#: src/findtextrel.c:238
 #, c-format
 msgid "cannot get ELF header '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:257
+#: src/findtextrel.c:249
 #, c-format
 msgid "'%s' is not a DSO or PIE"
 msgstr ""
 
-#: src/findtextrel.c:277
+#: src/findtextrel.c:269
 #, c-format
 msgid "getting get section header of section %zu: %s"
 msgstr ""
 
-#: src/findtextrel.c:300
+#: src/findtextrel.c:292
 #, c-format
 msgid "cannot read dynamic section: %s"
 msgstr ""
 
-#: src/findtextrel.c:321
+#: src/findtextrel.c:313
 #, c-format
 msgid "no text relocations reported in '%s'"
 msgstr ""
 
-#: src/findtextrel.c:333
+#: src/findtextrel.c:325
 #, c-format
 msgid "while reading ELF file"
 msgstr ""
 
-#: src/findtextrel.c:342 src/findtextrel.c:359
+#: src/findtextrel.c:329
 #, c-format
-msgid "cannot get program header index at offset %d: %s"
+msgid "cannot get program header count: %s"
 msgstr ""
 
-#: src/findtextrel.c:411
+#: src/findtextrel.c:340 src/findtextrel.c:357
+#, c-format
+msgid "cannot get program header index at offset %zd: %s"
+msgstr ""
+
+#: src/findtextrel.c:409
 #, c-format
 msgid "cannot get section header of section %Zu: %s"
 msgstr ""
 
-#: src/findtextrel.c:423
+#: src/findtextrel.c:421
 #, c-format
 msgid "cannot get symbol table section %zu in '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:443 src/findtextrel.c:466
+#: src/findtextrel.c:441 src/findtextrel.c:464
 #, c-format
 msgid "cannot get relocation at index %d in section %zu in '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:531
+#: src/findtextrel.c:529
 #, c-format
 msgid "%s not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:584
+#: src/findtextrel.c:582
 #, c-format
 msgid ""
 "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:591 src/findtextrel.c:611
+#: src/findtextrel.c:589 src/findtextrel.c:609
 #, c-format
 msgid ""
 "the file containing the function '%s' might not be compiled with -fpic/-"
 "fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:599
+#: src/findtextrel.c:597
 #, c-format
 msgid ""
 "either the file containing the function '%s' or the file containing the "
 "function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:619
+#: src/findtextrel.c:617
 #, c-format
 msgid ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
 msgstr ""
 
-#: src/i386_ld.c:210
+#: src/i386_ld.c:202
 #, c-format
 msgid "cannot allocate PLT section: %s"
 msgstr ""
 
-#: src/i386_ld.c:232
+#: src/i386_ld.c:224
 #, c-format
 msgid "cannot allocate PLTREL section: %s"
 msgstr ""
 
-#: src/i386_ld.c:253
+#: src/i386_ld.c:245
 #, c-format
 msgid "cannot allocate GOT section: %s"
 msgstr ""
 
-#: src/i386_ld.c:274
+#: src/i386_ld.c:266
 #, c-format
 msgid "cannot allocate GOTPLT section: %s"
 msgstr ""
 
-#: src/i386_ld.c:661
+#: src/i386_ld.c:653
 #, c-format
 msgid "initial-executable TLS relocation cannot be used "
 msgstr ""
 
-#: src/ld.c:87
+#: src/ld.c:79
 msgid "Input File Control:"
 msgstr ""
 
-#: src/ld.c:89
+#: src/ld.c:81
 msgid "Include whole archives in the output from now on."
 msgstr ""
 
-#: src/ld.c:91
+#: src/ld.c:83
 msgid "Stop including the whole archives in the output."
 msgstr ""
 
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
+#: src/ld.c:84 src/ld.c:98 src/ld.c:176
 msgid "FILE"
 msgstr ""
 
-#: src/ld.c:93
+#: src/ld.c:85
 msgid "Start a group."
 msgstr ""
 
-#: src/ld.c:94
+#: src/ld.c:86
 msgid "End a group."
 msgstr ""
 
-#: src/ld.c:95
+#: src/ld.c:87
 msgid "PATH"
 msgstr ""
 
-#: src/ld.c:96
+#: src/ld.c:88
 msgid "Add PATH to list of directories files are searched in."
 msgstr ""
 
-#: src/ld.c:98
+#: src/ld.c:90
 msgid "Only set DT_NEEDED for following dynamic libs if actually used"
 msgstr ""
 
-#: src/ld.c:100
+#: src/ld.c:92
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr ""
 
-#: src/ld.c:102
+#: src/ld.c:94
 msgid "Ignore LD_LIBRARY_PATH environment variable."
 msgstr ""
 
-#: src/ld.c:105
+#: src/ld.c:97
 msgid "Output File Control:"
 msgstr ""
 
-#: src/ld.c:106
+#: src/ld.c:98
 msgid "Place output in FILE."
 msgstr ""
 
-#: src/ld.c:109
+#: src/ld.c:101
 msgid "Object is marked to not use default search path at runtime."
 msgstr ""
 
-#: src/ld.c:111
+#: src/ld.c:103
 msgid "Same as --whole-archive."
 msgstr ""
 
-#: src/ld.c:112
+#: src/ld.c:104
 msgid ""
 "Default rules of extracting from archive; weak references are not enough."
 msgstr ""
 
-#: src/ld.c:116
+#: src/ld.c:108
 msgid "Weak references cause extraction from archive."
 msgstr ""
 
-#: src/ld.c:118
+#: src/ld.c:110
 msgid "Allow multiple definitions; first is used."
 msgstr ""
 
-#: src/ld.c:120
+#: src/ld.c:112
 msgid "Disallow/allow undefined symbols in DSOs."
 msgstr ""
 
-#: src/ld.c:123
+#: src/ld.c:115
 msgid "Object requires immediate handling of $ORIGIN."
 msgstr ""
 
-#: src/ld.c:125
+#: src/ld.c:117
 msgid "Relocation will not be processed lazily."
 msgstr ""
 
-#: src/ld.c:127
+#: src/ld.c:119
 msgid "Object cannot be unloaded at runtime."
 msgstr ""
 
-#: src/ld.c:129
+#: src/ld.c:121
 msgid "Mark object to be initialized first."
 msgstr ""
 
-#: src/ld.c:131
+#: src/ld.c:123
 msgid "Enable/disable lazy-loading flag for following dependencies."
 msgstr ""
 
-#: src/ld.c:133
+#: src/ld.c:125
 msgid "Mark object as not loadable with 'dlopen'."
 msgstr ""
 
-#: src/ld.c:135
+#: src/ld.c:127
 msgid "Ignore/record dependencies on unused DSOs."
 msgstr ""
 
-#: src/ld.c:137
+#: src/ld.c:129
 msgid "Generated DSO will be a system library."
 msgstr ""
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "ADDRESS"
 msgstr ""
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "Set entry point address."
 msgstr ""
 
-#: src/ld.c:141
+#: src/ld.c:133
 msgid "Do not link against shared libraries."
 msgstr ""
 
-#: src/ld.c:144
+#: src/ld.c:136
 msgid "Prefer linking against shared libraries."
 msgstr ""
 
-#: src/ld.c:145
+#: src/ld.c:137
 msgid "Export all dynamic symbols."
 msgstr ""
 
-#: src/ld.c:146
+#: src/ld.c:138
 msgid "Strip all symbols."
 msgstr ""
 
-#: src/ld.c:147
+#: src/ld.c:139
 msgid "Strip debugging symbols."
 msgstr ""
 
-#: src/ld.c:149
+#: src/ld.c:141
 msgid "Assume pagesize for the target system to be SIZE."
 msgstr ""
 
-#: src/ld.c:151
+#: src/ld.c:143
 msgid "Set runtime DSO search path."
 msgstr ""
 
-#: src/ld.c:154
+#: src/ld.c:146
 msgid "Set link time DSO search path."
 msgstr ""
 
-#: src/ld.c:155
+#: src/ld.c:147
 msgid "Generate dynamic shared object."
 msgstr ""
 
-#: src/ld.c:156
+#: src/ld.c:148
 msgid "Generate relocatable object."
 msgstr ""
 
-#: src/ld.c:159
+#: src/ld.c:151
 msgid "Causes symbol not assigned to a version be reduced to local."
 msgstr ""
 
-#: src/ld.c:160
+#: src/ld.c:152
 msgid "Remove unused sections."
 msgstr ""
 
-#: src/ld.c:163
+#: src/ld.c:155
 msgid "Don't remove unused sections."
 msgstr ""
 
-#: src/ld.c:164
+#: src/ld.c:156
 msgid "Set soname of shared object."
 msgstr ""
 
-#: src/ld.c:165
+#: src/ld.c:157
 msgid "Set the dynamic linker name."
 msgstr ""
 
-#: src/ld.c:168
+#: src/ld.c:160
 msgid "Add/suppress addition indentifying link-editor to .comment section."
 msgstr ""
 
-#: src/ld.c:171
+#: src/ld.c:163
 msgid "Create .eh_frame_hdr section"
 msgstr ""
 
-#: src/ld.c:173
+#: src/ld.c:165
 msgid "Set hash style to sysv, gnu or both."
 msgstr ""
 
-#: src/ld.c:175
+#: src/ld.c:167
 msgid "Generate build ID note (md5, sha1 (default), uuid)."
 msgstr ""
 
-#: src/ld.c:177
+#: src/ld.c:169
 msgid "Linker Operation Control:"
 msgstr ""
 
-#: src/ld.c:178
+#: src/ld.c:170
 msgid "Verbose messages."
 msgstr ""
 
-#: src/ld.c:179
+#: src/ld.c:171
 msgid "Trace file opens."
 msgstr ""
 
-#: src/ld.c:181
+#: src/ld.c:173
 msgid "Trade speed for less memory usage"
 msgstr ""
 
-#: src/ld.c:182
+#: src/ld.c:174
 msgid "LEVEL"
 msgstr ""
 
-#: src/ld.c:183
+#: src/ld.c:175
 msgid "Set optimization level to LEVEL."
 msgstr ""
 
-#: src/ld.c:184
+#: src/ld.c:176
 msgid "Use linker script in FILE."
 msgstr ""
 
-#: src/ld.c:187
+#: src/ld.c:179
 msgid "Select to get parser debug information"
 msgstr ""
 
-#: src/ld.c:190
+#: src/ld.c:182
 msgid "Read version information from FILE."
 msgstr ""
 
-#: src/ld.c:191
+#: src/ld.c:183
 msgid "Set emulation to NAME."
 msgstr ""
 
-#: src/ld.c:197
+#: src/ld.c:189
 msgid "Combine object and archive files."
 msgstr ""
 
-#: src/ld.c:200
+#: src/ld.c:192
 msgid "[FILE]..."
 msgstr ""
 
-#: src/ld.c:333
+#: src/ld.c:325
 #, c-format
 msgid "At least one input file needed"
 msgstr ""
 
-#: src/ld.c:349
+#: src/ld.c:341
 #, c-format
 msgid "error while preparing linking"
 msgstr ""
 
-#: src/ld.c:356
+#: src/ld.c:348
 #, c-format
 msgid "cannot open linker script '%s'"
 msgstr ""
 
-#: src/ld.c:397
+#: src/ld.c:389
 #, c-format
 msgid "-( without matching -)"
 msgstr ""
 
-#: src/ld.c:572 src/ld.c:610
+#: src/ld.c:564 src/ld.c:602
 #, c-format
 msgid "only one option of -G and -r is allowed"
 msgstr ""
 
-#: src/ld.c:594
+#: src/ld.c:586
 #, c-format
 msgid "more than one '-m' parameter"
 msgstr ""
 
-#: src/ld.c:604 src/ld.c:1013
+#: src/ld.c:596 src/ld.c:1005
 #, c-format
 msgid "unknown option `-%c %s'"
 msgstr ""
 
-#: src/ld.c:646
+#: src/ld.c:638
 #, c-format
 msgid "invalid page size value '%s': ignored"
 msgstr ""
 
-#: src/ld.c:687
+#: src/ld.c:679
 #, c-format
 msgid "invalid hash style '%s'"
 msgstr ""
 
-#: src/ld.c:697
+#: src/ld.c:689
 #, c-format
 msgid "invalid build-ID style '%s'"
 msgstr ""
 
-#: src/ld.c:785
+#: src/ld.c:777
 #, c-format
 msgid "More than one output file name given."
 msgstr ""
 
-#: src/ld.c:802
+#: src/ld.c:794
 #, c-format
 msgid "Invalid optimization level `%s'"
 msgstr ""
 
-#: src/ld.c:850
+#: src/ld.c:842
 #, c-format
 msgid "nested -( -) groups are not allowed"
 msgstr ""
 
-#: src/ld.c:869
+#: src/ld.c:861
 #, c-format
 msgid "-) without matching -("
 msgstr ""
 
-#: src/ld.c:1046
+#: src/ld.c:1038
 #, c-format
 msgid "unknown option '-%c %s'"
 msgstr ""
 
-#: src/ld.c:1150
+#: src/ld.c:1142
 #, c-format
 msgid "could not find input file to determine output file format"
 msgstr ""
 
-#: src/ld.c:1152
+#: src/ld.c:1144
 #, c-format
 msgid "try again with an appropriate '-m' parameter"
 msgstr ""
 
-#: src/ld.c:1446
+#: src/ld.c:1438
 #, c-format
 msgid "cannot read version script '%s'"
 msgstr ""
 
-#: src/ld.c:1512 src/ld.c:1551
+#: src/ld.c:1504 src/ld.c:1543
 #, c-format
 msgid "duplicate definition of '%s' in linker script"
 msgstr ""
 
-#: src/ldgeneric.c:209 src/ldgeneric.c:5149
+#: src/ldgeneric.c:201 src/ldgeneric.c:5141
 #, c-format
 msgid "cannot create string table"
 msgstr ""
 
-#: src/ldgeneric.c:255
+#: src/ldgeneric.c:247
 #, c-format
 msgid "cannot load ld backend library '%s': %s"
 msgstr ""
 
-#: src/ldgeneric.c:265
+#: src/ldgeneric.c:257
 #, c-format
 msgid "cannot find init function in ld backend library '%s': %s"
 msgstr ""
 
-#: src/ldgeneric.c:308
+#: src/ldgeneric.c:300
 #, c-format
 msgid "%s listed more than once as input"
 msgstr ""
 
-#: src/ldgeneric.c:422
+#: src/ldgeneric.c:414
 #, c-format
 msgid "%s (for -l%s)\n"
 msgstr ""
 
-#: src/ldgeneric.c:423
+#: src/ldgeneric.c:415
 #, c-format
 msgid "%s (for DT_NEEDED %s)\n"
 msgstr ""
 
-#: src/ldgeneric.c:571
+#: src/ldgeneric.c:563
 #, c-format
 msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
 msgstr ""
 
-#: src/ldgeneric.c:584
+#: src/ldgeneric.c:576
 #, c-format
 msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
 msgstr ""
 
-#: src/ldgeneric.c:659 src/ldgeneric.c:1120 src/readelf.c:642 src/strip.c:570
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:568
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr ""
 
-#: src/ldgeneric.c:675
+#: src/ldgeneric.c:667
 #, c-format
 msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
 msgstr ""
 
-#: src/ldgeneric.c:698
+#: src/ldgeneric.c:690
 #, c-format
 msgid "(%s+%#<PRIx64>): first defined here\n"
 msgstr ""
 
-#: src/ldgeneric.c:817
+#: src/ldgeneric.c:809
 #, c-format
 msgid "%s: cannot get section group data: %s"
 msgstr ""
 
-#: src/ldgeneric.c:838
+#: src/ldgeneric.c:830
 #, c-format
 msgid "%s: section '%s' with group flag set does not belong to any group"
 msgstr ""
 
-#: src/ldgeneric.c:883
+#: src/ldgeneric.c:875
 #, c-format
 msgid "%s: section [%2d] '%s' is not in the correct section group"
 msgstr ""
 
-#: src/ldgeneric.c:1154 src/ldgeneric.c:1411 src/ldgeneric.c:1420
-#: src/ldgeneric.c:1479 src/ldgeneric.c:1488 src/ldgeneric.c:1751
-#: src/ldgeneric.c:2003
+#: src/ldgeneric.c:1146 src/ldgeneric.c:1403 src/ldgeneric.c:1412
+#: src/ldgeneric.c:1471 src/ldgeneric.c:1480 src/ldgeneric.c:1743
+#: src/ldgeneric.c:1995
 #, c-format
 msgid "%s: invalid ELF file (%s:%d)\n"
 msgstr ""
 
-#: src/ldgeneric.c:1248
+#: src/ldgeneric.c:1240
 #, c-format
 msgid "%s: only files of type ET_REL might contain section groups"
 msgstr ""
 
-#: src/ldgeneric.c:1300
+#: src/ldgeneric.c:1292
 #, c-format
 msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
 msgstr ""
 
-#: src/ldgeneric.c:1312
+#: src/ldgeneric.c:1304
 #, c-format
 msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
 msgstr ""
 
-#: src/ldgeneric.c:1326
+#: src/ldgeneric.c:1318
 #, c-format
 msgid ""
 "%s: group member %zu of section group [%2zd] '%s' has too high index: "
 "%<PRIu32>"
 msgstr ""
 
-#: src/ldgeneric.c:1348
+#: src/ldgeneric.c:1340
 #, c-format
 msgid "%s: section '%s' has unknown type: %d"
 msgstr ""
 
-#: src/ldgeneric.c:1727
+#: src/ldgeneric.c:1719
 #, c-format
 msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
 msgstr ""
 
-#: src/ldgeneric.c:1897
+#: src/ldgeneric.c:1889
 #, c-format
 msgid "cannot read archive `%s': %s"
 msgstr ""
 
-#: src/ldgeneric.c:2018
+#: src/ldgeneric.c:2010
 #, c-format
 msgid "file of type %s cannot be linked in\n"
 msgstr ""
 
-#: src/ldgeneric.c:2030
+#: src/ldgeneric.c:2022
 #, c-format
 msgid "%s: input file incompatible with ELF machine type %s\n"
 msgstr ""
 
-#: src/ldgeneric.c:2042
+#: src/ldgeneric.c:2034
 #, c-format
 msgid "%s: cannot get section header string table index: %s\n"
 msgstr ""
 
-#: src/ldgeneric.c:2071
+#: src/ldgeneric.c:2063
 #, c-format
 msgid "cannot use DSO '%s' when generating relocatable object file"
 msgstr ""
 
-#: src/ldgeneric.c:2156
+#: src/ldgeneric.c:2148
 #, c-format
 msgid "input file '%s' ignored"
 msgstr ""
 
-#: src/ldgeneric.c:2370
+#: src/ldgeneric.c:2362
 #, c-format
 msgid "undefined symbol `%s' in %s"
 msgstr ""
 
-#: src/ldgeneric.c:2700
+#: src/ldgeneric.c:2692
 #, c-format
 msgid "cannot create ELF descriptor for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:2707
+#: src/ldgeneric.c:2699
 #, c-format
 msgid "could not create ELF header for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:3222 src/ldgeneric.c:3292 src/ldgeneric.c:3328
-#: src/ldgeneric.c:4455 src/ldgeneric.c:4504 src/ldgeneric.c:4536
-#: src/ldgeneric.c:4771 src/ldgeneric.c:4826 src/ldgeneric.c:5073
-#: src/ldgeneric.c:5129 src/ldgeneric.c:5598 src/ldgeneric.c:5610
+#: src/ldgeneric.c:3214 src/ldgeneric.c:3284 src/ldgeneric.c:3320
+#: src/ldgeneric.c:4447 src/ldgeneric.c:4496 src/ldgeneric.c:4528
+#: src/ldgeneric.c:4763 src/ldgeneric.c:4818 src/ldgeneric.c:5065
+#: src/ldgeneric.c:5121 src/ldgeneric.c:5590 src/ldgeneric.c:5602
 #, c-format
 msgid "cannot create section for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:3442
+#: src/ldgeneric.c:3434
 #, c-format
 msgid "address computation expression contains variable '%s'"
 msgstr ""
 
-#: src/ldgeneric.c:3487
+#: src/ldgeneric.c:3479
 #, c-format
 msgid ""
 "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
 "of two"
 msgstr ""
 
-#: src/ldgeneric.c:3682
+#: src/ldgeneric.c:3674
 #, c-format
 msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 msgstr ""
 
-#: src/ldgeneric.c:3688
+#: src/ldgeneric.c:3680
 #, c-format
 msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
 msgstr ""
 
-#: src/ldgeneric.c:3918
+#: src/ldgeneric.c:3910
 #, c-format
 msgid "cannot create GNU hash table section for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4069
+#: src/ldgeneric.c:4061
 #, c-format
 msgid "cannot create hash table section for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4112
+#: src/ldgeneric.c:4104
 #, c-format
 msgid "cannot create build ID section: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4189
+#: src/ldgeneric.c:4181
 #, c-format
 msgid "cannot convert section data to file format: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4198
+#: src/ldgeneric.c:4190
 #, c-format
 msgid "cannot convert section data to memory format: %s"
 msgstr ""
 
-#: src/ldgeneric.c:4259
+#: src/ldgeneric.c:4251
 #, c-format
 msgid "cannot read enough data for UUID"
 msgstr ""
 
-#: src/ldgeneric.c:4356 src/ldgeneric.c:4377 src/ldgeneric.c:4406
-#: src/ldgeneric.c:6059
+#: src/ldgeneric.c:4348 src/ldgeneric.c:4369 src/ldgeneric.c:4398
+#: src/ldgeneric.c:6051
 #, c-format
 msgid "cannot create symbol table for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:5298 src/ldgeneric.c:5850
+#: src/ldgeneric.c:5290 src/ldgeneric.c:5842
 #, c-format
 msgid "section index too large in dynamic symbol table"
 msgstr ""
 
-#: src/ldgeneric.c:5743
+#: src/ldgeneric.c:5735
 #, c-format
 msgid "cannot create versioning section: %s"
 msgstr ""
 
-#: src/ldgeneric.c:5816
+#: src/ldgeneric.c:5808
 #, c-format
 msgid "cannot create dynamic symbol table for output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:5991
+#: src/ldgeneric.c:5983
 #, c-format
 msgid "cannot create versioning data: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6091 src/ldgeneric.c:6104 src/ldgeneric.c:6168
-#: src/ldgeneric.c:6176
+#: src/ldgeneric.c:6083 src/ldgeneric.c:6096 src/ldgeneric.c:6160
+#: src/ldgeneric.c:6168
 #, c-format
 msgid "cannot create section header string section: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6098
+#: src/ldgeneric.c:6090
 #, c-format
 msgid "cannot create section header string section"
 msgstr ""
 
-#: src/ldgeneric.c:6256
+#: src/ldgeneric.c:6248
 #, c-format
 msgid "cannot create program header: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6264
+#: src/ldgeneric.c:6256
 #, c-format
 msgid "while determining file layout: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6385
+#: src/ldgeneric.c:6377
 #, c-format
 msgid "internal error: non-nobits section follows nobits section"
 msgstr ""
 
-#: src/ldgeneric.c:6922
+#: src/ldgeneric.c:6914
 #, c-format
 msgid "cannot get header of 0th section: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6938 src/unstrip.c:1818
+#: src/ldgeneric.c:6930 src/unstrip.c:1822
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6969
+#: src/ldgeneric.c:6961
 #, c-format
 msgid "linker backend didn't specify function to relocate section"
 msgstr ""
 
-#: src/ldgeneric.c:6981
+#: src/ldgeneric.c:6973
 #, c-format
 msgid "while writing output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6986
+#: src/ldgeneric.c:6978
 #, c-format
 msgid "while finishing output file: %s"
 msgstr ""
 
-#: src/ldgeneric.c:6992
+#: src/ldgeneric.c:6984
 #, c-format
 msgid "cannot stat output file"
 msgstr ""
 
-#: src/ldgeneric.c:7008
+#: src/ldgeneric.c:7000
 #, c-format
 msgid "WARNING: temporary output file overwritten before linking finished"
 msgstr ""
 
-#: src/ldgeneric.c:7061 src/ldgeneric.c:7072 src/ldgeneric.c:7083
-#: src/ldgeneric.c:7094 src/ldgeneric.c:7113 src/ldgeneric.c:7126
-#: src/ldgeneric.c:7138
+#: src/ldgeneric.c:7053 src/ldgeneric.c:7064 src/ldgeneric.c:7075
+#: src/ldgeneric.c:7086 src/ldgeneric.c:7105 src/ldgeneric.c:7118
+#: src/ldgeneric.c:7130
 #, c-format
 msgid "no machine specific '%s' implementation"
 msgstr ""
 
-#: src/ldscript.y:178
+#: src/ldscript.y:170
 msgid "mode for segment invalid\n"
 msgstr ""
 
-#: src/ldscript.y:465
+#: src/ldscript.y:457
 #, c-format
 msgid "while reading version script '%s': %s at line %d"
 msgstr ""
 
-#: src/ldscript.y:466
+#: src/ldscript.y:458
 #, c-format
 msgid "while reading linker script '%s': %s at line %d"
 msgstr ""
 
-#: src/ldscript.y:745
+#: src/ldscript.y:737
 #, c-format
 msgid "symbol '%s' is declared both local and global for unnamed version"
 msgstr ""
 
-#: src/ldscript.y:747
+#: src/ldscript.y:739
 #, c-format
 msgid "symbol '%s' is declared both local and global for version '%s'"
 msgstr ""
 
-#: src/ldscript.y:767 src/ldscript.y:774
+#: src/ldscript.y:759 src/ldscript.y:766
 #, c-format
 msgid "default visibility set as local and global"
 msgstr ""
 
-#: src/nm.c:74 src/strip.c:76
+#: src/nm.c:66 src/strip.c:68
 msgid "Output selection:"
 msgstr ""
 
-#: src/nm.c:75
+#: src/nm.c:67
 msgid "Display debugger-only symbols"
 msgstr ""
 
-#: src/nm.c:76
+#: src/nm.c:68
 msgid "Display only defined symbols"
 msgstr ""
 
-#: src/nm.c:79
+#: src/nm.c:71
 msgid "Display dynamic symbols instead of normal symbols"
 msgstr ""
 
-#: src/nm.c:80
+#: src/nm.c:72
 msgid "Display only external symbols"
 msgstr ""
 
-#: src/nm.c:81
+#: src/nm.c:73
 msgid "Display only undefined symbols"
 msgstr ""
 
-#: src/nm.c:83
+#: src/nm.c:75
 msgid "Include index for symbols from archive members"
 msgstr ""
 
-#: src/nm.c:85 src/size.c:66
+#: src/nm.c:77 src/size.c:58
 msgid "Output format:"
 msgstr ""
 
-#: src/nm.c:87
+#: src/nm.c:79
 msgid "Print name of the input file before every symbol"
 msgstr ""
 
-#: src/nm.c:90
+#: src/nm.c:82
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd', `sysv' or `posix'.  The "
 "default is `sysv'"
 msgstr ""
 
-#: src/nm.c:92
+#: src/nm.c:84
 msgid "Same as --format=bsd"
 msgstr ""
 
-#: src/nm.c:93
+#: src/nm.c:85
 msgid "Same as --format=posix"
 msgstr ""
 
-#: src/nm.c:94 src/size.c:72
+#: src/nm.c:86 src/size.c:64
 msgid "Use RADIX for printing symbol values"
 msgstr ""
 
-#: src/nm.c:95
+#: src/nm.c:87
 msgid "Mark special symbols"
 msgstr ""
 
-#: src/nm.c:97
+#: src/nm.c:89
 msgid "Print size of defined symbols"
 msgstr ""
 
-#: src/nm.c:99 src/size.c:80 src/strip.c:81 src/unstrip.c:81
+#: src/nm.c:91 src/size.c:72 src/strip.c:73 src/unstrip.c:73
 msgid "Output options:"
 msgstr ""
 
-#: src/nm.c:100
+#: src/nm.c:92
 msgid "Sort symbols numerically by address"
 msgstr ""
 
-#: src/nm.c:102
+#: src/nm.c:94
 msgid "Do not sort the symbols"
 msgstr ""
 
-#: src/nm.c:103
+#: src/nm.c:95
 msgid "Reverse the sense of the sort"
 msgstr ""
 
-#: src/nm.c:106
+#: src/nm.c:98
 msgid "Decode low-level symbol names into source code names"
 msgstr ""
 
-#: src/nm.c:113
+#: src/nm.c:105
 msgid "List symbols from FILEs (a.out by default)."
 msgstr ""
 
-#: src/nm.c:124 src/objdump.c:88
+#: src/nm.c:116 src/objdump.c:80
 msgid "Output formatting"
 msgstr ""
 
-#: src/nm.c:148 src/objdump.c:112 src/size.c:117 src/strip.c:128
+#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
 #, c-format
 msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
 msgstr ""
 
-#: src/nm.c:406 src/nm.c:418 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:2132
+#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
+#: src/strip.c:2160
 #, c-format
 msgid "while closing '%s'"
 msgstr ""
 
-#: src/nm.c:428 src/objdump.c:304 src/strip.c:384
+#: src/nm.c:420 src/objdump.c:296 src/strip.c:376
 #, c-format
 msgid "%s: File format not recognized"
 msgstr ""
 
-#: src/nm.c:468
+#: src/nm.c:460
 msgid ""
 "\n"
 "Archive index:\n"
 msgstr ""
 
-#: src/nm.c:477
+#: src/nm.c:469
 #, c-format
 msgid "invalid offset %zu for symbol %s"
 msgstr ""
 
-#: src/nm.c:482
+#: src/nm.c:474
 #, c-format
 msgid "%s in %s\n"
 msgstr ""
 
-#: src/nm.c:490
+#: src/nm.c:482
 #, c-format
 msgid "cannot reset archive offset to beginning"
 msgstr ""
 
-#: src/nm.c:514 src/objdump.c:352
+#: src/nm.c:506 src/objdump.c:344
 #, c-format
 msgid "%s%s%s: file format not recognized"
 msgstr ""
 
-#: src/nm.c:726
+#: src/nm.c:718
 #, c-format
 msgid "cannot create search tree"
 msgstr ""
 
-#: src/nm.c:765 src/nm.c:1164 src/objdump.c:795 src/readelf.c:898
-#: src/readelf.c:1041 src/readelf.c:1189 src/readelf.c:1371 src/readelf.c:1571
-#: src/readelf.c:1757 src/readelf.c:1967 src/readelf.c:2221 src/readelf.c:2287
-#: src/readelf.c:2365 src/readelf.c:2863 src/readelf.c:2899 src/readelf.c:2961
-#: src/readelf.c:7307 src/readelf.c:8212 src/readelf.c:8359 src/readelf.c:8427
-#: src/size.c:425 src/size.c:499 src/strip.c:510
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:793 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:1975 src/readelf.c:2202 src/readelf.c:2460
+#: src/readelf.c:2536 src/readelf.c:2623 src/readelf.c:3201 src/readelf.c:3237
+#: src/readelf.c:3300 src/readelf.c:8187 src/readelf.c:9273 src/readelf.c:9420
+#: src/readelf.c:9488 src/size.c:417 src/size.c:486 src/strip.c:503
 #, c-format
 msgid "cannot get section header string table index"
 msgstr ""
 
-#: src/nm.c:790
+#: src/nm.c:784
 #, c-format
 msgid ""
 "\n"
@@ -3700,79 +3780,79 @@
 "\n"
 msgstr ""
 
-#: src/nm.c:793
+#: src/nm.c:787
 #, c-format
 msgid ""
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
 "\n"
 msgstr ""
 
-#: src/nm.c:1174
+#: src/nm.c:1173
 #, c-format
 msgid "%s: entry size in section `%s' is not what we expect"
 msgstr ""
 
-#: src/nm.c:1178
+#: src/nm.c:1177
 #, c-format
 msgid "%s: size of section `%s' is not multiple of entry size"
 msgstr ""
 
-#: src/nm.c:1436
+#: src/nm.c:1435
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr ""
 
-#: src/nm.c:1493
+#: src/nm.c:1492
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr ""
 
-#: src/objdump.c:61
+#: src/objdump.c:53
 msgid "Mode selection:"
 msgstr ""
 
-#: src/objdump.c:62
+#: src/objdump.c:54
 msgid "Display relocation information."
 msgstr ""
 
-#: src/objdump.c:64
+#: src/objdump.c:56
 msgid "Display the full contents of all sections requested"
 msgstr ""
 
-#: src/objdump.c:66
+#: src/objdump.c:58
 msgid "Display assembler code of executable sections"
 msgstr ""
 
-#: src/objdump.c:68
+#: src/objdump.c:60
 msgid "Output content selection:"
 msgstr ""
 
-#: src/objdump.c:70
+#: src/objdump.c:62
 msgid "Only display information for section NAME."
 msgstr ""
 
-#: src/objdump.c:76
+#: src/objdump.c:68
 msgid "Show information from FILEs (a.out by default)."
 msgstr ""
 
-#: src/objdump.c:244 src/readelf.c:441
+#: src/objdump.c:236 src/readelf.c:473
 msgid "No operation specified.\n"
 msgstr ""
 
-#: src/objdump.c:282 src/objdump.c:294
+#: src/objdump.c:274 src/objdump.c:286
 #, c-format
 msgid "while close `%s'"
 msgstr ""
 
-#: src/objdump.c:387 src/readelf.c:1666 src/readelf.c:1840
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2072
 msgid "INVALID SYMBOL"
 msgstr ""
 
-#: src/objdump.c:402 src/readelf.c:1697 src/readelf.c:1873
+#: src/objdump.c:394 src/readelf.c:1914 src/readelf.c:2108
 msgid "INVALID SECTION"
 msgstr ""
 
-#: src/objdump.c:518
+#: src/objdump.c:514
 #, c-format
 msgid ""
 "\n"
@@ -3780,426 +3860,471 @@
 "%-*s TYPE                 VALUE\n"
 msgstr ""
 
-#: src/objdump.c:521
+#: src/objdump.c:517
 msgid "OFFSET"
 msgstr ""
 
-#: src/objdump.c:584
+#: src/objdump.c:582
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr ""
 
-#: src/objdump.c:705
+#: src/objdump.c:703
 #, c-format
 msgid "cannot disassemble"
 msgstr ""
 
-#: src/objdump.c:744
+#: src/objdump.c:742
 #, c-format
 msgid "cannot allocate memory"
 msgstr ""
 
-#: src/ranlib.c:74
+#: src/ranlib.c:66
 msgid "Generate an index to speed access to archives."
 msgstr ""
 
-#: src/ranlib.c:77
+#: src/ranlib.c:69
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/ranlib.c:116
+#: src/ranlib.c:108
 #, c-format
 msgid "Archive name required"
 msgstr ""
 
-#: src/ranlib.c:194
+#: src/ranlib.c:186
 #, c-format
 msgid "'%s' is no archive"
 msgstr ""
 
-#: src/ranlib.c:229
+#: src/ranlib.c:221
 #, c-format
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr ""
 
+#: src/readelf.c:71
+msgid "ELF input selection:"
+msgstr ""
+
 #: src/readelf.c:73
-msgid "ELF output selection:"
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
 msgstr ""
 
 #: src/readelf.c:75
-msgid "All these plus -p .strtab -p .dynstr -p .comment"
-msgstr ""
-
-#: src/readelf.c:76
-msgid "Display the dynamic segment"
+msgid "ELF output selection:"
 msgstr ""
 
 #: src/readelf.c:77
-msgid "Display the ELF file header"
+msgid "All these plus -p .strtab -p .dynstr -p .comment"
+msgstr ""
+
+#: src/readelf.c:78
+msgid "Display the dynamic segment"
 msgstr ""
 
 #: src/readelf.c:79
+msgid "Display the ELF file header"
+msgstr ""
+
+#: src/readelf.c:81
 msgid "Display histogram of bucket list lengths"
 msgstr ""
 
-#: src/readelf.c:80
+#: src/readelf.c:82
 msgid "Display the program headers"
 msgstr ""
 
-#: src/readelf.c:82
+#: src/readelf.c:84
 msgid "Display relocations"
 msgstr ""
 
-#: src/readelf.c:83
+#: src/readelf.c:85
 msgid "Display the sections' headers"
 msgstr ""
 
-#: src/readelf.c:85
+#: src/readelf.c:87
 msgid "Display the symbol table"
 msgstr ""
 
-#: src/readelf.c:86
+#: src/readelf.c:88
 msgid "Display versioning information"
 msgstr ""
 
-#: src/readelf.c:87
+#: src/readelf.c:89
 msgid "Display the ELF notes"
 msgstr ""
 
-#: src/readelf.c:89
+#: src/readelf.c:91
 msgid "Display architecture specific information, if any"
 msgstr ""
 
-#: src/readelf.c:91
+#: src/readelf.c:93
 msgid "Display sections for exception handling"
 msgstr ""
 
-#: src/readelf.c:93
+#: src/readelf.c:95
 msgid "Additional output selection:"
 msgstr ""
 
-#: src/readelf.c:95
+#: 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, or "
-"exception"
-msgstr ""
-
-#: src/readelf.c:99
-msgid "Dump the uninterpreted contents of SECTION, by number or name"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
 msgstr ""
 
 #: src/readelf.c:101
+msgid "Dump the uninterpreted contents of SECTION, by number or name"
+msgstr ""
+
+#: src/readelf.c:103
 msgid "Print string contents of sections"
 msgstr ""
 
-#: src/readelf.c:104
+#: src/readelf.c:106
 msgid "Display the symbol index of an archive"
 msgstr ""
 
-#: src/readelf.c:106
+#: src/readelf.c:108
 msgid "Output control:"
 msgstr ""
 
-#: src/readelf.c:108
+#: src/readelf.c:110
 msgid "Do not find symbol names for addresses in DWARF data"
 msgstr ""
 
-#: src/readelf.c:110
+#: 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:115
+#: src/readelf.c:119
 msgid "Print information from ELF file in human-readable form."
 msgstr ""
 
-#: src/readelf.c:412
+#: src/readelf.c:441
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr ""
 
-#: src/readelf.c:478
+#: src/readelf.c:520 src/readelf.c:631
 #, c-format
 msgid "cannot generate Elf descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:490
+#: 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:495
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9440
+#: src/unstrip.c:356 src/unstrip.c:387 src/unstrip.c:436 src/unstrip.c:544
+#: src/unstrip.c:561 src/unstrip.c:597 src/unstrip.c:795 src/unstrip.c:1063
+#: src/unstrip.c:1254 src/unstrip.c:1314 src/unstrip.c:1435 src/unstrip.c:1488
+#: src/unstrip.c:1595 src/unstrip.c:1784
 #, c-format
-msgid "error while closing Elf descriptor: %s"
+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:5398 src/readelf.c:7671 src/readelf.c:7773
+#: src/readelf.c:7939
+#, 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:602 src/readelf.c:619 src/readelf.c:648
+#, c-format
+msgid "error while closing Elf descriptor: %s"
+msgstr ""
+
+#: 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:589
+#: src/readelf.c:771
 #, c-format
 msgid "input file is empty"
 msgstr ""
 
-#: src/readelf.c:591
+#: src/readelf.c:773
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr ""
 
-#: src/readelf.c:627
+#: src/readelf.c:814
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr ""
 
-#: src/readelf.c:635
+#: src/readelf.c:822
 #, c-format
 msgid "cannot create EBL handle"
 msgstr ""
 
-#: src/readelf.c:648
+#: src/readelf.c:835
 #, c-format
 msgid "cannot determine number of program headers: %s"
 msgstr ""
 
-#: src/readelf.c:734
+#: src/readelf.c:921
 msgid "NONE (None)"
 msgstr ""
 
-#: src/readelf.c:735
+#: src/readelf.c:922
 msgid "REL (Relocatable file)"
 msgstr ""
 
-#: src/readelf.c:736
+#: src/readelf.c:923
 msgid "EXEC (Executable file)"
 msgstr ""
 
-#: src/readelf.c:737
+#: src/readelf.c:924
 msgid "DYN (Shared object file)"
 msgstr ""
 
-#: src/readelf.c:738
+#: src/readelf.c:925
 msgid "CORE (Core file)"
 msgstr ""
 
-#: src/readelf.c:743
+#: src/readelf.c:930
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr ""
 
-#: src/readelf.c:745
+#: src/readelf.c:932
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr ""
 
-#: src/readelf.c:755
+#: src/readelf.c:942
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
 msgstr ""
 
-#: src/readelf.c:759
+#: src/readelf.c:946
 #, c-format
 msgid ""
 "\n"
 "  Class:                             %s\n"
 msgstr ""
 
-#: src/readelf.c:764
+#: src/readelf.c:951
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr ""
 
-#: src/readelf.c:770
+#: src/readelf.c:957
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr ""
 
-#: src/readelf.c:772 src/readelf.c:789
+#: src/readelf.c:959 src/readelf.c:976
 msgid "(current)"
 msgstr ""
 
-#: src/readelf.c:776
+#: src/readelf.c:963
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr ""
 
-#: src/readelf.c:779
+#: src/readelf.c:966
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr ""
 
-#: src/readelf.c:782
+#: src/readelf.c:969
 msgid "  Type:                              "
 msgstr ""
 
-#: src/readelf.c:785
+#: src/readelf.c:972
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr ""
 
-#: src/readelf.c:787
+#: src/readelf.c:974
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr ""
 
-#: src/readelf.c:791
+#: src/readelf.c:978
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:794
+#: src/readelf.c:981
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr ""
 
-#: src/readelf.c:795 src/readelf.c:798
+#: src/readelf.c:982 src/readelf.c:985
 msgid "(bytes into file)"
 msgstr ""
 
-#: src/readelf.c:797
+#: src/readelf.c:984
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr ""
 
-#: src/readelf.c:800
+#: src/readelf.c:987
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr ""
 
-#: src/readelf.c:803
+#: src/readelf.c:990
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:804 src/readelf.c:807 src/readelf.c:824
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
 msgid "(bytes)"
 msgstr ""
 
-#: src/readelf.c:806
+#: src/readelf.c:993
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:809
+#: src/readelf.c:996
 #, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr ""
 
-#: src/readelf.c:816
+#: src/readelf.c:1003
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr ""
 
-#: src/readelf.c:819 src/readelf.c:836 src/readelf.c:850
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
 msgid " ([0] not available)"
 msgstr ""
 
-#: src/readelf.c:823
+#: src/readelf.c:1010
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:826
+#: src/readelf.c:1013
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr ""
 
-#: src/readelf.c:833
+#: src/readelf.c:1020
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr ""
 
-#: src/readelf.c:846
+#: src/readelf.c:1033
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr ""
 
-#: src/readelf.c:854
+#: src/readelf.c:1041
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:858
+#: src/readelf.c:1045
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:890
+#: src/readelf.c:1077
 #, c-format
 msgid ""
 "There are %d section headers, starting at offset %#<PRIx64>:\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:900
+#: src/readelf.c:1087
 msgid "Section Headers:"
 msgstr ""
 
-#: src/readelf.c:903
+#: src/readelf.c:1090
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
 msgstr ""
 
-#: src/readelf.c:905
+#: src/readelf.c:1092
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
 msgstr ""
 
-#: src/readelf.c:912 src/readelf.c:1065
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:919 src/readelf.c:1073 src/readelf.c:8379 src/unstrip.c:353
-#: src/unstrip.c:384 src/unstrip.c:433 src/unstrip.c:541 src/unstrip.c:558
-#: src/unstrip.c:594 src/unstrip.c:792 src/unstrip.c:1060 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:977
+#: src/readelf.c:1164
 msgid "Program Headers:"
 msgstr ""
 
-#: src/readelf.c:979
+#: src/readelf.c:1166
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 
-#: src/readelf.c:982
+#: src/readelf.c:1169
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
 msgstr ""
 
-#: src/readelf.c:1022
+#: src/readelf.c:1226
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr ""
 
-#: src/readelf.c:1043
+#: src/readelf.c:1247
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
 "  Segment Sections..."
 msgstr ""
 
-#: src/readelf.c:1054 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
+#: src/readelf.c:1258 src/unstrip.c:1843 src/unstrip.c:1886 src/unstrip.c:1893
 #, c-format
 msgid "cannot get program header: %s"
 msgstr ""
 
-#: src/readelf.c:1195
+#: src/readelf.c:1401
 #, c-format
 msgid ""
 "\n"
@@ -4210,7 +4335,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1200
+#: src/readelf.c:1406
 #, c-format
 msgid ""
 "\n"
@@ -4221,15 +4346,21 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1208
+#: src/readelf.c:1414
 msgid "<INVALID SYMBOL>"
 msgstr ""
 
-#: src/readelf.c:1222
+#: src/readelf.c:1428
 msgid "<INVALID SECTION>"
 msgstr ""
 
-#: src/readelf.c:1373
+#: src/readelf.c:1585 src/readelf.c:2208 src/readelf.c:2466 src/readelf.c:2542
+#: src/readelf.c:2846 src/readelf.c:2920 src/readelf.c:4610
+#, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr ""
+
+#: src/readelf.c:1588
 #, c-format
 msgid ""
 "\n"
@@ -4242,43 +4373,43 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1385
+#: src/readelf.c:1598
 msgid "  Type              Value\n"
 msgstr ""
 
-#: src/readelf.c:1409
+#: src/readelf.c:1622
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1414
+#: src/readelf.c:1627
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1419
+#: src/readelf.c:1632
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1424
+#: src/readelf.c:1637
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1444
+#: src/readelf.c:1657
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr ""
 
-#: src/readelf.c:1556 src/readelf.c:1742
+#: src/readelf.c:1770 src/readelf.c:1960
 #, c-format
 msgid ""
 "\n"
 "Invalid symbol table at offset %#0<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:1574 src/readelf.c:1759
+#: src/readelf.c:1788 src/readelf.c:1978
 #, c-format
 msgid ""
 "\n"
@@ -4291,7 +4422,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1589
+#: src/readelf.c:1803 src/readelf.c:1993
 #, c-format
 msgid ""
 "\n"
@@ -4302,29 +4433,29 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1599
+#: src/readelf.c:1813
 msgid "  Offset      Type                 Value       Name\n"
 msgstr ""
 
-#: src/readelf.c:1601
+#: src/readelf.c:1815
 msgid "  Offset              Type                 Value               Name\n"
 msgstr ""
 
-#: src/readelf.c:1654 src/readelf.c:1665 src/readelf.c:1678 src/readelf.c:1696
-#: src/readelf.c:1708 src/readelf.c:1827 src/readelf.c:1839 src/readelf.c:1853
-#: src/readelf.c:1872 src/readelf.c:1885
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1913
+#: src/readelf.c:1925 src/readelf.c:2059 src/readelf.c:2071 src/readelf.c:2085
+#: src/readelf.c:2107 src/readelf.c:2120
 msgid "<INVALID RELOC>"
 msgstr ""
 
-#: src/readelf.c:1771
+#: src/readelf.c:2003
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr ""
 
-#: src/readelf.c:1773
+#: src/readelf.c:2005
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 
-#: src/readelf.c:1974
+#: src/readelf.c:2216
 #, c-format
 msgid ""
 "\n"
@@ -4335,40 +4466,40 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1980
+#: src/readelf.c:2221
 #, 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:1990
+#: src/readelf.c:2229
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr ""
 
-#: src/readelf.c:1992
+#: src/readelf.c:2231
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr ""
 
-#: src/readelf.c:2012
+#: src/readelf.c:2251
 #, c-format
 msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
 msgstr ""
 
-#: src/readelf.c:2100
+#: src/readelf.c:2339
 #, c-format
 msgid "bad dynamic symbol"
 msgstr ""
 
-#: src/readelf.c:2182
+#: src/readelf.c:2421
 msgid "none"
 msgstr ""
 
-#: src/readelf.c:2199
+#: src/readelf.c:2438
 msgid "| <unknown>"
 msgstr ""
 
-#: src/readelf.c:2224
+#: src/readelf.c:2469
 #, c-format
 msgid ""
 "\n"
@@ -4381,17 +4512,17 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2247
+#: src/readelf.c:2490
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr ""
 
-#: src/readelf.c:2260
+#: src/readelf.c:2503
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr ""
 
-#: src/readelf.c:2291
+#: src/readelf.c:2546
 #, c-format
 msgid ""
 "\n"
@@ -4404,17 +4535,17 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2321
+#: src/readelf.c:2574
 #, c-format
 msgid "  %#06x: Version: %hd  Flags: %s  Index: %hd  Cnt: %hd  Name: %s\n"
 msgstr ""
 
-#: src/readelf.c:2336
+#: src/readelf.c:2589
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr ""
 
-#: src/readelf.c:2568
+#: src/readelf.c:2850
 #, c-format
 msgid ""
 "\n"
@@ -4427,15 +4558,15 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2598
+#: src/readelf.c:2878
 msgid "   0 *local*                     "
 msgstr ""
 
-#: src/readelf.c:2603
+#: src/readelf.c:2883
 msgid "   1 *global*                    "
 msgstr ""
 
-#: src/readelf.c:2634
+#: src/readelf.c:2925
 #, c-format
 msgid ""
 "\n"
@@ -4450,41 +4581,56 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2658
+#: src/readelf.c:2947
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr ""
 
-#: src/readelf.c:2660
+#: src/readelf.c:2949
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr ""
 
-#: src/readelf.c:2667
+#: src/readelf.c:2956
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr ""
 
-#: src/readelf.c:2680
+#: src/readelf.c:2969
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
 "\t\t\t  unsuccessful lookup: %f\n"
 msgstr ""
 
-#: src/readelf.c:2698 src/readelf.c:2740 src/readelf.c:2781
+#: src/readelf.c:2987 src/readelf.c:3042 src/readelf.c:3098
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr ""
 
-#: src/readelf.c:2835
+#: src/readelf.c:2995
+#, c-format
+msgid "invalid data in sysv.hash section %d"
+msgstr ""
+
+#: src/readelf.c:3050
+#, c-format
+msgid "invalid data in sysv.hash64 section %d"
+msgstr ""
+
+#: src/readelf.c:3106
+#, c-format
+msgid "invalid data in gnu.hash section %d"
+msgstr ""
+
+#: src/readelf.c:3173
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
 " Bitmask Size: %zu bytes  %<PRIuFAST32>%% bits set  2nd hash shift: %u\n"
 msgstr ""
 
-#: src/readelf.c:2909
+#: src/readelf.c:3248
 #, c-format
 msgid ""
 "\n"
@@ -4495,13 +4641,13 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2923
+#: src/readelf.c:3262
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
 msgstr ""
 
-#: src/readelf.c:2973
+#: src/readelf.c:3312
 #, c-format
 msgid ""
 "\n"
@@ -4509,160 +4655,140 @@
 "%#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:2989
+#: src/readelf.c:3329
 msgid "  Owner          Size\n"
 msgstr ""
 
-#: src/readelf.c:3015
+#: src/readelf.c:3358
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr ""
 
-#: src/readelf.c:3047
+#: src/readelf.c:3397
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr ""
 
-#: src/readelf.c:3052
+#: src/readelf.c:3402
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr ""
 
-#: src/readelf.c:3087
+#: src/readelf.c:3451
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr ""
 
-#: src/readelf.c:3090
+#: src/readelf.c:3454
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:3093
+#: src/readelf.c:3457
 #, c-format
 msgid "      %s: %s\n"
 msgstr ""
 
-#: src/readelf.c:3100
+#: src/readelf.c:3467
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:3103
+#: src/readelf.c:3470
 #, c-format
 msgid "      %u: %s\n"
 msgstr ""
 
-#: src/readelf.c:3139
+#: src/readelf.c:3515
 #, c-format
 msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr ""
 
-#: src/readelf.c:3142
+#: src/readelf.c:3518
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr ""
 
-#: src/readelf.c:3147
+#: src/readelf.c:3523
 #, c-format
 msgid "%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr ""
 
-#: src/readelf.c:3150
+#: src/readelf.c:3526
 #, c-format
 msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr ""
 
-#: src/readelf.c:3156
+#: src/readelf.c:3532
 #, c-format
 msgid "%s+%#<PRIx64> <%s>"
 msgstr ""
 
-#: src/readelf.c:3159
+#: src/readelf.c:3535
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s>"
 msgstr ""
 
-#: src/readelf.c:3163
+#: src/readelf.c:3539
 #, c-format
 msgid "%#<PRIx64> <%s>"
 msgstr ""
 
-#: src/readelf.c:3166
+#: src/readelf.c:3542
 #, c-format
 msgid "%#0*<PRIx64> <%s>"
 msgstr ""
 
-#: src/readelf.c:3171
+#: src/readelf.c:3547
 #, c-format
 msgid "%s+%#<PRIx64>"
 msgstr ""
 
-#: src/readelf.c:3174
+#: src/readelf.c:3550
 #, c-format
 msgid "%s+%#0*<PRIx64>"
 msgstr ""
 
-#: src/readelf.c:3313
-#, c-format
-msgid "unknown tag %hx"
-msgstr ""
-
-#: src/readelf.c:3315
-#, c-format
-msgid "unknown user tag %hx"
-msgstr ""
-
-#: src/readelf.c:3603
-#, c-format
-msgid "unknown attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3606
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3657
-#, c-format
-msgid "unknown form %#<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3893
+#: src/readelf.c:3932
 msgid "empty block"
 msgstr ""
 
-#: src/readelf.c:3896
+#: src/readelf.c:3935
 #, c-format
 msgid "%zu byte block:"
 msgstr ""
 
-#: src/readelf.c:4419
+#: src/readelf.c:4332
 #, c-format
 msgid "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr ""
 
-#: src/readelf.c:4455
+#: src/readelf.c:4389
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr ""
 
-#: src/readelf.c:4462
+#: src/readelf.c:4396
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr ""
 
-#: src/readelf.c:4542
+#: src/readelf.c:4403
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr ""
+
+#: src/readelf.c:4492
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr ""
 
-#: src/readelf.c:4550
+#: src/readelf.c:4500
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr ""
 
-#: src/readelf.c:4569
+#: src/readelf.c:4526
 #, c-format
 msgid ""
 "\n"
@@ -4670,37 +4796,37 @@
 " [ Code]\n"
 msgstr ""
 
-#: src/readelf.c:4577
+#: src/readelf.c:4534
 #, c-format
 msgid ""
 "\n"
 "Abbreviation section at offset %<PRIu64>:\n"
 msgstr ""
 
-#: src/readelf.c:4590
+#: src/readelf.c:4547
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr ""
 
-#: src/readelf.c:4606
+#: src/readelf.c:4563
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr ""
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "yes"
 msgstr ""
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "no"
 msgstr ""
 
-#: src/readelf.c:4644
+#: src/readelf.c:4600 src/readelf.c:4673
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr ""
 
-#: src/readelf.c:4649
+#: src/readelf.c:4615
 #, c-format
 msgid ""
 "\n"
@@ -4711,123 +4837,193 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:4680
+#: src/readelf.c:4646
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr ""
 
-#: src/readelf.c:4682
+#: src/readelf.c:4648
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:4701
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4706 src/readelf.c:5207 src/readelf.c:5982 src/readelf.c:6483
-#: src/readelf.c:6598 src/readelf.c:6770
+#: src/readelf.c:4678 src/readelf.c:4832 src/readelf.c:5408 src/readelf.c:6362
+#: src/readelf.c:6894 src/readelf.c:7014 src/readelf.c:7177 src/readelf.c:7602
 #, c-format
 msgid ""
 "\n"
 "DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:4730 src/readelf.c:6508
+#: src/readelf.c:4691 src/readelf.c:6388
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+
+#: src/readelf.c:4695 src/readelf.c:5432 src/readelf.c:6399
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr ""
+
+#: src/readelf.c:4711
+#, c-format
+msgid ""
+"\n"
+" Length:        %6<PRIu64>\n"
+msgstr ""
+
+#: src/readelf.c:4723
+#, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr ""
+
+#: src/readelf.c:4727
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4738
+#, c-format
+msgid " CU offset:     %6<PRIx64>\n"
+msgstr ""
+
+#: src/readelf.c:4744
+#, c-format
+msgid " Address size:  %6<PRIu64>\n"
+msgstr ""
+
+#: src/readelf.c:4748
+#, c-format
+msgid "unsupported address size"
+msgstr ""
+
+#: src/readelf.c:4753
+#, c-format
+msgid ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+msgstr ""
+
+#: src/readelf.c:4757
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4797
+#, c-format
+msgid "   %s..%s (%<PRIx64>)\n"
+msgstr ""
+
+#: src/readelf.c:4800
+#, c-format
+msgid "   %s..%s\n"
+msgstr ""
+
+#: src/readelf.c:4809
+#, c-format
+msgid "   %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4827
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr ""
+
+#: src/readelf.c:4857 src/readelf.c:6921
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:4752 src/readelf.c:6530
+#: src/readelf.c:4879 src/readelf.c:6943
 #, c-format
 msgid " [%6tx]  base address %s\n"
 msgstr ""
 
-#: src/readelf.c:4758 src/readelf.c:6536
+#: src/readelf.c:4886 src/readelf.c:6950
 #, c-format
 msgid " [%6tx]  empty list\n"
 msgstr ""
 
-#: src/readelf.c:4767
+#: src/readelf.c:4897
 #, c-format
 msgid " [%6tx]  %s..%s\n"
 msgstr ""
 
-#: src/readelf.c:4769
+#: src/readelf.c:4899
 #, c-format
 msgid "           %s..%s\n"
 msgstr ""
 
-#: src/readelf.c:5196 src/readelf.c:6838 src/readelf.c:6940 src/readelf.c:7098
-#, c-format
-msgid "cannot get %s content: %s"
+#: src/readelf.c:5078
+msgid "         <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:5203
+#: src/readelf.c:5387
+#, c-format
+msgid "cannot get ELF: %s"
+msgstr ""
+
+#: src/readelf.c:5404
 #, c-format
 msgid ""
 "\n"
 "Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:5231 src/readelf.c:6017
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:5253
+#: src/readelf.c:5454
 #, c-format
 msgid ""
 "\n"
 " [%6tx] Zero terminator\n"
 msgstr ""
 
-#: src/readelf.c:5338
+#: src/readelf.c:5547 src/readelf.c:5702
 #, c-format
 msgid "invalid augmentation length"
 msgstr ""
 
-#: src/readelf.c:5350
+#: src/readelf.c:5562
 msgid "FDE address encoding: "
 msgstr ""
 
-#: src/readelf.c:5356
+#: src/readelf.c:5568
 msgid "LSDA pointer encoding: "
 msgstr ""
 
-#: src/readelf.c:5454
+#: src/readelf.c:5679
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr ""
 
-#: src/readelf.c:5461
+#: src/readelf.c:5686
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr ""
 
-#: src/readelf.c:5488
+#: src/readelf.c:5723
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:5539
+#: src/readelf.c:5778
 #, c-format
 msgid "cannot get attribute code: %s"
 msgstr ""
 
-#: src/readelf.c:5548
+#: src/readelf.c:5787
 #, c-format
 msgid "cannot get attribute form: %s"
 msgstr ""
 
-#: src/readelf.c:5563
+#: src/readelf.c:5802
 #, c-format
 msgid "cannot get attribute value: %s"
 msgstr ""
 
-#: src/readelf.c:5819
+#: src/readelf.c:6101
 #, c-format
 msgid ""
 "\n"
@@ -4835,7 +5031,7 @@
 " [Offset]\n"
 msgstr ""
 
-#: src/readelf.c:5851
+#: src/readelf.c:6133
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -4844,7 +5040,7 @@
 " Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:5860
+#: src/readelf.c:6142
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -4852,44 +5048,45 @@
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 msgstr ""
 
-#: src/readelf.c:5886
+#: src/readelf.c:6167
 #, c-format
 msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
 msgstr ""
 
-#: src/readelf.c:5898
+#: src/readelf.c:6181
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr ""
 
-#: src/readelf.c:5907
+#: src/readelf.c:6190
 #, c-format
 msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
 msgstr ""
 
-#: src/readelf.c:5938
+#: src/readelf.c:6222
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr ""
 
-#: src/readelf.c:5946
+#: src/readelf.c:6230
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr ""
 
-#: src/readelf.c:5995
+#: src/readelf.c:6266
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+
+#: src/readelf.c:6375
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr ""
 
-#: src/readelf.c:6008
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-
-#: src/readelf.c:6063
+#: src/readelf.c:6445
 #, c-format
 msgid ""
 "\n"
@@ -4906,183 +5103,248 @@
 "Opcodes:\n"
 msgstr ""
 
-#: src/readelf.c:6084
+#: src/readelf.c:6466
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr ""
 
-#: src/readelf.c:6099
+#: src/readelf.c:6481
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:6107
+#: src/readelf.c:6489
 msgid ""
 "\n"
 "Directory table:"
 msgstr ""
 
-#: src/readelf.c:6123
+#: src/readelf.c:6505
 msgid ""
 "\n"
 "File name table:\n"
 " Entry Dir   Time      Size      Name"
 msgstr ""
 
-#: src/readelf.c:6152
+#: src/readelf.c:6540
 msgid ""
 "\n"
 "Line number statements:"
 msgstr ""
 
-#: src/readelf.c:6228
+#: src/readelf.c:6591
+#, c-format
+msgid "invalid maximum operations per instruction is zero"
+msgstr ""
+
+#: src/readelf.c:6627
 #, c-format
 msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:6233
+#: src/readelf.c:6632
 #, c-format
 msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:6253
+#: src/readelf.c:6652
 #, c-format
 msgid " extended opcode %u: "
 msgstr ""
 
-#: src/readelf.c:6258
+#: src/readelf.c:6657
 msgid " end of sequence"
 msgstr ""
 
-#: src/readelf.c:6275
+#: src/readelf.c:6676
 #, c-format
 msgid " set address to %s\n"
 msgstr ""
 
-#: src/readelf.c:6296
+#: src/readelf.c:6703
 #, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
 
-#: src/readelf.c:6309
+#: src/readelf.c:6716
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr ""
 
-#: src/readelf.c:6314
+#: src/readelf.c:6721
 msgid " unknown opcode"
 msgstr ""
 
-#: src/readelf.c:6326
+#: src/readelf.c:6733
 msgid " copy"
 msgstr ""
 
-#: src/readelf.c:6337
+#: src/readelf.c:6744
 #, c-format
 msgid " advance address by %u to %s, op_index to %u\n"
 msgstr ""
 
-#: src/readelf.c:6341
+#: src/readelf.c:6748
 #, c-format
 msgid " advance address by %u to %s\n"
 msgstr ""
 
-#: src/readelf.c:6352
+#: src/readelf.c:6759
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:6360
+#: src/readelf.c:6767
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:6370
+#: src/readelf.c:6777
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:6377
+#: src/readelf.c:6784
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr ""
 
-#: src/readelf.c:6383
+#: src/readelf.c:6790
 msgid " set basic block flag"
 msgstr ""
 
-#: src/readelf.c:6392
+#: src/readelf.c:6803
 #, c-format
 msgid " advance address by constant %u to %s, op_index to %u\n"
 msgstr ""
 
-#: src/readelf.c:6396
+#: src/readelf.c:6807
 #, c-format
 msgid " advance address by constant %u to %s\n"
 msgstr ""
 
-#: src/readelf.c:6414
+#: src/readelf.c:6825
 #, c-format
 msgid " advance address by fixed value %u to %s\n"
 msgstr ""
 
-#: src/readelf.c:6423
+#: src/readelf.c:6834
 msgid " set prologue end flag"
 msgstr ""
 
-#: src/readelf.c:6428
+#: src/readelf.c:6839
 msgid " set epilogue begin flag"
 msgstr ""
 
-#: src/readelf.c:6437
+#: src/readelf.c:6848
 #, c-format
 msgid " set isa to %u\n"
 msgstr ""
 
-#: src/readelf.c:6446
+#: src/readelf.c:6857
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:6478
+#: src/readelf.c:6889
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr ""
 
-#: src/readelf.c:6548
+#: src/readelf.c:6964
 #, c-format
 msgid " [%6tx]  %s..%s"
 msgstr ""
 
-#: src/readelf.c:6550
+#: src/readelf.c:6966
 #, c-format
 msgid "           %s..%s"
 msgstr ""
 
-#: src/readelf.c:6557
+#: src/readelf.c:6973 src/readelf.c:7858
 msgid "   <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:6609
+#: src/readelf.c:7025 src/readelf.c:7186
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr ""
 
-#: src/readelf.c:6688
+#: src/readelf.c:7104
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr ""
 
-#: src/readelf.c:6756
+#: src/readelf.c:7127
+#, c-format
+msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
+msgstr ""
+
+#: src/readelf.c:7227
+#, c-format
+msgid " Offset:             0x%<PRIx64>\n"
+msgstr ""
+
+#: src/readelf.c:7239
+#, c-format
+msgid " Version:            %<PRIu16>\n"
+msgstr ""
+
+#: src/readelf.c:7245 src/readelf.c:7968
+#, c-format
+msgid "  unknown version, cannot parse section\n"
+msgstr ""
+
+#: src/readelf.c:7252
+#, c-format
+msgid " Flag:               0x%<PRIx8>\n"
+msgstr ""
+
+#: src/readelf.c:7255
+#, c-format
+msgid " Offset length:      %<PRIu8>\n"
+msgstr ""
+
+#: src/readelf.c:7263
+#, c-format
+msgid " .debug_line offset: 0x%<PRIx64>\n"
+msgstr ""
+
+#: src/readelf.c:7276
+#, c-format
+msgid "  extension opcode table, %<PRIu8> items:\n"
+msgstr ""
+
+#: src/readelf.c:7283
+#, c-format
+msgid "    [%<PRIx8>]"
+msgstr ""
+
+#: src/readelf.c:7295
+#, c-format
+msgid " %<PRIu8> arguments:"
+msgstr ""
+
+#: src/readelf.c:7323
+#, c-format
+msgid " no arguments."
+msgstr ""
+
+#: src/readelf.c:7560
+#, c-format
+msgid "vendor opcode not verified?"
+msgstr ""
+
+#: src/readelf.c:7588
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
 
-#: src/readelf.c:6796
+#: src/readelf.c:7629
 #, c-format
 msgid ""
 "\n"
@@ -5090,47 +5352,47 @@
 " %*s  String\n"
 msgstr ""
 
-#: src/readelf.c:6810
+#: src/readelf.c:7643
 #, c-format
 msgid " *** error while reading strings: %s\n"
 msgstr ""
 
-#: src/readelf.c:6830
+#: src/readelf.c:7663
 #, c-format
 msgid ""
 "\n"
 "Call frame search table section [%2zu] '.eh_frame_hdr':\n"
 msgstr ""
 
-#: src/readelf.c:6932
+#: src/readelf.c:7765
 #, c-format
 msgid ""
 "\n"
 "Exception handling table section [%2zu] '.gcc_except_table':\n"
 msgstr ""
 
-#: src/readelf.c:6955
+#: src/readelf.c:7788
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr ""
 
-#: src/readelf.c:6967
+#: src/readelf.c:7800
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr ""
 
-#: src/readelf.c:6981
+#: src/readelf.c:7815
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr ""
 
-#: src/readelf.c:6994
+#: src/readelf.c:7828
 msgid ""
 "\n"
 " Call site table:"
 msgstr ""
 
-#: src/readelf.c:7008
+#: src/readelf.c:7842
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5139,791 +5401,819 @@
 "        Action:            %u\n"
 msgstr ""
 
-#: src/readelf.c:7068
+#: src/readelf.c:7909
 #, c-format
 msgid "invalid TType encoding"
 msgstr ""
 
-#: src/readelf.c:7089
+#: src/readelf.c:7930
 #, c-format
 msgid ""
 "\n"
 "GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
 msgstr ""
 
-#: src/readelf.c:7118
+#: src/readelf.c:7959
 #, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr ""
 
-#: src/readelf.c:7124
-#, c-format
-msgid "  unknown version, cannot parse section\n"
-msgstr ""
-
-#: src/readelf.c:7133
+#: src/readelf.c:7977
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7140
+#: src/readelf.c:7984
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7147
+#: src/readelf.c:7991
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7154
+#: src/readelf.c:7998
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7161
+#: src/readelf.c:8005
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:7168
+#: src/readelf.c:8012
 #, c-format
 msgid ""
 "\n"
 " CU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:7190
+#: src/readelf.c:8034
 #, c-format
 msgid ""
 "\n"
 " TU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:7216
+#: src/readelf.c:8060
 #, c-format
 msgid ""
 "\n"
 " Address list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:7243
+#: src/readelf.c:8089
 #, c-format
 msgid ""
 "\n"
 " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
 msgstr ""
 
-#: src/readelf.c:7296
+#: src/readelf.c:8176
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:7445 src/readelf.c:8046
+#: src/readelf.c:8336 src/readelf.c:8942 src/readelf.c:9053 src/readelf.c:9111
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr ""
 
-#: src/readelf.c:7786
+#: src/readelf.c:8683
 #, c-format
 msgid ""
 "\n"
 "%*s... <repeats %u more times> ..."
 msgstr ""
 
-#: src/readelf.c:8145
+#: src/readelf.c:9190
 msgid "  Owner          Data size  Type\n"
 msgstr ""
 
-#: src/readelf.c:8163
+#: src/readelf.c:9208
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr ""
 
-#: src/readelf.c:8197
+#: src/readelf.c:9258
 #, c-format
 msgid "cannot get content of note section: %s"
 msgstr ""
 
-#: src/readelf.c:8224
+#: src/readelf.c:9285
 #, c-format
 msgid ""
 "\n"
 "Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:8247
+#: src/readelf.c:9308
 #, c-format
 msgid ""
 "\n"
 "Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:8293
+#: src/readelf.c:9354
 #, c-format
 msgid ""
 "\n"
 "Section [%Zu] '%s' has no data to dump.\n"
 msgstr ""
 
-#: src/readelf.c:8299 src/readelf.c:8322
+#: src/readelf.c:9360 src/readelf.c:9383
 #, c-format
 msgid "cannot get data for section [%Zu] '%s': %s"
 msgstr ""
 
-#: src/readelf.c:8303
+#: src/readelf.c:9364
 #, c-format
 msgid ""
 "\n"
 "Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:8316
+#: src/readelf.c:9377
 #, c-format
 msgid ""
 "\n"
 "Section [%Zu] '%s' has no strings to dump.\n"
 msgstr ""
 
-#: src/readelf.c:8326
+#: src/readelf.c:9387
 #, c-format
 msgid ""
 "\n"
 "String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:8374
+#: src/readelf.c:9435
 #, c-format
 msgid ""
 "\n"
 "section [%lu] does not exist"
 msgstr ""
 
-#: src/readelf.c:8403
+#: src/readelf.c:9464
 #, c-format
 msgid ""
 "\n"
 "section '%s' does not exist"
 msgstr ""
 
-#: src/readelf.c:8460
+#: src/readelf.c:9521
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr ""
 
-#: src/readelf.c:8463
+#: src/readelf.c:9524
 #, c-format
 msgid ""
 "\n"
 "Archive '%s' has no symbol index\n"
 msgstr ""
 
-#: src/readelf.c:8467
+#: src/readelf.c:9528
 #, c-format
 msgid ""
 "\n"
 "Index of archive '%s' has %Zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:8485
+#: src/readelf.c:9546
 #, c-format
 msgid "cannot extract member at offset %Zu in '%s': %s"
 msgstr ""
 
-#: src/readelf.c:8490
+#: src/readelf.c:9551
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr ""
 
-#: src/size.c:68
+#: src/size.c:60
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd' or `sysv'.  The default "
 "is `bsd'"
 msgstr ""
 
-#: src/size.c:70
+#: src/size.c:62
 msgid "Same as `--format=sysv'"
 msgstr ""
 
-#: src/size.c:71
+#: src/size.c:63
 msgid "Same as `--format=bsd'"
 msgstr ""
 
-#: src/size.c:74
+#: src/size.c:66
 msgid "Same as `--radix=10'"
 msgstr ""
 
-#: src/size.c:75
+#: src/size.c:67
 msgid "Same as `--radix=8'"
 msgstr ""
 
-#: src/size.c:76
+#: src/size.c:68
 msgid "Same as `--radix=16'"
 msgstr ""
 
-#: src/size.c:78
+#: src/size.c:70
 msgid "Similar to `--format=sysv' output but in one line"
 msgstr ""
 
-#: src/size.c:82
+#: src/size.c:74
 msgid "Print size and permission flags for loadable segments"
 msgstr ""
 
-#: src/size.c:83
+#: src/size.c:75
 msgid "Display the total sizes (bsd only)"
 msgstr ""
 
-#: src/size.c:88
+#: src/size.c:80
 msgid "List section sizes of FILEs (a.out by default)."
 msgstr ""
 
-#: src/size.c:269
+#: src/size.c:261
 #, c-format
 msgid "Invalid format: %s"
 msgstr ""
 
-#: src/size.c:280
+#: src/size.c:272
 #, c-format
 msgid "Invalid radix: %s"
 msgstr ""
 
-#: src/size.c:339
+#: src/size.c:331
 #, c-format
 msgid "%s: file format not recognized"
 msgstr ""
 
-#: src/size.c:446 src/size.c:589
+#: src/size.c:437 src/size.c:570
 #, c-format
 msgid " (ex %s)"
 msgstr ""
 
-#: src/size.c:614
+#: src/size.c:595
 msgid "(TOTALS)\n"
 msgstr ""
 
-#: src/strings.c:70
+#: src/strings.c:62
 msgid "Output Selection:"
 msgstr ""
 
-#: src/strings.c:71
+#: src/strings.c:63
 msgid "Scan entire file, not only loaded sections"
 msgstr ""
 
-#: src/strings.c:73
+#: src/strings.c:65
 msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 msgstr ""
 
-#: src/strings.c:74
+#: src/strings.c:66
 msgid ""
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
 msgstr ""
 
-#: src/strings.c:78
+#: src/strings.c:70
 msgid "Print name of the file before each string."
 msgstr ""
 
-#: src/strings.c:80
+#: src/strings.c:72
 msgid "Print location of the string in base 8, 10, or 16 respectively."
 msgstr ""
 
-#: src/strings.c:81
+#: src/strings.c:73
 msgid "Alias for --radix=o"
 msgstr ""
 
-#: src/strings.c:88
+#: src/strings.c:80
 msgid "Print the strings of printable characters in files."
 msgstr ""
 
-#: src/strings.c:268 src/strings.c:303
+#: src/strings.c:267 src/strings.c:302
 #, c-format
 msgid "invalid value '%s' for %s parameter"
 msgstr ""
 
-#: src/strings.c:314
+#: src/strings.c:313
 #, c-format
 msgid "invalid minimum length of matched string size"
 msgstr ""
 
-#: src/strings.c:599
+#: src/strings.c:596
 #, c-format
 msgid "lseek64 failed"
 msgstr ""
 
-#: src/strings.c:616 src/strings.c:680
+#: src/strings.c:613 src/strings.c:677
 #, c-format
 msgid "re-mmap failed"
 msgstr ""
 
-#: src/strings.c:653
+#: src/strings.c:650
 #, c-format
 msgid "mprotect failed"
 msgstr ""
 
-#: src/strip.c:77
+#: src/strip.c:69
 msgid "Place stripped output into FILE"
 msgstr ""
 
-#: src/strip.c:78
+#: src/strip.c:70
 msgid "Extract the removed sections into FILE"
 msgstr ""
 
-#: src/strip.c:79
+#: src/strip.c:71
 msgid "Embed name FILE instead of -f argument"
 msgstr ""
 
-#: src/strip.c:83
+#: src/strip.c:75
 msgid "Remove all debugging symbols"
 msgstr ""
 
-#: src/strip.c:87
+#: src/strip.c:79
 msgid "Remove section headers (not recommended)"
 msgstr ""
 
-#: src/strip.c:89
+#: src/strip.c:81
 msgid "Copy modified/access timestamps to the output"
 msgstr ""
 
-#: src/strip.c:91
+#: src/strip.c:83
 msgid ""
 "Resolve all trivial relocations between debug sections if the removed "
 "sections are placed in a debug file (only relevant for ET_REL files, "
 "operation is not reversable, needs -f)"
 msgstr ""
 
-#: src/strip.c:93
+#: src/strip.c:85
 msgid "Remove .comment section"
 msgstr ""
 
-#: src/strip.c:96
+#: src/strip.c:88
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr ""
 
-#: src/strip.c:101
+#: src/strip.c:93
 msgid "Discard symbols from object files."
 msgstr ""
 
-#: src/strip.c:189
+#: src/strip.c:181
 #, c-format
 msgid "--reloc-debug-sections used without -f"
 msgstr ""
 
-#: src/strip.c:203
+#: src/strip.c:195
 #, c-format
 msgid "Only one input file allowed together with '-o' and '-f'"
 msgstr ""
 
-#: src/strip.c:239
+#: src/strip.c:231
 #, c-format
 msgid "-f option specified twice"
 msgstr ""
 
-#: src/strip.c:248
+#: src/strip.c:240
 #, c-format
 msgid "-F option specified twice"
 msgstr ""
 
-#: src/strip.c:257 src/unstrip.c:125
+#: src/strip.c:249 src/unstrip.c:121
 #, c-format
 msgid "-o option specified twice"
 msgstr ""
 
-#: src/strip.c:281
+#: src/strip.c:273
 #, c-format
 msgid "-R option supports only .comment section"
 msgstr ""
 
-#: src/strip.c:323 src/strip.c:347
+#: src/strip.c:315 src/strip.c:339
 #, c-format
 msgid "cannot stat input file '%s'"
 msgstr ""
 
-#: src/strip.c:337
+#: src/strip.c:329
 #, c-format
 msgid "while opening '%s'"
 msgstr ""
 
-#: src/strip.c:375
+#: src/strip.c:367
 #, c-format
 msgid "%s: cannot use -o or -f when stripping archive"
 msgstr ""
 
-#: src/strip.c:475
+#: src/strip.c:468
 #, c-format
 msgid "cannot open EBL backend"
 msgstr ""
 
-#: src/strip.c:525 src/strip.c:549
+#: src/strip.c:508
+#, c-format
+msgid "cannot get number of phdrs"
+msgstr ""
+
+#: src/strip.c:523 src/strip.c:547
 #, c-format
 msgid "cannot create new file '%s': %s"
 msgstr ""
 
-#: src/strip.c:609
+#: src/strip.c:613
 #, c-format
 msgid "illformed file '%s'"
 msgstr ""
 
-#: src/strip.c:913 src/strip.c:1002
+#: src/strip.c:935 src/strip.c:1024
 #, c-format
 msgid "while generating output file: %s"
 msgstr ""
 
-#: src/strip.c:975 src/strip.c:1937
+#: src/strip.c:997 src/strip.c:1962
 #, c-format
 msgid "%s: error while creating ELF header: %s"
 msgstr ""
 
-#: src/strip.c:989
+#: src/strip.c:1011
 #, c-format
 msgid "while preparing output for '%s'"
 msgstr ""
 
-#: src/strip.c:1040 src/strip.c:1096
+#: src/strip.c:1062 src/strip.c:1119
 #, c-format
 msgid "while create section header section: %s"
 msgstr ""
 
-#: src/strip.c:1046
+#: src/strip.c:1068
 #, c-format
 msgid "cannot allocate section data: %s"
 msgstr ""
 
-#: src/strip.c:1105
+#: src/strip.c:1128
 #, c-format
 msgid "while create section header string table: %s"
 msgstr ""
 
-#: src/strip.c:1732
+#: src/strip.c:1757
 #, c-format
 msgid "bad relocation"
 msgstr ""
 
-#: src/strip.c:1849 src/strip.c:1959
+#: src/strip.c:1874 src/strip.c:1984
 #, c-format
 msgid "while writing '%s': %s"
 msgstr ""
 
-#: src/strip.c:1860
+#: src/strip.c:1885
 #, c-format
 msgid "while creating '%s'"
 msgstr ""
 
-#: src/strip.c:1882
+#: src/strip.c:1907
 #, c-format
 msgid "while computing checksum for debug information"
 msgstr ""
 
-#: src/strip.c:1945
+#: src/strip.c:1970
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr ""
 
-#: src/strip.c:1984 src/strip.c:2004
+#: src/strip.c:2009 src/strip.c:2029
 #, c-format
 msgid "while writing '%s'"
 msgstr ""
 
-#: src/strip.c:2038 src/strip.c:2045
+#: src/strip.c:2066 src/strip.c:2073
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr ""
 
-#: src/strip.c:2068 src/strip.c:2125
+#: src/strip.c:2096 src/strip.c:2153
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr ""
 
-#: src/unstrip.c:78
+#: src/unstrip.c:70
 msgid "Match MODULE against file names, not module names"
 msgstr ""
 
-#: src/unstrip.c:79
+#: src/unstrip.c:71
 msgid "Silently skip unfindable files"
 msgstr ""
 
-#: src/unstrip.c:82
+#: src/unstrip.c:74
 msgid "Place output into FILE"
 msgstr ""
 
-#: src/unstrip.c:84
+#: src/unstrip.c:76
 msgid "Create multiple output files under DIRECTORY"
 msgstr ""
 
-#: src/unstrip.c:85
+#: src/unstrip.c:77
 msgid "Use module rather than file names"
 msgstr ""
 
-#: src/unstrip.c:87
+#: src/unstrip.c:79
 msgid "Create output for modules that have no separate debug information"
 msgstr ""
 
-#: src/unstrip.c:90
+#: src/unstrip.c:82
 msgid "Apply relocations to section contents in ET_REL files"
 msgstr ""
 
-#: src/unstrip.c:92
+#: src/unstrip.c:84
 msgid "Only list module and file names, build IDs"
 msgstr ""
 
-#: src/unstrip.c:134
+#: 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:166
+#: src/unstrip.c:165
 #, c-format
 msgid "only one of -o or -d allowed"
 msgstr ""
 
-#: src/unstrip.c:175
+#: src/unstrip.c:174
 #, c-format
 msgid "-n cannot be used with explicit files or -o or -d"
 msgstr ""
 
-#: src/unstrip.c:190
+#: src/unstrip.c:189
 #, c-format
 msgid "output directory '%s'"
 msgstr ""
 
-#: src/unstrip.c:199
+#: src/unstrip.c:198
 #, c-format
 msgid "exactly two file arguments are required"
 msgstr ""
 
-#: src/unstrip.c:205
+#: src/unstrip.c:204
 #, c-format
 msgid "-m, -a, -R, and -i options not allowed with explicit files"
 msgstr ""
 
-#: src/unstrip.c:218
+#: src/unstrip.c:217
 #, c-format
 msgid "-o or -d is required when using implicit files"
 msgstr ""
 
-#: src/unstrip.c:254
+#: src/unstrip.c:253
 #, c-format
 msgid "cannot create ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:259
+#: src/unstrip.c:258
 #, c-format
 msgid "cannot copy ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:264 src/unstrip.c:1828
+#: src/unstrip.c:262 src/unstrip.c:1832 src/unstrip.c:1876
+#, c-format
+msgid "cannot get number of program headers: %s"
+msgstr ""
+
+#: src/unstrip.c:267 src/unstrip.c:1836
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr ""
 
-#: src/unstrip.c:270
+#: src/unstrip.c:273
 #, c-format
 msgid "cannot copy program header: %s"
 msgstr ""
 
-#: src/unstrip.c:280
+#: src/unstrip.c:283
 #, c-format
 msgid "cannot copy section header: %s"
 msgstr ""
 
-#: src/unstrip.c:283 src/unstrip.c:1509
+#: src/unstrip.c:286 src/unstrip.c:1513
 #, c-format
 msgid "cannot get section data: %s"
 msgstr ""
 
-#: src/unstrip.c:285 src/unstrip.c:1511
+#: src/unstrip.c:288 src/unstrip.c:1515
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr ""
 
-#: src/unstrip.c:309
+#: src/unstrip.c:312
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr ""
 
-#: src/unstrip.c:349 src/unstrip.c:766 src/unstrip.c:1543
+#: src/unstrip.c:352 src/unstrip.c:769 src/unstrip.c:1547
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr ""
 
-#: src/unstrip.c:365 src/unstrip.c:583 src/unstrip.c:604 src/unstrip.c:616
-#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
+#: src/unstrip.c:368 src/unstrip.c:586 src/unstrip.c:607 src/unstrip.c:619
+#: src/unstrip.c:1568 src/unstrip.c:1698 src/unstrip.c:1722
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr ""
 
-#: src/unstrip.c:375
+#: src/unstrip.c:378
 #, c-format
 msgid "cannot update section header: %s"
 msgstr ""
 
-#: src/unstrip.c:414 src/unstrip.c:425
+#: src/unstrip.c:417 src/unstrip.c:428
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr ""
 
-#: src/unstrip.c:512
+#: src/unstrip.c:515
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr ""
 
-#: src/unstrip.c:524
+#: src/unstrip.c:527
 #, c-format
 msgid "unexpected section type in [%Zu] with sh_link to symtab"
 msgstr ""
 
-#: src/unstrip.c:772
+#: src/unstrip.c:775
 #, c-format
 msgid "invalid string offset in symbol [%Zu]"
 msgstr ""
 
-#: src/unstrip.c:914 src/unstrip.c:1254
+#: src/unstrip.c:917 src/unstrip.c:1258
 #, c-format
 msgid "cannot read section [%Zu] name: %s"
 msgstr ""
 
-#: src/unstrip.c:955 src/unstrip.c:974 src/unstrip.c:1007
+#: src/unstrip.c:958 src/unstrip.c:977 src/unstrip.c:1010
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr ""
 
-#: src/unstrip.c:995
+#: src/unstrip.c:998
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr ""
 
-#: src/unstrip.c:1050 src/unstrip.c:1374
+#: src/unstrip.c:1053 src/unstrip.c:1378
 #, c-format
 msgid "cannot find matching section for [%Zu] '%s'"
 msgstr ""
 
-#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
+#: src/unstrip.c:1178 src/unstrip.c:1193 src/unstrip.c:1459
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1198
+#: src/unstrip.c:1202
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr ""
 
-#: src/unstrip.c:1225 src/unstrip.c:1229
+#: src/unstrip.c:1229 src/unstrip.c:1233
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr ""
 
-#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
+#: src/unstrip.c:1237 src/unstrip.c:1241 src/unstrip.c:1474
 #, c-format
 msgid "cannot get section count: %s"
 msgstr ""
 
-#: src/unstrip.c:1240
+#: src/unstrip.c:1244
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 
-#: src/unstrip.c:1299 src/unstrip.c:1389
+#: src/unstrip.c:1303 src/unstrip.c:1393
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1449
+#: src/unstrip.c:1453
 #, c-format
 msgid "cannot add new section: %s"
 msgstr ""
 
-#: src/unstrip.c:1551
+#: src/unstrip.c:1555
 #, c-format
 msgid "symbol [%Zu] has invalid section index"
 msgstr ""
 
-#: src/unstrip.c:1789
+#: src/unstrip.c:1793
 #, c-format
 msgid "cannot read section data: %s"
 msgstr ""
 
-#: src/unstrip.c:1810
+#: src/unstrip.c:1814
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:1838
+#: src/unstrip.c:1846
 #, c-format
 msgid "cannot update program header: %s"
 msgstr ""
 
-#: src/unstrip.c:1843 src/unstrip.c:1922
+#: src/unstrip.c:1851 src/unstrip.c:1934
 #, c-format
 msgid "cannot write output file: %s"
 msgstr ""
 
-#: src/unstrip.c:1891
+#: src/unstrip.c:1903
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:1894
+#: src/unstrip.c:1906
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:1913 src/unstrip.c:1953 src/unstrip.c:1965 src/unstrip.c:2045
+#: src/unstrip.c:1925 src/unstrip.c:1976 src/unstrip.c:1988 src/unstrip.c:2074
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr ""
 
-#: src/unstrip.c:1971
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
+#: src/unstrip.c:1967
+msgid "WARNING: "
 msgstr ""
 
-#: src/unstrip.c:2002
+#: src/unstrip.c:1969
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1992
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1995
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1998
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:2001
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2031
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2006
+#: src/unstrip.c:2035
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2021
+#: src/unstrip.c:2050
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2025
+#: src/unstrip.c:2054
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2038
+#: src/unstrip.c:2067
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr ""
 
-#: src/unstrip.c:2069
+#: src/unstrip.c:2098
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2202
+#: src/unstrip.c:2231
 #, c-format
 msgid "no matching modules found"
 msgstr ""
 
-#: src/unstrip.c:2211
+#: src/unstrip.c:2240
 #, c-format
 msgid "matched more than one module"
 msgstr ""
 
-#: src/unstrip.c:2258
+#: src/unstrip.c:2287
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 msgstr ""
 
-#: src/unstrip.c:2259
+#: src/unstrip.c:2288
 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"
diff --git a/src/po/en@boldquot.gmo b/src/po/en@boldquot.gmo
index e36dba6..fbd721f 100644
--- a/src/po/en@boldquot.gmo
+++ b/src/po/en@boldquot.gmo
Binary files differ
diff --git a/src/po/en@boldquot.po b/src/po/en@boldquot.po
index 7bdcd14..790899b 100644
--- a/src/po/en@boldquot.po
+++ b/src/po/en@boldquot.po
@@ -1,7 +1,7 @@
 # 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
@@ -30,222 +30,230 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: elfutils 0.153\n"
+"Project-Id-Version: elfutils 0.161\n"
 "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-02-16 13:21+0100\n"
-"PO-Revision-Date: 2012-02-16 13:21+0100\n"
+"POT-Creation-Date: 2014-12-19 21:45+0100\n"
+"PO-Revision-Date: 2014-12-19 21:45+0100\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:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2844
-#: src/readelf.c:3183 src/unstrip.c:2098 src/unstrip.c:2306
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3182
+#: src/readelf.c:3559 src/readelf.c:8285 src/unstrip.c:2127 src/unstrip.c:2335
 #, c-format
 msgid "memory exhausted"
 msgstr "memory exhausted"
 
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
+#: 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:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
+#: 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"
 
-#: libasm/asm_error.c:64 src/ldgeneric.c:2685
+#: libasm/asm_error.c:67 src/ldgeneric.c:2677
 #, c-format
 msgid "cannot create output file"
 msgstr "cannot create output file"
 
-#: libasm/asm_error.c:65
+#: libasm/asm_error.c:68
 msgid "invalid parameter"
 msgstr "invalid parameter"
 
-#: libasm/asm_error.c:66
+#: libasm/asm_error.c:69
 msgid "cannot change mode of output file"
 msgstr "cannot change mode of output file"
 
-#: libasm/asm_error.c:67 src/ldgeneric.c:6998
+#: libasm/asm_error.c:70 src/ldgeneric.c:6990
 #, c-format
 msgid "cannot rename output file"
 msgstr "cannot rename output file"
 
-#: libasm/asm_error.c:68
+#: libasm/asm_error.c:71
 msgid "duplicate symbol"
 msgstr "duplicate symbol"
 
-#: libasm/asm_error.c:69
+#: libasm/asm_error.c:72
 msgid "invalid section type for operation"
 msgstr "invalid section type for operation"
 
-#: libasm/asm_error.c:70
+#: libasm/asm_error.c:73
 msgid "error during output of data"
 msgstr "error during output of data"
 
-#: libasm/asm_error.c:71
+#: libasm/asm_error.c:74
 msgid "no backend support available"
 msgstr "no backend support available"
 
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
+#: 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"
 
-#: libdw/dwarf_error.c:81
+#: libdw/dwarf_error.c:60
 msgid "invalid access"
 msgstr "invalid access"
 
-#: libdw/dwarf_error.c:82
+#: libdw/dwarf_error.c:61
 msgid "no regular file"
 msgstr "no regular file"
 
-#: libdw/dwarf_error.c:83
+#: libdw/dwarf_error.c:62
 msgid "I/O error"
 msgstr "I/O error"
 
-#: libdw/dwarf_error.c:84
+#: libdw/dwarf_error.c:63
 msgid "invalid ELF file"
 msgstr "invalid ELF file"
 
-#: libdw/dwarf_error.c:85
+#: libdw/dwarf_error.c:64
 msgid "no DWARF information"
 msgstr "no DWARF information"
 
-#: libdw/dwarf_error.c:86
+#: libdw/dwarf_error.c:65
 msgid "no ELF file"
 msgstr "no ELF file"
 
-#: libdw/dwarf_error.c:87
+#: libdw/dwarf_error.c:66
 msgid "cannot get ELF header"
 msgstr "cannot get ELF header"
 
-#: libdw/dwarf_error.c:89
+#: libdw/dwarf_error.c:68
 msgid "not implemented"
 msgstr "not implemented"
 
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
+#: libdw/dwarf_error.c:69 libelf/elf_error.c:107 libelf/elf_error.c:155
 msgid "invalid command"
 msgstr "invalid command"
 
-#: libdw/dwarf_error.c:91
+#: libdw/dwarf_error.c:70
 msgid "invalid version"
 msgstr "invalid version"
 
-#: libdw/dwarf_error.c:92
+#: libdw/dwarf_error.c:71
 msgid "invalid file"
 msgstr "invalid file"
 
-#: libdw/dwarf_error.c:93
+#: libdw/dwarf_error.c:72
 msgid "no entries found"
 msgstr "no entries found"
 
-#: libdw/dwarf_error.c:94
+#: libdw/dwarf_error.c:73
 msgid "invalid DWARF"
 msgstr "invalid DWARF"
 
-#: libdw/dwarf_error.c:95
+#: libdw/dwarf_error.c:74
 msgid "no string data"
 msgstr "no string data"
 
-#: libdw/dwarf_error.c:96
+#: libdw/dwarf_error.c:75
 msgid "no address value"
 msgstr "no address value"
 
-#: libdw/dwarf_error.c:97
+#: libdw/dwarf_error.c:76
 msgid "no constant value"
 msgstr "no constant value"
 
-#: libdw/dwarf_error.c:98
+#: libdw/dwarf_error.c:77
 msgid "no reference value"
 msgstr "no reference value"
 
-#: libdw/dwarf_error.c:99
+#: libdw/dwarf_error.c:78
 msgid "invalid reference value"
 msgstr "invalid reference value"
 
-#: libdw/dwarf_error.c:100
+#: libdw/dwarf_error.c:79
 msgid ".debug_line section missing"
 msgstr ".debug_line section missing"
 
-#: libdw/dwarf_error.c:101
+#: libdw/dwarf_error.c:80
 msgid "invalid .debug_line section"
 msgstr "invalid .debug_line section"
 
-#: libdw/dwarf_error.c:102
+#: libdw/dwarf_error.c:81
 msgid "debug information too big"
 msgstr "debug information too big"
 
-#: libdw/dwarf_error.c:103
+#: libdw/dwarf_error.c:82
 msgid "invalid DWARF version"
 msgstr "invalid DWARF version"
 
-#: libdw/dwarf_error.c:104
+#: libdw/dwarf_error.c:83
 msgid "invalid directory index"
 msgstr "invalid directory index"
 
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
 msgid "address out of range"
 msgstr "address out of range"
 
-#: libdw/dwarf_error.c:106
+#: libdw/dwarf_error.c:85
 msgid "no location list value"
 msgstr "no location list value"
 
-#: libdw/dwarf_error.c:107
+#: libdw/dwarf_error.c:86
 msgid "no block data"
 msgstr "no block data"
 
-#: libdw/dwarf_error.c:108
+#: libdw/dwarf_error.c:87
 msgid "invalid line index"
 msgstr "invalid line index"
 
-#: libdw/dwarf_error.c:109
+#: libdw/dwarf_error.c:88
 msgid "invalid address range index"
 msgstr "invalid address range index"
 
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
 msgid "no matching address range"
 msgstr "no matching address range"
 
-#: libdw/dwarf_error.c:111
+#: libdw/dwarf_error.c:90
 msgid "no flag value"
 msgstr "no flag value"
 
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
+#: libdw/dwarf_error.c:91 libelf/elf_error.c:232
 msgid "invalid offset"
 msgstr "invalid offset"
 
-#: libdw/dwarf_error.c:113
+#: libdw/dwarf_error.c:92
 msgid ".debug_ranges section missing"
 msgstr ".debug_ranges section missing"
 
-#: libdw/dwarf_error.c:114
+#: libdw/dwarf_error.c:93
 msgid "invalid CFI section"
 msgstr "invalid CFI section"
 
-#: libdwfl/argp-std.c:67 src/unstrip.c:2248
+#: libdw/dwarf_error.c:94
+msgid "no alternative debug link found"
+msgstr "no alternative debug link found"
+
+#: libdw/dwarf_error.c:95
+msgid "invalid opcode"
+msgstr "invalid opcode"
+
+#: libdwfl/argp-std.c:46 src/unstrip.c:2277
 msgid "Input selection options:"
 msgstr "Input selection options:"
 
-#: libdwfl/argp-std.c:68
+#: libdwfl/argp-std.c:47
 msgid "Find addresses in FILE"
 msgstr "Find addresses in FILE"
 
-#: libdwfl/argp-std.c:70
+#: libdwfl/argp-std.c:49
 msgid "Find addresses from signatures found in COREFILE"
 msgstr "Find addresses from signatures found in COREFILE"
 
-#: libdwfl/argp-std.c:72
+#: libdwfl/argp-std.c:51
 msgid "Find addresses in files mapped into process PID"
 msgstr "Find addresses in files mapped into process PID"
 
-#: libdwfl/argp-std.c:74
+#: libdwfl/argp-std.c:53
 msgid ""
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
@@ -253,411 +261,479 @@
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
 
-#: libdwfl/argp-std.c:76
+#: libdwfl/argp-std.c:55
 msgid "Find addresses in the running kernel"
 msgstr "Find addresses in the running kernel"
 
-#: libdwfl/argp-std.c:78
+#: libdwfl/argp-std.c:57
 msgid "Kernel with all modules"
 msgstr "Kernel with all modules"
 
-#: libdwfl/argp-std.c:80
+#: libdwfl/argp-std.c:59
 msgid "Search path for separate debuginfo files"
 msgstr "Search path for separate debuginfo files"
 
-#: libdwfl/argp-std.c:163
+#: 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:223
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
+msgstr "cannot load kernel symbols"
+
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
+msgstr "cannot find kernel modules"
+
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
+msgstr "cannot find kernel or modules"
+
+#: 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:241
+#: libdwfl/argp-std.c:311
 msgid "No modules recognized in core file"
 msgstr "No modules recognized in core file"
 
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr "cannot load kernel symbols"
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr "cannot find kernel modules"
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr "cannot find kernel or modules"
-
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:56
 msgid "See errno"
 msgstr "See errno"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:57
 msgid "See elf_errno"
 msgstr "See elf_errno"
 
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:58
 msgid "See dwarf_errno"
 msgstr "See dwarf_errno"
 
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:59
 msgid "See ebl_errno (XXX missing)"
 msgstr "See ebl_errno (XXX missing)"
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:60
 msgid "gzip decompression failed"
 msgstr "gzip decompression failed"
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:61
 msgid "bzip2 decompression failed"
 msgstr "bzip2 decompression failed"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:62
 msgid "LZMA decompression failed"
 msgstr "LZMA decompression failed"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:63
 msgid "no support library found for machine"
 msgstr "no support library found for machine"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:64
 msgid "Callbacks missing for ET_REL file"
 msgstr "Callbacks missing for ET_REL file"
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:65
 msgid "Unsupported relocation type"
 msgstr "Unsupported relocation type"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:66
 msgid "r_offset is bogus"
 msgstr "r_offset is bogus"
 
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
+#: 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:85
+#: libdwfl/libdwflP.h:68
 msgid "relocation refers to undefined symbol"
 msgstr "relocation refers to undefined symbol"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:69
 msgid "Callback returned failure"
 msgstr "Callback returned failure"
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:70
 msgid "No DWARF information found"
 msgstr "No DWARF information found"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:71
 msgid "No symbol table found"
 msgstr "No symbol table found"
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:72
 msgid "No ELF program headers"
 msgstr "No ELF program headers"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:73
 msgid "address range overlaps an existing module"
 msgstr "address range overlaps an existing module"
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:76
 msgid "image truncated"
 msgstr "image truncated"
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:77
 msgid "ELF file opened"
 msgstr "ELF file opened"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:78
 msgid "not a valid ELF file"
 msgstr "not a valid ELF file"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:79
 msgid "cannot handle DWARF type description"
 msgstr "cannot handle DWARF type description"
 
-#: libdwfl/libdwflP.h:97
+#: libdwfl/libdwflP.h:80
 msgid "ELF file does not match build ID"
 msgstr "ELF file does not match build ID"
 
-#: libdwfl/libdwflP.h:98
+#: libdwfl/libdwflP.h:81
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "corrupt .gnu.prelink_undo section data"
 
-#: libebl/eblbackendname.c:63
+#: 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:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:94 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
+#: 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 "<unknown>"
 msgstr "<unknown>"
 
-#: libebl/ebldynamictagname.c:126
+#: libebl/ebldynamictagname.c:105
 #, c-format
 msgid "<unknown>: %#<PRIx64>"
 msgstr "<unknown>: %#<PRIx64>"
 
-#: libebl/eblobjnote.c:76
+#: libebl/eblobjnote.c:55
 #, c-format
 msgid "unknown SDT version %u\n"
 msgstr "unknown SDT version %u\n"
 
-#: libebl/eblobjnote.c:94
+#: libebl/eblobjnote.c:73
 #, c-format
 msgid "invalid SDT probe descriptor\n"
 msgstr "invalid SDT probe descriptor\n"
 
-#: libebl/eblobjnote.c:144
+#: libebl/eblobjnote.c:123
 #, c-format
 msgid "    PC: "
 msgstr "    PC: "
 
-#: libebl/eblobjnote.c:146
+#: libebl/eblobjnote.c:125
 #, c-format
 msgid " Base: "
 msgstr " Base: "
 
-#: libebl/eblobjnote.c:148
+#: libebl/eblobjnote.c:127
 #, c-format
 msgid " Semaphore: "
 msgstr " Semaphore: "
 
-#: libebl/eblobjnote.c:150
+#: libebl/eblobjnote.c:129
 #, c-format
 msgid "    Provider: "
 msgstr "    Provider: "
 
-#: libebl/eblobjnote.c:152
+#: libebl/eblobjnote.c:131
 #, c-format
 msgid " Name: "
 msgstr " Name: "
 
-#: libebl/eblobjnote.c:154
+#: libebl/eblobjnote.c:133
 #, c-format
 msgid " Args: "
 msgstr " Args: "
 
-#: libebl/eblobjnote.c:164
+#: libebl/eblobjnote.c:143
 #, c-format
 msgid "    Build ID: "
 msgstr "    Build ID: "
 
-#: libebl/eblobjnote.c:175
+#: libebl/eblobjnote.c:154
 #, c-format
 msgid "    Linker version: %.*s\n"
 msgstr "    Linker version: %.*s\n"
 
-#: libebl/eblobjnote.c:224
+#: libebl/eblobjnote.c:203
 #, c-format
 msgid "    OS: %s, ABI: "
 msgstr "    OS: %s, ABI: "
 
-#: libebl/eblosabiname.c:95
+#: libebl/eblosabiname.c:74
 msgid "Stand alone"
 msgstr "Stand alone"
 
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
+#: libebl/eblsymbolbindingname.c:71 libebl/eblsymboltypename.c:77
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<unknown>: %d"
 
-#: libelf/elf_error.c:88
+#: libelf/elf_error.c:67
 msgid "unknown version"
 msgstr "unknown version"
 
-#: libelf/elf_error.c:92
+#: libelf/elf_error.c:71
 msgid "unknown type"
 msgstr "unknown type"
 
-#: libelf/elf_error.c:96
+#: libelf/elf_error.c:75
 msgid "invalid `Elf' handle"
 msgstr "invalid ‘Elf’ handle"
 
-#: libelf/elf_error.c:100
+#: libelf/elf_error.c:79
 msgid "invalid size of source operand"
 msgstr "invalid size of source operand"
 
-#: libelf/elf_error.c:104
+#: libelf/elf_error.c:83
 msgid "invalid size of destination operand"
 msgstr "invalid size of destination operand"
 
-#: libelf/elf_error.c:108 src/readelf.c:5176
+#: libelf/elf_error.c:87 src/readelf.c:5367
 #, c-format
 msgid "invalid encoding"
 msgstr "invalid encoding"
 
-#: libelf/elf_error.c:116
+#: libelf/elf_error.c:95
 msgid "invalid file descriptor"
 msgstr "invalid file descriptor"
 
-#: libelf/elf_error.c:120
+#: libelf/elf_error.c:99
 msgid "invalid operation"
 msgstr "invalid operation"
 
-#: libelf/elf_error.c:124
+#: libelf/elf_error.c:103
 msgid "ELF version not set"
 msgstr "ELF version not set"
 
-#: libelf/elf_error.c:136
+#: libelf/elf_error.c:115
 msgid "invalid fmag field in archive header"
 msgstr "invalid fmag field in archive header"
 
-#: libelf/elf_error.c:140
+#: libelf/elf_error.c:119
 msgid "invalid archive file"
 msgstr "invalid archive file"
 
-#: libelf/elf_error.c:144
+#: libelf/elf_error.c:123
 msgid "descriptor is not for an archive"
 msgstr "descriptor is not for an archive"
 
-#: libelf/elf_error.c:148
+#: libelf/elf_error.c:127
 msgid "no index available"
 msgstr "no index available"
 
-#: libelf/elf_error.c:152
+#: libelf/elf_error.c:131
 msgid "cannot read data from file"
 msgstr "cannot read data from file"
 
-#: libelf/elf_error.c:156
+#: libelf/elf_error.c:135
 msgid "cannot write data to file"
 msgstr "cannot write data to file"
 
-#: libelf/elf_error.c:160
+#: libelf/elf_error.c:139
 msgid "invalid binary class"
 msgstr "invalid binary class"
 
-#: libelf/elf_error.c:164
+#: libelf/elf_error.c:143
 msgid "invalid section index"
 msgstr "invalid section index"
 
-#: libelf/elf_error.c:168
+#: libelf/elf_error.c:147
 msgid "invalid operand"
 msgstr "invalid operand"
 
-#: libelf/elf_error.c:172
+#: libelf/elf_error.c:151
 msgid "invalid section"
 msgstr "invalid section"
 
-#: libelf/elf_error.c:180
+#: libelf/elf_error.c:159
 msgid "executable header not created first"
 msgstr "executable header not created first"
 
-#: libelf/elf_error.c:184
+#: libelf/elf_error.c:163
 msgid "file descriptor disabled"
 msgstr "file descriptor disabled"
 
-#: libelf/elf_error.c:188
+#: libelf/elf_error.c:167
 msgid "archive/member file descriptor mismatch"
 msgstr "archive/member file descriptor mismatch"
 
-#: libelf/elf_error.c:196
+#: libelf/elf_error.c:175
 msgid "cannot manipulate null section"
 msgstr "cannot manipulate null section"
 
-#: libelf/elf_error.c:200
+#: libelf/elf_error.c:179
 msgid "data/scn mismatch"
 msgstr "data/scn mismatch"
 
-#: libelf/elf_error.c:204
+#: libelf/elf_error.c:183
 msgid "invalid section header"
 msgstr "invalid section header"
 
-#: libelf/elf_error.c:208 src/readelf.c:6850 src/readelf.c:6951
-#: src/readelf.c:7113
+#: libelf/elf_error.c:187 src/readelf.c:7235 src/readelf.c:7683
+#: src/readelf.c:7784 src/readelf.c:7954
 #, c-format
 msgid "invalid data"
 msgstr "invalid data"
 
-#: libelf/elf_error.c:212
+#: libelf/elf_error.c:191
 msgid "unknown data encoding"
 msgstr "unknown data encoding"
 
-#: libelf/elf_error.c:216
+#: libelf/elf_error.c:195
 msgid "section `sh_size' too small for data"
 msgstr "section ‘sh_size’ too small for data"
 
-#: libelf/elf_error.c:220
+#: libelf/elf_error.c:199
 msgid "invalid section alignment"
 msgstr "invalid section alignment"
 
-#: libelf/elf_error.c:224
+#: libelf/elf_error.c:203
 msgid "invalid section entry size"
 msgstr "invalid section entry size"
 
-#: libelf/elf_error.c:228
+#: libelf/elf_error.c:207
 msgid "update() for write on read-only file"
 msgstr "update() for write on read-only file"
 
-#: libelf/elf_error.c:232
+#: libelf/elf_error.c:211
 msgid "no such file"
 msgstr "no such file"
 
-#: libelf/elf_error.c:236
+#: libelf/elf_error.c:215
 msgid "only relocatable files can contain section groups"
 msgstr "only relocatable files can contain section groups"
 
-#: libelf/elf_error.c:241
+#: libelf/elf_error.c:220
 msgid ""
 "program header only allowed in executables, shared objects, and core files"
 msgstr ""
 "program header only allowed in executables, shared objects, and core files"
 
-#: libelf/elf_error.c:248
+#: libelf/elf_error.c:227
 msgid "file has no program header"
 msgstr "file has no program header"
 
-#: src/addr2line.c:66
+#: src/addr2line.c:58
 msgid "Output selection options:"
 msgstr "Output selection options:"
 
-#: src/addr2line.c:67
+#: src/addr2line.c:59
 msgid "Show only base names of source files"
 msgstr "Show only base names of source files"
 
-#: src/addr2line.c:69
+#: src/addr2line.c:61
 msgid "Show absolute file names using compilation directory"
 msgstr "Show absolute file names using compilation directory"
 
-#: src/addr2line.c:70
+#: src/addr2line.c:62
 msgid "Also show function names"
 msgstr "Also show function names"
 
-#: src/addr2line.c:71
+#: src/addr2line.c:63
 msgid "Also show symbol or section names"
 msgstr "Also show symbol or section names"
 
-#: src/addr2line.c:72
+#: 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:74
+#: 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:76 src/elfcmp.c:80 src/findtextrel.c:75 src/nm.c:108
-#: src/strings.c:83
+#: 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:85
+#: 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:89
+#: src/addr2line.c:85
 msgid "[ADDR...]"
 msgstr "[ADDR...]"
 
-#: src/addr2line.c:189 src/ar.c:296 src/elfcmp.c:670 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:273 src/objdump.c:189
-#: src/ranlib.c:136 src/readelf.c:462 src/size.c:219 src/strings.c:227
-#: src/strip.c:221 src/unstrip.c:234
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:663 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: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"
@@ -668,302 +744,302 @@
 "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:194 src/ar.c:301 src/elfcmp.c:675 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:278 src/objdump.c:194
-#: src/ranlib.c:141 src/readelf.c:467 src/size.c:224 src/strings.c:232
-#: src/strip.c:226 src/unstrip.c:239
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:668 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: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:413
+#: src/addr2line.c:474
 #, c-format
 msgid "Section syntax requires exactly one module"
 msgstr "Section syntax requires exactly one module"
 
-#: src/addr2line.c:436
+#: src/addr2line.c:497
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside section '%s'"
 msgstr "offset %#<PRIxMAX> lies outside section ‘%s’"
 
-#: src/addr2line.c:477
+#: src/addr2line.c:563
 #, c-format
 msgid "cannot find symbol '%s'"
 msgstr "cannot find symbol ‘%s’"
 
-#: src/addr2line.c:482
+#: src/addr2line.c:568
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
 msgstr "offset %#<PRIxMAX> lies outside contents of ‘%s’"
 
-#: src/ar.c:76
+#: src/ar.c:69
 msgid "Commands:"
 msgstr "Commands:"
 
-#: src/ar.c:77
+#: src/ar.c:70
 msgid "Delete files from archive."
 msgstr "Delete files from archive."
 
-#: src/ar.c:78
+#: src/ar.c:71
 msgid "Move files in archive."
 msgstr "Move files in archive."
 
-#: src/ar.c:79
+#: src/ar.c:72
 msgid "Print files in archive."
 msgstr "Print files in archive."
 
-#: src/ar.c:80
+#: src/ar.c:73
 msgid "Quick append files to archive."
 msgstr "Quick append files to archive."
 
-#: src/ar.c:82
+#: src/ar.c:75
 msgid "Replace existing or insert new file into archive."
 msgstr "Replace existing or insert new file into archive."
 
-#: src/ar.c:83
+#: src/ar.c:76
 msgid "Display content of archive."
 msgstr "Display content of archive."
 
-#: src/ar.c:84
+#: src/ar.c:77
 msgid "Extract files from archive."
 msgstr "Extract files from archive."
 
-#: src/ar.c:86
+#: src/ar.c:79
 msgid "Command Modifiers:"
 msgstr "Command Modifiers:"
 
-#: src/ar.c:87
+#: src/ar.c:80
 msgid "Preserve original dates."
 msgstr "Preserve original dates."
 
-#: src/ar.c:88
+#: src/ar.c:81
 msgid "Use instance [COUNT] of name."
 msgstr "Use instance [COUNT] of name."
 
-#: src/ar.c:90
+#: src/ar.c:83
 msgid "Do not replace existing files with extracted files."
 msgstr "Do not replace existing files with extracted files."
 
-#: src/ar.c:91
+#: src/ar.c:84
 msgid "Allow filename to be truncated if necessary."
 msgstr "Allow filename to be truncated if necessary."
 
-#: src/ar.c:93
+#: src/ar.c:86
 msgid "Provide verbose output."
 msgstr "Provide verbose output."
 
-#: src/ar.c:94
+#: src/ar.c:87
 msgid "Force regeneration of symbol table."
 msgstr "Force regeneration of symbol table."
 
-#: src/ar.c:95
+#: src/ar.c:88
 msgid "Insert file after [MEMBER]."
 msgstr "Insert file after [MEMBER]."
 
-#: src/ar.c:96
+#: src/ar.c:89
 msgid "Insert file before [MEMBER]."
 msgstr "Insert file before [MEMBER]."
 
-#: src/ar.c:97
+#: src/ar.c:90
 msgid "Same as -b."
 msgstr "Same as -b."
 
-#: src/ar.c:98
+#: src/ar.c:91
 msgid "Suppress message when library has to be created."
 msgstr "Suppress message when library has to be created."
 
-#: src/ar.c:100
+#: src/ar.c:93
 msgid "Use full path for file matching."
 msgstr "Use full path for file matching."
 
-#: src/ar.c:101
+#: src/ar.c:94
 msgid "Update only older files in archive."
 msgstr "Update only older files in archive."
 
-#: src/ar.c:107
+#: src/ar.c:100
 msgid "Create, modify, and extract from archives."
 msgstr "Create, modify, and extract from archives."
 
-#: src/ar.c:110
+#: src/ar.c:103
 msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 msgstr "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 
-#: src/ar.c:192
+#: src/ar.c:185
 #, c-format
 msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
 msgstr ""
 "'a', 'b', and ‘i’ are only allowed with the ‘m’ and ‘r’ "
 "options"
 
-#: src/ar.c:197
+#: src/ar.c:190
 #, c-format
 msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
 msgstr "MEMBER parameter required for 'a', 'b', and ‘i’ modifiers"
 
-#: src/ar.c:213
+#: src/ar.c:206
 #, c-format
 msgid "'N' is only meaningful with the 'x' and 'd' options"
 msgstr "‘N’ is only meaningful with the ‘x’ and ‘d’ options"
 
-#: src/ar.c:218
+#: src/ar.c:211
 #, c-format
 msgid "COUNT parameter required"
 msgstr "COUNT parameter required"
 
-#: src/ar.c:230
+#: src/ar.c:223
 #, c-format
 msgid "invalid COUNT parameter %s"
 msgstr "invalid COUNT parameter %s"
 
-#: src/ar.c:237
+#: src/ar.c:230
 #, c-format
 msgid "'%c' is only meaningful with the 'x' option"
 msgstr "‘%c’ is only meaningful with the ‘x’ option"
 
-#: src/ar.c:243
+#: src/ar.c:236
 #, c-format
 msgid "archive name required"
 msgstr "archive name required"
 
-#: src/ar.c:256
+#: src/ar.c:249
 #, c-format
 msgid "command option required"
 msgstr "command option required"
 
-#: src/ar.c:321
+#: src/ar.c:314
 #, c-format
 msgid "More than one operation specified"
 msgstr "More than one operation specified"
 
-#: src/ar.c:415
+#: src/ar.c:408
 #, c-format
 msgid "cannot open archive '%s'"
 msgstr "cannot open archive ‘%s’"
 
-#: src/ar.c:425
+#: src/ar.c:418
 #, c-format
 msgid "cannot open archive '%s': %s"
 msgstr "cannot open archive '%s': %s"
 
-#: src/ar.c:429
+#: src/ar.c:422
 #, c-format
 msgid "%s: not an archive file"
 msgstr "%s: not an archive file"
 
-#: src/ar.c:433
+#: src/ar.c:426
 #, c-format
 msgid "cannot stat archive '%s'"
 msgstr "cannot stat archive ‘%s’"
 
-#: src/ar.c:445
+#: src/ar.c:438
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "no entry %s in archive\n"
 
-#: src/ar.c:498 src/ar.c:940 src/ar.c:1140
+#: src/ar.c:491 src/ar.c:933 src/ar.c:1133
 #, c-format
 msgid "cannot create hash table"
 msgstr "cannot create hash table"
 
-#: src/ar.c:505 src/ar.c:947 src/ar.c:1149
+#: src/ar.c:498 src/ar.c:940 src/ar.c:1142
 #, c-format
 msgid "cannot insert into hash table"
 msgstr "cannot insert into hash table"
 
-#: src/ar.c:513 src/ranlib.c:176
+#: src/ar.c:506 src/ranlib.c:168
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "cannot stat ‘%s’"
 
-#: src/ar.c:609
+#: src/ar.c:602
 #, c-format
 msgid "cannot read content of %s: %s"
 msgstr "cannot read content of %s: %s"
 
-#: src/ar.c:652
+#: src/ar.c:645
 #, c-format
 msgid "cannot open %.*s"
 msgstr "cannot open %.*s"
 
-#: src/ar.c:674
+#: src/ar.c:667
 #, c-format
 msgid "failed to write %s"
 msgstr "failed to write %s"
 
-#: src/ar.c:686
+#: src/ar.c:679
 #, c-format
 msgid "cannot change mode of %s"
 msgstr "cannot change mode of %s"
 
-#: src/ar.c:702
+#: src/ar.c:695
 #, c-format
 msgid "cannot change modification time of %s"
 msgstr "cannot change modification time of %s"
 
-#: src/ar.c:748
+#: src/ar.c:741
 #, c-format
 msgid "cannot rename temporary file to %.*s"
 msgstr "cannot rename temporary file to %.*s"
 
-#: src/ar.c:784 src/ar.c:1032 src/ar.c:1431 src/ranlib.c:250
+#: src/ar.c:777 src/ar.c:1025 src/ar.c:1424 src/ranlib.c:242
 #, c-format
 msgid "cannot create new file"
 msgstr "cannot create new file"
 
-#: src/ar.c:1231
+#: src/ar.c:1224
 #, c-format
 msgid "position member %s not found"
 msgstr "position member %s not found"
 
-#: src/ar.c:1241
+#: src/ar.c:1234
 #, c-format
 msgid "%s: no entry %s in archive!\n"
 msgstr "%s: no entry %s in archive!\n"
 
-#: src/ar.c:1270 src/ldgeneric.c:517 src/objdump.c:265
+#: src/ar.c:1263 src/ldgeneric.c:509 src/objdump.c:257
 #, c-format
 msgid "cannot open %s"
 msgstr "cannot open %s"
 
-#: src/ar.c:1275
+#: src/ar.c:1268
 #, c-format
 msgid "cannot stat %s"
 msgstr "cannot stat %s"
 
-#: src/ar.c:1281
+#: src/ar.c:1274
 #, c-format
 msgid "%s is no regular file"
 msgstr "%s is no regular file"
 
-#: src/ar.c:1294
+#: src/ar.c:1287
 #, c-format
 msgid "cannot get ELF descriptor for %s: %s\n"
 msgstr "cannot get ELF descriptor for %s: %s\n"
 
-#: src/ar.c:1314
+#: src/ar.c:1307
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "cannot read %s: %s"
 
-#: src/arlib.c:216
+#: src/arlib.c:209
 #, c-format
 msgid "the archive '%s' is too large"
 msgstr "the archive ‘%s’ is too large"
 
-#: src/arlib.c:229
+#: src/arlib.c:222
 #, c-format
 msgid "cannot read ELF header of %s(%s): %s"
 msgstr "cannot read ELF header of %s(%s): %s"
 
-#: src/elfcmp.c:70
+#: src/elfcmp.c:62
 msgid "Control options:"
 msgstr "Control options:"
 
-#: src/elfcmp.c:72
+#: src/elfcmp.c:64
 msgid "Output all differences, not just the first"
 msgstr "Output all differences, not just the first"
 
-#: src/elfcmp.c:73
+#: src/elfcmp.c:65
 msgid ""
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
@@ -971,211 +1047,211 @@
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
 
-#: src/elfcmp.c:75
+#: src/elfcmp.c:67
 msgid "Ignore permutation of buckets in SHT_HASH section"
 msgstr "Ignore permutation of buckets in SHT_HASH section"
 
-#: src/elfcmp.c:77
+#: src/elfcmp.c:69
 msgid "Ignore differences in build ID"
 msgstr "Ignore differences in build ID"
 
-#: src/elfcmp.c:78
+#: src/elfcmp.c:70
 msgid "Output nothing; yield exit status only"
 msgstr "Output nothing; yield exit status only"
 
-#: src/elfcmp.c:85
+#: src/elfcmp.c:77
 msgid "Compare relevant parts of two ELF files for equality."
 msgstr "Compare relevant parts of two ELF files for equality."
 
-#: src/elfcmp.c:89
+#: src/elfcmp.c:81
 msgid "FILE1 FILE2"
 msgstr "FILE1 FILE2"
 
-#: src/elfcmp.c:151
+#: src/elfcmp.c:143
 msgid "Invalid number of parameters.\n"
 msgstr "Invalid number of parameters.\n"
 
-#: src/elfcmp.c:182 src/elfcmp.c:187
+#: src/elfcmp.c:174 src/elfcmp.c:179
 #, c-format
 msgid "cannot get ELF header of '%s': %s"
 msgstr "cannot get ELF header of '%s': %s"
 
-#: src/elfcmp.c:213
+#: src/elfcmp.c:205
 #, c-format
 msgid "%s %s diff: ELF header"
 msgstr "%s %s diff: ELF header"
 
-#: src/elfcmp.c:220 src/elfcmp.c:223
+#: src/elfcmp.c:212 src/elfcmp.c:215
 #, c-format
 msgid "cannot get section count of '%s': %s"
 msgstr "cannot get section count of '%s': %s"
 
-#: src/elfcmp.c:228
+#: src/elfcmp.c:220
 #, c-format
 msgid "%s %s diff: section count"
 msgstr "%s %s diff: section count"
 
-#: src/elfcmp.c:235 src/elfcmp.c:238
+#: src/elfcmp.c:227 src/elfcmp.c:230
 #, c-format
 msgid "cannot get program header count of '%s': %s"
 msgstr "cannot get program header count of '%s': %s"
 
-#: src/elfcmp.c:243
+#: src/elfcmp.c:235
 #, c-format
 msgid "%s %s diff: program header count"
 msgstr "%s %s diff: program header count"
 
-#: src/elfcmp.c:300
+#: src/elfcmp.c:292
 #, c-format
 msgid "%s %s differ: section [%zu], [%zu] name"
 msgstr "%s %s differ: section [%zu], [%zu] name"
 
-#: src/elfcmp.c:323
+#: src/elfcmp.c:315
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' header"
 msgstr "%s %s differ: section [%zu] ‘%s’ header"
 
-#: src/elfcmp.c:331 src/elfcmp.c:337
+#: src/elfcmp.c:323 src/elfcmp.c:329
 #, c-format
 msgid "cannot get content of section %zu in '%s': %s"
 msgstr "cannot get content of section %zu in '%s': %s"
 
-#: src/elfcmp.c:353 src/elfcmp.c:359
+#: src/elfcmp.c:345 src/elfcmp.c:351
 #, c-format
 msgid "cannot get symbol in '%s': %s"
 msgstr "cannot get symbol in '%s': %s"
 
-#: src/elfcmp.c:380
+#: src/elfcmp.c:373
 #, c-format
 msgid "%s %s differ: symbol table [%zu]"
 msgstr "%s %s differ: symbol table [%zu]"
 
-#: src/elfcmp.c:383
+#: src/elfcmp.c:376
 #, c-format
 msgid "%s %s differ: symbol table [%zu,%zu]"
 msgstr "%s %s differ: symbol table [%zu,%zu]"
 
-#: src/elfcmp.c:429 src/elfcmp.c:498
+#: src/elfcmp.c:422 src/elfcmp.c:491
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' number of notes"
 msgstr "%s %s differ: section [%zu] ‘%s’ number of notes"
 
-#: src/elfcmp.c:437
+#: src/elfcmp.c:430
 #, c-format
 msgid "cannot read note section [%zu] '%s' in '%s': %s"
 msgstr "cannot read note section [%zu] ‘%s’ in '%s': %s"
 
-#: src/elfcmp.c:447
+#: src/elfcmp.c:440
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note name"
 msgstr "%s %s differ: section [%zu] ‘%s’ note name"
 
-#: src/elfcmp.c:455
+#: src/elfcmp.c:448
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' type"
 msgstr "%s %s differ: section [%zu] ‘%s’ note ‘%s’ type"
 
-#: src/elfcmp.c:470
+#: src/elfcmp.c:463
 #, c-format
 msgid "%s %s differ: build ID length"
 msgstr "%s %s differ: build ID length"
 
-#: src/elfcmp.c:478
+#: src/elfcmp.c:471
 #, c-format
 msgid "%s %s differ: build ID content"
 msgstr "%s %s differ: build ID content"
 
-#: src/elfcmp.c:487
+#: src/elfcmp.c:480
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' content"
 msgstr "%s %s differ: section [%zu] ‘%s’ note ‘%s’ content"
 
-#: src/elfcmp.c:527
+#: src/elfcmp.c:520
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' content"
 msgstr "%s %s differ: section [%zu] ‘%s’ content"
 
-#: src/elfcmp.c:531
+#: src/elfcmp.c:524
 #, c-format
 msgid "%s %s differ: section [%zu,%zu] '%s' content"
 msgstr "%s %s differ: section [%zu,%zu] ‘%s’ content"
 
-#: src/elfcmp.c:546
+#: src/elfcmp.c:539
 #, c-format
 msgid "%s %s differ: unequal amount of important sections"
 msgstr "%s %s differ: unequal amount of important sections"
 
-#: src/elfcmp.c:579 src/elfcmp.c:584
+#: src/elfcmp.c:572 src/elfcmp.c:577
 #, c-format
 msgid "cannot load data of '%s': %s"
 msgstr "cannot load data of '%s': %s"
 
-#: src/elfcmp.c:603 src/elfcmp.c:609
+#: src/elfcmp.c:596 src/elfcmp.c:602
 #, c-format
 msgid "cannot get program header entry %d of '%s': %s"
 msgstr "cannot get program header entry %d of '%s': %s"
 
-#: src/elfcmp.c:615
+#: src/elfcmp.c:608
 #, c-format
 msgid "%s %s differ: program header %d"
 msgstr "%s %s differ: program header %d"
 
-#: src/elfcmp.c:639
+#: src/elfcmp.c:632
 #, c-format
 msgid "%s %s differ: gap"
 msgstr "%s %s differ: gap"
 
-#: src/elfcmp.c:702
+#: src/elfcmp.c:695
 #, c-format
 msgid "Invalid value '%s' for --gaps parameter."
 msgstr "Invalid value ‘%s’ for --gaps parameter."
 
-#: src/elfcmp.c:730 src/findtextrel.c:229 src/ldgeneric.c:1765
-#: src/ldgeneric.c:4255 src/nm.c:389 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:458 src/strip.c:495 src/unstrip.c:1911
-#: src/unstrip.c:1940
+#: src/elfcmp.c:723 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:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1923
+#: src/unstrip.c:1952
 #, c-format
 msgid "cannot open '%s'"
 msgstr "cannot open ‘%s’"
 
-#: src/elfcmp.c:734 src/findtextrel.c:236 src/ranlib.c:186
+#: src/elfcmp.c:727 src/findtextrel.c:228 src/ranlib.c:178
 #, c-format
 msgid "cannot create ELF descriptor for '%s': %s"
 msgstr "cannot create ELF descriptor for '%s': %s"
 
-#: src/elfcmp.c:739
+#: src/elfcmp.c:732
 #, c-format
 msgid "cannot create EBL descriptor for '%s'"
 msgstr "cannot create EBL descriptor for ‘%s’"
 
-#: src/elfcmp.c:757
+#: src/elfcmp.c:750
 #, c-format
 msgid "cannot get section header of section %zu: %s"
 msgstr "cannot get section header of section %zu: %s"
 
-#: src/elfcmp.c:767
+#: src/elfcmp.c:760
 #, c-format
 msgid "cannot get content of section %zu: %s"
 msgstr "cannot get content of section %zu: %s"
 
-#: src/elfcmp.c:777 src/elfcmp.c:791
+#: src/elfcmp.c:770 src/elfcmp.c:784
 #, c-format
 msgid "cannot get relocation: %s"
 msgstr "cannot get relocation: %s"
 
-#: src/elflint.c:72
+#: src/elflint.c:64
 msgid "Be extremely strict, flag level 2 features."
 msgstr "Be extremely strict, flag level 2 features."
 
-#: src/elflint.c:73
+#: src/elflint.c:65
 msgid "Do not print anything if successful"
 msgstr "Do not print anything if successful"
 
-#: src/elflint.c:74
+#: src/elflint.c:66
 msgid "Binary is a separate debuginfo file"
 msgstr "Binary is a separate debuginfo file"
 
-#: src/elflint.c:76
+#: src/elflint.c:68
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1183,163 +1259,163 @@
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
 
-#: src/elflint.c:82
+#: src/elflint.c:74
 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:86 src/readelf.c:119
+#: src/elflint.c:78 src/readelf.c:123
 msgid "FILE..."
 msgstr "FILE..."
 
-#: src/elflint.c:159 src/readelf.c:275
+#: src/elflint.c:155 src/readelf.c:292
 #, c-format
 msgid "cannot open input file"
 msgstr "cannot open input file"
 
-#: src/elflint.c:166
+#: src/elflint.c:162
 #, c-format
 msgid "cannot generate Elf descriptor: %s\n"
 msgstr "cannot generate Elf descriptor: %s\n"
 
-#: src/elflint.c:185
+#: 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:189
+#: src/elflint.c:185
 msgid "No errors"
 msgstr "No errors"
 
-#: src/elflint.c:223 src/readelf.c:436
+#: src/elflint.c:219 src/readelf.c:468
 msgid "Missing file name.\n"
 msgstr "Missing file name.\n"
 
-#: src/elflint.c:302
+#: 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:310
+#: 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:370
+#: 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:375
+#: 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:379
+#: 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:385
+#: 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:391
+#: 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:396
+#: 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:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "unknown object file type %d\n"
 
-#: src/elflint.c:408
+#: src/elflint.c:409
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "unknown machine type %d\n"
 
-#: src/elflint.c:412
+#: src/elflint.c:413
 #, c-format
 msgid "unknown object file version\n"
 msgstr "unknown object file version\n"
 
-#: src/elflint.c:418
+#: src/elflint.c:419
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "invalid program header offset\n"
 
-#: src/elflint.c:420
+#: 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:424
+#: 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:432
+#: src/elflint.c:433
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr "invalid section header table offset\n"
 
-#: src/elflint.c:435
+#: 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:449
+#: 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:466
+#: src/elflint.c:467
 #, c-format
 msgid "invalid section header index\n"
 msgstr "invalid section header index\n"
 
-#: src/elflint.c:480
+#: 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:489
+#: src/elflint.c:490
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "invalid machine flags: %s\n"
 
-#: src/elflint.c:496 src/elflint.c:513
+#: 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:499 src/elflint.c:516
+#: 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:502 src/elflint.c:519
+#: 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:505 src/elflint.c:522
+#: 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:508 src/elflint.c:525
+#: 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:569
+#: src/elflint.c:570
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1348,7 +1424,7 @@
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
 "group\n"
 
-#: src/elflint.c:573
+#: src/elflint.c:574
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
@@ -1356,14 +1432,14 @@
 "section [%2d] '%s': section group [%2zu] ‘%s’ does not precede group "
 "member\n"
 
-#: src/elflint.c:589 src/elflint.c:1433 src/elflint.c:1483 src/elflint.c:1588
-#: src/elflint.c:2173 src/elflint.c:2687 src/elflint.c:2848 src/elflint.c:2978
-#: src/elflint.c:3150 src/elflint.c:4050
+#: 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:602 src/elflint.c:1595
+#: src/elflint.c:603 src/elflint.c:1621
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1372,7 +1448,7 @@
 "section [%2d] '%s': referenced as string table for section [%2d] ‘%s’ "
 "but type is not SHT_STRTAB\n"
 
-#: src/elflint.c:625
+#: src/elflint.c:626
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1381,38 +1457,38 @@
 "section [%2d] '%s': symbol table cannot have more than one extended index "
 "section\n"
 
-#: src/elflint.c:636
+#: 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:645
+#: 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:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
+#: 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:668
+#: 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:678
+#: 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:687
+#: 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:701
+#: src/elflint.c:704
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: too large section index but no extended "
@@ -1421,7 +1497,7 @@
 "section [%2d] '%s': symbol %zu: too large section index but no extended "
 "section index section\n"
 
-#: src/elflint.c:707
+#: src/elflint.c:710
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
@@ -1430,51 +1506,51 @@
 "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
 "st_shndx (%<PRIu32>)\n"
 
-#: src/elflint.c:719
+#: 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:727
+#: 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:733
+#: 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:738
+#: 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:746
+#: 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:750
+#: 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:754
+#: 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:786
+#: 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:792 src/elflint.c:817 src/elflint.c:860
+#: 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 "
@@ -1483,7 +1559,7 @@
 "section [%2d] '%s': symbol %zu does not fit completely in referenced section "
 "[%2d] ‘%s’\n"
 
-#: src/elflint.c:801
+#: src/elflint.c:819
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
@@ -1492,7 +1568,7 @@
 "section [%2d] '%s': symbol %zu: referenced section [%2d] ‘%s’ does not "
 "have SHF_TLS flag set\n"
 
-#: src/elflint.c:811 src/elflint.c:853
+#: src/elflint.c:829 src/elflint.c:871
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
@@ -1501,14 +1577,14 @@
 "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
 "[%2d] ‘%s’\n"
 
-#: src/elflint.c:838
+#: 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:846
+#: src/elflint.c:864
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
@@ -1517,7 +1593,7 @@
 "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
 "‘%s’\n"
 
-#: src/elflint.c:873
+#: src/elflint.c:891
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: local symbol outside range described in "
@@ -1526,7 +1602,7 @@
 "section [%2d] '%s': symbol %zu: local symbol outside range described in "
 "sh_info\n"
 
-#: src/elflint.c:880
+#: src/elflint.c:898
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
@@ -1535,12 +1611,12 @@
 "section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
 "sh_info\n"
 
-#: src/elflint.c:887
+#: 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:937
+#: src/elflint.c:955
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1549,7 +1625,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
 "[%2d]\n"
 
-#: src/elflint.c:944
+#: src/elflint.c:962
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1558,7 +1634,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] ‘"
 "%s’\n"
 
-#: src/elflint.c:960
+#: src/elflint.c:978
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1567,7 +1643,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
 "match %s section address %#<PRIx64>\n"
 
-#: src/elflint.c:967
+#: src/elflint.c:985
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1576,7 +1652,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
 "match %s section size %<PRIu64>\n"
 
-#: src/elflint.c:975
+#: src/elflint.c:993
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1585,7 +1661,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
 "section\n"
 
-#: src/elflint.c:991
+#: src/elflint.c:1009
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1594,7 +1670,7 @@
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
 "segment address %#<PRIx64>\n"
 
-#: src/elflint.c:998
+#: src/elflint.c:1016
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1603,7 +1679,7 @@
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
 "segment size %<PRIu64>\n"
 
-#: src/elflint.c:1011
+#: src/elflint.c:1029
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
@@ -1612,22 +1688,22 @@
 "section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
 "default visibility\n"
 
-#: src/elflint.c:1015
+#: 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:1060
+#: 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:1069 src/elflint.c:1121
+#: 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:1094 src/elflint.c:1146
+#: src/elflint.c:1118 src/elflint.c:1170
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1636,7 +1712,7 @@
 "section [%2d] '%s': relative relocations after index %d as specified by "
 "DT_RELCOUNT\n"
 
-#: src/elflint.c:1100 src/elflint.c:1152
+#: src/elflint.c:1124 src/elflint.c:1176
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -1645,47 +1721,47 @@
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
 "specified %d relative relocations\n"
 
-#: src/elflint.c:1112
+#: 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:1194
+#: 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:1207
+#: 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:1215
+#: 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:1222
+#: 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:1229
+#: 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:1289
+#: 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:1316
+#: 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:1324
+#: src/elflint.c:1348
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -1694,26 +1770,26 @@
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
 "type\n"
 
-#: src/elflint.c:1332
+#: 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:1350
+#: 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 ‘_GLOBAL_OFFSET_TABLE_"
-"[0m’ can be used with %s\n"
+"section [%2d] '%s': relocation %zu: only symbol "
+"‘_GLOBAL_OFFSET_TABLE_’ can be used with %s\n"
 
-#: src/elflint.c:1367
+#: 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:1382
+#: src/elflint.c:1406
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -1722,7 +1798,7 @@
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
 "%s\n"
 
-#: src/elflint.c:1403
+#: src/elflint.c:1427
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -1731,64 +1807,64 @@
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
 "relocation flag not set\n"
 
-#: src/elflint.c:1418
+#: 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:1457 src/elflint.c:1507
+#: 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:1583
+#: 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:1601
+#: 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:1606 src/elflint.c:1889
+#: 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:1616
+#: 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:1624
+#: 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:1631
+#: 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:1642
+#: 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:1652
+#: 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:1670
+#: 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:1683
+#: src/elflint.c:1710
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -1797,14 +1873,14 @@
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
 "[%2d] ‘%s’ referenced by sh_link\n"
 
-#: src/elflint.c:1726
+#: 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:1741
+#: src/elflint.c:1768
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -1813,71 +1889,71 @@
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
 "[%2d] ‘%s’\n"
 
-#: src/elflint.c:1761 src/elflint.c:1789
+#: 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:1773
+#: 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:1782
+#: 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:1797 src/elflint.c:1804
+#: 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:1814 src/elflint.c:1818
+#: 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:1824
+#: 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:1835 src/elflint.c:1839 src/elflint.c:1843 src/elflint.c:1847
+#: 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:1859
+#: 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:1869
+#: 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:1874
+#: 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:1877
+#: 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:1884
+#: 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:1899
+#: src/elflint.c:1928
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -1886,75 +1962,75 @@
 "section [%2d] '%s': extended section index in section [%2zu] ‘%s’ "
 "refers to same symbol table\n"
 
-#: src/elflint.c:1910
+#: 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:1922
+#: 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:1927
+#: 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:1943 src/elflint.c:1984
+#: 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:1955 src/elflint.c:1996
+#: 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:1964 src/elflint.c:2005
+#: 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:1970
+#: 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:2011
+#: 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:2026
+#: 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:2037
+#: 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:2045
+#: 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:2077
+#: 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:2098
+#: src/elflint.c:2153
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -1963,51 +2039,51 @@
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
 "undefined\n"
 
-#: src/elflint.c:2109
+#: 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:2140
+#: 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:2145
+#: 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:2151
+#: 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:2164
+#: 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:2182
+#: 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:2190
+#: 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:2195
+#: 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:2200
+#: src/elflint.c:2255
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2016,19 +2092,19 @@
 "section [%2d] '%s': hash table has not even room for initial administrative "
 "entries\n"
 
-#: src/elflint.c:2248
+#: 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:2326 src/elflint.c:2330
+#: 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:2337
+#: src/elflint.c:2392
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2037,7 +2113,7 @@
 "symbol %d referenced in new hash table in [%2zu] ‘%s’ but not in old "
 "hash table in [%2zu] ‘%s’\n"
 
-#: src/elflint.c:2349
+#: src/elflint.c:2404
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2046,100 +2122,100 @@
 "symbol %d referenced in old hash table in [%2zu] ‘%s’ but not in new "
 "hash table in [%2zu] ‘%s’\n"
 
-#: src/elflint.c:2365
+#: 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:2385
+#: 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:2396
+#: 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:2401
+#: 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:2407
+#: 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:2412
+#: 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:2419
+#: 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:2424
+#: 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:2430
+#: 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:2436
+#: 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:2445
+#: 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:2450
+#: 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:2456
+#: 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:2460
+#: 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:2471
+#: 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:2483
+#: 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:2492
+#: 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:2499
+#: 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:2505
+#: src/elflint.c:2560
 #, c-format
 msgid ""
 "section [%2d] '%s': element %Zu references section [%2d] '%s' without "
@@ -2148,12 +2224,12 @@
 "section [%2d] '%s': element %Zu references section [%2d] ‘%s’ without "
 "SHF_GROUP flag set\n"
 
-#: src/elflint.c:2512
+#: 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:2701
+#: src/elflint.c:2756
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2162,7 +2238,7 @@
 "section [%2d] ‘%s’ refers in sh_link to section [%2d] ‘%s’ which "
 "is no dynamic symbol table\n"
 
-#: src/elflint.c:2712
+#: src/elflint.c:2768
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2171,76 +2247,76 @@
 "section [%2d] ‘%s’ has different number of entries than symbol table "
 "[%2d] ‘%s’\n"
 
-#: src/elflint.c:2728
+#: 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:2744
+#: 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:2752
+#: 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:2766
+#: 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:2771
+#: 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:2781
+#: 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:2833
+#: 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:2841 src/elflint.c:2970
+#: 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:2864 src/elflint.c:3022
+#: 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:2870 src/elflint.c:3028
+#: 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:2878
+#: 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:2886
+#: 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:2898
+#: 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:2905
+#: src/elflint.c:2961
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2249,7 +2325,7 @@
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
 "reference\n"
 
-#: src/elflint.c:2912
+#: src/elflint.c:2968
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2258,7 +2334,7 @@
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
 "%#x, expected %#x\n"
 
-#: src/elflint.c:2922
+#: src/elflint.c:2978
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -2267,210 +2343,210 @@
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
 "name ‘%s’\n"
 
-#: src/elflint.c:2933
+#: 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:2949 src/elflint.c:3107
+#: 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:2962
+#: 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:3007
+#: 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:3011
+#: 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:3017
+#: 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:3041
+#: 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:3048
+#: 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:3057
+#: 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:3076
+#: 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:3091
+#: 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:3113
+#: 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:3129
+#: 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:3142
+#: 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:3163
+#: 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:3179
+#: 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:3188
+#: 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:3200
+#: 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:3217
+#: 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:3226
+#: 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:3235
+#: 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:3248
+#: 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:3259
+#: 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:3277
+#: 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:3288
+#: 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:3301
+#: 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:3305
+#: 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:3315
+#: 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:3321
+#: 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:3410
+#: 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:3414
+#: src/elflint.c:3470
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr "zeroth section has nonzero name\n"
 
-#: src/elflint.c:3416
+#: src/elflint.c:3472
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr "zeroth section has nonzero type\n"
 
-#: src/elflint.c:3418
+#: src/elflint.c:3474
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr "zeroth section has nonzero flags\n"
 
-#: src/elflint.c:3420
+#: src/elflint.c:3476
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr "zeroth section has nonzero address\n"
 
-#: src/elflint.c:3422
+#: src/elflint.c:3478
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr "zeroth section has nonzero offset\n"
 
-#: src/elflint.c:3424
+#: 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:3426
+#: 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:3429
+#: src/elflint.c:3485
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -2479,7 +2555,7 @@
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
 "value\n"
 
-#: src/elflint.c:3433
+#: src/elflint.c:3489
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2488,7 +2564,7 @@
 "zeroth section has nonzero link value while ELF header does not signal "
 "overflow in shstrndx\n"
 
-#: src/elflint.c:3437
+#: src/elflint.c:3493
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2497,27 +2573,27 @@
 "zeroth section has nonzero link value while ELF header does not signal "
 "overflow in phnum\n"
 
-#: src/elflint.c:3454
+#: 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:3463
+#: src/elflint.c:3519
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr "section [%2zu]: invalid name\n"
 
-#: src/elflint.c:3490
+#: 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:3506
+#: 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:3523
+#: src/elflint.c:3579
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
@@ -2525,12 +2601,12 @@
 "section [%2zu] ‘%s’ has wrong flags: expected %s and possibly %s, is "
 "%s\n"
 
-#: src/elflint.c:3541
+#: 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:3547 src/elflint.c:3579
+#: 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"
@@ -2538,7 +2614,7 @@
 "section [%2zu] ‘%s’ has SHF_ALLOC flag set but there is no loadable "
 "segment\n"
 
-#: src/elflint.c:3552 src/elflint.c:3584
+#: src/elflint.c:3608 src/elflint.c:3640
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -2547,7 +2623,7 @@
 "section [%2zu] ‘%s’ has SHF_ALLOC flag not set but there are loadable "
 "segments\n"
 
-#: src/elflint.c:3560
+#: src/elflint.c:3616
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -2555,22 +2631,22 @@
 "section [%2zu] ‘%s’ is extension section index table in non-object "
 "file\n"
 
-#: src/elflint.c:3603
+#: 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:3608
+#: src/elflint.c:3664
 #, c-format
 msgid "cannot get section header\n"
 msgstr "cannot get section header\n"
 
-#: src/elflint.c:3618
+#: 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:3632
+#: src/elflint.c:3688
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -2578,48 +2654,48 @@
 "section [%2zu] ‘%s’ contains invalid processor-specific flag(s) "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3639
+#: 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:3647
+#: 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:3655
+#: 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:3660
+#: 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:3667
+#: 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:3672
+#: 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:3690
+#: 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:3699
+#: 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:3726
+#: src/elflint.c:3784
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -2628,7 +2704,7 @@
 "section [%2zu] ‘%s’ not fully contained in segment of program header "
 "entry %d\n"
 
-#: src/elflint.c:3734
+#: src/elflint.c:3792
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -2637,7 +2713,7 @@
 "section [%2zu] ‘%s’ has type NOBITS but is read from the file in "
 "segment of program header entry %d\n"
 
-#: src/elflint.c:3743
+#: src/elflint.c:3801
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -2646,24 +2722,24 @@
 "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:3754
+#: 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:3764
+#: 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:3774
+#: 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:3780
+#: src/elflint.c:3838
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -2672,36 +2748,36 @@
 "section [%2zu] '%s': ELF header says this is the section header string table "
 "but type is not SHT_TYPE\n"
 
-#: src/elflint.c:3788
+#: 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:3839
+#: 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:3862
+#: 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:3873
+#: 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:3879
+#: 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:3890
+#: src/elflint.c:3948
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -2710,194 +2786,194 @@
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
 "exist\n"
 
-#: src/elflint.c:3903
+#: src/elflint.c:3961
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "duplicate version index %d\n"
 
-#: src/elflint.c:3917
+#: 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:3966
+#: 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:3970
+#: 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:3993
+#: 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:3997
+#: 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:4014
+#: 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:4033
+#: 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:4036
+#: 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:4057
+#: 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:4064
+#: 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:4067
+#: 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:4085
+#: 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:4100
+#: 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:4109
+#: 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:4120
+#: 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:4128
+#: 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:4135
+#: 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:4149
+#: 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:4152
+#: 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:4162
+#: 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:4183
+#: 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:4186
+#: 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:4194 src/elflint.c:4217
+#: 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:4223
+#: 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:4247
+#: 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:4250
+#: 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:4263
+#: 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:4271
+#: 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:4274
+#: 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:4278
+#: 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:4281
+#: 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:4286
+#: 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:4289
+#: 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:4300
+#: 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:4307
+#: 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:4310
+#: src/elflint.c:4368
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -2906,7 +2982,7 @@
 "program header entry %d: file offset and virtual address not module of "
 "alignment\n"
 
-#: src/elflint.c:4323
+#: src/elflint.c:4381
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -2915,93 +2991,98 @@
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
 "program header entry"
 
-#: src/elflint.c:4357
+#: src/elflint.c:4415
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "cannot read ELF header: %s\n"
 
-#: src/elflint.c:4383
+#: src/elflint.c:4441
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr "text relocation flag set but not needed\n"
 
-#: src/findtextrel.c:70
+#: src/findtextrel.c:62
 msgid "Input Selection:"
 msgstr "Input Selection:"
 
-#: src/findtextrel.c:71
+#: src/findtextrel.c:63
 msgid "Prepend PATH to all file names"
 msgstr "Prepend PATH to all file names"
 
-#: src/findtextrel.c:73
+#: src/findtextrel.c:65
 msgid "Use PATH as root of debuginfo hierarchy"
 msgstr "Use PATH as root of debuginfo hierarchy"
 
-#: src/findtextrel.c:80
+#: src/findtextrel.c:72
 msgid "Locate source of text relocations in FILEs (a.out by default)."
 msgstr "Locate source of text relocations in FILEs (a.out by default)."
 
-#: src/findtextrel.c:84 src/nm.c:116 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:104
+#: src/findtextrel.c:76 src/nm.c:108 src/objdump.c:72 src/size.c:84
+#: src/strings.c:84 src/strip.c:96
 msgid "[FILE...]"
 msgstr "[FILE...]"
 
-#: src/findtextrel.c:246
+#: src/findtextrel.c:238
 #, c-format
 msgid "cannot get ELF header '%s': %s"
 msgstr "cannot get ELF header '%s': %s"
 
-#: src/findtextrel.c:257
+#: src/findtextrel.c:249
 #, c-format
 msgid "'%s' is not a DSO or PIE"
 msgstr "‘%s’ is not a DSO or PIE"
 
-#: src/findtextrel.c:277
+#: src/findtextrel.c:269
 #, c-format
 msgid "getting get section header of section %zu: %s"
 msgstr "getting get section header of section %zu: %s"
 
-#: src/findtextrel.c:300
+#: src/findtextrel.c:292
 #, c-format
 msgid "cannot read dynamic section: %s"
 msgstr "cannot read dynamic section: %s"
 
-#: src/findtextrel.c:321
+#: src/findtextrel.c:313
 #, c-format
 msgid "no text relocations reported in '%s'"
 msgstr "no text relocations reported in ‘%s’"
 
-#: src/findtextrel.c:333
+#: src/findtextrel.c:325
 #, c-format
 msgid "while reading ELF file"
 msgstr "while reading ELF file"
 
-#: src/findtextrel.c:342 src/findtextrel.c:359
+#: src/findtextrel.c:329
 #, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr "cannot get program header index at offset %d: %s"
+msgid "cannot get program header count: %s"
+msgstr "cannot get program header count: %s"
 
-#: src/findtextrel.c:411
+#: src/findtextrel.c:340 src/findtextrel.c:357
+#, c-format
+msgid "cannot get program header index at offset %zd: %s"
+msgstr "cannot get program header index at offset %zd: %s"
+
+#: src/findtextrel.c:409
 #, c-format
 msgid "cannot get section header of section %Zu: %s"
 msgstr "cannot get section header of section %Zu: %s"
 
-#: src/findtextrel.c:423
+#: src/findtextrel.c:421
 #, c-format
 msgid "cannot get symbol table section %zu in '%s': %s"
 msgstr "cannot get symbol table section %zu in '%s': %s"
 
-#: src/findtextrel.c:443 src/findtextrel.c:466
+#: src/findtextrel.c:441 src/findtextrel.c:464
 #, c-format
 msgid "cannot get relocation at index %d in section %zu in '%s': %s"
 msgstr "cannot get relocation at index %d in section %zu in '%s': %s"
 
-#: src/findtextrel.c:531
+#: src/findtextrel.c:529
 #, c-format
 msgid "%s not compiled with -fpic/-fPIC\n"
 msgstr "%s not compiled with -fpic/-fPIC\n"
 
-#: src/findtextrel.c:584
+#: src/findtextrel.c:582
 #, c-format
 msgid ""
 "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
@@ -3009,7 +3090,7 @@
 "the file containing the function ‘%s’ is not compiled with -fpic/-"
 "fPIC\n"
 
-#: src/findtextrel.c:591 src/findtextrel.c:611
+#: src/findtextrel.c:589 src/findtextrel.c:609
 #, c-format
 msgid ""
 "the file containing the function '%s' might not be compiled with -fpic/-"
@@ -3018,7 +3099,7 @@
 "the file containing the function ‘%s’ might not be compiled with -"
 "fpic/-fPIC\n"
 
-#: src/findtextrel.c:599
+#: src/findtextrel.c:597
 #, c-format
 msgid ""
 "either the file containing the function '%s' or the file containing the "
@@ -3027,470 +3108,471 @@
 "either the file containing the function ‘%s’ or the file containing "
 "the function ‘%s’ is not compiled with -fpic/-fPIC\n"
 
-#: src/findtextrel.c:619
+#: src/findtextrel.c:617
 #, c-format
 msgid ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
 msgstr ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
 
-#: src/i386_ld.c:210
+#: src/i386_ld.c:202
 #, c-format
 msgid "cannot allocate PLT section: %s"
 msgstr "cannot allocate PLT section: %s"
 
-#: src/i386_ld.c:232
+#: src/i386_ld.c:224
 #, c-format
 msgid "cannot allocate PLTREL section: %s"
 msgstr "cannot allocate PLTREL section: %s"
 
-#: src/i386_ld.c:253
+#: src/i386_ld.c:245
 #, c-format
 msgid "cannot allocate GOT section: %s"
 msgstr "cannot allocate GOT section: %s"
 
-#: src/i386_ld.c:274
+#: src/i386_ld.c:266
 #, c-format
 msgid "cannot allocate GOTPLT section: %s"
 msgstr "cannot allocate GOTPLT section: %s"
 
-#: src/i386_ld.c:661
+#: src/i386_ld.c:653
 #, c-format
 msgid "initial-executable TLS relocation cannot be used "
 msgstr "initial-executable TLS relocation cannot be used "
 
-#: src/ld.c:87
+#: src/ld.c:79
 msgid "Input File Control:"
 msgstr "Input File Control:"
 
-#: src/ld.c:89
+#: src/ld.c:81
 msgid "Include whole archives in the output from now on."
 msgstr "Include whole archives in the output from now on."
 
-#: src/ld.c:91
+#: src/ld.c:83
 msgid "Stop including the whole archives in the output."
 msgstr "Stop including the whole archives in the output."
 
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
+#: src/ld.c:84 src/ld.c:98 src/ld.c:176
 msgid "FILE"
 msgstr "FILE"
 
-#: src/ld.c:93
+#: src/ld.c:85
 msgid "Start a group."
 msgstr "Start a group."
 
-#: src/ld.c:94
+#: src/ld.c:86
 msgid "End a group."
 msgstr "End a group."
 
-#: src/ld.c:95
+#: src/ld.c:87
 msgid "PATH"
 msgstr "PATH"
 
-#: src/ld.c:96
+#: src/ld.c:88
 msgid "Add PATH to list of directories files are searched in."
 msgstr "Add PATH to list of directories files are searched in."
 
-#: src/ld.c:98
+#: src/ld.c:90
 msgid "Only set DT_NEEDED for following dynamic libs if actually used"
 msgstr "Only set DT_NEEDED for following dynamic libs if actually used"
 
-#: src/ld.c:100
+#: src/ld.c:92
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr "Always set DT_NEEDED for following dynamic libs"
 
-#: src/ld.c:102
+#: src/ld.c:94
 msgid "Ignore LD_LIBRARY_PATH environment variable."
 msgstr "Ignore LD_LIBRARY_PATH environment variable."
 
-#: src/ld.c:105
+#: src/ld.c:97
 msgid "Output File Control:"
 msgstr "Output File Control:"
 
-#: src/ld.c:106
+#: src/ld.c:98
 msgid "Place output in FILE."
 msgstr "Place output in FILE."
 
-#: src/ld.c:109
+#: src/ld.c:101
 msgid "Object is marked to not use default search path at runtime."
 msgstr "Object is marked to not use default search path at runtime."
 
-#: src/ld.c:111
+#: src/ld.c:103
 msgid "Same as --whole-archive."
 msgstr "Same as --whole-archive."
 
-#: src/ld.c:112
+#: src/ld.c:104
 msgid ""
 "Default rules of extracting from archive; weak references are not enough."
 msgstr ""
 "Default rules of extracting from archive; weak references are not enough."
 
-#: src/ld.c:116
+#: src/ld.c:108
 msgid "Weak references cause extraction from archive."
 msgstr "Weak references cause extraction from archive."
 
-#: src/ld.c:118
+#: src/ld.c:110
 msgid "Allow multiple definitions; first is used."
 msgstr "Allow multiple definitions; first is used."
 
-#: src/ld.c:120
+#: src/ld.c:112
 msgid "Disallow/allow undefined symbols in DSOs."
 msgstr "Disallow/allow undefined symbols in DSOs."
 
-#: src/ld.c:123
+#: src/ld.c:115
 msgid "Object requires immediate handling of $ORIGIN."
 msgstr "Object requires immediate handling of $ORIGIN."
 
-#: src/ld.c:125
+#: src/ld.c:117
 msgid "Relocation will not be processed lazily."
 msgstr "Relocation will not be processed lazily."
 
-#: src/ld.c:127
+#: src/ld.c:119
 msgid "Object cannot be unloaded at runtime."
 msgstr "Object cannot be unloaded at runtime."
 
-#: src/ld.c:129
+#: src/ld.c:121
 msgid "Mark object to be initialized first."
 msgstr "Mark object to be initialized first."
 
-#: src/ld.c:131
+#: src/ld.c:123
 msgid "Enable/disable lazy-loading flag for following dependencies."
 msgstr "Enable/disable lazy-loading flag for following dependencies."
 
-#: src/ld.c:133
+#: src/ld.c:125
 msgid "Mark object as not loadable with 'dlopen'."
 msgstr "Mark object as not loadable with 'dlopen'."
 
-#: src/ld.c:135
+#: src/ld.c:127
 msgid "Ignore/record dependencies on unused DSOs."
 msgstr "Ignore/record dependencies on unused DSOs."
 
-#: src/ld.c:137
+#: src/ld.c:129
 msgid "Generated DSO will be a system library."
 msgstr "Generated DSO will be a system library."
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "ADDRESS"
 msgstr "ADDRESS"
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "Set entry point address."
 msgstr "Set entry point address."
 
-#: src/ld.c:141
+#: src/ld.c:133
 msgid "Do not link against shared libraries."
 msgstr "Do not link against shared libraries."
 
-#: src/ld.c:144
+#: src/ld.c:136
 msgid "Prefer linking against shared libraries."
 msgstr "Prefer linking against shared libraries."
 
-#: src/ld.c:145
+#: src/ld.c:137
 msgid "Export all dynamic symbols."
 msgstr "Export all dynamic symbols."
 
-#: src/ld.c:146
+#: src/ld.c:138
 msgid "Strip all symbols."
 msgstr "Strip all symbols."
 
-#: src/ld.c:147
+#: src/ld.c:139
 msgid "Strip debugging symbols."
 msgstr "Strip debugging symbols."
 
-#: src/ld.c:149
+#: src/ld.c:141
 msgid "Assume pagesize for the target system to be SIZE."
 msgstr "Assume pagesize for the target system to be SIZE."
 
-#: src/ld.c:151
+#: src/ld.c:143
 msgid "Set runtime DSO search path."
 msgstr "Set runtime DSO search path."
 
-#: src/ld.c:154
+#: src/ld.c:146
 msgid "Set link time DSO search path."
 msgstr "Set link time DSO search path."
 
-#: src/ld.c:155
+#: src/ld.c:147
 msgid "Generate dynamic shared object."
 msgstr "Generate dynamic shared object."
 
-#: src/ld.c:156
+#: src/ld.c:148
 msgid "Generate relocatable object."
 msgstr "Generate relocatable object."
 
-#: src/ld.c:159
+#: src/ld.c:151
 msgid "Causes symbol not assigned to a version be reduced to local."
 msgstr "Causes symbol not assigned to a version be reduced to local."
 
-#: src/ld.c:160
+#: src/ld.c:152
 msgid "Remove unused sections."
 msgstr "Remove unused sections."
 
-#: src/ld.c:163
+#: src/ld.c:155
 msgid "Don't remove unused sections."
 msgstr "Don't remove unused sections."
 
-#: src/ld.c:164
+#: src/ld.c:156
 msgid "Set soname of shared object."
 msgstr "Set soname of shared object."
 
-#: src/ld.c:165
+#: src/ld.c:157
 msgid "Set the dynamic linker name."
 msgstr "Set the dynamic linker name."
 
-#: src/ld.c:168
+#: src/ld.c:160
 msgid "Add/suppress addition indentifying link-editor to .comment section."
 msgstr "Add/suppress addition indentifying link-editor to .comment section."
 
-#: src/ld.c:171
+#: src/ld.c:163
 msgid "Create .eh_frame_hdr section"
 msgstr "Create .eh_frame_hdr section"
 
-#: src/ld.c:173
+#: src/ld.c:165
 msgid "Set hash style to sysv, gnu or both."
 msgstr "Set hash style to sysv, gnu or both."
 
-#: src/ld.c:175
+#: src/ld.c:167
 msgid "Generate build ID note (md5, sha1 (default), uuid)."
 msgstr "Generate build ID note (md5, sha1 (default), uuid)."
 
-#: src/ld.c:177
+#: src/ld.c:169
 msgid "Linker Operation Control:"
 msgstr "Linker Operation Control:"
 
-#: src/ld.c:178
+#: src/ld.c:170
 msgid "Verbose messages."
 msgstr "Verbose messages."
 
-#: src/ld.c:179
+#: src/ld.c:171
 msgid "Trace file opens."
 msgstr "Trace file opens."
 
-#: src/ld.c:181
+#: src/ld.c:173
 msgid "Trade speed for less memory usage"
 msgstr "Trade speed for less memory usage"
 
-#: src/ld.c:182
+#: src/ld.c:174
 msgid "LEVEL"
 msgstr "LEVEL"
 
-#: src/ld.c:183
+#: src/ld.c:175
 msgid "Set optimization level to LEVEL."
 msgstr "Set optimization level to LEVEL."
 
-#: src/ld.c:184
+#: src/ld.c:176
 msgid "Use linker script in FILE."
 msgstr "Use linker script in FILE."
 
-#: src/ld.c:187
+#: src/ld.c:179
 msgid "Select to get parser debug information"
 msgstr "Select to get parser debug information"
 
-#: src/ld.c:190
+#: src/ld.c:182
 msgid "Read version information from FILE."
 msgstr "Read version information from FILE."
 
-#: src/ld.c:191
+#: src/ld.c:183
 msgid "Set emulation to NAME."
 msgstr "Set emulation to NAME."
 
-#: src/ld.c:197
+#: src/ld.c:189
 msgid "Combine object and archive files."
 msgstr "Combine object and archive files."
 
-#: src/ld.c:200
+#: src/ld.c:192
 msgid "[FILE]..."
 msgstr "[FILE]..."
 
-#: src/ld.c:333
+#: src/ld.c:325
 #, c-format
 msgid "At least one input file needed"
 msgstr "At least one input file needed"
 
-#: src/ld.c:349
+#: src/ld.c:341
 #, c-format
 msgid "error while preparing linking"
 msgstr "error while preparing linking"
 
-#: src/ld.c:356
+#: src/ld.c:348
 #, c-format
 msgid "cannot open linker script '%s'"
 msgstr "cannot open linker script ‘%s’"
 
-#: src/ld.c:397
+#: src/ld.c:389
 #, c-format
 msgid "-( without matching -)"
 msgstr "-( without matching -)"
 
-#: src/ld.c:572 src/ld.c:610
+#: src/ld.c:564 src/ld.c:602
 #, c-format
 msgid "only one option of -G and -r is allowed"
 msgstr "only one option of -G and -r is allowed"
 
-#: src/ld.c:594
+#: src/ld.c:586
 #, c-format
 msgid "more than one '-m' parameter"
 msgstr "more than one ‘-m’ parameter"
 
-#: src/ld.c:604 src/ld.c:1013
+#: src/ld.c:596 src/ld.c:1005
 #, c-format
 msgid "unknown option `-%c %s'"
 msgstr "unknown option ‘-%c %s’"
 
-#: src/ld.c:646
+#: src/ld.c:638
 #, c-format
 msgid "invalid page size value '%s': ignored"
 msgstr "invalid page size value '%s': ignored"
 
-#: src/ld.c:687
+#: src/ld.c:679
 #, c-format
 msgid "invalid hash style '%s'"
 msgstr "invalid hash style ‘%s’"
 
-#: src/ld.c:697
+#: src/ld.c:689
 #, c-format
 msgid "invalid build-ID style '%s'"
 msgstr "invalid build-ID style ‘%s’"
 
-#: src/ld.c:785
+#: src/ld.c:777
 #, c-format
 msgid "More than one output file name given."
 msgstr "More than one output file name given."
 
-#: src/ld.c:802
+#: src/ld.c:794
 #, c-format
 msgid "Invalid optimization level `%s'"
 msgstr "Invalid optimization level ‘%s’"
 
-#: src/ld.c:850
+#: src/ld.c:842
 #, c-format
 msgid "nested -( -) groups are not allowed"
 msgstr "nested -( -) groups are not allowed"
 
-#: src/ld.c:869
+#: src/ld.c:861
 #, c-format
 msgid "-) without matching -("
 msgstr "-) without matching -("
 
-#: src/ld.c:1046
+#: src/ld.c:1038
 #, c-format
 msgid "unknown option '-%c %s'"
 msgstr "unknown option ‘-%c %s’"
 
-#: src/ld.c:1150
+#: src/ld.c:1142
 #, c-format
 msgid "could not find input file to determine output file format"
 msgstr "could not find input file to determine output file format"
 
-#: src/ld.c:1152
+#: src/ld.c:1144
 #, c-format
 msgid "try again with an appropriate '-m' parameter"
 msgstr "try again with an appropriate ‘-m’ parameter"
 
-#: src/ld.c:1446
+#: src/ld.c:1438
 #, c-format
 msgid "cannot read version script '%s'"
 msgstr "cannot read version script ‘%s’"
 
-#: src/ld.c:1512 src/ld.c:1551
+#: src/ld.c:1504 src/ld.c:1543
 #, c-format
 msgid "duplicate definition of '%s' in linker script"
 msgstr "duplicate definition of ‘%s’ in linker script"
 
-#: src/ldgeneric.c:209 src/ldgeneric.c:5149
+#: src/ldgeneric.c:201 src/ldgeneric.c:5141
 #, c-format
 msgid "cannot create string table"
 msgstr "cannot create string table"
 
-#: src/ldgeneric.c:255
+#: src/ldgeneric.c:247
 #, c-format
 msgid "cannot load ld backend library '%s': %s"
 msgstr "cannot load ld backend library '%s': %s"
 
-#: src/ldgeneric.c:265
+#: src/ldgeneric.c:257
 #, c-format
 msgid "cannot find init function in ld backend library '%s': %s"
 msgstr "cannot find init function in ld backend library '%s': %s"
 
-#: src/ldgeneric.c:308
+#: src/ldgeneric.c:300
 #, c-format
 msgid "%s listed more than once as input"
 msgstr "%s listed more than once as input"
 
-#: src/ldgeneric.c:422
+#: src/ldgeneric.c:414
 #, c-format
 msgid "%s (for -l%s)\n"
 msgstr "%s (for -l%s)\n"
 
-#: src/ldgeneric.c:423
+#: src/ldgeneric.c:415
 #, c-format
 msgid "%s (for DT_NEEDED %s)\n"
 msgstr "%s (for DT_NEEDED %s)\n"
 
-#: src/ldgeneric.c:571
+#: src/ldgeneric.c:563
 #, c-format
 msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
 msgstr "Warning: type of ‘%s’ changed from %s in %s to %s in %s"
 
-#: src/ldgeneric.c:584
+#: src/ldgeneric.c:576
 #, c-format
 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:659 src/ldgeneric.c:1120 src/readelf.c:642 src/strip.c:570
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:568
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "cannot determine number of sections: %s"
 
-#: src/ldgeneric.c:675
+#: src/ldgeneric.c:667
 #, c-format
 msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
 msgstr "(%s+%#<PRIx64>): multiple definition of %s ‘%s’\n"
 
-#: src/ldgeneric.c:698
+#: src/ldgeneric.c:690
 #, c-format
 msgid "(%s+%#<PRIx64>): first defined here\n"
 msgstr "(%s+%#<PRIx64>): first defined here\n"
 
-#: src/ldgeneric.c:817
+#: src/ldgeneric.c:809
 #, c-format
 msgid "%s: cannot get section group data: %s"
 msgstr "%s: cannot get section group data: %s"
 
-#: src/ldgeneric.c:838
+#: src/ldgeneric.c:830
 #, c-format
 msgid "%s: section '%s' with group flag set does not belong to any group"
 msgstr ""
 "%s: section ‘%s’ with group flag set does not belong to any group"
 
-#: src/ldgeneric.c:883
+#: src/ldgeneric.c:875
 #, c-format
 msgid "%s: section [%2d] '%s' is not in the correct section group"
 msgstr "%s: section [%2d] ‘%s’ is not in the correct section group"
 
-#: src/ldgeneric.c:1154 src/ldgeneric.c:1411 src/ldgeneric.c:1420
-#: src/ldgeneric.c:1479 src/ldgeneric.c:1488 src/ldgeneric.c:1751
-#: src/ldgeneric.c:2003
+#: src/ldgeneric.c:1146 src/ldgeneric.c:1403 src/ldgeneric.c:1412
+#: src/ldgeneric.c:1471 src/ldgeneric.c:1480 src/ldgeneric.c:1743
+#: src/ldgeneric.c:1995
 #, c-format
 msgid "%s: invalid ELF file (%s:%d)\n"
 msgstr "%s: invalid ELF file (%s:%d)\n"
 
-#: src/ldgeneric.c:1248
+#: src/ldgeneric.c:1240
 #, c-format
 msgid "%s: only files of type ET_REL might contain section groups"
 msgstr "%s: only files of type ET_REL might contain section groups"
 
-#: src/ldgeneric.c:1300
+#: src/ldgeneric.c:1292
 #, c-format
 msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
 msgstr "%s: cannot determine signature of section group [%2zd] '%s': %s"
 
-#: src/ldgeneric.c:1312
+#: src/ldgeneric.c:1304
 #, c-format
 msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
 msgstr "%s: cannot get content of section group [%2zd] '%s': %s'"
 
-#: src/ldgeneric.c:1326
+#: src/ldgeneric.c:1318
 #, c-format
 msgid ""
 "%s: group member %zu of section group [%2zd] '%s' has too high index: "
@@ -3499,75 +3581,75 @@
 "%s: group member %zu of section group [%2zd] ‘%s’ has too high index: "
 "%<PRIu32>"
 
-#: src/ldgeneric.c:1348
+#: src/ldgeneric.c:1340
 #, c-format
 msgid "%s: section '%s' has unknown type: %d"
 msgstr "%s: section ‘%s’ has unknown type: %d"
 
-#: src/ldgeneric.c:1727
+#: src/ldgeneric.c:1719
 #, c-format
 msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
 msgstr "cannot get descriptor for ELF file (%s:%d): %s\n"
 
-#: src/ldgeneric.c:1897
+#: src/ldgeneric.c:1889
 #, c-format
 msgid "cannot read archive `%s': %s"
 msgstr "cannot read archive ‘%s’: %s"
 
-#: src/ldgeneric.c:2018
+#: src/ldgeneric.c:2010
 #, c-format
 msgid "file of type %s cannot be linked in\n"
 msgstr "file of type %s cannot be linked in\n"
 
-#: src/ldgeneric.c:2030
+#: src/ldgeneric.c:2022
 #, c-format
 msgid "%s: input file incompatible with ELF machine type %s\n"
 msgstr "%s: input file incompatible with ELF machine type %s\n"
 
-#: src/ldgeneric.c:2042
+#: src/ldgeneric.c:2034
 #, c-format
 msgid "%s: cannot get section header string table index: %s\n"
 msgstr "%s: cannot get section header string table index: %s\n"
 
-#: src/ldgeneric.c:2071
+#: src/ldgeneric.c:2063
 #, c-format
 msgid "cannot use DSO '%s' when generating relocatable object file"
 msgstr "cannot use DSO ‘%s’ when generating relocatable object file"
 
-#: src/ldgeneric.c:2156
+#: src/ldgeneric.c:2148
 #, c-format
 msgid "input file '%s' ignored"
 msgstr "input file ‘%s’ ignored"
 
-#: src/ldgeneric.c:2370
+#: src/ldgeneric.c:2362
 #, c-format
 msgid "undefined symbol `%s' in %s"
 msgstr "undefined symbol ‘%s’ in %s"
 
-#: src/ldgeneric.c:2700
+#: src/ldgeneric.c:2692
 #, c-format
 msgid "cannot create ELF descriptor for output file: %s"
 msgstr "cannot create ELF descriptor for output file: %s"
 
-#: src/ldgeneric.c:2707
+#: src/ldgeneric.c:2699
 #, c-format
 msgid "could not create ELF header for output file: %s"
 msgstr "could not create ELF header for output file: %s"
 
-#: src/ldgeneric.c:3222 src/ldgeneric.c:3292 src/ldgeneric.c:3328
-#: src/ldgeneric.c:4455 src/ldgeneric.c:4504 src/ldgeneric.c:4536
-#: src/ldgeneric.c:4771 src/ldgeneric.c:4826 src/ldgeneric.c:5073
-#: src/ldgeneric.c:5129 src/ldgeneric.c:5598 src/ldgeneric.c:5610
+#: src/ldgeneric.c:3214 src/ldgeneric.c:3284 src/ldgeneric.c:3320
+#: src/ldgeneric.c:4447 src/ldgeneric.c:4496 src/ldgeneric.c:4528
+#: src/ldgeneric.c:4763 src/ldgeneric.c:4818 src/ldgeneric.c:5065
+#: src/ldgeneric.c:5121 src/ldgeneric.c:5590 src/ldgeneric.c:5602
 #, c-format
 msgid "cannot create section for output file: %s"
 msgstr "cannot create section for output file: %s"
 
-#: src/ldgeneric.c:3442
+#: src/ldgeneric.c:3434
 #, c-format
 msgid "address computation expression contains variable '%s'"
 msgstr "address computation expression contains variable ‘%s’"
 
-#: src/ldgeneric.c:3487
+#: src/ldgeneric.c:3479
 #, c-format
 msgid ""
 "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
@@ -3576,208 +3658,208 @@
 "argument ‘%<PRIuMAX>’ of ALIGN in address computation expression is no "
 "power of two"
 
-#: src/ldgeneric.c:3682
+#: src/ldgeneric.c:3674
 #, c-format
 msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 msgstr "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 
-#: src/ldgeneric.c:3688
+#: src/ldgeneric.c:3680
 #, c-format
 msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
 msgstr "no entry symbol specified: defaulting to %#0*<PRIx64>"
 
-#: src/ldgeneric.c:3918
+#: src/ldgeneric.c:3910
 #, c-format
 msgid "cannot create GNU hash table section for output file: %s"
 msgstr "cannot create GNU hash table section for output file: %s"
 
-#: src/ldgeneric.c:4069
+#: src/ldgeneric.c:4061
 #, c-format
 msgid "cannot create hash table section for output file: %s"
 msgstr "cannot create hash table section for output file: %s"
 
-#: src/ldgeneric.c:4112
+#: src/ldgeneric.c:4104
 #, c-format
 msgid "cannot create build ID section: %s"
 msgstr "cannot create build ID section: %s"
 
-#: src/ldgeneric.c:4189
+#: src/ldgeneric.c:4181
 #, c-format
 msgid "cannot convert section data to file format: %s"
 msgstr "cannot convert section data to file format: %s"
 
-#: src/ldgeneric.c:4198
+#: src/ldgeneric.c:4190
 #, c-format
 msgid "cannot convert section data to memory format: %s"
 msgstr "cannot convert section data to memory format: %s"
 
-#: src/ldgeneric.c:4259
+#: src/ldgeneric.c:4251
 #, c-format
 msgid "cannot read enough data for UUID"
 msgstr "cannot read enough data for UUID"
 
-#: src/ldgeneric.c:4356 src/ldgeneric.c:4377 src/ldgeneric.c:4406
-#: src/ldgeneric.c:6059
+#: src/ldgeneric.c:4348 src/ldgeneric.c:4369 src/ldgeneric.c:4398
+#: src/ldgeneric.c:6051
 #, c-format
 msgid "cannot create symbol table for output file: %s"
 msgstr "cannot create symbol table for output file: %s"
 
-#: src/ldgeneric.c:5298 src/ldgeneric.c:5850
+#: src/ldgeneric.c:5290 src/ldgeneric.c:5842
 #, c-format
 msgid "section index too large in dynamic symbol table"
 msgstr "section index too large in dynamic symbol table"
 
-#: src/ldgeneric.c:5743
+#: src/ldgeneric.c:5735
 #, c-format
 msgid "cannot create versioning section: %s"
 msgstr "cannot create versioning section: %s"
 
-#: src/ldgeneric.c:5816
+#: src/ldgeneric.c:5808
 #, c-format
 msgid "cannot create dynamic symbol table for output file: %s"
 msgstr "cannot create dynamic symbol table for output file: %s"
 
-#: src/ldgeneric.c:5991
+#: src/ldgeneric.c:5983
 #, c-format
 msgid "cannot create versioning data: %s"
 msgstr "cannot create versioning data: %s"
 
-#: src/ldgeneric.c:6091 src/ldgeneric.c:6104 src/ldgeneric.c:6168
-#: src/ldgeneric.c:6176
+#: src/ldgeneric.c:6083 src/ldgeneric.c:6096 src/ldgeneric.c:6160
+#: src/ldgeneric.c:6168
 #, c-format
 msgid "cannot create section header string section: %s"
 msgstr "cannot create section header string section: %s"
 
-#: src/ldgeneric.c:6098
+#: src/ldgeneric.c:6090
 #, c-format
 msgid "cannot create section header string section"
 msgstr "cannot create section header string section"
 
-#: src/ldgeneric.c:6256
+#: src/ldgeneric.c:6248
 #, c-format
 msgid "cannot create program header: %s"
 msgstr "cannot create program header: %s"
 
-#: src/ldgeneric.c:6264
+#: src/ldgeneric.c:6256
 #, c-format
 msgid "while determining file layout: %s"
 msgstr "while determining file layout: %s"
 
-#: src/ldgeneric.c:6385
+#: src/ldgeneric.c:6377
 #, c-format
 msgid "internal error: non-nobits section follows nobits section"
 msgstr "internal error: non-nobits section follows nobits section"
 
-#: src/ldgeneric.c:6922
+#: src/ldgeneric.c:6914
 #, c-format
 msgid "cannot get header of 0th section: %s"
 msgstr "cannot get header of 0th section: %s"
 
-#: src/ldgeneric.c:6938 src/unstrip.c:1818
+#: src/ldgeneric.c:6930 src/unstrip.c:1822
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "cannot update ELF header: %s"
 
-#: src/ldgeneric.c:6969
+#: src/ldgeneric.c:6961
 #, c-format
 msgid "linker backend didn't specify function to relocate section"
 msgstr "linker backend didn't specify function to relocate section"
 
-#: src/ldgeneric.c:6981
+#: src/ldgeneric.c:6973
 #, c-format
 msgid "while writing output file: %s"
 msgstr "while writing output file: %s"
 
-#: src/ldgeneric.c:6986
+#: src/ldgeneric.c:6978
 #, c-format
 msgid "while finishing output file: %s"
 msgstr "while finishing output file: %s"
 
-#: src/ldgeneric.c:6992
+#: src/ldgeneric.c:6984
 #, c-format
 msgid "cannot stat output file"
 msgstr "cannot stat output file"
 
-#: src/ldgeneric.c:7008
+#: src/ldgeneric.c:7000
 #, c-format
 msgid "WARNING: temporary output file overwritten before linking finished"
 msgstr "WARNING: temporary output file overwritten before linking finished"
 
-#: src/ldgeneric.c:7061 src/ldgeneric.c:7072 src/ldgeneric.c:7083
-#: src/ldgeneric.c:7094 src/ldgeneric.c:7113 src/ldgeneric.c:7126
-#: src/ldgeneric.c:7138
+#: src/ldgeneric.c:7053 src/ldgeneric.c:7064 src/ldgeneric.c:7075
+#: src/ldgeneric.c:7086 src/ldgeneric.c:7105 src/ldgeneric.c:7118
+#: src/ldgeneric.c:7130
 #, c-format
 msgid "no machine specific '%s' implementation"
 msgstr "no machine specific ‘%s’ implementation"
 
-#: src/ldscript.y:178
+#: src/ldscript.y:170
 msgid "mode for segment invalid\n"
 msgstr "mode for segment invalid\n"
 
-#: src/ldscript.y:465
+#: src/ldscript.y:457
 #, c-format
 msgid "while reading version script '%s': %s at line %d"
 msgstr "while reading version script '%s': %s at line %d"
 
-#: src/ldscript.y:466
+#: src/ldscript.y:458
 #, c-format
 msgid "while reading linker script '%s': %s at line %d"
 msgstr "while reading linker script '%s': %s at line %d"
 
-#: src/ldscript.y:745
+#: src/ldscript.y:737
 #, c-format
 msgid "symbol '%s' is declared both local and global for unnamed version"
 msgstr ""
 "symbol ‘%s’ is declared both local and global for unnamed version"
 
-#: src/ldscript.y:747
+#: src/ldscript.y:739
 #, c-format
 msgid "symbol '%s' is declared both local and global for version '%s'"
 msgstr ""
 "symbol ‘%s’ is declared both local and global for version ‘%s’"
 
-#: src/ldscript.y:767 src/ldscript.y:774
+#: src/ldscript.y:759 src/ldscript.y:766
 #, c-format
 msgid "default visibility set as local and global"
 msgstr "default visibility set as local and global"
 
-#: src/nm.c:74 src/strip.c:76
+#: src/nm.c:66 src/strip.c:68
 msgid "Output selection:"
 msgstr "Output selection:"
 
-#: src/nm.c:75
+#: src/nm.c:67
 msgid "Display debugger-only symbols"
 msgstr "Display debugger-only symbols"
 
-#: src/nm.c:76
+#: src/nm.c:68
 msgid "Display only defined symbols"
 msgstr "Display only defined symbols"
 
-#: src/nm.c:79
+#: src/nm.c:71
 msgid "Display dynamic symbols instead of normal symbols"
 msgstr "Display dynamic symbols instead of normal symbols"
 
-#: src/nm.c:80
+#: src/nm.c:72
 msgid "Display only external symbols"
 msgstr "Display only external symbols"
 
-#: src/nm.c:81
+#: src/nm.c:73
 msgid "Display only undefined symbols"
 msgstr "Display only undefined symbols"
 
-#: src/nm.c:83
+#: src/nm.c:75
 msgid "Include index for symbols from archive members"
 msgstr "Include index for symbols from archive members"
 
-#: src/nm.c:85 src/size.c:66
+#: src/nm.c:77 src/size.c:58
 msgid "Output format:"
 msgstr "Output format:"
 
-#: src/nm.c:87
+#: src/nm.c:79
 msgid "Print name of the input file before every symbol"
 msgstr "Print name of the input file before every symbol"
 
-#: src/nm.c:90
+#: src/nm.c:82
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd', `sysv' or `posix'.  The "
 "default is `sysv'"
@@ -3785,71 +3867,71 @@
 "Use the output format FORMAT.  FORMAT can be ‘bsd’, ‘sysv’ or "
 "‘posix’.  The default is ‘sysv’"
 
-#: src/nm.c:92
+#: src/nm.c:84
 msgid "Same as --format=bsd"
 msgstr "Same as --format=bsd"
 
-#: src/nm.c:93
+#: src/nm.c:85
 msgid "Same as --format=posix"
 msgstr "Same as --format=posix"
 
-#: src/nm.c:94 src/size.c:72
+#: src/nm.c:86 src/size.c:64
 msgid "Use RADIX for printing symbol values"
 msgstr "Use RADIX for printing symbol values"
 
-#: src/nm.c:95
+#: src/nm.c:87
 msgid "Mark special symbols"
 msgstr "Mark special symbols"
 
-#: src/nm.c:97
+#: src/nm.c:89
 msgid "Print size of defined symbols"
 msgstr "Print size of defined symbols"
 
-#: src/nm.c:99 src/size.c:80 src/strip.c:81 src/unstrip.c:81
+#: src/nm.c:91 src/size.c:72 src/strip.c:73 src/unstrip.c:73
 msgid "Output options:"
 msgstr "Output options:"
 
-#: src/nm.c:100
+#: src/nm.c:92
 msgid "Sort symbols numerically by address"
 msgstr "Sort symbols numerically by address"
 
-#: src/nm.c:102
+#: src/nm.c:94
 msgid "Do not sort the symbols"
 msgstr "Do not sort the symbols"
 
-#: src/nm.c:103
+#: src/nm.c:95
 msgid "Reverse the sense of the sort"
 msgstr "Reverse the sense of the sort"
 
-#: src/nm.c:106
+#: src/nm.c:98
 msgid "Decode low-level symbol names into source code names"
 msgstr "Decode low-level symbol names into source code names"
 
-#: src/nm.c:113
+#: src/nm.c:105
 msgid "List symbols from FILEs (a.out by default)."
 msgstr "List symbols from FILEs (a.out by default)."
 
-#: src/nm.c:124 src/objdump.c:88
+#: src/nm.c:116 src/objdump.c:80
 msgid "Output formatting"
 msgstr "Output formatting"
 
-#: src/nm.c:148 src/objdump.c:112 src/size.c:117 src/strip.c:128
+#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
 #, c-format
 msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
 msgstr "%s: INTERNAL ERROR %d (%s-%s): %s"
 
-#: src/nm.c:406 src/nm.c:418 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:2132
+#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
+#: src/strip.c:2160
 #, c-format
 msgid "while closing '%s'"
 msgstr "while closing ‘%s’"
 
-#: src/nm.c:428 src/objdump.c:304 src/strip.c:384
+#: src/nm.c:420 src/objdump.c:296 src/strip.c:376
 #, c-format
 msgid "%s: File format not recognized"
 msgstr "%s: File format not recognized"
 
-#: src/nm.c:468
+#: src/nm.c:460
 msgid ""
 "\n"
 "Archive index:\n"
@@ -3857,42 +3939,42 @@
 "\n"
 "Archive index:\n"
 
-#: src/nm.c:477
+#: src/nm.c:469
 #, c-format
 msgid "invalid offset %zu for symbol %s"
 msgstr "invalid offset %zu for symbol %s"
 
-#: src/nm.c:482
+#: src/nm.c:474
 #, c-format
 msgid "%s in %s\n"
 msgstr "%s in %s\n"
 
-#: src/nm.c:490
+#: src/nm.c:482
 #, c-format
 msgid "cannot reset archive offset to beginning"
 msgstr "cannot reset archive offset to beginning"
 
-#: src/nm.c:514 src/objdump.c:352
+#: src/nm.c:506 src/objdump.c:344
 #, c-format
 msgid "%s%s%s: file format not recognized"
 msgstr "%s%s%s: file format not recognized"
 
-#: src/nm.c:726
+#: src/nm.c:718
 #, c-format
 msgid "cannot create search tree"
 msgstr "cannot create search tree"
 
-#: src/nm.c:765 src/nm.c:1164 src/objdump.c:795 src/readelf.c:898
-#: src/readelf.c:1041 src/readelf.c:1189 src/readelf.c:1371 src/readelf.c:1571
-#: src/readelf.c:1757 src/readelf.c:1967 src/readelf.c:2221 src/readelf.c:2287
-#: src/readelf.c:2365 src/readelf.c:2863 src/readelf.c:2899 src/readelf.c:2961
-#: src/readelf.c:7307 src/readelf.c:8212 src/readelf.c:8359 src/readelf.c:8427
-#: src/size.c:425 src/size.c:499 src/strip.c:510
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:793 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:1975 src/readelf.c:2202 src/readelf.c:2460
+#: src/readelf.c:2536 src/readelf.c:2623 src/readelf.c:3201 src/readelf.c:3237
+#: src/readelf.c:3300 src/readelf.c:8187 src/readelf.c:9273 src/readelf.c:9420
+#: src/readelf.c:9488 src/size.c:417 src/size.c:486 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:790
+#: src/nm.c:784
 #, c-format
 msgid ""
 "\n"
@@ -3905,7 +3987,7 @@
 "Symbols from %s:\n"
 "\n"
 
-#: src/nm.c:793
+#: src/nm.c:787
 #, c-format
 msgid ""
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
@@ -3914,72 +3996,72 @@
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
 "\n"
 
-#: src/nm.c:1174
+#: 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:1178
+#: 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:1436
+#: src/nm.c:1435
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: Invalid operation"
 
-#: src/nm.c:1493
+#: src/nm.c:1492
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: no symbols"
 
-#: src/objdump.c:61
+#: src/objdump.c:53
 msgid "Mode selection:"
 msgstr "Mode selection:"
 
-#: src/objdump.c:62
+#: src/objdump.c:54
 msgid "Display relocation information."
 msgstr "Display relocation information."
 
-#: src/objdump.c:64
+#: src/objdump.c:56
 msgid "Display the full contents of all sections requested"
 msgstr "Display the full contents of all sections requested"
 
-#: src/objdump.c:66
+#: src/objdump.c:58
 msgid "Display assembler code of executable sections"
 msgstr "Display assembler code of executable sections"
 
-#: src/objdump.c:68
+#: src/objdump.c:60
 msgid "Output content selection:"
 msgstr "Output content selection:"
 
-#: src/objdump.c:70
+#: src/objdump.c:62
 msgid "Only display information for section NAME."
 msgstr "Only display information for section NAME."
 
-#: src/objdump.c:76
+#: src/objdump.c:68
 msgid "Show information from FILEs (a.out by default)."
 msgstr "Show information from FILEs (a.out by default)."
 
-#: src/objdump.c:244 src/readelf.c:441
+#: src/objdump.c:236 src/readelf.c:473
 msgid "No operation specified.\n"
 msgstr "No operation specified.\n"
 
-#: src/objdump.c:282 src/objdump.c:294
+#: src/objdump.c:274 src/objdump.c:286
 #, c-format
 msgid "while close `%s'"
 msgstr "while close ‘%s’"
 
-#: src/objdump.c:387 src/readelf.c:1666 src/readelf.c:1840
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2072
 msgid "INVALID SYMBOL"
 msgstr "INVALID SYMBOL"
 
-#: src/objdump.c:402 src/readelf.c:1697 src/readelf.c:1873
+#: src/objdump.c:394 src/readelf.c:1914 src/readelf.c:2108
 msgid "INVALID SECTION"
 msgstr "INVALID SECTION"
 
-#: src/objdump.c:518
+#: src/objdump.c:514
 #, c-format
 msgid ""
 "\n"
@@ -3990,421 +4072,468 @@
 "RELOCATION RECORDS FOR [%s]:\n"
 "%-*s TYPE                 VALUE\n"
 
-#: src/objdump.c:521
+#: src/objdump.c:517
 msgid "OFFSET"
 msgstr "OFFSET"
 
-#: src/objdump.c:584
+#: src/objdump.c:582
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Contents of section %s:\n"
 
-#: src/objdump.c:705
+#: src/objdump.c:703
 #, c-format
 msgid "cannot disassemble"
 msgstr "cannot disassemble"
 
-#: src/objdump.c:744
+#: src/objdump.c:742
 #, c-format
 msgid "cannot allocate memory"
 msgstr "cannot allocate memory"
 
-#: src/ranlib.c:74
+#: src/ranlib.c:66
 msgid "Generate an index to speed access to archives."
 msgstr "Generate an index to speed access to archives."
 
-#: src/ranlib.c:77
+#: src/ranlib.c:69
 msgid "ARCHIVE"
 msgstr "ARCHIVE"
 
-#: src/ranlib.c:116
+#: src/ranlib.c:108
 #, c-format
 msgid "Archive name required"
 msgstr "Archive name required"
 
-#: src/ranlib.c:194
+#: src/ranlib.c:186
 #, c-format
 msgid "'%s' is no archive"
 msgstr "‘%s’ is no archive"
 
-#: src/ranlib.c:229
+#: src/ranlib.c:221
 #, c-format
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr "error while freeing sub-ELF descriptor: %s"
 
+#: 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:75
+#: 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:76
+#: src/readelf.c:78
 msgid "Display the dynamic segment"
 msgstr "Display the dynamic segment"
 
-#: src/readelf.c:77
+#: src/readelf.c:79
 msgid "Display the ELF file header"
 msgstr "Display the ELF file header"
 
-#: src/readelf.c:79
+#: src/readelf.c:81
 msgid "Display histogram of bucket list lengths"
 msgstr "Display histogram of bucket list lengths"
 
-#: src/readelf.c:80
+#: src/readelf.c:82
 msgid "Display the program headers"
 msgstr "Display the program headers"
 
-#: src/readelf.c:82
+#: src/readelf.c:84
 msgid "Display relocations"
 msgstr "Display relocations"
 
-#: src/readelf.c:83
+#: src/readelf.c:85
 msgid "Display the sections' headers"
 msgstr "Display the sections' headers"
 
-#: src/readelf.c:85
+#: src/readelf.c:87
 msgid "Display the symbol table"
 msgstr "Display the symbol table"
 
-#: src/readelf.c:86
+#: src/readelf.c:88
 msgid "Display versioning information"
 msgstr "Display versioning information"
 
-#: src/readelf.c:87
+#: src/readelf.c:89
 msgid "Display the ELF notes"
 msgstr "Display the ELF notes"
 
-#: src/readelf.c:89
+#: src/readelf.c:91
 msgid "Display architecture specific information, if any"
 msgstr "Display architecture specific information, if any"
 
-#: src/readelf.c:91
+#: src/readelf.c:93
 msgid "Display sections for exception handling"
 msgstr "Display sections for exception handling"
 
-#: src/readelf.c:93
+#: src/readelf.c:95
 msgid "Additional output selection:"
 msgstr "Additional output selection:"
 
-#: src/readelf.c:95
+#: 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, 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, or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
 
-#: src/readelf.c:99
+#: 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:101
+#: src/readelf.c:103
 msgid "Print string contents of sections"
 msgstr "Print string contents of sections"
 
-#: src/readelf.c:104
+#: src/readelf.c:106
 msgid "Display the symbol index of an archive"
 msgstr "Display the symbol index of an archive"
 
-#: src/readelf.c:106
+#: src/readelf.c:108
 msgid "Output control:"
 msgstr "Output control:"
 
-#: src/readelf.c:108
+#: 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:110
+#: 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:115
+#: 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:412
+#: src/readelf.c:441
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "Unknown DWARF debug section ‘%s’.\n"
 
-#: src/readelf.c:478
+#: 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:490
-#, 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:495
-#, c-format
-msgid "error while closing Elf descriptor: %s"
-msgstr "error while closing Elf descriptor: %s"
-
-#: src/readelf.c:587
-#, c-format
-msgid "cannot stat input file"
-msgstr "cannot stat input file"
-
-#: src/readelf.c:589
-#, c-format
-msgid "input file is empty"
-msgstr "input file is empty"
-
-#: src/readelf.c:591
-#, c-format
-msgid "failed reading '%s': %s"
-msgstr "failed reading '%s': %s"
-
-#: src/readelf.c:627
-#, c-format
-msgid "cannot read ELF header: %s"
-msgstr "cannot read ELF header: %s"
-
-#: src/readelf.c:635
-#, c-format
-msgid "cannot create EBL handle"
-msgstr "cannot create EBL handle"
-
-#: src/readelf.c:648
-#, c-format
-msgid "cannot determine number of program headers: %s"
-msgstr "cannot determine number of program headers: %s"
-
-#: src/readelf.c:734
-msgid "NONE (None)"
-msgstr "NONE (None)"
-
-#: src/readelf.c:735
-msgid "REL (Relocatable file)"
-msgstr "REL (Relocatable file)"
-
-#: src/readelf.c:736
-msgid "EXEC (Executable file)"
-msgstr "EXEC (Executable file)"
-
-#: src/readelf.c:737
-msgid "DYN (Shared object file)"
-msgstr "DYN (Shared object file)"
-
-#: src/readelf.c:738
-msgid "CORE (Core file)"
-msgstr "CORE (Core file)"
-
-#: src/readelf.c:743
-#, c-format
-msgid "OS Specific: (%x)\n"
-msgstr "OS Specific: (%x)\n"
-
-#: src/readelf.c:745
-#, c-format
-msgid "Processor Specific: (%x)\n"
-msgstr "Processor Specific: (%x)\n"
-
-#: src/readelf.c:755
-msgid ""
-"ELF Header:\n"
-"  Magic:  "
-msgstr ""
-"ELF Header:\n"
-"  Magic:  "
-
-#: src/readelf.c:759
-#, c-format
-msgid ""
-"\n"
-"  Class:                             %s\n"
-msgstr ""
-"\n"
-"  Class:                             %s\n"
-
-#: src/readelf.c:764
-#, c-format
-msgid "  Data:                              %s\n"
-msgstr "  Data:                              %s\n"
-
-#: src/readelf.c:770
-#, c-format
-msgid "  Ident Version:                     %hhd %s\n"
-msgstr "  Ident Version:                     %hhd %s\n"
-
-#: src/readelf.c:772 src/readelf.c:789
-msgid "(current)"
-msgstr "(current)"
-
-#: src/readelf.c:776
-#, c-format
-msgid "  OS/ABI:                            %s\n"
-msgstr "  OS/ABI:                            %s\n"
-
-#: src/readelf.c:779
-#, c-format
-msgid "  ABI Version:                       %hhd\n"
-msgstr "  ABI Version:                       %hhd\n"
-
-#: src/readelf.c:782
-msgid "  Type:                              "
-msgstr "  Type:                              "
-
-#: src/readelf.c:785
-#, c-format
-msgid "  Machine:                           %s\n"
-msgstr "  Machine:                           %s\n"
-
-#: src/readelf.c:787
-#, c-format
-msgid "  Version:                           %d %s\n"
-msgstr "  Version:                           %d %s\n"
-
-#: src/readelf.c:791
-#, c-format
-msgid "  Entry point address:               %#<PRIx64>\n"
-msgstr "  Entry point address:               %#<PRIx64>\n"
-
-#: src/readelf.c:794
-#, c-format
-msgid "  Start of program headers:          %<PRId64> %s\n"
-msgstr "  Start of program headers:          %<PRId64> %s\n"
-
-#: src/readelf.c:795 src/readelf.c:798
-msgid "(bytes into file)"
-msgstr "(bytes into file)"
-
-#: src/readelf.c:797
-#, c-format
-msgid "  Start of section headers:          %<PRId64> %s\n"
-msgstr "  Start of section headers:          %<PRId64> %s\n"
-
-#: src/readelf.c:800
-#, c-format
-msgid "  Flags:                             %s\n"
-msgstr "  Flags:                             %s\n"
-
-#: src/readelf.c:803
-#, c-format
-msgid "  Size of this header:               %<PRId16> %s\n"
-msgstr "  Size of this header:               %<PRId16> %s\n"
-
-#: src/readelf.c:804 src/readelf.c:807 src/readelf.c:824
-msgid "(bytes)"
-msgstr "(bytes)"
-
-#: src/readelf.c:806
-#, c-format
-msgid "  Size of program header entries:    %<PRId16> %s\n"
-msgstr "  Size of program header entries:    %<PRId16> %s\n"
-
-#: src/readelf.c:809
-#, c-format
-msgid "  Number of program headers entries: %<PRId16>"
-msgstr "  Number of program headers entries: %<PRId16>"
-
-#: src/readelf.c:816
-#, c-format
-msgid " (%<PRIu32> in [0].sh_info)"
-msgstr " (%<PRIu32> in [0].sh_info)"
-
-#: src/readelf.c:819 src/readelf.c:836 src/readelf.c:850
-msgid " ([0] not available)"
-msgstr " ([0] not available)"
-
-#: src/readelf.c:823
-#, c-format
-msgid "  Size of section header entries:    %<PRId16> %s\n"
-msgstr "  Size of section header entries:    %<PRId16> %s\n"
-
-#: src/readelf.c:826
-#, c-format
-msgid "  Number of section headers entries: %<PRId16>"
-msgstr "  Number of section headers entries: %<PRId16>"
-
-#: src/readelf.c:833
-#, c-format
-msgid " (%<PRIu32> in [0].sh_size)"
-msgstr " (%<PRIu32> in [0].sh_size)"
-
-#: src/readelf.c:846
-#, c-format
-msgid " (%<PRIu32> in [0].sh_link)"
-msgstr " (%<PRIu32> in [0].sh_link)"
-
-#: src/readelf.c:854
-#, c-format
-msgid ""
-"  Section header string table index: XINDEX%s\n"
-"\n"
-msgstr ""
-"  Section header string table index: XINDEX%s\n"
-"\n"
-
-#: src/readelf.c:858
-#, c-format
-msgid ""
-"  Section header string table index: %<PRId16>\n"
-"\n"
-msgstr ""
-"  Section header string table index: %<PRId16>\n"
-"\n"
-
-#: src/readelf.c:890
-#, c-format
-msgid ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-msgstr ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-
-#: src/readelf.c:900
-msgid "Section Headers:"
-msgstr "Section Headers:"
-
-#: src/readelf.c:903
-msgid ""
-"[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
-"Inf Al"
-msgstr ""
-"[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
-"Inf Al"
-
-#: src/readelf.c:905
-msgid ""
-"[Nr] Name                 Type         Addr             Off      Size     ES "
-"Flags Lk Inf Al"
-msgstr ""
-"[Nr] Name                 Type         Addr             Off      Size     ES "
-"Flags Lk Inf Al"
-
-#: src/readelf.c:912 src/readelf.c:1065
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
 #, c-format
 msgid "cannot get section: %s"
 msgstr "cannot get section: %s"
 
-#: src/readelf.c:919 src/readelf.c:1073 src/readelf.c:8379 src/unstrip.c:353
-#: src/unstrip.c:384 src/unstrip.c:433 src/unstrip.c:541 src/unstrip.c:558
-#: src/unstrip.c:594 src/unstrip.c:792 src/unstrip.c:1060 src/unstrip.c:1250
-#: src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484 src/unstrip.c:1591
-#: src/unstrip.c:1780
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9440
+#: src/unstrip.c:356 src/unstrip.c:387 src/unstrip.c:436 src/unstrip.c:544
+#: src/unstrip.c:561 src/unstrip.c:597 src/unstrip.c:795 src/unstrip.c:1063
+#: src/unstrip.c:1254 src/unstrip.c:1314 src/unstrip.c:1435 src/unstrip.c:1488
+#: src/unstrip.c:1595 src/unstrip.c:1784
 #, c-format
 msgid "cannot get section header: %s"
 msgstr "cannot get section header: %s"
 
-#: src/readelf.c:977
+#: src/readelf.c:562
+#, c-format
+msgid "cannot get section name"
+msgstr "cannot get section name"
+
+#: src/readelf.c:571 src/readelf.c:5398 src/readelf.c:7671 src/readelf.c:7773
+#: src/readelf.c:7939
+#, 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: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:771
+#, c-format
+msgid "input file is empty"
+msgstr "input file is empty"
+
+#: src/readelf.c:773
+#, c-format
+msgid "failed reading '%s': %s"
+msgstr "failed reading '%s': %s"
+
+#: src/readelf.c:814
+#, c-format
+msgid "cannot read ELF header: %s"
+msgstr "cannot read ELF header: %s"
+
+#: src/readelf.c:822
+#, c-format
+msgid "cannot create EBL handle"
+msgstr "cannot create EBL handle"
+
+#: 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:921
+msgid "NONE (None)"
+msgstr "NONE (None)"
+
+#: src/readelf.c:922
+msgid "REL (Relocatable file)"
+msgstr "REL (Relocatable file)"
+
+#: src/readelf.c:923
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Executable file)"
+
+#: src/readelf.c:924
+msgid "DYN (Shared object file)"
+msgstr "DYN (Shared object file)"
+
+#: src/readelf.c:925
+msgid "CORE (Core file)"
+msgstr "CORE (Core file)"
+
+#: src/readelf.c:930
+#, c-format
+msgid "OS Specific: (%x)\n"
+msgstr "OS Specific: (%x)\n"
+
+#: src/readelf.c:932
+#, c-format
+msgid "Processor Specific: (%x)\n"
+msgstr "Processor Specific: (%x)\n"
+
+#: src/readelf.c:942
+msgid ""
+"ELF Header:\n"
+"  Magic:  "
+msgstr ""
+"ELF Header:\n"
+"  Magic:  "
+
+#: src/readelf.c:946
+#, c-format
+msgid ""
+"\n"
+"  Class:                             %s\n"
+msgstr ""
+"\n"
+"  Class:                             %s\n"
+
+#: src/readelf.c:951
+#, c-format
+msgid "  Data:                              %s\n"
+msgstr "  Data:                              %s\n"
+
+#: src/readelf.c:957
+#, c-format
+msgid "  Ident Version:                     %hhd %s\n"
+msgstr "  Ident Version:                     %hhd %s\n"
+
+#: src/readelf.c:959 src/readelf.c:976
+msgid "(current)"
+msgstr "(current)"
+
+#: src/readelf.c:963
+#, c-format
+msgid "  OS/ABI:                            %s\n"
+msgstr "  OS/ABI:                            %s\n"
+
+#: src/readelf.c:966
+#, c-format
+msgid "  ABI Version:                       %hhd\n"
+msgstr "  ABI Version:                       %hhd\n"
+
+#: src/readelf.c:969
+msgid "  Type:                              "
+msgstr "  Type:                              "
+
+#: src/readelf.c:972
+#, c-format
+msgid "  Machine:                           %s\n"
+msgstr "  Machine:                           %s\n"
+
+#: src/readelf.c:974
+#, c-format
+msgid "  Version:                           %d %s\n"
+msgstr "  Version:                           %d %s\n"
+
+#: src/readelf.c:978
+#, c-format
+msgid "  Entry point address:               %#<PRIx64>\n"
+msgstr "  Entry point address:               %#<PRIx64>\n"
+
+#: 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:982 src/readelf.c:985
+msgid "(bytes into file)"
+msgstr "(bytes into file)"
+
+#: 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:987
+#, c-format
+msgid "  Flags:                             %s\n"
+msgstr "  Flags:                             %s\n"
+
+#: 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:991 src/readelf.c:994 src/readelf.c:1011
+msgid "(bytes)"
+msgstr "(bytes)"
+
+#: 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:996
+#, c-format
+msgid "  Number of program headers entries: %<PRId16>"
+msgstr "  Number of program headers entries: %<PRId16>"
+
+#: src/readelf.c:1003
+#, c-format
+msgid " (%<PRIu32> in [0].sh_info)"
+msgstr " (%<PRIu32> in [0].sh_info)"
+
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
+msgid " ([0] not available)"
+msgstr " ([0] not available)"
+
+#: 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:1013
+#, c-format
+msgid "  Number of section headers entries: %<PRId16>"
+msgstr "  Number of section headers entries: %<PRId16>"
+
+#: src/readelf.c:1020
+#, c-format
+msgid " (%<PRIu32> in [0].sh_size)"
+msgstr " (%<PRIu32> in [0].sh_size)"
+
+#: src/readelf.c:1033
+#, c-format
+msgid " (%<PRIu32> in [0].sh_link)"
+msgstr " (%<PRIu32> in [0].sh_link)"
+
+#: src/readelf.c:1041
+#, c-format
+msgid ""
+"  Section header string table index: XINDEX%s\n"
+"\n"
+msgstr ""
+"  Section header string table index: XINDEX%s\n"
+"\n"
+
+#: src/readelf.c:1045
+#, c-format
+msgid ""
+"  Section header string table index: %<PRId16>\n"
+"\n"
+msgstr ""
+"  Section header string table index: %<PRId16>\n"
+"\n"
+
+#: src/readelf.c:1077
+#, c-format
+msgid ""
+"There are %d section headers, starting at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+"There are %d section headers, starting at offset %#<PRIx64>:\n"
+"\n"
+
+#: src/readelf.c:1087
+msgid "Section Headers:"
+msgstr "Section Headers:"
+
+#: src/readelf.c:1090
+msgid ""
+"[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
+"Inf Al"
+msgstr ""
+"[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
+"Inf Al"
+
+#: src/readelf.c:1092
+msgid ""
+"[Nr] Name                 Type         Addr             Off      Size     ES "
+"Flags Lk Inf Al"
+msgstr ""
+"[Nr] Name                 Type         Addr             Off      Size     ES "
+"Flags Lk Inf Al"
+
+#: src/readelf.c:1164
 msgid "Program Headers:"
 msgstr "Program Headers:"
 
-#: src/readelf.c:979
+#: 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:982
+#: src/readelf.c:1169
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4412,12 +4541,12 @@
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
 
-#: src/readelf.c:1022
+#: src/readelf.c:1226
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[Requesting program interpreter: %s]\n"
 
-#: src/readelf.c:1043
+#: src/readelf.c:1247
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4427,12 +4556,12 @@
 " Section to Segment mapping:\n"
 "  Segment Sections..."
 
-#: src/readelf.c:1054 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
+#: src/readelf.c:1258 src/unstrip.c:1843 src/unstrip.c:1886 src/unstrip.c:1893
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "cannot get program header: %s"
 
-#: src/readelf.c:1195
+#: src/readelf.c:1401
 #, c-format
 msgid ""
 "\n"
@@ -4449,7 +4578,7 @@
 "COMDAT section group [%2zu] ‘%s’ with signature ‘%s’ contains "
 "%zu entries:\n"
 
-#: src/readelf.c:1200
+#: src/readelf.c:1406
 #, c-format
 msgid ""
 "\n"
@@ -4466,15 +4595,21 @@
 "Section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu "
 "entries:\n"
 
-#: src/readelf.c:1208
+#: src/readelf.c:1414
 msgid "<INVALID SYMBOL>"
 msgstr "<INVALID SYMBOL>"
 
-#: src/readelf.c:1222
+#: src/readelf.c:1428
 msgid "<INVALID SECTION>"
 msgstr "<INVALID SECTION>"
 
-#: src/readelf.c:1373
+#: src/readelf.c:1585 src/readelf.c:2208 src/readelf.c:2466 src/readelf.c:2542
+#: src/readelf.c:2846 src/readelf.c:2920 src/readelf.c:4610
+#, 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"
@@ -4487,44 +4622,44 @@
 msgstr[0] ""
 "\n"
 "Dynamic segment contains %lu entry:\n"
-" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s"
-"[0m’\n"
+" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘"
+"%s’\n"
 msgstr[1] ""
 "\n"
 "Dynamic segment contains %lu entries:\n"
-" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s"
-"[0m’\n"
+" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘"
+"%s’\n"
 
-#: src/readelf.c:1385
+#: src/readelf.c:1598
 msgid "  Type              Value\n"
 msgstr "  Type              Value\n"
 
-#: src/readelf.c:1409
+#: src/readelf.c:1622
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "Shared library: [%s]\n"
 
-#: src/readelf.c:1414
+#: src/readelf.c:1627
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "Library soname: [%s]\n"
 
-#: src/readelf.c:1419
+#: src/readelf.c:1632
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "Library rpath: [%s]\n"
 
-#: src/readelf.c:1424
+#: src/readelf.c:1637
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "Library runpath: [%s]\n"
 
-#: src/readelf.c:1444
+#: src/readelf.c:1657
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (bytes)\n"
 
-#: src/readelf.c:1556 src/readelf.c:1742
+#: src/readelf.c:1770 src/readelf.c:1960
 #, c-format
 msgid ""
 "\n"
@@ -4533,7 +4668,7 @@
 "\n"
 "Invalid symbol table at offset %#0<PRIx64>\n"
 
-#: src/readelf.c:1574 src/readelf.c:1759
+#: src/readelf.c:1788 src/readelf.c:1978
 #, c-format
 msgid ""
 "\n"
@@ -4552,7 +4687,7 @@
 "Relocation section [%2zu] ‘%s’ for section [%2u] ‘%s’ at offset "
 "%#0<PRIx64> contains %d entries:\n"
 
-#: src/readelf.c:1589
+#: src/readelf.c:1803 src/readelf.c:1993
 #, c-format
 msgid ""
 "\n"
@@ -4569,30 +4704,30 @@
 "Relocation section [%2u] ‘%s’ at offset %#0<PRIx64> contains %d "
 "entries:\n"
 
-#: src/readelf.c:1599
+#: src/readelf.c:1813
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "  Offset      Type                 Value       Name\n"
 
-#: src/readelf.c:1601
+#: src/readelf.c:1815
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "  Offset              Type                 Value               Name\n"
 
-#: src/readelf.c:1654 src/readelf.c:1665 src/readelf.c:1678 src/readelf.c:1696
-#: src/readelf.c:1708 src/readelf.c:1827 src/readelf.c:1839 src/readelf.c:1853
-#: src/readelf.c:1872 src/readelf.c:1885
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1913
+#: src/readelf.c:1925 src/readelf.c:2059 src/readelf.c:2071 src/readelf.c:2085
+#: src/readelf.c:2107 src/readelf.c:2120
 msgid "<INVALID RELOC>"
 msgstr "<INVALID RELOC>"
 
-#: src/readelf.c:1771
+#: src/readelf.c:2003
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "  Offset      Type            Value       Addend Name\n"
 
-#: src/readelf.c:1773
+#: src/readelf.c:2005
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 "  Offset              Type            Value               Addend Name\n"
 
-#: src/readelf.c:1974
+#: src/readelf.c:2216
 #, c-format
 msgid ""
 "\n"
@@ -4607,40 +4742,40 @@
 "\n"
 "Symbol table [%2u] ‘%s’ contains %u entries:\n"
 
-#: src/readelf.c:1980
+#: src/readelf.c:2221
 #, 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:1990
+#: src/readelf.c:2229
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 
-#: src/readelf.c:1992
+#: src/readelf.c:2231
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 
-#: src/readelf.c:2012
+#: src/readelf.c:2251
 #, 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:2100
+#: src/readelf.c:2339
 #, c-format
 msgid "bad dynamic symbol"
 msgstr "bad dynamic symbol"
 
-#: src/readelf.c:2182
+#: src/readelf.c:2421
 msgid "none"
 msgstr "none"
 
-#: src/readelf.c:2199
+#: src/readelf.c:2438
 msgid "| <unknown>"
 msgstr "| <unknown>"
 
-#: src/readelf.c:2224
+#: src/readelf.c:2469
 #, c-format
 msgid ""
 "\n"
@@ -4653,25 +4788,25 @@
 msgstr[0] ""
 "\n"
 "Version needs section [%2u] ‘%s’ contains %d entry:\n"
-" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s"
-"[0m’\n"
+" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘"
+"%s’\n"
 msgstr[1] ""
 "\n"
 "Version needs section [%2u] ‘%s’ contains %d entries:\n"
-" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s"
-"[0m’\n"
+" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘"
+"%s’\n"
 
-#: src/readelf.c:2247
+#: src/readelf.c:2490
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 
-#: src/readelf.c:2260
+#: src/readelf.c:2503
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 
-#: src/readelf.c:2291
+#: src/readelf.c:2546
 #, c-format
 msgid ""
 "\n"
@@ -4684,25 +4819,25 @@
 msgstr[0] ""
 "\n"
 "Version definition section [%2u] ‘%s’ contains %d entry:\n"
-" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s"
-"[0m’\n"
+" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘"
+"%s’\n"
 msgstr[1] ""
 "\n"
 "Version definition section [%2u] ‘%s’ contains %d entries:\n"
-" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s"
-"[0m’\n"
+" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘"
+"%s’\n"
 
-#: src/readelf.c:2321
+#: src/readelf.c:2574
 #, 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:2336
+#: src/readelf.c:2589
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Parent %d: %s\n"
 
-#: src/readelf.c:2568
+#: src/readelf.c:2850
 #, c-format
 msgid ""
 "\n"
@@ -4721,15 +4856,15 @@
 "Version symbols section [%2u] ‘%s’ contains %d entries:\n"
 " Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s’"
 
-#: src/readelf.c:2598
+#: src/readelf.c:2878
 msgid "   0 *local*                     "
 msgstr "   0 *local*                     "
 
-#: src/readelf.c:2603
+#: src/readelf.c:2883
 msgid "   1 *global*                    "
 msgstr "   1 *global*                    "
 
-#: src/readelf.c:2634
+#: src/readelf.c:2925
 #, c-format
 msgid ""
 "\n"
@@ -4745,31 +4880,31 @@
 "\n"
 "Histogram for bucket list length in section [%2u] ‘%s’ (total of %d "
 "bucket):\n"
-" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s"
-"[0m’\n"
+" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘"
+"%s’\n"
 msgstr[1] ""
 "\n"
 "Histogram for bucket list length in section [%2u] ‘%s’ (total of %d "
 "buckets):\n"
-" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s"
-"[0m’\n"
+" Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘"
+"%s’\n"
 
-#: src/readelf.c:2658
+#: src/readelf.c:2947
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " Length  Number  % of total  Coverage\n"
 
-#: src/readelf.c:2660
+#: src/readelf.c:2949
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:2667
+#: src/readelf.c:2956
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:2680
+#: src/readelf.c:2969
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -4778,12 +4913,27 @@
 " Average number of tests:   successful lookup: %f\n"
 "\t\t\t  unsuccessful lookup: %f\n"
 
-#: src/readelf.c:2698 src/readelf.c:2740 src/readelf.c:2781
+#: src/readelf.c:2987 src/readelf.c:3042 src/readelf.c:3098
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "cannot get data for section %d: %s"
 
-#: src/readelf.c:2835
+#: src/readelf.c:2995
+#, c-format
+msgid "invalid data in sysv.hash section %d"
+msgstr "invalid data in sysv.hash section %d"
+
+#: src/readelf.c:3050
+#, c-format
+msgid "invalid data in sysv.hash64 section %d"
+msgstr "invalid data in sysv.hash64 section %d"
+
+#: src/readelf.c:3106
+#, c-format
+msgid "invalid data in gnu.hash section %d"
+msgstr "invalid data in gnu.hash section %d"
+
+#: src/readelf.c:3173
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -4792,7 +4942,7 @@
 " Symbol Bias: %u\n"
 " Bitmask Size: %zu bytes  %<PRIuFAST32>%% bits set  2nd hash shift: %u\n"
 
-#: src/readelf.c:2909
+#: src/readelf.c:3248
 #, c-format
 msgid ""
 "\n"
@@ -4809,7 +4959,7 @@
 "Library list section [%2zu] ‘%s’ at offset %#0<PRIx64> contains %d "
 "entries:\n"
 
-#: src/readelf.c:2923
+#: src/readelf.c:3262
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -4817,7 +4967,7 @@
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
 
-#: src/readelf.c:2973
+#: src/readelf.c:3312
 #, c-format
 msgid ""
 "\n"
@@ -4828,160 +4978,140 @@
 "Object attributes section [%2zu] ‘%s’ of %<PRIu64> bytes at offset "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:2989
+#: src/readelf.c:3329
 msgid "  Owner          Size\n"
 msgstr "  Owner          Size\n"
 
-#: src/readelf.c:3015
+#: src/readelf.c:3358
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
-#: src/readelf.c:3047
+#: src/readelf.c:3397
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
-#: src/readelf.c:3052
+#: src/readelf.c:3402
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    File: %11<PRIu32>\n"
 
-#: src/readelf.c:3087
+#: src/readelf.c:3451
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3090
+#: src/readelf.c:3454
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3093
+#: src/readelf.c:3457
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3100
+#: src/readelf.c:3467
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3103
+#: src/readelf.c:3470
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3139
+#: src/readelf.c:3515
 #, c-format
 msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3142
+#: src/readelf.c:3518
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3147
+#: src/readelf.c:3523
 #, c-format
 msgid "%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3150
+#: src/readelf.c:3526
 #, c-format
 msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3156
+#: src/readelf.c:3532
 #, c-format
 msgid "%s+%#<PRIx64> <%s>"
 msgstr "%s+%#<PRIx64> <%s>"
 
-#: src/readelf.c:3159
+#: src/readelf.c:3535
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s>"
 msgstr "%s+%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3163
+#: src/readelf.c:3539
 #, c-format
 msgid "%#<PRIx64> <%s>"
 msgstr "%#<PRIx64> <%s>"
 
-#: src/readelf.c:3166
+#: src/readelf.c:3542
 #, c-format
 msgid "%#0*<PRIx64> <%s>"
 msgstr "%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3171
+#: src/readelf.c:3547
 #, c-format
 msgid "%s+%#<PRIx64>"
 msgstr "%s+%#<PRIx64>"
 
-#: src/readelf.c:3174
+#: src/readelf.c:3550
 #, c-format
 msgid "%s+%#0*<PRIx64>"
 msgstr "%s+%#0*<PRIx64>"
 
-#: src/readelf.c:3313
-#, c-format
-msgid "unknown tag %hx"
-msgstr "unknown tag %hx"
-
-#: src/readelf.c:3315
-#, c-format
-msgid "unknown user tag %hx"
-msgstr "unknown user tag %hx"
-
-#: src/readelf.c:3603
-#, c-format
-msgid "unknown attribute %hx"
-msgstr "unknown attribute %hx"
-
-#: src/readelf.c:3606
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr "unknown user attribute %hx"
-
-#: src/readelf.c:3657
-#, c-format
-msgid "unknown form %#<PRIx64>"
-msgstr "unknown form %#<PRIx64>"
-
-#: src/readelf.c:3893
+#: src/readelf.c:3932
 msgid "empty block"
 msgstr "empty block"
 
-#: src/readelf.c:3896
+#: src/readelf.c:3935
 #, c-format
 msgid "%zu byte block:"
 msgstr "%zu byte block:"
 
-#: src/readelf.c:4419
+#: src/readelf.c:4332
 #, c-format
 msgid "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 
-#: src/readelf.c:4455
+#: src/readelf.c:4389
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr "%s %#<PRIx64> used with different address sizes"
 
-#: src/readelf.c:4462
+#: src/readelf.c:4396
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr "%s %#<PRIx64> used with different offset sizes"
 
-#: src/readelf.c:4542
+#: src/readelf.c:4403
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> used with different base addresses"
+
+#: src/readelf.c:4492
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 
-#: src/readelf.c:4550
+#: src/readelf.c:4500
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 
-#: src/readelf.c:4569
+#: src/readelf.c:4526
 #, c-format
 msgid ""
 "\n"
@@ -4992,7 +5122,7 @@
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 " [ Code]\n"
 
-#: src/readelf.c:4577
+#: src/readelf.c:4534
 #, c-format
 msgid ""
 "\n"
@@ -5001,30 +5131,30 @@
 "\n"
 "Abbreviation section at offset %<PRIu64>:\n"
 
-#: src/readelf.c:4590
+#: src/readelf.c:4547
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** error while reading abbreviation: %s\n"
 
-#: src/readelf.c:4606
+#: src/readelf.c:4563
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "yes"
 msgstr "yes"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "no"
 msgstr "no"
 
-#: src/readelf.c:4644
+#: src/readelf.c:4600 src/readelf.c:4673
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "cannot get .debug_aranges content: %s"
 
-#: src/readelf.c:4649
+#: src/readelf.c:4615
 #, c-format
 msgid ""
 "\n"
@@ -5039,25 +5169,20 @@
 "\n"
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64> contains %zu entries:\n"
 
-#: src/readelf.c:4680
+#: src/readelf.c:4646
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:4682
+#: src/readelf.c:4648
 #, 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:4701
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "cannot get .debug_ranges content: %s"
-
-#: src/readelf.c:4706 src/readelf.c:5207 src/readelf.c:5982 src/readelf.c:6483
-#: src/readelf.c:6598 src/readelf.c:6770
+#: src/readelf.c:4678 src/readelf.c:4832 src/readelf.c:5408 src/readelf.c:6362
+#: src/readelf.c:6894 src/readelf.c:7014 src/readelf.c:7177 src/readelf.c:7602
 #, c-format
 msgid ""
 "\n"
@@ -5066,37 +5191,123 @@
 "\n"
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 
-#: src/readelf.c:4730 src/readelf.c:6508
+#: src/readelf.c:4691 src/readelf.c:6388
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Table at offset %Zu:\n"
+
+#: src/readelf.c:4695 src/readelf.c:5432 src/readelf.c:6399
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "invalid data in section [%zu] ‘%s’"
+
+#: src/readelf.c:4711
+#, c-format
+msgid ""
+"\n"
+" Length:        %6<PRIu64>\n"
+msgstr ""
+"\n"
+" Length:        %6<PRIu64>\n"
+
+#: src/readelf.c:4723
+#, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " DWARF version: %6<PRIuFAST16>\n"
+
+#: src/readelf.c:4727
+#, c-format
+msgid "unsupported aranges version"
+msgstr "unsupported aranges version"
+
+#: src/readelf.c:4738
+#, c-format
+msgid " CU offset:     %6<PRIx64>\n"
+msgstr " CU offset:     %6<PRIx64>\n"
+
+#: src/readelf.c:4744
+#, c-format
+msgid " Address size:  %6<PRIu64>\n"
+msgstr " Address size:  %6<PRIu64>\n"
+
+#: src/readelf.c:4748
+#, c-format
+msgid "unsupported address size"
+msgstr "unsupported address size"
+
+#: src/readelf.c:4753
+#, c-format
+msgid ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+msgstr ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+
+#: src/readelf.c:4757
+#, c-format
+msgid "unsupported segment size"
+msgstr "unsupported segment size"
+
+#: src/readelf.c:4797
+#, c-format
+msgid "   %s..%s (%<PRIx64>)\n"
+msgstr "   %s..%s (%<PRIx64>)\n"
+
+#: src/readelf.c:4800
+#, c-format
+msgid "   %s..%s\n"
+msgstr "   %s..%s\n"
+
+#: src/readelf.c:4809
+#, c-format
+msgid "   %Zu padding bytes\n"
+msgstr "   %Zu padding bytes\n"
+
+#: src/readelf.c:4827
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "cannot get .debug_ranges content: %s"
+
+#: src/readelf.c:4857 src/readelf.c:6921
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <INVALID DATA>\n"
 
-#: src/readelf.c:4752 src/readelf.c:6530
+#: src/readelf.c:4879 src/readelf.c:6943
 #, c-format
 msgid " [%6tx]  base address %s\n"
 msgstr " [%6tx]  base address %s\n"
 
-#: src/readelf.c:4758 src/readelf.c:6536
+#: src/readelf.c:4886 src/readelf.c:6950
 #, c-format
 msgid " [%6tx]  empty list\n"
 msgstr " [%6tx]  empty list\n"
 
-#: src/readelf.c:4767
+#: src/readelf.c:4897
 #, c-format
 msgid " [%6tx]  %s..%s\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:4769
+#: src/readelf.c:4899
 #, c-format
 msgid "           %s..%s\n"
 msgstr "           %s..%s\n"
 
-#: src/readelf.c:5196 src/readelf.c:6838 src/readelf.c:6940 src/readelf.c:7098
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "cannot get %s content: %s"
+#: src/readelf.c:5078
+msgid "         <INVALID DATA>\n"
+msgstr "         <INVALID DATA>\n"
 
-#: src/readelf.c:5203
+#: src/readelf.c:5387
+#, c-format
+msgid "cannot get ELF: %s"
+msgstr "cannot get ELF: %s"
+
+#: src/readelf.c:5404
 #, c-format
 msgid ""
 "\n"
@@ -5105,12 +5316,7 @@
 "\n"
 "Call frame information section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 
-#: src/readelf.c:5231 src/readelf.c:6017
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "invalid data in section [%zu] ‘%s’"
-
-#: src/readelf.c:5253
+#: src/readelf.c:5454
 #, c-format
 msgid ""
 "\n"
@@ -5119,50 +5325,50 @@
 "\n"
 " [%6tx] Zero terminator\n"
 
-#: src/readelf.c:5338
+#: src/readelf.c:5547 src/readelf.c:5702
 #, c-format
 msgid "invalid augmentation length"
 msgstr "invalid augmentation length"
 
-#: src/readelf.c:5350
+#: src/readelf.c:5562
 msgid "FDE address encoding: "
 msgstr "FDE address encoding: "
 
-#: src/readelf.c:5356
+#: src/readelf.c:5568
 msgid "LSDA pointer encoding: "
 msgstr "LSDA pointer encoding: "
 
-#: src/readelf.c:5454
+#: src/readelf.c:5679
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (offset: %#<PRIx64>)"
 
-#: src/readelf.c:5461
+#: src/readelf.c:5686
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (end offset: %#<PRIx64>)"
 
-#: src/readelf.c:5488
+#: src/readelf.c:5723
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sLSDA pointer: %#<PRIx64>\n"
 
-#: src/readelf.c:5539
+#: src/readelf.c:5778
 #, c-format
 msgid "cannot get attribute code: %s"
 msgstr "cannot get attribute code: %s"
 
-#: src/readelf.c:5548
+#: src/readelf.c:5787
 #, c-format
 msgid "cannot get attribute form: %s"
 msgstr "cannot get attribute form: %s"
 
-#: src/readelf.c:5563
+#: src/readelf.c:5802
 #, c-format
 msgid "cannot get attribute value: %s"
 msgstr "cannot get attribute value: %s"
 
-#: src/readelf.c:5819
+#: src/readelf.c:6101
 #, c-format
 msgid ""
 "\n"
@@ -5173,7 +5379,7 @@
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 " [Offset]\n"
 
-#: src/readelf.c:5851
+#: src/readelf.c:6133
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5186,7 +5392,7 @@
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 " Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
 
-#: src/readelf.c:5860
+#: src/readelf.c:6142
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5197,46 +5403,48 @@
 " Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: "
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 
-#: src/readelf.c:5886
+#: src/readelf.c:6167
 #, 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:5898
+#: src/readelf.c:6181
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "cannot get DIE offset: %s"
 
-#: src/readelf.c:5907
+#: src/readelf.c:6190
 #, 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:5938
+#: src/readelf.c:6222
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "cannot get next DIE: %s\n"
 
-#: src/readelf.c:5946
+#: src/readelf.c:6230
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "cannot get next DIE: %s"
 
-#: src/readelf.c:5995
+#: src/readelf.c:6266
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+"\n"
+"DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
+"\n"
+
+#: src/readelf.c:6375
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "cannot get line data section data: %s"
 
-#: src/readelf.c:6008
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-"\n"
-"Table at offset %Zu:\n"
-
-#: src/readelf.c:6063
+#: src/readelf.c:6445
 #, c-format
 msgid ""
 "\n"
@@ -5265,19 +5473,19 @@
 "\n"
 "Opcodes:\n"
 
-#: src/readelf.c:6084
+#: src/readelf.c:6466
 #, 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:6099
+#: src/readelf.c:6481
 #, 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:6107
+#: src/readelf.c:6489
 msgid ""
 "\n"
 "Directory table:"
@@ -5285,7 +5493,7 @@
 "\n"
 "Directory table:"
 
-#: src/readelf.c:6123
+#: src/readelf.c:6505
 msgid ""
 "\n"
 "File name table:\n"
@@ -5295,7 +5503,7 @@
 "File name table:\n"
 " Entry Dir   Time      Size      Name"
 
-#: src/readelf.c:6152
+#: src/readelf.c:6540
 msgid ""
 "\n"
 "Line number statements:"
@@ -5303,152 +5511,217 @@
 "\n"
 "Line number statements:"
 
-#: src/readelf.c:6228
+#: src/readelf.c:6591
+#, c-format
+msgid "invalid maximum operations per instruction is zero"
+msgstr "invalid maximum operations per instruction is zero"
+
+#: src/readelf.c:6627
 #, 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:6233
+#: src/readelf.c:6632
 #, 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:6253
+#: src/readelf.c:6652
 #, c-format
 msgid " extended opcode %u: "
 msgstr " extended opcode %u: "
 
-#: src/readelf.c:6258
+#: src/readelf.c:6657
 msgid " end of sequence"
 msgstr " end of sequence"
 
-#: src/readelf.c:6275
+#: src/readelf.c:6676
 #, c-format
 msgid " set address to %s\n"
 msgstr " set address to %s\n"
 
-#: src/readelf.c:6296
+#: src/readelf.c:6703
 #, 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:6309
+#: src/readelf.c:6716
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " set discriminator to %u\n"
 
-#: src/readelf.c:6314
+#: src/readelf.c:6721
 msgid " unknown opcode"
 msgstr " unknown opcode"
 
-#: src/readelf.c:6326
+#: src/readelf.c:6733
 msgid " copy"
 msgstr " copy"
 
-#: src/readelf.c:6337
+#: src/readelf.c:6744
 #, 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:6341
+#: src/readelf.c:6748
 #, c-format
 msgid " advance address by %u to %s\n"
 msgstr " advance address by %u to %s\n"
 
-#: src/readelf.c:6352
+#: src/readelf.c:6759
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " advance line by constant %d to %<PRId64>\n"
 
-#: src/readelf.c:6360
+#: src/readelf.c:6767
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " set file to %<PRIu64>\n"
 
-#: src/readelf.c:6370
+#: src/readelf.c:6777
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr " set column to %<PRIu64>\n"
 
-#: src/readelf.c:6377
+#: src/readelf.c:6784
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " set ‘%s’ to %<PRIuFAST8>\n"
 
-#: src/readelf.c:6383
+#: src/readelf.c:6790
 msgid " set basic block flag"
 msgstr " set basic block flag"
 
-#: src/readelf.c:6392
+#: src/readelf.c:6803
 #, 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:6396
+#: src/readelf.c:6807
 #, c-format
 msgid " advance address by constant %u to %s\n"
 msgstr " advance address by constant %u to %s\n"
 
-#: src/readelf.c:6414
+#: src/readelf.c:6825
 #, 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:6423
+#: src/readelf.c:6834
 msgid " set prologue end flag"
 msgstr " set prologue end flag"
 
-#: src/readelf.c:6428
+#: src/readelf.c:6839
 msgid " set epilogue begin flag"
 msgstr " set epilogue begin flag"
 
-#: src/readelf.c:6437
+#: src/readelf.c:6848
 #, c-format
 msgid " set isa to %u\n"
 msgstr " set isa to %u\n"
 
-#: src/readelf.c:6446
+#: src/readelf.c:6857
 #, 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:6478
+#: src/readelf.c:6889
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr "cannot get .debug_loc content: %s"
 
-#: src/readelf.c:6548
+#: src/readelf.c:6964
 #, c-format
 msgid " [%6tx]  %s..%s"
 msgstr " [%6tx]  %s..%s"
 
-#: src/readelf.c:6550
+#: src/readelf.c:6966
 #, c-format
 msgid "           %s..%s"
 msgstr "           %s..%s"
 
-#: src/readelf.c:6557
+#: src/readelf.c:6973 src/readelf.c:7858
 msgid "   <INVALID DATA>\n"
 msgstr "   <INVALID DATA>\n"
 
-#: src/readelf.c:6609
+#: src/readelf.c:7025 src/readelf.c:7186
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "cannot get macro information section data: %s"
 
-#: src/readelf.c:6688
+#: src/readelf.c:7104
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** non-terminated string at end of section"
 
-#: src/readelf.c:6756
+#: src/readelf.c:7127
+#, c-format
+msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
+msgstr "%*s*** missing DW_MACINFO_start_file argument at end of section"
+
+#: src/readelf.c:7227
+#, c-format
+msgid " Offset:             0x%<PRIx64>\n"
+msgstr " Offset:             0x%<PRIx64>\n"
+
+#: src/readelf.c:7239
+#, c-format
+msgid " Version:            %<PRIu16>\n"
+msgstr " Version:            %<PRIu16>\n"
+
+#: src/readelf.c:7245 src/readelf.c:7968
+#, c-format
+msgid "  unknown version, cannot parse section\n"
+msgstr "  unknown version, cannot parse section\n"
+
+#: src/readelf.c:7252
+#, c-format
+msgid " Flag:               0x%<PRIx8>\n"
+msgstr " Flag:               0x%<PRIx8>\n"
+
+#: src/readelf.c:7255
+#, c-format
+msgid " Offset length:      %<PRIu8>\n"
+msgstr " Offset length:      %<PRIu8>\n"
+
+#: src/readelf.c:7263
+#, c-format
+msgid " .debug_line offset: 0x%<PRIx64>\n"
+msgstr " .debug_line offset: 0x%<PRIx64>\n"
+
+#: src/readelf.c:7276
+#, c-format
+msgid "  extension opcode table, %<PRIu8> items:\n"
+msgstr "  extension opcode table, %<PRIu8> items:\n"
+
+#: src/readelf.c:7283
+#, c-format
+msgid "    [%<PRIx8>]"
+msgstr "    [%<PRIx8>]"
+
+#: src/readelf.c:7295
+#, c-format
+msgid " %<PRIu8> arguments:"
+msgstr " %<PRIu8> arguments:"
+
+#: src/readelf.c:7323
+#, c-format
+msgid " no arguments."
+msgstr " no arguments."
+
+#: src/readelf.c:7560
+#, c-format
+msgid "vendor opcode not verified?"
+msgstr "vendor opcode not verified?"
+
+#: src/readelf.c:7588
 #, 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:6796
+#: src/readelf.c:7629
 #, c-format
 msgid ""
 "\n"
@@ -5459,12 +5732,12 @@
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 " %*s  String\n"
 
-#: src/readelf.c:6810
+#: src/readelf.c:7643
 #, c-format
 msgid " *** error while reading strings: %s\n"
 msgstr " *** error while reading strings: %s\n"
 
-#: src/readelf.c:6830
+#: src/readelf.c:7663
 #, c-format
 msgid ""
 "\n"
@@ -5473,7 +5746,7 @@
 "\n"
 "Call frame search table section [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:6932
+#: src/readelf.c:7765
 #, c-format
 msgid ""
 "\n"
@@ -5482,22 +5755,22 @@
 "\n"
 "Exception handling table section [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:6955
+#: src/readelf.c:7788
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " LPStart encoding:    %#x "
 
-#: src/readelf.c:6967
+#: src/readelf.c:7800
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr " TType encoding:      %#x "
 
-#: src/readelf.c:6981
+#: src/readelf.c:7815
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr " Call site encoding:  %#x "
 
-#: src/readelf.c:6994
+#: src/readelf.c:7828
 msgid ""
 "\n"
 " Call site table:"
@@ -5505,7 +5778,7 @@
 "\n"
 " Call site table:"
 
-#: src/readelf.c:7008
+#: src/readelf.c:7842
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5518,12 +5791,12 @@
 "        Landing pad:       %#<PRIx64>\n"
 "        Action:            %u\n"
 
-#: src/readelf.c:7068
+#: src/readelf.c:7909
 #, c-format
 msgid "invalid TType encoding"
 msgstr "invalid TType encoding"
 
-#: src/readelf.c:7089
+#: src/readelf.c:7930
 #, c-format
 msgid ""
 "\n"
@@ -5533,42 +5806,37 @@
 "GDB section [%2zu] ‘%s’ at offset %#<PRIx64> contains %<PRId64> "
 "bytes :\n"
 
-#: src/readelf.c:7118
+#: src/readelf.c:7959
 #, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr " Version:         %<PRId32>\n"
 
-#: src/readelf.c:7124
-#, c-format
-msgid "  unknown version, cannot parse section\n"
-msgstr "  unknown version, cannot parse section\n"
-
-#: src/readelf.c:7133
+#: src/readelf.c:7977
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " CU offset:       %#<PRIx32>\n"
 
-#: src/readelf.c:7140
+#: src/readelf.c:7984
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " TU offset:       %#<PRIx32>\n"
 
-#: src/readelf.c:7147
+#: src/readelf.c:7991
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " address offset:  %#<PRIx32>\n"
 
-#: src/readelf.c:7154
+#: src/readelf.c:7998
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " symbol offset:   %#<PRIx32>\n"
 
-#: src/readelf.c:7161
+#: src/readelf.c:8005
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " constant offset: %#<PRIx32>\n"
 
-#: src/readelf.c:7168
+#: src/readelf.c:8012
 #, c-format
 msgid ""
 "\n"
@@ -5577,7 +5845,7 @@
 "\n"
 " CU list at offset %#<PRIx32> contains %zu entries:\n"
 
-#: src/readelf.c:7190
+#: src/readelf.c:8034
 #, c-format
 msgid ""
 "\n"
@@ -5586,7 +5854,7 @@
 "\n"
 " TU list at offset %#<PRIx32> contains %zu entries:\n"
 
-#: src/readelf.c:7216
+#: src/readelf.c:8060
 #, c-format
 msgid ""
 "\n"
@@ -5595,7 +5863,7 @@
 "\n"
 " Address list at offset %#<PRIx32> contains %zu entries:\n"
 
-#: src/readelf.c:7243
+#: src/readelf.c:8089
 #, c-format
 msgid ""
 "\n"
@@ -5604,17 +5872,17 @@
 "\n"
 " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
 
-#: src/readelf.c:7296
+#: src/readelf.c:8176
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "cannot get debug context descriptor: %s"
 
-#: src/readelf.c:7445 src/readelf.c:8046
+#: src/readelf.c:8336 src/readelf.c:8942 src/readelf.c:9053 src/readelf.c:9111
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "cannot convert core note data: %s"
 
-#: src/readelf.c:7786
+#: src/readelf.c:8683
 #, c-format
 msgid ""
 "\n"
@@ -5623,21 +5891,21 @@
 "\n"
 "%*s... <repeats %u more times> ..."
 
-#: src/readelf.c:8145
+#: src/readelf.c:9190
 msgid "  Owner          Data size  Type\n"
 msgstr "  Owner          Data size  Type\n"
 
-#: src/readelf.c:8163
+#: src/readelf.c:9208
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:8197
+#: src/readelf.c:9258
 #, c-format
 msgid "cannot get content of note section: %s"
 msgstr "cannot get content of note section: %s"
 
-#: src/readelf.c:8224
+#: src/readelf.c:9285
 #, c-format
 msgid ""
 "\n"
@@ -5646,7 +5914,7 @@
 "\n"
 "Note section [%2zu] ‘%s’ of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 
-#: src/readelf.c:8247
+#: src/readelf.c:9308
 #, c-format
 msgid ""
 "\n"
@@ -5655,7 +5923,7 @@
 "\n"
 "Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 
-#: src/readelf.c:8293
+#: src/readelf.c:9354
 #, c-format
 msgid ""
 "\n"
@@ -5664,12 +5932,12 @@
 "\n"
 "Section [%Zu] ‘%s’ has no data to dump.\n"
 
-#: src/readelf.c:8299 src/readelf.c:8322
+#: src/readelf.c:9360 src/readelf.c:9383
 #, c-format
 msgid "cannot get data for section [%Zu] '%s': %s"
 msgstr "cannot get data for section [%Zu] '%s': %s"
 
-#: src/readelf.c:8303
+#: src/readelf.c:9364
 #, c-format
 msgid ""
 "\n"
@@ -5678,7 +5946,7 @@
 "\n"
 "Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 
-#: src/readelf.c:8316
+#: src/readelf.c:9377
 #, c-format
 msgid ""
 "\n"
@@ -5687,7 +5955,7 @@
 "\n"
 "Section [%Zu] ‘%s’ has no strings to dump.\n"
 
-#: src/readelf.c:8326
+#: src/readelf.c:9387
 #, c-format
 msgid ""
 "\n"
@@ -5697,7 +5965,7 @@
 "String section [%Zu] ‘%s’ contains %<PRIu64> bytes at offset "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:8374
+#: src/readelf.c:9435
 #, c-format
 msgid ""
 "\n"
@@ -5706,7 +5974,7 @@
 "\n"
 "section [%lu] does not exist"
 
-#: src/readelf.c:8403
+#: src/readelf.c:9464
 #, c-format
 msgid ""
 "\n"
@@ -5715,12 +5983,12 @@
 "\n"
 "section ‘%s’ does not exist"
 
-#: src/readelf.c:8460
+#: src/readelf.c:9521
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "cannot get symbol index of archive '%s': %s"
 
-#: src/readelf.c:8463
+#: src/readelf.c:9524
 #, c-format
 msgid ""
 "\n"
@@ -5729,7 +5997,7 @@
 "\n"
 "Archive ‘%s’ has no symbol index\n"
 
-#: src/readelf.c:8467
+#: src/readelf.c:9528
 #, c-format
 msgid ""
 "\n"
@@ -5738,17 +6006,17 @@
 "\n"
 "Index of archive ‘%s’ has %Zu entries:\n"
 
-#: src/readelf.c:8485
+#: src/readelf.c:9546
 #, 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:8490
+#: src/readelf.c:9551
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Archive member ‘%s’ contains:\n"
 
-#: src/size.c:68
+#: src/size.c:60
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd' or `sysv'.  The default "
 "is `bsd'"
@@ -5756,80 +6024,80 @@
 "Use the output format FORMAT.  FORMAT can be ‘bsd’ or ‘sysv’.  "
 "The default is ‘bsd’"
 
-#: src/size.c:70
+#: src/size.c:62
 msgid "Same as `--format=sysv'"
 msgstr "Same as ‘--format=sysv’"
 
-#: src/size.c:71
+#: src/size.c:63
 msgid "Same as `--format=bsd'"
 msgstr "Same as ‘--format=bsd’"
 
-#: src/size.c:74
+#: src/size.c:66
 msgid "Same as `--radix=10'"
 msgstr "Same as ‘--radix=10’"
 
-#: src/size.c:75
+#: src/size.c:67
 msgid "Same as `--radix=8'"
 msgstr "Same as ‘--radix=8’"
 
-#: src/size.c:76
+#: src/size.c:68
 msgid "Same as `--radix=16'"
 msgstr "Same as ‘--radix=16’"
 
-#: src/size.c:78
+#: src/size.c:70
 msgid "Similar to `--format=sysv' output but in one line"
 msgstr "Similar to ‘--format=sysv’ output but in one line"
 
-#: src/size.c:82
+#: src/size.c:74
 msgid "Print size and permission flags for loadable segments"
 msgstr "Print size and permission flags for loadable segments"
 
-#: src/size.c:83
+#: src/size.c:75
 msgid "Display the total sizes (bsd only)"
 msgstr "Display the total sizes (bsd only)"
 
-#: src/size.c:88
+#: src/size.c:80
 msgid "List section sizes of FILEs (a.out by default)."
 msgstr "List section sizes of FILEs (a.out by default)."
 
-#: src/size.c:269
+#: src/size.c:261
 #, c-format
 msgid "Invalid format: %s"
 msgstr "Invalid format: %s"
 
-#: src/size.c:280
+#: src/size.c:272
 #, c-format
 msgid "Invalid radix: %s"
 msgstr "Invalid radix: %s"
 
-#: src/size.c:339
+#: src/size.c:331
 #, c-format
 msgid "%s: file format not recognized"
 msgstr "%s: file format not recognized"
 
-#: src/size.c:446 src/size.c:589
+#: src/size.c:437 src/size.c:570
 #, c-format
 msgid " (ex %s)"
 msgstr " (ex %s)"
 
-#: src/size.c:614
+#: src/size.c:595
 msgid "(TOTALS)\n"
 msgstr "(TOTALS)\n"
 
-#: src/strings.c:70
+#: src/strings.c:62
 msgid "Output Selection:"
 msgstr "Output Selection:"
 
-#: src/strings.c:71
+#: src/strings.c:63
 msgid "Scan entire file, not only loaded sections"
 msgstr "Scan entire file, not only loaded sections"
 
-#: src/strings.c:73
+#: src/strings.c:65
 msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 msgstr ""
 "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 
-#: src/strings.c:74
+#: src/strings.c:66
 msgid ""
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
@@ -5837,72 +6105,72 @@
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
 
-#: src/strings.c:78
+#: src/strings.c:70
 msgid "Print name of the file before each string."
 msgstr "Print name of the file before each string."
 
-#: src/strings.c:80
+#: src/strings.c:72
 msgid "Print location of the string in base 8, 10, or 16 respectively."
 msgstr "Print location of the string in base 8, 10, or 16 respectively."
 
-#: src/strings.c:81
+#: src/strings.c:73
 msgid "Alias for --radix=o"
 msgstr "Alias for --radix=o"
 
-#: src/strings.c:88
+#: src/strings.c:80
 msgid "Print the strings of printable characters in files."
 msgstr "Print the strings of printable characters in files."
 
-#: src/strings.c:268 src/strings.c:303
+#: 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:314
+#: 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:599
+#: src/strings.c:596
 #, c-format
 msgid "lseek64 failed"
 msgstr "lseek64 failed"
 
-#: src/strings.c:616 src/strings.c:680
+#: src/strings.c:613 src/strings.c:677
 #, c-format
 msgid "re-mmap failed"
 msgstr "re-mmap failed"
 
-#: src/strings.c:653
+#: src/strings.c:650
 #, c-format
 msgid "mprotect failed"
 msgstr "mprotect failed"
 
-#: src/strip.c:77
+#: src/strip.c:69
 msgid "Place stripped output into FILE"
 msgstr "Place stripped output into FILE"
 
-#: src/strip.c:78
+#: src/strip.c:70
 msgid "Extract the removed sections into FILE"
 msgstr "Extract the removed sections into FILE"
 
-#: src/strip.c:79
+#: src/strip.c:71
 msgid "Embed name FILE instead of -f argument"
 msgstr "Embed name FILE instead of -f argument"
 
-#: src/strip.c:83
+#: src/strip.c:75
 msgid "Remove all debugging symbols"
 msgstr "Remove all debugging symbols"
 
-#: src/strip.c:87
+#: src/strip.c:79
 msgid "Remove section headers (not recommended)"
 msgstr "Remove section headers (not recommended)"
 
-#: src/strip.c:89
+#: src/strip.c:81
 msgid "Copy modified/access timestamps to the output"
 msgstr "Copy modified/access timestamps to the output"
 
-#: src/strip.c:91
+#: src/strip.c:83
 msgid ""
 "Resolve all trivial relocations between debug sections if the removed "
 "sections are placed in a debug file (only relevant for ET_REL files, "
@@ -5912,377 +6180,391 @@
 "sections are placed in a debug file (only relevant for ET_REL files, "
 "operation is not reversable, needs -f)"
 
-#: src/strip.c:93
+#: src/strip.c:85
 msgid "Remove .comment section"
 msgstr "Remove .comment section"
 
-#: src/strip.c:96
+#: src/strip.c:88
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr "Relax a few rules to handle slightly broken ELF files"
 
-#: src/strip.c:101
+#: src/strip.c:93
 msgid "Discard symbols from object files."
 msgstr "Discard symbols from object files."
 
-#: src/strip.c:189
+#: src/strip.c:181
 #, c-format
 msgid "--reloc-debug-sections used without -f"
 msgstr "--reloc-debug-sections used without -f"
 
-#: src/strip.c:203
+#: src/strip.c:195
 #, c-format
 msgid "Only one input file allowed together with '-o' and '-f'"
 msgstr "Only one input file allowed together with ‘-o’ and ‘-f’"
 
-#: src/strip.c:239
+#: src/strip.c:231
 #, c-format
 msgid "-f option specified twice"
 msgstr "-f option specified twice"
 
-#: src/strip.c:248
+#: src/strip.c:240
 #, c-format
 msgid "-F option specified twice"
 msgstr "-F option specified twice"
 
-#: src/strip.c:257 src/unstrip.c:125
+#: src/strip.c:249 src/unstrip.c:121
 #, c-format
 msgid "-o option specified twice"
 msgstr "-o option specified twice"
 
-#: src/strip.c:281
+#: src/strip.c:273
 #, c-format
 msgid "-R option supports only .comment section"
 msgstr "-R option supports only .comment section"
 
-#: src/strip.c:323 src/strip.c:347
+#: src/strip.c:315 src/strip.c:339
 #, c-format
 msgid "cannot stat input file '%s'"
 msgstr "cannot stat input file ‘%s’"
 
-#: src/strip.c:337
+#: src/strip.c:329
 #, c-format
 msgid "while opening '%s'"
 msgstr "while opening ‘%s’"
 
-#: src/strip.c:375
+#: src/strip.c:367
 #, c-format
 msgid "%s: cannot use -o or -f when stripping archive"
 msgstr "%s: cannot use -o or -f when stripping archive"
 
-#: src/strip.c:475
+#: src/strip.c:468
 #, c-format
 msgid "cannot open EBL backend"
 msgstr "cannot open EBL backend"
 
-#: src/strip.c:525 src/strip.c:549
+#: src/strip.c:508
+#, c-format
+msgid "cannot get number of phdrs"
+msgstr "cannot get number of phdrs"
+
+#: src/strip.c:523 src/strip.c:547
 #, c-format
 msgid "cannot create new file '%s': %s"
 msgstr "cannot create new file '%s': %s"
 
-#: src/strip.c:609
+#: src/strip.c:613
 #, c-format
 msgid "illformed file '%s'"
 msgstr "illformed file ‘%s’"
 
-#: src/strip.c:913 src/strip.c:1002
+#: src/strip.c:935 src/strip.c:1024
 #, c-format
 msgid "while generating output file: %s"
 msgstr "while generating output file: %s"
 
-#: src/strip.c:975 src/strip.c:1937
+#: src/strip.c:997 src/strip.c:1962
 #, c-format
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: error while creating ELF header: %s"
 
-#: src/strip.c:989
+#: src/strip.c:1011
 #, c-format
 msgid "while preparing output for '%s'"
 msgstr "while preparing output for ‘%s’"
 
-#: src/strip.c:1040 src/strip.c:1096
+#: src/strip.c:1062 src/strip.c:1119
 #, c-format
 msgid "while create section header section: %s"
 msgstr "while create section header section: %s"
 
-#: src/strip.c:1046
+#: src/strip.c:1068
 #, c-format
 msgid "cannot allocate section data: %s"
 msgstr "cannot allocate section data: %s"
 
-#: src/strip.c:1105
+#: src/strip.c:1128
 #, c-format
 msgid "while create section header string table: %s"
 msgstr "while create section header string table: %s"
 
-#: src/strip.c:1732
+#: src/strip.c:1757
 #, c-format
 msgid "bad relocation"
 msgstr "bad relocation"
 
-#: src/strip.c:1849 src/strip.c:1959
+#: src/strip.c:1874 src/strip.c:1984
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "while writing '%s': %s"
 
-#: src/strip.c:1860
+#: src/strip.c:1885
 #, c-format
 msgid "while creating '%s'"
 msgstr "while creating ‘%s’"
 
-#: src/strip.c:1882
+#: src/strip.c:1907
 #, c-format
 msgid "while computing checksum for debug information"
 msgstr "while computing checksum for debug information"
 
-#: src/strip.c:1945
+#: src/strip.c:1970
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: error while reading the file: %s"
 
-#: src/strip.c:1984 src/strip.c:2004
+#: src/strip.c:2009 src/strip.c:2029
 #, c-format
 msgid "while writing '%s'"
 msgstr "while writing ‘%s’"
 
-#: src/strip.c:2038 src/strip.c:2045
+#: src/strip.c:2066 src/strip.c:2073
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "error while finishing '%s': %s"
 
-#: src/strip.c:2068 src/strip.c:2125
+#: src/strip.c:2096 src/strip.c:2153
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "cannot set access and modification date of ‘%s’"
 
-#: src/unstrip.c:78
+#: src/unstrip.c:70
 msgid "Match MODULE against file names, not module names"
 msgstr "Match MODULE against file names, not module names"
 
-#: src/unstrip.c:79
+#: src/unstrip.c:71
 msgid "Silently skip unfindable files"
 msgstr "Silently skip unfindable files"
 
-#: src/unstrip.c:82
+#: src/unstrip.c:74
 msgid "Place output into FILE"
 msgstr "Place output into FILE"
 
-#: src/unstrip.c:84
+#: src/unstrip.c:76
 msgid "Create multiple output files under DIRECTORY"
 msgstr "Create multiple output files under DIRECTORY"
 
-#: src/unstrip.c:85
+#: src/unstrip.c:77
 msgid "Use module rather than file names"
 msgstr "Use module rather than file names"
 
-#: src/unstrip.c:87
+#: src/unstrip.c:79
 msgid "Create output for modules that have no separate debug information"
 msgstr "Create output for modules that have no separate debug information"
 
-#: src/unstrip.c:90
+#: src/unstrip.c:82
 msgid "Apply relocations to section contents in ET_REL files"
 msgstr "Apply relocations to section contents in ET_REL files"
 
-#: src/unstrip.c:92
+#: src/unstrip.c:84
 msgid "Only list module and file names, build IDs"
 msgstr "Only list module and file names, build IDs"
 
-#: src/unstrip.c:134
+#: 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:166
+#: 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:175
+#: 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:190
+#: src/unstrip.c:189
 #, c-format
 msgid "output directory '%s'"
 msgstr "output directory ‘%s’"
 
-#: src/unstrip.c:199
+#: src/unstrip.c:198
 #, c-format
 msgid "exactly two file arguments are required"
 msgstr "exactly two file arguments are required"
 
-#: src/unstrip.c:205
+#: 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:218
+#: 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:254
+#: src/unstrip.c:253
 #, c-format
 msgid "cannot create ELF header: %s"
 msgstr "cannot create ELF header: %s"
 
-#: src/unstrip.c:259
+#: src/unstrip.c:258
 #, c-format
 msgid "cannot copy ELF header: %s"
 msgstr "cannot copy ELF header: %s"
 
-#: src/unstrip.c:264 src/unstrip.c:1828
+#: src/unstrip.c:262 src/unstrip.c:1832 src/unstrip.c:1876
+#, c-format
+msgid "cannot get number of program headers: %s"
+msgstr "cannot get number of program headers: %s"
+
+#: src/unstrip.c:267 src/unstrip.c:1836
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "cannot create program headers: %s"
 
-#: src/unstrip.c:270
+#: src/unstrip.c:273
 #, c-format
 msgid "cannot copy program header: %s"
 msgstr "cannot copy program header: %s"
 
-#: src/unstrip.c:280
+#: src/unstrip.c:283
 #, c-format
 msgid "cannot copy section header: %s"
 msgstr "cannot copy section header: %s"
 
-#: src/unstrip.c:283 src/unstrip.c:1509
+#: src/unstrip.c:286 src/unstrip.c:1513
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "cannot get section data: %s"
 
-#: src/unstrip.c:285 src/unstrip.c:1511
+#: src/unstrip.c:288 src/unstrip.c:1515
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "cannot copy section data: %s"
 
-#: src/unstrip.c:309
+#: src/unstrip.c:312
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "cannot create directory ‘%s’"
 
-#: src/unstrip.c:349 src/unstrip.c:766 src/unstrip.c:1543
+#: src/unstrip.c:352 src/unstrip.c:769 src/unstrip.c:1547
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "cannot get symbol table entry: %s"
 
-#: src/unstrip.c:365 src/unstrip.c:583 src/unstrip.c:604 src/unstrip.c:616
-#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
+#: src/unstrip.c:368 src/unstrip.c:586 src/unstrip.c:607 src/unstrip.c:619
+#: src/unstrip.c:1568 src/unstrip.c:1698 src/unstrip.c:1722
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "cannot update symbol table: %s"
 
-#: src/unstrip.c:375
+#: src/unstrip.c:378
 #, c-format
 msgid "cannot update section header: %s"
 msgstr "cannot update section header: %s"
 
-#: src/unstrip.c:414 src/unstrip.c:425
+#: src/unstrip.c:417 src/unstrip.c:428
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr "cannot update relocation: %s"
 
-#: src/unstrip.c:512
+#: src/unstrip.c:515
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr "cannot get symbol version: %s"
 
-#: src/unstrip.c:524
+#: src/unstrip.c:527
 #, 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:772
+#: src/unstrip.c:775
 #, c-format
 msgid "invalid string offset in symbol [%Zu]"
 msgstr "invalid string offset in symbol [%Zu]"
 
-#: src/unstrip.c:914 src/unstrip.c:1254
+#: src/unstrip.c:917 src/unstrip.c:1258
 #, c-format
 msgid "cannot read section [%Zu] name: %s"
 msgstr "cannot read section [%Zu] name: %s"
 
-#: src/unstrip.c:955 src/unstrip.c:974 src/unstrip.c:1007
+#: src/unstrip.c:958 src/unstrip.c:977 src/unstrip.c:1010
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr "cannot read ‘.gnu.prelink_undo’ section: %s"
 
-#: src/unstrip.c:995
+#: src/unstrip.c:998
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr "invalid contents in ‘%s’ section"
 
-#: src/unstrip.c:1050 src/unstrip.c:1374
+#: src/unstrip.c:1053 src/unstrip.c:1378
 #, c-format
 msgid "cannot find matching section for [%Zu] '%s'"
 msgstr "cannot find matching section for [%Zu] ‘%s’"
 
-#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
+#: src/unstrip.c:1178 src/unstrip.c:1193 src/unstrip.c:1459
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr "cannot add section name to string table: %s"
 
-#: src/unstrip.c:1198
+#: src/unstrip.c:1202
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr "cannot update section header string table data: %s"
 
-#: src/unstrip.c:1225 src/unstrip.c:1229
+#: src/unstrip.c:1229 src/unstrip.c:1233
 #, 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:1233 src/unstrip.c:1237 src/unstrip.c:1470
+#: src/unstrip.c:1237 src/unstrip.c:1241 src/unstrip.c:1474
 #, c-format
 msgid "cannot get section count: %s"
 msgstr "cannot get section count: %s"
 
-#: src/unstrip.c:1240
+#: src/unstrip.c:1244
 #, 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:1299 src/unstrip.c:1389
+#: src/unstrip.c:1303 src/unstrip.c:1393
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr "cannot read section header string table: %s"
 
-#: src/unstrip.c:1449
+#: src/unstrip.c:1453
 #, c-format
 msgid "cannot add new section: %s"
 msgstr "cannot add new section: %s"
 
-#: src/unstrip.c:1551
+#: src/unstrip.c:1555
 #, c-format
 msgid "symbol [%Zu] has invalid section index"
 msgstr "symbol [%Zu] has invalid section index"
 
-#: src/unstrip.c:1789
+#: src/unstrip.c:1793
 #, c-format
 msgid "cannot read section data: %s"
 msgstr "cannot read section data: %s"
 
-#: src/unstrip.c:1810
+#: src/unstrip.c:1814
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr "cannot get ELF header: %s"
 
-#: src/unstrip.c:1838
+#: src/unstrip.c:1846
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "cannot update program header: %s"
 
-#: src/unstrip.c:1843 src/unstrip.c:1922
+#: src/unstrip.c:1851 src/unstrip.c:1934
 #, c-format
 msgid "cannot write output file: %s"
 msgstr "cannot write output file: %s"
 
-#: src/unstrip.c:1891
+#: src/unstrip.c:1903
 #, 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:1894
+#: src/unstrip.c:1906
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6290,57 +6572,76 @@
 "DWARF data in ‘%s’ not adjusted for prelinking bias; consider prelink -"
 "u"
 
-#: src/unstrip.c:1913 src/unstrip.c:1953 src/unstrip.c:1965 src/unstrip.c:2045
+#: src/unstrip.c:1925 src/unstrip.c:1976 src/unstrip.c:1988 src/unstrip.c:2074
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr "cannot create ELF descriptor: %s"
 
-#: src/unstrip.c:1971
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "‘%s’ and ‘%s’ do not seem to match"
+#: src/unstrip.c:1967
+msgid "WARNING: "
+msgstr "WARNING: "
 
-#: src/unstrip.c:2002
+#: src/unstrip.c:1969
+msgid ", use --force"
+msgstr ", use --force"
+
+#: src/unstrip.c:1992
+msgid "ELF header identification (e_ident) different"
+msgstr "ELF header identification (e_ident) different"
+
+#: src/unstrip.c:1995
+msgid "ELF header type (e_type) different"
+msgstr "ELF header type (e_type) different"
+
+#: src/unstrip.c:1998
+msgid "ELF header machine type (e_machine) different"
+msgstr "ELF header machine type (e_machine) different"
+
+#: src/unstrip.c:2001
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr "stripped program header (e_phnum) smaller than unstripped"
+
+#: src/unstrip.c:2031
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr "cannot find stripped file for module '%s': %s"
 
-#: src/unstrip.c:2006
+#: src/unstrip.c:2035
 #, 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:2021
+#: src/unstrip.c:2050
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr "cannot find debug file for module '%s': %s"
 
-#: src/unstrip.c:2025
+#: src/unstrip.c:2054
 #, 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:2038
+#: src/unstrip.c:2067
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr "module ‘%s’ file ‘%s’ is not stripped"
 
-#: src/unstrip.c:2069
+#: src/unstrip.c:2098
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr "cannot cache section addresses for module '%s': %s"
 
-#: src/unstrip.c:2202
+#: src/unstrip.c:2231
 #, c-format
 msgid "no matching modules found"
 msgstr "no matching modules found"
 
-#: src/unstrip.c:2211
+#: src/unstrip.c:2240
 #, c-format
 msgid "matched more than one module"
 msgstr "matched more than one module"
 
-#: src/unstrip.c:2258
+#: src/unstrip.c:2287
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
@@ -6348,7 +6649,7 @@
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 
-#: src/unstrip.c:2259
+#: src/unstrip.c:2288
 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"
diff --git a/src/po/en@quot.gmo b/src/po/en@quot.gmo
index 42ff5aa..57b504f 100644
--- a/src/po/en@quot.gmo
+++ b/src/po/en@quot.gmo
Binary files differ
diff --git a/src/po/en@quot.po b/src/po/en@quot.po
index 367e10b..baef35e 100644
--- a/src/po/en@quot.po
+++ b/src/po/en@quot.po
@@ -1,7 +1,7 @@
 # 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
@@ -27,222 +27,230 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: elfutils 0.153\n"
+"Project-Id-Version: elfutils 0.161\n"
 "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-02-16 13:21+0100\n"
-"PO-Revision-Date: 2012-02-16 13:21+0100\n"
+"POT-Creation-Date: 2014-12-19 21:45+0100\n"
+"PO-Revision-Date: 2014-12-19 21:45+0100\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:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2844
-#: src/readelf.c:3183 src/unstrip.c:2098 src/unstrip.c:2306
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3182
+#: src/readelf.c:3559 src/readelf.c:8285 src/unstrip.c:2127 src/unstrip.c:2335
 #, c-format
 msgid "memory exhausted"
 msgstr "memory exhausted"
 
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
+#: 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:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
+#: 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"
 
-#: libasm/asm_error.c:64 src/ldgeneric.c:2685
+#: libasm/asm_error.c:67 src/ldgeneric.c:2677
 #, c-format
 msgid "cannot create output file"
 msgstr "cannot create output file"
 
-#: libasm/asm_error.c:65
+#: libasm/asm_error.c:68
 msgid "invalid parameter"
 msgstr "invalid parameter"
 
-#: libasm/asm_error.c:66
+#: libasm/asm_error.c:69
 msgid "cannot change mode of output file"
 msgstr "cannot change mode of output file"
 
-#: libasm/asm_error.c:67 src/ldgeneric.c:6998
+#: libasm/asm_error.c:70 src/ldgeneric.c:6990
 #, c-format
 msgid "cannot rename output file"
 msgstr "cannot rename output file"
 
-#: libasm/asm_error.c:68
+#: libasm/asm_error.c:71
 msgid "duplicate symbol"
 msgstr "duplicate symbol"
 
-#: libasm/asm_error.c:69
+#: libasm/asm_error.c:72
 msgid "invalid section type for operation"
 msgstr "invalid section type for operation"
 
-#: libasm/asm_error.c:70
+#: libasm/asm_error.c:73
 msgid "error during output of data"
 msgstr "error during output of data"
 
-#: libasm/asm_error.c:71
+#: libasm/asm_error.c:74
 msgid "no backend support available"
 msgstr "no backend support available"
 
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
+#: 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"
 
-#: libdw/dwarf_error.c:81
+#: libdw/dwarf_error.c:60
 msgid "invalid access"
 msgstr "invalid access"
 
-#: libdw/dwarf_error.c:82
+#: libdw/dwarf_error.c:61
 msgid "no regular file"
 msgstr "no regular file"
 
-#: libdw/dwarf_error.c:83
+#: libdw/dwarf_error.c:62
 msgid "I/O error"
 msgstr "I/O error"
 
-#: libdw/dwarf_error.c:84
+#: libdw/dwarf_error.c:63
 msgid "invalid ELF file"
 msgstr "invalid ELF file"
 
-#: libdw/dwarf_error.c:85
+#: libdw/dwarf_error.c:64
 msgid "no DWARF information"
 msgstr "no DWARF information"
 
-#: libdw/dwarf_error.c:86
+#: libdw/dwarf_error.c:65
 msgid "no ELF file"
 msgstr "no ELF file"
 
-#: libdw/dwarf_error.c:87
+#: libdw/dwarf_error.c:66
 msgid "cannot get ELF header"
 msgstr "cannot get ELF header"
 
-#: libdw/dwarf_error.c:89
+#: libdw/dwarf_error.c:68
 msgid "not implemented"
 msgstr "not implemented"
 
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
+#: libdw/dwarf_error.c:69 libelf/elf_error.c:107 libelf/elf_error.c:155
 msgid "invalid command"
 msgstr "invalid command"
 
-#: libdw/dwarf_error.c:91
+#: libdw/dwarf_error.c:70
 msgid "invalid version"
 msgstr "invalid version"
 
-#: libdw/dwarf_error.c:92
+#: libdw/dwarf_error.c:71
 msgid "invalid file"
 msgstr "invalid file"
 
-#: libdw/dwarf_error.c:93
+#: libdw/dwarf_error.c:72
 msgid "no entries found"
 msgstr "no entries found"
 
-#: libdw/dwarf_error.c:94
+#: libdw/dwarf_error.c:73
 msgid "invalid DWARF"
 msgstr "invalid DWARF"
 
-#: libdw/dwarf_error.c:95
+#: libdw/dwarf_error.c:74
 msgid "no string data"
 msgstr "no string data"
 
-#: libdw/dwarf_error.c:96
+#: libdw/dwarf_error.c:75
 msgid "no address value"
 msgstr "no address value"
 
-#: libdw/dwarf_error.c:97
+#: libdw/dwarf_error.c:76
 msgid "no constant value"
 msgstr "no constant value"
 
-#: libdw/dwarf_error.c:98
+#: libdw/dwarf_error.c:77
 msgid "no reference value"
 msgstr "no reference value"
 
-#: libdw/dwarf_error.c:99
+#: libdw/dwarf_error.c:78
 msgid "invalid reference value"
 msgstr "invalid reference value"
 
-#: libdw/dwarf_error.c:100
+#: libdw/dwarf_error.c:79
 msgid ".debug_line section missing"
 msgstr ".debug_line section missing"
 
-#: libdw/dwarf_error.c:101
+#: libdw/dwarf_error.c:80
 msgid "invalid .debug_line section"
 msgstr "invalid .debug_line section"
 
-#: libdw/dwarf_error.c:102
+#: libdw/dwarf_error.c:81
 msgid "debug information too big"
 msgstr "debug information too big"
 
-#: libdw/dwarf_error.c:103
+#: libdw/dwarf_error.c:82
 msgid "invalid DWARF version"
 msgstr "invalid DWARF version"
 
-#: libdw/dwarf_error.c:104
+#: libdw/dwarf_error.c:83
 msgid "invalid directory index"
 msgstr "invalid directory index"
 
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
 msgid "address out of range"
 msgstr "address out of range"
 
-#: libdw/dwarf_error.c:106
+#: libdw/dwarf_error.c:85
 msgid "no location list value"
 msgstr "no location list value"
 
-#: libdw/dwarf_error.c:107
+#: libdw/dwarf_error.c:86
 msgid "no block data"
 msgstr "no block data"
 
-#: libdw/dwarf_error.c:108
+#: libdw/dwarf_error.c:87
 msgid "invalid line index"
 msgstr "invalid line index"
 
-#: libdw/dwarf_error.c:109
+#: libdw/dwarf_error.c:88
 msgid "invalid address range index"
 msgstr "invalid address range index"
 
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
 msgid "no matching address range"
 msgstr "no matching address range"
 
-#: libdw/dwarf_error.c:111
+#: libdw/dwarf_error.c:90
 msgid "no flag value"
 msgstr "no flag value"
 
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
+#: libdw/dwarf_error.c:91 libelf/elf_error.c:232
 msgid "invalid offset"
 msgstr "invalid offset"
 
-#: libdw/dwarf_error.c:113
+#: libdw/dwarf_error.c:92
 msgid ".debug_ranges section missing"
 msgstr ".debug_ranges section missing"
 
-#: libdw/dwarf_error.c:114
+#: libdw/dwarf_error.c:93
 msgid "invalid CFI section"
 msgstr "invalid CFI section"
 
-#: libdwfl/argp-std.c:67 src/unstrip.c:2248
+#: libdw/dwarf_error.c:94
+msgid "no alternative debug link found"
+msgstr "no alternative debug link found"
+
+#: libdw/dwarf_error.c:95
+msgid "invalid opcode"
+msgstr "invalid opcode"
+
+#: libdwfl/argp-std.c:46 src/unstrip.c:2277
 msgid "Input selection options:"
 msgstr "Input selection options:"
 
-#: libdwfl/argp-std.c:68
+#: libdwfl/argp-std.c:47
 msgid "Find addresses in FILE"
 msgstr "Find addresses in FILE"
 
-#: libdwfl/argp-std.c:70
+#: libdwfl/argp-std.c:49
 msgid "Find addresses from signatures found in COREFILE"
 msgstr "Find addresses from signatures found in COREFILE"
 
-#: libdwfl/argp-std.c:72
+#: libdwfl/argp-std.c:51
 msgid "Find addresses in files mapped into process PID"
 msgstr "Find addresses in files mapped into process PID"
 
-#: libdwfl/argp-std.c:74
+#: libdwfl/argp-std.c:53
 msgid ""
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
@@ -250,411 +258,479 @@
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
 
-#: libdwfl/argp-std.c:76
+#: libdwfl/argp-std.c:55
 msgid "Find addresses in the running kernel"
 msgstr "Find addresses in the running kernel"
 
-#: libdwfl/argp-std.c:78
+#: libdwfl/argp-std.c:57
 msgid "Kernel with all modules"
 msgstr "Kernel with all modules"
 
-#: libdwfl/argp-std.c:80
+#: libdwfl/argp-std.c:59
 msgid "Search path for separate debuginfo files"
 msgstr "Search path for separate debuginfo files"
 
-#: libdwfl/argp-std.c:163
+#: 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:223
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
+msgstr "cannot load kernel symbols"
+
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
+msgstr "cannot find kernel modules"
+
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
+msgstr "cannot find kernel or modules"
+
+#: 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:241
+#: libdwfl/argp-std.c:311
 msgid "No modules recognized in core file"
 msgstr "No modules recognized in core file"
 
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr "cannot load kernel symbols"
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr "cannot find kernel modules"
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr "cannot find kernel or modules"
-
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:56
 msgid "See errno"
 msgstr "See errno"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:57
 msgid "See elf_errno"
 msgstr "See elf_errno"
 
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:58
 msgid "See dwarf_errno"
 msgstr "See dwarf_errno"
 
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:59
 msgid "See ebl_errno (XXX missing)"
 msgstr "See ebl_errno (XXX missing)"
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:60
 msgid "gzip decompression failed"
 msgstr "gzip decompression failed"
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:61
 msgid "bzip2 decompression failed"
 msgstr "bzip2 decompression failed"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:62
 msgid "LZMA decompression failed"
 msgstr "LZMA decompression failed"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:63
 msgid "no support library found for machine"
 msgstr "no support library found for machine"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:64
 msgid "Callbacks missing for ET_REL file"
 msgstr "Callbacks missing for ET_REL file"
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:65
 msgid "Unsupported relocation type"
 msgstr "Unsupported relocation type"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:66
 msgid "r_offset is bogus"
 msgstr "r_offset is bogus"
 
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
+#: 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:85
+#: libdwfl/libdwflP.h:68
 msgid "relocation refers to undefined symbol"
 msgstr "relocation refers to undefined symbol"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:69
 msgid "Callback returned failure"
 msgstr "Callback returned failure"
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:70
 msgid "No DWARF information found"
 msgstr "No DWARF information found"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:71
 msgid "No symbol table found"
 msgstr "No symbol table found"
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:72
 msgid "No ELF program headers"
 msgstr "No ELF program headers"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:73
 msgid "address range overlaps an existing module"
 msgstr "address range overlaps an existing module"
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:76
 msgid "image truncated"
 msgstr "image truncated"
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:77
 msgid "ELF file opened"
 msgstr "ELF file opened"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:78
 msgid "not a valid ELF file"
 msgstr "not a valid ELF file"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:79
 msgid "cannot handle DWARF type description"
 msgstr "cannot handle DWARF type description"
 
-#: libdwfl/libdwflP.h:97
+#: libdwfl/libdwflP.h:80
 msgid "ELF file does not match build ID"
 msgstr "ELF file does not match build ID"
 
-#: libdwfl/libdwflP.h:98
+#: libdwfl/libdwflP.h:81
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "corrupt .gnu.prelink_undo section data"
 
-#: libebl/eblbackendname.c:63
+#: 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:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:94 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
+#: 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 "<unknown>"
 msgstr "<unknown>"
 
-#: libebl/ebldynamictagname.c:126
+#: libebl/ebldynamictagname.c:105
 #, c-format
 msgid "<unknown>: %#<PRIx64>"
 msgstr "<unknown>: %#<PRIx64>"
 
-#: libebl/eblobjnote.c:76
+#: libebl/eblobjnote.c:55
 #, c-format
 msgid "unknown SDT version %u\n"
 msgstr "unknown SDT version %u\n"
 
-#: libebl/eblobjnote.c:94
+#: libebl/eblobjnote.c:73
 #, c-format
 msgid "invalid SDT probe descriptor\n"
 msgstr "invalid SDT probe descriptor\n"
 
-#: libebl/eblobjnote.c:144
+#: libebl/eblobjnote.c:123
 #, c-format
 msgid "    PC: "
 msgstr "    PC: "
 
-#: libebl/eblobjnote.c:146
+#: libebl/eblobjnote.c:125
 #, c-format
 msgid " Base: "
 msgstr " Base: "
 
-#: libebl/eblobjnote.c:148
+#: libebl/eblobjnote.c:127
 #, c-format
 msgid " Semaphore: "
 msgstr " Semaphore: "
 
-#: libebl/eblobjnote.c:150
+#: libebl/eblobjnote.c:129
 #, c-format
 msgid "    Provider: "
 msgstr "    Provider: "
 
-#: libebl/eblobjnote.c:152
+#: libebl/eblobjnote.c:131
 #, c-format
 msgid " Name: "
 msgstr " Name: "
 
-#: libebl/eblobjnote.c:154
+#: libebl/eblobjnote.c:133
 #, c-format
 msgid " Args: "
 msgstr " Args: "
 
-#: libebl/eblobjnote.c:164
+#: libebl/eblobjnote.c:143
 #, c-format
 msgid "    Build ID: "
 msgstr "    Build ID: "
 
-#: libebl/eblobjnote.c:175
+#: libebl/eblobjnote.c:154
 #, c-format
 msgid "    Linker version: %.*s\n"
 msgstr "    Linker version: %.*s\n"
 
-#: libebl/eblobjnote.c:224
+#: libebl/eblobjnote.c:203
 #, c-format
 msgid "    OS: %s, ABI: "
 msgstr "    OS: %s, ABI: "
 
-#: libebl/eblosabiname.c:95
+#: libebl/eblosabiname.c:74
 msgid "Stand alone"
 msgstr "Stand alone"
 
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
+#: libebl/eblsymbolbindingname.c:71 libebl/eblsymboltypename.c:77
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<unknown>: %d"
 
-#: libelf/elf_error.c:88
+#: libelf/elf_error.c:67
 msgid "unknown version"
 msgstr "unknown version"
 
-#: libelf/elf_error.c:92
+#: libelf/elf_error.c:71
 msgid "unknown type"
 msgstr "unknown type"
 
-#: libelf/elf_error.c:96
+#: libelf/elf_error.c:75
 msgid "invalid `Elf' handle"
 msgstr "invalid ‘Elf’ handle"
 
-#: libelf/elf_error.c:100
+#: libelf/elf_error.c:79
 msgid "invalid size of source operand"
 msgstr "invalid size of source operand"
 
-#: libelf/elf_error.c:104
+#: libelf/elf_error.c:83
 msgid "invalid size of destination operand"
 msgstr "invalid size of destination operand"
 
-#: libelf/elf_error.c:108 src/readelf.c:5176
+#: libelf/elf_error.c:87 src/readelf.c:5367
 #, c-format
 msgid "invalid encoding"
 msgstr "invalid encoding"
 
-#: libelf/elf_error.c:116
+#: libelf/elf_error.c:95
 msgid "invalid file descriptor"
 msgstr "invalid file descriptor"
 
-#: libelf/elf_error.c:120
+#: libelf/elf_error.c:99
 msgid "invalid operation"
 msgstr "invalid operation"
 
-#: libelf/elf_error.c:124
+#: libelf/elf_error.c:103
 msgid "ELF version not set"
 msgstr "ELF version not set"
 
-#: libelf/elf_error.c:136
+#: libelf/elf_error.c:115
 msgid "invalid fmag field in archive header"
 msgstr "invalid fmag field in archive header"
 
-#: libelf/elf_error.c:140
+#: libelf/elf_error.c:119
 msgid "invalid archive file"
 msgstr "invalid archive file"
 
-#: libelf/elf_error.c:144
+#: libelf/elf_error.c:123
 msgid "descriptor is not for an archive"
 msgstr "descriptor is not for an archive"
 
-#: libelf/elf_error.c:148
+#: libelf/elf_error.c:127
 msgid "no index available"
 msgstr "no index available"
 
-#: libelf/elf_error.c:152
+#: libelf/elf_error.c:131
 msgid "cannot read data from file"
 msgstr "cannot read data from file"
 
-#: libelf/elf_error.c:156
+#: libelf/elf_error.c:135
 msgid "cannot write data to file"
 msgstr "cannot write data to file"
 
-#: libelf/elf_error.c:160
+#: libelf/elf_error.c:139
 msgid "invalid binary class"
 msgstr "invalid binary class"
 
-#: libelf/elf_error.c:164
+#: libelf/elf_error.c:143
 msgid "invalid section index"
 msgstr "invalid section index"
 
-#: libelf/elf_error.c:168
+#: libelf/elf_error.c:147
 msgid "invalid operand"
 msgstr "invalid operand"
 
-#: libelf/elf_error.c:172
+#: libelf/elf_error.c:151
 msgid "invalid section"
 msgstr "invalid section"
 
-#: libelf/elf_error.c:180
+#: libelf/elf_error.c:159
 msgid "executable header not created first"
 msgstr "executable header not created first"
 
-#: libelf/elf_error.c:184
+#: libelf/elf_error.c:163
 msgid "file descriptor disabled"
 msgstr "file descriptor disabled"
 
-#: libelf/elf_error.c:188
+#: libelf/elf_error.c:167
 msgid "archive/member file descriptor mismatch"
 msgstr "archive/member file descriptor mismatch"
 
-#: libelf/elf_error.c:196
+#: libelf/elf_error.c:175
 msgid "cannot manipulate null section"
 msgstr "cannot manipulate null section"
 
-#: libelf/elf_error.c:200
+#: libelf/elf_error.c:179
 msgid "data/scn mismatch"
 msgstr "data/scn mismatch"
 
-#: libelf/elf_error.c:204
+#: libelf/elf_error.c:183
 msgid "invalid section header"
 msgstr "invalid section header"
 
-#: libelf/elf_error.c:208 src/readelf.c:6850 src/readelf.c:6951
-#: src/readelf.c:7113
+#: libelf/elf_error.c:187 src/readelf.c:7235 src/readelf.c:7683
+#: src/readelf.c:7784 src/readelf.c:7954
 #, c-format
 msgid "invalid data"
 msgstr "invalid data"
 
-#: libelf/elf_error.c:212
+#: libelf/elf_error.c:191
 msgid "unknown data encoding"
 msgstr "unknown data encoding"
 
-#: libelf/elf_error.c:216
+#: libelf/elf_error.c:195
 msgid "section `sh_size' too small for data"
 msgstr "section ‘sh_size’ too small for data"
 
-#: libelf/elf_error.c:220
+#: libelf/elf_error.c:199
 msgid "invalid section alignment"
 msgstr "invalid section alignment"
 
-#: libelf/elf_error.c:224
+#: libelf/elf_error.c:203
 msgid "invalid section entry size"
 msgstr "invalid section entry size"
 
-#: libelf/elf_error.c:228
+#: libelf/elf_error.c:207
 msgid "update() for write on read-only file"
 msgstr "update() for write on read-only file"
 
-#: libelf/elf_error.c:232
+#: libelf/elf_error.c:211
 msgid "no such file"
 msgstr "no such file"
 
-#: libelf/elf_error.c:236
+#: libelf/elf_error.c:215
 msgid "only relocatable files can contain section groups"
 msgstr "only relocatable files can contain section groups"
 
-#: libelf/elf_error.c:241
+#: libelf/elf_error.c:220
 msgid ""
 "program header only allowed in executables, shared objects, and core files"
 msgstr ""
 "program header only allowed in executables, shared objects, and core files"
 
-#: libelf/elf_error.c:248
+#: libelf/elf_error.c:227
 msgid "file has no program header"
 msgstr "file has no program header"
 
-#: src/addr2line.c:66
+#: src/addr2line.c:58
 msgid "Output selection options:"
 msgstr "Output selection options:"
 
-#: src/addr2line.c:67
+#: src/addr2line.c:59
 msgid "Show only base names of source files"
 msgstr "Show only base names of source files"
 
-#: src/addr2line.c:69
+#: src/addr2line.c:61
 msgid "Show absolute file names using compilation directory"
 msgstr "Show absolute file names using compilation directory"
 
-#: src/addr2line.c:70
+#: src/addr2line.c:62
 msgid "Also show function names"
 msgstr "Also show function names"
 
-#: src/addr2line.c:71
+#: src/addr2line.c:63
 msgid "Also show symbol or section names"
 msgstr "Also show symbol or section names"
 
-#: src/addr2line.c:72
+#: 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:74
+#: 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:76 src/elfcmp.c:80 src/findtextrel.c:75 src/nm.c:108
-#: src/strings.c:83
+#: 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:85
+#: 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:89
+#: src/addr2line.c:85
 msgid "[ADDR...]"
 msgstr "[ADDR...]"
 
-#: src/addr2line.c:189 src/ar.c:296 src/elfcmp.c:670 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:273 src/objdump.c:189
-#: src/ranlib.c:136 src/readelf.c:462 src/size.c:219 src/strings.c:227
-#: src/strip.c:221 src/unstrip.c:234
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:663 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: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"
@@ -665,300 +741,300 @@
 "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:194 src/ar.c:301 src/elfcmp.c:675 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:278 src/objdump.c:194
-#: src/ranlib.c:141 src/readelf.c:467 src/size.c:224 src/strings.c:232
-#: src/strip.c:226 src/unstrip.c:239
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:668 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: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:413
+#: src/addr2line.c:474
 #, c-format
 msgid "Section syntax requires exactly one module"
 msgstr "Section syntax requires exactly one module"
 
-#: src/addr2line.c:436
+#: src/addr2line.c:497
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside section '%s'"
 msgstr "offset %#<PRIxMAX> lies outside section ‘%s’"
 
-#: src/addr2line.c:477
+#: src/addr2line.c:563
 #, c-format
 msgid "cannot find symbol '%s'"
 msgstr "cannot find symbol ‘%s’"
 
-#: src/addr2line.c:482
+#: src/addr2line.c:568
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
 msgstr "offset %#<PRIxMAX> lies outside contents of ‘%s’"
 
-#: src/ar.c:76
+#: src/ar.c:69
 msgid "Commands:"
 msgstr "Commands:"
 
-#: src/ar.c:77
+#: src/ar.c:70
 msgid "Delete files from archive."
 msgstr "Delete files from archive."
 
-#: src/ar.c:78
+#: src/ar.c:71
 msgid "Move files in archive."
 msgstr "Move files in archive."
 
-#: src/ar.c:79
+#: src/ar.c:72
 msgid "Print files in archive."
 msgstr "Print files in archive."
 
-#: src/ar.c:80
+#: src/ar.c:73
 msgid "Quick append files to archive."
 msgstr "Quick append files to archive."
 
-#: src/ar.c:82
+#: src/ar.c:75
 msgid "Replace existing or insert new file into archive."
 msgstr "Replace existing or insert new file into archive."
 
-#: src/ar.c:83
+#: src/ar.c:76
 msgid "Display content of archive."
 msgstr "Display content of archive."
 
-#: src/ar.c:84
+#: src/ar.c:77
 msgid "Extract files from archive."
 msgstr "Extract files from archive."
 
-#: src/ar.c:86
+#: src/ar.c:79
 msgid "Command Modifiers:"
 msgstr "Command Modifiers:"
 
-#: src/ar.c:87
+#: src/ar.c:80
 msgid "Preserve original dates."
 msgstr "Preserve original dates."
 
-#: src/ar.c:88
+#: src/ar.c:81
 msgid "Use instance [COUNT] of name."
 msgstr "Use instance [COUNT] of name."
 
-#: src/ar.c:90
+#: src/ar.c:83
 msgid "Do not replace existing files with extracted files."
 msgstr "Do not replace existing files with extracted files."
 
-#: src/ar.c:91
+#: src/ar.c:84
 msgid "Allow filename to be truncated if necessary."
 msgstr "Allow filename to be truncated if necessary."
 
-#: src/ar.c:93
+#: src/ar.c:86
 msgid "Provide verbose output."
 msgstr "Provide verbose output."
 
-#: src/ar.c:94
+#: src/ar.c:87
 msgid "Force regeneration of symbol table."
 msgstr "Force regeneration of symbol table."
 
-#: src/ar.c:95
+#: src/ar.c:88
 msgid "Insert file after [MEMBER]."
 msgstr "Insert file after [MEMBER]."
 
-#: src/ar.c:96
+#: src/ar.c:89
 msgid "Insert file before [MEMBER]."
 msgstr "Insert file before [MEMBER]."
 
-#: src/ar.c:97
+#: src/ar.c:90
 msgid "Same as -b."
 msgstr "Same as -b."
 
-#: src/ar.c:98
+#: src/ar.c:91
 msgid "Suppress message when library has to be created."
 msgstr "Suppress message when library has to be created."
 
-#: src/ar.c:100
+#: src/ar.c:93
 msgid "Use full path for file matching."
 msgstr "Use full path for file matching."
 
-#: src/ar.c:101
+#: src/ar.c:94
 msgid "Update only older files in archive."
 msgstr "Update only older files in archive."
 
-#: src/ar.c:107
+#: src/ar.c:100
 msgid "Create, modify, and extract from archives."
 msgstr "Create, modify, and extract from archives."
 
-#: src/ar.c:110
+#: src/ar.c:103
 msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 msgstr "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 
-#: src/ar.c:192
+#: src/ar.c:185
 #, c-format
 msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
 msgstr "'a', 'b', and ‘i’ are only allowed with the ‘m’ and ‘r’ options"
 
-#: src/ar.c:197
+#: src/ar.c:190
 #, c-format
 msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
 msgstr "MEMBER parameter required for 'a', 'b', and ‘i’ modifiers"
 
-#: src/ar.c:213
+#: src/ar.c:206
 #, c-format
 msgid "'N' is only meaningful with the 'x' and 'd' options"
 msgstr "‘N’ is only meaningful with the ‘x’ and ‘d’ options"
 
-#: src/ar.c:218
+#: src/ar.c:211
 #, c-format
 msgid "COUNT parameter required"
 msgstr "COUNT parameter required"
 
-#: src/ar.c:230
+#: src/ar.c:223
 #, c-format
 msgid "invalid COUNT parameter %s"
 msgstr "invalid COUNT parameter %s"
 
-#: src/ar.c:237
+#: src/ar.c:230
 #, c-format
 msgid "'%c' is only meaningful with the 'x' option"
 msgstr "‘%c’ is only meaningful with the ‘x’ option"
 
-#: src/ar.c:243
+#: src/ar.c:236
 #, c-format
 msgid "archive name required"
 msgstr "archive name required"
 
-#: src/ar.c:256
+#: src/ar.c:249
 #, c-format
 msgid "command option required"
 msgstr "command option required"
 
-#: src/ar.c:321
+#: src/ar.c:314
 #, c-format
 msgid "More than one operation specified"
 msgstr "More than one operation specified"
 
-#: src/ar.c:415
+#: src/ar.c:408
 #, c-format
 msgid "cannot open archive '%s'"
 msgstr "cannot open archive ‘%s’"
 
-#: src/ar.c:425
+#: src/ar.c:418
 #, c-format
 msgid "cannot open archive '%s': %s"
 msgstr "cannot open archive '%s': %s"
 
-#: src/ar.c:429
+#: src/ar.c:422
 #, c-format
 msgid "%s: not an archive file"
 msgstr "%s: not an archive file"
 
-#: src/ar.c:433
+#: src/ar.c:426
 #, c-format
 msgid "cannot stat archive '%s'"
 msgstr "cannot stat archive ‘%s’"
 
-#: src/ar.c:445
+#: src/ar.c:438
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "no entry %s in archive\n"
 
-#: src/ar.c:498 src/ar.c:940 src/ar.c:1140
+#: src/ar.c:491 src/ar.c:933 src/ar.c:1133
 #, c-format
 msgid "cannot create hash table"
 msgstr "cannot create hash table"
 
-#: src/ar.c:505 src/ar.c:947 src/ar.c:1149
+#: src/ar.c:498 src/ar.c:940 src/ar.c:1142
 #, c-format
 msgid "cannot insert into hash table"
 msgstr "cannot insert into hash table"
 
-#: src/ar.c:513 src/ranlib.c:176
+#: src/ar.c:506 src/ranlib.c:168
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "cannot stat ‘%s’"
 
-#: src/ar.c:609
+#: src/ar.c:602
 #, c-format
 msgid "cannot read content of %s: %s"
 msgstr "cannot read content of %s: %s"
 
-#: src/ar.c:652
+#: src/ar.c:645
 #, c-format
 msgid "cannot open %.*s"
 msgstr "cannot open %.*s"
 
-#: src/ar.c:674
+#: src/ar.c:667
 #, c-format
 msgid "failed to write %s"
 msgstr "failed to write %s"
 
-#: src/ar.c:686
+#: src/ar.c:679
 #, c-format
 msgid "cannot change mode of %s"
 msgstr "cannot change mode of %s"
 
-#: src/ar.c:702
+#: src/ar.c:695
 #, c-format
 msgid "cannot change modification time of %s"
 msgstr "cannot change modification time of %s"
 
-#: src/ar.c:748
+#: src/ar.c:741
 #, c-format
 msgid "cannot rename temporary file to %.*s"
 msgstr "cannot rename temporary file to %.*s"
 
-#: src/ar.c:784 src/ar.c:1032 src/ar.c:1431 src/ranlib.c:250
+#: src/ar.c:777 src/ar.c:1025 src/ar.c:1424 src/ranlib.c:242
 #, c-format
 msgid "cannot create new file"
 msgstr "cannot create new file"
 
-#: src/ar.c:1231
+#: src/ar.c:1224
 #, c-format
 msgid "position member %s not found"
 msgstr "position member %s not found"
 
-#: src/ar.c:1241
+#: src/ar.c:1234
 #, c-format
 msgid "%s: no entry %s in archive!\n"
 msgstr "%s: no entry %s in archive!\n"
 
-#: src/ar.c:1270 src/ldgeneric.c:517 src/objdump.c:265
+#: src/ar.c:1263 src/ldgeneric.c:509 src/objdump.c:257
 #, c-format
 msgid "cannot open %s"
 msgstr "cannot open %s"
 
-#: src/ar.c:1275
+#: src/ar.c:1268
 #, c-format
 msgid "cannot stat %s"
 msgstr "cannot stat %s"
 
-#: src/ar.c:1281
+#: src/ar.c:1274
 #, c-format
 msgid "%s is no regular file"
 msgstr "%s is no regular file"
 
-#: src/ar.c:1294
+#: src/ar.c:1287
 #, c-format
 msgid "cannot get ELF descriptor for %s: %s\n"
 msgstr "cannot get ELF descriptor for %s: %s\n"
 
-#: src/ar.c:1314
+#: src/ar.c:1307
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "cannot read %s: %s"
 
-#: src/arlib.c:216
+#: src/arlib.c:209
 #, c-format
 msgid "the archive '%s' is too large"
 msgstr "the archive ‘%s’ is too large"
 
-#: src/arlib.c:229
+#: src/arlib.c:222
 #, c-format
 msgid "cannot read ELF header of %s(%s): %s"
 msgstr "cannot read ELF header of %s(%s): %s"
 
-#: src/elfcmp.c:70
+#: src/elfcmp.c:62
 msgid "Control options:"
 msgstr "Control options:"
 
-#: src/elfcmp.c:72
+#: src/elfcmp.c:64
 msgid "Output all differences, not just the first"
 msgstr "Output all differences, not just the first"
 
-#: src/elfcmp.c:73
+#: src/elfcmp.c:65
 msgid ""
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
@@ -966,211 +1042,211 @@
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
 
-#: src/elfcmp.c:75
+#: src/elfcmp.c:67
 msgid "Ignore permutation of buckets in SHT_HASH section"
 msgstr "Ignore permutation of buckets in SHT_HASH section"
 
-#: src/elfcmp.c:77
+#: src/elfcmp.c:69
 msgid "Ignore differences in build ID"
 msgstr "Ignore differences in build ID"
 
-#: src/elfcmp.c:78
+#: src/elfcmp.c:70
 msgid "Output nothing; yield exit status only"
 msgstr "Output nothing; yield exit status only"
 
-#: src/elfcmp.c:85
+#: src/elfcmp.c:77
 msgid "Compare relevant parts of two ELF files for equality."
 msgstr "Compare relevant parts of two ELF files for equality."
 
-#: src/elfcmp.c:89
+#: src/elfcmp.c:81
 msgid "FILE1 FILE2"
 msgstr "FILE1 FILE2"
 
-#: src/elfcmp.c:151
+#: src/elfcmp.c:143
 msgid "Invalid number of parameters.\n"
 msgstr "Invalid number of parameters.\n"
 
-#: src/elfcmp.c:182 src/elfcmp.c:187
+#: src/elfcmp.c:174 src/elfcmp.c:179
 #, c-format
 msgid "cannot get ELF header of '%s': %s"
 msgstr "cannot get ELF header of '%s': %s"
 
-#: src/elfcmp.c:213
+#: src/elfcmp.c:205
 #, c-format
 msgid "%s %s diff: ELF header"
 msgstr "%s %s diff: ELF header"
 
-#: src/elfcmp.c:220 src/elfcmp.c:223
+#: src/elfcmp.c:212 src/elfcmp.c:215
 #, c-format
 msgid "cannot get section count of '%s': %s"
 msgstr "cannot get section count of '%s': %s"
 
-#: src/elfcmp.c:228
+#: src/elfcmp.c:220
 #, c-format
 msgid "%s %s diff: section count"
 msgstr "%s %s diff: section count"
 
-#: src/elfcmp.c:235 src/elfcmp.c:238
+#: src/elfcmp.c:227 src/elfcmp.c:230
 #, c-format
 msgid "cannot get program header count of '%s': %s"
 msgstr "cannot get program header count of '%s': %s"
 
-#: src/elfcmp.c:243
+#: src/elfcmp.c:235
 #, c-format
 msgid "%s %s diff: program header count"
 msgstr "%s %s diff: program header count"
 
-#: src/elfcmp.c:300
+#: src/elfcmp.c:292
 #, c-format
 msgid "%s %s differ: section [%zu], [%zu] name"
 msgstr "%s %s differ: section [%zu], [%zu] name"
 
-#: src/elfcmp.c:323
+#: src/elfcmp.c:315
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' header"
 msgstr "%s %s differ: section [%zu] ‘%s’ header"
 
-#: src/elfcmp.c:331 src/elfcmp.c:337
+#: src/elfcmp.c:323 src/elfcmp.c:329
 #, c-format
 msgid "cannot get content of section %zu in '%s': %s"
 msgstr "cannot get content of section %zu in '%s': %s"
 
-#: src/elfcmp.c:353 src/elfcmp.c:359
+#: src/elfcmp.c:345 src/elfcmp.c:351
 #, c-format
 msgid "cannot get symbol in '%s': %s"
 msgstr "cannot get symbol in '%s': %s"
 
-#: src/elfcmp.c:380
+#: src/elfcmp.c:373
 #, c-format
 msgid "%s %s differ: symbol table [%zu]"
 msgstr "%s %s differ: symbol table [%zu]"
 
-#: src/elfcmp.c:383
+#: src/elfcmp.c:376
 #, c-format
 msgid "%s %s differ: symbol table [%zu,%zu]"
 msgstr "%s %s differ: symbol table [%zu,%zu]"
 
-#: src/elfcmp.c:429 src/elfcmp.c:498
+#: src/elfcmp.c:422 src/elfcmp.c:491
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' number of notes"
 msgstr "%s %s differ: section [%zu] ‘%s’ number of notes"
 
-#: src/elfcmp.c:437
+#: src/elfcmp.c:430
 #, c-format
 msgid "cannot read note section [%zu] '%s' in '%s': %s"
 msgstr "cannot read note section [%zu] ‘%s’ in '%s': %s"
 
-#: src/elfcmp.c:447
+#: src/elfcmp.c:440
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note name"
 msgstr "%s %s differ: section [%zu] ‘%s’ note name"
 
-#: src/elfcmp.c:455
+#: src/elfcmp.c:448
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' type"
 msgstr "%s %s differ: section [%zu] ‘%s’ note ‘%s’ type"
 
-#: src/elfcmp.c:470
+#: src/elfcmp.c:463
 #, c-format
 msgid "%s %s differ: build ID length"
 msgstr "%s %s differ: build ID length"
 
-#: src/elfcmp.c:478
+#: src/elfcmp.c:471
 #, c-format
 msgid "%s %s differ: build ID content"
 msgstr "%s %s differ: build ID content"
 
-#: src/elfcmp.c:487
+#: src/elfcmp.c:480
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' content"
 msgstr "%s %s differ: section [%zu] ‘%s’ note ‘%s’ content"
 
-#: src/elfcmp.c:527
+#: src/elfcmp.c:520
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' content"
 msgstr "%s %s differ: section [%zu] ‘%s’ content"
 
-#: src/elfcmp.c:531
+#: src/elfcmp.c:524
 #, c-format
 msgid "%s %s differ: section [%zu,%zu] '%s' content"
 msgstr "%s %s differ: section [%zu,%zu] ‘%s’ content"
 
-#: src/elfcmp.c:546
+#: src/elfcmp.c:539
 #, c-format
 msgid "%s %s differ: unequal amount of important sections"
 msgstr "%s %s differ: unequal amount of important sections"
 
-#: src/elfcmp.c:579 src/elfcmp.c:584
+#: src/elfcmp.c:572 src/elfcmp.c:577
 #, c-format
 msgid "cannot load data of '%s': %s"
 msgstr "cannot load data of '%s': %s"
 
-#: src/elfcmp.c:603 src/elfcmp.c:609
+#: src/elfcmp.c:596 src/elfcmp.c:602
 #, c-format
 msgid "cannot get program header entry %d of '%s': %s"
 msgstr "cannot get program header entry %d of '%s': %s"
 
-#: src/elfcmp.c:615
+#: src/elfcmp.c:608
 #, c-format
 msgid "%s %s differ: program header %d"
 msgstr "%s %s differ: program header %d"
 
-#: src/elfcmp.c:639
+#: src/elfcmp.c:632
 #, c-format
 msgid "%s %s differ: gap"
 msgstr "%s %s differ: gap"
 
-#: src/elfcmp.c:702
+#: src/elfcmp.c:695
 #, c-format
 msgid "Invalid value '%s' for --gaps parameter."
 msgstr "Invalid value ‘%s’ for --gaps parameter."
 
-#: src/elfcmp.c:730 src/findtextrel.c:229 src/ldgeneric.c:1765
-#: src/ldgeneric.c:4255 src/nm.c:389 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:458 src/strip.c:495 src/unstrip.c:1911
-#: src/unstrip.c:1940
+#: src/elfcmp.c:723 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:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1923
+#: src/unstrip.c:1952
 #, c-format
 msgid "cannot open '%s'"
 msgstr "cannot open ‘%s’"
 
-#: src/elfcmp.c:734 src/findtextrel.c:236 src/ranlib.c:186
+#: src/elfcmp.c:727 src/findtextrel.c:228 src/ranlib.c:178
 #, c-format
 msgid "cannot create ELF descriptor for '%s': %s"
 msgstr "cannot create ELF descriptor for '%s': %s"
 
-#: src/elfcmp.c:739
+#: src/elfcmp.c:732
 #, c-format
 msgid "cannot create EBL descriptor for '%s'"
 msgstr "cannot create EBL descriptor for ‘%s’"
 
-#: src/elfcmp.c:757
+#: src/elfcmp.c:750
 #, c-format
 msgid "cannot get section header of section %zu: %s"
 msgstr "cannot get section header of section %zu: %s"
 
-#: src/elfcmp.c:767
+#: src/elfcmp.c:760
 #, c-format
 msgid "cannot get content of section %zu: %s"
 msgstr "cannot get content of section %zu: %s"
 
-#: src/elfcmp.c:777 src/elfcmp.c:791
+#: src/elfcmp.c:770 src/elfcmp.c:784
 #, c-format
 msgid "cannot get relocation: %s"
 msgstr "cannot get relocation: %s"
 
-#: src/elflint.c:72
+#: src/elflint.c:64
 msgid "Be extremely strict, flag level 2 features."
 msgstr "Be extremely strict, flag level 2 features."
 
-#: src/elflint.c:73
+#: src/elflint.c:65
 msgid "Do not print anything if successful"
 msgstr "Do not print anything if successful"
 
-#: src/elflint.c:74
+#: src/elflint.c:66
 msgid "Binary is a separate debuginfo file"
 msgstr "Binary is a separate debuginfo file"
 
-#: src/elflint.c:76
+#: src/elflint.c:68
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1178,163 +1254,163 @@
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
 
-#: src/elflint.c:82
+#: src/elflint.c:74
 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:86 src/readelf.c:119
+#: src/elflint.c:78 src/readelf.c:123
 msgid "FILE..."
 msgstr "FILE..."
 
-#: src/elflint.c:159 src/readelf.c:275
+#: src/elflint.c:155 src/readelf.c:292
 #, c-format
 msgid "cannot open input file"
 msgstr "cannot open input file"
 
-#: src/elflint.c:166
+#: src/elflint.c:162
 #, c-format
 msgid "cannot generate Elf descriptor: %s\n"
 msgstr "cannot generate Elf descriptor: %s\n"
 
-#: src/elflint.c:185
+#: 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:189
+#: src/elflint.c:185
 msgid "No errors"
 msgstr "No errors"
 
-#: src/elflint.c:223 src/readelf.c:436
+#: src/elflint.c:219 src/readelf.c:468
 msgid "Missing file name.\n"
 msgstr "Missing file name.\n"
 
-#: src/elflint.c:302
+#: 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:310
+#: 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:370
+#: 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:375
+#: 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:379
+#: 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:385
+#: 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:391
+#: 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:396
+#: 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:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "unknown object file type %d\n"
 
-#: src/elflint.c:408
+#: src/elflint.c:409
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "unknown machine type %d\n"
 
-#: src/elflint.c:412
+#: src/elflint.c:413
 #, c-format
 msgid "unknown object file version\n"
 msgstr "unknown object file version\n"
 
-#: src/elflint.c:418
+#: src/elflint.c:419
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "invalid program header offset\n"
 
-#: src/elflint.c:420
+#: 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:424
+#: 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:432
+#: src/elflint.c:433
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr "invalid section header table offset\n"
 
-#: src/elflint.c:435
+#: 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:449
+#: 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:466
+#: src/elflint.c:467
 #, c-format
 msgid "invalid section header index\n"
 msgstr "invalid section header index\n"
 
-#: src/elflint.c:480
+#: 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:489
+#: src/elflint.c:490
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "invalid machine flags: %s\n"
 
-#: src/elflint.c:496 src/elflint.c:513
+#: 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:499 src/elflint.c:516
+#: 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:502 src/elflint.c:519
+#: 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:505 src/elflint.c:522
+#: 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:508 src/elflint.c:525
+#: 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:569
+#: src/elflint.c:570
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1343,21 +1419,21 @@
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
 "group\n"
 
-#: src/elflint.c:573
+#: 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:589 src/elflint.c:1433 src/elflint.c:1483 src/elflint.c:1588
-#: src/elflint.c:2173 src/elflint.c:2687 src/elflint.c:2848 src/elflint.c:2978
-#: src/elflint.c:3150 src/elflint.c:4050
+#: 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:602 src/elflint.c:1595
+#: src/elflint.c:603 src/elflint.c:1621
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1366,7 +1442,7 @@
 "section [%2d] '%s': referenced as string table for section [%2d] ‘%s’ but "
 "type is not SHT_STRTAB\n"
 
-#: src/elflint.c:625
+#: src/elflint.c:626
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1375,38 +1451,38 @@
 "section [%2d] '%s': symbol table cannot have more than one extended index "
 "section\n"
 
-#: src/elflint.c:636
+#: 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:645
+#: 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:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
+#: 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:668
+#: 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:678
+#: 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:687
+#: 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:701
+#: src/elflint.c:704
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: too large section index but no extended "
@@ -1415,7 +1491,7 @@
 "section [%2d] '%s': symbol %zu: too large section index but no extended "
 "section index section\n"
 
-#: src/elflint.c:707
+#: src/elflint.c:710
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
@@ -1424,51 +1500,51 @@
 "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
 "st_shndx (%<PRIu32>)\n"
 
-#: src/elflint.c:719
+#: 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:727
+#: 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:733
+#: 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:738
+#: 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:746
+#: 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:750
+#: 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:754
+#: 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:786
+#: 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:792 src/elflint.c:817 src/elflint.c:860
+#: 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 "
@@ -1477,7 +1553,7 @@
 "section [%2d] '%s': symbol %zu does not fit completely in referenced section "
 "[%2d] ‘%s’\n"
 
-#: src/elflint.c:801
+#: src/elflint.c:819
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
@@ -1486,7 +1562,7 @@
 "section [%2d] '%s': symbol %zu: referenced section [%2d] ‘%s’ does not have "
 "SHF_TLS flag set\n"
 
-#: src/elflint.c:811 src/elflint.c:853
+#: src/elflint.c:829 src/elflint.c:871
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
@@ -1495,14 +1571,14 @@
 "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
 "[%2d] ‘%s’\n"
 
-#: src/elflint.c:838
+#: 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:846
+#: src/elflint.c:864
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
@@ -1511,7 +1587,7 @@
 "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
 "‘%s’\n"
 
-#: src/elflint.c:873
+#: src/elflint.c:891
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: local symbol outside range described in "
@@ -1520,7 +1596,7 @@
 "section [%2d] '%s': symbol %zu: local symbol outside range described in "
 "sh_info\n"
 
-#: src/elflint.c:880
+#: src/elflint.c:898
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
@@ -1529,12 +1605,12 @@
 "section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
 "sh_info\n"
 
-#: src/elflint.c:887
+#: 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:937
+#: src/elflint.c:955
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1543,7 +1619,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
 "[%2d]\n"
 
-#: src/elflint.c:944
+#: src/elflint.c:962
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1552,7 +1628,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
 "‘%s’\n"
 
-#: src/elflint.c:960
+#: src/elflint.c:978
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1561,7 +1637,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
 "match %s section address %#<PRIx64>\n"
 
-#: src/elflint.c:967
+#: src/elflint.c:985
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1570,7 +1646,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
 "match %s section size %<PRIu64>\n"
 
-#: src/elflint.c:975
+#: src/elflint.c:993
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1579,7 +1655,7 @@
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
 "section\n"
 
-#: src/elflint.c:991
+#: src/elflint.c:1009
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1588,7 +1664,7 @@
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
 "segment address %#<PRIx64>\n"
 
-#: src/elflint.c:998
+#: src/elflint.c:1016
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1597,7 +1673,7 @@
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
 "segment size %<PRIu64>\n"
 
-#: src/elflint.c:1011
+#: src/elflint.c:1029
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
@@ -1606,22 +1682,22 @@
 "section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
 "default visibility\n"
 
-#: src/elflint.c:1015
+#: 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:1060
+#: 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:1069 src/elflint.c:1121
+#: 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:1094 src/elflint.c:1146
+#: src/elflint.c:1118 src/elflint.c:1170
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1630,7 +1706,7 @@
 "section [%2d] '%s': relative relocations after index %d as specified by "
 "DT_RELCOUNT\n"
 
-#: src/elflint.c:1100 src/elflint.c:1152
+#: src/elflint.c:1124 src/elflint.c:1176
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -1639,47 +1715,47 @@
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
 "specified %d relative relocations\n"
 
-#: src/elflint.c:1112
+#: 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:1194
+#: 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:1207
+#: 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:1215
+#: 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:1222
+#: 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:1229
+#: 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:1289
+#: 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:1316
+#: 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:1324
+#: src/elflint.c:1348
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -1688,12 +1764,12 @@
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
 "type\n"
 
-#: src/elflint.c:1332
+#: 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:1350
+#: src/elflint.c:1374
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -1702,12 +1778,12 @@
 "section [%2d] '%s': relocation %zu: only symbol ‘_GLOBAL_OFFSET_TABLE_’ can "
 "be used with %s\n"
 
-#: src/elflint.c:1367
+#: 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:1382
+#: src/elflint.c:1406
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -1716,7 +1792,7 @@
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
 "%s\n"
 
-#: src/elflint.c:1403
+#: src/elflint.c:1427
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -1725,64 +1801,64 @@
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
 "relocation flag not set\n"
 
-#: src/elflint.c:1418
+#: 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:1457 src/elflint.c:1507
+#: 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:1583
+#: 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:1601
+#: 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:1606 src/elflint.c:1889
+#: 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:1616
+#: 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:1624
+#: 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:1631
+#: 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:1642
+#: 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:1652
+#: 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:1670
+#: 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:1683
+#: src/elflint.c:1710
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -1791,14 +1867,14 @@
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
 "[%2d] ‘%s’ referenced by sh_link\n"
 
-#: src/elflint.c:1726
+#: 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:1741
+#: src/elflint.c:1768
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -1807,71 +1883,71 @@
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
 "[%2d] ‘%s’\n"
 
-#: src/elflint.c:1761 src/elflint.c:1789
+#: 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:1773
+#: 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:1782
+#: 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:1797 src/elflint.c:1804
+#: 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:1814 src/elflint.c:1818
+#: 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:1824
+#: 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:1835 src/elflint.c:1839 src/elflint.c:1843 src/elflint.c:1847
+#: 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:1859
+#: 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:1869
+#: 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:1874
+#: 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:1877
+#: 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:1884
+#: 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:1899
+#: src/elflint.c:1928
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -1880,75 +1956,75 @@
 "section [%2d] '%s': extended section index in section [%2zu] ‘%s’ refers to "
 "same symbol table\n"
 
-#: src/elflint.c:1910
+#: 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:1922
+#: 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:1927
+#: 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:1943 src/elflint.c:1984
+#: 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:1955 src/elflint.c:1996
+#: 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:1964 src/elflint.c:2005
+#: 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:1970
+#: 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:2011
+#: 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:2026
+#: 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:2037
+#: 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:2045
+#: 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:2077
+#: 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:2098
+#: src/elflint.c:2153
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -1957,51 +2033,51 @@
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
 "undefined\n"
 
-#: src/elflint.c:2109
+#: 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:2140
+#: 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:2145
+#: 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:2151
+#: 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:2164
+#: 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:2182
+#: 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:2190
+#: 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:2195
+#: 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:2200
+#: src/elflint.c:2255
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2010,17 +2086,17 @@
 "section [%2d] '%s': hash table has not even room for initial administrative "
 "entries\n"
 
-#: src/elflint.c:2248
+#: 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:2326 src/elflint.c:2330
+#: 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:2337
+#: src/elflint.c:2392
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2029,7 +2105,7 @@
 "symbol %d referenced in new hash table in [%2zu] ‘%s’ but not in old hash "
 "table in [%2zu] ‘%s’\n"
 
-#: src/elflint.c:2349
+#: src/elflint.c:2404
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2038,99 +2114,99 @@
 "symbol %d referenced in old hash table in [%2zu] ‘%s’ but not in new hash "
 "table in [%2zu] ‘%s’\n"
 
-#: src/elflint.c:2365
+#: 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:2385
+#: 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:2396
+#: 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:2401
+#: 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:2407
+#: 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:2412
+#: 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:2419
+#: 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:2424
+#: 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:2430
+#: 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:2436
+#: 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:2445
+#: 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:2450
+#: 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:2456
+#: 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:2460
+#: 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:2471
+#: 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:2483
+#: 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:2492
+#: 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:2499
+#: 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:2505
+#: src/elflint.c:2560
 #, c-format
 msgid ""
 "section [%2d] '%s': element %Zu references section [%2d] '%s' without "
@@ -2139,12 +2215,12 @@
 "section [%2d] '%s': element %Zu references section [%2d] ‘%s’ without "
 "SHF_GROUP flag set\n"
 
-#: src/elflint.c:2512
+#: 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:2701
+#: src/elflint.c:2756
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2153,7 +2229,7 @@
 "section [%2d] ‘%s’ refers in sh_link to section [%2d] ‘%s’ which is no "
 "dynamic symbol table\n"
 
-#: src/elflint.c:2712
+#: src/elflint.c:2768
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2162,76 +2238,76 @@
 "section [%2d] ‘%s’ has different number of entries than symbol table [%2d] "
 "‘%s’\n"
 
-#: src/elflint.c:2728
+#: 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:2744
+#: 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:2752
+#: 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:2766
+#: 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:2771
+#: 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:2781
+#: 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:2833
+#: 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:2841 src/elflint.c:2970
+#: 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:2864 src/elflint.c:3022
+#: 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:2870 src/elflint.c:3028
+#: 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:2878
+#: 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:2886
+#: 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:2898
+#: 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:2905
+#: src/elflint.c:2961
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2240,7 +2316,7 @@
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
 "reference\n"
 
-#: src/elflint.c:2912
+#: src/elflint.c:2968
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2249,7 +2325,7 @@
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
 "%#x, expected %#x\n"
 
-#: src/elflint.c:2922
+#: src/elflint.c:2978
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -2258,210 +2334,210 @@
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
 "name ‘%s’\n"
 
-#: src/elflint.c:2933
+#: 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:2949 src/elflint.c:3107
+#: 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:2962
+#: 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:3007
+#: 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:3011
+#: 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:3017
+#: 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:3041
+#: 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:3048
+#: 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:3057
+#: 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:3076
+#: 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:3091
+#: 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:3113
+#: 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:3129
+#: 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:3142
+#: 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:3163
+#: 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:3179
+#: 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:3188
+#: 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:3200
+#: 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:3217
+#: 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:3226
+#: 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:3235
+#: 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:3248
+#: 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:3259
+#: 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:3277
+#: 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:3288
+#: 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:3301
+#: 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:3305
+#: 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:3315
+#: 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:3321
+#: 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:3410
+#: 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:3414
+#: src/elflint.c:3470
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr "zeroth section has nonzero name\n"
 
-#: src/elflint.c:3416
+#: src/elflint.c:3472
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr "zeroth section has nonzero type\n"
 
-#: src/elflint.c:3418
+#: src/elflint.c:3474
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr "zeroth section has nonzero flags\n"
 
-#: src/elflint.c:3420
+#: src/elflint.c:3476
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr "zeroth section has nonzero address\n"
 
-#: src/elflint.c:3422
+#: src/elflint.c:3478
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr "zeroth section has nonzero offset\n"
 
-#: src/elflint.c:3424
+#: 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:3426
+#: 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:3429
+#: src/elflint.c:3485
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -2470,7 +2546,7 @@
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
 "value\n"
 
-#: src/elflint.c:3433
+#: src/elflint.c:3489
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2479,7 +2555,7 @@
 "zeroth section has nonzero link value while ELF header does not signal "
 "overflow in shstrndx\n"
 
-#: src/elflint.c:3437
+#: src/elflint.c:3493
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2488,46 +2564,46 @@
 "zeroth section has nonzero link value while ELF header does not signal "
 "overflow in phnum\n"
 
-#: src/elflint.c:3454
+#: 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:3463
+#: src/elflint.c:3519
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr "section [%2zu]: invalid name\n"
 
-#: src/elflint.c:3490
+#: 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:3506
+#: 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:3523
+#: 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:3541
+#: 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:3547 src/elflint.c:3579
+#: 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:3552 src/elflint.c:3584
+#: src/elflint.c:3608 src/elflint.c:3640
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -2536,76 +2612,76 @@
 "section [%2zu] ‘%s’ has SHF_ALLOC flag not set but there are loadable "
 "segments\n"
 
-#: src/elflint.c:3560
+#: 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:3603
+#: 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:3608
+#: src/elflint.c:3664
 #, c-format
 msgid "cannot get section header\n"
 msgstr "cannot get section header\n"
 
-#: src/elflint.c:3618
+#: 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:3632
+#: 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:3639
+#: 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:3647
+#: 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:3655
+#: 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:3660
+#: 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:3667
+#: 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:3672
+#: 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:3690
+#: 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:3699
+#: 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:3726
+#: src/elflint.c:3784
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -2614,7 +2690,7 @@
 "section [%2zu] ‘%s’ not fully contained in segment of program header entry "
 "%d\n"
 
-#: src/elflint.c:3734
+#: src/elflint.c:3792
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -2623,7 +2699,7 @@
 "section [%2zu] ‘%s’ has type NOBITS but is read from the file in segment of "
 "program header entry %d\n"
 
-#: src/elflint.c:3743
+#: src/elflint.c:3801
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -2632,24 +2708,24 @@
 "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:3754
+#: 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:3764
+#: 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:3774
+#: 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:3780
+#: src/elflint.c:3838
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -2658,36 +2734,36 @@
 "section [%2zu] '%s': ELF header says this is the section header string table "
 "but type is not SHT_TYPE\n"
 
-#: src/elflint.c:3788
+#: 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:3839
+#: 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:3862
+#: 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:3873
+#: 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:3879
+#: 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:3890
+#: src/elflint.c:3948
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -2696,194 +2772,194 @@
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
 "exist\n"
 
-#: src/elflint.c:3903
+#: src/elflint.c:3961
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "duplicate version index %d\n"
 
-#: src/elflint.c:3917
+#: 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:3966
+#: 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:3970
+#: 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:3993
+#: 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:3997
+#: 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:4014
+#: 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:4033
+#: 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:4036
+#: 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:4057
+#: 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:4064
+#: 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:4067
+#: 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:4085
+#: 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:4100
+#: 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:4109
+#: 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:4120
+#: 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:4128
+#: 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:4135
+#: 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:4149
+#: 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:4152
+#: 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:4162
+#: 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:4183
+#: 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:4186
+#: 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:4194 src/elflint.c:4217
+#: 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:4223
+#: 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:4247
+#: 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:4250
+#: 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:4263
+#: 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:4271
+#: 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:4274
+#: 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:4278
+#: 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:4281
+#: 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:4286
+#: 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:4289
+#: 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:4300
+#: 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:4307
+#: 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:4310
+#: src/elflint.c:4368
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -2892,7 +2968,7 @@
 "program header entry %d: file offset and virtual address not module of "
 "alignment\n"
 
-#: src/elflint.c:4323
+#: src/elflint.c:4381
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -2901,100 +2977,105 @@
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
 "program header entry"
 
-#: src/elflint.c:4357
+#: src/elflint.c:4415
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "cannot read ELF header: %s\n"
 
-#: src/elflint.c:4383
+#: src/elflint.c:4441
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr "text relocation flag set but not needed\n"
 
-#: src/findtextrel.c:70
+#: src/findtextrel.c:62
 msgid "Input Selection:"
 msgstr "Input Selection:"
 
-#: src/findtextrel.c:71
+#: src/findtextrel.c:63
 msgid "Prepend PATH to all file names"
 msgstr "Prepend PATH to all file names"
 
-#: src/findtextrel.c:73
+#: src/findtextrel.c:65
 msgid "Use PATH as root of debuginfo hierarchy"
 msgstr "Use PATH as root of debuginfo hierarchy"
 
-#: src/findtextrel.c:80
+#: src/findtextrel.c:72
 msgid "Locate source of text relocations in FILEs (a.out by default)."
 msgstr "Locate source of text relocations in FILEs (a.out by default)."
 
-#: src/findtextrel.c:84 src/nm.c:116 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:104
+#: src/findtextrel.c:76 src/nm.c:108 src/objdump.c:72 src/size.c:84
+#: src/strings.c:84 src/strip.c:96
 msgid "[FILE...]"
 msgstr "[FILE...]"
 
-#: src/findtextrel.c:246
+#: src/findtextrel.c:238
 #, c-format
 msgid "cannot get ELF header '%s': %s"
 msgstr "cannot get ELF header '%s': %s"
 
-#: src/findtextrel.c:257
+#: src/findtextrel.c:249
 #, c-format
 msgid "'%s' is not a DSO or PIE"
 msgstr "‘%s’ is not a DSO or PIE"
 
-#: src/findtextrel.c:277
+#: src/findtextrel.c:269
 #, c-format
 msgid "getting get section header of section %zu: %s"
 msgstr "getting get section header of section %zu: %s"
 
-#: src/findtextrel.c:300
+#: src/findtextrel.c:292
 #, c-format
 msgid "cannot read dynamic section: %s"
 msgstr "cannot read dynamic section: %s"
 
-#: src/findtextrel.c:321
+#: src/findtextrel.c:313
 #, c-format
 msgid "no text relocations reported in '%s'"
 msgstr "no text relocations reported in ‘%s’"
 
-#: src/findtextrel.c:333
+#: src/findtextrel.c:325
 #, c-format
 msgid "while reading ELF file"
 msgstr "while reading ELF file"
 
-#: src/findtextrel.c:342 src/findtextrel.c:359
+#: src/findtextrel.c:329
 #, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr "cannot get program header index at offset %d: %s"
+msgid "cannot get program header count: %s"
+msgstr "cannot get program header count: %s"
 
-#: src/findtextrel.c:411
+#: src/findtextrel.c:340 src/findtextrel.c:357
+#, c-format
+msgid "cannot get program header index at offset %zd: %s"
+msgstr "cannot get program header index at offset %zd: %s"
+
+#: src/findtextrel.c:409
 #, c-format
 msgid "cannot get section header of section %Zu: %s"
 msgstr "cannot get section header of section %Zu: %s"
 
-#: src/findtextrel.c:423
+#: src/findtextrel.c:421
 #, c-format
 msgid "cannot get symbol table section %zu in '%s': %s"
 msgstr "cannot get symbol table section %zu in '%s': %s"
 
-#: src/findtextrel.c:443 src/findtextrel.c:466
+#: src/findtextrel.c:441 src/findtextrel.c:464
 #, c-format
 msgid "cannot get relocation at index %d in section %zu in '%s': %s"
 msgstr "cannot get relocation at index %d in section %zu in '%s': %s"
 
-#: src/findtextrel.c:531
+#: src/findtextrel.c:529
 #, c-format
 msgid "%s not compiled with -fpic/-fPIC\n"
 msgstr "%s not compiled with -fpic/-fPIC\n"
 
-#: src/findtextrel.c:584
+#: src/findtextrel.c:582
 #, c-format
 msgid ""
 "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 "the file containing the function ‘%s’ is not compiled with -fpic/-fPIC\n"
 
-#: src/findtextrel.c:591 src/findtextrel.c:611
+#: src/findtextrel.c:589 src/findtextrel.c:609
 #, c-format
 msgid ""
 "the file containing the function '%s' might not be compiled with -fpic/-"
@@ -3003,7 +3084,7 @@
 "the file containing the function ‘%s’ might not be compiled with -fpic/-"
 "fPIC\n"
 
-#: src/findtextrel.c:599
+#: src/findtextrel.c:597
 #, c-format
 msgid ""
 "either the file containing the function '%s' or the file containing the "
@@ -3012,468 +3093,469 @@
 "either the file containing the function ‘%s’ or the file containing the "
 "function ‘%s’ is not compiled with -fpic/-fPIC\n"
 
-#: src/findtextrel.c:619
+#: src/findtextrel.c:617
 #, c-format
 msgid ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
 msgstr ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
 
-#: src/i386_ld.c:210
+#: src/i386_ld.c:202
 #, c-format
 msgid "cannot allocate PLT section: %s"
 msgstr "cannot allocate PLT section: %s"
 
-#: src/i386_ld.c:232
+#: src/i386_ld.c:224
 #, c-format
 msgid "cannot allocate PLTREL section: %s"
 msgstr "cannot allocate PLTREL section: %s"
 
-#: src/i386_ld.c:253
+#: src/i386_ld.c:245
 #, c-format
 msgid "cannot allocate GOT section: %s"
 msgstr "cannot allocate GOT section: %s"
 
-#: src/i386_ld.c:274
+#: src/i386_ld.c:266
 #, c-format
 msgid "cannot allocate GOTPLT section: %s"
 msgstr "cannot allocate GOTPLT section: %s"
 
-#: src/i386_ld.c:661
+#: src/i386_ld.c:653
 #, c-format
 msgid "initial-executable TLS relocation cannot be used "
 msgstr "initial-executable TLS relocation cannot be used "
 
-#: src/ld.c:87
+#: src/ld.c:79
 msgid "Input File Control:"
 msgstr "Input File Control:"
 
-#: src/ld.c:89
+#: src/ld.c:81
 msgid "Include whole archives in the output from now on."
 msgstr "Include whole archives in the output from now on."
 
-#: src/ld.c:91
+#: src/ld.c:83
 msgid "Stop including the whole archives in the output."
 msgstr "Stop including the whole archives in the output."
 
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
+#: src/ld.c:84 src/ld.c:98 src/ld.c:176
 msgid "FILE"
 msgstr "FILE"
 
-#: src/ld.c:93
+#: src/ld.c:85
 msgid "Start a group."
 msgstr "Start a group."
 
-#: src/ld.c:94
+#: src/ld.c:86
 msgid "End a group."
 msgstr "End a group."
 
-#: src/ld.c:95
+#: src/ld.c:87
 msgid "PATH"
 msgstr "PATH"
 
-#: src/ld.c:96
+#: src/ld.c:88
 msgid "Add PATH to list of directories files are searched in."
 msgstr "Add PATH to list of directories files are searched in."
 
-#: src/ld.c:98
+#: src/ld.c:90
 msgid "Only set DT_NEEDED for following dynamic libs if actually used"
 msgstr "Only set DT_NEEDED for following dynamic libs if actually used"
 
-#: src/ld.c:100
+#: src/ld.c:92
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr "Always set DT_NEEDED for following dynamic libs"
 
-#: src/ld.c:102
+#: src/ld.c:94
 msgid "Ignore LD_LIBRARY_PATH environment variable."
 msgstr "Ignore LD_LIBRARY_PATH environment variable."
 
-#: src/ld.c:105
+#: src/ld.c:97
 msgid "Output File Control:"
 msgstr "Output File Control:"
 
-#: src/ld.c:106
+#: src/ld.c:98
 msgid "Place output in FILE."
 msgstr "Place output in FILE."
 
-#: src/ld.c:109
+#: src/ld.c:101
 msgid "Object is marked to not use default search path at runtime."
 msgstr "Object is marked to not use default search path at runtime."
 
-#: src/ld.c:111
+#: src/ld.c:103
 msgid "Same as --whole-archive."
 msgstr "Same as --whole-archive."
 
-#: src/ld.c:112
+#: src/ld.c:104
 msgid ""
 "Default rules of extracting from archive; weak references are not enough."
 msgstr ""
 "Default rules of extracting from archive; weak references are not enough."
 
-#: src/ld.c:116
+#: src/ld.c:108
 msgid "Weak references cause extraction from archive."
 msgstr "Weak references cause extraction from archive."
 
-#: src/ld.c:118
+#: src/ld.c:110
 msgid "Allow multiple definitions; first is used."
 msgstr "Allow multiple definitions; first is used."
 
-#: src/ld.c:120
+#: src/ld.c:112
 msgid "Disallow/allow undefined symbols in DSOs."
 msgstr "Disallow/allow undefined symbols in DSOs."
 
-#: src/ld.c:123
+#: src/ld.c:115
 msgid "Object requires immediate handling of $ORIGIN."
 msgstr "Object requires immediate handling of $ORIGIN."
 
-#: src/ld.c:125
+#: src/ld.c:117
 msgid "Relocation will not be processed lazily."
 msgstr "Relocation will not be processed lazily."
 
-#: src/ld.c:127
+#: src/ld.c:119
 msgid "Object cannot be unloaded at runtime."
 msgstr "Object cannot be unloaded at runtime."
 
-#: src/ld.c:129
+#: src/ld.c:121
 msgid "Mark object to be initialized first."
 msgstr "Mark object to be initialized first."
 
-#: src/ld.c:131
+#: src/ld.c:123
 msgid "Enable/disable lazy-loading flag for following dependencies."
 msgstr "Enable/disable lazy-loading flag for following dependencies."
 
-#: src/ld.c:133
+#: src/ld.c:125
 msgid "Mark object as not loadable with 'dlopen'."
 msgstr "Mark object as not loadable with 'dlopen'."
 
-#: src/ld.c:135
+#: src/ld.c:127
 msgid "Ignore/record dependencies on unused DSOs."
 msgstr "Ignore/record dependencies on unused DSOs."
 
-#: src/ld.c:137
+#: src/ld.c:129
 msgid "Generated DSO will be a system library."
 msgstr "Generated DSO will be a system library."
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "ADDRESS"
 msgstr "ADDRESS"
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "Set entry point address."
 msgstr "Set entry point address."
 
-#: src/ld.c:141
+#: src/ld.c:133
 msgid "Do not link against shared libraries."
 msgstr "Do not link against shared libraries."
 
-#: src/ld.c:144
+#: src/ld.c:136
 msgid "Prefer linking against shared libraries."
 msgstr "Prefer linking against shared libraries."
 
-#: src/ld.c:145
+#: src/ld.c:137
 msgid "Export all dynamic symbols."
 msgstr "Export all dynamic symbols."
 
-#: src/ld.c:146
+#: src/ld.c:138
 msgid "Strip all symbols."
 msgstr "Strip all symbols."
 
-#: src/ld.c:147
+#: src/ld.c:139
 msgid "Strip debugging symbols."
 msgstr "Strip debugging symbols."
 
-#: src/ld.c:149
+#: src/ld.c:141
 msgid "Assume pagesize for the target system to be SIZE."
 msgstr "Assume pagesize for the target system to be SIZE."
 
-#: src/ld.c:151
+#: src/ld.c:143
 msgid "Set runtime DSO search path."
 msgstr "Set runtime DSO search path."
 
-#: src/ld.c:154
+#: src/ld.c:146
 msgid "Set link time DSO search path."
 msgstr "Set link time DSO search path."
 
-#: src/ld.c:155
+#: src/ld.c:147
 msgid "Generate dynamic shared object."
 msgstr "Generate dynamic shared object."
 
-#: src/ld.c:156
+#: src/ld.c:148
 msgid "Generate relocatable object."
 msgstr "Generate relocatable object."
 
-#: src/ld.c:159
+#: src/ld.c:151
 msgid "Causes symbol not assigned to a version be reduced to local."
 msgstr "Causes symbol not assigned to a version be reduced to local."
 
-#: src/ld.c:160
+#: src/ld.c:152
 msgid "Remove unused sections."
 msgstr "Remove unused sections."
 
-#: src/ld.c:163
+#: src/ld.c:155
 msgid "Don't remove unused sections."
 msgstr "Don't remove unused sections."
 
-#: src/ld.c:164
+#: src/ld.c:156
 msgid "Set soname of shared object."
 msgstr "Set soname of shared object."
 
-#: src/ld.c:165
+#: src/ld.c:157
 msgid "Set the dynamic linker name."
 msgstr "Set the dynamic linker name."
 
-#: src/ld.c:168
+#: src/ld.c:160
 msgid "Add/suppress addition indentifying link-editor to .comment section."
 msgstr "Add/suppress addition indentifying link-editor to .comment section."
 
-#: src/ld.c:171
+#: src/ld.c:163
 msgid "Create .eh_frame_hdr section"
 msgstr "Create .eh_frame_hdr section"
 
-#: src/ld.c:173
+#: src/ld.c:165
 msgid "Set hash style to sysv, gnu or both."
 msgstr "Set hash style to sysv, gnu or both."
 
-#: src/ld.c:175
+#: src/ld.c:167
 msgid "Generate build ID note (md5, sha1 (default), uuid)."
 msgstr "Generate build ID note (md5, sha1 (default), uuid)."
 
-#: src/ld.c:177
+#: src/ld.c:169
 msgid "Linker Operation Control:"
 msgstr "Linker Operation Control:"
 
-#: src/ld.c:178
+#: src/ld.c:170
 msgid "Verbose messages."
 msgstr "Verbose messages."
 
-#: src/ld.c:179
+#: src/ld.c:171
 msgid "Trace file opens."
 msgstr "Trace file opens."
 
-#: src/ld.c:181
+#: src/ld.c:173
 msgid "Trade speed for less memory usage"
 msgstr "Trade speed for less memory usage"
 
-#: src/ld.c:182
+#: src/ld.c:174
 msgid "LEVEL"
 msgstr "LEVEL"
 
-#: src/ld.c:183
+#: src/ld.c:175
 msgid "Set optimization level to LEVEL."
 msgstr "Set optimization level to LEVEL."
 
-#: src/ld.c:184
+#: src/ld.c:176
 msgid "Use linker script in FILE."
 msgstr "Use linker script in FILE."
 
-#: src/ld.c:187
+#: src/ld.c:179
 msgid "Select to get parser debug information"
 msgstr "Select to get parser debug information"
 
-#: src/ld.c:190
+#: src/ld.c:182
 msgid "Read version information from FILE."
 msgstr "Read version information from FILE."
 
-#: src/ld.c:191
+#: src/ld.c:183
 msgid "Set emulation to NAME."
 msgstr "Set emulation to NAME."
 
-#: src/ld.c:197
+#: src/ld.c:189
 msgid "Combine object and archive files."
 msgstr "Combine object and archive files."
 
-#: src/ld.c:200
+#: src/ld.c:192
 msgid "[FILE]..."
 msgstr "[FILE]..."
 
-#: src/ld.c:333
+#: src/ld.c:325
 #, c-format
 msgid "At least one input file needed"
 msgstr "At least one input file needed"
 
-#: src/ld.c:349
+#: src/ld.c:341
 #, c-format
 msgid "error while preparing linking"
 msgstr "error while preparing linking"
 
-#: src/ld.c:356
+#: src/ld.c:348
 #, c-format
 msgid "cannot open linker script '%s'"
 msgstr "cannot open linker script ‘%s’"
 
-#: src/ld.c:397
+#: src/ld.c:389
 #, c-format
 msgid "-( without matching -)"
 msgstr "-( without matching -)"
 
-#: src/ld.c:572 src/ld.c:610
+#: src/ld.c:564 src/ld.c:602
 #, c-format
 msgid "only one option of -G and -r is allowed"
 msgstr "only one option of -G and -r is allowed"
 
-#: src/ld.c:594
+#: src/ld.c:586
 #, c-format
 msgid "more than one '-m' parameter"
 msgstr "more than one ‘-m’ parameter"
 
-#: src/ld.c:604 src/ld.c:1013
+#: src/ld.c:596 src/ld.c:1005
 #, c-format
 msgid "unknown option `-%c %s'"
 msgstr "unknown option ‘-%c %s’"
 
-#: src/ld.c:646
+#: src/ld.c:638
 #, c-format
 msgid "invalid page size value '%s': ignored"
 msgstr "invalid page size value '%s': ignored"
 
-#: src/ld.c:687
+#: src/ld.c:679
 #, c-format
 msgid "invalid hash style '%s'"
 msgstr "invalid hash style ‘%s’"
 
-#: src/ld.c:697
+#: src/ld.c:689
 #, c-format
 msgid "invalid build-ID style '%s'"
 msgstr "invalid build-ID style ‘%s’"
 
-#: src/ld.c:785
+#: src/ld.c:777
 #, c-format
 msgid "More than one output file name given."
 msgstr "More than one output file name given."
 
-#: src/ld.c:802
+#: src/ld.c:794
 #, c-format
 msgid "Invalid optimization level `%s'"
 msgstr "Invalid optimization level ‘%s’"
 
-#: src/ld.c:850
+#: src/ld.c:842
 #, c-format
 msgid "nested -( -) groups are not allowed"
 msgstr "nested -( -) groups are not allowed"
 
-#: src/ld.c:869
+#: src/ld.c:861
 #, c-format
 msgid "-) without matching -("
 msgstr "-) without matching -("
 
-#: src/ld.c:1046
+#: src/ld.c:1038
 #, c-format
 msgid "unknown option '-%c %s'"
 msgstr "unknown option ‘-%c %s’"
 
-#: src/ld.c:1150
+#: src/ld.c:1142
 #, c-format
 msgid "could not find input file to determine output file format"
 msgstr "could not find input file to determine output file format"
 
-#: src/ld.c:1152
+#: src/ld.c:1144
 #, c-format
 msgid "try again with an appropriate '-m' parameter"
 msgstr "try again with an appropriate ‘-m’ parameter"
 
-#: src/ld.c:1446
+#: src/ld.c:1438
 #, c-format
 msgid "cannot read version script '%s'"
 msgstr "cannot read version script ‘%s’"
 
-#: src/ld.c:1512 src/ld.c:1551
+#: src/ld.c:1504 src/ld.c:1543
 #, c-format
 msgid "duplicate definition of '%s' in linker script"
 msgstr "duplicate definition of ‘%s’ in linker script"
 
-#: src/ldgeneric.c:209 src/ldgeneric.c:5149
+#: src/ldgeneric.c:201 src/ldgeneric.c:5141
 #, c-format
 msgid "cannot create string table"
 msgstr "cannot create string table"
 
-#: src/ldgeneric.c:255
+#: src/ldgeneric.c:247
 #, c-format
 msgid "cannot load ld backend library '%s': %s"
 msgstr "cannot load ld backend library '%s': %s"
 
-#: src/ldgeneric.c:265
+#: src/ldgeneric.c:257
 #, c-format
 msgid "cannot find init function in ld backend library '%s': %s"
 msgstr "cannot find init function in ld backend library '%s': %s"
 
-#: src/ldgeneric.c:308
+#: src/ldgeneric.c:300
 #, c-format
 msgid "%s listed more than once as input"
 msgstr "%s listed more than once as input"
 
-#: src/ldgeneric.c:422
+#: src/ldgeneric.c:414
 #, c-format
 msgid "%s (for -l%s)\n"
 msgstr "%s (for -l%s)\n"
 
-#: src/ldgeneric.c:423
+#: src/ldgeneric.c:415
 #, c-format
 msgid "%s (for DT_NEEDED %s)\n"
 msgstr "%s (for DT_NEEDED %s)\n"
 
-#: src/ldgeneric.c:571
+#: src/ldgeneric.c:563
 #, c-format
 msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
 msgstr "Warning: type of ‘%s’ changed from %s in %s to %s in %s"
 
-#: src/ldgeneric.c:584
+#: src/ldgeneric.c:576
 #, c-format
 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:659 src/ldgeneric.c:1120 src/readelf.c:642 src/strip.c:570
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:568
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "cannot determine number of sections: %s"
 
-#: src/ldgeneric.c:675
+#: src/ldgeneric.c:667
 #, c-format
 msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
 msgstr "(%s+%#<PRIx64>): multiple definition of %s ‘%s’\n"
 
-#: src/ldgeneric.c:698
+#: src/ldgeneric.c:690
 #, c-format
 msgid "(%s+%#<PRIx64>): first defined here\n"
 msgstr "(%s+%#<PRIx64>): first defined here\n"
 
-#: src/ldgeneric.c:817
+#: src/ldgeneric.c:809
 #, c-format
 msgid "%s: cannot get section group data: %s"
 msgstr "%s: cannot get section group data: %s"
 
-#: src/ldgeneric.c:838
+#: src/ldgeneric.c:830
 #, c-format
 msgid "%s: section '%s' with group flag set does not belong to any group"
 msgstr "%s: section ‘%s’ with group flag set does not belong to any group"
 
-#: src/ldgeneric.c:883
+#: src/ldgeneric.c:875
 #, c-format
 msgid "%s: section [%2d] '%s' is not in the correct section group"
 msgstr "%s: section [%2d] ‘%s’ is not in the correct section group"
 
-#: src/ldgeneric.c:1154 src/ldgeneric.c:1411 src/ldgeneric.c:1420
-#: src/ldgeneric.c:1479 src/ldgeneric.c:1488 src/ldgeneric.c:1751
-#: src/ldgeneric.c:2003
+#: src/ldgeneric.c:1146 src/ldgeneric.c:1403 src/ldgeneric.c:1412
+#: src/ldgeneric.c:1471 src/ldgeneric.c:1480 src/ldgeneric.c:1743
+#: src/ldgeneric.c:1995
 #, c-format
 msgid "%s: invalid ELF file (%s:%d)\n"
 msgstr "%s: invalid ELF file (%s:%d)\n"
 
-#: src/ldgeneric.c:1248
+#: src/ldgeneric.c:1240
 #, c-format
 msgid "%s: only files of type ET_REL might contain section groups"
 msgstr "%s: only files of type ET_REL might contain section groups"
 
-#: src/ldgeneric.c:1300
+#: src/ldgeneric.c:1292
 #, c-format
 msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
 msgstr "%s: cannot determine signature of section group [%2zd] '%s': %s"
 
-#: src/ldgeneric.c:1312
+#: src/ldgeneric.c:1304
 #, c-format
 msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
 msgstr "%s: cannot get content of section group [%2zd] '%s': %s'"
 
-#: src/ldgeneric.c:1326
+#: src/ldgeneric.c:1318
 #, c-format
 msgid ""
 "%s: group member %zu of section group [%2zd] '%s' has too high index: "
@@ -3482,75 +3564,75 @@
 "%s: group member %zu of section group [%2zd] ‘%s’ has too high index: "
 "%<PRIu32>"
 
-#: src/ldgeneric.c:1348
+#: src/ldgeneric.c:1340
 #, c-format
 msgid "%s: section '%s' has unknown type: %d"
 msgstr "%s: section ‘%s’ has unknown type: %d"
 
-#: src/ldgeneric.c:1727
+#: src/ldgeneric.c:1719
 #, c-format
 msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
 msgstr "cannot get descriptor for ELF file (%s:%d): %s\n"
 
-#: src/ldgeneric.c:1897
+#: src/ldgeneric.c:1889
 #, c-format
 msgid "cannot read archive `%s': %s"
 msgstr "cannot read archive ‘%s’: %s"
 
-#: src/ldgeneric.c:2018
+#: src/ldgeneric.c:2010
 #, c-format
 msgid "file of type %s cannot be linked in\n"
 msgstr "file of type %s cannot be linked in\n"
 
-#: src/ldgeneric.c:2030
+#: src/ldgeneric.c:2022
 #, c-format
 msgid "%s: input file incompatible with ELF machine type %s\n"
 msgstr "%s: input file incompatible with ELF machine type %s\n"
 
-#: src/ldgeneric.c:2042
+#: src/ldgeneric.c:2034
 #, c-format
 msgid "%s: cannot get section header string table index: %s\n"
 msgstr "%s: cannot get section header string table index: %s\n"
 
-#: src/ldgeneric.c:2071
+#: src/ldgeneric.c:2063
 #, c-format
 msgid "cannot use DSO '%s' when generating relocatable object file"
 msgstr "cannot use DSO ‘%s’ when generating relocatable object file"
 
-#: src/ldgeneric.c:2156
+#: src/ldgeneric.c:2148
 #, c-format
 msgid "input file '%s' ignored"
 msgstr "input file ‘%s’ ignored"
 
-#: src/ldgeneric.c:2370
+#: src/ldgeneric.c:2362
 #, c-format
 msgid "undefined symbol `%s' in %s"
 msgstr "undefined symbol ‘%s’ in %s"
 
-#: src/ldgeneric.c:2700
+#: src/ldgeneric.c:2692
 #, c-format
 msgid "cannot create ELF descriptor for output file: %s"
 msgstr "cannot create ELF descriptor for output file: %s"
 
-#: src/ldgeneric.c:2707
+#: src/ldgeneric.c:2699
 #, c-format
 msgid "could not create ELF header for output file: %s"
 msgstr "could not create ELF header for output file: %s"
 
-#: src/ldgeneric.c:3222 src/ldgeneric.c:3292 src/ldgeneric.c:3328
-#: src/ldgeneric.c:4455 src/ldgeneric.c:4504 src/ldgeneric.c:4536
-#: src/ldgeneric.c:4771 src/ldgeneric.c:4826 src/ldgeneric.c:5073
-#: src/ldgeneric.c:5129 src/ldgeneric.c:5598 src/ldgeneric.c:5610
+#: src/ldgeneric.c:3214 src/ldgeneric.c:3284 src/ldgeneric.c:3320
+#: src/ldgeneric.c:4447 src/ldgeneric.c:4496 src/ldgeneric.c:4528
+#: src/ldgeneric.c:4763 src/ldgeneric.c:4818 src/ldgeneric.c:5065
+#: src/ldgeneric.c:5121 src/ldgeneric.c:5590 src/ldgeneric.c:5602
 #, c-format
 msgid "cannot create section for output file: %s"
 msgstr "cannot create section for output file: %s"
 
-#: src/ldgeneric.c:3442
+#: src/ldgeneric.c:3434
 #, c-format
 msgid "address computation expression contains variable '%s'"
 msgstr "address computation expression contains variable ‘%s’"
 
-#: src/ldgeneric.c:3487
+#: src/ldgeneric.c:3479
 #, c-format
 msgid ""
 "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
@@ -3559,206 +3641,206 @@
 "argument ‘%<PRIuMAX>’ of ALIGN in address computation expression is no power "
 "of two"
 
-#: src/ldgeneric.c:3682
+#: src/ldgeneric.c:3674
 #, c-format
 msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 msgstr "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 
-#: src/ldgeneric.c:3688
+#: src/ldgeneric.c:3680
 #, c-format
 msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
 msgstr "no entry symbol specified: defaulting to %#0*<PRIx64>"
 
-#: src/ldgeneric.c:3918
+#: src/ldgeneric.c:3910
 #, c-format
 msgid "cannot create GNU hash table section for output file: %s"
 msgstr "cannot create GNU hash table section for output file: %s"
 
-#: src/ldgeneric.c:4069
+#: src/ldgeneric.c:4061
 #, c-format
 msgid "cannot create hash table section for output file: %s"
 msgstr "cannot create hash table section for output file: %s"
 
-#: src/ldgeneric.c:4112
+#: src/ldgeneric.c:4104
 #, c-format
 msgid "cannot create build ID section: %s"
 msgstr "cannot create build ID section: %s"
 
-#: src/ldgeneric.c:4189
+#: src/ldgeneric.c:4181
 #, c-format
 msgid "cannot convert section data to file format: %s"
 msgstr "cannot convert section data to file format: %s"
 
-#: src/ldgeneric.c:4198
+#: src/ldgeneric.c:4190
 #, c-format
 msgid "cannot convert section data to memory format: %s"
 msgstr "cannot convert section data to memory format: %s"
 
-#: src/ldgeneric.c:4259
+#: src/ldgeneric.c:4251
 #, c-format
 msgid "cannot read enough data for UUID"
 msgstr "cannot read enough data for UUID"
 
-#: src/ldgeneric.c:4356 src/ldgeneric.c:4377 src/ldgeneric.c:4406
-#: src/ldgeneric.c:6059
+#: src/ldgeneric.c:4348 src/ldgeneric.c:4369 src/ldgeneric.c:4398
+#: src/ldgeneric.c:6051
 #, c-format
 msgid "cannot create symbol table for output file: %s"
 msgstr "cannot create symbol table for output file: %s"
 
-#: src/ldgeneric.c:5298 src/ldgeneric.c:5850
+#: src/ldgeneric.c:5290 src/ldgeneric.c:5842
 #, c-format
 msgid "section index too large in dynamic symbol table"
 msgstr "section index too large in dynamic symbol table"
 
-#: src/ldgeneric.c:5743
+#: src/ldgeneric.c:5735
 #, c-format
 msgid "cannot create versioning section: %s"
 msgstr "cannot create versioning section: %s"
 
-#: src/ldgeneric.c:5816
+#: src/ldgeneric.c:5808
 #, c-format
 msgid "cannot create dynamic symbol table for output file: %s"
 msgstr "cannot create dynamic symbol table for output file: %s"
 
-#: src/ldgeneric.c:5991
+#: src/ldgeneric.c:5983
 #, c-format
 msgid "cannot create versioning data: %s"
 msgstr "cannot create versioning data: %s"
 
-#: src/ldgeneric.c:6091 src/ldgeneric.c:6104 src/ldgeneric.c:6168
-#: src/ldgeneric.c:6176
+#: src/ldgeneric.c:6083 src/ldgeneric.c:6096 src/ldgeneric.c:6160
+#: src/ldgeneric.c:6168
 #, c-format
 msgid "cannot create section header string section: %s"
 msgstr "cannot create section header string section: %s"
 
-#: src/ldgeneric.c:6098
+#: src/ldgeneric.c:6090
 #, c-format
 msgid "cannot create section header string section"
 msgstr "cannot create section header string section"
 
-#: src/ldgeneric.c:6256
+#: src/ldgeneric.c:6248
 #, c-format
 msgid "cannot create program header: %s"
 msgstr "cannot create program header: %s"
 
-#: src/ldgeneric.c:6264
+#: src/ldgeneric.c:6256
 #, c-format
 msgid "while determining file layout: %s"
 msgstr "while determining file layout: %s"
 
-#: src/ldgeneric.c:6385
+#: src/ldgeneric.c:6377
 #, c-format
 msgid "internal error: non-nobits section follows nobits section"
 msgstr "internal error: non-nobits section follows nobits section"
 
-#: src/ldgeneric.c:6922
+#: src/ldgeneric.c:6914
 #, c-format
 msgid "cannot get header of 0th section: %s"
 msgstr "cannot get header of 0th section: %s"
 
-#: src/ldgeneric.c:6938 src/unstrip.c:1818
+#: src/ldgeneric.c:6930 src/unstrip.c:1822
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "cannot update ELF header: %s"
 
-#: src/ldgeneric.c:6969
+#: src/ldgeneric.c:6961
 #, c-format
 msgid "linker backend didn't specify function to relocate section"
 msgstr "linker backend didn't specify function to relocate section"
 
-#: src/ldgeneric.c:6981
+#: src/ldgeneric.c:6973
 #, c-format
 msgid "while writing output file: %s"
 msgstr "while writing output file: %s"
 
-#: src/ldgeneric.c:6986
+#: src/ldgeneric.c:6978
 #, c-format
 msgid "while finishing output file: %s"
 msgstr "while finishing output file: %s"
 
-#: src/ldgeneric.c:6992
+#: src/ldgeneric.c:6984
 #, c-format
 msgid "cannot stat output file"
 msgstr "cannot stat output file"
 
-#: src/ldgeneric.c:7008
+#: src/ldgeneric.c:7000
 #, c-format
 msgid "WARNING: temporary output file overwritten before linking finished"
 msgstr "WARNING: temporary output file overwritten before linking finished"
 
-#: src/ldgeneric.c:7061 src/ldgeneric.c:7072 src/ldgeneric.c:7083
-#: src/ldgeneric.c:7094 src/ldgeneric.c:7113 src/ldgeneric.c:7126
-#: src/ldgeneric.c:7138
+#: src/ldgeneric.c:7053 src/ldgeneric.c:7064 src/ldgeneric.c:7075
+#: src/ldgeneric.c:7086 src/ldgeneric.c:7105 src/ldgeneric.c:7118
+#: src/ldgeneric.c:7130
 #, c-format
 msgid "no machine specific '%s' implementation"
 msgstr "no machine specific ‘%s’ implementation"
 
-#: src/ldscript.y:178
+#: src/ldscript.y:170
 msgid "mode for segment invalid\n"
 msgstr "mode for segment invalid\n"
 
-#: src/ldscript.y:465
+#: src/ldscript.y:457
 #, c-format
 msgid "while reading version script '%s': %s at line %d"
 msgstr "while reading version script '%s': %s at line %d"
 
-#: src/ldscript.y:466
+#: src/ldscript.y:458
 #, c-format
 msgid "while reading linker script '%s': %s at line %d"
 msgstr "while reading linker script '%s': %s at line %d"
 
-#: src/ldscript.y:745
+#: src/ldscript.y:737
 #, c-format
 msgid "symbol '%s' is declared both local and global for unnamed version"
 msgstr "symbol ‘%s’ is declared both local and global for unnamed version"
 
-#: src/ldscript.y:747
+#: src/ldscript.y:739
 #, c-format
 msgid "symbol '%s' is declared both local and global for version '%s'"
 msgstr "symbol ‘%s’ is declared both local and global for version ‘%s’"
 
-#: src/ldscript.y:767 src/ldscript.y:774
+#: src/ldscript.y:759 src/ldscript.y:766
 #, c-format
 msgid "default visibility set as local and global"
 msgstr "default visibility set as local and global"
 
-#: src/nm.c:74 src/strip.c:76
+#: src/nm.c:66 src/strip.c:68
 msgid "Output selection:"
 msgstr "Output selection:"
 
-#: src/nm.c:75
+#: src/nm.c:67
 msgid "Display debugger-only symbols"
 msgstr "Display debugger-only symbols"
 
-#: src/nm.c:76
+#: src/nm.c:68
 msgid "Display only defined symbols"
 msgstr "Display only defined symbols"
 
-#: src/nm.c:79
+#: src/nm.c:71
 msgid "Display dynamic symbols instead of normal symbols"
 msgstr "Display dynamic symbols instead of normal symbols"
 
-#: src/nm.c:80
+#: src/nm.c:72
 msgid "Display only external symbols"
 msgstr "Display only external symbols"
 
-#: src/nm.c:81
+#: src/nm.c:73
 msgid "Display only undefined symbols"
 msgstr "Display only undefined symbols"
 
-#: src/nm.c:83
+#: src/nm.c:75
 msgid "Include index for symbols from archive members"
 msgstr "Include index for symbols from archive members"
 
-#: src/nm.c:85 src/size.c:66
+#: src/nm.c:77 src/size.c:58
 msgid "Output format:"
 msgstr "Output format:"
 
-#: src/nm.c:87
+#: src/nm.c:79
 msgid "Print name of the input file before every symbol"
 msgstr "Print name of the input file before every symbol"
 
-#: src/nm.c:90
+#: src/nm.c:82
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd', `sysv' or `posix'.  The "
 "default is `sysv'"
@@ -3766,71 +3848,71 @@
 "Use the output format FORMAT.  FORMAT can be ‘bsd’, ‘sysv’ or ‘posix’.  The "
 "default is ‘sysv’"
 
-#: src/nm.c:92
+#: src/nm.c:84
 msgid "Same as --format=bsd"
 msgstr "Same as --format=bsd"
 
-#: src/nm.c:93
+#: src/nm.c:85
 msgid "Same as --format=posix"
 msgstr "Same as --format=posix"
 
-#: src/nm.c:94 src/size.c:72
+#: src/nm.c:86 src/size.c:64
 msgid "Use RADIX for printing symbol values"
 msgstr "Use RADIX for printing symbol values"
 
-#: src/nm.c:95
+#: src/nm.c:87
 msgid "Mark special symbols"
 msgstr "Mark special symbols"
 
-#: src/nm.c:97
+#: src/nm.c:89
 msgid "Print size of defined symbols"
 msgstr "Print size of defined symbols"
 
-#: src/nm.c:99 src/size.c:80 src/strip.c:81 src/unstrip.c:81
+#: src/nm.c:91 src/size.c:72 src/strip.c:73 src/unstrip.c:73
 msgid "Output options:"
 msgstr "Output options:"
 
-#: src/nm.c:100
+#: src/nm.c:92
 msgid "Sort symbols numerically by address"
 msgstr "Sort symbols numerically by address"
 
-#: src/nm.c:102
+#: src/nm.c:94
 msgid "Do not sort the symbols"
 msgstr "Do not sort the symbols"
 
-#: src/nm.c:103
+#: src/nm.c:95
 msgid "Reverse the sense of the sort"
 msgstr "Reverse the sense of the sort"
 
-#: src/nm.c:106
+#: src/nm.c:98
 msgid "Decode low-level symbol names into source code names"
 msgstr "Decode low-level symbol names into source code names"
 
-#: src/nm.c:113
+#: src/nm.c:105
 msgid "List symbols from FILEs (a.out by default)."
 msgstr "List symbols from FILEs (a.out by default)."
 
-#: src/nm.c:124 src/objdump.c:88
+#: src/nm.c:116 src/objdump.c:80
 msgid "Output formatting"
 msgstr "Output formatting"
 
-#: src/nm.c:148 src/objdump.c:112 src/size.c:117 src/strip.c:128
+#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
 #, c-format
 msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
 msgstr "%s: INTERNAL ERROR %d (%s-%s): %s"
 
-#: src/nm.c:406 src/nm.c:418 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:2132
+#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
+#: src/strip.c:2160
 #, c-format
 msgid "while closing '%s'"
 msgstr "while closing ‘%s’"
 
-#: src/nm.c:428 src/objdump.c:304 src/strip.c:384
+#: src/nm.c:420 src/objdump.c:296 src/strip.c:376
 #, c-format
 msgid "%s: File format not recognized"
 msgstr "%s: File format not recognized"
 
-#: src/nm.c:468
+#: src/nm.c:460
 msgid ""
 "\n"
 "Archive index:\n"
@@ -3838,42 +3920,42 @@
 "\n"
 "Archive index:\n"
 
-#: src/nm.c:477
+#: src/nm.c:469
 #, c-format
 msgid "invalid offset %zu for symbol %s"
 msgstr "invalid offset %zu for symbol %s"
 
-#: src/nm.c:482
+#: src/nm.c:474
 #, c-format
 msgid "%s in %s\n"
 msgstr "%s in %s\n"
 
-#: src/nm.c:490
+#: src/nm.c:482
 #, c-format
 msgid "cannot reset archive offset to beginning"
 msgstr "cannot reset archive offset to beginning"
 
-#: src/nm.c:514 src/objdump.c:352
+#: src/nm.c:506 src/objdump.c:344
 #, c-format
 msgid "%s%s%s: file format not recognized"
 msgstr "%s%s%s: file format not recognized"
 
-#: src/nm.c:726
+#: src/nm.c:718
 #, c-format
 msgid "cannot create search tree"
 msgstr "cannot create search tree"
 
-#: src/nm.c:765 src/nm.c:1164 src/objdump.c:795 src/readelf.c:898
-#: src/readelf.c:1041 src/readelf.c:1189 src/readelf.c:1371 src/readelf.c:1571
-#: src/readelf.c:1757 src/readelf.c:1967 src/readelf.c:2221 src/readelf.c:2287
-#: src/readelf.c:2365 src/readelf.c:2863 src/readelf.c:2899 src/readelf.c:2961
-#: src/readelf.c:7307 src/readelf.c:8212 src/readelf.c:8359 src/readelf.c:8427
-#: src/size.c:425 src/size.c:499 src/strip.c:510
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:793 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:1975 src/readelf.c:2202 src/readelf.c:2460
+#: src/readelf.c:2536 src/readelf.c:2623 src/readelf.c:3201 src/readelf.c:3237
+#: src/readelf.c:3300 src/readelf.c:8187 src/readelf.c:9273 src/readelf.c:9420
+#: src/readelf.c:9488 src/size.c:417 src/size.c:486 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:790
+#: src/nm.c:784
 #, c-format
 msgid ""
 "\n"
@@ -3886,7 +3968,7 @@
 "Symbols from %s:\n"
 "\n"
 
-#: src/nm.c:793
+#: src/nm.c:787
 #, c-format
 msgid ""
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
@@ -3895,72 +3977,72 @@
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
 "\n"
 
-#: src/nm.c:1174
+#: 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:1178
+#: 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:1436
+#: src/nm.c:1435
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: Invalid operation"
 
-#: src/nm.c:1493
+#: src/nm.c:1492
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: no symbols"
 
-#: src/objdump.c:61
+#: src/objdump.c:53
 msgid "Mode selection:"
 msgstr "Mode selection:"
 
-#: src/objdump.c:62
+#: src/objdump.c:54
 msgid "Display relocation information."
 msgstr "Display relocation information."
 
-#: src/objdump.c:64
+#: src/objdump.c:56
 msgid "Display the full contents of all sections requested"
 msgstr "Display the full contents of all sections requested"
 
-#: src/objdump.c:66
+#: src/objdump.c:58
 msgid "Display assembler code of executable sections"
 msgstr "Display assembler code of executable sections"
 
-#: src/objdump.c:68
+#: src/objdump.c:60
 msgid "Output content selection:"
 msgstr "Output content selection:"
 
-#: src/objdump.c:70
+#: src/objdump.c:62
 msgid "Only display information for section NAME."
 msgstr "Only display information for section NAME."
 
-#: src/objdump.c:76
+#: src/objdump.c:68
 msgid "Show information from FILEs (a.out by default)."
 msgstr "Show information from FILEs (a.out by default)."
 
-#: src/objdump.c:244 src/readelf.c:441
+#: src/objdump.c:236 src/readelf.c:473
 msgid "No operation specified.\n"
 msgstr "No operation specified.\n"
 
-#: src/objdump.c:282 src/objdump.c:294
+#: src/objdump.c:274 src/objdump.c:286
 #, c-format
 msgid "while close `%s'"
 msgstr "while close ‘%s’"
 
-#: src/objdump.c:387 src/readelf.c:1666 src/readelf.c:1840
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2072
 msgid "INVALID SYMBOL"
 msgstr "INVALID SYMBOL"
 
-#: src/objdump.c:402 src/readelf.c:1697 src/readelf.c:1873
+#: src/objdump.c:394 src/readelf.c:1914 src/readelf.c:2108
 msgid "INVALID SECTION"
 msgstr "INVALID SECTION"
 
-#: src/objdump.c:518
+#: src/objdump.c:514
 #, c-format
 msgid ""
 "\n"
@@ -3971,421 +4053,468 @@
 "RELOCATION RECORDS FOR [%s]:\n"
 "%-*s TYPE                 VALUE\n"
 
-#: src/objdump.c:521
+#: src/objdump.c:517
 msgid "OFFSET"
 msgstr "OFFSET"
 
-#: src/objdump.c:584
+#: src/objdump.c:582
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Contents of section %s:\n"
 
-#: src/objdump.c:705
+#: src/objdump.c:703
 #, c-format
 msgid "cannot disassemble"
 msgstr "cannot disassemble"
 
-#: src/objdump.c:744
+#: src/objdump.c:742
 #, c-format
 msgid "cannot allocate memory"
 msgstr "cannot allocate memory"
 
-#: src/ranlib.c:74
+#: src/ranlib.c:66
 msgid "Generate an index to speed access to archives."
 msgstr "Generate an index to speed access to archives."
 
-#: src/ranlib.c:77
+#: src/ranlib.c:69
 msgid "ARCHIVE"
 msgstr "ARCHIVE"
 
-#: src/ranlib.c:116
+#: src/ranlib.c:108
 #, c-format
 msgid "Archive name required"
 msgstr "Archive name required"
 
-#: src/ranlib.c:194
+#: src/ranlib.c:186
 #, c-format
 msgid "'%s' is no archive"
 msgstr "‘%s’ is no archive"
 
-#: src/ranlib.c:229
+#: src/ranlib.c:221
 #, c-format
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr "error while freeing sub-ELF descriptor: %s"
 
+#: 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:75
+#: 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:76
+#: src/readelf.c:78
 msgid "Display the dynamic segment"
 msgstr "Display the dynamic segment"
 
-#: src/readelf.c:77
+#: src/readelf.c:79
 msgid "Display the ELF file header"
 msgstr "Display the ELF file header"
 
-#: src/readelf.c:79
+#: src/readelf.c:81
 msgid "Display histogram of bucket list lengths"
 msgstr "Display histogram of bucket list lengths"
 
-#: src/readelf.c:80
+#: src/readelf.c:82
 msgid "Display the program headers"
 msgstr "Display the program headers"
 
-#: src/readelf.c:82
+#: src/readelf.c:84
 msgid "Display relocations"
 msgstr "Display relocations"
 
-#: src/readelf.c:83
+#: src/readelf.c:85
 msgid "Display the sections' headers"
 msgstr "Display the sections' headers"
 
-#: src/readelf.c:85
+#: src/readelf.c:87
 msgid "Display the symbol table"
 msgstr "Display the symbol table"
 
-#: src/readelf.c:86
+#: src/readelf.c:88
 msgid "Display versioning information"
 msgstr "Display versioning information"
 
-#: src/readelf.c:87
+#: src/readelf.c:89
 msgid "Display the ELF notes"
 msgstr "Display the ELF notes"
 
-#: src/readelf.c:89
+#: src/readelf.c:91
 msgid "Display architecture specific information, if any"
 msgstr "Display architecture specific information, if any"
 
-#: src/readelf.c:91
+#: src/readelf.c:93
 msgid "Display sections for exception handling"
 msgstr "Display sections for exception handling"
 
-#: src/readelf.c:93
+#: src/readelf.c:95
 msgid "Additional output selection:"
 msgstr "Additional output selection:"
 
-#: src/readelf.c:95
+#: 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, 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, or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
 
-#: src/readelf.c:99
+#: 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:101
+#: src/readelf.c:103
 msgid "Print string contents of sections"
 msgstr "Print string contents of sections"
 
-#: src/readelf.c:104
+#: src/readelf.c:106
 msgid "Display the symbol index of an archive"
 msgstr "Display the symbol index of an archive"
 
-#: src/readelf.c:106
+#: src/readelf.c:108
 msgid "Output control:"
 msgstr "Output control:"
 
-#: src/readelf.c:108
+#: 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:110
+#: 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:115
+#: 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:412
+#: src/readelf.c:441
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "Unknown DWARF debug section ‘%s’.\n"
 
-#: src/readelf.c:478
+#: 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:490
-#, 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:495
-#, c-format
-msgid "error while closing Elf descriptor: %s"
-msgstr "error while closing Elf descriptor: %s"
-
-#: src/readelf.c:587
-#, c-format
-msgid "cannot stat input file"
-msgstr "cannot stat input file"
-
-#: src/readelf.c:589
-#, c-format
-msgid "input file is empty"
-msgstr "input file is empty"
-
-#: src/readelf.c:591
-#, c-format
-msgid "failed reading '%s': %s"
-msgstr "failed reading '%s': %s"
-
-#: src/readelf.c:627
-#, c-format
-msgid "cannot read ELF header: %s"
-msgstr "cannot read ELF header: %s"
-
-#: src/readelf.c:635
-#, c-format
-msgid "cannot create EBL handle"
-msgstr "cannot create EBL handle"
-
-#: src/readelf.c:648
-#, c-format
-msgid "cannot determine number of program headers: %s"
-msgstr "cannot determine number of program headers: %s"
-
-#: src/readelf.c:734
-msgid "NONE (None)"
-msgstr "NONE (None)"
-
-#: src/readelf.c:735
-msgid "REL (Relocatable file)"
-msgstr "REL (Relocatable file)"
-
-#: src/readelf.c:736
-msgid "EXEC (Executable file)"
-msgstr "EXEC (Executable file)"
-
-#: src/readelf.c:737
-msgid "DYN (Shared object file)"
-msgstr "DYN (Shared object file)"
-
-#: src/readelf.c:738
-msgid "CORE (Core file)"
-msgstr "CORE (Core file)"
-
-#: src/readelf.c:743
-#, c-format
-msgid "OS Specific: (%x)\n"
-msgstr "OS Specific: (%x)\n"
-
-#: src/readelf.c:745
-#, c-format
-msgid "Processor Specific: (%x)\n"
-msgstr "Processor Specific: (%x)\n"
-
-#: src/readelf.c:755
-msgid ""
-"ELF Header:\n"
-"  Magic:  "
-msgstr ""
-"ELF Header:\n"
-"  Magic:  "
-
-#: src/readelf.c:759
-#, c-format
-msgid ""
-"\n"
-"  Class:                             %s\n"
-msgstr ""
-"\n"
-"  Class:                             %s\n"
-
-#: src/readelf.c:764
-#, c-format
-msgid "  Data:                              %s\n"
-msgstr "  Data:                              %s\n"
-
-#: src/readelf.c:770
-#, c-format
-msgid "  Ident Version:                     %hhd %s\n"
-msgstr "  Ident Version:                     %hhd %s\n"
-
-#: src/readelf.c:772 src/readelf.c:789
-msgid "(current)"
-msgstr "(current)"
-
-#: src/readelf.c:776
-#, c-format
-msgid "  OS/ABI:                            %s\n"
-msgstr "  OS/ABI:                            %s\n"
-
-#: src/readelf.c:779
-#, c-format
-msgid "  ABI Version:                       %hhd\n"
-msgstr "  ABI Version:                       %hhd\n"
-
-#: src/readelf.c:782
-msgid "  Type:                              "
-msgstr "  Type:                              "
-
-#: src/readelf.c:785
-#, c-format
-msgid "  Machine:                           %s\n"
-msgstr "  Machine:                           %s\n"
-
-#: src/readelf.c:787
-#, c-format
-msgid "  Version:                           %d %s\n"
-msgstr "  Version:                           %d %s\n"
-
-#: src/readelf.c:791
-#, c-format
-msgid "  Entry point address:               %#<PRIx64>\n"
-msgstr "  Entry point address:               %#<PRIx64>\n"
-
-#: src/readelf.c:794
-#, c-format
-msgid "  Start of program headers:          %<PRId64> %s\n"
-msgstr "  Start of program headers:          %<PRId64> %s\n"
-
-#: src/readelf.c:795 src/readelf.c:798
-msgid "(bytes into file)"
-msgstr "(bytes into file)"
-
-#: src/readelf.c:797
-#, c-format
-msgid "  Start of section headers:          %<PRId64> %s\n"
-msgstr "  Start of section headers:          %<PRId64> %s\n"
-
-#: src/readelf.c:800
-#, c-format
-msgid "  Flags:                             %s\n"
-msgstr "  Flags:                             %s\n"
-
-#: src/readelf.c:803
-#, c-format
-msgid "  Size of this header:               %<PRId16> %s\n"
-msgstr "  Size of this header:               %<PRId16> %s\n"
-
-#: src/readelf.c:804 src/readelf.c:807 src/readelf.c:824
-msgid "(bytes)"
-msgstr "(bytes)"
-
-#: src/readelf.c:806
-#, c-format
-msgid "  Size of program header entries:    %<PRId16> %s\n"
-msgstr "  Size of program header entries:    %<PRId16> %s\n"
-
-#: src/readelf.c:809
-#, c-format
-msgid "  Number of program headers entries: %<PRId16>"
-msgstr "  Number of program headers entries: %<PRId16>"
-
-#: src/readelf.c:816
-#, c-format
-msgid " (%<PRIu32> in [0].sh_info)"
-msgstr " (%<PRIu32> in [0].sh_info)"
-
-#: src/readelf.c:819 src/readelf.c:836 src/readelf.c:850
-msgid " ([0] not available)"
-msgstr " ([0] not available)"
-
-#: src/readelf.c:823
-#, c-format
-msgid "  Size of section header entries:    %<PRId16> %s\n"
-msgstr "  Size of section header entries:    %<PRId16> %s\n"
-
-#: src/readelf.c:826
-#, c-format
-msgid "  Number of section headers entries: %<PRId16>"
-msgstr "  Number of section headers entries: %<PRId16>"
-
-#: src/readelf.c:833
-#, c-format
-msgid " (%<PRIu32> in [0].sh_size)"
-msgstr " (%<PRIu32> in [0].sh_size)"
-
-#: src/readelf.c:846
-#, c-format
-msgid " (%<PRIu32> in [0].sh_link)"
-msgstr " (%<PRIu32> in [0].sh_link)"
-
-#: src/readelf.c:854
-#, c-format
-msgid ""
-"  Section header string table index: XINDEX%s\n"
-"\n"
-msgstr ""
-"  Section header string table index: XINDEX%s\n"
-"\n"
-
-#: src/readelf.c:858
-#, c-format
-msgid ""
-"  Section header string table index: %<PRId16>\n"
-"\n"
-msgstr ""
-"  Section header string table index: %<PRId16>\n"
-"\n"
-
-#: src/readelf.c:890
-#, c-format
-msgid ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-msgstr ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-
-#: src/readelf.c:900
-msgid "Section Headers:"
-msgstr "Section Headers:"
-
-#: src/readelf.c:903
-msgid ""
-"[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
-"Inf Al"
-msgstr ""
-"[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
-"Inf Al"
-
-#: src/readelf.c:905
-msgid ""
-"[Nr] Name                 Type         Addr             Off      Size     ES "
-"Flags Lk Inf Al"
-msgstr ""
-"[Nr] Name                 Type         Addr             Off      Size     ES "
-"Flags Lk Inf Al"
-
-#: src/readelf.c:912 src/readelf.c:1065
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
 #, c-format
 msgid "cannot get section: %s"
 msgstr "cannot get section: %s"
 
-#: src/readelf.c:919 src/readelf.c:1073 src/readelf.c:8379 src/unstrip.c:353
-#: src/unstrip.c:384 src/unstrip.c:433 src/unstrip.c:541 src/unstrip.c:558
-#: src/unstrip.c:594 src/unstrip.c:792 src/unstrip.c:1060 src/unstrip.c:1250
-#: src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484 src/unstrip.c:1591
-#: src/unstrip.c:1780
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9440
+#: src/unstrip.c:356 src/unstrip.c:387 src/unstrip.c:436 src/unstrip.c:544
+#: src/unstrip.c:561 src/unstrip.c:597 src/unstrip.c:795 src/unstrip.c:1063
+#: src/unstrip.c:1254 src/unstrip.c:1314 src/unstrip.c:1435 src/unstrip.c:1488
+#: src/unstrip.c:1595 src/unstrip.c:1784
 #, c-format
 msgid "cannot get section header: %s"
 msgstr "cannot get section header: %s"
 
-#: src/readelf.c:977
+#: src/readelf.c:562
+#, c-format
+msgid "cannot get section name"
+msgstr "cannot get section name"
+
+#: src/readelf.c:571 src/readelf.c:5398 src/readelf.c:7671 src/readelf.c:7773
+#: src/readelf.c:7939
+#, 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: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:771
+#, c-format
+msgid "input file is empty"
+msgstr "input file is empty"
+
+#: src/readelf.c:773
+#, c-format
+msgid "failed reading '%s': %s"
+msgstr "failed reading '%s': %s"
+
+#: src/readelf.c:814
+#, c-format
+msgid "cannot read ELF header: %s"
+msgstr "cannot read ELF header: %s"
+
+#: src/readelf.c:822
+#, c-format
+msgid "cannot create EBL handle"
+msgstr "cannot create EBL handle"
+
+#: 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:921
+msgid "NONE (None)"
+msgstr "NONE (None)"
+
+#: src/readelf.c:922
+msgid "REL (Relocatable file)"
+msgstr "REL (Relocatable file)"
+
+#: src/readelf.c:923
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Executable file)"
+
+#: src/readelf.c:924
+msgid "DYN (Shared object file)"
+msgstr "DYN (Shared object file)"
+
+#: src/readelf.c:925
+msgid "CORE (Core file)"
+msgstr "CORE (Core file)"
+
+#: src/readelf.c:930
+#, c-format
+msgid "OS Specific: (%x)\n"
+msgstr "OS Specific: (%x)\n"
+
+#: src/readelf.c:932
+#, c-format
+msgid "Processor Specific: (%x)\n"
+msgstr "Processor Specific: (%x)\n"
+
+#: src/readelf.c:942
+msgid ""
+"ELF Header:\n"
+"  Magic:  "
+msgstr ""
+"ELF Header:\n"
+"  Magic:  "
+
+#: src/readelf.c:946
+#, c-format
+msgid ""
+"\n"
+"  Class:                             %s\n"
+msgstr ""
+"\n"
+"  Class:                             %s\n"
+
+#: src/readelf.c:951
+#, c-format
+msgid "  Data:                              %s\n"
+msgstr "  Data:                              %s\n"
+
+#: src/readelf.c:957
+#, c-format
+msgid "  Ident Version:                     %hhd %s\n"
+msgstr "  Ident Version:                     %hhd %s\n"
+
+#: src/readelf.c:959 src/readelf.c:976
+msgid "(current)"
+msgstr "(current)"
+
+#: src/readelf.c:963
+#, c-format
+msgid "  OS/ABI:                            %s\n"
+msgstr "  OS/ABI:                            %s\n"
+
+#: src/readelf.c:966
+#, c-format
+msgid "  ABI Version:                       %hhd\n"
+msgstr "  ABI Version:                       %hhd\n"
+
+#: src/readelf.c:969
+msgid "  Type:                              "
+msgstr "  Type:                              "
+
+#: src/readelf.c:972
+#, c-format
+msgid "  Machine:                           %s\n"
+msgstr "  Machine:                           %s\n"
+
+#: src/readelf.c:974
+#, c-format
+msgid "  Version:                           %d %s\n"
+msgstr "  Version:                           %d %s\n"
+
+#: src/readelf.c:978
+#, c-format
+msgid "  Entry point address:               %#<PRIx64>\n"
+msgstr "  Entry point address:               %#<PRIx64>\n"
+
+#: 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:982 src/readelf.c:985
+msgid "(bytes into file)"
+msgstr "(bytes into file)"
+
+#: 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:987
+#, c-format
+msgid "  Flags:                             %s\n"
+msgstr "  Flags:                             %s\n"
+
+#: 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:991 src/readelf.c:994 src/readelf.c:1011
+msgid "(bytes)"
+msgstr "(bytes)"
+
+#: 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:996
+#, c-format
+msgid "  Number of program headers entries: %<PRId16>"
+msgstr "  Number of program headers entries: %<PRId16>"
+
+#: src/readelf.c:1003
+#, c-format
+msgid " (%<PRIu32> in [0].sh_info)"
+msgstr " (%<PRIu32> in [0].sh_info)"
+
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
+msgid " ([0] not available)"
+msgstr " ([0] not available)"
+
+#: 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:1013
+#, c-format
+msgid "  Number of section headers entries: %<PRId16>"
+msgstr "  Number of section headers entries: %<PRId16>"
+
+#: src/readelf.c:1020
+#, c-format
+msgid " (%<PRIu32> in [0].sh_size)"
+msgstr " (%<PRIu32> in [0].sh_size)"
+
+#: src/readelf.c:1033
+#, c-format
+msgid " (%<PRIu32> in [0].sh_link)"
+msgstr " (%<PRIu32> in [0].sh_link)"
+
+#: src/readelf.c:1041
+#, c-format
+msgid ""
+"  Section header string table index: XINDEX%s\n"
+"\n"
+msgstr ""
+"  Section header string table index: XINDEX%s\n"
+"\n"
+
+#: src/readelf.c:1045
+#, c-format
+msgid ""
+"  Section header string table index: %<PRId16>\n"
+"\n"
+msgstr ""
+"  Section header string table index: %<PRId16>\n"
+"\n"
+
+#: src/readelf.c:1077
+#, c-format
+msgid ""
+"There are %d section headers, starting at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+"There are %d section headers, starting at offset %#<PRIx64>:\n"
+"\n"
+
+#: src/readelf.c:1087
+msgid "Section Headers:"
+msgstr "Section Headers:"
+
+#: src/readelf.c:1090
+msgid ""
+"[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
+"Inf Al"
+msgstr ""
+"[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
+"Inf Al"
+
+#: src/readelf.c:1092
+msgid ""
+"[Nr] Name                 Type         Addr             Off      Size     ES "
+"Flags Lk Inf Al"
+msgstr ""
+"[Nr] Name                 Type         Addr             Off      Size     ES "
+"Flags Lk Inf Al"
+
+#: src/readelf.c:1164
 msgid "Program Headers:"
 msgstr "Program Headers:"
 
-#: src/readelf.c:979
+#: 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:982
+#: src/readelf.c:1169
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4393,12 +4522,12 @@
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
 
-#: src/readelf.c:1022
+#: src/readelf.c:1226
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[Requesting program interpreter: %s]\n"
 
-#: src/readelf.c:1043
+#: src/readelf.c:1247
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4408,12 +4537,12 @@
 " Section to Segment mapping:\n"
 "  Segment Sections..."
 
-#: src/readelf.c:1054 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
+#: src/readelf.c:1258 src/unstrip.c:1843 src/unstrip.c:1886 src/unstrip.c:1893
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "cannot get program header: %s"
 
-#: src/readelf.c:1195
+#: src/readelf.c:1401
 #, c-format
 msgid ""
 "\n"
@@ -4428,7 +4557,7 @@
 "\n"
 "COMDAT section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu entries:\n"
 
-#: src/readelf.c:1200
+#: src/readelf.c:1406
 #, c-format
 msgid ""
 "\n"
@@ -4443,15 +4572,21 @@
 "\n"
 "Section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu entries:\n"
 
-#: src/readelf.c:1208
+#: src/readelf.c:1414
 msgid "<INVALID SYMBOL>"
 msgstr "<INVALID SYMBOL>"
 
-#: src/readelf.c:1222
+#: src/readelf.c:1428
 msgid "<INVALID SECTION>"
 msgstr "<INVALID SECTION>"
 
-#: src/readelf.c:1373
+#: src/readelf.c:1585 src/readelf.c:2208 src/readelf.c:2466 src/readelf.c:2542
+#: src/readelf.c:2846 src/readelf.c:2920 src/readelf.c:4610
+#, 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"
@@ -4470,36 +4605,36 @@
 "Dynamic segment contains %lu entries:\n"
 " Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s’\n"
 
-#: src/readelf.c:1385
+#: src/readelf.c:1598
 msgid "  Type              Value\n"
 msgstr "  Type              Value\n"
 
-#: src/readelf.c:1409
+#: src/readelf.c:1622
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "Shared library: [%s]\n"
 
-#: src/readelf.c:1414
+#: src/readelf.c:1627
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "Library soname: [%s]\n"
 
-#: src/readelf.c:1419
+#: src/readelf.c:1632
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "Library rpath: [%s]\n"
 
-#: src/readelf.c:1424
+#: src/readelf.c:1637
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "Library runpath: [%s]\n"
 
-#: src/readelf.c:1444
+#: src/readelf.c:1657
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (bytes)\n"
 
-#: src/readelf.c:1556 src/readelf.c:1742
+#: src/readelf.c:1770 src/readelf.c:1960
 #, c-format
 msgid ""
 "\n"
@@ -4508,7 +4643,7 @@
 "\n"
 "Invalid symbol table at offset %#0<PRIx64>\n"
 
-#: src/readelf.c:1574 src/readelf.c:1759
+#: src/readelf.c:1788 src/readelf.c:1978
 #, c-format
 msgid ""
 "\n"
@@ -4527,7 +4662,7 @@
 "Relocation section [%2zu] ‘%s’ for section [%2u] ‘%s’ at offset %#0<PRIx64> "
 "contains %d entries:\n"
 
-#: src/readelf.c:1589
+#: src/readelf.c:1803 src/readelf.c:1993
 #, c-format
 msgid ""
 "\n"
@@ -4542,30 +4677,30 @@
 "\n"
 "Relocation section [%2u] ‘%s’ at offset %#0<PRIx64> contains %d entries:\n"
 
-#: src/readelf.c:1599
+#: src/readelf.c:1813
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "  Offset      Type                 Value       Name\n"
 
-#: src/readelf.c:1601
+#: src/readelf.c:1815
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "  Offset              Type                 Value               Name\n"
 
-#: src/readelf.c:1654 src/readelf.c:1665 src/readelf.c:1678 src/readelf.c:1696
-#: src/readelf.c:1708 src/readelf.c:1827 src/readelf.c:1839 src/readelf.c:1853
-#: src/readelf.c:1872 src/readelf.c:1885
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1913
+#: src/readelf.c:1925 src/readelf.c:2059 src/readelf.c:2071 src/readelf.c:2085
+#: src/readelf.c:2107 src/readelf.c:2120
 msgid "<INVALID RELOC>"
 msgstr "<INVALID RELOC>"
 
-#: src/readelf.c:1771
+#: src/readelf.c:2003
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "  Offset      Type            Value       Addend Name\n"
 
-#: src/readelf.c:1773
+#: src/readelf.c:2005
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 "  Offset              Type            Value               Addend Name\n"
 
-#: src/readelf.c:1974
+#: src/readelf.c:2216
 #, c-format
 msgid ""
 "\n"
@@ -4580,40 +4715,40 @@
 "\n"
 "Symbol table [%2u] ‘%s’ contains %u entries:\n"
 
-#: src/readelf.c:1980
+#: src/readelf.c:2221
 #, 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:1990
+#: src/readelf.c:2229
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 
-#: src/readelf.c:1992
+#: src/readelf.c:2231
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 
-#: src/readelf.c:2012
+#: src/readelf.c:2251
 #, 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:2100
+#: src/readelf.c:2339
 #, c-format
 msgid "bad dynamic symbol"
 msgstr "bad dynamic symbol"
 
-#: src/readelf.c:2182
+#: src/readelf.c:2421
 msgid "none"
 msgstr "none"
 
-#: src/readelf.c:2199
+#: src/readelf.c:2438
 msgid "| <unknown>"
 msgstr "| <unknown>"
 
-#: src/readelf.c:2224
+#: src/readelf.c:2469
 #, c-format
 msgid ""
 "\n"
@@ -4632,17 +4767,17 @@
 "Version needs section [%2u] ‘%s’ contains %d entries:\n"
 " Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s’\n"
 
-#: src/readelf.c:2247
+#: src/readelf.c:2490
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 
-#: src/readelf.c:2260
+#: src/readelf.c:2503
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 
-#: src/readelf.c:2291
+#: src/readelf.c:2546
 #, c-format
 msgid ""
 "\n"
@@ -4661,17 +4796,17 @@
 "Version definition section [%2u] ‘%s’ contains %d entries:\n"
 " Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s’\n"
 
-#: src/readelf.c:2321
+#: src/readelf.c:2574
 #, 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:2336
+#: src/readelf.c:2589
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Parent %d: %s\n"
 
-#: src/readelf.c:2568
+#: src/readelf.c:2850
 #, c-format
 msgid ""
 "\n"
@@ -4690,15 +4825,15 @@
 "Version symbols section [%2u] ‘%s’ contains %d entries:\n"
 " Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s’"
 
-#: src/readelf.c:2598
+#: src/readelf.c:2878
 msgid "   0 *local*                     "
 msgstr "   0 *local*                     "
 
-#: src/readelf.c:2603
+#: src/readelf.c:2883
 msgid "   1 *global*                    "
 msgstr "   1 *global*                    "
 
-#: src/readelf.c:2634
+#: src/readelf.c:2925
 #, c-format
 msgid ""
 "\n"
@@ -4721,22 +4856,22 @@
 "buckets):\n"
 " Addr: %#0*<PRIx64>  Offset: %#08<PRIx64>  Link to section: [%2u] ‘%s’\n"
 
-#: src/readelf.c:2658
+#: src/readelf.c:2947
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " Length  Number  % of total  Coverage\n"
 
-#: src/readelf.c:2660
+#: src/readelf.c:2949
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:2667
+#: src/readelf.c:2956
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:2680
+#: src/readelf.c:2969
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -4745,12 +4880,27 @@
 " Average number of tests:   successful lookup: %f\n"
 "\t\t\t  unsuccessful lookup: %f\n"
 
-#: src/readelf.c:2698 src/readelf.c:2740 src/readelf.c:2781
+#: src/readelf.c:2987 src/readelf.c:3042 src/readelf.c:3098
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "cannot get data for section %d: %s"
 
-#: src/readelf.c:2835
+#: src/readelf.c:2995
+#, c-format
+msgid "invalid data in sysv.hash section %d"
+msgstr "invalid data in sysv.hash section %d"
+
+#: src/readelf.c:3050
+#, c-format
+msgid "invalid data in sysv.hash64 section %d"
+msgstr "invalid data in sysv.hash64 section %d"
+
+#: src/readelf.c:3106
+#, c-format
+msgid "invalid data in gnu.hash section %d"
+msgstr "invalid data in gnu.hash section %d"
+
+#: src/readelf.c:3173
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -4759,7 +4909,7 @@
 " Symbol Bias: %u\n"
 " Bitmask Size: %zu bytes  %<PRIuFAST32>%% bits set  2nd hash shift: %u\n"
 
-#: src/readelf.c:2909
+#: src/readelf.c:3248
 #, c-format
 msgid ""
 "\n"
@@ -4774,7 +4924,7 @@
 "\n"
 "Library list section [%2zu] ‘%s’ at offset %#0<PRIx64> contains %d entries:\n"
 
-#: src/readelf.c:2923
+#: src/readelf.c:3262
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -4782,7 +4932,7 @@
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
 
-#: src/readelf.c:2973
+#: src/readelf.c:3312
 #, c-format
 msgid ""
 "\n"
@@ -4793,160 +4943,140 @@
 "Object attributes section [%2zu] ‘%s’ of %<PRIu64> bytes at offset "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:2989
+#: src/readelf.c:3329
 msgid "  Owner          Size\n"
 msgstr "  Owner          Size\n"
 
-#: src/readelf.c:3015
+#: src/readelf.c:3358
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
-#: src/readelf.c:3047
+#: src/readelf.c:3397
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
-#: src/readelf.c:3052
+#: src/readelf.c:3402
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    File: %11<PRIu32>\n"
 
-#: src/readelf.c:3087
+#: src/readelf.c:3451
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3090
+#: src/readelf.c:3454
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3093
+#: src/readelf.c:3457
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3100
+#: src/readelf.c:3467
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3103
+#: src/readelf.c:3470
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3139
+#: src/readelf.c:3515
 #, c-format
 msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3142
+#: src/readelf.c:3518
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3147
+#: src/readelf.c:3523
 #, c-format
 msgid "%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3150
+#: src/readelf.c:3526
 #, c-format
 msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3156
+#: src/readelf.c:3532
 #, c-format
 msgid "%s+%#<PRIx64> <%s>"
 msgstr "%s+%#<PRIx64> <%s>"
 
-#: src/readelf.c:3159
+#: src/readelf.c:3535
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s>"
 msgstr "%s+%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3163
+#: src/readelf.c:3539
 #, c-format
 msgid "%#<PRIx64> <%s>"
 msgstr "%#<PRIx64> <%s>"
 
-#: src/readelf.c:3166
+#: src/readelf.c:3542
 #, c-format
 msgid "%#0*<PRIx64> <%s>"
 msgstr "%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3171
+#: src/readelf.c:3547
 #, c-format
 msgid "%s+%#<PRIx64>"
 msgstr "%s+%#<PRIx64>"
 
-#: src/readelf.c:3174
+#: src/readelf.c:3550
 #, c-format
 msgid "%s+%#0*<PRIx64>"
 msgstr "%s+%#0*<PRIx64>"
 
-#: src/readelf.c:3313
-#, c-format
-msgid "unknown tag %hx"
-msgstr "unknown tag %hx"
-
-#: src/readelf.c:3315
-#, c-format
-msgid "unknown user tag %hx"
-msgstr "unknown user tag %hx"
-
-#: src/readelf.c:3603
-#, c-format
-msgid "unknown attribute %hx"
-msgstr "unknown attribute %hx"
-
-#: src/readelf.c:3606
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr "unknown user attribute %hx"
-
-#: src/readelf.c:3657
-#, c-format
-msgid "unknown form %#<PRIx64>"
-msgstr "unknown form %#<PRIx64>"
-
-#: src/readelf.c:3893
+#: src/readelf.c:3932
 msgid "empty block"
 msgstr "empty block"
 
-#: src/readelf.c:3896
+#: src/readelf.c:3935
 #, c-format
 msgid "%zu byte block:"
 msgstr "%zu byte block:"
 
-#: src/readelf.c:4419
+#: src/readelf.c:4332
 #, c-format
 msgid "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 
-#: src/readelf.c:4455
+#: src/readelf.c:4389
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr "%s %#<PRIx64> used with different address sizes"
 
-#: src/readelf.c:4462
+#: src/readelf.c:4396
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr "%s %#<PRIx64> used with different offset sizes"
 
-#: src/readelf.c:4542
+#: src/readelf.c:4403
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> used with different base addresses"
+
+#: src/readelf.c:4492
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 
-#: src/readelf.c:4550
+#: src/readelf.c:4500
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 
-#: src/readelf.c:4569
+#: src/readelf.c:4526
 #, c-format
 msgid ""
 "\n"
@@ -4957,7 +5087,7 @@
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 " [ Code]\n"
 
-#: src/readelf.c:4577
+#: src/readelf.c:4534
 #, c-format
 msgid ""
 "\n"
@@ -4966,30 +5096,30 @@
 "\n"
 "Abbreviation section at offset %<PRIu64>:\n"
 
-#: src/readelf.c:4590
+#: src/readelf.c:4547
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** error while reading abbreviation: %s\n"
 
-#: src/readelf.c:4606
+#: src/readelf.c:4563
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "yes"
 msgstr "yes"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "no"
 msgstr "no"
 
-#: src/readelf.c:4644
+#: src/readelf.c:4600 src/readelf.c:4673
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "cannot get .debug_aranges content: %s"
 
-#: src/readelf.c:4649
+#: src/readelf.c:4615
 #, c-format
 msgid ""
 "\n"
@@ -5004,25 +5134,20 @@
 "\n"
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64> contains %zu entries:\n"
 
-#: src/readelf.c:4680
+#: src/readelf.c:4646
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:4682
+#: src/readelf.c:4648
 #, 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:4701
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "cannot get .debug_ranges content: %s"
-
-#: src/readelf.c:4706 src/readelf.c:5207 src/readelf.c:5982 src/readelf.c:6483
-#: src/readelf.c:6598 src/readelf.c:6770
+#: src/readelf.c:4678 src/readelf.c:4832 src/readelf.c:5408 src/readelf.c:6362
+#: src/readelf.c:6894 src/readelf.c:7014 src/readelf.c:7177 src/readelf.c:7602
 #, c-format
 msgid ""
 "\n"
@@ -5031,37 +5156,123 @@
 "\n"
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 
-#: src/readelf.c:4730 src/readelf.c:6508
+#: src/readelf.c:4691 src/readelf.c:6388
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Table at offset %Zu:\n"
+
+#: src/readelf.c:4695 src/readelf.c:5432 src/readelf.c:6399
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "invalid data in section [%zu] ‘%s’"
+
+#: src/readelf.c:4711
+#, c-format
+msgid ""
+"\n"
+" Length:        %6<PRIu64>\n"
+msgstr ""
+"\n"
+" Length:        %6<PRIu64>\n"
+
+#: src/readelf.c:4723
+#, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " DWARF version: %6<PRIuFAST16>\n"
+
+#: src/readelf.c:4727
+#, c-format
+msgid "unsupported aranges version"
+msgstr "unsupported aranges version"
+
+#: src/readelf.c:4738
+#, c-format
+msgid " CU offset:     %6<PRIx64>\n"
+msgstr " CU offset:     %6<PRIx64>\n"
+
+#: src/readelf.c:4744
+#, c-format
+msgid " Address size:  %6<PRIu64>\n"
+msgstr " Address size:  %6<PRIu64>\n"
+
+#: src/readelf.c:4748
+#, c-format
+msgid "unsupported address size"
+msgstr "unsupported address size"
+
+#: src/readelf.c:4753
+#, c-format
+msgid ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+msgstr ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+
+#: src/readelf.c:4757
+#, c-format
+msgid "unsupported segment size"
+msgstr "unsupported segment size"
+
+#: src/readelf.c:4797
+#, c-format
+msgid "   %s..%s (%<PRIx64>)\n"
+msgstr "   %s..%s (%<PRIx64>)\n"
+
+#: src/readelf.c:4800
+#, c-format
+msgid "   %s..%s\n"
+msgstr "   %s..%s\n"
+
+#: src/readelf.c:4809
+#, c-format
+msgid "   %Zu padding bytes\n"
+msgstr "   %Zu padding bytes\n"
+
+#: src/readelf.c:4827
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "cannot get .debug_ranges content: %s"
+
+#: src/readelf.c:4857 src/readelf.c:6921
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <INVALID DATA>\n"
 
-#: src/readelf.c:4752 src/readelf.c:6530
+#: src/readelf.c:4879 src/readelf.c:6943
 #, c-format
 msgid " [%6tx]  base address %s\n"
 msgstr " [%6tx]  base address %s\n"
 
-#: src/readelf.c:4758 src/readelf.c:6536
+#: src/readelf.c:4886 src/readelf.c:6950
 #, c-format
 msgid " [%6tx]  empty list\n"
 msgstr " [%6tx]  empty list\n"
 
-#: src/readelf.c:4767
+#: src/readelf.c:4897
 #, c-format
 msgid " [%6tx]  %s..%s\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:4769
+#: src/readelf.c:4899
 #, c-format
 msgid "           %s..%s\n"
 msgstr "           %s..%s\n"
 
-#: src/readelf.c:5196 src/readelf.c:6838 src/readelf.c:6940 src/readelf.c:7098
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "cannot get %s content: %s"
+#: src/readelf.c:5078
+msgid "         <INVALID DATA>\n"
+msgstr "         <INVALID DATA>\n"
 
-#: src/readelf.c:5203
+#: src/readelf.c:5387
+#, c-format
+msgid "cannot get ELF: %s"
+msgstr "cannot get ELF: %s"
+
+#: src/readelf.c:5404
 #, c-format
 msgid ""
 "\n"
@@ -5070,12 +5281,7 @@
 "\n"
 "Call frame information section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 
-#: src/readelf.c:5231 src/readelf.c:6017
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "invalid data in section [%zu] ‘%s’"
-
-#: src/readelf.c:5253
+#: src/readelf.c:5454
 #, c-format
 msgid ""
 "\n"
@@ -5084,50 +5290,50 @@
 "\n"
 " [%6tx] Zero terminator\n"
 
-#: src/readelf.c:5338
+#: src/readelf.c:5547 src/readelf.c:5702
 #, c-format
 msgid "invalid augmentation length"
 msgstr "invalid augmentation length"
 
-#: src/readelf.c:5350
+#: src/readelf.c:5562
 msgid "FDE address encoding: "
 msgstr "FDE address encoding: "
 
-#: src/readelf.c:5356
+#: src/readelf.c:5568
 msgid "LSDA pointer encoding: "
 msgstr "LSDA pointer encoding: "
 
-#: src/readelf.c:5454
+#: src/readelf.c:5679
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (offset: %#<PRIx64>)"
 
-#: src/readelf.c:5461
+#: src/readelf.c:5686
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (end offset: %#<PRIx64>)"
 
-#: src/readelf.c:5488
+#: src/readelf.c:5723
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sLSDA pointer: %#<PRIx64>\n"
 
-#: src/readelf.c:5539
+#: src/readelf.c:5778
 #, c-format
 msgid "cannot get attribute code: %s"
 msgstr "cannot get attribute code: %s"
 
-#: src/readelf.c:5548
+#: src/readelf.c:5787
 #, c-format
 msgid "cannot get attribute form: %s"
 msgstr "cannot get attribute form: %s"
 
-#: src/readelf.c:5563
+#: src/readelf.c:5802
 #, c-format
 msgid "cannot get attribute value: %s"
 msgstr "cannot get attribute value: %s"
 
-#: src/readelf.c:5819
+#: src/readelf.c:6101
 #, c-format
 msgid ""
 "\n"
@@ -5138,7 +5344,7 @@
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 " [Offset]\n"
 
-#: src/readelf.c:5851
+#: src/readelf.c:6133
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5151,7 +5357,7 @@
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 " Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
 
-#: src/readelf.c:5860
+#: src/readelf.c:6142
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5162,46 +5368,48 @@
 " Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: "
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 
-#: src/readelf.c:5886
+#: src/readelf.c:6167
 #, 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:5898
+#: src/readelf.c:6181
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "cannot get DIE offset: %s"
 
-#: src/readelf.c:5907
+#: src/readelf.c:6190
 #, 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:5938
+#: src/readelf.c:6222
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "cannot get next DIE: %s\n"
 
-#: src/readelf.c:5946
+#: src/readelf.c:6230
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "cannot get next DIE: %s"
 
-#: src/readelf.c:5995
+#: src/readelf.c:6266
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+"\n"
+"DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
+"\n"
+
+#: src/readelf.c:6375
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "cannot get line data section data: %s"
 
-#: src/readelf.c:6008
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-"\n"
-"Table at offset %Zu:\n"
-
-#: src/readelf.c:6063
+#: src/readelf.c:6445
 #, c-format
 msgid ""
 "\n"
@@ -5230,19 +5438,19 @@
 "\n"
 "Opcodes:\n"
 
-#: src/readelf.c:6084
+#: src/readelf.c:6466
 #, 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:6099
+#: src/readelf.c:6481
 #, 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:6107
+#: src/readelf.c:6489
 msgid ""
 "\n"
 "Directory table:"
@@ -5250,7 +5458,7 @@
 "\n"
 "Directory table:"
 
-#: src/readelf.c:6123
+#: src/readelf.c:6505
 msgid ""
 "\n"
 "File name table:\n"
@@ -5260,7 +5468,7 @@
 "File name table:\n"
 " Entry Dir   Time      Size      Name"
 
-#: src/readelf.c:6152
+#: src/readelf.c:6540
 msgid ""
 "\n"
 "Line number statements:"
@@ -5268,152 +5476,217 @@
 "\n"
 "Line number statements:"
 
-#: src/readelf.c:6228
+#: src/readelf.c:6591
+#, c-format
+msgid "invalid maximum operations per instruction is zero"
+msgstr "invalid maximum operations per instruction is zero"
+
+#: src/readelf.c:6627
 #, 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:6233
+#: src/readelf.c:6632
 #, 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:6253
+#: src/readelf.c:6652
 #, c-format
 msgid " extended opcode %u: "
 msgstr " extended opcode %u: "
 
-#: src/readelf.c:6258
+#: src/readelf.c:6657
 msgid " end of sequence"
 msgstr " end of sequence"
 
-#: src/readelf.c:6275
+#: src/readelf.c:6676
 #, c-format
 msgid " set address to %s\n"
 msgstr " set address to %s\n"
 
-#: src/readelf.c:6296
+#: src/readelf.c:6703
 #, 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:6309
+#: src/readelf.c:6716
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " set discriminator to %u\n"
 
-#: src/readelf.c:6314
+#: src/readelf.c:6721
 msgid " unknown opcode"
 msgstr " unknown opcode"
 
-#: src/readelf.c:6326
+#: src/readelf.c:6733
 msgid " copy"
 msgstr " copy"
 
-#: src/readelf.c:6337
+#: src/readelf.c:6744
 #, 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:6341
+#: src/readelf.c:6748
 #, c-format
 msgid " advance address by %u to %s\n"
 msgstr " advance address by %u to %s\n"
 
-#: src/readelf.c:6352
+#: src/readelf.c:6759
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " advance line by constant %d to %<PRId64>\n"
 
-#: src/readelf.c:6360
+#: src/readelf.c:6767
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " set file to %<PRIu64>\n"
 
-#: src/readelf.c:6370
+#: src/readelf.c:6777
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr " set column to %<PRIu64>\n"
 
-#: src/readelf.c:6377
+#: src/readelf.c:6784
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " set ‘%s’ to %<PRIuFAST8>\n"
 
-#: src/readelf.c:6383
+#: src/readelf.c:6790
 msgid " set basic block flag"
 msgstr " set basic block flag"
 
-#: src/readelf.c:6392
+#: src/readelf.c:6803
 #, 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:6396
+#: src/readelf.c:6807
 #, c-format
 msgid " advance address by constant %u to %s\n"
 msgstr " advance address by constant %u to %s\n"
 
-#: src/readelf.c:6414
+#: src/readelf.c:6825
 #, 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:6423
+#: src/readelf.c:6834
 msgid " set prologue end flag"
 msgstr " set prologue end flag"
 
-#: src/readelf.c:6428
+#: src/readelf.c:6839
 msgid " set epilogue begin flag"
 msgstr " set epilogue begin flag"
 
-#: src/readelf.c:6437
+#: src/readelf.c:6848
 #, c-format
 msgid " set isa to %u\n"
 msgstr " set isa to %u\n"
 
-#: src/readelf.c:6446
+#: src/readelf.c:6857
 #, 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:6478
+#: src/readelf.c:6889
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr "cannot get .debug_loc content: %s"
 
-#: src/readelf.c:6548
+#: src/readelf.c:6964
 #, c-format
 msgid " [%6tx]  %s..%s"
 msgstr " [%6tx]  %s..%s"
 
-#: src/readelf.c:6550
+#: src/readelf.c:6966
 #, c-format
 msgid "           %s..%s"
 msgstr "           %s..%s"
 
-#: src/readelf.c:6557
+#: src/readelf.c:6973 src/readelf.c:7858
 msgid "   <INVALID DATA>\n"
 msgstr "   <INVALID DATA>\n"
 
-#: src/readelf.c:6609
+#: src/readelf.c:7025 src/readelf.c:7186
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "cannot get macro information section data: %s"
 
-#: src/readelf.c:6688
+#: src/readelf.c:7104
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** non-terminated string at end of section"
 
-#: src/readelf.c:6756
+#: src/readelf.c:7127
+#, c-format
+msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
+msgstr "%*s*** missing DW_MACINFO_start_file argument at end of section"
+
+#: src/readelf.c:7227
+#, c-format
+msgid " Offset:             0x%<PRIx64>\n"
+msgstr " Offset:             0x%<PRIx64>\n"
+
+#: src/readelf.c:7239
+#, c-format
+msgid " Version:            %<PRIu16>\n"
+msgstr " Version:            %<PRIu16>\n"
+
+#: src/readelf.c:7245 src/readelf.c:7968
+#, c-format
+msgid "  unknown version, cannot parse section\n"
+msgstr "  unknown version, cannot parse section\n"
+
+#: src/readelf.c:7252
+#, c-format
+msgid " Flag:               0x%<PRIx8>\n"
+msgstr " Flag:               0x%<PRIx8>\n"
+
+#: src/readelf.c:7255
+#, c-format
+msgid " Offset length:      %<PRIu8>\n"
+msgstr " Offset length:      %<PRIu8>\n"
+
+#: src/readelf.c:7263
+#, c-format
+msgid " .debug_line offset: 0x%<PRIx64>\n"
+msgstr " .debug_line offset: 0x%<PRIx64>\n"
+
+#: src/readelf.c:7276
+#, c-format
+msgid "  extension opcode table, %<PRIu8> items:\n"
+msgstr "  extension opcode table, %<PRIu8> items:\n"
+
+#: src/readelf.c:7283
+#, c-format
+msgid "    [%<PRIx8>]"
+msgstr "    [%<PRIx8>]"
+
+#: src/readelf.c:7295
+#, c-format
+msgid " %<PRIu8> arguments:"
+msgstr " %<PRIu8> arguments:"
+
+#: src/readelf.c:7323
+#, c-format
+msgid " no arguments."
+msgstr " no arguments."
+
+#: src/readelf.c:7560
+#, c-format
+msgid "vendor opcode not verified?"
+msgstr "vendor opcode not verified?"
+
+#: src/readelf.c:7588
 #, 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:6796
+#: src/readelf.c:7629
 #, c-format
 msgid ""
 "\n"
@@ -5424,12 +5697,12 @@
 "DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
 " %*s  String\n"
 
-#: src/readelf.c:6810
+#: src/readelf.c:7643
 #, c-format
 msgid " *** error while reading strings: %s\n"
 msgstr " *** error while reading strings: %s\n"
 
-#: src/readelf.c:6830
+#: src/readelf.c:7663
 #, c-format
 msgid ""
 "\n"
@@ -5438,7 +5711,7 @@
 "\n"
 "Call frame search table section [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:6932
+#: src/readelf.c:7765
 #, c-format
 msgid ""
 "\n"
@@ -5447,22 +5720,22 @@
 "\n"
 "Exception handling table section [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:6955
+#: src/readelf.c:7788
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " LPStart encoding:    %#x "
 
-#: src/readelf.c:6967
+#: src/readelf.c:7800
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr " TType encoding:      %#x "
 
-#: src/readelf.c:6981
+#: src/readelf.c:7815
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr " Call site encoding:  %#x "
 
-#: src/readelf.c:6994
+#: src/readelf.c:7828
 msgid ""
 "\n"
 " Call site table:"
@@ -5470,7 +5743,7 @@
 "\n"
 " Call site table:"
 
-#: src/readelf.c:7008
+#: src/readelf.c:7842
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5483,12 +5756,12 @@
 "        Landing pad:       %#<PRIx64>\n"
 "        Action:            %u\n"
 
-#: src/readelf.c:7068
+#: src/readelf.c:7909
 #, c-format
 msgid "invalid TType encoding"
 msgstr "invalid TType encoding"
 
-#: src/readelf.c:7089
+#: src/readelf.c:7930
 #, c-format
 msgid ""
 "\n"
@@ -5497,42 +5770,37 @@
 "\n"
 "GDB section [%2zu] ‘%s’ at offset %#<PRIx64> contains %<PRId64> bytes :\n"
 
-#: src/readelf.c:7118
+#: src/readelf.c:7959
 #, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr " Version:         %<PRId32>\n"
 
-#: src/readelf.c:7124
-#, c-format
-msgid "  unknown version, cannot parse section\n"
-msgstr "  unknown version, cannot parse section\n"
-
-#: src/readelf.c:7133
+#: src/readelf.c:7977
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " CU offset:       %#<PRIx32>\n"
 
-#: src/readelf.c:7140
+#: src/readelf.c:7984
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " TU offset:       %#<PRIx32>\n"
 
-#: src/readelf.c:7147
+#: src/readelf.c:7991
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " address offset:  %#<PRIx32>\n"
 
-#: src/readelf.c:7154
+#: src/readelf.c:7998
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " symbol offset:   %#<PRIx32>\n"
 
-#: src/readelf.c:7161
+#: src/readelf.c:8005
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " constant offset: %#<PRIx32>\n"
 
-#: src/readelf.c:7168
+#: src/readelf.c:8012
 #, c-format
 msgid ""
 "\n"
@@ -5541,7 +5809,7 @@
 "\n"
 " CU list at offset %#<PRIx32> contains %zu entries:\n"
 
-#: src/readelf.c:7190
+#: src/readelf.c:8034
 #, c-format
 msgid ""
 "\n"
@@ -5550,7 +5818,7 @@
 "\n"
 " TU list at offset %#<PRIx32> contains %zu entries:\n"
 
-#: src/readelf.c:7216
+#: src/readelf.c:8060
 #, c-format
 msgid ""
 "\n"
@@ -5559,7 +5827,7 @@
 "\n"
 " Address list at offset %#<PRIx32> contains %zu entries:\n"
 
-#: src/readelf.c:7243
+#: src/readelf.c:8089
 #, c-format
 msgid ""
 "\n"
@@ -5568,17 +5836,17 @@
 "\n"
 " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
 
-#: src/readelf.c:7296
+#: src/readelf.c:8176
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "cannot get debug context descriptor: %s"
 
-#: src/readelf.c:7445 src/readelf.c:8046
+#: src/readelf.c:8336 src/readelf.c:8942 src/readelf.c:9053 src/readelf.c:9111
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "cannot convert core note data: %s"
 
-#: src/readelf.c:7786
+#: src/readelf.c:8683
 #, c-format
 msgid ""
 "\n"
@@ -5587,21 +5855,21 @@
 "\n"
 "%*s... <repeats %u more times> ..."
 
-#: src/readelf.c:8145
+#: src/readelf.c:9190
 msgid "  Owner          Data size  Type\n"
 msgstr "  Owner          Data size  Type\n"
 
-#: src/readelf.c:8163
+#: src/readelf.c:9208
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:8197
+#: src/readelf.c:9258
 #, c-format
 msgid "cannot get content of note section: %s"
 msgstr "cannot get content of note section: %s"
 
-#: src/readelf.c:8224
+#: src/readelf.c:9285
 #, c-format
 msgid ""
 "\n"
@@ -5610,7 +5878,7 @@
 "\n"
 "Note section [%2zu] ‘%s’ of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 
-#: src/readelf.c:8247
+#: src/readelf.c:9308
 #, c-format
 msgid ""
 "\n"
@@ -5619,7 +5887,7 @@
 "\n"
 "Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 
-#: src/readelf.c:8293
+#: src/readelf.c:9354
 #, c-format
 msgid ""
 "\n"
@@ -5628,12 +5896,12 @@
 "\n"
 "Section [%Zu] ‘%s’ has no data to dump.\n"
 
-#: src/readelf.c:8299 src/readelf.c:8322
+#: src/readelf.c:9360 src/readelf.c:9383
 #, c-format
 msgid "cannot get data for section [%Zu] '%s': %s"
 msgstr "cannot get data for section [%Zu] '%s': %s"
 
-#: src/readelf.c:8303
+#: src/readelf.c:9364
 #, c-format
 msgid ""
 "\n"
@@ -5642,7 +5910,7 @@
 "\n"
 "Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 
-#: src/readelf.c:8316
+#: src/readelf.c:9377
 #, c-format
 msgid ""
 "\n"
@@ -5651,7 +5919,7 @@
 "\n"
 "Section [%Zu] ‘%s’ has no strings to dump.\n"
 
-#: src/readelf.c:8326
+#: src/readelf.c:9387
 #, c-format
 msgid ""
 "\n"
@@ -5660,7 +5928,7 @@
 "\n"
 "String section [%Zu] ‘%s’ contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 
-#: src/readelf.c:8374
+#: src/readelf.c:9435
 #, c-format
 msgid ""
 "\n"
@@ -5669,7 +5937,7 @@
 "\n"
 "section [%lu] does not exist"
 
-#: src/readelf.c:8403
+#: src/readelf.c:9464
 #, c-format
 msgid ""
 "\n"
@@ -5678,12 +5946,12 @@
 "\n"
 "section ‘%s’ does not exist"
 
-#: src/readelf.c:8460
+#: src/readelf.c:9521
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "cannot get symbol index of archive '%s': %s"
 
-#: src/readelf.c:8463
+#: src/readelf.c:9524
 #, c-format
 msgid ""
 "\n"
@@ -5692,7 +5960,7 @@
 "\n"
 "Archive ‘%s’ has no symbol index\n"
 
-#: src/readelf.c:8467
+#: src/readelf.c:9528
 #, c-format
 msgid ""
 "\n"
@@ -5701,17 +5969,17 @@
 "\n"
 "Index of archive ‘%s’ has %Zu entries:\n"
 
-#: src/readelf.c:8485
+#: src/readelf.c:9546
 #, 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:8490
+#: src/readelf.c:9551
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Archive member ‘%s’ contains:\n"
 
-#: src/size.c:68
+#: src/size.c:60
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd' or `sysv'.  The default "
 "is `bsd'"
@@ -5719,80 +5987,80 @@
 "Use the output format FORMAT.  FORMAT can be ‘bsd’ or ‘sysv’.  The default "
 "is ‘bsd’"
 
-#: src/size.c:70
+#: src/size.c:62
 msgid "Same as `--format=sysv'"
 msgstr "Same as ‘--format=sysv’"
 
-#: src/size.c:71
+#: src/size.c:63
 msgid "Same as `--format=bsd'"
 msgstr "Same as ‘--format=bsd’"
 
-#: src/size.c:74
+#: src/size.c:66
 msgid "Same as `--radix=10'"
 msgstr "Same as ‘--radix=10’"
 
-#: src/size.c:75
+#: src/size.c:67
 msgid "Same as `--radix=8'"
 msgstr "Same as ‘--radix=8’"
 
-#: src/size.c:76
+#: src/size.c:68
 msgid "Same as `--radix=16'"
 msgstr "Same as ‘--radix=16’"
 
-#: src/size.c:78
+#: src/size.c:70
 msgid "Similar to `--format=sysv' output but in one line"
 msgstr "Similar to ‘--format=sysv’ output but in one line"
 
-#: src/size.c:82
+#: src/size.c:74
 msgid "Print size and permission flags for loadable segments"
 msgstr "Print size and permission flags for loadable segments"
 
-#: src/size.c:83
+#: src/size.c:75
 msgid "Display the total sizes (bsd only)"
 msgstr "Display the total sizes (bsd only)"
 
-#: src/size.c:88
+#: src/size.c:80
 msgid "List section sizes of FILEs (a.out by default)."
 msgstr "List section sizes of FILEs (a.out by default)."
 
-#: src/size.c:269
+#: src/size.c:261
 #, c-format
 msgid "Invalid format: %s"
 msgstr "Invalid format: %s"
 
-#: src/size.c:280
+#: src/size.c:272
 #, c-format
 msgid "Invalid radix: %s"
 msgstr "Invalid radix: %s"
 
-#: src/size.c:339
+#: src/size.c:331
 #, c-format
 msgid "%s: file format not recognized"
 msgstr "%s: file format not recognized"
 
-#: src/size.c:446 src/size.c:589
+#: src/size.c:437 src/size.c:570
 #, c-format
 msgid " (ex %s)"
 msgstr " (ex %s)"
 
-#: src/size.c:614
+#: src/size.c:595
 msgid "(TOTALS)\n"
 msgstr "(TOTALS)\n"
 
-#: src/strings.c:70
+#: src/strings.c:62
 msgid "Output Selection:"
 msgstr "Output Selection:"
 
-#: src/strings.c:71
+#: src/strings.c:63
 msgid "Scan entire file, not only loaded sections"
 msgstr "Scan entire file, not only loaded sections"
 
-#: src/strings.c:73
+#: src/strings.c:65
 msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 msgstr ""
 "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 
-#: src/strings.c:74
+#: src/strings.c:66
 msgid ""
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
@@ -5800,72 +6068,72 @@
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
 
-#: src/strings.c:78
+#: src/strings.c:70
 msgid "Print name of the file before each string."
 msgstr "Print name of the file before each string."
 
-#: src/strings.c:80
+#: src/strings.c:72
 msgid "Print location of the string in base 8, 10, or 16 respectively."
 msgstr "Print location of the string in base 8, 10, or 16 respectively."
 
-#: src/strings.c:81
+#: src/strings.c:73
 msgid "Alias for --radix=o"
 msgstr "Alias for --radix=o"
 
-#: src/strings.c:88
+#: src/strings.c:80
 msgid "Print the strings of printable characters in files."
 msgstr "Print the strings of printable characters in files."
 
-#: src/strings.c:268 src/strings.c:303
+#: 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:314
+#: 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:599
+#: src/strings.c:596
 #, c-format
 msgid "lseek64 failed"
 msgstr "lseek64 failed"
 
-#: src/strings.c:616 src/strings.c:680
+#: src/strings.c:613 src/strings.c:677
 #, c-format
 msgid "re-mmap failed"
 msgstr "re-mmap failed"
 
-#: src/strings.c:653
+#: src/strings.c:650
 #, c-format
 msgid "mprotect failed"
 msgstr "mprotect failed"
 
-#: src/strip.c:77
+#: src/strip.c:69
 msgid "Place stripped output into FILE"
 msgstr "Place stripped output into FILE"
 
-#: src/strip.c:78
+#: src/strip.c:70
 msgid "Extract the removed sections into FILE"
 msgstr "Extract the removed sections into FILE"
 
-#: src/strip.c:79
+#: src/strip.c:71
 msgid "Embed name FILE instead of -f argument"
 msgstr "Embed name FILE instead of -f argument"
 
-#: src/strip.c:83
+#: src/strip.c:75
 msgid "Remove all debugging symbols"
 msgstr "Remove all debugging symbols"
 
-#: src/strip.c:87
+#: src/strip.c:79
 msgid "Remove section headers (not recommended)"
 msgstr "Remove section headers (not recommended)"
 
-#: src/strip.c:89
+#: src/strip.c:81
 msgid "Copy modified/access timestamps to the output"
 msgstr "Copy modified/access timestamps to the output"
 
-#: src/strip.c:91
+#: src/strip.c:83
 msgid ""
 "Resolve all trivial relocations between debug sections if the removed "
 "sections are placed in a debug file (only relevant for ET_REL files, "
@@ -5875,434 +6143,467 @@
 "sections are placed in a debug file (only relevant for ET_REL files, "
 "operation is not reversable, needs -f)"
 
-#: src/strip.c:93
+#: src/strip.c:85
 msgid "Remove .comment section"
 msgstr "Remove .comment section"
 
-#: src/strip.c:96
+#: src/strip.c:88
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr "Relax a few rules to handle slightly broken ELF files"
 
-#: src/strip.c:101
+#: src/strip.c:93
 msgid "Discard symbols from object files."
 msgstr "Discard symbols from object files."
 
-#: src/strip.c:189
+#: src/strip.c:181
 #, c-format
 msgid "--reloc-debug-sections used without -f"
 msgstr "--reloc-debug-sections used without -f"
 
-#: src/strip.c:203
+#: src/strip.c:195
 #, c-format
 msgid "Only one input file allowed together with '-o' and '-f'"
 msgstr "Only one input file allowed together with ‘-o’ and ‘-f’"
 
-#: src/strip.c:239
+#: src/strip.c:231
 #, c-format
 msgid "-f option specified twice"
 msgstr "-f option specified twice"
 
-#: src/strip.c:248
+#: src/strip.c:240
 #, c-format
 msgid "-F option specified twice"
 msgstr "-F option specified twice"
 
-#: src/strip.c:257 src/unstrip.c:125
+#: src/strip.c:249 src/unstrip.c:121
 #, c-format
 msgid "-o option specified twice"
 msgstr "-o option specified twice"
 
-#: src/strip.c:281
+#: src/strip.c:273
 #, c-format
 msgid "-R option supports only .comment section"
 msgstr "-R option supports only .comment section"
 
-#: src/strip.c:323 src/strip.c:347
+#: src/strip.c:315 src/strip.c:339
 #, c-format
 msgid "cannot stat input file '%s'"
 msgstr "cannot stat input file ‘%s’"
 
-#: src/strip.c:337
+#: src/strip.c:329
 #, c-format
 msgid "while opening '%s'"
 msgstr "while opening ‘%s’"
 
-#: src/strip.c:375
+#: src/strip.c:367
 #, c-format
 msgid "%s: cannot use -o or -f when stripping archive"
 msgstr "%s: cannot use -o or -f when stripping archive"
 
-#: src/strip.c:475
+#: src/strip.c:468
 #, c-format
 msgid "cannot open EBL backend"
 msgstr "cannot open EBL backend"
 
-#: src/strip.c:525 src/strip.c:549
+#: src/strip.c:508
+#, c-format
+msgid "cannot get number of phdrs"
+msgstr "cannot get number of phdrs"
+
+#: src/strip.c:523 src/strip.c:547
 #, c-format
 msgid "cannot create new file '%s': %s"
 msgstr "cannot create new file '%s': %s"
 
-#: src/strip.c:609
+#: src/strip.c:613
 #, c-format
 msgid "illformed file '%s'"
 msgstr "illformed file ‘%s’"
 
-#: src/strip.c:913 src/strip.c:1002
+#: src/strip.c:935 src/strip.c:1024
 #, c-format
 msgid "while generating output file: %s"
 msgstr "while generating output file: %s"
 
-#: src/strip.c:975 src/strip.c:1937
+#: src/strip.c:997 src/strip.c:1962
 #, c-format
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: error while creating ELF header: %s"
 
-#: src/strip.c:989
+#: src/strip.c:1011
 #, c-format
 msgid "while preparing output for '%s'"
 msgstr "while preparing output for ‘%s’"
 
-#: src/strip.c:1040 src/strip.c:1096
+#: src/strip.c:1062 src/strip.c:1119
 #, c-format
 msgid "while create section header section: %s"
 msgstr "while create section header section: %s"
 
-#: src/strip.c:1046
+#: src/strip.c:1068
 #, c-format
 msgid "cannot allocate section data: %s"
 msgstr "cannot allocate section data: %s"
 
-#: src/strip.c:1105
+#: src/strip.c:1128
 #, c-format
 msgid "while create section header string table: %s"
 msgstr "while create section header string table: %s"
 
-#: src/strip.c:1732
+#: src/strip.c:1757
 #, c-format
 msgid "bad relocation"
 msgstr "bad relocation"
 
-#: src/strip.c:1849 src/strip.c:1959
+#: src/strip.c:1874 src/strip.c:1984
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "while writing '%s': %s"
 
-#: src/strip.c:1860
+#: src/strip.c:1885
 #, c-format
 msgid "while creating '%s'"
 msgstr "while creating ‘%s’"
 
-#: src/strip.c:1882
+#: src/strip.c:1907
 #, c-format
 msgid "while computing checksum for debug information"
 msgstr "while computing checksum for debug information"
 
-#: src/strip.c:1945
+#: src/strip.c:1970
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: error while reading the file: %s"
 
-#: src/strip.c:1984 src/strip.c:2004
+#: src/strip.c:2009 src/strip.c:2029
 #, c-format
 msgid "while writing '%s'"
 msgstr "while writing ‘%s’"
 
-#: src/strip.c:2038 src/strip.c:2045
+#: src/strip.c:2066 src/strip.c:2073
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "error while finishing '%s': %s"
 
-#: src/strip.c:2068 src/strip.c:2125
+#: src/strip.c:2096 src/strip.c:2153
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "cannot set access and modification date of ‘%s’"
 
-#: src/unstrip.c:78
+#: src/unstrip.c:70
 msgid "Match MODULE against file names, not module names"
 msgstr "Match MODULE against file names, not module names"
 
-#: src/unstrip.c:79
+#: src/unstrip.c:71
 msgid "Silently skip unfindable files"
 msgstr "Silently skip unfindable files"
 
-#: src/unstrip.c:82
+#: src/unstrip.c:74
 msgid "Place output into FILE"
 msgstr "Place output into FILE"
 
-#: src/unstrip.c:84
+#: src/unstrip.c:76
 msgid "Create multiple output files under DIRECTORY"
 msgstr "Create multiple output files under DIRECTORY"
 
-#: src/unstrip.c:85
+#: src/unstrip.c:77
 msgid "Use module rather than file names"
 msgstr "Use module rather than file names"
 
-#: src/unstrip.c:87
+#: src/unstrip.c:79
 msgid "Create output for modules that have no separate debug information"
 msgstr "Create output for modules that have no separate debug information"
 
-#: src/unstrip.c:90
+#: src/unstrip.c:82
 msgid "Apply relocations to section contents in ET_REL files"
 msgstr "Apply relocations to section contents in ET_REL files"
 
-#: src/unstrip.c:92
+#: src/unstrip.c:84
 msgid "Only list module and file names, build IDs"
 msgstr "Only list module and file names, build IDs"
 
-#: src/unstrip.c:134
+#: 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:166
+#: 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:175
+#: 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:190
+#: src/unstrip.c:189
 #, c-format
 msgid "output directory '%s'"
 msgstr "output directory ‘%s’"
 
-#: src/unstrip.c:199
+#: src/unstrip.c:198
 #, c-format
 msgid "exactly two file arguments are required"
 msgstr "exactly two file arguments are required"
 
-#: src/unstrip.c:205
+#: 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:218
+#: 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:254
+#: src/unstrip.c:253
 #, c-format
 msgid "cannot create ELF header: %s"
 msgstr "cannot create ELF header: %s"
 
-#: src/unstrip.c:259
+#: src/unstrip.c:258
 #, c-format
 msgid "cannot copy ELF header: %s"
 msgstr "cannot copy ELF header: %s"
 
-#: src/unstrip.c:264 src/unstrip.c:1828
+#: src/unstrip.c:262 src/unstrip.c:1832 src/unstrip.c:1876
+#, c-format
+msgid "cannot get number of program headers: %s"
+msgstr "cannot get number of program headers: %s"
+
+#: src/unstrip.c:267 src/unstrip.c:1836
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "cannot create program headers: %s"
 
-#: src/unstrip.c:270
+#: src/unstrip.c:273
 #, c-format
 msgid "cannot copy program header: %s"
 msgstr "cannot copy program header: %s"
 
-#: src/unstrip.c:280
+#: src/unstrip.c:283
 #, c-format
 msgid "cannot copy section header: %s"
 msgstr "cannot copy section header: %s"
 
-#: src/unstrip.c:283 src/unstrip.c:1509
+#: src/unstrip.c:286 src/unstrip.c:1513
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "cannot get section data: %s"
 
-#: src/unstrip.c:285 src/unstrip.c:1511
+#: src/unstrip.c:288 src/unstrip.c:1515
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "cannot copy section data: %s"
 
-#: src/unstrip.c:309
+#: src/unstrip.c:312
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "cannot create directory ‘%s’"
 
-#: src/unstrip.c:349 src/unstrip.c:766 src/unstrip.c:1543
+#: src/unstrip.c:352 src/unstrip.c:769 src/unstrip.c:1547
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "cannot get symbol table entry: %s"
 
-#: src/unstrip.c:365 src/unstrip.c:583 src/unstrip.c:604 src/unstrip.c:616
-#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
+#: src/unstrip.c:368 src/unstrip.c:586 src/unstrip.c:607 src/unstrip.c:619
+#: src/unstrip.c:1568 src/unstrip.c:1698 src/unstrip.c:1722
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "cannot update symbol table: %s"
 
-#: src/unstrip.c:375
+#: src/unstrip.c:378
 #, c-format
 msgid "cannot update section header: %s"
 msgstr "cannot update section header: %s"
 
-#: src/unstrip.c:414 src/unstrip.c:425
+#: src/unstrip.c:417 src/unstrip.c:428
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr "cannot update relocation: %s"
 
-#: src/unstrip.c:512
+#: src/unstrip.c:515
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr "cannot get symbol version: %s"
 
-#: src/unstrip.c:524
+#: src/unstrip.c:527
 #, 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:772
+#: src/unstrip.c:775
 #, c-format
 msgid "invalid string offset in symbol [%Zu]"
 msgstr "invalid string offset in symbol [%Zu]"
 
-#: src/unstrip.c:914 src/unstrip.c:1254
+#: src/unstrip.c:917 src/unstrip.c:1258
 #, c-format
 msgid "cannot read section [%Zu] name: %s"
 msgstr "cannot read section [%Zu] name: %s"
 
-#: src/unstrip.c:955 src/unstrip.c:974 src/unstrip.c:1007
+#: src/unstrip.c:958 src/unstrip.c:977 src/unstrip.c:1010
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr "cannot read ‘.gnu.prelink_undo’ section: %s"
 
-#: src/unstrip.c:995
+#: src/unstrip.c:998
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr "invalid contents in ‘%s’ section"
 
-#: src/unstrip.c:1050 src/unstrip.c:1374
+#: src/unstrip.c:1053 src/unstrip.c:1378
 #, c-format
 msgid "cannot find matching section for [%Zu] '%s'"
 msgstr "cannot find matching section for [%Zu] ‘%s’"
 
-#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
+#: src/unstrip.c:1178 src/unstrip.c:1193 src/unstrip.c:1459
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr "cannot add section name to string table: %s"
 
-#: src/unstrip.c:1198
+#: src/unstrip.c:1202
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr "cannot update section header string table data: %s"
 
-#: src/unstrip.c:1225 src/unstrip.c:1229
+#: src/unstrip.c:1229 src/unstrip.c:1233
 #, 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:1233 src/unstrip.c:1237 src/unstrip.c:1470
+#: src/unstrip.c:1237 src/unstrip.c:1241 src/unstrip.c:1474
 #, c-format
 msgid "cannot get section count: %s"
 msgstr "cannot get section count: %s"
 
-#: src/unstrip.c:1240
+#: src/unstrip.c:1244
 #, 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:1299 src/unstrip.c:1389
+#: src/unstrip.c:1303 src/unstrip.c:1393
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr "cannot read section header string table: %s"
 
-#: src/unstrip.c:1449
+#: src/unstrip.c:1453
 #, c-format
 msgid "cannot add new section: %s"
 msgstr "cannot add new section: %s"
 
-#: src/unstrip.c:1551
+#: src/unstrip.c:1555
 #, c-format
 msgid "symbol [%Zu] has invalid section index"
 msgstr "symbol [%Zu] has invalid section index"
 
-#: src/unstrip.c:1789
+#: src/unstrip.c:1793
 #, c-format
 msgid "cannot read section data: %s"
 msgstr "cannot read section data: %s"
 
-#: src/unstrip.c:1810
+#: src/unstrip.c:1814
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr "cannot get ELF header: %s"
 
-#: src/unstrip.c:1838
+#: src/unstrip.c:1846
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "cannot update program header: %s"
 
-#: src/unstrip.c:1843 src/unstrip.c:1922
+#: src/unstrip.c:1851 src/unstrip.c:1934
 #, c-format
 msgid "cannot write output file: %s"
 msgstr "cannot write output file: %s"
 
-#: src/unstrip.c:1891
+#: src/unstrip.c:1903
 #, 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:1894
+#: src/unstrip.c:1906
 #, 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:1913 src/unstrip.c:1953 src/unstrip.c:1965 src/unstrip.c:2045
+#: src/unstrip.c:1925 src/unstrip.c:1976 src/unstrip.c:1988 src/unstrip.c:2074
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr "cannot create ELF descriptor: %s"
 
-#: src/unstrip.c:1971
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "‘%s’ and ‘%s’ do not seem to match"
+#: src/unstrip.c:1967
+msgid "WARNING: "
+msgstr "WARNING: "
 
-#: src/unstrip.c:2002
+#: src/unstrip.c:1969
+msgid ", use --force"
+msgstr ", use --force"
+
+#: src/unstrip.c:1992
+msgid "ELF header identification (e_ident) different"
+msgstr "ELF header identification (e_ident) different"
+
+#: src/unstrip.c:1995
+msgid "ELF header type (e_type) different"
+msgstr "ELF header type (e_type) different"
+
+#: src/unstrip.c:1998
+msgid "ELF header machine type (e_machine) different"
+msgstr "ELF header machine type (e_machine) different"
+
+#: src/unstrip.c:2001
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr "stripped program header (e_phnum) smaller than unstripped"
+
+#: src/unstrip.c:2031
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr "cannot find stripped file for module '%s': %s"
 
-#: src/unstrip.c:2006
+#: src/unstrip.c:2035
 #, 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:2021
+#: src/unstrip.c:2050
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr "cannot find debug file for module '%s': %s"
 
-#: src/unstrip.c:2025
+#: src/unstrip.c:2054
 #, 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:2038
+#: src/unstrip.c:2067
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr "module ‘%s’ file ‘%s’ is not stripped"
 
-#: src/unstrip.c:2069
+#: src/unstrip.c:2098
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr "cannot cache section addresses for module '%s': %s"
 
-#: src/unstrip.c:2202
+#: src/unstrip.c:2231
 #, c-format
 msgid "no matching modules found"
 msgstr "no matching modules found"
 
-#: src/unstrip.c:2211
+#: src/unstrip.c:2240
 #, c-format
 msgid "matched more than one module"
 msgstr "matched more than one module"
 
-#: src/unstrip.c:2258
+#: src/unstrip.c:2287
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
@@ -6310,7 +6611,7 @@
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 
-#: src/unstrip.c:2259
+#: src/unstrip.c:2288
 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"
diff --git a/src/po/es.gmo b/src/po/es.gmo
index bc9b4b8..9533199 100644
--- a/src/po/es.gmo
+++ b/src/po/es.gmo
Binary files differ
diff --git a/src/po/es.po b/src/po/es.po
index 89ca50d..c3682bd 100644
--- a/src/po/es.po
+++ b/src/po/es.po
@@ -10,12 +10,12 @@
 msgstr ""
 "Project-Id-Version: elfutils.master.es\n"
 "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-02-16 13:21+0100\n"
+"POT-Creation-Date: 2014-12-19 21:45+0100\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"
@@ -24,210 +24,219 @@
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Poedit-Country: ARGENTINA\n"
 
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2844
-#: src/readelf.c:3183 src/unstrip.c:2098 src/unstrip.c:2306
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3182
+#: src/readelf.c:3559 src/readelf.c:8285 src/unstrip.c:2127 src/unstrip.c:2335
 #, c-format
 msgid "memory exhausted"
 msgstr "memoria agotada"
 
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
+#: 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:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
+#: 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"
 
-#: libasm/asm_error.c:64 src/ldgeneric.c:2685
+#: libasm/asm_error.c:67 src/ldgeneric.c:2677
 #, c-format
 msgid "cannot create output file"
 msgstr "no se puede crear el archivo de salida"
 
-#: libasm/asm_error.c:65
+#: libasm/asm_error.c:68
 msgid "invalid parameter"
 msgstr "Parámetro inválido"
 
-#: libasm/asm_error.c:66
+#: libasm/asm_error.c:69
 msgid "cannot change mode of output file"
 msgstr "no sepuede cambiar modo de archivo de salida"
 
-#: libasm/asm_error.c:67 src/ldgeneric.c:6998
+#: libasm/asm_error.c:70 src/ldgeneric.c:6990
 #, c-format
 msgid "cannot rename output file"
 msgstr "no se puede renombrar el archivo de salida"
 
-#: libasm/asm_error.c:68
+#: libasm/asm_error.c:71
 msgid "duplicate symbol"
 msgstr "Duplicar símbolo"
 
-#: libasm/asm_error.c:69
+#: libasm/asm_error.c:72
 msgid "invalid section type for operation"
 msgstr "tipo de sección inválido para operación"
 
-#: libasm/asm_error.c:70
+#: libasm/asm_error.c:73
 msgid "error during output of data"
 msgstr "error durante salida de datos"
 
-#: libasm/asm_error.c:71
+#: libasm/asm_error.c:74
 msgid "no backend support available"
 msgstr "No hay soporte de segundo plano"
 
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
+#: 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"
 
-#: libdw/dwarf_error.c:81
+#: libdw/dwarf_error.c:60
 msgid "invalid access"
 msgstr "Acceso inválido"
 
-#: libdw/dwarf_error.c:82
+#: libdw/dwarf_error.c:61
 msgid "no regular file"
 msgstr "no es un archivo regular"
 
-#: libdw/dwarf_error.c:83
+#: libdw/dwarf_error.c:62
 msgid "I/O error"
 msgstr "Error de E/S"
 
-#: libdw/dwarf_error.c:84
+#: libdw/dwarf_error.c:63
 msgid "invalid ELF file"
 msgstr "Archivo ELF inválido"
 
-#: libdw/dwarf_error.c:85
+#: libdw/dwarf_error.c:64
 msgid "no DWARF information"
 msgstr "Sin información de DWARF"
 
-#: libdw/dwarf_error.c:86
+#: libdw/dwarf_error.c:65
 msgid "no ELF file"
 msgstr "No hay archivo ELF"
 
-#: libdw/dwarf_error.c:87
+#: libdw/dwarf_error.c:66
 msgid "cannot get ELF header"
 msgstr "no se puede obtener el encabezamiento ELF"
 
-#: libdw/dwarf_error.c:89
+#: libdw/dwarf_error.c:68
 msgid "not implemented"
 msgstr "sin implementar"
 
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
+#: libdw/dwarf_error.c:69 libelf/elf_error.c:107 libelf/elf_error.c:155
 msgid "invalid command"
 msgstr "comando inválido"
 
-#: libdw/dwarf_error.c:91
+#: libdw/dwarf_error.c:70
 msgid "invalid version"
 msgstr "versión inválida"
 
-#: libdw/dwarf_error.c:92
+#: libdw/dwarf_error.c:71
 msgid "invalid file"
 msgstr "Archivo inválido"
 
-#: libdw/dwarf_error.c:93
+#: libdw/dwarf_error.c:72
 msgid "no entries found"
 msgstr "No se hallaron entradas"
 
-#: libdw/dwarf_error.c:94
+#: libdw/dwarf_error.c:73
 msgid "invalid DWARF"
 msgstr "DWARF inválido"
 
-#: libdw/dwarf_error.c:95
+#: libdw/dwarf_error.c:74
 msgid "no string data"
 msgstr "no hay datos de cadena"
 
-#: libdw/dwarf_error.c:96
+#: libdw/dwarf_error.c:75
 msgid "no address value"
 msgstr "no hay valor de dirección"
 
-#: libdw/dwarf_error.c:97
+#: libdw/dwarf_error.c:76
 msgid "no constant value"
 msgstr "no hay valor constante"
 
-#: libdw/dwarf_error.c:98
+#: libdw/dwarf_error.c:77
 msgid "no reference value"
 msgstr "no hay valor de referencia"
 
-#: libdw/dwarf_error.c:99
+#: libdw/dwarf_error.c:78
 msgid "invalid reference value"
 msgstr "valor de la referencia inválido"
 
-#: libdw/dwarf_error.c:100
+#: libdw/dwarf_error.c:79
 msgid ".debug_line section missing"
 msgstr ".debug_line section faltante"
 
-#: libdw/dwarf_error.c:101
+#: libdw/dwarf_error.c:80
 msgid "invalid .debug_line section"
 msgstr ".debug_line section inválida"
 
-#: libdw/dwarf_error.c:102
+#: libdw/dwarf_error.c:81
 msgid "debug information too big"
 msgstr "información de depuración muy grande"
 
-#: libdw/dwarf_error.c:103
+#: libdw/dwarf_error.c:82
 msgid "invalid DWARF version"
 msgstr "versión DWARF inválida"
 
-#: libdw/dwarf_error.c:104
+#: libdw/dwarf_error.c:83
 msgid "invalid directory index"
 msgstr "Índice de directorio inválido"
 
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
 msgid "address out of range"
 msgstr "dirección fuera de rango"
 
-#: libdw/dwarf_error.c:106
+#: libdw/dwarf_error.c:85
 msgid "no location list value"
 msgstr "valor de lista sin ubicación"
 
-#: libdw/dwarf_error.c:107
+#: libdw/dwarf_error.c:86
 msgid "no block data"
 msgstr "sin datos de bloque "
 
-#: libdw/dwarf_error.c:108
+#: libdw/dwarf_error.c:87
 msgid "invalid line index"
 msgstr "Índice de línea inválido"
 
-#: libdw/dwarf_error.c:109
+#: libdw/dwarf_error.c:88
 msgid "invalid address range index"
 msgstr "Índice de dirección de rango inválido"
 
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
 msgid "no matching address range"
 msgstr "dirección de rango no coincidente"
 
-#: libdw/dwarf_error.c:111
+#: libdw/dwarf_error.c:90
 msgid "no flag value"
 msgstr "sin valor de bandera"
 
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
+#: libdw/dwarf_error.c:91 libelf/elf_error.c:232
 msgid "invalid offset"
 msgstr "desplazamiento inválido"
 
-#: libdw/dwarf_error.c:113
+#: libdw/dwarf_error.c:92
 msgid ".debug_ranges section missing"
 msgstr ".debug_ranges section faltante"
 
-#: libdw/dwarf_error.c:114
+#: libdw/dwarf_error.c:93
 msgid "invalid CFI section"
 msgstr "sección CFI inválida"
 
-#: libdwfl/argp-std.c:67 src/unstrip.c:2248
+#: libdw/dwarf_error.c:94
+msgid "no alternative debug link found"
+msgstr ""
+
+#: libdw/dwarf_error.c:95
+#, fuzzy
+msgid "invalid opcode"
+msgstr "operando inválido"
+
+#: libdwfl/argp-std.c:46 src/unstrip.c:2277
 msgid "Input selection options:"
 msgstr "Opciones de selección de entrada:"
 
-#: libdwfl/argp-std.c:68
+#: libdwfl/argp-std.c:47
 msgid "Find addresses in FILE"
 msgstr "Hallar direcciones en FICHERO"
 
-#: libdwfl/argp-std.c:70
+#: libdwfl/argp-std.c:49
 msgid "Find addresses from signatures found in COREFILE"
 msgstr "Buscar direcciones desde firmas encontradas en COREFILE"
 
-#: libdwfl/argp-std.c:72
+#: libdwfl/argp-std.c:51
 msgid "Find addresses in files mapped into process PID"
 msgstr "Busca direcciones en archivos mapeados sobre procesos PID"
 
-#: libdwfl/argp-std.c:74
+#: libdwfl/argp-std.c:53
 msgid ""
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
@@ -235,415 +244,486 @@
 "Busca direcciones en archivos asignados como leídos desde FILE en formato "
 "Linux /proc/PID/maps"
 
-#: libdwfl/argp-std.c:76
+#: libdwfl/argp-std.c:55
 msgid "Find addresses in the running kernel"
 msgstr "Busca direcciones en el kernel que está ejecutándose"
 
-#: libdwfl/argp-std.c:78
+#: libdwfl/argp-std.c:57
 msgid "Kernel with all modules"
 msgstr "Kernel con todos los módulos"
 
-#: libdwfl/argp-std.c:80
+#: libdwfl/argp-std.c:59
 msgid "Search path for separate debuginfo files"
 msgstr "Ruta de búsqueda para archivos debugingfo independientes"
 
-#: libdwfl/argp-std.c:163
+#: 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:223
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
+msgstr "No se pueden cargar símbolos de kernel"
+
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
+msgstr "no se pueden hallar módulos de kernel"
+
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
+msgstr "imposible encontrar kernel o módulos"
+
+#: 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:241
+#: libdwfl/argp-std.c:311
 msgid "No modules recognized in core file"
 msgstr "No hay módulos reconocidos en el archivo core"
 
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr "No se pueden cargar símbolos de kernel"
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr "no se pueden hallar módulos de kernel"
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr "imposible encontrar kernel o módulos"
-
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:56
 msgid "See errno"
 msgstr "Ve errno"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:57
 msgid "See elf_errno"
 msgstr "Ver elf_errno"
 
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:58
 msgid "See dwarf_errno"
 msgstr "Ver dwarf_errno"
 
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:59
 msgid "See ebl_errno (XXX missing)"
 msgstr "Ver ebl_errno (no se encuentra XXX)"
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:60
 msgid "gzip decompression failed"
 msgstr "falló la descompresión gzip"
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:61
 msgid "bzip2 decompression failed"
 msgstr "falló la descompresión bzip2"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:62
 msgid "LZMA decompression failed"
 msgstr "falló la descompresión LZMA"
 
-#: libdwfl/libdwflP.h:80
+#: 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:81
+#: libdwfl/libdwflP.h:64
 msgid "Callbacks missing for ET_REL file"
 msgstr "No se encuentran rellamadas para el archivo ET_REL"
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:65
 msgid "Unsupported relocation type"
 msgstr "Tipo de reubicación no soportada"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:66
 msgid "r_offset is bogus"
 msgstr "r_offset se encuentra inutilizable"
 
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
+#: 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:85
+#: 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:86
+#: libdwfl/libdwflP.h:69
 msgid "Callback returned failure"
 msgstr "La rellamada devolvió un fallo"
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:70
 msgid "No DWARF information found"
 msgstr "No se ha encontrado una información DWARF"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:71
 msgid "No symbol table found"
 msgstr "No se ha encontrado una tabla simbólica"
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:72
 msgid "No ELF program headers"
 msgstr "No existen encabezados de programa ELF"
 
-#: libdwfl/libdwflP.h:90
+#: 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:93
+#: libdwfl/libdwflP.h:76
 msgid "image truncated"
 msgstr "imagen truncada"
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:77
 msgid "ELF file opened"
 msgstr "Archivo ELF abierto"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:78
 msgid "not a valid ELF file"
 msgstr "no es un archivo ELF válido"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:79
 msgid "cannot handle DWARF type description"
 msgstr "no es posible manipular tipo de descripción DWARF"
 
-#: libdwfl/libdwflP.h:97
+#: 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:98
+#: libdwfl/libdwflP.h:81
 #, fuzzy
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "no se puede leer sección '.gnu.prelink_undo': %s"
 
-#: libebl/eblbackendname.c:63
+#: 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:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:94 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
+#: 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 "<unknown>"
 msgstr "<desconocido>"
 
-#: libebl/ebldynamictagname.c:126
+#: libebl/ebldynamictagname.c:105
 #, c-format
 msgid "<unknown>: %#<PRIx64>"
 msgstr "<desconocido>: %#<PRIx64>"
 
-#: libebl/eblobjnote.c:76
+#: libebl/eblobjnote.c:55
 #, fuzzy, c-format
 msgid "unknown SDT version %u\n"
 msgstr "versión desconocida"
 
-#: libebl/eblobjnote.c:94
+#: libebl/eblobjnote.c:73
 #, fuzzy, c-format
 msgid "invalid SDT probe descriptor\n"
 msgstr "descriptor de archivo inválido"
 
-#: libebl/eblobjnote.c:144
+#: libebl/eblobjnote.c:123
 #, c-format
 msgid "    PC: "
 msgstr ""
 
-#: libebl/eblobjnote.c:146
+#: libebl/eblobjnote.c:125
 #, c-format
 msgid " Base: "
 msgstr ""
 
-#: libebl/eblobjnote.c:148
+#: libebl/eblobjnote.c:127
 #, c-format
 msgid " Semaphore: "
 msgstr ""
 
-#: libebl/eblobjnote.c:150
+#: libebl/eblobjnote.c:129
 #, c-format
 msgid "    Provider: "
 msgstr ""
 
-#: libebl/eblobjnote.c:152
+#: libebl/eblobjnote.c:131
 #, c-format
 msgid " Name: "
 msgstr ""
 
-#: libebl/eblobjnote.c:154
+#: libebl/eblobjnote.c:133
 #, c-format
 msgid " Args: "
 msgstr ""
 
-#: libebl/eblobjnote.c:164
+#: libebl/eblobjnote.c:143
 #, c-format
 msgid "    Build ID: "
 msgstr "    Build ID: "
 
-#: libebl/eblobjnote.c:175
+#: libebl/eblobjnote.c:154
 #, c-format
 msgid "    Linker version: %.*s\n"
 msgstr "    Versión del Enlazador: %.*s\n"
 
-#: libebl/eblobjnote.c:224
+#: libebl/eblobjnote.c:203
 #, c-format
 msgid "    OS: %s, ABI: "
 msgstr "    OS: %s, ABI: "
 
-#: libebl/eblosabiname.c:95
+#: libebl/eblosabiname.c:74
 msgid "Stand alone"
 msgstr "Autónomo"
 
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
+#: libebl/eblsymbolbindingname.c:71 libebl/eblsymboltypename.c:77
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<desconocido>: %d"
 
-#: libelf/elf_error.c:88
+#: libelf/elf_error.c:67
 msgid "unknown version"
 msgstr "versión desconocida"
 
-#: libelf/elf_error.c:92
+#: libelf/elf_error.c:71
 msgid "unknown type"
 msgstr "tipo desconocido"
 
-#: libelf/elf_error.c:96
+#: libelf/elf_error.c:75
 msgid "invalid `Elf' handle"
 msgstr "manejo`ELF' inválido"
 
-#: libelf/elf_error.c:100
+#: libelf/elf_error.c:79
 msgid "invalid size of source operand"
 msgstr "tamaño inválido del operando fuente"
 
-#: libelf/elf_error.c:104
+#: libelf/elf_error.c:83
 msgid "invalid size of destination operand"
 msgstr "tamaño inválido del operando destino"
 
-#: libelf/elf_error.c:108 src/readelf.c:5176
+#: libelf/elf_error.c:87 src/readelf.c:5367
 #, c-format
 msgid "invalid encoding"
 msgstr "codificación inválida"
 
-#: libelf/elf_error.c:116
+#: libelf/elf_error.c:95
 msgid "invalid file descriptor"
 msgstr "descriptor de archivo inválido"
 
-#: libelf/elf_error.c:120
+#: libelf/elf_error.c:99
 msgid "invalid operation"
 msgstr "operación inválida"
 
-#: libelf/elf_error.c:124
+#: libelf/elf_error.c:103
 msgid "ELF version not set"
 msgstr "no se estableció la versión de ELF"
 
-#: libelf/elf_error.c:136
+#: libelf/elf_error.c:115
 msgid "invalid fmag field in archive header"
 msgstr "campo fmag no válido en el encabezamiento del archivo"
 
-#: libelf/elf_error.c:140
+#: libelf/elf_error.c:119
 msgid "invalid archive file"
 msgstr "fichero de archivo inválido"
 
-#: libelf/elf_error.c:144
+#: libelf/elf_error.c:123
 msgid "descriptor is not for an archive"
 msgstr "el descriptor no es de un archivo"
 
-#: libelf/elf_error.c:148
+#: libelf/elf_error.c:127
 msgid "no index available"
 msgstr "no hay índice disponible"
 
-#: libelf/elf_error.c:152
+#: libelf/elf_error.c:131
 msgid "cannot read data from file"
 msgstr "no se pueden leer los datos del archivo"
 
-#: libelf/elf_error.c:156
+#: libelf/elf_error.c:135
 msgid "cannot write data to file"
 msgstr "no se puede escribir los datos al archivo"
 
-#: libelf/elf_error.c:160
+#: libelf/elf_error.c:139
 msgid "invalid binary class"
 msgstr "clase de binario inválida"
 
-#: libelf/elf_error.c:164
+#: libelf/elf_error.c:143
 msgid "invalid section index"
 msgstr "índice de sección inválido"
 
-#: libelf/elf_error.c:168
+#: libelf/elf_error.c:147
 msgid "invalid operand"
 msgstr "operando inválido"
 
-#: libelf/elf_error.c:172
+#: libelf/elf_error.c:151
 msgid "invalid section"
 msgstr "sección inválida"
 
-#: libelf/elf_error.c:180
+#: libelf/elf_error.c:159
 msgid "executable header not created first"
 msgstr "no se ha creado primero el encabezamiento ejecutable"
 
-#: libelf/elf_error.c:184
+#: libelf/elf_error.c:163
 msgid "file descriptor disabled"
 msgstr "descriptor de archivo inhabilitada"
 
-#: libelf/elf_error.c:188
+#: libelf/elf_error.c:167
 msgid "archive/member file descriptor mismatch"
 msgstr "archivo/miembro no coincide el descriptor de archivos"
 
-#: libelf/elf_error.c:196
+#: libelf/elf_error.c:175
 msgid "cannot manipulate null section"
 msgstr "no se pudo manipular una sección nula"
 
-#: libelf/elf_error.c:200
+#: libelf/elf_error.c:179
 msgid "data/scn mismatch"
 msgstr "no coinciden los datos/scn"
 
-#: libelf/elf_error.c:204
+#: libelf/elf_error.c:183
 msgid "invalid section header"
 msgstr "encabezamiento de sección inválida"
 
-#: libelf/elf_error.c:208 src/readelf.c:6850 src/readelf.c:6951
-#: src/readelf.c:7113
+#: libelf/elf_error.c:187 src/readelf.c:7235 src/readelf.c:7683
+#: src/readelf.c:7784 src/readelf.c:7954
 #, c-format
 msgid "invalid data"
 msgstr "datos inválidos"
 
-#: libelf/elf_error.c:212
+#: libelf/elf_error.c:191
 msgid "unknown data encoding"
 msgstr "codificación de caracteres desconocida"
 
-#: libelf/elf_error.c:216
+#: libelf/elf_error.c:195
 msgid "section `sh_size' too small for data"
 msgstr "el tamaño de la sección `sh_size' es demasiado pequeño para los datos "
 
-#: libelf/elf_error.c:220
+#: libelf/elf_error.c:199
 msgid "invalid section alignment"
 msgstr "alineación de la sección inválida"
 
-#: libelf/elf_error.c:224
+#: libelf/elf_error.c:203
 msgid "invalid section entry size"
 msgstr "tamaño de la entrada de la sección inválida"
 
-#: libelf/elf_error.c:228
+#: libelf/elf_error.c:207
 msgid "update() for write on read-only file"
 msgstr "update() para escribir sobre archivo de sólo lectura"
 
-#: libelf/elf_error.c:232
+#: libelf/elf_error.c:211
 msgid "no such file"
 msgstr "no hay tal archivo"
 
-#: libelf/elf_error.c:236
+#: libelf/elf_error.c:215
 msgid "only relocatable files can contain section groups"
 msgstr "solo los archivos reubicables pueden contener grupos de sección"
 
-#: libelf/elf_error.c:241
+#: libelf/elf_error.c:220
 msgid ""
 "program header only allowed in executables, shared objects, and core files"
 msgstr ""
 "los encabezamientos de los programas solo son permitidos en archivos "
 "ejecutables, archivos principales, u objetos compartidos"
 
-#: libelf/elf_error.c:248
+#: libelf/elf_error.c:227
 msgid "file has no program header"
 msgstr "el archivo no tiene encabezamiento de programa"
 
-#: src/addr2line.c:66
+#: src/addr2line.c:58
 msgid "Output selection options:"
 msgstr "Opciones de selección de salida:"
 
-#: src/addr2line.c:67
+#: src/addr2line.c:59
 msgid "Show only base names of source files"
 msgstr "Mostrar sólo nombres de base de ficheros fuente"
 
-#: src/addr2line.c:69
+#: src/addr2line.c:61
 msgid "Show absolute file names using compilation directory"
 msgstr ""
 "Mostrar nombres de fichero absolutos mediante directorio de compilación"
 
-#: src/addr2line.c:70
+#: src/addr2line.c:62
 msgid "Also show function names"
 msgstr "También mostrar nombres de función"
 
-#: src/addr2line.c:71
+#: src/addr2line.c:63
 msgid "Also show symbol or section names"
 msgstr "También mostrar símbolo o nombres de sección"
 
-#: src/addr2line.c:72
+#: 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:74
+#: 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:76 src/elfcmp.c:80 src/findtextrel.c:75 src/nm.c:108
-#: src/strings.c:83
+#: 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:85
+#: 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:89
+#: src/addr2line.c:85
 msgid "[ADDR...]"
 msgstr "[DIREC...]"
 
-#: src/addr2line.c:189 src/ar.c:296 src/elfcmp.c:670 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:273 src/objdump.c:189
-#: src/ranlib.c:136 src/readelf.c:462 src/size.c:219 src/strings.c:227
-#: src/strip.c:221 src/unstrip.c:234
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:663 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: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"
@@ -656,300 +736,300 @@
 "garantía, ni siquiera para SU COMERCIALIZACIÓN o PARA SER USADO CON UN FIN "
 "DETERMINADO.\n"
 
-#: src/addr2line.c:194 src/ar.c:301 src/elfcmp.c:675 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:278 src/objdump.c:194
-#: src/ranlib.c:141 src/readelf.c:467 src/size.c:224 src/strings.c:232
-#: src/strip.c:226 src/unstrip.c:239
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:668 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: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:413
+#: 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:436
+#: 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:477
+#: src/addr2line.c:563
 #, c-format
 msgid "cannot find symbol '%s'"
 msgstr "no se puede encontrar símbolo '%s'"
 
-#: src/addr2line.c:482
+#: 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/ar.c:76
+#: src/ar.c:69
 msgid "Commands:"
 msgstr "Comandos:"
 
-#: src/ar.c:77
+#: src/ar.c:70
 msgid "Delete files from archive."
 msgstr "Borrar archivos de un archivo"
 
-#: src/ar.c:78
+#: src/ar.c:71
 msgid "Move files in archive."
 msgstr "Desplazar ficheros en archivo."
 
-#: src/ar.c:79
+#: src/ar.c:72
 msgid "Print files in archive."
 msgstr "Imprimir ficheros en archivo."
 
-#: src/ar.c:80
+#: src/ar.c:73
 msgid "Quick append files to archive."
 msgstr "Adición rápida de ficheros para archivar"
 
-#: src/ar.c:82
+#: src/ar.c:75
 msgid "Replace existing or insert new file into archive."
 msgstr "Remplazar fichero existente o insertar uno nuevo en el archivo."
 
-#: src/ar.c:83
+#: src/ar.c:76
 msgid "Display content of archive."
 msgstr "Mostrar contenido de archivo"
 
-#: src/ar.c:84
+#: src/ar.c:77
 msgid "Extract files from archive."
 msgstr "extraer ficheros de un archivo"
 
-#: src/ar.c:86
+#: src/ar.c:79
 msgid "Command Modifiers:"
 msgstr "Modificadores de comandos:"
 
-#: src/ar.c:87
+#: src/ar.c:80
 msgid "Preserve original dates."
 msgstr "Preservar fechas originales."
 
-#: src/ar.c:88
+#: src/ar.c:81
 msgid "Use instance [COUNT] of name."
 msgstr "Usar instancia [COUNT] de nombre."
 
-#: src/ar.c:90
+#: src/ar.c:83
 msgid "Do not replace existing files with extracted files."
 msgstr "No remplazar los archivos existentes por los archivos extractados."
 
-#: src/ar.c:91
+#: src/ar.c:84
 msgid "Allow filename to be truncated if necessary."
 msgstr "Permitir truncamiento del nombre de archivo de ser necesario."
 
-#: src/ar.c:93
+#: src/ar.c:86
 msgid "Provide verbose output."
 msgstr "Proporcionar salida detallada"
 
-#: src/ar.c:94
+#: src/ar.c:87
 msgid "Force regeneration of symbol table."
 msgstr "Forzar regeneración de tabla de símbolos."
 
-#: src/ar.c:95
+#: src/ar.c:88
 msgid "Insert file after [MEMBER]."
 msgstr "Insertar archivo después de [MIEMBRO]."
 
-#: src/ar.c:96
+#: src/ar.c:89
 msgid "Insert file before [MEMBER]."
 msgstr "Introducir fichero antes de [MIEMBRO]."
 
-#: src/ar.c:97
+#: src/ar.c:90
 msgid "Same as -b."
 msgstr "Igual que -b."
 
-#: src/ar.c:98
+#: src/ar.c:91
 msgid "Suppress message when library has to be created."
 msgstr "Suprimir mensaje cuando se tenga que crear la biblioteca."
 
-#: src/ar.c:100
+#: src/ar.c:93
 msgid "Use full path for file matching."
 msgstr "Usar la ruta total para fichero coincidente."
 
-#: src/ar.c:101
+#: src/ar.c:94
 msgid "Update only older files in archive."
 msgstr "Actualizar sólo ficheros antiguos en archivo."
 
-#: src/ar.c:107
+#: src/ar.c:100
 msgid "Create, modify, and extract from archives."
 msgstr "Crear, modificar, y extraer de archivos."
 
-#: src/ar.c:110
+#: src/ar.c:103
 msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 msgstr "[MIEMBRO] [CONTAR] ARCHIVO [FICHERO...]"
 
-#: src/ar.c:192
+#: src/ar.c:185
 #, c-format
 msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
 msgstr "'a', 'b', é 'i' sólo se permiten con las opciones 'm' y 'r'."
 
-#: src/ar.c:197
+#: src/ar.c:190
 #, c-format
 msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
 msgstr "Parámetro MIEMBRO requerido para modificadores 'a', 'b', e 'i'"
 
-#: src/ar.c:213
+#: src/ar.c:206
 #, c-format
 msgid "'N' is only meaningful with the 'x' and 'd' options"
 msgstr "'N' sólo es significativa con las opciones `x' y `d'."
 
-#: src/ar.c:218
+#: src/ar.c:211
 #, c-format
 msgid "COUNT parameter required"
 msgstr "Parámetro CONTAR requerido"
 
-#: src/ar.c:230
+#: src/ar.c:223
 #, c-format
 msgid "invalid COUNT parameter %s"
 msgstr "Parámetro CONTAR inválido %s"
 
-#: src/ar.c:237
+#: src/ar.c:230
 #, c-format
 msgid "'%c' is only meaningful with the 'x' option"
 msgstr "'%c' es sólo significativo con la opción 'x'"
 
-#: src/ar.c:243
+#: src/ar.c:236
 #, c-format
 msgid "archive name required"
 msgstr "nombre de archivo requerido"
 
-#: src/ar.c:256
+#: src/ar.c:249
 #, c-format
 msgid "command option required"
 msgstr ""
 
-#: src/ar.c:321
+#: src/ar.c:314
 #, c-format
 msgid "More than one operation specified"
 msgstr "Más de una operación especificada"
 
-#: src/ar.c:415
+#: src/ar.c:408
 #, c-format
 msgid "cannot open archive '%s'"
 msgstr "Imposible abrir el archivo '%s'"
 
-#: src/ar.c:425
+#: src/ar.c:418
 #, c-format
 msgid "cannot open archive '%s': %s"
 msgstr "Imposible abrir el archivo '%s': %s"
 
-#: src/ar.c:429
+#: src/ar.c:422
 #, c-format
 msgid "%s: not an archive file"
 msgstr "%s: no es un fichero de archivo"
 
-#: src/ar.c:433
+#: src/ar.c:426
 #, c-format
 msgid "cannot stat archive '%s'"
 msgstr "no sepuede stat el archivo '%s'"
 
-#: src/ar.c:445
+#: src/ar.c:438
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "no hay entrada %s en archivo\n"
 
-#: src/ar.c:498 src/ar.c:940 src/ar.c:1140
+#: src/ar.c:491 src/ar.c:933 src/ar.c:1133
 #, c-format
 msgid "cannot create hash table"
 msgstr "Falló al crear la tabla de dispersión"
 
-#: src/ar.c:505 src/ar.c:947 src/ar.c:1149
+#: src/ar.c:498 src/ar.c:940 src/ar.c:1142
 #, c-format
 msgid "cannot insert into hash table"
 msgstr "no sepuede insertar en tabla de dispersión"
 
-#: src/ar.c:513 src/ranlib.c:176
+#: src/ar.c:506 src/ranlib.c:168
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "no se puede stat '%s'"
 
-#: src/ar.c:609
+#: src/ar.c:602
 #, c-format
 msgid "cannot read content of %s: %s"
 msgstr "no se puede leer el contenido de %s: %s"
 
-#: src/ar.c:652
+#: src/ar.c:645
 #, c-format
 msgid "cannot open %.*s"
 msgstr " Imposible abrir %.*s"
 
-#: src/ar.c:674
+#: src/ar.c:667
 #, c-format
 msgid "failed to write %s"
 msgstr "Falló al escribir %s"
 
-#: src/ar.c:686
+#: src/ar.c:679
 #, c-format
 msgid "cannot change mode of %s"
 msgstr "No se puede cambiar el modo de %s"
 
-#: src/ar.c:702
+#: src/ar.c:695
 #, c-format
 msgid "cannot change modification time of %s"
 msgstr "No puede cambiar tiempo de modificación de %s"
 
-#: src/ar.c:748
+#: src/ar.c:741
 #, c-format
 msgid "cannot rename temporary file to %.*s"
 msgstr "no sepuede renombrar fichero temporal para %.*s"
 
-#: src/ar.c:784 src/ar.c:1032 src/ar.c:1431 src/ranlib.c:250
+#: src/ar.c:777 src/ar.c:1025 src/ar.c:1424 src/ranlib.c:242
 #, c-format
 msgid "cannot create new file"
 msgstr "no sepuede crear fichero nuevo"
 
-#: src/ar.c:1231
+#: src/ar.c:1224
 #, c-format
 msgid "position member %s not found"
 msgstr "no se encuentra miembro de posición %s "
 
-#: src/ar.c:1241
+#: src/ar.c:1234
 #, c-format
 msgid "%s: no entry %s in archive!\n"
 msgstr "%s: ¡no hay entrada %s en archive!\n"
 
-#: src/ar.c:1270 src/ldgeneric.c:517 src/objdump.c:265
+#: src/ar.c:1263 src/ldgeneric.c:509 src/objdump.c:257
 #, c-format
 msgid "cannot open %s"
 msgstr "no sepuede abrir %s"
 
-#: src/ar.c:1275
+#: src/ar.c:1268
 #, c-format
 msgid "cannot stat %s"
 msgstr "no sepuede efectuar stat %s"
 
-#: src/ar.c:1281
+#: src/ar.c:1274
 #, c-format
 msgid "%s is no regular file"
 msgstr " %s no es un fichero ordinario "
 
-#: src/ar.c:1294
+#: src/ar.c:1287
 #, c-format
 msgid "cannot get ELF descriptor for %s: %s\n"
 msgstr "no sepuede obtener descriptor ELF para %s: %s\n"
 
-#: src/ar.c:1314
+#: src/ar.c:1307
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "no sepuede leer %s: %s"
 
-#: src/arlib.c:216
+#: src/arlib.c:209
 #, c-format
 msgid "the archive '%s' is too large"
 msgstr " El archivo '%s' es demasiado grande"
 
-#: src/arlib.c:229
+#: src/arlib.c:222
 #, c-format
 msgid "cannot read ELF header of %s(%s): %s"
 msgstr "no se puede leer el encabezamiento ELF de %s(%s): %s"
 
-#: src/elfcmp.c:70
+#: src/elfcmp.c:62
 msgid "Control options:"
 msgstr "Opciones de control:"
 
-#: src/elfcmp.c:72
+#: src/elfcmp.c:64
 msgid "Output all differences, not just the first"
 msgstr ""
 
-#: src/elfcmp.c:73
+#: src/elfcmp.c:65
 msgid ""
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
@@ -957,212 +1037,212 @@
 "Tratamiento de control de brechas en segmento cargables [ignorar|"
 "coincidencia] (por defecto: ignorar)"
 
-#: src/elfcmp.c:75
+#: src/elfcmp.c:67
 msgid "Ignore permutation of buckets in SHT_HASH section"
 msgstr "Ignorar permutación de cubetas en sección SHT_HASH"
 
-#: src/elfcmp.c:77
+#: src/elfcmp.c:69
 msgid "Ignore differences in build ID"
 msgstr ""
 
-#: src/elfcmp.c:78
+#: src/elfcmp.c:70
 msgid "Output nothing; yield exit status only"
 msgstr "Nada de salida; producir estado de salida únicamente"
 
-#: src/elfcmp.c:85
+#: src/elfcmp.c:77
 msgid "Compare relevant parts of two ELF files for equality."
 msgstr "Comparar partes relevantes de dos ficheros ELF para igualdad."
 
-#: src/elfcmp.c:89
+#: src/elfcmp.c:81
 msgid "FILE1 FILE2"
 msgstr "FICHERO1 FICHERO2"
 
-#: src/elfcmp.c:151
+#: src/elfcmp.c:143
 msgid "Invalid number of parameters.\n"
 msgstr "Número inválido de parámetros.\n"
 
-#: src/elfcmp.c:182 src/elfcmp.c:187
+#: src/elfcmp.c:174 src/elfcmp.c:179
 #, c-format
 msgid "cannot get ELF header of '%s': %s"
 msgstr "no se puede obtener encabezamiento de '%s': %s"
 
-#: src/elfcmp.c:213
+#: src/elfcmp.c:205
 #, c-format
 msgid "%s %s diff: ELF header"
 msgstr "%s %s diff: encabezamiento ELF"
 
-#: src/elfcmp.c:220 src/elfcmp.c:223
+#: src/elfcmp.c:212 src/elfcmp.c:215
 #, c-format
 msgid "cannot get section count of '%s': %s"
 msgstr "no se puede obtener un conteo de sección en '%s': %s"
 
-#: src/elfcmp.c:228
+#: src/elfcmp.c:220
 #, c-format
 msgid "%s %s diff: section count"
 msgstr "%s %s diff: conteo de sección"
 
-#: src/elfcmp.c:235 src/elfcmp.c:238
+#: src/elfcmp.c:227 src/elfcmp.c:230
 #, c-format
 msgid "cannot get program header count of '%s': %s"
 msgstr "no se puede obtener un conteo de encabezado de programa de '%s': %s"
 
-#: src/elfcmp.c:243
+#: src/elfcmp.c:235
 #, c-format
 msgid "%s %s diff: program header count"
 msgstr "%s %s diff: encabezado de programa"
 
-#: src/elfcmp.c:300
+#: src/elfcmp.c:292
 #, fuzzy, c-format
 msgid "%s %s differ: section [%zu], [%zu] name"
 msgstr "%s %s differ: sección [%zu,%zu] contenido '%s'"
 
-#: src/elfcmp.c:323
+#: src/elfcmp.c:315
 #, fuzzy, c-format
 msgid "%s %s differ: section [%zu] '%s' header"
 msgstr "%s %s differ: sección [%zu] contenido '%s'"
 
-#: src/elfcmp.c:331 src/elfcmp.c:337
+#: src/elfcmp.c:323 src/elfcmp.c:329
 #, c-format
 msgid "cannot get content of section %zu in '%s': %s"
 msgstr "No se puede obtener contenido de sección %zu en '%s': %s"
 
-#: src/elfcmp.c:353 src/elfcmp.c:359
+#: src/elfcmp.c:345 src/elfcmp.c:351
 #, c-format
 msgid "cannot get symbol in '%s': %s"
 msgstr "No se puede obtener símbolo en '%s': %s"
 
-#: src/elfcmp.c:380
+#: src/elfcmp.c:373
 #, c-format
 msgid "%s %s differ: symbol table [%zu]"
 msgstr "%s %s differ: tabla de símbolos [%zu]"
 
-#: src/elfcmp.c:383
+#: src/elfcmp.c:376
 #, c-format
 msgid "%s %s differ: symbol table [%zu,%zu]"
 msgstr "%s %s differ: tabla de símbolos [%zu,%zu]"
 
-#: src/elfcmp.c:429 src/elfcmp.c:498
+#: src/elfcmp.c:422 src/elfcmp.c:491
 #, fuzzy, c-format
 msgid "%s %s differ: section [%zu] '%s' number of notes"
 msgstr "%s %s differ: sección [%zu] contenido '%s'"
 
-#: src/elfcmp.c:437
+#: src/elfcmp.c:430
 #, fuzzy, c-format
 msgid "cannot read note section [%zu] '%s' in '%s': %s"
 msgstr "No se puede obtener contenido de sección %zu en '%s': %s"
 
-#: src/elfcmp.c:447
+#: src/elfcmp.c:440
 #, fuzzy, c-format
 msgid "%s %s differ: section [%zu] '%s' note name"
 msgstr "%s %s differ: sección [%zu] contenido '%s'"
 
-#: src/elfcmp.c:455
+#: src/elfcmp.c:448
 #, fuzzy, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' type"
 msgstr "%s %s differ: sección [%zu] contenido '%s'"
 
-#: src/elfcmp.c:470
+#: src/elfcmp.c:463
 #, fuzzy, c-format
 msgid "%s %s differ: build ID length"
 msgstr "%s %s differ: brecha"
 
-#: src/elfcmp.c:478
+#: src/elfcmp.c:471
 #, fuzzy, c-format
 msgid "%s %s differ: build ID content"
 msgstr "%s %s differ: sección [%zu] contenido '%s'"
 
-#: src/elfcmp.c:487
+#: src/elfcmp.c:480
 #, fuzzy, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' content"
 msgstr "%s %s differ: sección [%zu] contenido '%s'"
 
-#: src/elfcmp.c:527
+#: src/elfcmp.c:520
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' content"
 msgstr "%s %s differ: sección [%zu] contenido '%s'"
 
-#: src/elfcmp.c:531
+#: src/elfcmp.c:524
 #, c-format
 msgid "%s %s differ: section [%zu,%zu] '%s' content"
 msgstr "%s %s differ: sección [%zu,%zu] contenido '%s'"
 
-#: src/elfcmp.c:546
+#: src/elfcmp.c:539
 #, c-format
 msgid "%s %s differ: unequal amount of important sections"
 msgstr "%s %s differ: cantidad desigual de secciones importantes"
 
-#: src/elfcmp.c:579 src/elfcmp.c:584
+#: src/elfcmp.c:572 src/elfcmp.c:577
 #, c-format
 msgid "cannot load data of '%s': %s"
 msgstr "no se pueden cargar los datos de '%s': %s"
 
-#: src/elfcmp.c:603 src/elfcmp.c:609
+#: src/elfcmp.c:596 src/elfcmp.c:602
 #, c-format
 msgid "cannot get program header entry %d of '%s': %s"
 msgstr ""
 "no se puede obtener entrada de encabezamiento de programa %d de '%s': %s"
 
-#: src/elfcmp.c:615
+#: src/elfcmp.c:608
 #, c-format
 msgid "%s %s differ: program header %d"
 msgstr "%s %s differ: encabezamiento de programa %d"
 
-#: src/elfcmp.c:639
+#: src/elfcmp.c:632
 #, c-format
 msgid "%s %s differ: gap"
 msgstr "%s %s differ: brecha"
 
-#: src/elfcmp.c:702
+#: src/elfcmp.c:695
 #, c-format
 msgid "Invalid value '%s' for --gaps parameter."
 msgstr "Valor inválido '%s' para parámetro --gaps"
 
-#: src/elfcmp.c:730 src/findtextrel.c:229 src/ldgeneric.c:1765
-#: src/ldgeneric.c:4255 src/nm.c:389 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:458 src/strip.c:495 src/unstrip.c:1911
-#: src/unstrip.c:1940
+#: src/elfcmp.c:723 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:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1923
+#: src/unstrip.c:1952
 #, c-format
 msgid "cannot open '%s'"
 msgstr "Imposible abrir '%s'"
 
-#: src/elfcmp.c:734 src/findtextrel.c:236 src/ranlib.c:186
+#: src/elfcmp.c:727 src/findtextrel.c:228 src/ranlib.c:178
 #, c-format
 msgid "cannot create ELF descriptor for '%s': %s"
 msgstr "No puede crear descriptor ELF para '%s': %s"
 
-#: src/elfcmp.c:739
+#: src/elfcmp.c:732
 #, c-format
 msgid "cannot create EBL descriptor for '%s'"
 msgstr "no se puede crear el descriptor EBL para '%s'"
 
-#: src/elfcmp.c:757
+#: src/elfcmp.c:750
 #, c-format
 msgid "cannot get section header of section %zu: %s"
 msgstr "No se puede obtener el encabezamiento de sección %zu: %s"
 
-#: src/elfcmp.c:767
+#: src/elfcmp.c:760
 #, c-format
 msgid "cannot get content of section %zu: %s"
 msgstr "No se puede obtener contenido de sección %zu: %s"
 
-#: src/elfcmp.c:777 src/elfcmp.c:791
+#: src/elfcmp.c:770 src/elfcmp.c:784
 #, c-format
 msgid "cannot get relocation: %s"
 msgstr "No se puede obtener reubicación: %s"
 
-#: src/elflint.c:72
+#: src/elflint.c:64
 msgid "Be extremely strict, flag level 2 features."
 msgstr "Sea extremadamente estricto, característica de marca de nivel 2."
 
-#: src/elflint.c:73
+#: src/elflint.c:65
 msgid "Do not print anything if successful"
 msgstr "No imprime nada si está correcto"
 
-#: src/elflint.c:74
+#: src/elflint.c:66
 msgid "Binary is a separate debuginfo file"
 msgstr "Binario es un archivo debuginfo independiente"
 
-#: src/elflint.c:76
+#: src/elflint.c:68
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1170,167 +1250,167 @@
 "Binario ha sido creado con GNU Id y por lo tanto se sabe que puede estar "
 "roto de alguna forma"
 
-#: src/elflint.c:82
+#: src/elflint.c:74
 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:86 src/readelf.c:119
+#: src/elflint.c:78 src/readelf.c:123
 msgid "FILE..."
 msgstr "FICHERO..."
 
-#: src/elflint.c:159 src/readelf.c:275
+#: 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:166
+#: 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:185
+#: 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:189
+#: src/elflint.c:185
 msgid "No errors"
 msgstr "No hay errores"
 
-#: src/elflint.c:223 src/readelf.c:436
+#: src/elflint.c:219 src/readelf.c:468
 msgid "Missing file name.\n"
 msgstr "Falta el nombre de archivo.\n"
 
-#: src/elflint.c:302
+#: 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:310
+#: 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:370
+#: 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:375
+#: 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:379
+#: 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:385
+#: 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:391
+#: 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:396
+#: 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:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "tipo de fichero objeto desconocido %d\n"
 
-#: src/elflint.c:408
+#: src/elflint.c:409
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "tipo de máquina desconocido %d\n"
 
-#: src/elflint.c:412
+#: src/elflint.c:413
 #, c-format
 msgid "unknown object file version\n"
 msgstr "versión de fichero objeto desconocido\n"
 
-#: src/elflint.c:418
+#: 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:420
+#: 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:424
+#: 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:432
+#: 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:435
+#: 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:449
+#: 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:466
+#: 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:480
+#: 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:489
+#: src/elflint.c:490
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "Indicadores de máquina inválidos: %s\n"
 
-#: src/elflint.c:496 src/elflint.c:513
+#: 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:499 src/elflint.c:516
+#: 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:502 src/elflint.c:519
+#: 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:505 src/elflint.c:522
+#: 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:508 src/elflint.c:525
+#: 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:569
+#: src/elflint.c:570
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1339,7 +1419,7 @@
 "sección [%2d] '%s': sección con la bandera SHF_GROUP no es parte de una "
 "sección de grupo\n"
 
-#: src/elflint.c:573
+#: src/elflint.c:574
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
@@ -1347,14 +1427,14 @@
 "sección [%2d] '%s': el grupo de sección [%2zu] '%s' no precede al miembro de "
 "grupo\n"
 
-#: src/elflint.c:589 src/elflint.c:1433 src/elflint.c:1483 src/elflint.c:1588
-#: src/elflint.c:2173 src/elflint.c:2687 src/elflint.c:2848 src/elflint.c:2978
-#: src/elflint.c:3150 src/elflint.c:4050
+#: 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:602 src/elflint.c:1595
+#: src/elflint.c:603 src/elflint.c:1621
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1363,7 +1443,7 @@
 "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:625
+#: src/elflint.c:626
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1372,39 +1452,39 @@
 "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:636
+#: 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:645
+#: 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:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
+#: 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:668
+#: 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:678
+#: 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:687
+#: 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:701
+#: src/elflint.c:704
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: too large section index but no extended "
@@ -1413,7 +1493,7 @@
 "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:707
+#: src/elflint.c:710
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
@@ -1422,27 +1502,27 @@
 "Sección [%2d] '%s': símbolo %zu: XINDEX es utilizado para índice que pueda "
 "caber en st_shndx (%<PRIu32>)\n"
 
-#: src/elflint.c:719
+#: 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:727
+#: 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:733
+#: 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:738
+#: 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:746
+#: src/elflint.c:749
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
@@ -1450,25 +1530,25 @@
 "sección [%2d] '%s': símbolo %zu: COMMON solo es permitido en archivos "
 "realojables\n"
 
-#: src/elflint.c:750
+#: 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:754
+#: 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:786
+#: 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:792 src/elflint.c:817 src/elflint.c:860
+#: 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 "
@@ -1477,7 +1557,7 @@
 "Sección [%2d] '%s': símbolo %zu no se ajusta totalmente en la sección [%2d] "
 "'%s'\n"
 
-#: src/elflint.c:801
+#: src/elflint.c:819
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
@@ -1486,7 +1566,7 @@
 "Sección [%2d] '%s': símbolo %zu: sección de referencia [%2d] '%s' no tiene "
 "establecida bandera SHF_TLS\n"
 
-#: src/elflint.c:811 src/elflint.c:853
+#: src/elflint.c:829 src/elflint.c:871
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
@@ -1495,7 +1575,7 @@
 "Sección [%2d] '%s': símbolo %zu: st_value fuera de límites de sección de "
 "referencia [%2d] '%s'\n"
 
-#: src/elflint.c:838
+#: src/elflint.c:856
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
@@ -1503,7 +1583,7 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo TLS, pero no hay entrada de "
 "programa TLS\n"
 
-#: src/elflint.c:846
+#: src/elflint.c:864
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
@@ -1512,7 +1592,7 @@
 "Sección [%2d] '%s': símbolo %zu: st_value falta sección de referencia [%2d] "
 "'%s'\n"
 
-#: src/elflint.c:873
+#: src/elflint.c:891
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: local symbol outside range described in "
@@ -1521,7 +1601,7 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo local fuera del rango descrito en "
 "sh_info\n"
 
-#: src/elflint.c:880
+#: src/elflint.c:898
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
@@ -1530,12 +1610,12 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo non-local fuera del rango descrito "
 "en sh_info\n"
 
-#: src/elflint.c:887
+#: 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:937
+#: src/elflint.c:955
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1544,7 +1624,7 @@
 "Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ se refiere a sección "
 "errada [%2d]\n"
 
-#: src/elflint.c:944
+#: src/elflint.c:962
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1553,7 +1633,7 @@
 "Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ se refiere a sección [%2d] "
 "'%s'\n"
 
-#: src/elflint.c:960
+#: src/elflint.c:978
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1562,7 +1642,7 @@
 "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:967
+#: src/elflint.c:985
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1571,7 +1651,7 @@
 "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:975
+#: src/elflint.c:993
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1580,7 +1660,7 @@
 "Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ presente, pero no. sección "
 "got\n"
 
-#: src/elflint.c:991
+#: src/elflint.c:1009
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1589,7 +1669,7 @@
 "sección [%2d] '%s': Valor de símbolo _DYNAMIC_ %#<PRIx64> no coincide con la "
 "dirección de segmento%#<PRIx64>\n"
 
-#: src/elflint.c:998
+#: src/elflint.c:1016
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1598,7 +1678,7 @@
 "Sección [%2d] '%s': tamaño de símbolo _DYNAMIC %<PRIu64> no coincide con "
 "tamaño de segmento %<PRIu64>\n"
 
-#: src/elflint.c:1011
+#: src/elflint.c:1029
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
@@ -1607,24 +1687,24 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo en tabla de símbolos dinámicos sin "
 "visibilidad predeterminada\n"
 
-#: src/elflint.c:1015
+#: 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:1060
+#: 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:1069 src/elflint.c:1121
+#: 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:1094 src/elflint.c:1146
+#: src/elflint.c:1118 src/elflint.c:1170
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1633,7 +1713,7 @@
 "Sección [%2d] '%s': reubicaciones relativas después de que el %d de índice "
 "haya sido especificado por DT_RELCOUNT\n"
 
-#: src/elflint.c:1100 src/elflint.c:1152
+#: src/elflint.c:1124 src/elflint.c:1176
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -1642,49 +1722,49 @@
 "Sección [%2d] '%s': reubicación no-relativa en %zu de índice; DT_RELCOUNT "
 "especificado %d reubicaciones relativas\n"
 
-#: src/elflint.c:1112
+#: 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:1194
+#: 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:1207
+#: 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:1215
+#: 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:1222
+#: 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:1229
+#: 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:1289
+#: 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:1316
+#: 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:1324
+#: src/elflint.c:1348
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -1693,12 +1773,12 @@
 "Sección [%2d] '%s': reubicación %zu: tipo de reubicación inválido para el "
 "tipo de archivo\n"
 
-#: src/elflint.c:1332
+#: 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:1350
+#: src/elflint.c:1374
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -1707,12 +1787,12 @@
 "Sección [%2d] '%s': reubicación %zu: sólo el símbolo '_GLOBAL_OFFSET_TABLE_' "
 "puede utilizarse con %s\n"
 
-#: src/elflint.c:1367
+#: 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:1382
+#: src/elflint.c:1406
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -1721,7 +1801,7 @@
 "Sección [%2d] '%s': reubicación %zu: reubicación de copia con símbolo de "
 "tipo %s\n"
 
-#: src/elflint.c:1403
+#: src/elflint.c:1427
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -1730,61 +1810,61 @@
 "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:1418
+#: 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:1457 src/elflint.c:1507
+#: 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:1583
+#: 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:1601
+#: 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:1606 src/elflint.c:1889
+#: 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:1616
+#: 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:1624
+#: 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:1631
+#: 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:1642
+#: 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:1652
+#: 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:1670
+#: src/elflint.c:1697
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -1792,7 +1872,7 @@
 "Sección [%2d] '%s': entrada %zu: el valor DT_PLTREL debe ser DT_REL or "
 "DT_RELA\n"
 
-#: src/elflint.c:1683
+#: src/elflint.c:1710
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -1801,14 +1881,14 @@
 "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:1726
+#: 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:1741
+#: src/elflint.c:1768
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -1817,46 +1897,46 @@
 "sección [%2d] '%s': entrada %zu: valor %s debe ser compensación válida en "
 "sección [%2d] '%s'\n"
 
-#: src/elflint.c:1761 src/elflint.c:1789
+#: 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:1773
+#: 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:1782
+#: 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:1797 src/elflint.c:1804
+#: 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:1814 src/elflint.c:1818
+#: 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:1824
+#: 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:1835 src/elflint.c:1839 src/elflint.c:1843 src/elflint.c:1847
+#: 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:1859
+#: src/elflint.c:1886
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
@@ -1864,31 +1944,31 @@
 "Sección [%2d] '%s': sólo los archivos reubicables pueden tener índice de "
 "sección extendido\n"
 
-#: src/elflint.c:1869
+#: 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:1874
+#: 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:1877
+#: 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:1884
+#: 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:1899
+#: src/elflint.c:1928
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -1897,24 +1977,24 @@
 "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:1910
+#: 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:1922
+#: 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:1927
+#: 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:1943 src/elflint.c:1984
+#: 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"
@@ -1922,53 +2002,53 @@
 "Sección [%2d] '%s': sección de tabla de dispersión es demasiado pequeña (es "
 "%ld, se espera %ld)\n"
 
-#: src/elflint.c:1955 src/elflint.c:1996
+#: 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:1964 src/elflint.c:2005
+#: 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:1970
+#: 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:2011
+#: 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:2026
+#: 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:2037
-#, 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:2045
+#: 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:2077
+#: src/elflint.c:2132
 #, c-format
 msgid ""
 "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -1976,7 +2056,7 @@
 "Sección [%2d] '%s': cadena de dispersión para cubetas %zu inferior a "
 "polarización de índice de símbolo\n"
 
-#: src/elflint.c:2098
+#: src/elflint.c:2153
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -1985,7 +2065,7 @@
 "Sección [%2d] '%s': el símbolo %u al que se hace referencia en cadena para "
 "cubeta %zu es indefinido\n"
 
-#: src/elflint.c:2109
+#: src/elflint.c:2164
 #, c-format
 msgid ""
 "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -1993,13 +2073,13 @@
 "Sección [%2d] '%s': valor de dispersión para símbolo %u en cadena para "
 "cubeta %zu está errado\n"
 
-#: src/elflint.c:2140
+#: 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:2145
+#: src/elflint.c:2200
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -2007,38 +2087,38 @@
 "Sección [%2d] '%s': referencia de símbolo en cadena para cubeta %zu fuera de "
 "límites\n"
 
-#: src/elflint.c:2151
+#: 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:2164
+#: 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:2182
+#: 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:2190
+#: 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:2195
+#: 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:2200
+#: src/elflint.c:2255
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2047,19 +2127,19 @@
 "Sección [%2d] '%s': tabla de dispersión no tiene ni siquiera espacio para "
 "entradas administrativas iniciales\n"
 
-#: src/elflint.c:2248
+#: 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:2326 src/elflint.c:2330
+#: 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:2337
+#: src/elflint.c:2392
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2068,7 +2148,7 @@
 "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:2349
+#: src/elflint.c:2404
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2077,12 +2157,12 @@
 "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:2365
+#: 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:2385
+#: src/elflint.c:2440
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
@@ -2090,94 +2170,94 @@
 "Sección [%2d] '%s': grupos de sección sólo permitidos en archivos de objeto "
 "reubicables\n"
 
-#: src/elflint.c:2396
+#: 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:2401
+#: 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:2407
+#: 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:2412
+#: 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:2419
+#: 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:2424
+#: 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:2430
+#: 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:2436
+#: 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:2445
+#: 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:2450
+#: 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:2456
+#: 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:2460
+#: 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:2471
+#: 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:2483
+#: 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:2492
+#: 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:2499
+#: 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:2505
+#: src/elflint.c:2560
 #, c-format
 msgid ""
 "section [%2d] '%s': element %Zu references section [%2d] '%s' without "
@@ -2186,12 +2266,12 @@
 "Sección [%2d] '%s': elemento %Zu hace referencia a sección [%2d] '%s' sin "
 "establecer bandera SHF_GROUP\n"
 
-#: src/elflint.c:2512
+#: 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:2701
+#: src/elflint.c:2756
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2200,7 +2280,7 @@
 "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:2712
+#: src/elflint.c:2768
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2209,29 +2289,29 @@
 "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:2728
+#: 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:2744
+#: 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:2752
+#: 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:2766
+#: 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:2771
+#: src/elflint.c:2827
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
@@ -2239,7 +2319,7 @@
 "Sección [%2d] '%s': símbolo %d: índice de versión %d es para versión "
 "definida\n"
 
-#: src/elflint.c:2781
+#: src/elflint.c:2837
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
@@ -2247,46 +2327,46 @@
 "Sección [%2d] '%s': símbolo %d: índice de versión %d es para la versión "
 "solicitada\n"
 
-#: src/elflint.c:2833
+#: 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:2841 src/elflint.c:2970
+#: 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:2864 src/elflint.c:3022
+#: 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:2870 src/elflint.c:3028
+#: 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:2878
+#: 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:2886
+#: 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:2898
+#: 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:2905
+#: src/elflint.c:2961
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2295,7 +2375,7 @@
 "Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene referencia de "
 "nombre inválida\n"
 
-#: src/elflint.c:2912
+#: src/elflint.c:2968
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2304,7 +2384,7 @@
 "Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene valor de "
 "dispersión: %#x, esperado %#x\n"
 
-#: src/elflint.c:2922
+#: src/elflint.c:2978
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -2313,7 +2393,7 @@
 "sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene nombre duplicado "
 "'%s'\n"
 
-#: src/elflint.c:2933
+#: src/elflint.c:2989
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
@@ -2321,53 +2401,53 @@
 "sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene próximo campo "
 "errado\n"
 
-#: src/elflint.c:2949 src/elflint.c:3107
+#: 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:2962
+#: 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:3007
+#: 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:3011
+#: 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:3017
+#: 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:3041
+#: 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:3048
+#: 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:3057
+#: 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:3076
+#: src/elflint.c:3132
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -2375,34 +2455,34 @@
 "Sección [%2d] '%s': entrada %d tiene referencia de nombre inválida en datos "
 "auxiliares\n"
 
-#: src/elflint.c:3091
+#: 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:3113
+#: 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:3129
+#: 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:3142
+#: 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:3163
+#: 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:3179
+#: src/elflint.c:3235
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute section\n"
@@ -2410,21 +2490,21 @@
 "Sección[%2d] '%s': compensación %zu: campo de longitud cero en sección de "
 "atributo\n"
 
-#: src/elflint.c:3188
+#: 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:3200
+#: 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:3217
+#: src/elflint.c:3273
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -2432,12 +2512,12 @@
 "Sección [%2d] '%s': compensación %zu: sin fin ULEB128 en etiqueta de sub-"
 "sección de atributo\n"
 
-#: src/elflint.c:3226
+#: 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:3235
+#: src/elflint.c:3291
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
@@ -2445,7 +2525,7 @@
 "Sección [%2d] '%s': compensación %zu: campo de longitud cero length en sub-"
 "sección de atributo\n"
 
-#: src/elflint.c:3248
+#: src/elflint.c:3304
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
@@ -2453,7 +2533,7 @@
 "Sección [%2d] '%s': compensación %zu: longitud inválida en sub-sección de "
 "atributo\n"
 
-#: src/elflint.c:3259
+#: src/elflint.c:3315
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -2461,26 +2541,26 @@
 "Sección[%2d] '%s': compensación %zu: sub-sección de atributo tiene etiqueta "
 "inesperada %u\n"
 
-#: src/elflint.c:3277
+#: 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:3288
+#: 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:3301
+#: 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:3305
+#: src/elflint.c:3361
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
@@ -2488,12 +2568,12 @@
 "Sección [%2d] '%s': compensación %zu: no reconocido %s valor de atributo "
 "%<PRIu64>\n"
 
-#: src/elflint.c:3315
+#: 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:3321
+#: src/elflint.c:3377
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -2501,47 +2581,47 @@
 "Sección [%2d] '%s': compensación %zu: extra bytes después de la última "
 "sección de atributo\n"
 
-#: src/elflint.c:3410
+#: 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:3414
+#: src/elflint.c:3470
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr "Sección zeroth tiene nombre nonzero\n"
 
-#: src/elflint.c:3416
+#: src/elflint.c:3472
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr "Sección zeroth tiene tipo nonzero\n"
 
-#: src/elflint.c:3418
+#: src/elflint.c:3474
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr "Sección zeroth tiene banderas nonzero\n"
 
-#: src/elflint.c:3420
+#: 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:3422
+#: 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:3424
+#: 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:3426
+#: 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:3429
+#: src/elflint.c:3485
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -2550,7 +2630,7 @@
 "Sección zeroth tiene valor de tamaño nonzero mientras que el encabezamiento "
 "ELF tiene valor shnum nonzero\n"
 
-#: src/elflint.c:3433
+#: src/elflint.c:3489
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2559,7 +2639,7 @@
 "Sección zeroth tiene valor de enlace nonzero mientras que el encabezamiento "
 "ELF no señala sobreflujo en shstrndx\n"
 
-#: src/elflint.c:3437
+#: src/elflint.c:3493
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2568,27 +2648,27 @@
 "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:3454
+#: 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:3463
+#: src/elflint.c:3519
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr "Sección [%2zu]: nombre inválido\n"
 
-#: src/elflint.c:3490
+#: 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:3506
+#: 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:3523
+#: src/elflint.c:3579
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
@@ -2596,12 +2676,12 @@
 "Sección [%2zu] '%s' tiene banderas erradas: %s esperado y posiblemente %s, "
 "es %s\n"
 
-#: src/elflint.c:3541
+#: 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:3547 src/elflint.c:3579
+#: 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"
@@ -2609,7 +2689,7 @@
 "Sección [%2zu] '%s' tiene bandera SHF_ALLOC establecida pero no es un "
 "segmento cargable\n"
 
-#: src/elflint.c:3552 src/elflint.c:3584
+#: src/elflint.c:3608 src/elflint.c:3640
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -2618,7 +2698,7 @@
 "Sección [%2zu] '%s' no tiene bandera SHF_ALLOC establecida pero hay "
 "segmentos cargables\n"
 
-#: src/elflint.c:3560
+#: src/elflint.c:3616
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -2626,22 +2706,22 @@
 "Sección [%2zu] '%s' es tabla de índice de sección de extensión en archivo no-"
 "objeto\n"
 
-#: src/elflint.c:3603
+#: 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:3608
+#: 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:3618
+#: 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:3632
+#: src/elflint.c:3688
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -2649,54 +2729,54 @@
 "Sección [%2zu] '%s' contiene bandera(s) de procesador-específico inválidas "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3639
+#: 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:3647
+#: 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:3655
+#: 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:3660
+#: 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:3667
+#: 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:3672
+#: 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:3690
+#: 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:3699
+#: 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:3726
+#: src/elflint.c:3784
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -2705,7 +2785,7 @@
 "Sección [%2zu] '%s' no contenida totalmente en segmento de entrada de "
 "encabezamiento de programa %d\n"
 
-#: src/elflint.c:3734
+#: src/elflint.c:3792
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -2714,7 +2794,7 @@
 "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:3743
+#: src/elflint.c:3801
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -2723,18 +2803,18 @@
 "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:3754
+#: 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:3764
+#: 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:3774
+#: src/elflint.c:3832
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -2742,7 +2822,7 @@
 "Sección [%2zu] '%s': asignación de bandera establecida pero sección no en "
 "ningún segmento cargado\n"
 
-#: src/elflint.c:3780
+#: src/elflint.c:3838
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -2751,7 +2831,7 @@
 "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:3788
+#: src/elflint.c:3846
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -2759,32 +2839,32 @@
 "sección [%2zu] '%s': ficheros reubicables no pueden tener tablas de símbolos "
 "dinámicos\n"
 
-#: src/elflint.c:3839
+#: 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:3862
+#: 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:3873
+#: 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:3879
+#: 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:3890
+#: src/elflint.c:3948
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -2793,26 +2873,26 @@
 "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:3903
+#: src/elflint.c:3961
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "Duplicar índice de versión %d\n"
 
-#: src/elflint.c:3917
+#: 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:3966
+#: 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:3970
+#: src/elflint.c:4028
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
@@ -2820,14 +2900,14 @@
 "Sección [%2d] '%s': tipo de nota de fichero core desconocido %<PRIu32> en "
 "compensación %Zu\n"
 
-#: src/elflint.c:3993
+#: 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:3997
+#: src/elflint.c:4055
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
@@ -2835,40 +2915,40 @@
 "Sección [%2d] '%s': tipo de nota de fichero objeto desconocido %<PRIu32> en "
 "compensación %Zu\n"
 
-#: src/elflint.c:4014
+#: 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:4033
+#: 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:4036
+#: 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:4057
+#: 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:4064
+#: 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:4067
+#: 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:4085
+#: src/elflint.c:4143
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -2876,139 +2956,139 @@
 "Sólo ejecutables, objetos compartidos y ficheros core pueden tener "
 "encabezamientos de programas\n"
 
-#: src/elflint.c:4100
+#: 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:4109
+#: 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:4120
+#: 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:4128
+#: 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:4135
+#: 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:4149
+#: 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:4152
+#: 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:4162
+#: 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:4183
+#: 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:4186
+#: 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:4194 src/elflint.c:4217
+#: 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:4223
+#: 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:4247
+#: 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:4250
+#: 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:4263
+#: 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:4271
+#: 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:4274
+#: 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:4278
+#: 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:4281
+#: 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:4286
+#: 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:4289
+#: 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:4300
+#: 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:4307
+#: 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:4310
+#: src/elflint.c:4368
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -3017,7 +3097,7 @@
 "entrada de encabezamiento de programa %d: compensación de fichero y "
 "dirección virtual no módulo de alineación\n"
 
-#: src/elflint.c:4323
+#: src/elflint.c:4381
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3026,104 +3106,109 @@
 "ejecutable/DSO con sección .eh_frame_hdr no tiene una entrada de "
 "encabezamiento de programa PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4357
+#: 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:4383
+#: 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"
 
-#: src/findtextrel.c:70
+#: src/findtextrel.c:62
 msgid "Input Selection:"
 msgstr "Selección de entrada:"
 
-#: src/findtextrel.c:71
+#: src/findtextrel.c:63
 msgid "Prepend PATH to all file names"
 msgstr "Agregar RUTA a todos los nombres de ficheros"
 
-#: src/findtextrel.c:73
+#: src/findtextrel.c:65
 msgid "Use PATH as root of debuginfo hierarchy"
 msgstr "Usar RUTA como root de jerarquía de debuginfo"
 
-#: src/findtextrel.c:80
+#: src/findtextrel.c:72
 msgid "Locate source of text relocations in FILEs (a.out by default)."
 msgstr ""
 "Localizar origen de reubicaciones de texto en FICHEROS (a.out por defecto)."
 
-#: src/findtextrel.c:84 src/nm.c:116 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:104
+#: src/findtextrel.c:76 src/nm.c:108 src/objdump.c:72 src/size.c:84
+#: src/strings.c:84 src/strip.c:96
 msgid "[FILE...]"
 msgstr "[FICHERO...]"
 
-#: src/findtextrel.c:246
+#: src/findtextrel.c:238
 #, c-format
 msgid "cannot get ELF header '%s': %s"
 msgstr "No se puede obtener encabezamiento ELF '%s': %s"
 
-#: src/findtextrel.c:257
+#: src/findtextrel.c:249
 #, c-format
 msgid "'%s' is not a DSO or PIE"
 msgstr "'%s' es no un DSO o PIE"
 
-#: src/findtextrel.c:277
+#: src/findtextrel.c:269
 #, c-format
 msgid "getting get section header of section %zu: %s"
 msgstr "obtener encabezamiento de sección get de sección %zu: %s"
 
-#: src/findtextrel.c:300
+#: src/findtextrel.c:292
 #, c-format
 msgid "cannot read dynamic section: %s"
 msgstr "No se puede leer sección dinámica: %s"
 
-#: src/findtextrel.c:321
+#: src/findtextrel.c:313
 #, c-format
 msgid "no text relocations reported in '%s'"
 msgstr "no hay reubicaciones de texto reportado en '%s'"
 
-#: src/findtextrel.c:333
+#: src/findtextrel.c:325
 #, c-format
 msgid "while reading ELF file"
 msgstr "Error al leer fichero ELF"
 
-#: src/findtextrel.c:342 src/findtextrel.c:359
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
+#: src/findtextrel.c:329
+#, fuzzy, c-format
+msgid "cannot get program header count: %s"
+msgstr "no se puede obtener memoria para encabezamiento del programa: %s"
+
+#: src/findtextrel.c:340 src/findtextrel.c:357
+#, fuzzy, c-format
+msgid "cannot get program header index at offset %zd: %s"
 msgstr ""
 "Nos se puede obtener el índice de encabezamiento de programa en compensación "
 "%d: %s"
 
-#: src/findtextrel.c:411
+#: src/findtextrel.c:409
 #, c-format
 msgid "cannot get section header of section %Zu: %s"
 msgstr "No se puede obtener encabezamiento de sección %Zu: %s"
 
-#: src/findtextrel.c:423
+#: src/findtextrel.c:421
 #, c-format
 msgid "cannot get symbol table section %zu in '%s': %s"
 msgstr "No se puede obtener tabla de símbolos %zu en '%s': %s"
 
-#: src/findtextrel.c:443 src/findtextrel.c:466
+#: src/findtextrel.c:441 src/findtextrel.c:464
 #, c-format
 msgid "cannot get relocation at index %d in section %zu in '%s': %s"
 msgstr ""
 "No se puede obtener reubicación en índice %d en sección %zu en '%s': %s"
 
-#: src/findtextrel.c:531
+#: src/findtextrel.c:529
 #, c-format
 msgid "%s not compiled with -fpic/-fPIC\n"
 msgstr "%s no compilado con -fpic/-fPIC\n"
 
-#: src/findtextrel.c:584
+#: src/findtextrel.c:582
 #, c-format
 msgid ""
 "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 "El archivo que contiene la función '%s' no está compilado con -fpic/-fPIC\n"
 
-#: src/findtextrel.c:591 src/findtextrel.c:611
+#: src/findtextrel.c:589 src/findtextrel.c:609
 #, c-format
 msgid ""
 "the file containing the function '%s' might not be compiled with -fpic/-"
@@ -3132,7 +3217,7 @@
 "el fichero que contiene la función '%s' podría no estar compilado con -fpic/-"
 "fPIC\n"
 
-#: src/findtextrel.c:599
+#: src/findtextrel.c:597
 #, c-format
 msgid ""
 "either the file containing the function '%s' or the file containing the "
@@ -3141,7 +3226,7 @@
 "Tanto el fichero que contiene la función '%s' como el fichero que contiene "
 "la función '%s' no están compilados con -fpic/-fPIC\n"
 
-#: src/findtextrel.c:619
+#: src/findtextrel.c:617
 #, c-format
 msgid ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
@@ -3149,481 +3234,482 @@
 "Una reubicación modifica memoria en compensación %llu en un segmento "
 "protegido contra escritura\n"
 
-#: src/i386_ld.c:210
+#: src/i386_ld.c:202
 #, c-format
 msgid "cannot allocate PLT section: %s"
 msgstr "No se puede asignar sección PLT: %s"
 
-#: src/i386_ld.c:232
+#: src/i386_ld.c:224
 #, c-format
 msgid "cannot allocate PLTREL section: %s"
 msgstr "No se puede asignar sección PLTREL: %s"
 
-#: src/i386_ld.c:253
+#: src/i386_ld.c:245
 #, c-format
 msgid "cannot allocate GOT section: %s"
 msgstr "No se puede asignar sección GOT: %s"
 
-#: src/i386_ld.c:274
+#: src/i386_ld.c:266
 #, c-format
 msgid "cannot allocate GOTPLT section: %s"
 msgstr "No se puede asignar sección GOTPLT: %s"
 
-#: src/i386_ld.c:661
+#: src/i386_ld.c:653
 #, c-format
 msgid "initial-executable TLS relocation cannot be used "
 msgstr "Reubicación TLS ejecutable-inicial no se puede utilizar"
 
-#: src/ld.c:87
+#: src/ld.c:79
 msgid "Input File Control:"
 msgstr "Control de fichero de entrada:"
 
-#: src/ld.c:89
+#: src/ld.c:81
 msgid "Include whole archives in the output from now on."
 msgstr "A partir de ahora incluye archivos completos en la salida."
 
-#: src/ld.c:91
+#: src/ld.c:83
 msgid "Stop including the whole archives in the output."
 msgstr "Deja de incluir archivos completos en la salida."
 
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
+#: src/ld.c:84 src/ld.c:98 src/ld.c:176
 msgid "FILE"
 msgstr "FICHERO"
 
-#: src/ld.c:93
+#: src/ld.c:85
 msgid "Start a group."
 msgstr "Inicia un grupo"
 
-#: src/ld.c:94
+#: src/ld.c:86
 msgid "End a group."
 msgstr "Termina un grupo."
 
-#: src/ld.c:95
+#: src/ld.c:87
 msgid "PATH"
 msgstr "RUTA"
 
-#: src/ld.c:96
+#: src/ld.c:88
 msgid "Add PATH to list of directories files are searched in."
 msgstr ""
 "Agrega RUTA a la lista de los directorios en los que se realiza la búsqueda."
 
-#: src/ld.c:98
+#: src/ld.c:90
 msgid "Only set DT_NEEDED for following dynamic libs if actually used"
 msgstr ""
 "Sólo se define DT_NEEDED para las siguientes bibliotecas dinámicas, si están "
 "siendo utilizadas"
 
-#: src/ld.c:100
+#: src/ld.c:92
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr "Siempre establece DT_NEEDED para las siguientes bibliotecas dinámicas"
 
-#: src/ld.c:102
+#: src/ld.c:94
 msgid "Ignore LD_LIBRARY_PATH environment variable."
 msgstr "Ignora la variable de entorno LD_LIBRARY_PATH."
 
-#: src/ld.c:105
+#: src/ld.c:97
 msgid "Output File Control:"
 msgstr "Control de fichero de salida:"
 
-#: src/ld.c:106
+#: src/ld.c:98
 msgid "Place output in FILE."
 msgstr "Coloca salida en FICHERO."
 
-#: src/ld.c:109
+#: src/ld.c:101
 msgid "Object is marked to not use default search path at runtime."
 msgstr ""
 "Objeto está marcado para no usar ruta de búsqueda predeterminada en tiempo "
 "de ejecución."
 
-#: src/ld.c:111
+#: src/ld.c:103
 msgid "Same as --whole-archive."
 msgstr "Lo mismo que --whole-archive."
 
-#: src/ld.c:112
+#: src/ld.c:104
 msgid ""
 "Default rules of extracting from archive; weak references are not enough."
 msgstr ""
 "Reglas establecidas por defecto para extraer desde el archivo; las "
 "referencias débiles no son suficientes."
 
-#: src/ld.c:116
+#: src/ld.c:108
 msgid "Weak references cause extraction from archive."
 msgstr "Referencias débiles causan extracción del archivo."
 
-#: src/ld.c:118
+#: src/ld.c:110
 msgid "Allow multiple definitions; first is used."
 msgstr "Permite definiciones múltiples; se utiliza la primera."
 
-#: src/ld.c:120
+#: src/ld.c:112
 msgid "Disallow/allow undefined symbols in DSOs."
 msgstr "Habilita/inhabilita símbolos indefinidos en los DSO."
 
-#: src/ld.c:123
+#: src/ld.c:115
 msgid "Object requires immediate handling of $ORIGIN."
 msgstr "Los objetos requieren manipulación inmediata de $ORIGIN."
 
-#: src/ld.c:125
+#: src/ld.c:117
 msgid "Relocation will not be processed lazily."
 msgstr "La reubicación no se procesará de forma perezosa."
 
-#: src/ld.c:127
+#: src/ld.c:119
 msgid "Object cannot be unloaded at runtime."
 msgstr "El objeto no se puede descargar en tiempo de ejecución."
 
-#: src/ld.c:129
+#: src/ld.c:121
 msgid "Mark object to be initialized first."
 msgstr "Marcar objeto a ser inicializado primero."
 
-#: src/ld.c:131
+#: src/ld.c:123
 msgid "Enable/disable lazy-loading flag for following dependencies."
 msgstr ""
 "Activar/desactivar marca lazy-loading para las siguientes dependencias."
 
-#: src/ld.c:133
+#: src/ld.c:125
 msgid "Mark object as not loadable with 'dlopen'."
 msgstr "Marcar el objeto como no cargable con 'dlopen'"
 
-#: src/ld.c:135
+#: src/ld.c:127
 msgid "Ignore/record dependencies on unused DSOs."
 msgstr "Ignorar/registrar dependencias sobre DSO no utilizados."
 
-#: src/ld.c:137
+#: src/ld.c:129
 msgid "Generated DSO will be a system library."
 msgstr "El DSO generado será una biblioteca del sistema."
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "ADDRESS"
 msgstr "DIRECCIÓN"
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "Set entry point address."
 msgstr "Establecer dirección de entrada de punto"
 
-#: src/ld.c:141
+#: src/ld.c:133
 msgid "Do not link against shared libraries."
 msgstr "No enlazar con bibliotecas compartidas."
 
-#: src/ld.c:144
+#: src/ld.c:136
 msgid "Prefer linking against shared libraries."
 msgstr "No enlazar con bibliotecas compartidas."
 
-#: src/ld.c:145
+#: src/ld.c:137
 msgid "Export all dynamic symbols."
 msgstr "Exportar todos los símbolos dinámicos."
 
-#: src/ld.c:146
+#: src/ld.c:138
 msgid "Strip all symbols."
 msgstr "Descartar todos los símbolos."
 
-#: src/ld.c:147
+#: src/ld.c:139
 msgid "Strip debugging symbols."
 msgstr "Descartar los símbolos de depuración."
 
-#: src/ld.c:149
+#: src/ld.c:141
 msgid "Assume pagesize for the target system to be SIZE."
 msgstr "Asumir que pagesize para el sistema de destino sea SIZE."
 
-#: src/ld.c:151
+#: src/ld.c:143
 msgid "Set runtime DSO search path."
 msgstr "Establecer la ruta de búsqueda tiempo de ejecución DSO."
 
-#: src/ld.c:154
+#: src/ld.c:146
 msgid "Set link time DSO search path."
 msgstr "Establecer ruta de tiempo de enlace DSO."
 
-#: src/ld.c:155
+#: src/ld.c:147
 msgid "Generate dynamic shared object."
 msgstr "Generar objeto compartido dinámico."
 
-#: src/ld.c:156
+#: src/ld.c:148
 msgid "Generate relocatable object."
 msgstr "Generar objeto reubicable"
 
-#: src/ld.c:159
+#: src/ld.c:151
 msgid "Causes symbol not assigned to a version be reduced to local."
 msgstr "Hacer que un símbolo no asignado a una versión sea reducido a local."
 
-#: src/ld.c:160
+#: src/ld.c:152
 msgid "Remove unused sections."
 msgstr "Eliminar las secciones no utilizadas."
 
-#: src/ld.c:163
+#: src/ld.c:155
 msgid "Don't remove unused sections."
 msgstr "No eliminar las secciones no utilizadas."
 
-#: src/ld.c:164
+#: src/ld.c:156
 msgid "Set soname of shared object."
 msgstr "Establecer soname de objeto compartido."
 
-#: src/ld.c:165
+#: src/ld.c:157
 msgid "Set the dynamic linker name."
 msgstr "Establecer el nombre de enlazador dinámico."
 
-#: src/ld.c:168
+#: src/ld.c:160
 msgid "Add/suppress addition indentifying link-editor to .comment section."
 msgstr ""
 "Añadir/suprimir adición identificando enlace-editor para .sección de "
 "comentario."
 
-#: src/ld.c:171
+#: src/ld.c:163
 msgid "Create .eh_frame_hdr section"
 msgstr "Crear una sección .eh_frame_hdr"
 
-#: src/ld.c:173
+#: src/ld.c:165
 msgid "Set hash style to sysv, gnu or both."
 msgstr "Establecer el estilo de dispersión un sysv, gnu o ambos."
 
-#: src/ld.c:175
+#: src/ld.c:167
 msgid "Generate build ID note (md5, sha1 (default), uuid)."
 msgstr "Crear una nota del ID de compilación (md5, sha1 (por defecto), uuid)."
 
-#: src/ld.c:177
+#: src/ld.c:169
 msgid "Linker Operation Control:"
 msgstr "Control de volumen desconocido:"
 
-#: src/ld.c:178
+#: src/ld.c:170
 msgid "Verbose messages."
 msgstr "Mensajes explicativos."
 
-#: src/ld.c:179
+#: src/ld.c:171
 msgid "Trace file opens."
 msgstr "Rastrear apertura de ficheros."
 
-#: src/ld.c:181
+#: src/ld.c:173
 msgid "Trade speed for less memory usage"
 msgstr "Intercambiar velocidad por menor utilización de memoria"
 
-#: src/ld.c:182
+#: src/ld.c:174
 msgid "LEVEL"
 msgstr "NIVEL"
 
-#: src/ld.c:183
+#: src/ld.c:175
 msgid "Set optimization level to LEVEL."
 msgstr "Establecer el nivel de optimización a LEVEL."
 
-#: src/ld.c:184
+#: src/ld.c:176
 msgid "Use linker script in FILE."
 msgstr "Usar script enlazador en FICHERO."
 
-#: src/ld.c:187
+#: src/ld.c:179
 msgid "Select to get parser debug information"
 msgstr "Seleccionar para obtener análisis de información de depuración"
 
-#: src/ld.c:190
+#: src/ld.c:182
 msgid "Read version information from FILE."
 msgstr "Leer información de versión de FICHERO."
 
-#: src/ld.c:191
+#: src/ld.c:183
 msgid "Set emulation to NAME."
 msgstr "Establecer emulación a NOMBRE."
 
-#: src/ld.c:197
+#: src/ld.c:189
 msgid "Combine object and archive files."
 msgstr "Combinar objeto y archivos de almacenamiento."
 
-#: src/ld.c:200
+#: src/ld.c:192
 msgid "[FILE]..."
 msgstr "[FICHERO]..."
 
-#: src/ld.c:333
+#: src/ld.c:325
 #, c-format
 msgid "At least one input file needed"
 msgstr "Se necesita al menos un fichero de entrada"
 
-#: src/ld.c:349
+#: src/ld.c:341
 #, c-format
 msgid "error while preparing linking"
 msgstr "Error al preparar vinculación"
 
-#: src/ld.c:356
+#: src/ld.c:348
 #, c-format
 msgid "cannot open linker script '%s'"
 msgstr "no se puede abrir script enlazador '%s'"
 
-#: src/ld.c:397
+#: src/ld.c:389
 #, c-format
 msgid "-( without matching -)"
 msgstr "-( sin coincidir -)"
 
-#: src/ld.c:572 src/ld.c:610
+#: src/ld.c:564 src/ld.c:602
 #, c-format
 msgid "only one option of -G and -r is allowed"
 msgstr "Solamente una opción de -G y -r es permitida"
 
-#: src/ld.c:594
+#: src/ld.c:586
 #, c-format
 msgid "more than one '-m' parameter"
 msgstr "más de un parámetro '-m'"
 
-#: src/ld.c:604 src/ld.c:1013
+#: src/ld.c:596 src/ld.c:1005
 #, c-format
 msgid "unknown option `-%c %s'"
 msgstr "opción desconocida `-%c %s'"
 
-#: src/ld.c:646
+#: src/ld.c:638
 #, c-format
 msgid "invalid page size value '%s': ignored"
 msgstr "Valor de tamaño de página'%s': ignorado"
 
-#: src/ld.c:687
+#: src/ld.c:679
 #, c-format
 msgid "invalid hash style '%s'"
 msgstr "estilo de dispersión inválido '%s'"
 
-#: src/ld.c:697
+#: src/ld.c:689
 #, c-format
 msgid "invalid build-ID style '%s'"
 msgstr "estilo de cuerpo-ID inválido '%s'"
 
-#: src/ld.c:785
+#: src/ld.c:777
 #, c-format
 msgid "More than one output file name given."
 msgstr "Se ha dado más de un nombre de archivo de salida."
 
-#: src/ld.c:802
+#: src/ld.c:794
 #, c-format
 msgid "Invalid optimization level `%s'"
 msgstr "Nivel de optimización inválido `%s'"
 
-#: src/ld.c:850
+#: src/ld.c:842
 #, c-format
 msgid "nested -( -) groups are not allowed"
 msgstr "no se permiten grupos -( -) en nido"
 
-#: src/ld.c:869
+#: src/ld.c:861
 #, c-format
 msgid "-) without matching -("
 msgstr "-) sin coincidir -("
 
-#: src/ld.c:1046
+#: src/ld.c:1038
 #, c-format
 msgid "unknown option '-%c %s'"
 msgstr "Opción desconocida '-%c %s'"
 
-#: src/ld.c:1150
+#: src/ld.c:1142
 #, c-format
 msgid "could not find input file to determine output file format"
 msgstr ""
 "no se pudo encontrar un archivo de entrada que determine el formato del "
 "archivo de salida"
 
-#: src/ld.c:1152
+#: src/ld.c:1144
 #, c-format
 msgid "try again with an appropriate '-m' parameter"
 msgstr "Inténtelo con una parámetro '-m' apropiado"
 
-#: src/ld.c:1446
+#: src/ld.c:1438
 #, c-format
 msgid "cannot read version script '%s'"
 msgstr "No se puede leer script de versión '%s'"
 
-#: src/ld.c:1512 src/ld.c:1551
+#: src/ld.c:1504 src/ld.c:1543
 #, c-format
 msgid "duplicate definition of '%s' in linker script"
 msgstr "Duplicar definición de '%s' en script enlazador"
 
-#: src/ldgeneric.c:209 src/ldgeneric.c:5149
+#: src/ldgeneric.c:201 src/ldgeneric.c:5141
 #, c-format
 msgid "cannot create string table"
 msgstr "no puede crear tabla de cadenas"
 
-#: src/ldgeneric.c:255
+#: src/ldgeneric.c:247
 #, c-format
 msgid "cannot load ld backend library '%s': %s"
 msgstr "no se puede cargar biblioteca ID de segundo plano '%s': %s"
 
-#: src/ldgeneric.c:265
+#: src/ldgeneric.c:257
 #, c-format
 msgid "cannot find init function in ld backend library '%s': %s"
 msgstr ""
 "no se pudo encontrar la función init en la biblioteca ld de segundo plano "
 "'%s': %s"
 
-#: src/ldgeneric.c:308
+#: src/ldgeneric.c:300
 #, c-format
 msgid "%s listed more than once as input"
 msgstr "%s listado más de una vez como entrada"
 
-#: src/ldgeneric.c:422
+#: src/ldgeneric.c:414
 #, c-format
 msgid "%s (for -l%s)\n"
 msgstr "%s (para -l%s)\n"
 
-#: src/ldgeneric.c:423
+#: src/ldgeneric.c:415
 #, c-format
 msgid "%s (for DT_NEEDED %s)\n"
 msgstr "%s (para DT_NEEDED %s)\n"
 
-#: src/ldgeneric.c:571
+#: src/ldgeneric.c:563
 #, c-format
 msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
 msgstr "Advertencia: el tipo de `%s' cambió de %s en %s a %s en %s"
 
-#: src/ldgeneric.c:584
+#: src/ldgeneric.c:576
 #, c-format
 msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
 msgstr ""
 "Advertencia: el tamaño de `%s' cambió de %<PRIu64> en %s a %<PRIu64> en %s"
 
-#: src/ldgeneric.c:659 src/ldgeneric.c:1120 src/readelf.c:642 src/strip.c:570
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:568
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "no se pudieron determinar el número de secciones: %s"
 
-#: src/ldgeneric.c:675
+#: src/ldgeneric.c:667
 #, c-format
 msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
 msgstr "(%s+%#<PRIx64>): definición múltiplo de %s `%s'\n"
 
-#: src/ldgeneric.c:698
+#: src/ldgeneric.c:690
 #, c-format
 msgid "(%s+%#<PRIx64>): first defined here\n"
 msgstr "(%s+%#<PRIx64>): se definió primero aquí\n"
 
-#: src/ldgeneric.c:817
+#: src/ldgeneric.c:809
 #, c-format
 msgid "%s: cannot get section group data: %s"
 msgstr "%s: no se pueden obtener datos de sección de grupo: %s"
 
-#: src/ldgeneric.c:838
+#: src/ldgeneric.c:830
 #, c-format
 msgid "%s: section '%s' with group flag set does not belong to any group"
 msgstr ""
 "%s: la sección '%s' con bandera de grupo establecida no pertenece a ningún "
 "grupo"
 
-#: src/ldgeneric.c:883
+#: src/ldgeneric.c:875
 #, c-format
 msgid "%s: section [%2d] '%s' is not in the correct section group"
 msgstr ""
 "%s: la sección [%2d] '%s' no se encuentra en el grupo de sección correcto"
 
-#: src/ldgeneric.c:1154 src/ldgeneric.c:1411 src/ldgeneric.c:1420
-#: src/ldgeneric.c:1479 src/ldgeneric.c:1488 src/ldgeneric.c:1751
-#: src/ldgeneric.c:2003
+#: src/ldgeneric.c:1146 src/ldgeneric.c:1403 src/ldgeneric.c:1412
+#: src/ldgeneric.c:1471 src/ldgeneric.c:1480 src/ldgeneric.c:1743
+#: src/ldgeneric.c:1995
 #, c-format
 msgid "%s: invalid ELF file (%s:%d)\n"
 msgstr "%s: fichero ELF inválido (%s:%d)\n"
 
-#: src/ldgeneric.c:1248
+#: src/ldgeneric.c:1240
 #, c-format
 msgid "%s: only files of type ET_REL might contain section groups"
 msgstr "%s: solo archivos de tipo ET_REL pueden contener grupos de sección"
 
-#: src/ldgeneric.c:1300
+#: src/ldgeneric.c:1292
 #, c-format
 msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
 msgstr ""
 "%s: no es posible determinar la firma del grupo de sección [%2zd] '%s': %s "
 
-#: src/ldgeneric.c:1312
+#: src/ldgeneric.c:1304
 #, c-format
 msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
 msgstr ""
 "%s: no es posible obtener el contenido de la sección del grupo [%2zd] '%s': "
 "%s'"
 
-#: src/ldgeneric.c:1326
+#: src/ldgeneric.c:1318
 #, c-format
 msgid ""
 "%s: group member %zu of section group [%2zd] '%s' has too high index: "
@@ -3632,79 +3718,79 @@
 "%s el miembro del grupo %zu del grupo de sección [%2zd] '%s' posee el índice "
 "demasiado alto: %<PRIu32>"
 
-#: src/ldgeneric.c:1348
+#: src/ldgeneric.c:1340
 #, c-format
 msgid "%s: section '%s' has unknown type: %d"
 msgstr "%s: sección '%s' tiene tipo desconocido: %d"
 
-#: src/ldgeneric.c:1727
+#: src/ldgeneric.c:1719
 #, c-format
 msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
 msgstr "no es posible obtener descriptor para el archivo ELF (%s:%d): %s\n"
 
-#: src/ldgeneric.c:1897
+#: src/ldgeneric.c:1889
 #, c-format
 msgid "cannot read archive `%s': %s"
 msgstr "no se puede leer archivo `%s': %s"
 
-#: src/ldgeneric.c:2018
+#: src/ldgeneric.c:2010
 #, c-format
 msgid "file of type %s cannot be linked in\n"
 msgstr "archivo de tipo %s no puede ser enlazado en\n"
 
-#: src/ldgeneric.c:2030
+#: src/ldgeneric.c:2022
 #, c-format
 msgid "%s: input file incompatible with ELF machine type %s\n"
 msgstr "%s: el archivo ingresado es incompatible con una máquina ELF tipo %s\n"
 
-#: src/ldgeneric.c:2042
+#: src/ldgeneric.c:2034
 #, c-format
 msgid "%s: cannot get section header string table index: %s\n"
 msgstr ""
 "%s: no se ha podido obtener un índice para la tabla de la cadena del "
 "encabezamiento de la sección: %s\n"
 
-#: src/ldgeneric.c:2071
+#: src/ldgeneric.c:2063
 #, c-format
 msgid "cannot use DSO '%s' when generating relocatable object file"
 msgstr ""
 "no es posible utilizar DSO '%s' al general un archivo de objeto realojable"
 
-#: src/ldgeneric.c:2156
+#: src/ldgeneric.c:2148
 #, c-format
 msgid "input file '%s' ignored"
 msgstr "archivo de entrada '%s' ignorado"
 
-#: src/ldgeneric.c:2370
+#: src/ldgeneric.c:2362
 #, c-format
 msgid "undefined symbol `%s' in %s"
 msgstr "símbolo indefinido `%s' en %s"
 
-#: src/ldgeneric.c:2700
+#: src/ldgeneric.c:2692
 #, c-format
 msgid "cannot create ELF descriptor for output file: %s"
 msgstr "no es posible crear un descriptor ELF para el archivo de salida: %s"
 
-#: src/ldgeneric.c:2707
+#: src/ldgeneric.c:2699
 #, c-format
 msgid "could not create ELF header for output file: %s"
 msgstr ""
 "no es posible crear un encabezamiento ELF para el archivo de salida: %s"
 
-#: src/ldgeneric.c:3222 src/ldgeneric.c:3292 src/ldgeneric.c:3328
-#: src/ldgeneric.c:4455 src/ldgeneric.c:4504 src/ldgeneric.c:4536
-#: src/ldgeneric.c:4771 src/ldgeneric.c:4826 src/ldgeneric.c:5073
-#: src/ldgeneric.c:5129 src/ldgeneric.c:5598 src/ldgeneric.c:5610
+#: src/ldgeneric.c:3214 src/ldgeneric.c:3284 src/ldgeneric.c:3320
+#: src/ldgeneric.c:4447 src/ldgeneric.c:4496 src/ldgeneric.c:4528
+#: src/ldgeneric.c:4763 src/ldgeneric.c:4818 src/ldgeneric.c:5065
+#: src/ldgeneric.c:5121 src/ldgeneric.c:5590 src/ldgeneric.c:5602
 #, c-format
 msgid "cannot create section for output file: %s"
 msgstr "no se puede crear sección para archivo de salida: %s"
 
-#: src/ldgeneric.c:3442
+#: src/ldgeneric.c:3434
 #, c-format
 msgid "address computation expression contains variable '%s'"
 msgstr "la expresión de computación contiene la variable '%s'"
 
-#: src/ldgeneric.c:3487
+#: src/ldgeneric.c:3479
 #, c-format
 msgid ""
 "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
@@ -3713,222 +3799,222 @@
 "el argumento '%<PRIuMAX>' de ALIGN en expresión de dirección de computación "
 "no es potencia de dos"
 
-#: src/ldgeneric.c:3682
+#: src/ldgeneric.c:3674
 #, c-format
 msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 msgstr ""
 "no se puede encontrar símbolo de entrada '%s': predeterminada para "
 "%#0*<PRIx64>"
 
-#: src/ldgeneric.c:3688
+#: src/ldgeneric.c:3680
 #, c-format
 msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
 msgstr ""
 "no se ha especificado una entrada de símbolo: estableciendo por defecto a "
 "%#0*<PRIx64>"
 
-#: src/ldgeneric.c:3918
+#: src/ldgeneric.c:3910
 #, c-format
 msgid "cannot create GNU hash table section for output file: %s"
 msgstr ""
 "no se puede crear una tabla de dispersión GNU para archivo de salida: %s"
 
-#: src/ldgeneric.c:4069
+#: src/ldgeneric.c:4061
 #, c-format
 msgid "cannot create hash table section for output file: %s"
 msgstr ""
 "no es posible crear una sección para la tabla de dispersión del archivo de "
 "salida: %s"
 
-#: src/ldgeneric.c:4112
+#: src/ldgeneric.c:4104
 #, c-format
 msgid "cannot create build ID section: %s"
 msgstr "no se puede crear sección de creación de ID: %s"
 
-#: src/ldgeneric.c:4189
+#: src/ldgeneric.c:4181
 #, c-format
 msgid "cannot convert section data to file format: %s"
 msgstr ""
 "no es posible convertir los datos de la sección en formato de archivo: %s"
 
-#: src/ldgeneric.c:4198
+#: src/ldgeneric.c:4190
 #, c-format
 msgid "cannot convert section data to memory format: %s"
 msgstr "no es posible convertir datos de la sección en formato de memoria: %s"
 
-#: src/ldgeneric.c:4259
+#: src/ldgeneric.c:4251
 #, c-format
 msgid "cannot read enough data for UUID"
 msgstr "no es posible leer suficientes datos para el UUID"
 
-#: src/ldgeneric.c:4356 src/ldgeneric.c:4377 src/ldgeneric.c:4406
-#: src/ldgeneric.c:6059
+#: src/ldgeneric.c:4348 src/ldgeneric.c:4369 src/ldgeneric.c:4398
+#: src/ldgeneric.c:6051
 #, c-format
 msgid "cannot create symbol table for output file: %s"
 msgstr "no es posible crear tabla de símbolo para el comando de salida: %s"
 
-#: src/ldgeneric.c:5298 src/ldgeneric.c:5850
+#: src/ldgeneric.c:5290 src/ldgeneric.c:5842
 #, c-format
 msgid "section index too large in dynamic symbol table"
 msgstr ""
 "el índice de la sección es demasiado extenso en la tabla de símbolos "
 "dinámicos"
 
-#: src/ldgeneric.c:5743
+#: src/ldgeneric.c:5735
 #, c-format
 msgid "cannot create versioning section: %s"
 msgstr "no se puede crear sección de versión: %s"
 
-#: src/ldgeneric.c:5816
+#: src/ldgeneric.c:5808
 #, c-format
 msgid "cannot create dynamic symbol table for output file: %s"
 msgstr ""
 "no es posible crear tabla de símbolos dinámicos para el archivo de salida: %s"
 
-#: src/ldgeneric.c:5991
+#: src/ldgeneric.c:5983
 #, c-format
 msgid "cannot create versioning data: %s"
 msgstr "no se pueden crear datos de versión: %s"
 
-#: src/ldgeneric.c:6091 src/ldgeneric.c:6104 src/ldgeneric.c:6168
-#: src/ldgeneric.c:6176
+#: src/ldgeneric.c:6083 src/ldgeneric.c:6096 src/ldgeneric.c:6160
+#: src/ldgeneric.c:6168
 #, c-format
 msgid "cannot create section header string section: %s"
 msgstr "no se puede crear sección de cadenas de encabezamiento de sección: %s"
 
-#: src/ldgeneric.c:6098
+#: src/ldgeneric.c:6090
 #, c-format
 msgid "cannot create section header string section"
 msgstr "no se puede crear sección de cadenas de encabezamiento de sección"
 
-#: src/ldgeneric.c:6256
+#: src/ldgeneric.c:6248
 #, c-format
 msgid "cannot create program header: %s"
 msgstr "no se puede crear encabezamiento de programa: %s"
 
-#: src/ldgeneric.c:6264
+#: src/ldgeneric.c:6256
 #, c-format
 msgid "while determining file layout: %s"
 msgstr "al determinar diseño de fichero: %s"
 
-#: src/ldgeneric.c:6385
+#: src/ldgeneric.c:6377
 #, c-format
 msgid "internal error: non-nobits section follows nobits section"
 msgstr "error interno: sección non-nobits sigue a sección nobits"
 
-#: src/ldgeneric.c:6922
+#: src/ldgeneric.c:6914
 #, c-format
 msgid "cannot get header of 0th section: %s"
 msgstr "No se puede obtener encabezamiento de sección 0th: %s"
 
-#: src/ldgeneric.c:6938 src/unstrip.c:1818
+#: src/ldgeneric.c:6930 src/unstrip.c:1822
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "No se puede actualizar encabezamiento ELF: %s"
 
-#: src/ldgeneric.c:6969
+#: src/ldgeneric.c:6961
 #, c-format
 msgid "linker backend didn't specify function to relocate section"
 msgstr "enlazador de segundo plano no especificó función para reubicar sección"
 
-#: src/ldgeneric.c:6981
+#: src/ldgeneric.c:6973
 #, c-format
 msgid "while writing output file: %s"
 msgstr "Ocurrió un error de fichero de salida: %s"
 
-#: src/ldgeneric.c:6986
+#: src/ldgeneric.c:6978
 #, c-format
 msgid "while finishing output file: %s"
 msgstr "error al cerrar el fichero de salida: %s"
 
-#: src/ldgeneric.c:6992
+#: src/ldgeneric.c:6984
 #, c-format
 msgid "cannot stat output file"
 msgstr "no se puede generar stat de fichero de salida"
 
-#: src/ldgeneric.c:7008
+#: src/ldgeneric.c:7000
 #, c-format
 msgid "WARNING: temporary output file overwritten before linking finished"
 msgstr ""
 "ADVERTENCIA: archivo de salida temporal sobreescrito antes que haya "
 "concluido el enlazamiento"
 
-#: src/ldgeneric.c:7061 src/ldgeneric.c:7072 src/ldgeneric.c:7083
-#: src/ldgeneric.c:7094 src/ldgeneric.c:7113 src/ldgeneric.c:7126
-#: src/ldgeneric.c:7138
+#: src/ldgeneric.c:7053 src/ldgeneric.c:7064 src/ldgeneric.c:7075
+#: src/ldgeneric.c:7086 src/ldgeneric.c:7105 src/ldgeneric.c:7118
+#: src/ldgeneric.c:7130
 #, c-format
 msgid "no machine specific '%s' implementation"
 msgstr "no hay máquina específica de implementación '%s'"
 
-#: src/ldscript.y:178
+#: src/ldscript.y:170
 msgid "mode for segment invalid\n"
 msgstr "modo para segmento inválido\n"
 
-#: src/ldscript.y:465
+#: src/ldscript.y:457
 #, c-format
 msgid "while reading version script '%s': %s at line %d"
 msgstr "al leer script de versión '%s': %s en línea %d"
 
-#: src/ldscript.y:466
+#: src/ldscript.y:458
 #, c-format
 msgid "while reading linker script '%s': %s at line %d"
 msgstr "al leer script de enlace '%s': %s en línea %d"
 
-#: src/ldscript.y:745
+#: src/ldscript.y:737
 #, c-format
 msgid "symbol '%s' is declared both local and global for unnamed version"
 msgstr ""
 "el símbolo '%s' es declarado tanto local como global para la versión sin "
 "nombre"
 
-#: src/ldscript.y:747
+#: src/ldscript.y:739
 #, c-format
 msgid "symbol '%s' is declared both local and global for version '%s'"
 msgstr ""
 "el símbolo '%s' es declarado tanto local como global para la versión '%s'"
 
-#: src/ldscript.y:767 src/ldscript.y:774
+#: src/ldscript.y:759 src/ldscript.y:766
 #, c-format
 msgid "default visibility set as local and global"
 msgstr "la visibilidad establecida por defecto establecida como local y global"
 
-#: src/nm.c:74 src/strip.c:76
+#: src/nm.c:66 src/strip.c:68
 msgid "Output selection:"
 msgstr "Selección de salida:"
 
-#: src/nm.c:75
+#: src/nm.c:67
 msgid "Display debugger-only symbols"
 msgstr "Mostrar sólo símbolos del depurador"
 
-#: src/nm.c:76
+#: src/nm.c:68
 msgid "Display only defined symbols"
 msgstr "Mostrar sólo símbolos definidos"
 
-#: src/nm.c:79
+#: src/nm.c:71
 msgid "Display dynamic symbols instead of normal symbols"
 msgstr "Mostrar símbolos dinámicos en lugar de símbolos normales"
 
-#: src/nm.c:80
+#: src/nm.c:72
 msgid "Display only external symbols"
 msgstr "Mostrar sólo símbolos externos"
 
-#: src/nm.c:81
+#: src/nm.c:73
 msgid "Display only undefined symbols"
 msgstr "Mostrar sólo símbolos indefinidos"
 
-#: src/nm.c:83
+#: src/nm.c:75
 msgid "Include index for symbols from archive members"
 msgstr "Incluir índices para símbolos de miembros de archivo"
 
-#: src/nm.c:85 src/size.c:66
+#: src/nm.c:77 src/size.c:58
 msgid "Output format:"
 msgstr "Formato de salida:"
 
-#: src/nm.c:87
+#: src/nm.c:79
 msgid "Print name of the input file before every symbol"
 msgstr "Imprimir nombre de archivo de entrada antes de cada símbolo"
 
-#: src/nm.c:90
+#: src/nm.c:82
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd', `sysv' or `posix'.  The "
 "default is `sysv'"
@@ -3936,73 +4022,73 @@
 "Usar el formato de salida FORMATO.  FORMATO puede ser o bien `bsd', o "
 "`sysv', o `posix'. El establecido por defecto es `sysv'"
 
-#: src/nm.c:92
+#: src/nm.c:84
 msgid "Same as --format=bsd"
 msgstr "lo mismo que --format=bsd"
 
-#: src/nm.c:93
+#: src/nm.c:85
 msgid "Same as --format=posix"
 msgstr "lo mismo que --format=posix"
 
-#: src/nm.c:94 src/size.c:72
+#: src/nm.c:86 src/size.c:64
 msgid "Use RADIX for printing symbol values"
 msgstr "Utilizar RADIX para imprimir valores de símbolo"
 
-#: src/nm.c:95
+#: src/nm.c:87
 #, fuzzy
 msgid "Mark special symbols"
 msgstr "Marcar símbolos débiles"
 
-#: src/nm.c:97
+#: src/nm.c:89
 msgid "Print size of defined symbols"
 msgstr "Tamaño de impresión de símbolos definidos"
 
-#: src/nm.c:99 src/size.c:80 src/strip.c:81 src/unstrip.c:81
+#: src/nm.c:91 src/size.c:72 src/strip.c:73 src/unstrip.c:73
 msgid "Output options:"
 msgstr "Opciones de salida:"
 
-#: src/nm.c:100
+#: src/nm.c:92
 msgid "Sort symbols numerically by address"
 msgstr "Ordenar los símbolos numéricos por dirección"
 
-#: src/nm.c:102
+#: src/nm.c:94
 msgid "Do not sort the symbols"
 msgstr "No ordenar los símbolos"
 
-#: src/nm.c:103
+#: src/nm.c:95
 msgid "Reverse the sense of the sort"
 msgstr "Invertir el orden"
 
-#: src/nm.c:106
+#: src/nm.c:98
 msgid "Decode low-level symbol names into source code names"
 msgstr ""
 
-#: src/nm.c:113
+#: src/nm.c:105
 msgid "List symbols from FILEs (a.out by default)."
 msgstr "Listar símbolos de FICHEROS (a.out por defecto)."
 
-#: src/nm.c:124 src/objdump.c:88
+#: src/nm.c:116 src/objdump.c:80
 #, fuzzy
 msgid "Output formatting"
 msgstr "Formato de salida:"
 
-#: src/nm.c:148 src/objdump.c:112 src/size.c:117 src/strip.c:128
+#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
 #, c-format
 msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
 msgstr "%s: ERROR INTERNO %d (%s-%s): %s"
 
-#: src/nm.c:406 src/nm.c:418 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:2132
+#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
+#: src/strip.c:2160
 #, c-format
 msgid "while closing '%s'"
 msgstr "error al cerrar '%s'"
 
-#: src/nm.c:428 src/objdump.c:304 src/strip.c:384
+#: src/nm.c:420 src/objdump.c:296 src/strip.c:376
 #, c-format
 msgid "%s: File format not recognized"
 msgstr "%s: No se reconoce el formato del fichero"
 
-#: src/nm.c:468
+#: src/nm.c:460
 #, fuzzy
 msgid ""
 "\n"
@@ -4011,42 +4097,42 @@
 "\n"
 "Índice de archivo:"
 
-#: src/nm.c:477
+#: src/nm.c:469
 #, c-format
 msgid "invalid offset %zu for symbol %s"
 msgstr "Compensación %zu inválida para símbolo %s"
 
-#: src/nm.c:482
+#: src/nm.c:474
 #, c-format
 msgid "%s in %s\n"
 msgstr "%s en %s\n"
 
-#: src/nm.c:490
+#: src/nm.c:482
 #, c-format
 msgid "cannot reset archive offset to beginning"
 msgstr "imposible restablecer compensación de archivo al inicio"
 
-#: src/nm.c:514 src/objdump.c:352
+#: src/nm.c:506 src/objdump.c:344
 #, c-format
 msgid "%s%s%s: file format not recognized"
 msgstr "%s%s%s: no se reconoció el formato de fichero"
 
-#: src/nm.c:726
+#: src/nm.c:718
 #, c-format
 msgid "cannot create search tree"
 msgstr "No se puede crear el árbol de búsqueda"
 
-#: src/nm.c:765 src/nm.c:1164 src/objdump.c:795 src/readelf.c:898
-#: src/readelf.c:1041 src/readelf.c:1189 src/readelf.c:1371 src/readelf.c:1571
-#: src/readelf.c:1757 src/readelf.c:1967 src/readelf.c:2221 src/readelf.c:2287
-#: src/readelf.c:2365 src/readelf.c:2863 src/readelf.c:2899 src/readelf.c:2961
-#: src/readelf.c:7307 src/readelf.c:8212 src/readelf.c:8359 src/readelf.c:8427
-#: src/size.c:425 src/size.c:499 src/strip.c:510
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:793 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:1975 src/readelf.c:2202 src/readelf.c:2460
+#: src/readelf.c:2536 src/readelf.c:2623 src/readelf.c:3201 src/readelf.c:3237
+#: src/readelf.c:3300 src/readelf.c:8187 src/readelf.c:9273 src/readelf.c:9420
+#: src/readelf.c:9488 src/size.c:417 src/size.c:486 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:790
+#: src/nm.c:784
 #, c-format
 msgid ""
 "\n"
@@ -4059,7 +4145,7 @@
 "Símbolos de %s:\n"
 "\n"
 
-#: src/nm.c:793
+#: src/nm.c:787
 #, c-format
 msgid ""
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
@@ -4068,74 +4154,74 @@
 "%*s%-*s %-*s Clase  Tipo     %-*s %*s Sección\n"
 "\n"
 
-#: src/nm.c:1174
+#: 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:1178
+#: 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:1436
+#: 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:1493
+#: src/nm.c:1492
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: No hay símbolos"
 
-#: src/objdump.c:61
+#: src/objdump.c:53
 msgid "Mode selection:"
 msgstr "Selección de modo:"
 
-#: src/objdump.c:62
+#: src/objdump.c:54
 msgid "Display relocation information."
 msgstr "Mostrar la reubicación de información."
 
-#: src/objdump.c:64
+#: src/objdump.c:56
 msgid "Display the full contents of all sections requested"
 msgstr "Mostrar el contenido total de todas las secciones solicitadas"
 
-#: src/objdump.c:66
+#: src/objdump.c:58
 msgid "Display assembler code of executable sections"
 msgstr "Mostrar código de ensamblador de secciones ejecutables"
 
-#: src/objdump.c:68
+#: src/objdump.c:60
 #, fuzzy
 msgid "Output content selection:"
 msgstr "Selección de opción de salida:"
 
-#: src/objdump.c:70
+#: src/objdump.c:62
 msgid "Only display information for section NAME."
 msgstr "Sólo muestra información para NOMBRE de sección."
 
-#: src/objdump.c:76
+#: src/objdump.c:68
 msgid "Show information from FILEs (a.out by default)."
 msgstr "Muestra información de FICHEROS (a.out por defecto)."
 
-#: src/objdump.c:244 src/readelf.c:441
+#: src/objdump.c:236 src/readelf.c:473
 msgid "No operation specified.\n"
 msgstr "No se especificó una operación.\n"
 
-#: src/objdump.c:282 src/objdump.c:294
+#: src/objdump.c:274 src/objdump.c:286
 #, c-format
 msgid "while close `%s'"
 msgstr "mientras cierra `%s'"
 
-#: src/objdump.c:387 src/readelf.c:1666 src/readelf.c:1840
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2072
 msgid "INVALID SYMBOL"
 msgstr "SÍMBOLO INVÁLIDO"
 
-#: src/objdump.c:402 src/readelf.c:1697 src/readelf.c:1873
+#: src/objdump.c:394 src/readelf.c:1914 src/readelf.c:2108
 msgid "INVALID SECTION"
 msgstr "SECCIÓN INVÁLIDA"
 
-#: src/objdump.c:518
+#: src/objdump.c:514
 #, c-format
 msgid ""
 "\n"
@@ -4146,227 +4232,289 @@
 "REUBICACIÓN DE REGISTROS PARA [%s]:\n"
 "%-*s TIPO                 VALOR\n"
 
-#: src/objdump.c:521
+#: src/objdump.c:517
 msgid "OFFSET"
 msgstr "COMPENSACIÓN"
 
-#: src/objdump.c:584
+#: src/objdump.c:582
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Contenido de la sección %s:\n"
 
-#: src/objdump.c:705
+#: src/objdump.c:703
 #, c-format
 msgid "cannot disassemble"
 msgstr "No se puede desensamblar"
 
-#: src/objdump.c:744
+#: src/objdump.c:742
 #, fuzzy, c-format
 msgid "cannot allocate memory"
 msgstr "No se puede asignar sección PLT: %s"
 
-#: src/ranlib.c:74
+#: src/ranlib.c:66
 msgid "Generate an index to speed access to archives."
 msgstr " Generar un índice para acelerar el acceso a los archivos."
 
-#: src/ranlib.c:77
+#: src/ranlib.c:69
 msgid "ARCHIVE"
 msgstr "ARCHIVO "
 
-#: src/ranlib.c:116
+#: src/ranlib.c:108
 #, c-format
 msgid "Archive name required"
 msgstr "Se requiere nombre de archivo"
 
-#: src/ranlib.c:194
+#: src/ranlib.c:186
 #, c-format
 msgid "'%s' is no archive"
 msgstr "%s: no es un archivo"
 
-#: src/ranlib.c:229
+#: src/ranlib.c:221
 #, c-format
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr "error al liberar descriptor sub-ELF: %s"
 
+#: 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:75
+#: 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:76
+#: src/readelf.c:78
 msgid "Display the dynamic segment"
 msgstr "Mostrar el segmento dinámico"
 
-#: src/readelf.c:77
+#: src/readelf.c:79
 msgid "Display the ELF file header"
 msgstr "Mostrar el encabezamiento del fichero ELF"
 
-#: src/readelf.c:79
+#: 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:80
+#: src/readelf.c:82
 msgid "Display the program headers"
 msgstr "Mostrar encabezamientos de programa"
 
-#: src/readelf.c:82
+#: src/readelf.c:84
 msgid "Display relocations"
 msgstr "Mostrar reubicaciones"
 
-#: src/readelf.c:83
+#: src/readelf.c:85
 msgid "Display the sections' headers"
 msgstr "Mostrar los encabezados de las secciones"
 
-#: src/readelf.c:85
+#: src/readelf.c:87
 msgid "Display the symbol table"
 msgstr "Mostrar la tabla de símbolos"
 
-#: src/readelf.c:86
+#: src/readelf.c:88
 msgid "Display versioning information"
 msgstr "Mostrar información de versión"
 
-#: src/readelf.c:87
+#: src/readelf.c:89
 msgid "Display the ELF notes"
 msgstr "Mostrar las notas ELF"
 
-#: src/readelf.c:89
+#: 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:91
+#: src/readelf.c:93
 msgid "Display sections for exception handling"
 msgstr "Muestra secciones para manejo de excepciones"
 
-#: src/readelf.c:93
+#: src/readelf.c:95
 msgid "Additional output selection:"
 msgstr "Selección de salida adicional:"
 
-#: src/readelf.c:95
+#: 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, 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:99
+#: 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:101
+#: src/readelf.c:103
 msgid "Print string contents of sections"
 msgstr "Imprime contenido de cadena de secciones"
 
-#: src/readelf.c:104
+#: 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:106
+#: src/readelf.c:108
 msgid "Output control:"
 msgstr "Control de salida:"
 
-#: src/readelf.c:108
+#: 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:110
+#: 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:115
+#: 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:412
+#: 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:478
+#: 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:490
+#: 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:495
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9440
+#: src/unstrip.c:356 src/unstrip.c:387 src/unstrip.c:436 src/unstrip.c:544
+#: src/unstrip.c:561 src/unstrip.c:597 src/unstrip.c:795 src/unstrip.c:1063
+#: src/unstrip.c:1254 src/unstrip.c:1314 src/unstrip.c:1435 src/unstrip.c:1488
+#: src/unstrip.c:1595 src/unstrip.c:1784
+#, 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:5398 src/readelf.c:7671 src/readelf.c:7773
+#: src/readelf.c:7939
+#, 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: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:587
+#: 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:589
+#: src/readelf.c:771
 #, c-format
 msgid "input file is empty"
 msgstr "archivo de entrada vacío"
 
-#: src/readelf.c:591
+#: src/readelf.c:773
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "Falló lectura de '%s': %s"
 
-#: src/readelf.c:627
+#: src/readelf.c:814
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr "no se pudo leer encabezamiento ELF: %s"
 
-#: src/readelf.c:635
+#: src/readelf.c:822
 #, c-format
 msgid "cannot create EBL handle"
 msgstr "no se puede crear EBL"
 
-#: src/readelf.c:648
+#: 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:734
+#: src/readelf.c:921
 msgid "NONE (None)"
 msgstr "NONE (Ninguno)"
 
-#: src/readelf.c:735
+#: src/readelf.c:922
 msgid "REL (Relocatable file)"
 msgstr "REL (Fichero reubicable)"
 
-#: src/readelf.c:736
+#: src/readelf.c:923
 msgid "EXEC (Executable file)"
 msgstr "EXEC (Fichero ejecutable)"
 
-#: src/readelf.c:737
+#: src/readelf.c:924
 msgid "DYN (Shared object file)"
 msgstr "DYN (Fichero objeto compartido)"
 
-#: src/readelf.c:738
+#: src/readelf.c:925
 msgid "CORE (Core file)"
 msgstr "CORE (Fichero núcleo)"
 
-#: src/readelf.c:743
+#: src/readelf.c:930
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr "OS Specific: (%x)\n"
 
-#: src/readelf.c:745
+#: src/readelf.c:932
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr "Específico del procesador: (%x)\n"
 
-#: src/readelf.c:755
+#: src/readelf.c:942
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
@@ -4374,7 +4522,7 @@
 "Encabezamiento ELF:\n"
 "  Mágico:  "
 
-#: src/readelf.c:759
+#: src/readelf.c:946
 #, c-format
 msgid ""
 "\n"
@@ -4383,119 +4531,119 @@
 "\n"
 "  Clase:                             %s\n"
 
-#: src/readelf.c:764
+#: src/readelf.c:951
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Datos:                             %s\n"
 
-#: src/readelf.c:770
+#: src/readelf.c:957
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr "  Versión ident:                     %hhd %s\n"
 
-#: src/readelf.c:772 src/readelf.c:789
+#: src/readelf.c:959 src/readelf.c:976
 msgid "(current)"
 msgstr "(actual)"
 
-#: src/readelf.c:776
+#: src/readelf.c:963
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  OS/ABI:                            %s\n"
 
-#: src/readelf.c:779
+#: src/readelf.c:966
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr "  Versión ABI:                       %hhd\n"
 
-#: src/readelf.c:782
+#: src/readelf.c:969
 msgid "  Type:                              "
 msgstr "  Tipo:                              "
 
-#: src/readelf.c:785
+#: src/readelf.c:972
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Máquina:                           %s\n"
 
-#: src/readelf.c:787
+#: src/readelf.c:974
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Versión:                           %d %s\n"
 
-#: src/readelf.c:791
+#: src/readelf.c:978
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr "  Dirección de punto de entrada:               %#<PRIx64>\n"
 
-#: src/readelf.c:794
+#: 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:795 src/readelf.c:798
+#: src/readelf.c:982 src/readelf.c:985
 msgid "(bytes into file)"
 msgstr " (bytes en el archivo)"
 
-#: src/readelf.c:797
+#: 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:800
+#: src/readelf.c:987
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr "  Indicadores:                             %s\n"
 
-#: src/readelf.c:803
+#: 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:804 src/readelf.c:807 src/readelf.c:824
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
 msgid "(bytes)"
 msgstr "(bytes)"
 
-#: src/readelf.c:806
+#: 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:809
+#: 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:816
+#: src/readelf.c:1003
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr " (%<PRIu32> in [0].sh_info)"
 
-#: src/readelf.c:819 src/readelf.c:836 src/readelf.c:850
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
 msgid " ([0] not available)"
 msgstr " ([0] no disponible)"
 
-#: src/readelf.c:823
+#: 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:826
+#: 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:833
+#: src/readelf.c:1020
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr " (%<PRIu32> en [0].sh_size)"
 
-#: src/readelf.c:846
+#: src/readelf.c:1033
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr " (%<PRIu32> en [0].sh_link)"
 
-#: src/readelf.c:854
+#: src/readelf.c:1041
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
@@ -4504,14 +4652,14 @@
 "  Índice de tabla de cadenas de sección de encabezamiento de : XINDEX%s\n"
 "\n"
 
-#: src/readelf.c:858
+#: 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:890
+#: src/readelf.c:1077
 #, c-format
 msgid ""
 "There are %d section headers, starting at offset %#<PRIx64>:\n"
@@ -4520,11 +4668,11 @@
 "Hay %d encabezamientos de sección, comenzando en compensación %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:900
+#: src/readelf.c:1087
 msgid "Section Headers:"
 msgstr "encabezamientos de sección:"
 
-#: src/readelf.c:903
+#: src/readelf.c:1090
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
@@ -4532,7 +4680,7 @@
 "[Nr] Nombre            Tipo            Dirección    Off    Tamaño    Inf Al "
 "Enlace banderas ES"
 
-#: src/readelf.c:905
+#: src/readelf.c:1092
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
@@ -4540,32 +4688,18 @@
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
 
-#: src/readelf.c:912 src/readelf.c:1065
-#, c-format
-msgid "cannot get section: %s"
-msgstr "No se puede encontrar la sección: %s"
-
-#: src/readelf.c:919 src/readelf.c:1073 src/readelf.c:8379 src/unstrip.c:353
-#: src/unstrip.c:384 src/unstrip.c:433 src/unstrip.c:541 src/unstrip.c:558
-#: src/unstrip.c:594 src/unstrip.c:792 src/unstrip.c:1060 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:977
+#: src/readelf.c:1164
 msgid "Program Headers:"
 msgstr "encabezamientos de programa:"
 
-#: src/readelf.c:979
+#: 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:982
+#: src/readelf.c:1169
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4573,12 +4707,12 @@
 "  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:1022
+#: 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:1043
+#: src/readelf.c:1247
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4588,12 +4722,12 @@
 " Sección para asignación de segmento:\n"
 "  Secciones de segmento..."
 
-#: src/readelf.c:1054 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
+#: src/readelf.c:1258 src/unstrip.c:1843 src/unstrip.c:1886 src/unstrip.c:1893
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "no se puede obtener memoria para encabezamiento del programa: %s"
 
-#: src/readelf.c:1195
+#: src/readelf.c:1401
 #, c-format
 msgid ""
 "\n"
@@ -4608,7 +4742,7 @@
 "\n"
 "Grupo de sección COMDAT [%2zu] '%s' con firma '%s' contiene entradas %zu:\n"
 
-#: src/readelf.c:1200
+#: src/readelf.c:1406
 #, c-format
 msgid ""
 "\n"
@@ -4623,15 +4757,21 @@
 "\n"
 "Grupo de sección [%2zu] '%s' con firma '%s' contiene entradas %zu:\n"
 
-#: src/readelf.c:1208
+#: src/readelf.c:1414
 msgid "<INVALID SYMBOL>"
 msgstr "<SÍMBOLO INVÁLIDO>"
 
-#: src/readelf.c:1222
+#: src/readelf.c:1428
 msgid "<INVALID SECTION>"
 msgstr "<SECCIÓN INVÁLIDA>"
 
-#: src/readelf.c:1373
+#: src/readelf.c:1585 src/readelf.c:2208 src/readelf.c:2466 src/readelf.c:2542
+#: src/readelf.c:2846 src/readelf.c:2920 src/readelf.c:4610
+#, 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"
@@ -4652,36 +4792,36 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:1385
+#: src/readelf.c:1598
 msgid "  Type              Value\n"
 msgstr "  Tipo              Valor\n"
 
-#: src/readelf.c:1409
+#: src/readelf.c:1622
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "Biblioteca compartida: [%s]\n"
 
-#: src/readelf.c:1414
+#: src/readelf.c:1627
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "Nombre-so de la biblioteca: [%s]\n"
 
-#: src/readelf.c:1419
+#: src/readelf.c:1632
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "Rpath de la biblioteca: [%s]\n"
 
-#: src/readelf.c:1424
+#: src/readelf.c:1637
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "Ruta de ejecución de la biblioteca: [%s]\n"
 
-#: src/readelf.c:1444
+#: src/readelf.c:1657
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (bytes)\n"
 
-#: src/readelf.c:1556 src/readelf.c:1742
+#: src/readelf.c:1770 src/readelf.c:1960
 #, c-format
 msgid ""
 "\n"
@@ -4690,7 +4830,7 @@
 "\n"
 "Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
 
-#: src/readelf.c:1574 src/readelf.c:1759
+#: src/readelf.c:1788 src/readelf.c:1978
 #, c-format
 msgid ""
 "\n"
@@ -4709,7 +4849,7 @@
 "Sección de reubicación [%2zu] '%s' para sección [%2u] '%s' en compensación "
 "%#0<PRIx64> contiene entradas %d:\n"
 
-#: src/readelf.c:1589
+#: src/readelf.c:1803 src/readelf.c:1993
 #, c-format
 msgid ""
 "\n"
@@ -4726,29 +4866,29 @@
 "Sección de reubicación [%2u] '%s' en compensación %#0<PRIx64> contiene "
 "entradas %d:\n"
 
-#: src/readelf.c:1599
+#: src/readelf.c:1813
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "   Compensación           Tipo               Valor      Nombre\n"
 
-#: src/readelf.c:1601
+#: src/readelf.c:1815
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "    Compensación           Tipo               Valor           Nombre\n"
 
-#: src/readelf.c:1654 src/readelf.c:1665 src/readelf.c:1678 src/readelf.c:1696
-#: src/readelf.c:1708 src/readelf.c:1827 src/readelf.c:1839 src/readelf.c:1853
-#: src/readelf.c:1872 src/readelf.c:1885
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1913
+#: src/readelf.c:1925 src/readelf.c:2059 src/readelf.c:2071 src/readelf.c:2085
+#: src/readelf.c:2107 src/readelf.c:2120
 msgid "<INVALID RELOC>"
 msgstr "<REUBIC INVÁLIDA>"
 
-#: src/readelf.c:1771
+#: src/readelf.c:2003
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "    Compensación            Tipo               Valor    Nombre Adend\n"
 
-#: src/readelf.c:1773
+#: src/readelf.c:2005
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr "    Compensación            Tipo               Valor   Nombre Adend\n"
 
-#: src/readelf.c:1974
+#: src/readelf.c:2216
 #, c-format
 msgid ""
 "\n"
@@ -4763,40 +4903,40 @@
 "\n"
 "La tabla de símbolos [%2u] '%s' contiene entradas %u:\n"
 
-#: src/readelf.c:1980
+#: src/readelf.c:2221
 #, 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:1990
+#: src/readelf.c:2229
 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:1992
+#: src/readelf.c:2231
 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:2012
+#: src/readelf.c:2251
 #, 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:2100
+#: src/readelf.c:2339
 #, c-format
 msgid "bad dynamic symbol"
 msgstr "símbolo dinámico erróneo"
 
-#: src/readelf.c:2182
+#: src/readelf.c:2421
 msgid "none"
 msgstr "nada"
 
-#: src/readelf.c:2199
+#: src/readelf.c:2438
 msgid "| <unknown>"
 msgstr "| <desconocido>"
 
-#: src/readelf.c:2224
+#: src/readelf.c:2469
 #, c-format
 msgid ""
 "\n"
@@ -4817,17 +4957,17 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2247
+#: src/readelf.c:2490
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Versión: %hu  Fichero: %s  Conteo: %hu\n"
 
-#: src/readelf.c:2260
+#: src/readelf.c:2503
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Nombre: %s  Banderas: %s  Versión: %hu\n"
 
-#: src/readelf.c:2291
+#: src/readelf.c:2546
 #, c-format
 msgid ""
 "\n"
@@ -4848,18 +4988,18 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2321
+#: src/readelf.c:2574
 #, 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:2336
+#: src/readelf.c:2589
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Principal %d: %s\n"
 
-#: src/readelf.c:2568
+#: src/readelf.c:2850
 #, c-format
 msgid ""
 "\n"
@@ -4880,15 +5020,15 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'"
 
-#: src/readelf.c:2598
+#: src/readelf.c:2878
 msgid "   0 *local*                     "
 msgstr "   0 *local*                     "
 
-#: src/readelf.c:2603
+#: src/readelf.c:2883
 msgid "   1 *global*                    "
 msgstr "   1 *global*                    "
 
-#: src/readelf.c:2634
+#: src/readelf.c:2925
 #, c-format
 msgid ""
 "\n"
@@ -4913,22 +5053,22 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2658
+#: src/readelf.c:2947
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " Longitud  Número  % of total  Cobertura\n"
 
-#: src/readelf.c:2660
+#: src/readelf.c:2949
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:2667
+#: src/readelf.c:2956
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:2680
+#: src/readelf.c:2969
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -4937,12 +5077,27 @@
 " Número promedio de pruebas:   búsqueda exitosa: %f\n"
 "                          búsqueda sin éxito: %f\n"
 
-#: src/readelf.c:2698 src/readelf.c:2740 src/readelf.c:2781
+#: src/readelf.c:2987 src/readelf.c:3042 src/readelf.c:3098
 #, 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:2835
+#: src/readelf.c:2995
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash section %d"
+msgstr "Datos inválidos en sección [%zu] '%s'"
+
+#: src/readelf.c:3050
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash64 section %d"
+msgstr "Datos inválidos en sección [%zu] '%s'"
+
+#: src/readelf.c:3106
+#, fuzzy, c-format
+msgid "invalid data in gnu.hash section %d"
+msgstr "Datos inválidos en sección [%zu] '%s'"
+
+#: src/readelf.c:3173
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -4952,7 +5107,7 @@
 " Tamaño de Bitmask: %zu bytes  %<PRIuFAST32>%% bits establecen segundo "
 "cambio de dispersión: %u\n"
 
-#: src/readelf.c:2909
+#: src/readelf.c:3248
 #, c-format
 msgid ""
 "\n"
@@ -4969,7 +5124,7 @@
 "Sección de lista de biblioteca [%2zu] '%s' en compensación %#0<PRIx64> "
 "contiene entradas %d:\n"
 
-#: src/readelf.c:2923
+#: src/readelf.c:3262
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -4977,7 +5132,7 @@
 "       Biblioteca                       Marca de tiempo          Indicadores "
 "de versión de suma de verificación"
 
-#: src/readelf.c:2973
+#: src/readelf.c:3312
 #, c-format
 msgid ""
 "\n"
@@ -4988,160 +5143,140 @@
 "Sección de atributos de objeto [%2zu] '%s' de %<PRIu64> bytes con "
 "desplazamiento %#0<PRIx64>:\n"
 
-#: src/readelf.c:2989
+#: src/readelf.c:3329
 msgid "  Owner          Size\n"
 msgstr "  Propietario          Tamaño\n"
 
-#: src/readelf.c:3015
+#: src/readelf.c:3358
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
-#: src/readelf.c:3047
+#: src/readelf.c:3397
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
-#: src/readelf.c:3052
+#: src/readelf.c:3402
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    File: %11<PRIu32>\n"
 
-#: src/readelf.c:3087
+#: src/readelf.c:3451
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3090
+#: src/readelf.c:3454
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3093
+#: src/readelf.c:3457
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3100
+#: src/readelf.c:3467
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3103
+#: src/readelf.c:3470
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3139
+#: src/readelf.c:3515
 #, c-format
 msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3142
+#: src/readelf.c:3518
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3147
+#: src/readelf.c:3523
 #, c-format
 msgid "%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3150
+#: src/readelf.c:3526
 #, c-format
 msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3156
+#: src/readelf.c:3532
 #, c-format
 msgid "%s+%#<PRIx64> <%s>"
 msgstr "%s+%#<PRIx64> <%s>"
 
-#: src/readelf.c:3159
+#: src/readelf.c:3535
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s>"
 msgstr "%s+%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3163
+#: src/readelf.c:3539
 #, c-format
 msgid "%#<PRIx64> <%s>"
 msgstr "%#<PRIx64> <%s>"
 
-#: src/readelf.c:3166
+#: src/readelf.c:3542
 #, c-format
 msgid "%#0*<PRIx64> <%s>"
 msgstr "%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3171
+#: src/readelf.c:3547
 #, c-format
 msgid "%s+%#<PRIx64>"
 msgstr "%s+%#<PRIx64>"
 
-#: src/readelf.c:3174
+#: src/readelf.c:3550
 #, c-format
 msgid "%s+%#0*<PRIx64>"
 msgstr "%s+%#0*<PRIx64>"
 
-#: src/readelf.c:3313
-#, c-format
-msgid "unknown tag %hx"
-msgstr "etiqueta %hx desconocida"
-
-#: src/readelf.c:3315
-#, c-format
-msgid "unknown user tag %hx"
-msgstr "Usuario de etiqueta %hx desconocido "
-
-#: src/readelf.c:3603
-#, c-format
-msgid "unknown attribute %hx"
-msgstr "atributo de sección %hx desconocido"
-
-#: src/readelf.c:3606
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr "Atributo de usuario desconocido %hx"
-
-#: src/readelf.c:3657
-#, fuzzy, c-format
-msgid "unknown form %#<PRIx64>"
-msgstr "Forma %<PRIx64> desconocida"
-
-#: src/readelf.c:3893
+#: src/readelf.c:3932
 msgid "empty block"
 msgstr "bloque vacío"
 
-#: src/readelf.c:3896
+#: src/readelf.c:3935
 #, c-format
 msgid "%zu byte block:"
 msgstr "bloque de byte %zu:"
 
-#: src/readelf.c:4419
+#: src/readelf.c:4332
 #, c-format
 msgid "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 
-#: src/readelf.c:4455
+#: src/readelf.c:4389
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
 
-#: src/readelf.c:4462
+#: src/readelf.c:4396
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr "%s %#<PRIx64> utilizado con offsetr de diferente tamaño"
 
-#: src/readelf.c:4542
+#: src/readelf.c:4403
+#, fuzzy, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
+
+#: src/readelf.c:4492
 #, 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:4550
+#: src/readelf.c:4500
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <MATERIAL INUTIL NO UTILIZADO> ... %<PRIu64> bytes ...\n"
 
-#: src/readelf.c:4569
+#: src/readelf.c:4526
 #, c-format
 msgid ""
 "\n"
@@ -5152,7 +5287,7 @@
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 " [ Código]\n"
 
-#: src/readelf.c:4577
+#: src/readelf.c:4534
 #, c-format
 msgid ""
 "\n"
@@ -5161,30 +5296,30 @@
 "\n"
 "Sección de abreviatura en compensación %<PRIu64>:\n"
 
-#: src/readelf.c:4590
+#: src/readelf.c:4547
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** error en lectura de abreviatura: %s\n"
 
-#: src/readelf.c:4606
+#: src/readelf.c:4563
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] compensación: %<PRId64>, hijos: %s, etiqueta: %s\n"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "yes"
 msgstr "sí"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "no"
 msgstr "no"
 
-#: src/readelf.c:4644
+#: src/readelf.c:4600 src/readelf.c:4673
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "no se ha podido obtener contenido de .debug_aranges: %s"
 
-#: src/readelf.c:4649
+#: src/readelf.c:4615
 #, c-format
 msgid ""
 "\n"
@@ -5199,12 +5334,12 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entradas %zu:\n"
 
-#: src/readelf.c:4680
+#: src/readelf.c:4646
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:4682
+#: src/readelf.c:4648
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5212,13 +5347,8 @@
 " Inicio [%*zu]: %0#*<PRIx64>, longitud: %5<PRIu64>, compensación CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:4701
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
-
-#: src/readelf.c:4706 src/readelf.c:5207 src/readelf.c:5982 src/readelf.c:6483
-#: src/readelf.c:6598 src/readelf.c:6770
+#: src/readelf.c:4678 src/readelf.c:4832 src/readelf.c:5408 src/readelf.c:6362
+#: src/readelf.c:6894 src/readelf.c:7014 src/readelf.c:7177 src/readelf.c:7602
 #, c-format
 msgid ""
 "\n"
@@ -5227,37 +5357,120 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 
-#: src/readelf.c:4730 src/readelf.c:6508
+#: src/readelf.c:4691 src/readelf.c:6388
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Tabla en compensación %Zu:\n"
+
+#: src/readelf.c:4695 src/readelf.c:5432 src/readelf.c:6399
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "Datos inválidos en sección [%zu] '%s'"
+
+#: src/readelf.c:4711
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Length:        %6<PRIu64>\n"
+msgstr " (compensación: %#<PRIx64>)"
+
+#: src/readelf.c:4723
+#, fuzzy, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4727
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4738
+#, fuzzy, c-format
+msgid " CU offset:     %6<PRIx64>\n"
+msgstr " (compensación: %#<PRIx64>)"
+
+#: src/readelf.c:4744
+#, fuzzy, c-format
+msgid " Address size:  %6<PRIu64>\n"
+msgstr " (fin de compensación: %#<PRIx64>)"
+
+#: src/readelf.c:4748
+#, fuzzy, c-format
+msgid "unsupported address size"
+msgstr "no hay valor de dirección"
+
+#: src/readelf.c:4753
+#, fuzzy, c-format
+msgid ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+msgstr " establecer archivo a %<PRIu64>\n"
+
+#: src/readelf.c:4757
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4797
+#, fuzzy, c-format
+msgid "   %s..%s (%<PRIx64>)\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4800
+#, fuzzy, c-format
+msgid "   %s..%s\n"
+msgstr " [%6tx]  %s..%s\n"
+
+#: src/readelf.c:4809
+#, c-format
+msgid "   %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4827
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
+
+#: src/readelf.c:4857 src/readelf.c:6921
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:4752 src/readelf.c:6530
+#: src/readelf.c:4879 src/readelf.c:6943
 #, c-format
 msgid " [%6tx]  base address %s\n"
 msgstr " [%6tx]   (dirección base) %s\n"
 
-#: src/readelf.c:4758 src/readelf.c:6536
+#: src/readelf.c:4886 src/readelf.c:6950
 #, c-format
 msgid " [%6tx]  empty list\n"
 msgstr " [%6tx]  lista vacía\n"
 
-#: src/readelf.c:4767
+#: src/readelf.c:4897
 #, c-format
 msgid " [%6tx]  %s..%s\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:4769
+#: src/readelf.c:4899
 #, c-format
 msgid "           %s..%s\n"
 msgstr "           %s..%s\n"
 
-#: src/readelf.c:5196 src/readelf.c:6838 src/readelf.c:6940 src/readelf.c:7098
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "No se puede obtener el contenido %s: %s"
+#: src/readelf.c:5078
+#, fuzzy
+msgid "         <INVALID DATA>\n"
+msgstr "   <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:5203
+#: src/readelf.c:5387
+#, fuzzy, c-format
+msgid "cannot get ELF: %s"
+msgstr "no se puede leer encabezamiento ELF: %s"
+
+#: src/readelf.c:5404
 #, c-format
 msgid ""
 "\n"
@@ -5267,12 +5480,7 @@
 "Sección de información de marco de llamada [%2zu] '%s' en compensación "
 "%#<PRIx64>:\n"
 
-#: src/readelf.c:5231 src/readelf.c:6017
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "Datos inválidos en sección [%zu] '%s'"
-
-#: src/readelf.c:5253
+#: src/readelf.c:5454
 #, c-format
 msgid ""
 "\n"
@@ -5281,50 +5489,50 @@
 "\n"
 " [%6tx] Terminator cero\n"
 
-#: src/readelf.c:5338
+#: src/readelf.c:5547 src/readelf.c:5702
 #, c-format
 msgid "invalid augmentation length"
 msgstr "longitud de aumento inválida"
 
-#: src/readelf.c:5350
+#: src/readelf.c:5562
 msgid "FDE address encoding: "
 msgstr "Codificación de dirección FDE:"
 
-#: src/readelf.c:5356
+#: src/readelf.c:5568
 msgid "LSDA pointer encoding: "
 msgstr "Codificación de puntero LSDA:"
 
-#: src/readelf.c:5454
+#: src/readelf.c:5679
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5461
+#: src/readelf.c:5686
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5488
+#: src/readelf.c:5723
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "Puntero   %-26sLSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:5539
+#: src/readelf.c:5778
 #, c-format
 msgid "cannot get attribute code: %s"
 msgstr "No se puede obtener código de atributo: %s"
 
-#: src/readelf.c:5548
+#: src/readelf.c:5787
 #, c-format
 msgid "cannot get attribute form: %s"
 msgstr "No se puede obtener forma de atributo: %s"
 
-#: src/readelf.c:5563
+#: src/readelf.c:5802
 #, c-format
 msgid "cannot get attribute value: %s"
 msgstr "No se puede obtener valor: %s"
 
-#: src/readelf.c:5819
+#: src/readelf.c:6101
 #, c-format
 msgid ""
 "\n"
@@ -5335,7 +5543,7 @@
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 " [Offset]\n"
 
-#: src/readelf.c:5851
+#: src/readelf.c:6133
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5348,7 +5556,7 @@
 "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:5860
+#: src/readelf.c:6142
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5359,48 +5567,49 @@
 " 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:5886
+#: src/readelf.c:6167
 #, 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:5898
+#: src/readelf.c:6181
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "no se puede obtener DIE en compensación: %s"
 
-#: src/readelf.c:5907
+#: src/readelf.c:6190
 #, 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:5938
+#: src/readelf.c:6222
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "No se puede obtener próximo DIE: %s\n"
 
-#: src/readelf.c:5946
+#: src/readelf.c:6230
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "No se puede obtener próximo DIE: %s"
 
-#: src/readelf.c:5995
+#: src/readelf.c:6266
+#, fuzzy, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+"\n"
+"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
+
+#: src/readelf.c:6375
 #, 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:6008
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-"\n"
-"Tabla en compensación %Zu:\n"
-
-#: src/readelf.c:6063
+#: src/readelf.c:6445
 #, c-format
 msgid ""
 "\n"
@@ -5429,19 +5638,19 @@
 "\n"
 "Códigos operativos:\n"
 
-#: src/readelf.c:6084
+#: src/readelf.c:6466
 #, 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:6099
+#: src/readelf.c:6481
 #, 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:6107
+#: src/readelf.c:6489
 msgid ""
 "\n"
 "Directory table:"
@@ -5449,7 +5658,7 @@
 "\n"
 "Tabla de Directorio:"
 
-#: src/readelf.c:6123
+#: src/readelf.c:6505
 msgid ""
 "\n"
 "File name table:\n"
@@ -5459,7 +5668,7 @@
 "Tabla de nombre de archivo:\n"
 " Directorio de entrada   Tiempo      Tamaño      Nombre"
 
-#: src/readelf.c:6152
+#: src/readelf.c:6540
 msgid ""
 "\n"
 "Line number statements:"
@@ -5467,159 +5676,224 @@
 "\n"
 " Declaraciones de número de Línea:"
 
-#: src/readelf.c:6228
+#: src/readelf.c:6591
+#, fuzzy, c-format
+msgid "invalid maximum operations per instruction is zero"
+msgstr "longitud mínima inválida de tamaño de cadena coincidente"
+
+#: src/readelf.c:6627
 #, 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:6233
+#: src/readelf.c:6632
 #, 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:6253
+#: src/readelf.c:6652
 #, c-format
 msgid " extended opcode %u: "
 msgstr "  Código operativo extendido %u: "
 
-#: src/readelf.c:6258
+#: src/readelf.c:6657
 #, fuzzy
 msgid " end of sequence"
 msgstr "Fin de secuencia"
 
-#: src/readelf.c:6275
+#: src/readelf.c:6676
 #, fuzzy, c-format
 msgid " set address to %s\n"
 msgstr "Establecer dirección a %s\n"
 
-#: src/readelf.c:6296
+#: src/readelf.c:6703
 #, 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:6309
+#: src/readelf.c:6716
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " establecer discriminador a %u\n"
 
-#: src/readelf.c:6314
+#: src/readelf.c:6721
 #, fuzzy
 msgid " unknown opcode"
 msgstr "código operativo desconocido "
 
-#: src/readelf.c:6326
+#: src/readelf.c:6733
 msgid " copy"
 msgstr "Copiar"
 
-#: src/readelf.c:6337
+#: src/readelf.c:6744
 #, 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:6341
+#: src/readelf.c:6748
 #, fuzzy, c-format
 msgid " advance address by %u to %s\n"
 msgstr "Dirección de avance por %u a %s\n"
 
-#: src/readelf.c:6352
+#: src/readelf.c:6759
 #, 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:6360
+#: src/readelf.c:6767
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:6370
+#: src/readelf.c:6777
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr "  Establecer columna a %<PRIu64>\n"
 
-#: src/readelf.c:6377
+#: src/readelf.c:6784
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr "Establecer '%s' a %<PRIuFAST8>\n"
 
-#: src/readelf.c:6383
+#: src/readelf.c:6790
 msgid " set basic block flag"
 msgstr "Establecer bandera de bloque básico"
 
-#: src/readelf.c:6392
+#: src/readelf.c:6803
 #, 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:6396
+#: src/readelf.c:6807
 #, 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:6414
+#: src/readelf.c:6825
 #, 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:6423
+#: src/readelf.c:6834
 msgid " set prologue end flag"
 msgstr " Establecer bandera prologue_end"
 
-#: src/readelf.c:6428
+#: src/readelf.c:6839
 msgid " set epilogue begin flag"
 msgstr " Establecer bandera epilogue_begin"
 
-#: src/readelf.c:6437
+#: src/readelf.c:6848
 #, c-format
 msgid " set isa to %u\n"
 msgstr " establecer isa para %u\n"
 
-#: src/readelf.c:6446
+#: src/readelf.c:6857
 #, 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:6478
+#: src/readelf.c:6889
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr "no es posible obtener contenido de .debug_loc: %s"
 
-#: src/readelf.c:6548
+#: src/readelf.c:6964
 #, c-format
 msgid " [%6tx]  %s..%s"
 msgstr " [%6tx]  %s..%s"
 
-#: src/readelf.c:6550
+#: src/readelf.c:6966
 #, c-format
 msgid "           %s..%s"
 msgstr "           %s..%s"
 
-#: src/readelf.c:6557
+#: src/readelf.c:6973 src/readelf.c:7858
 msgid "   <INVALID DATA>\n"
 msgstr "   <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:6609
+#: src/readelf.c:7025 src/readelf.c:7186
 #, 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:6688
+#: src/readelf.c:7104
 #, 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:6756
+#: src/readelf.c:7127
+#, fuzzy, c-format
+msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
+msgstr "%*s*** cadena no finalizada al final de la sección"
+
+#: src/readelf.c:7227
+#, fuzzy, c-format
+msgid " Offset:             0x%<PRIx64>\n"
+msgstr "  Propietario          Tamaño\n"
+
+#: src/readelf.c:7239
+#, fuzzy, c-format
+msgid " Version:            %<PRIu16>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:7245 src/readelf.c:7968
+#, c-format
+msgid "  unknown version, cannot parse section\n"
+msgstr ""
+
+#: src/readelf.c:7252
+#, fuzzy, c-format
+msgid " Flag:               0x%<PRIx8>\n"
+msgstr "  Dirección de punto de entrada:               %#<PRIx64>\n"
+
+#: src/readelf.c:7255
+#, fuzzy, c-format
+msgid " Offset length:      %<PRIu8>\n"
+msgstr " (compensación: %#<PRIx64>)"
+
+#: src/readelf.c:7263
+#, fuzzy, c-format
+msgid " .debug_line offset: 0x%<PRIx64>\n"
+msgstr " (fin de compensación: %#<PRIx64>)"
+
+#: src/readelf.c:7276
+#, fuzzy, c-format
+msgid "  extension opcode table, %<PRIu8> items:\n"
+msgstr " opcódigo con parámetro %<PRIu8> desconocido:"
+
+#: src/readelf.c:7283
+#, c-format
+msgid "    [%<PRIx8>]"
+msgstr ""
+
+#: src/readelf.c:7295
+#, fuzzy, c-format
+msgid " %<PRIu8> arguments:"
+msgstr "  [%*<PRIuFAST8>]  argumento %hhu \n"
+
+#: src/readelf.c:7323
+#, c-format
+msgid " no arguments."
+msgstr ""
+
+#: src/readelf.c:7560
+#, c-format
+msgid "vendor opcode not verified?"
+msgstr ""
+
+#: src/readelf.c:7588
 #, 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:6796
+#: src/readelf.c:7629
 #, c-format
 msgid ""
 "\n"
@@ -5630,12 +5904,12 @@
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 " %*s  String\n"
 
-#: src/readelf.c:6810
+#: src/readelf.c:7643
 #, c-format
 msgid " *** error while reading strings: %s\n"
 msgstr " *** error en lectura de cadenas: %s\n"
 
-#: src/readelf.c:6830
+#: src/readelf.c:7663
 #, c-format
 msgid ""
 "\n"
@@ -5644,7 +5918,7 @@
 "\n"
 "Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:6932
+#: src/readelf.c:7765
 #, c-format
 msgid ""
 "\n"
@@ -5653,22 +5927,22 @@
 "\n"
 "Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:6955
+#: src/readelf.c:7788
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr "Codificación LPStart:    %#x "
 
-#: src/readelf.c:6967
+#: src/readelf.c:7800
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr "Codificación TType:      %#x "
 
-#: src/readelf.c:6981
+#: src/readelf.c:7815
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr "Codificación de sitio de llamada:  %#x "
 
-#: src/readelf.c:6994
+#: src/readelf.c:7828
 msgid ""
 "\n"
 " Call site table:"
@@ -5676,7 +5950,7 @@
 "\n"
 " Tabla de sitio de llamada:"
 
-#: src/readelf.c:7008
+#: src/readelf.c:7842
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5689,12 +5963,12 @@
 "        Landing pad:       %#<PRIx64>\n"
 "        Action:            %u\n"
 
-#: src/readelf.c:7068
+#: src/readelf.c:7909
 #, c-format
 msgid "invalid TType encoding"
 msgstr "Codificación TType inválida"
 
-#: src/readelf.c:7089
+#: src/readelf.c:7930
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5703,42 +5977,37 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:7118
+#: src/readelf.c:7959
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:7124
-#, c-format
-msgid "  unknown version, cannot parse section\n"
-msgstr ""
-
-#: src/readelf.c:7133
+#: src/readelf.c:7977
 #, fuzzy, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:7140
+#: src/readelf.c:7984
 #, fuzzy, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:7147
+#: src/readelf.c:7991
 #, fuzzy, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:7154
+#: src/readelf.c:7998
 #, fuzzy, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:7161
+#: src/readelf.c:8005
 #, fuzzy, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:7168
+#: src/readelf.c:8012
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5747,7 +6016,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:7190
+#: src/readelf.c:8034
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5756,7 +6025,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:7216
+#: src/readelf.c:8060
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5765,7 +6034,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:7243
+#: src/readelf.c:8089
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5774,17 +6043,17 @@
 "\n"
 "Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
 
-#: src/readelf.c:7296
+#: src/readelf.c:8176
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "no se puede depurar descriptor de contexto: %s"
 
-#: src/readelf.c:7445 src/readelf.c:8046
+#: src/readelf.c:8336 src/readelf.c:8942 src/readelf.c:9053 src/readelf.c:9111
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "no es posible convertir datos de la nota principal: %s"
 
-#: src/readelf.c:7786
+#: src/readelf.c:8683
 #, c-format
 msgid ""
 "\n"
@@ -5793,21 +6062,21 @@
 "\n"
 "%*s... <repeats %u more times> ..."
 
-#: src/readelf.c:8145
+#: src/readelf.c:9190
 msgid "  Owner          Data size  Type\n"
 msgstr "  Owner          Data size  Type\n"
 
-#: src/readelf.c:8163
+#: src/readelf.c:9208
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:8197
+#: src/readelf.c:9258
 #, 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:8224
+#: src/readelf.c:9285
 #, c-format
 msgid ""
 "\n"
@@ -5816,7 +6085,7 @@
 "\n"
 "Sección de nota [%2zu] '%s' de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
 
-#: src/readelf.c:8247
+#: src/readelf.c:9308
 #, c-format
 msgid ""
 "\n"
@@ -5825,7 +6094,7 @@
 "\n"
 "Segmento de nota de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
 
-#: src/readelf.c:8293
+#: src/readelf.c:9354
 #, c-format
 msgid ""
 "\n"
@@ -5834,12 +6103,12 @@
 "\n"
 "Sección [%Zu] '%s' no tiene datos para volcar.\n"
 
-#: src/readelf.c:8299 src/readelf.c:8322
+#: src/readelf.c:9360 src/readelf.c:9383
 #, 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:8303
+#: src/readelf.c:9364
 #, c-format
 msgid ""
 "\n"
@@ -5849,7 +6118,7 @@
 "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:8316
+#: src/readelf.c:9377
 #, c-format
 msgid ""
 "\n"
@@ -5858,7 +6127,7 @@
 "\n"
 "Sección [%Zu] '%s' no tiene datos para volcar.\n"
 
-#: src/readelf.c:8326
+#: src/readelf.c:9387
 #, c-format
 msgid ""
 "\n"
@@ -5868,7 +6137,7 @@
 "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:8374
+#: src/readelf.c:9435
 #, c-format
 msgid ""
 "\n"
@@ -5877,7 +6146,7 @@
 "\n"
 "sección [%lu] no existe"
 
-#: src/readelf.c:8403
+#: src/readelf.c:9464
 #, c-format
 msgid ""
 "\n"
@@ -5886,12 +6155,12 @@
 "\n"
 "sección '%s' no existe"
 
-#: src/readelf.c:8460
+#: src/readelf.c:9521
 #, 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:8463
+#: src/readelf.c:9524
 #, c-format
 msgid ""
 "\n"
@@ -5900,7 +6169,7 @@
 "\n"
 "Archivo '%s' no tiene índice de símbolo\n"
 
-#: src/readelf.c:8467
+#: src/readelf.c:9528
 #, c-format
 msgid ""
 "\n"
@@ -5909,17 +6178,17 @@
 "\n"
 "Índice de archivo '%s' tiene %Zu entradas:\n"
 
-#: src/readelf.c:8485
+#: src/readelf.c:9546
 #, 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:8490
+#: src/readelf.c:9551
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Miembro de archivo contiene '%s':\n"
 
-#: src/size.c:68
+#: src/size.c:60
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd' or `sysv'.  The default "
 "is `bsd'"
@@ -5927,81 +6196,81 @@
 "Utilice el formato de salida FORMAT. FORMAT puede ser tanto `bsd' como "
 "`sysv'. El establecido por defecto es `bsd'"
 
-#: src/size.c:70
+#: src/size.c:62
 msgid "Same as `--format=sysv'"
 msgstr "lo mismo que `--format=sysv'"
 
-#: src/size.c:71
+#: src/size.c:63
 msgid "Same as `--format=bsd'"
 msgstr "lo mismo que `--format=bsd'"
 
-#: src/size.c:74
+#: src/size.c:66
 msgid "Same as `--radix=10'"
 msgstr "lo mismo que `--radix=10'"
 
-#: src/size.c:75
+#: src/size.c:67
 msgid "Same as `--radix=8'"
 msgstr "lo mismo que `--radix=8'"
 
-#: src/size.c:76
+#: src/size.c:68
 msgid "Same as `--radix=16'"
 msgstr "lo mismo que`--radix=16'"
 
-#: src/size.c:78
+#: src/size.c:70
 msgid "Similar to `--format=sysv' output but in one line"
 msgstr "Similar a la salida `--format=sysv' pero en una sola línea"
 
-#: src/size.c:82
+#: src/size.c:74
 msgid "Print size and permission flags for loadable segments"
 msgstr ""
 "Imprime el tamaño y las marcas de permiso para los segmentos que pueden ser "
 "cargados"
 
-#: src/size.c:83
+#: src/size.c:75
 msgid "Display the total sizes (bsd only)"
 msgstr "Muestra el tamaño total (bsd solamente)"
 
-#: src/size.c:88
+#: src/size.c:80
 msgid "List section sizes of FILEs (a.out by default)."
 msgstr "Lista los tamaños de sección de FICHEROS (por defecto a.out). "
 
-#: src/size.c:269
+#: src/size.c:261
 #, c-format
 msgid "Invalid format: %s"
 msgstr "Formato de archivo inválido: %s"
 
-#: src/size.c:280
+#: src/size.c:272
 #, c-format
 msgid "Invalid radix: %s"
 msgstr "Radical inválido: %s"
 
-#: src/size.c:339
+#: src/size.c:331
 #, c-format
 msgid "%s: file format not recognized"
 msgstr "%s: No se reconoce el formato del fichero"
 
-#: src/size.c:446 src/size.c:589
+#: src/size.c:437 src/size.c:570
 #, c-format
 msgid " (ex %s)"
 msgstr " (ex %s)"
 
-#: src/size.c:614
+#: src/size.c:595
 msgid "(TOTALS)\n"
 msgstr "(TOTALES)\n"
 
-#: src/strings.c:70
+#: src/strings.c:62
 msgid "Output Selection:"
 msgstr "Selección de salida:"
 
-#: src/strings.c:71
+#: src/strings.c:63
 msgid "Scan entire file, not only loaded sections"
 msgstr "Explorar todo el archivo, no sólo las secciones cargadas"
 
-#: src/strings.c:73
+#: src/strings.c:65
 msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 msgstr "Sólo secuencias NUL-terminated de caracteres MIN-LEN o más se imprimen"
 
-#: src/strings.c:74
+#: src/strings.c:66
 msgid ""
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
@@ -6009,459 +6278,473 @@
 "Seleccionar tamaño de caracter y Endianess: s = 7-bit, S = 8-bit, {b,l} = 16-"
 "bit, {B,L} = 32-bit"
 
-#: src/strings.c:78
+#: src/strings.c:70
 msgid "Print name of the file before each string."
 msgstr "Imprimir nombre de archivo antes de cada cadena."
 
-#: src/strings.c:80
+#: src/strings.c:72
 msgid "Print location of the string in base 8, 10, or 16 respectively."
 msgstr "Imprimir ubicación de la cadena en base 8, 10, o 16 respectivamente."
 
-#: src/strings.c:81
+#: src/strings.c:73
 msgid "Alias for --radix=o"
 msgstr "Alias para --radix=o"
 
-#: src/strings.c:88
+#: src/strings.c:80
 msgid "Print the strings of printable characters in files."
 msgstr "Imprimir las cadenas de caracteres imprimibles en archivos."
 
-#: src/strings.c:268 src/strings.c:303
+#: 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:314
+#: 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:599
+#: src/strings.c:596
 #, c-format
 msgid "lseek64 failed"
 msgstr "lseek64 falló"
 
-#: src/strings.c:616 src/strings.c:680
+#: src/strings.c:613 src/strings.c:677
 #, c-format
 msgid "re-mmap failed"
 msgstr "re-mmap falló"
 
-#: src/strings.c:653
+#: src/strings.c:650
 #, c-format
 msgid "mprotect failed"
 msgstr "mprotect falló"
 
-#: src/strip.c:77
+#: src/strip.c:69
 msgid "Place stripped output into FILE"
 msgstr "Colocar la salida obtenida en FICHERO"
 
-#: src/strip.c:78
+#: src/strip.c:70
 msgid "Extract the removed sections into FILE"
 msgstr "Extraer secciones eliminadas en FICHERO"
 
-#: src/strip.c:79
+#: src/strip.c:71
 msgid "Embed name FILE instead of -f argument"
 msgstr "Incorporar nombre FILE en lugar de argumento -f"
 
-#: src/strip.c:83
+#: src/strip.c:75
 msgid "Remove all debugging symbols"
 msgstr "Elimina todos los símbolos de depuración"
 
-#: src/strip.c:87
+#: src/strip.c:79
 msgid "Remove section headers (not recommended)"
 msgstr "Quitar sección de cabeceras (no recomendado)"
 
-#: src/strip.c:89
+#: src/strip.c:81
 msgid "Copy modified/access timestamps to the output"
 msgstr "Copiar marcas de tiempo modificadas/acceso a la salida"
 
-#: src/strip.c:91
+#: src/strip.c:83
 msgid ""
 "Resolve all trivial relocations between debug sections if the removed "
 "sections are placed in a debug file (only relevant for ET_REL files, "
 "operation is not reversable, needs -f)"
 msgstr ""
 
-#: src/strip.c:93
+#: src/strip.c:85
 msgid "Remove .comment section"
 msgstr "Quitar sección de comentario"
 
-#: src/strip.c:96
+#: src/strip.c:88
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr "Relaja algunas reglas para manejar ficheros ELF rotos"
 
-#: src/strip.c:101
+#: src/strip.c:93
 msgid "Discard symbols from object files."
 msgstr "Descarta símbolos de archivos objeto."
 
-#: src/strip.c:189
+#: src/strip.c:181
 #, c-format
 msgid "--reloc-debug-sections used without -f"
 msgstr ""
 
-#: src/strip.c:203
+#: src/strip.c:195
 #, c-format
 msgid "Only one input file allowed together with '-o' and '-f'"
 msgstr "Sólo se permite ingresar un archivo junto con '-o' y '-f'"
 
-#: src/strip.c:239
+#: src/strip.c:231
 #, c-format
 msgid "-f option specified twice"
 msgstr "opción -f especificada dos veces"
 
-#: src/strip.c:248
+#: src/strip.c:240
 #, c-format
 msgid "-F option specified twice"
 msgstr "opción -F especificada dos veces"
 
-#: src/strip.c:257 src/unstrip.c:125
+#: src/strip.c:249 src/unstrip.c:121
 #, c-format
 msgid "-o option specified twice"
 msgstr "opción -o especificada dos veces"
 
-#: src/strip.c:281
+#: src/strip.c:273
 #, c-format
 msgid "-R option supports only .comment section"
 msgstr "la opción -R soporta únicamente. sección de comentario"
 
-#: src/strip.c:323 src/strip.c:347
+#: src/strip.c:315 src/strip.c:339
 #, c-format
 msgid "cannot stat input file '%s'"
 msgstr "no sepuede stat fichero de entrada '%s'"
 
-#: src/strip.c:337
+#: src/strip.c:329
 #, c-format
 msgid "while opening '%s'"
 msgstr "mientras se abría '%s'"
 
-#: src/strip.c:375
+#: src/strip.c:367
 #, c-format
 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:475
+#: src/strip.c:468
 #, c-format
 msgid "cannot open EBL backend"
 msgstr "No se puede abrir el segundo plano EBL"
 
-#: src/strip.c:525 src/strip.c:549
+#: src/strip.c:508
+#, fuzzy, c-format
+msgid "cannot get number of phdrs"
+msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
+
+#: src/strip.c:523 src/strip.c:547
 #, c-format
 msgid "cannot create new file '%s': %s"
 msgstr "no se puede crear fichero nuevo '%s': %s"
 
-#: src/strip.c:609
+#: src/strip.c:613
 #, c-format
 msgid "illformed file '%s'"
 msgstr "Fichero illformed '%s'"
 
-#: src/strip.c:913 src/strip.c:1002
+#: src/strip.c:935 src/strip.c:1024
 #, c-format
 msgid "while generating output file: %s"
 msgstr "al generar fichero de salida: %s"
 
-#: src/strip.c:975 src/strip.c:1937
+#: src/strip.c:997 src/strip.c:1962
 #, c-format
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: error al crear encabezamiento ELF: %s"
 
-#: src/strip.c:989
+#: src/strip.c:1011
 #, c-format
 msgid "while preparing output for '%s'"
 msgstr "al preparar salida para '%s'"
 
-#: src/strip.c:1040 src/strip.c:1096
+#: src/strip.c:1062 src/strip.c:1119
 #, c-format
 msgid "while create section header section: %s"
 msgstr "al crear sección de encabezamiento de sección: %s"
 
-#: src/strip.c:1046
+#: src/strip.c:1068
 #, c-format
 msgid "cannot allocate section data: %s"
 msgstr "no se puede asignar espacio para los datos: %s"
 
-#: src/strip.c:1105
+#: src/strip.c:1128
 #, 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:1732
+#: src/strip.c:1757
 #, fuzzy, c-format
 msgid "bad relocation"
 msgstr "Mostrar reubicaciones"
 
-#: src/strip.c:1849 src/strip.c:1959
+#: src/strip.c:1874 src/strip.c:1984
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "al escribir '%s': %s"
 
-#: src/strip.c:1860
+#: src/strip.c:1885
 #, c-format
 msgid "while creating '%s'"
 msgstr "al crear '%s'"
 
-#: src/strip.c:1882
+#: src/strip.c:1907
 #, 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:1945
+#: src/strip.c:1970
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: error al leer el fichero: %s"
 
-#: src/strip.c:1984 src/strip.c:2004
+#: src/strip.c:2009 src/strip.c:2029
 #, c-format
 msgid "while writing '%s'"
 msgstr "al escribir '%s'"
 
-#: src/strip.c:2038 src/strip.c:2045
+#: src/strip.c:2066 src/strip.c:2073
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "Error al terminar '%s': %s"
 
-#: src/strip.c:2068 src/strip.c:2125
+#: src/strip.c:2096 src/strip.c:2153
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "no es posible establecer acceso y fecha de modificación de '%s'"
 
-#: src/unstrip.c:78
+#: src/unstrip.c:70
 msgid "Match MODULE against file names, not module names"
 msgstr "Coincidir MODULO con nombres de archivo, no con nombres de módulo"
 
-#: src/unstrip.c:79
+#: src/unstrip.c:71
 msgid "Silently skip unfindable files"
 msgstr "Omitir silenciosamente los archivos perdidos"
 
-#: src/unstrip.c:82
+#: src/unstrip.c:74
 msgid "Place output into FILE"
 msgstr "Colocar salida en FICHERO"
 
-#: src/unstrip.c:84
+#: src/unstrip.c:76
 msgid "Create multiple output files under DIRECTORY"
 msgstr "Crear archivos de salida múltiple bajo DIRECTORIO"
 
-#: src/unstrip.c:85
+#: src/unstrip.c:77
 msgid "Use module rather than file names"
 msgstr "Usar módulo en lugar de nombres de archivo"
 
-#: src/unstrip.c:87
+#: src/unstrip.c:79
 msgid "Create output for modules that have no separate debug information"
 msgstr ""
 "Crear salida para módulos que no tienen información de depuración "
 "independiente"
 
-#: src/unstrip.c:90
+#: src/unstrip.c:82
 msgid "Apply relocations to section contents in ET_REL files"
 msgstr "Aplicar reubicaciones a contenido de sección en archivos ET_REL"
 
-#: src/unstrip.c:92
+#: src/unstrip.c:84
 msgid "Only list module and file names, build IDs"
 msgstr "Solamente listar módulo y nombres de archivo, crear los ID"
 
-#: src/unstrip.c:134
+#: 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:166
+#: 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:175
+#: 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:190
+#: src/unstrip.c:189
 #, c-format
 msgid "output directory '%s'"
 msgstr "Directorio de salida '%s'"
 
-#: src/unstrip.c:199
+#: src/unstrip.c:198
 #, c-format
 msgid "exactly two file arguments are required"
 msgstr "dos argumentos de archivos se requieren exactamente"
 
-#: src/unstrip.c:205
+#: 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:218
+#: 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:254
+#: src/unstrip.c:253
 #, c-format
 msgid "cannot create ELF header: %s"
 msgstr "no se puede crear el encabezamiento ELF: %s"
 
-#: src/unstrip.c:259
+#: src/unstrip.c:258
 #, c-format
 msgid "cannot copy ELF header: %s"
 msgstr "no se puede copiar encabezamiento ELF: %s"
 
-#: src/unstrip.c:264 src/unstrip.c:1828
+#: src/unstrip.c:262 src/unstrip.c:1832 src/unstrip.c:1876
+#, fuzzy, c-format
+msgid "cannot get number of program headers: %s"
+msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
+
+#: src/unstrip.c:267 src/unstrip.c:1836
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "No pueden crear encabezamientos de programa: %s"
 
-#: src/unstrip.c:270
+#: src/unstrip.c:273
 #, c-format
 msgid "cannot copy program header: %s"
 msgstr "no puede copiar encabezamiento de programa: %s"
 
-#: src/unstrip.c:280
+#: src/unstrip.c:283
 #, c-format
 msgid "cannot copy section header: %s"
 msgstr "no se puede copiar encabezamiento de sección: %s"
 
-#: src/unstrip.c:283 src/unstrip.c:1509
+#: src/unstrip.c:286 src/unstrip.c:1513
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "no se pueden obtener datos de sección: %s"
 
-#: src/unstrip.c:285 src/unstrip.c:1511
+#: src/unstrip.c:288 src/unstrip.c:1515
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "no pueden copiar datos de sección: %s"
 
-#: src/unstrip.c:309
+#: src/unstrip.c:312
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "no se puede crear el directorio '%s'"
 
-#: src/unstrip.c:349 src/unstrip.c:766 src/unstrip.c:1543
+#: src/unstrip.c:352 src/unstrip.c:769 src/unstrip.c:1547
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "no se puede obtener entrada de tabla de símbolos: %s"
 
-#: src/unstrip.c:365 src/unstrip.c:583 src/unstrip.c:604 src/unstrip.c:616
-#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
+#: src/unstrip.c:368 src/unstrip.c:586 src/unstrip.c:607 src/unstrip.c:619
+#: src/unstrip.c:1568 src/unstrip.c:1698 src/unstrip.c:1722
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "no se puede actualizar tabla de símbolos: %s"
 
-#: src/unstrip.c:375
+#: src/unstrip.c:378
 #, c-format
 msgid "cannot update section header: %s"
 msgstr "no se puede actualizar encabezamiento de sección: %s"
 
-#: src/unstrip.c:414 src/unstrip.c:425
+#: src/unstrip.c:417 src/unstrip.c:428
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr "no se puede actualizar reubicación: %s"
 
-#: src/unstrip.c:512
+#: src/unstrip.c:515
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr "no se puede obtener versión de símbolo: %s"
 
-#: src/unstrip.c:524
+#: src/unstrip.c:527
 #, 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:772
+#: src/unstrip.c:775
 #, c-format
 msgid "invalid string offset in symbol [%Zu]"
 msgstr "compensación de cadena inválida en símbolo [%Zu]"
 
-#: src/unstrip.c:914 src/unstrip.c:1254
+#: src/unstrip.c:917 src/unstrip.c:1258
 #, c-format
 msgid "cannot read section [%Zu] name: %s"
 msgstr "no se puede leer nombre [%Zu]: %s"
 
-#: src/unstrip.c:955 src/unstrip.c:974 src/unstrip.c:1007
+#: src/unstrip.c:958 src/unstrip.c:977 src/unstrip.c:1010
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr "no se puede leer sección '.gnu.prelink_undo': %s"
 
-#: src/unstrip.c:995
+#: src/unstrip.c:998
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr "contenido inválido en sección '%s'"
 
-#: src/unstrip.c:1050 src/unstrip.c:1374
+#: src/unstrip.c:1053 src/unstrip.c:1378
 #, c-format
 msgid "cannot find matching section for [%Zu] '%s'"
 msgstr "no se puede hallar sección coincidente para [%Zu] '%s'"
 
-#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
+#: src/unstrip.c:1178 src/unstrip.c:1193 src/unstrip.c:1459
 #, 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:1198
+#: src/unstrip.c:1202
 #, 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:1225 src/unstrip.c:1229
+#: src/unstrip.c:1229 src/unstrip.c:1233
 #, 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:1233 src/unstrip.c:1237 src/unstrip.c:1470
+#: src/unstrip.c:1237 src/unstrip.c:1241 src/unstrip.c:1474
 #, c-format
 msgid "cannot get section count: %s"
 msgstr "No se puede obtener cuenta de sección: %s"
 
-#: src/unstrip.c:1240
+#: src/unstrip.c:1244
 #, 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:1299 src/unstrip.c:1389
+#: src/unstrip.c:1303 src/unstrip.c:1393
 #, 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:1449
+#: src/unstrip.c:1453
 #, c-format
 msgid "cannot add new section: %s"
 msgstr "No se puede añadir nueva sección: %s"
 
-#: src/unstrip.c:1551
+#: src/unstrip.c:1555
 #, c-format
 msgid "symbol [%Zu] has invalid section index"
 msgstr "símbolo [%Zu] tiene índice de sección inválido"
 
-#: src/unstrip.c:1789
+#: src/unstrip.c:1793
 #, c-format
 msgid "cannot read section data: %s"
 msgstr "no se puede leer la sección de datos: %s"
 
-#: src/unstrip.c:1810
+#: src/unstrip.c:1814
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr "no se puede leer encabezamiento ELF: %s"
 
-#: src/unstrip.c:1838
+#: src/unstrip.c:1846
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "no se puede actualizar encabezamiento de programa: %s"
 
-#: src/unstrip.c:1843 src/unstrip.c:1922
+#: src/unstrip.c:1851 src/unstrip.c:1934
 #, c-format
 msgid "cannot write output file: %s"
 msgstr "no se puede escribir al archivo de salida: %s"
 
-#: src/unstrip.c:1891
+#: src/unstrip.c:1903
 #, 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:1894
+#: src/unstrip.c:1906
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6469,58 +6752,77 @@
 "Datos DWARF en '%s' no se ajustan a polarización de pre-enlace; considere "
 "prelink -u"
 
-#: src/unstrip.c:1913 src/unstrip.c:1953 src/unstrip.c:1965 src/unstrip.c:2045
+#: src/unstrip.c:1925 src/unstrip.c:1976 src/unstrip.c:1988 src/unstrip.c:2074
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr "no se puede crear un descriptor ELF: %s"
 
-#: src/unstrip.c:1971
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "Al parecer '%s' y '%s'no coinciden"
+#: src/unstrip.c:1967
+msgid "WARNING: "
+msgstr ""
 
-#: src/unstrip.c:2002
+#: src/unstrip.c:1969
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1992
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1995
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1998
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:2001
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2031
 #, 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:2006
+#: src/unstrip.c:2035
 #, 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:2021
+#: src/unstrip.c:2050
 #, 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:2025
+#: src/unstrip.c:2054
 #, 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:2038
+#: src/unstrip.c:2067
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr "No se obtuvo el archivo '%s' de módulo '%s' "
 
-#: src/unstrip.c:2069
+#: src/unstrip.c:2098
 #, 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:2202
+#: src/unstrip.c:2231
 #, c-format
 msgid "no matching modules found"
 msgstr "No se encontraron módulos coincidentes"
 
-#: src/unstrip.c:2211
+#: src/unstrip.c:2240
 #, c-format
 msgid "matched more than one module"
 msgstr "coincidió con más de un módulo"
 
-#: src/unstrip.c:2258
+#: src/unstrip.c:2287
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
@@ -6528,7 +6830,7 @@
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 
-#: src/unstrip.c:2259
+#: src/unstrip.c:2288
 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"
@@ -6578,6 +6880,33 @@
 "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"
+
+#~ msgid "unknown user tag %hx"
+#~ msgstr "Usuario de etiqueta %hx desconocido "
+
+#~ msgid "unknown attribute %hx"
+#~ msgstr "atributo de sección %hx desconocido"
+
+#~ msgid "unknown user attribute %hx"
+#~ msgstr "Atributo de usuario desconocido %hx"
+
+#, fuzzy
+#~ msgid "unknown form %#<PRIx64>"
+#~ msgstr "Forma %<PRIx64> desconocida"
+
 #~ msgid ""
 #~ "\n"
 #~ "\n"
diff --git a/src/po/ja.gmo b/src/po/ja.gmo
index 4c1d5ef..d6a4b75 100644
--- a/src/po/ja.gmo
+++ b/src/po/ja.gmo
Binary files differ
diff --git a/src/po/ja.po b/src/po/ja.po
index 6299fe0..1094e5a 100644
--- a/src/po/ja.po
+++ b/src/po/ja.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: ja\n"
 "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-02-16 13:21+0100\n"
+"POT-Creation-Date: 2014-12-19 21:45+0100\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"
@@ -19,210 +19,219 @@
 "X-Generator: KBabel 1.11.4\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2844
-#: src/readelf.c:3183 src/unstrip.c:2098 src/unstrip.c:2306
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3182
+#: src/readelf.c:3559 src/readelf.c:8285 src/unstrip.c:2127 src/unstrip.c:2335
 #, c-format
 msgid "memory exhausted"
 msgstr "メモリー消費済み"
 
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
+#: 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:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
+#: libelf/elf_error.c:91
 msgid "out of memory"
 msgstr "メモリー不足"
 
-#: libasm/asm_error.c:64 src/ldgeneric.c:2685
+#: libasm/asm_error.c:67 src/ldgeneric.c:2677
 #, c-format
 msgid "cannot create output file"
 msgstr "出力ファイルを作成できません"
 
-#: libasm/asm_error.c:65
+#: libasm/asm_error.c:68
 msgid "invalid parameter"
 msgstr "不当なパラメーター"
 
-#: libasm/asm_error.c:66
+#: libasm/asm_error.c:69
 msgid "cannot change mode of output file"
 msgstr "出力ファイルのモードを変更できません"
 
-#: libasm/asm_error.c:67 src/ldgeneric.c:6998
+#: libasm/asm_error.c:70 src/ldgeneric.c:6990
 #, c-format
 msgid "cannot rename output file"
 msgstr "出力ファイルの名前を変更できません"
 
-#: libasm/asm_error.c:68
+#: libasm/asm_error.c:71
 msgid "duplicate symbol"
 msgstr "重複シンボル"
 
-#: libasm/asm_error.c:69
+#: libasm/asm_error.c:72
 msgid "invalid section type for operation"
 msgstr "操作に不当なセクションタイプ"
 
-#: libasm/asm_error.c:70
+#: libasm/asm_error.c:73
 msgid "error during output of data"
 msgstr "データの出力中にエラー"
 
-#: libasm/asm_error.c:71
+#: libasm/asm_error.c:74
 msgid "no backend support available"
 msgstr "バックエンドサポートが利用できません"
 
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
+#: libelf/elf_error.c:63
 msgid "unknown error"
 msgstr "不明なエラー"
 
-#: libdw/dwarf_error.c:81
+#: libdw/dwarf_error.c:60
 msgid "invalid access"
 msgstr "不当なアクセス"
 
-#: libdw/dwarf_error.c:82
+#: libdw/dwarf_error.c:61
 msgid "no regular file"
 msgstr "一般ファイルではありません"
 
-#: libdw/dwarf_error.c:83
+#: libdw/dwarf_error.c:62
 msgid "I/O error"
 msgstr "I/O エラー"
 
-#: libdw/dwarf_error.c:84
+#: libdw/dwarf_error.c:63
 msgid "invalid ELF file"
 msgstr "不当な ELF ファイル"
 
-#: libdw/dwarf_error.c:85
+#: libdw/dwarf_error.c:64
 msgid "no DWARF information"
 msgstr "DWARF 情報がありません"
 
-#: libdw/dwarf_error.c:86
+#: libdw/dwarf_error.c:65
 msgid "no ELF file"
 msgstr "ELF ファイルがありません"
 
-#: libdw/dwarf_error.c:87
+#: libdw/dwarf_error.c:66
 msgid "cannot get ELF header"
 msgstr "ELF ヘッダーを得られません"
 
-#: libdw/dwarf_error.c:89
+#: libdw/dwarf_error.c:68
 msgid "not implemented"
 msgstr "未実装"
 
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
+#: libdw/dwarf_error.c:69 libelf/elf_error.c:107 libelf/elf_error.c:155
 msgid "invalid command"
 msgstr "不当なコマンド"
 
-#: libdw/dwarf_error.c:91
+#: libdw/dwarf_error.c:70
 msgid "invalid version"
 msgstr "不当なバージョン"
 
-#: libdw/dwarf_error.c:92
+#: libdw/dwarf_error.c:71
 msgid "invalid file"
 msgstr "不当なファイル"
 
-#: libdw/dwarf_error.c:93
+#: libdw/dwarf_error.c:72
 msgid "no entries found"
 msgstr "項目が見つかりません"
 
-#: libdw/dwarf_error.c:94
+#: libdw/dwarf_error.c:73
 msgid "invalid DWARF"
 msgstr "不当な DWARF"
 
-#: libdw/dwarf_error.c:95
+#: libdw/dwarf_error.c:74
 msgid "no string data"
 msgstr "文字データがありません"
 
-#: libdw/dwarf_error.c:96
+#: libdw/dwarf_error.c:75
 msgid "no address value"
 msgstr "アドレス値ではありません"
 
-#: libdw/dwarf_error.c:97
+#: libdw/dwarf_error.c:76
 msgid "no constant value"
 msgstr "固定値ではありません"
 
-#: libdw/dwarf_error.c:98
+#: libdw/dwarf_error.c:77
 msgid "no reference value"
 msgstr "参照値がありません"
 
-#: libdw/dwarf_error.c:99
+#: libdw/dwarf_error.c:78
 msgid "invalid reference value"
 msgstr "不当な参照値"
 
-#: libdw/dwarf_error.c:100
+#: libdw/dwarf_error.c:79
 msgid ".debug_line section missing"
 msgstr ".debug_line セクションがありません"
 
-#: libdw/dwarf_error.c:101
+#: libdw/dwarf_error.c:80
 msgid "invalid .debug_line section"
 msgstr "不当な .debug_line セクション"
 
-#: libdw/dwarf_error.c:102
+#: libdw/dwarf_error.c:81
 msgid "debug information too big"
 msgstr "デバッグ情報が大きすぎます"
 
-#: libdw/dwarf_error.c:103
+#: libdw/dwarf_error.c:82
 msgid "invalid DWARF version"
 msgstr "不当な DWARF バージョン"
 
-#: libdw/dwarf_error.c:104
+#: libdw/dwarf_error.c:83
 msgid "invalid directory index"
 msgstr "不当なディレクトリー索引"
 
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
 msgid "address out of range"
 msgstr "アドレスが範囲外です"
 
-#: libdw/dwarf_error.c:106
+#: libdw/dwarf_error.c:85
 msgid "no location list value"
 msgstr "ロケーションリスト値ではありません"
 
-#: libdw/dwarf_error.c:107
+#: libdw/dwarf_error.c:86
 msgid "no block data"
 msgstr "ブロックデータではありません"
 
-#: libdw/dwarf_error.c:108
+#: libdw/dwarf_error.c:87
 msgid "invalid line index"
 msgstr "不当な行索引"
 
-#: libdw/dwarf_error.c:109
+#: libdw/dwarf_error.c:88
 msgid "invalid address range index"
 msgstr "不当なアドレス範囲索引"
 
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
 msgid "no matching address range"
 msgstr "アドレス範囲に対応しません"
 
-#: libdw/dwarf_error.c:111
+#: libdw/dwarf_error.c:90
 msgid "no flag value"
 msgstr "フラグ値がありません"
 
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
+#: libdw/dwarf_error.c:91 libelf/elf_error.c:232
 msgid "invalid offset"
 msgstr "不当なオフセット"
 
-#: libdw/dwarf_error.c:113
+#: libdw/dwarf_error.c:92
 msgid ".debug_ranges section missing"
 msgstr ".debug_ranges セクションがありません"
 
-#: libdw/dwarf_error.c:114
+#: libdw/dwarf_error.c:93
 msgid "invalid CFI section"
 msgstr "不当な CFI セクション"
 
-#: libdwfl/argp-std.c:67 src/unstrip.c:2248
+#: libdw/dwarf_error.c:94
+msgid "no alternative debug link found"
+msgstr ""
+
+#: libdw/dwarf_error.c:95
+#, fuzzy
+msgid "invalid opcode"
+msgstr "不当なオペランド"
+
+#: libdwfl/argp-std.c:46 src/unstrip.c:2277
 msgid "Input selection options:"
 msgstr "選択オプションを入力してください:"
 
-#: libdwfl/argp-std.c:68
+#: libdwfl/argp-std.c:47
 msgid "Find addresses in FILE"
 msgstr "ふぁいる 中のアドレスを探す"
 
-#: libdwfl/argp-std.c:70
+#: libdwfl/argp-std.c:49
 msgid "Find addresses from signatures found in COREFILE"
 msgstr "COREFILE 中で見つかった署名からアドレスを探す"
 
-#: libdwfl/argp-std.c:72
+#: libdwfl/argp-std.c:51
 msgid "Find addresses in files mapped into process PID"
 msgstr "プロセス PID に対応するファイル中のアドレスを探す"
 
-#: libdwfl/argp-std.c:74
+#: libdwfl/argp-std.c:53
 msgid ""
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
@@ -230,419 +239,489 @@
 "Linux の /proc/PID/maps 形式の ふぁいる から読み込んだものに対応するファイル"
 "のアドレスを探す"
 
-#: libdwfl/argp-std.c:76
+#: libdwfl/argp-std.c:55
 msgid "Find addresses in the running kernel"
 msgstr "実行中のカーネルのアドレスを探す"
 
-#: libdwfl/argp-std.c:78
+#: libdwfl/argp-std.c:57
 msgid "Kernel with all modules"
 msgstr "全てのモジュール付きのカーネル"
 
-#: libdwfl/argp-std.c:80
+#: libdwfl/argp-std.c:59
 msgid "Search path for separate debuginfo files"
 msgstr "分離した debuginfo ファイルべきパスを探す"
 
-#: libdwfl/argp-std.c:163
+#: 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:223
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
+msgstr "カーネルシンボルをロードできません"
+
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
+msgstr "カーネルモジュールを見つけられません"
+
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
+msgstr "カーネルかモジュールを見つけられません"
+
+#: libdwfl/argp-std.c:290
 #, c-format
 msgid "cannot read ELF core file: %s"
 msgstr "ELF コアファイルを読めません: %s"
 
-#: libdwfl/argp-std.c:241
+#: libdwfl/argp-std.c:311
 msgid "No modules recognized in core file"
 msgstr "コアファイルの中にモジュールを認識できません"
 
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr "カーネルシンボルをロードできません"
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr "カーネルモジュールを見つけられません"
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr "カーネルかモジュールを見つけられません"
-
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:56
 msgid "See errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:57
 msgid "See elf_errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:58
 msgid "See dwarf_errno"
 msgstr ""
 
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:59
 msgid "See ebl_errno (XXX missing)"
 msgstr ""
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:60
 msgid "gzip decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:61
 msgid "bzip2 decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:62
 msgid "LZMA decompression failed"
 msgstr ""
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:63
 msgid "no support library found for machine"
 msgstr ""
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:64
 msgid "Callbacks missing for ET_REL file"
 msgstr ""
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:65
 msgid "Unsupported relocation type"
 msgstr ""
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:66
 msgid "r_offset is bogus"
 msgstr ""
 
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
 msgid "offset out of range"
 msgstr "オフセットが範囲を越えている"
 
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:68
 #, fuzzy
 msgid "relocation refers to undefined symbol"
 msgstr "定義されたシンボルの印刷サイズ"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:69
 msgid "Callback returned failure"
 msgstr ""
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:70
 #, fuzzy
 msgid "No DWARF information found"
 msgstr "DWARF 情報がありません"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:71
 msgid "No symbol table found"
 msgstr ""
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:72
 #, fuzzy
 msgid "No ELF program headers"
 msgstr "プログラムヘッダーを得られません: %s"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:73
 msgid "address range overlaps an existing module"
 msgstr ""
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:76
 msgid "image truncated"
 msgstr ""
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:77
 #, fuzzy
 msgid "ELF file opened"
 msgstr "ファイルのオープンを追跡します。"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:78
 #, fuzzy
 msgid "not a valid ELF file"
 msgstr "不当な ELF ファイル"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:79
 #, fuzzy
 msgid "cannot handle DWARF type description"
 msgstr "Elf 記述子を生成できません: %s"
 
-#: libdwfl/libdwflP.h:97
+#: libdwfl/libdwflP.h:80
 msgid "ELF file does not match build ID"
 msgstr ""
 
-#: libdwfl/libdwflP.h:98
+#: libdwfl/libdwflP.h:81
 #, fuzzy
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "ラインデータセクションデータを得られません: %s"
 
-#: libebl/eblbackendname.c:63
+#: 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:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:94 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
+#: 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 "<unknown>"
 msgstr "<不明>"
 
-#: libebl/ebldynamictagname.c:126
+#: libebl/ebldynamictagname.c:105
 #, c-format
 msgid "<unknown>: %#<PRIx64>"
 msgstr "<不明>: %#<PRIx64>"
 
-#: libebl/eblobjnote.c:76
+#: libebl/eblobjnote.c:55
 #, fuzzy, c-format
 msgid "unknown SDT version %u\n"
 msgstr "不明なバージョン"
 
-#: libebl/eblobjnote.c:94
+#: libebl/eblobjnote.c:73
 #, fuzzy, c-format
 msgid "invalid SDT probe descriptor\n"
 msgstr "不当なファイル記述子"
 
-#: libebl/eblobjnote.c:144
+#: libebl/eblobjnote.c:123
 #, c-format
 msgid "    PC: "
 msgstr ""
 
-#: libebl/eblobjnote.c:146
+#: libebl/eblobjnote.c:125
 #, c-format
 msgid " Base: "
 msgstr ""
 
-#: libebl/eblobjnote.c:148
+#: libebl/eblobjnote.c:127
 #, c-format
 msgid " Semaphore: "
 msgstr ""
 
-#: libebl/eblobjnote.c:150
+#: libebl/eblobjnote.c:129
 #, c-format
 msgid "    Provider: "
 msgstr ""
 
-#: libebl/eblobjnote.c:152
+#: libebl/eblobjnote.c:131
 #, c-format
 msgid " Name: "
 msgstr ""
 
-#: libebl/eblobjnote.c:154
+#: libebl/eblobjnote.c:133
 #, c-format
 msgid " Args: "
 msgstr ""
 
-#: libebl/eblobjnote.c:164
+#: libebl/eblobjnote.c:143
 #, c-format
 msgid "    Build ID: "
 msgstr "   ビルト ID: "
 
-#: libebl/eblobjnote.c:175
+#: libebl/eblobjnote.c:154
 #, c-format
 msgid "    Linker version: %.*s\n"
 msgstr ""
 
-#: libebl/eblobjnote.c:224
+#: libebl/eblobjnote.c:203
 #, c-format
 msgid "    OS: %s, ABI: "
 msgstr "    OS: %s、ABI: "
 
-#: libebl/eblosabiname.c:95
+#: libebl/eblosabiname.c:74
 msgid "Stand alone"
 msgstr "スタンドアローン"
 
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
+#: libebl/eblsymbolbindingname.c:71 libebl/eblsymboltypename.c:77
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<不明>: %d"
 
-#: libelf/elf_error.c:88
+#: libelf/elf_error.c:67
 msgid "unknown version"
 msgstr "不明なバージョン"
 
-#: libelf/elf_error.c:92
+#: libelf/elf_error.c:71
 msgid "unknown type"
 msgstr "不明なタイプ"
 
-#: libelf/elf_error.c:96
+#: libelf/elf_error.c:75
 msgid "invalid `Elf' handle"
 msgstr "無効な `Elf' の処理"
 
-#: libelf/elf_error.c:100
+#: libelf/elf_error.c:79
 msgid "invalid size of source operand"
 msgstr "ソース演算子の大きさが無効"
 
-#: libelf/elf_error.c:104
+#: libelf/elf_error.c:83
 msgid "invalid size of destination operand"
 msgstr "宛先演算子の大きさが無効"
 
-#: libelf/elf_error.c:108 src/readelf.c:5176
+#: libelf/elf_error.c:87 src/readelf.c:5367
 #, c-format
 msgid "invalid encoding"
 msgstr "無効なエンコード"
 
-#: libelf/elf_error.c:116
+#: libelf/elf_error.c:95
 msgid "invalid file descriptor"
 msgstr "不当なファイル記述子"
 
-#: libelf/elf_error.c:120
+#: libelf/elf_error.c:99
 msgid "invalid operation"
 msgstr "不当な操作"
 
-#: libelf/elf_error.c:124
+#: libelf/elf_error.c:103
 msgid "ELF version not set"
 msgstr "ELF のバージョンが設定されていない"
 
-#: libelf/elf_error.c:136
+#: libelf/elf_error.c:115
 msgid "invalid fmag field in archive header"
 msgstr "アーカイブヘッダーの不当な fmag 領域"
 
-#: libelf/elf_error.c:140
+#: libelf/elf_error.c:119
 msgid "invalid archive file"
 msgstr "不当なアーカイブファイル"
 
-#: libelf/elf_error.c:144
+#: libelf/elf_error.c:123
 msgid "descriptor is not for an archive"
 msgstr "記述子はアーカイブ用ではありません"
 
-#: libelf/elf_error.c:148
+#: libelf/elf_error.c:127
 msgid "no index available"
 msgstr "索引が使えません"
 
-#: libelf/elf_error.c:152
+#: libelf/elf_error.c:131
 msgid "cannot read data from file"
 msgstr "ファイルからデータを読みません"
 
-#: libelf/elf_error.c:156
+#: libelf/elf_error.c:135
 msgid "cannot write data to file"
 msgstr "ファイルへデータを書けません"
 
-#: libelf/elf_error.c:160
+#: libelf/elf_error.c:139
 msgid "invalid binary class"
 msgstr "不当なバイナリークラス"
 
-#: libelf/elf_error.c:164
+#: libelf/elf_error.c:143
 msgid "invalid section index"
 msgstr "不当なセクション索引"
 
-#: libelf/elf_error.c:168
+#: libelf/elf_error.c:147
 msgid "invalid operand"
 msgstr "不当なオペランド"
 
-#: libelf/elf_error.c:172
+#: libelf/elf_error.c:151
 msgid "invalid section"
 msgstr "不当なセクション"
 
-#: libelf/elf_error.c:180
+#: libelf/elf_error.c:159
 msgid "executable header not created first"
 msgstr "エクゼキュータブルヘッダーが最初に作られていません"
 
-#: libelf/elf_error.c:184
+#: libelf/elf_error.c:163
 msgid "file descriptor disabled"
 msgstr "ファイル記述子が機能しません"
 
-#: libelf/elf_error.c:188
+#: libelf/elf_error.c:167
 #, fuzzy
 msgid "archive/member file descriptor mismatch"
 msgstr "アーカイブ/メンバー領域が不整合です"
 
-#: libelf/elf_error.c:196
+#: libelf/elf_error.c:175
 msgid "cannot manipulate null section"
 msgstr "null セクションを操作できません"
 
-#: libelf/elf_error.c:200
+#: libelf/elf_error.c:179
 msgid "data/scn mismatch"
 msgstr "データ/scnが不整合です"
 
-#: libelf/elf_error.c:204
+#: libelf/elf_error.c:183
 msgid "invalid section header"
 msgstr "不当なセクションヘッダー"
 
-#: libelf/elf_error.c:208 src/readelf.c:6850 src/readelf.c:6951
-#: src/readelf.c:7113
+#: libelf/elf_error.c:187 src/readelf.c:7235 src/readelf.c:7683
+#: src/readelf.c:7784 src/readelf.c:7954
 #, c-format
 msgid "invalid data"
 msgstr "不当なデータ"
 
-#: libelf/elf_error.c:212
+#: libelf/elf_error.c:191
 msgid "unknown data encoding"
 msgstr "不明なデータエンコード"
 
-#: libelf/elf_error.c:216
+#: libelf/elf_error.c:195
 msgid "section `sh_size' too small for data"
 msgstr "`sh_size' セクションがデータには小さすぎます"
 
-#: libelf/elf_error.c:220
+#: libelf/elf_error.c:199
 msgid "invalid section alignment"
 msgstr "不当なセクション調整"
 
-#: libelf/elf_error.c:224
+#: libelf/elf_error.c:203
 msgid "invalid section entry size"
 msgstr "不当なセクション項目の大きさ"
 
-#: libelf/elf_error.c:228
+#: libelf/elf_error.c:207
 msgid "update() for write on read-only file"
 msgstr "読込み専用ファイルでの書込みのための update()"
 
-#: libelf/elf_error.c:232
+#: libelf/elf_error.c:211
 msgid "no such file"
 msgstr "そのようなファイルはありません"
 
-#: libelf/elf_error.c:236
+#: libelf/elf_error.c:215
 msgid "only relocatable files can contain section groups"
 msgstr "リロケータブルファイルのみセクショングループを含むことができます"
 
-#: libelf/elf_error.c:241
+#: libelf/elf_error.c:220
 msgid ""
 "program header only allowed in executables, shared objects, and core files"
 msgstr ""
 "プログラムヘッダーはエクゼキュータブルか、共用オブジェクト、コアファイルにの"
 "み認められています"
 
-#: libelf/elf_error.c:248
+#: libelf/elf_error.c:227
 msgid "file has no program header"
 msgstr "ファイルにプログラムヘッダーがありません"
 
-#: src/addr2line.c:66
+#: src/addr2line.c:58
 msgid "Output selection options:"
 msgstr ""
 
-#: src/addr2line.c:67
+#: src/addr2line.c:59
 msgid "Show only base names of source files"
 msgstr ""
 
-#: src/addr2line.c:69
+#: src/addr2line.c:61
 msgid "Show absolute file names using compilation directory"
 msgstr ""
 
-#: src/addr2line.c:70
+#: src/addr2line.c:62
 msgid "Also show function names"
 msgstr ""
 
-#: src/addr2line.c:71
+#: src/addr2line.c:63
 msgid "Also show symbol or section names"
 msgstr ""
 
-#: src/addr2line.c:72
+#: 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:74
+#: src/addr2line.c:67
 msgid "Treat addresses as offsets relative to NAME section."
 msgstr ""
 
-#: src/addr2line.c:76 src/elfcmp.c:80 src/findtextrel.c:75 src/nm.c:108
-#: src/strings.c:83
+#: 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:85
+#: src/addr2line.c:81
 msgid ""
 "Locate source files and line information for ADDRs (in a.out by default)."
 msgstr ""
 
-#: src/addr2line.c:89
+#: src/addr2line.c:85
 msgid "[ADDR...]"
 msgstr ""
 
-#: src/addr2line.c:189 src/ar.c:296 src/elfcmp.c:670 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:273 src/objdump.c:189
-#: src/ranlib.c:136 src/readelf.c:462 src/size.c:219 src/strings.c:227
-#: src/strip.c:221 src/unstrip.c:234
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:663 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: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"
@@ -653,674 +732,674 @@
 "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:194 src/ar.c:301 src/elfcmp.c:675 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:278 src/objdump.c:194
-#: src/ranlib.c:141 src/readelf.c:467 src/size.c:224 src/strings.c:232
-#: src/strip.c:226 src/unstrip.c:239
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:668 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: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:413
+#: src/addr2line.c:474
 #, c-format
 msgid "Section syntax requires exactly one module"
 msgstr ""
 
-#: src/addr2line.c:436
+#: src/addr2line.c:497
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside section '%s'"
 msgstr ""
 
-#: src/addr2line.c:477
+#: src/addr2line.c:563
 #, c-format
 msgid "cannot find symbol '%s'"
 msgstr ""
 
-#: src/addr2line.c:482
+#: src/addr2line.c:568
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
 msgstr ""
 
-#: src/ar.c:76
+#: src/ar.c:69
 msgid "Commands:"
 msgstr "コマンド:"
 
-#: src/ar.c:77
+#: src/ar.c:70
 msgid "Delete files from archive."
 msgstr "アーカイブからファイルを削除。"
 
-#: src/ar.c:78
+#: src/ar.c:71
 msgid "Move files in archive."
 msgstr "アーカイブ内のファイルを移動。"
 
-#: src/ar.c:79
+#: src/ar.c:72
 msgid "Print files in archive."
 msgstr "アーカイブ内のファイルを印刷。"
 
-#: src/ar.c:80
+#: src/ar.c:73
 msgid "Quick append files to archive."
 msgstr "アーカイブへの即座のファイル追加。"
 
-#: src/ar.c:82
+#: src/ar.c:75
 msgid "Replace existing or insert new file into archive."
 msgstr "アーカイブへの既存のファイルの置き換えか、新しいファイルの挿入。"
 
-#: src/ar.c:83
+#: src/ar.c:76
 msgid "Display content of archive."
 msgstr "アーカイブの内容の表示"
 
-#: src/ar.c:84
+#: src/ar.c:77
 msgid "Extract files from archive."
 msgstr "アーカイブからのファイルの取出し"
 
-#: src/ar.c:86
+#: src/ar.c:79
 msgid "Command Modifiers:"
 msgstr "コマンド修飾子:"
 
-#: src/ar.c:87
+#: src/ar.c:80
 msgid "Preserve original dates."
 msgstr "元データの保存。"
 
-#: src/ar.c:88
+#: src/ar.c:81
 msgid "Use instance [COUNT] of name."
 msgstr "名前のインスタンス [COUNT] の使用。"
 
-#: src/ar.c:90
+#: src/ar.c:83
 msgid "Do not replace existing files with extracted files."
 msgstr "既存のファイルを抽出したファイルで置き換えない。"
 
-#: src/ar.c:91
+#: src/ar.c:84
 msgid "Allow filename to be truncated if necessary."
 msgstr "必要ならばファイル名の切り捨てを認める。"
 
-#: src/ar.c:93
+#: src/ar.c:86
 msgid "Provide verbose output."
 msgstr "饒舌な出力を提供する。"
 
-#: src/ar.c:94
+#: src/ar.c:87
 msgid "Force regeneration of symbol table."
 msgstr "シンボルテーブルの再生成を強制する。"
 
-#: src/ar.c:95
+#: src/ar.c:88
 msgid "Insert file after [MEMBER]."
 msgstr "[MEMBER]の後にファイルを挿入する。"
 
-#: src/ar.c:96
+#: src/ar.c:89
 msgid "Insert file before [MEMBER]."
 msgstr "[MEMBER]の前にファイルを挿入する。"
 
-#: src/ar.c:97
+#: src/ar.c:90
 msgid "Same as -b."
 msgstr "-b と同じ。"
 
-#: src/ar.c:98
+#: src/ar.c:91
 msgid "Suppress message when library has to be created."
 msgstr "ライブラリーを生成しなければならない時にメッセージを抑止する。"
 
-#: src/ar.c:100
+#: src/ar.c:93
 msgid "Use full path for file matching."
 msgstr "ファイル照合にフルパスを使う。"
 
-#: src/ar.c:101
+#: src/ar.c:94
 msgid "Update only older files in archive."
 msgstr "アーカイブの古いファイルのみ更新する。"
 
-#: src/ar.c:107
+#: src/ar.c:100
 msgid "Create, modify, and extract from archives."
 msgstr "アーカイブから作成や、修正、抽出する。"
 
-#: src/ar.c:110
+#: src/ar.c:103
 msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 msgstr "[メンバー] [合計] アーカイブ [ファイル...]"
 
-#: src/ar.c:192
+#: src/ar.c:185
 #, c-format
 msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
 msgstr "'a'や、'b'、'i'は、'm' や 'r' オプションと一緒にしか指定できません"
 
-#: src/ar.c:197
+#: src/ar.c:190
 #, c-format
 msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
 msgstr "'a'や、'b'、'i' 修飾子には MEMBER パラメーターが必要です"
 
-#: src/ar.c:213
+#: src/ar.c:206
 #, c-format
 msgid "'N' is only meaningful with the 'x' and 'd' options"
 msgstr "'N' は 'x' や 'd' オプションと一緒の時のみ意味を持ちます"
 
-#: src/ar.c:218
+#: src/ar.c:211
 #, c-format
 msgid "COUNT parameter required"
 msgstr "COUNT パラメーターが必要です"
 
-#: src/ar.c:230
+#: src/ar.c:223
 #, c-format
 msgid "invalid COUNT parameter %s"
 msgstr "不当な COUNT パラメーター %s"
 
-#: src/ar.c:237
+#: src/ar.c:230
 #, c-format
 msgid "'%c' is only meaningful with the 'x' option"
 msgstr "'%c' は 'x' オプションと一緒の時のみ意味を持ちます"
 
-#: src/ar.c:243
+#: src/ar.c:236
 #, c-format
 msgid "archive name required"
 msgstr "アーカイブ名が必要です"
 
-#: src/ar.c:256
+#: src/ar.c:249
 #, c-format
 msgid "command option required"
 msgstr ""
 
-#: src/ar.c:321
+#: src/ar.c:314
 #, c-format
 msgid "More than one operation specified"
 msgstr "1つを越える操作が指定されました"
 
-#: src/ar.c:415
+#: src/ar.c:408
 #, c-format
 msgid "cannot open archive '%s'"
 msgstr "アーカイブ '%s' を開くことができません"
 
-#: src/ar.c:425
+#: src/ar.c:418
 #, c-format
 msgid "cannot open archive '%s': %s"
 msgstr "アーカイブ '%s' を開けません: %s"
 
-#: src/ar.c:429
+#: src/ar.c:422
 #, c-format
 msgid "%s: not an archive file"
 msgstr "%s: アーカイブファイルではありません"
 
-#: src/ar.c:433
+#: src/ar.c:426
 #, c-format
 msgid "cannot stat archive '%s'"
 msgstr "アーカイブに stat できません: '%s'"
 
-#: src/ar.c:445
+#: src/ar.c:438
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "アーカイブに項目 %s がありません\n"
 
-#: src/ar.c:498 src/ar.c:940 src/ar.c:1140
+#: src/ar.c:491 src/ar.c:933 src/ar.c:1133
 #, c-format
 msgid "cannot create hash table"
 msgstr "ハッシュテーブルを生成できません"
 
-#: src/ar.c:505 src/ar.c:947 src/ar.c:1149
+#: src/ar.c:498 src/ar.c:940 src/ar.c:1142
 #, c-format
 msgid "cannot insert into hash table"
 msgstr "ハッシュに挿入できません"
 
-#: src/ar.c:513 src/ranlib.c:176
+#: src/ar.c:506 src/ranlib.c:168
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "'%s' に stat できません"
 
-#: src/ar.c:609
+#: src/ar.c:602
 #, c-format
 msgid "cannot read content of %s: %s"
 msgstr "%s の内容を読むことができません: %s"
 
-#: src/ar.c:652
+#: src/ar.c:645
 #, c-format
 msgid "cannot open %.*s"
 msgstr "%.*s を開けません"
 
-#: src/ar.c:674
+#: src/ar.c:667
 #, c-format
 msgid "failed to write %s"
 msgstr "%s への書込みに失敗しました"
 
-#: src/ar.c:686
+#: src/ar.c:679
 #, c-format
 msgid "cannot change mode of %s"
 msgstr "%s のモードを変更できません"
 
-#: src/ar.c:702
+#: src/ar.c:695
 #, c-format
 msgid "cannot change modification time of %s"
 msgstr "%s の更新時間を変更できません"
 
-#: src/ar.c:748
+#: src/ar.c:741
 #, c-format
 msgid "cannot rename temporary file to %.*s"
 msgstr "一時ファイルを %.*s に名前変更できません"
 
-#: src/ar.c:784 src/ar.c:1032 src/ar.c:1431 src/ranlib.c:250
+#: src/ar.c:777 src/ar.c:1025 src/ar.c:1424 src/ranlib.c:242
 #, c-format
 msgid "cannot create new file"
 msgstr "新しいファイルを生成できません"
 
-#: src/ar.c:1231
+#: src/ar.c:1224
 #, c-format
 msgid "position member %s not found"
 msgstr "位置メンバー %s が見つかりません"
 
-#: src/ar.c:1241
+#: src/ar.c:1234
 #, c-format
 msgid "%s: no entry %s in archive!\n"
 msgstr "%s: 項目 %s がアーカイブにありません!\n"
 
-#: src/ar.c:1270 src/ldgeneric.c:517 src/objdump.c:265
+#: src/ar.c:1263 src/ldgeneric.c:509 src/objdump.c:257
 #, c-format
 msgid "cannot open %s"
 msgstr "%s を開けません"
 
-#: src/ar.c:1275
+#: src/ar.c:1268
 #, c-format
 msgid "cannot stat %s"
 msgstr "%s を stat できません"
 
-#: src/ar.c:1281
+#: src/ar.c:1274
 #, c-format
 msgid "%s is no regular file"
 msgstr "%s は一般ファイルではありません"
 
-#: src/ar.c:1294
+#: src/ar.c:1287
 #, c-format
 msgid "cannot get ELF descriptor for %s: %s\n"
 msgstr "%s の ELF 記述子を得られません: %s\n"
 
-#: src/ar.c:1314
+#: src/ar.c:1307
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "%s を読みません: %s"
 
-#: src/arlib.c:216
+#: src/arlib.c:209
 #, c-format
 msgid "the archive '%s' is too large"
 msgstr "アーカイブ '%s' は大きすぎます"
 
-#: src/arlib.c:229
+#: src/arlib.c:222
 #, c-format
 msgid "cannot read ELF header of %s(%s): %s"
 msgstr "%s(%s) の  ELF ヘッダーを読めません: %s"
 
-#: src/elfcmp.c:70
+#: src/elfcmp.c:62
 msgid "Control options:"
 msgstr ""
 
-#: src/elfcmp.c:72
+#: src/elfcmp.c:64
 msgid "Output all differences, not just the first"
 msgstr ""
 
-#: src/elfcmp.c:73
+#: src/elfcmp.c:65
 msgid ""
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
 msgstr ""
 
-#: src/elfcmp.c:75
+#: src/elfcmp.c:67
 msgid "Ignore permutation of buckets in SHT_HASH section"
 msgstr ""
 
-#: src/elfcmp.c:77
+#: src/elfcmp.c:69
 msgid "Ignore differences in build ID"
 msgstr ""
 
-#: src/elfcmp.c:78
+#: src/elfcmp.c:70
 msgid "Output nothing; yield exit status only"
 msgstr ""
 
-#: src/elfcmp.c:85
+#: src/elfcmp.c:77
 msgid "Compare relevant parts of two ELF files for equality."
 msgstr ""
 
-#: src/elfcmp.c:89
+#: src/elfcmp.c:81
 msgid "FILE1 FILE2"
 msgstr ""
 
-#: src/elfcmp.c:151
+#: src/elfcmp.c:143
 msgid "Invalid number of parameters.\n"
 msgstr ""
 
-#: src/elfcmp.c:182 src/elfcmp.c:187
+#: src/elfcmp.c:174 src/elfcmp.c:179
 #, c-format
 msgid "cannot get ELF header of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:213
+#: src/elfcmp.c:205
 #, c-format
 msgid "%s %s diff: ELF header"
 msgstr ""
 
-#: src/elfcmp.c:220 src/elfcmp.c:223
+#: src/elfcmp.c:212 src/elfcmp.c:215
 #, fuzzy, c-format
 msgid "cannot get section count of '%s': %s"
 msgstr "セクションを得られません: %s"
 
-#: src/elfcmp.c:228
+#: src/elfcmp.c:220
 #, c-format
 msgid "%s %s diff: section count"
 msgstr ""
 
-#: src/elfcmp.c:235 src/elfcmp.c:238
+#: src/elfcmp.c:227 src/elfcmp.c:230
 #, fuzzy, c-format
 msgid "cannot get program header count of '%s': %s"
 msgstr "プログラムヘッダーを得られません: %s"
 
-#: src/elfcmp.c:243
+#: src/elfcmp.c:235
 #, fuzzy, c-format
 msgid "%s %s diff: program header count"
 msgstr "ファイルにプログラムヘッダーがありません"
 
-#: src/elfcmp.c:300
+#: src/elfcmp.c:292
 #, c-format
 msgid "%s %s differ: section [%zu], [%zu] name"
 msgstr ""
 
-#: src/elfcmp.c:323
+#: src/elfcmp.c:315
 #, fuzzy, c-format
 msgid "%s %s differ: section [%zu] '%s' header"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/elfcmp.c:331 src/elfcmp.c:337
+#: src/elfcmp.c:323 src/elfcmp.c:329
 #, c-format
 msgid "cannot get content of section %zu in '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:353 src/elfcmp.c:359
+#: src/elfcmp.c:345 src/elfcmp.c:351
 #, c-format
 msgid "cannot get symbol in '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:380
+#: src/elfcmp.c:373
 #, c-format
 msgid "%s %s differ: symbol table [%zu]"
 msgstr ""
 
-#: src/elfcmp.c:383
+#: src/elfcmp.c:376
 #, c-format
 msgid "%s %s differ: symbol table [%zu,%zu]"
 msgstr ""
 
-#: src/elfcmp.c:429 src/elfcmp.c:498
+#: src/elfcmp.c:422 src/elfcmp.c:491
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' number of notes"
 msgstr ""
 
-#: src/elfcmp.c:437
+#: src/elfcmp.c:430
 #, fuzzy, c-format
 msgid "cannot read note section [%zu] '%s' in '%s': %s"
 msgstr "セクション [%Zu] '%s' からデータが得られません: %s"
 
-#: src/elfcmp.c:447
+#: src/elfcmp.c:440
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note name"
 msgstr ""
 
-#: src/elfcmp.c:455
+#: src/elfcmp.c:448
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' type"
 msgstr ""
 
-#: src/elfcmp.c:470
+#: src/elfcmp.c:463
 #, c-format
 msgid "%s %s differ: build ID length"
 msgstr ""
 
-#: src/elfcmp.c:478
+#: src/elfcmp.c:471
 #, c-format
 msgid "%s %s differ: build ID content"
 msgstr ""
 
-#: src/elfcmp.c:487
+#: src/elfcmp.c:480
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:527
+#: src/elfcmp.c:520
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:531
+#: src/elfcmp.c:524
 #, c-format
 msgid "%s %s differ: section [%zu,%zu] '%s' content"
 msgstr ""
 
-#: src/elfcmp.c:546
+#: src/elfcmp.c:539
 #, c-format
 msgid "%s %s differ: unequal amount of important sections"
 msgstr ""
 
-#: src/elfcmp.c:579 src/elfcmp.c:584
+#: src/elfcmp.c:572 src/elfcmp.c:577
 #, c-format
 msgid "cannot load data of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:603 src/elfcmp.c:609
+#: src/elfcmp.c:596 src/elfcmp.c:602
 #, c-format
 msgid "cannot get program header entry %d of '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:615
+#: src/elfcmp.c:608
 #, c-format
 msgid "%s %s differ: program header %d"
 msgstr ""
 
-#: src/elfcmp.c:639
+#: src/elfcmp.c:632
 #, c-format
 msgid "%s %s differ: gap"
 msgstr ""
 
-#: src/elfcmp.c:702
+#: src/elfcmp.c:695
 #, c-format
 msgid "Invalid value '%s' for --gaps parameter."
 msgstr ""
 
-#: src/elfcmp.c:730 src/findtextrel.c:229 src/ldgeneric.c:1765
-#: src/ldgeneric.c:4255 src/nm.c:389 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:458 src/strip.c:495 src/unstrip.c:1911
-#: src/unstrip.c:1940
+#: src/elfcmp.c:723 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:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1923
+#: src/unstrip.c:1952
 #, c-format
 msgid "cannot open '%s'"
 msgstr "'%s' を開けません"
 
-#: src/elfcmp.c:734 src/findtextrel.c:236 src/ranlib.c:186
+#: src/elfcmp.c:727 src/findtextrel.c:228 src/ranlib.c:178
 #, c-format
 msgid "cannot create ELF descriptor for '%s': %s"
 msgstr ""
 
-#: src/elfcmp.c:739
+#: src/elfcmp.c:732
 #, c-format
 msgid "cannot create EBL descriptor for '%s'"
 msgstr ""
 
-#: src/elfcmp.c:757
+#: src/elfcmp.c:750
 #, c-format
 msgid "cannot get section header of section %zu: %s"
 msgstr ""
 
-#: src/elfcmp.c:767
+#: src/elfcmp.c:760
 #, c-format
 msgid "cannot get content of section %zu: %s"
 msgstr ""
 
-#: src/elfcmp.c:777 src/elfcmp.c:791
+#: src/elfcmp.c:770 src/elfcmp.c:784
 #, c-format
 msgid "cannot get relocation: %s"
 msgstr ""
 
-#: src/elflint.c:72
+#: src/elflint.c:64
 msgid "Be extremely strict, flag level 2 features."
 msgstr "非常に厳密にやってください、フラグレベル 2 機能。"
 
-#: src/elflint.c:73
+#: src/elflint.c:65
 msgid "Do not print anything if successful"
 msgstr "成功したら何も印刷しない"
 
-#: src/elflint.c:74
+#: src/elflint.c:66
 msgid "Binary is a separate debuginfo file"
 msgstr "バイナリーは別の debuginfo ファイルです"
 
-#: src/elflint.c:76
+#: src/elflint.c:68
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
 msgstr ""
 "バイナリーは GNU ld で作成され、従ってある方法で壊れているのが知られている"
 
-#: src/elflint.c:82
+#: src/elflint.c:74
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr "ELF ファイルが gABI/psABI 仕様へ準拠しているかの厳密なチェック。"
 
-#: src/elflint.c:86 src/readelf.c:119
+#: src/elflint.c:78 src/readelf.c:123
 msgid "FILE..."
 msgstr "ふぁいる..."
 
-#: src/elflint.c:159 src/readelf.c:275
+#: src/elflint.c:155 src/readelf.c:292
 #, c-format
 msgid "cannot open input file"
 msgstr "入力ファイルを開けません"
 
-#: src/elflint.c:166
+#: src/elflint.c:162
 #, c-format
 msgid "cannot generate Elf descriptor: %s\n"
 msgstr "Elf 記述子を生成できません: %s\n"
 
-#: src/elflint.c:185
+#: src/elflint.c:181
 #, c-format
 msgid "error while closing Elf descriptor: %s\n"
 msgstr "Elf 記述子を閉じている時にエラー: %s\n"
 
-#: src/elflint.c:189
+#: src/elflint.c:185
 msgid "No errors"
 msgstr "エラーはありません"
 
-#: src/elflint.c:223 src/readelf.c:436
+#: src/elflint.c:219 src/readelf.c:468
 msgid "Missing file name.\n"
 msgstr "ファイル名がありません。\n"
 
-#: src/elflint.c:302
+#: src/elflint.c:298
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr "副-ELF 記述子を解放している時にエラー: %s\n"
 
-#: src/elflint.c:310
+#: 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:370
+#: 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:375
+#: 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:379
+#: 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:385
+#: 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:391
+#: 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:396
+#: src/elflint.c:397
 #, c-format
 msgid "e_ident[%zu] is not zero\n"
 msgstr "e_ident[%zu] がゼロではありません\n"
 
-#: src/elflint.c:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "不明なオブジェクトファイルタイプ %d\n"
 
-#: src/elflint.c:408
+#: src/elflint.c:409
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "不明なマシンタイプ %d\n"
 
-#: src/elflint.c:412
+#: src/elflint.c:413
 #, c-format
 msgid "unknown object file version\n"
 msgstr "不明なオブジェクトファイルバージョン\n"
 
-#: src/elflint.c:418
+#: src/elflint.c:419
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "不当なプログラムヘッダーオフセット\n"
 
-#: src/elflint.c:420
+#: src/elflint.c:421
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 "実行ファイルと DSO はプログラムヘッダーオフセットが 0 であってはいけません\n"
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr "プログラムヘッダー項目数として不当な数\n"
 
-#: src/elflint.c:432
+#: src/elflint.c:433
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr "不当なセクションヘッダーテーブルオフセット\n"
 
-#: src/elflint.c:435
+#: src/elflint.c:436
 #, c-format
 msgid "section header table must be present\n"
 msgstr "セクションヘッダーテーブルがなければなりません\n"
 
-#: src/elflint.c:449
+#: src/elflint.c:450
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr "セクションヘッダーテーブル項目数として不当な数\n"
 
-#: src/elflint.c:466
+#: src/elflint.c:467
 #, c-format
 msgid "invalid section header index\n"
 msgstr "不当なセクションヘッダーインデックス\n"
 
-#: src/elflint.c:480
+#: src/elflint.c:481
 #, fuzzy, c-format
 msgid "invalid number of program header table entries\n"
 msgstr "プログラムヘッダー項目数として不当な数\n"
 
-#: src/elflint.c:489
+#: src/elflint.c:490
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "不当なマシンフラグ: %s\n"
 
-#: src/elflint.c:496 src/elflint.c:513
+#: src/elflint.c:497 src/elflint.c:514
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr "不当な ELF ヘッダーサイズ: %hd\n"
 
-#: src/elflint.c:499 src/elflint.c:516
+#: src/elflint.c:500 src/elflint.c:517
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr "不当なプログラムヘッダーサイズ: %hd\n"
 
-#: src/elflint.c:502 src/elflint.c:519
+#: src/elflint.c:503 src/elflint.c:520
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr "不当なプログラムヘッダー位置かサイズ\n"
 
-#: src/elflint.c:505 src/elflint.c:522
+#: src/elflint.c:506 src/elflint.c:523
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr "不当なセクションヘッダーサイズ: %hd\n"
 
-#: src/elflint.c:508 src/elflint.c:525
+#: src/elflint.c:509 src/elflint.c:526
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr "不当なセクションヘッダー位置かサイズ\n"
 
-#: src/elflint.c:569
+#: src/elflint.c:570
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1329,7 +1408,7 @@
 "セクション [%2d] '%s': SHF_GROUP フラグのあるセクションにセクショングループの"
 "一部分が設定されていません\n"
 
-#: src/elflint.c:573
+#: src/elflint.c:574
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
@@ -1337,14 +1416,14 @@
 "セクション [%2d] '%s': セクショングループ [%2zu] '%s' がグループメンバーを継"
 "続していません\n"
 
-#: src/elflint.c:589 src/elflint.c:1433 src/elflint.c:1483 src/elflint.c:1588
-#: src/elflint.c:2173 src/elflint.c:2687 src/elflint.c:2848 src/elflint.c:2978
-#: src/elflint.c:3150 src/elflint.c:4050
+#: 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:602 src/elflint.c:1595
+#: src/elflint.c:603 src/elflint.c:1621
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1353,7 +1432,7 @@
 "セクション [%2d] '%s': セクション [%2d] '%s' 用の文字列テーブルとして参照され"
 "ていますが、タイプが SHT_STRTAB ではありません\n"
 
-#: src/elflint.c:625
+#: src/elflint.c:626
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1362,38 +1441,38 @@
 "セクション [%2d] '%s': シンボルテーブルは 1 個を越える拡張インデックスセク"
 "ションを持てません\n"
 
-#: src/elflint.c:636
+#: 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:645
+#: 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:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
+#: 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:668
+#: 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:678
+#: 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:687
+#: src/elflint.c:689
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 不当な名前の値\n"
 
-#: src/elflint.c:701
+#: src/elflint.c:704
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: too large section index but no extended "
@@ -1402,7 +1481,7 @@
 "セクション [%2d] '%s': シンボル %zu: 大きすぎるセクションインデックスだが、拡"
 "張セクションインデックスセクションがありません\n"
 
-#: src/elflint.c:707
+#: src/elflint.c:710
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
@@ -1411,29 +1490,29 @@
 "セクション [%2d] '%s': シンボル %zu: st_shndx (%<PRIu32>) に適合するインデッ"
 "クス用に使われる XINDEX\n"
 
-#: src/elflint.c:719
+#: src/elflint.c:722
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 不当なセクションインデックス\n"
 
-#: src/elflint.c:727
+#: src/elflint.c:730
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown type\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 不明なタイプ\n"
 
-#: src/elflint.c:733
+#: src/elflint.c:736
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 不明なシンボルバインディング\n"
 
-#: src/elflint.c:738
+#: 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:746
+#: src/elflint.c:749
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
@@ -1441,14 +1520,14 @@
 "セクション [%2d] '%s': シンボル %zu: COMMON はリロケータブルファイル内のみで"
 "許されます\n"
 
-#: src/elflint.c:750
+#: 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:754
+#: src/elflint.c:757
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
@@ -1456,12 +1535,12 @@
 "セクション [%2d] '%s': シンボル %zu: COMMON セクションの機能は意味がありませ"
 "ん\n"
 
-#: src/elflint.c:786
+#: 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:792 src/elflint.c:817 src/elflint.c:860
+#: 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 "
@@ -1470,7 +1549,7 @@
 "セクション [%2d] '%s': シンボル %zu は参照されるセクション [%2d] '%s' とは完"
 "全に一致しません\n"
 
-#: src/elflint.c:801
+#: src/elflint.c:819
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
@@ -1479,7 +1558,7 @@
 "セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' は "
 "SHF_TLS フラグが設定されていません\n"
 
-#: src/elflint.c:811 src/elflint.c:853
+#: src/elflint.c:829 src/elflint.c:871
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
@@ -1488,7 +1567,7 @@
 "セクション [%2d] '%s': シンボル %zu: st_value 参照されるセクション [%2d] "
 "'%s' の境界外\n"
 
-#: src/elflint.c:838
+#: src/elflint.c:856
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
@@ -1496,7 +1575,7 @@
 "セクション [%2d] '%s': シンボル %zu: TLS プログラムヘッダー項目がない TLS シ"
 "ンボル\n"
 
-#: src/elflint.c:846
+#: src/elflint.c:864
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
@@ -1505,7 +1584,7 @@
 "セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' の"
 "st_value 不足\n"
 
-#: src/elflint.c:873
+#: src/elflint.c:891
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: local symbol outside range described in "
@@ -1514,7 +1593,7 @@
 "セクション [%2d] '%s': シンボル %zu: sh_info に記述された範囲外のローカルシン"
 "ボル\n"
 
-#: src/elflint.c:880
+#: src/elflint.c:898
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
@@ -1523,12 +1602,12 @@
 "セクション [%2d] '%s': シンボル %zu: sh_info に記述された範囲外の非ローカルシ"
 "ンボル\n"
 
-#: src/elflint.c:887
+#: 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:937
+#: src/elflint.c:955
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1537,7 +1616,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルが間違ったセクション "
 "[%2d] を参照しています\n"
 
-#: src/elflint.c:944
+#: src/elflint.c:962
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1546,7 +1625,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルはセクション [%2d] '%s' "
 "を参照しています\n"
 
-#: src/elflint.c:960
+#: src/elflint.c:978
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1555,7 +1634,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボル値 %#<PRIx64> は %s のセ"
 "クションアドレス %#<PRIx64> と一致しません\n"
 
-#: src/elflint.c:967
+#: src/elflint.c:985
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1564,7 +1643,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルサイズ %<PRIu64> は %s "
 "のセクションサイズ %<PRIu64> と一致しません\n"
 
-#: src/elflint.c:975
+#: src/elflint.c:993
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1573,7 +1652,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルはありますが、.got セク"
 "ションがありません\n"
 
-#: src/elflint.c:991
+#: src/elflint.c:1009
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1582,7 +1661,7 @@
 "セクション [%2d] '%s': _DYNAMIC_ シンボル値 %#<PRIx64> は動的セグメントアドレ"
 "ス %#<PRIx64> と一致しません\n"
 
-#: src/elflint.c:998
+#: src/elflint.c:1016
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1591,7 +1670,7 @@
 "セクション [%2d] '%s': _DYNAMIC シンボルサイズ %<PRIu64> は動的セグメントサイ"
 "ズ %<PRIu64> と一致しません\n"
 
-#: src/elflint.c:1011
+#: src/elflint.c:1029
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
@@ -1600,24 +1679,24 @@
 "セクション [%2d] '%s': シンボル %zu: 省略以外の可視性を持った動的シンボルテー"
 "ブル中のシンボル\n"
 
-#: src/elflint.c:1015
+#: 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:1060
+#: 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:1069 src/elflint.c:1121
+#: 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:1094 src/elflint.c:1146
+#: src/elflint.c:1118 src/elflint.c:1170
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1626,7 +1705,7 @@
 "セクション [%2d] '%s': UT_RELOCOUNT で指定されたインデックス %d 後の相対リロ"
 "ケーション\n"
 
-#: src/elflint.c:1100 src/elflint.c:1152
+#: src/elflint.c:1124 src/elflint.c:1176
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -1635,51 +1714,51 @@
 "セクション [%2d] '%s': インデックス %zu での非相対リロケーション;  %d 相対リ"
 "ロケーションで指定された DT_RELCOUNT\n"
 
-#: src/elflint.c:1112
+#: 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:1194
+#: src/elflint.c:1218
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr "セクション [%2d] '%s': 不当な宛先セクションインデックス\n"
 
-#: src/elflint.c:1207
+#: src/elflint.c:1230
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr "セクション [%2d] '%s': 不当な宛先セクションタイプ\n"
 
-#: src/elflint.c:1215
+#: 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:1222
+#: 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:1229
+#: 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:1289
+#: src/elflint.c:1313
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr ""
 "テキストリロケーションフラグが設定されていますが、読込み専用セグメントがあり"
 "ません\n"
 
-#: src/elflint.c:1316
+#: src/elflint.c:1340
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
 msgstr "セクション [%2d] '%s': リロケーション %zu: 不当なタイプ\n"
 
-#: src/elflint.c:1324
+#: src/elflint.c:1348
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -1688,13 +1767,13 @@
 "セクション [%2d] '%s': リロケーション %zu: このファイル用のリロケーションタイ"
 "プは不当です\n"
 
-#: src/elflint.c:1332
+#: src/elflint.c:1356
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
 msgstr ""
 "セクション [%2d] '%s': リロケーション %zu: 不当なシンボルインデックス\n"
 
-#: src/elflint.c:1350
+#: src/elflint.c:1374
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -1703,12 +1782,12 @@
 "セクション [%2d] '%s': リロケーション %zu: シンボル '_GLOBAL_OFFSET_TABLE_' "
 "のみが %s と一緒に使用できます\n"
 
-#: src/elflint.c:1367
+#: 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:1382
+#: src/elflint.c:1406
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -1717,7 +1796,7 @@
 "セクション [%2d] '%s': リロケーション %zu: タイプ %s のシンボルに対するコピー"
 "リロケーション\n"
 
-#: src/elflint.c:1403
+#: src/elflint.c:1427
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -1726,1678 +1805,1684 @@
 "セクション [%2d] '%s': リロケーション %zu: 読込み専用セクションが変更されまし"
 "たが、テキストリロケーションフラグが設定されていません\n"
 
-#: src/elflint.c:1418
+#: 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:1457 src/elflint.c:1507
+#: src/elflint.c:1482 src/elflint.c:1533
 #, c-format
 msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1583
+#: src/elflint.c:1609
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr ""
 
-#: src/elflint.c:1601
+#: src/elflint.c:1628
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
 msgstr ""
 
-#: src/elflint.c:1606 src/elflint.c:1889
+#: src/elflint.c:1633 src/elflint.c:1918
 #, c-format
 msgid "section [%2d] '%s': sh_info not zero\n"
 msgstr ""
 
-#: src/elflint.c:1616
+#: src/elflint.c:1643
 #, c-format
 msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1624
+#: src/elflint.c:1651
 #, c-format
 msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
 msgstr ""
 
-#: src/elflint.c:1631
+#: src/elflint.c:1658
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr ""
 
-#: src/elflint.c:1642
+#: src/elflint.c:1669
 #, c-format
 msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
 msgstr ""
 
-#: src/elflint.c:1652
+#: src/elflint.c:1679
 #, c-format
 msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
 msgstr ""
 
-#: src/elflint.c:1670
+#: 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:1683
+#: 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:1726
+#: src/elflint.c:1753
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:1741
+#: 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:1761 src/elflint.c:1789
+#: 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:1773
+#: src/elflint.c:1800
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr ""
 
-#: src/elflint.c:1782
+#: src/elflint.c:1809
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr ""
 
-#: src/elflint.c:1797 src/elflint.c:1804
+#: 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:1814 src/elflint.c:1818
+#: 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:1824
+#: src/elflint.c:1851
 #, c-format
 msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
 msgstr ""
 
-#: src/elflint.c:1835 src/elflint.c:1839 src/elflint.c:1843 src/elflint.c:1847
+#: 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:1859
+#: src/elflint.c:1886
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
 msgstr ""
 
-#: src/elflint.c:1869
+#: src/elflint.c:1896
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1874
+#: src/elflint.c:1901
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr ""
 
-#: src/elflint.c:1877
+#: src/elflint.c:1904
 #, c-format
 msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
 msgstr ""
 
-#: src/elflint.c:1884
+#: src/elflint.c:1913
 #, c-format
 msgid "section [%2d] '%s': extended index table too small for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1899
+#: 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:1910
+#: src/elflint.c:1945
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr ""
 
-#: src/elflint.c:1922
+#: src/elflint.c:1957
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr ""
 
-#: src/elflint.c:1927
+#: src/elflint.c:1962
 #, c-format
 msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
 msgstr ""
 
-#: src/elflint.c:1943 src/elflint.c:1984
+#: 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:1955 src/elflint.c:1996
+#: src/elflint.c:1990 src/elflint.c:2041
 #, c-format
 msgid "section [%2d] '%s': chain array too large\n"
 msgstr ""
 
-#: src/elflint.c:1964 src/elflint.c:2005
+#: 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:1970
+#: src/elflint.c:2014
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2011
+#: src/elflint.c:2065
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2026
+#: src/elflint.c:2081
 #, c-format
 msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
 msgstr ""
 
-#: src/elflint.c:2037
+#: 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:2045
+#: src/elflint.c:2100
 #, c-format
 msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
 msgstr ""
 
-#: src/elflint.c:2077
+#: 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:2098
+#: 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:2109
+#: 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:2140
+#: src/elflint.c:2195
 #, c-format
 msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2145
+#: 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:2151
+#: src/elflint.c:2206
 #, c-format
 msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
 msgstr ""
 
-#: src/elflint.c:2164
+#: src/elflint.c:2219
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
 
-#: src/elflint.c:2182
+#: src/elflint.c:2237
 #, c-format
 msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2190
+#: src/elflint.c:2245
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr ""
 
-#: src/elflint.c:2195
+#: src/elflint.c:2250
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr ""
 
-#: src/elflint.c:2200
+#: 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:2248
+#: src/elflint.c:2303
 #, c-format
 msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
 msgstr ""
 
-#: src/elflint.c:2326 src/elflint.c:2330
+#: src/elflint.c:2381 src/elflint.c:2385
 #, c-format
 msgid "section [%2zu] '%s': reference to symbol index 0\n"
 msgstr ""
 
-#: src/elflint.c:2337
+#: 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:2349
+#: 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:2365
+#: src/elflint.c:2420
 #, c-format
 msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
 msgstr ""
 
-#: src/elflint.c:2385
+#: src/elflint.c:2440
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
 msgstr ""
 
-#: src/elflint.c:2396
+#: src/elflint.c:2451
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr ""
 
-#: src/elflint.c:2401
+#: src/elflint.c:2456
 #, c-format
 msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2407
+#: src/elflint.c:2462
 #, c-format
 msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
 msgstr ""
 
-#: src/elflint.c:2412
+#: src/elflint.c:2467
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr ""
 
-#: src/elflint.c:2419
+#: src/elflint.c:2474
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr ""
 
-#: src/elflint.c:2424
+#: 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:2430
+#: src/elflint.c:2485
 #, c-format
 msgid "section [%2d] '%s': sh_flags not set correctly\n"
 msgstr ""
 
-#: src/elflint.c:2436
+#: src/elflint.c:2491
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr ""
 
-#: src/elflint.c:2445
+#: src/elflint.c:2500
 #, c-format
 msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
 msgstr ""
 
-#: src/elflint.c:2450
+#: src/elflint.c:2505
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr ""
 
-#: src/elflint.c:2456
+#: src/elflint.c:2511
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr ""
 
-#: src/elflint.c:2460
+#: src/elflint.c:2515
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr ""
 
-#: src/elflint.c:2471
+#: src/elflint.c:2526
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr ""
 
-#: src/elflint.c:2483
+#: src/elflint.c:2538
 #, c-format
 msgid "section [%2d] '%s': section index %Zu out of range\n"
 msgstr ""
 
-#: src/elflint.c:2492
+#: src/elflint.c:2547
 #, c-format
 msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:2499
+#: src/elflint.c:2554
 #, c-format
 msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2505
+#: 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:2512
+#: src/elflint.c:2567
 #, c-format
 msgid "section [%2d] '%s' is contained in more than one section group\n"
 msgstr ""
 
-#: src/elflint.c:2701
+#: 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:2712
+#: 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:2728
+#: src/elflint.c:2784
 #, c-format
 msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
 msgstr ""
 
-#: src/elflint.c:2744
+#: src/elflint.c:2800
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
 msgstr ""
 
-#: src/elflint.c:2752
+#: src/elflint.c:2808
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
 msgstr ""
 
-#: src/elflint.c:2766
+#: src/elflint.c:2822
 #, c-format
 msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
 msgstr ""
 
-#: src/elflint.c:2771
+#: src/elflint.c:2827
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
 msgstr ""
 
-#: src/elflint.c:2781
+#: src/elflint.c:2837
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
 msgstr ""
 
-#: src/elflint.c:2833
+#: src/elflint.c:2889
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr ""
 
-#: src/elflint.c:2841 src/elflint.c:2970
+#: 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:2864 src/elflint.c:3022
+#: 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:2870 src/elflint.c:3028
+#: 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:2878
+#: src/elflint.c:2934
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid file reference\n"
 msgstr ""
 
-#: src/elflint.c:2886
+#: src/elflint.c:2942
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr ""
 
-#: src/elflint.c:2898
+#: src/elflint.c:2954
 #, c-format
 msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:2905
+#: 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:2912
+#: 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:2922
+#: 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:2933
+#: 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:2949 src/elflint.c:3107
+#: 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:2962
+#: src/elflint.c:3018
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr ""
 
-#: src/elflint.c:3007
+#: src/elflint.c:3063
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3011
+#: src/elflint.c:3067
 #, c-format
 msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
 msgstr ""
 
-#: src/elflint.c:3017
+#: src/elflint.c:3073
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:3041
+#: src/elflint.c:3097
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid name reference\n"
 msgstr ""
 
-#: src/elflint.c:3048
+#: src/elflint.c:3104
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
 msgstr ""
 
-#: src/elflint.c:3057
+#: src/elflint.c:3113
 #, c-format
 msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3076
+#: src/elflint.c:3132
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3091
+#: src/elflint.c:3147
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3113
+#: src/elflint.c:3169
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3129
+#: src/elflint.c:3185
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3142
+#: src/elflint.c:3198
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr ""
 
-#: src/elflint.c:3163
+#: src/elflint.c:3219
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr ""
 
-#: src/elflint.c:3179
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3188
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3200
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
-#: src/elflint.c:3217
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-msgstr ""
-
-#: src/elflint.c:3226
-#, c-format
-msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
-msgstr ""
-
 #: src/elflint.c:3235
 #, c-format
 msgid ""
+"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3244
+#, c-format
+msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3256
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
+msgstr ""
+
+#: src/elflint.c:3273
+#, c-format
+msgid ""
+"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
+msgstr ""
+
+#: src/elflint.c:3282
+#, c-format
+msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3291
+#, c-format
+msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
 msgstr ""
 
-#: src/elflint.c:3248
+#: src/elflint.c:3304
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
 msgstr ""
 
-#: src/elflint.c:3259
+#: src/elflint.c:3315
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3277
+#: src/elflint.c:3333
 #, c-format
 msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
 msgstr ""
 
-#: src/elflint.c:3288
+#: src/elflint.c:3344
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
 msgstr ""
 
-#: src/elflint.c:3301
+#: src/elflint.c:3357
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3305
+#: src/elflint.c:3361
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:3315
+#: src/elflint.c:3371
 #, c-format
 msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
 msgstr ""
 
-#: src/elflint.c:3321
+#: src/elflint.c:3377
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
 msgstr ""
 
-#: src/elflint.c:3410
+#: src/elflint.c:3466
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr ""
 
-#: src/elflint.c:3414
+#: src/elflint.c:3470
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr ""
 
-#: src/elflint.c:3416
+#: src/elflint.c:3472
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr ""
 
-#: src/elflint.c:3418
+#: src/elflint.c:3474
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr ""
 
-#: src/elflint.c:3420
+#: src/elflint.c:3476
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr ""
 
-#: src/elflint.c:3422
+#: src/elflint.c:3478
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr ""
 
-#: src/elflint.c:3424
+#: src/elflint.c:3480
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr ""
 
-#: src/elflint.c:3426
+#: src/elflint.c:3482
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr ""
 
-#: src/elflint.c:3429
+#: 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:3433
+#: 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:3437
+#: 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:3454
+#: src/elflint.c:3510
 #, c-format
 msgid "cannot get section header for section [%2zu] '%s': %s\n"
 msgstr ""
 
-#: src/elflint.c:3463
+#: src/elflint.c:3519
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr ""
 
-#: src/elflint.c:3490
+#: src/elflint.c:3546
 #, c-format
 msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3506
+#: src/elflint.c:3562
 #, c-format
 msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3523
+#: 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:3541
+#: src/elflint.c:3597
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr ""
 
-#: src/elflint.c:3547 src/elflint.c:3579
+#: 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:3552 src/elflint.c:3584
+#: 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:3560
+#: src/elflint.c:3616
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
 msgstr ""
 
-#: src/elflint.c:3603
+#: src/elflint.c:3659
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr ""
 
-#: src/elflint.c:3608
+#: src/elflint.c:3664
 #, c-format
 msgid "cannot get section header\n"
 msgstr ""
 
-#: src/elflint.c:3618
+#: src/elflint.c:3674
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr ""
 
-#: src/elflint.c:3632
+#: src/elflint.c:3688
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3639
+#: src/elflint.c:3695
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3647
+#: src/elflint.c:3703
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 
-#: src/elflint.c:3655
+#: src/elflint.c:3711
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 
-#: src/elflint.c:3660
+#: src/elflint.c:3716
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 
-#: src/elflint.c:3667
+#: src/elflint.c:3723
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr ""
 
-#: src/elflint.c:3672
+#: src/elflint.c:3728
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 
-#: src/elflint.c:3690
+#: src/elflint.c:3746
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr ""
 
-#: src/elflint.c:3699
+#: src/elflint.c:3755
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr ""
 
-#: src/elflint.c:3726
+#: 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:3734
+#: 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:3743
+#: 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:3754
+#: src/elflint.c:3812
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:3764
+#: src/elflint.c:3822
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:3774
+#: 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:3780
+#: 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:3788
+#: src/elflint.c:3846
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
 msgstr ""
 
-#: src/elflint.c:3839
+#: src/elflint.c:3897
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr ""
 
-#: src/elflint.c:3862
+#: src/elflint.c:3920
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr ""
 
-#: src/elflint.c:3873
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
 msgstr ""
 
-#: src/elflint.c:3879
+#: src/elflint.c:3937
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 
-#: src/elflint.c:3890
+#: 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:3903
+#: src/elflint.c:3961
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr ""
 
-#: src/elflint.c:3917
+#: src/elflint.c:3975
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 
-#: src/elflint.c:3966
+#: src/elflint.c:4024
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:3970
+#: src/elflint.c:4028
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:3993
+#: src/elflint.c:4051
 #, c-format
 msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:3997
+#: src/elflint.c:4055
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
 msgstr ""
 
-#: src/elflint.c:4014
+#: src/elflint.c:4072
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4033
+#: src/elflint.c:4091
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr ""
 
-#: src/elflint.c:4036
+#: src/elflint.c:4094
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4057
+#: src/elflint.c:4115
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4064
+#: src/elflint.c:4122
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr ""
 
-#: src/elflint.c:4067
+#: src/elflint.c:4125
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4085
+#: src/elflint.c:4143
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
 msgstr ""
 
-#: src/elflint.c:4100
+#: src/elflint.c:4158
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:4109
+#: src/elflint.c:4167
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:4120
+#: src/elflint.c:4178
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4128
+#: src/elflint.c:4186
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4135
+#: src/elflint.c:4193
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr ""
 
-#: src/elflint.c:4149
+#: src/elflint.c:4207
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4152
+#: src/elflint.c:4210
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4162
+#: src/elflint.c:4220
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4183
+#: src/elflint.c:4241
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 
-#: src/elflint.c:4186
+#: src/elflint.c:4244
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4194 src/elflint.c:4217
+#: src/elflint.c:4252 src/elflint.c:4275
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4223
+#: src/elflint.c:4281
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 
-#: src/elflint.c:4247
+#: src/elflint.c:4305
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4250
+#: src/elflint.c:4308
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4263
+#: src/elflint.c:4321
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr ""
 
-#: src/elflint.c:4271
+#: src/elflint.c:4329
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4274
+#: src/elflint.c:4332
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4278
+#: src/elflint.c:4336
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4281
+#: src/elflint.c:4339
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4286
+#: src/elflint.c:4344
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4289
+#: src/elflint.c:4347
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4300
+#: src/elflint.c:4358
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr ""
 
-#: src/elflint.c:4307
+#: src/elflint.c:4365
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr ""
 
-#: src/elflint.c:4310
+#: 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:4323
+#: 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:4357
+#: src/elflint.c:4415
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr ""
 
-#: src/elflint.c:4383
+#: src/elflint.c:4441
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
 
-#: src/findtextrel.c:70
+#: src/findtextrel.c:62
 msgid "Input Selection:"
 msgstr ""
 
-#: src/findtextrel.c:71
+#: src/findtextrel.c:63
 msgid "Prepend PATH to all file names"
 msgstr ""
 
-#: src/findtextrel.c:73
+#: src/findtextrel.c:65
 msgid "Use PATH as root of debuginfo hierarchy"
 msgstr ""
 
-#: src/findtextrel.c:80
+#: src/findtextrel.c:72
 msgid "Locate source of text relocations in FILEs (a.out by default)."
 msgstr ""
 
-#: src/findtextrel.c:84 src/nm.c:116 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:104
+#: src/findtextrel.c:76 src/nm.c:108 src/objdump.c:72 src/size.c:84
+#: src/strings.c:84 src/strip.c:96
 msgid "[FILE...]"
 msgstr "[ふぁいる...]"
 
-#: src/findtextrel.c:246
+#: src/findtextrel.c:238
 #, c-format
 msgid "cannot get ELF header '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:257
+#: src/findtextrel.c:249
 #, c-format
 msgid "'%s' is not a DSO or PIE"
 msgstr ""
 
-#: src/findtextrel.c:277
+#: src/findtextrel.c:269
 #, c-format
 msgid "getting get section header of section %zu: %s"
 msgstr ""
 
-#: src/findtextrel.c:300
+#: src/findtextrel.c:292
 #, c-format
 msgid "cannot read dynamic section: %s"
 msgstr ""
 
-#: src/findtextrel.c:321
+#: src/findtextrel.c:313
 #, c-format
 msgid "no text relocations reported in '%s'"
 msgstr ""
 
-#: src/findtextrel.c:333
+#: src/findtextrel.c:325
 #, c-format
 msgid "while reading ELF file"
 msgstr ""
 
-#: src/findtextrel.c:342 src/findtextrel.c:359
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr ""
+#: src/findtextrel.c:329
+#, fuzzy, c-format
+msgid "cannot get program header count: %s"
+msgstr "プログラムヘッダーを得られません: %s"
 
-#: src/findtextrel.c:411
+#: src/findtextrel.c:340 src/findtextrel.c:357
+#, fuzzy, c-format
+msgid "cannot get program header index at offset %zd: %s"
+msgstr "プログラムヘッダーを得られません: %s"
+
+#: src/findtextrel.c:409
 #, c-format
 msgid "cannot get section header of section %Zu: %s"
 msgstr ""
 
-#: src/findtextrel.c:423
+#: src/findtextrel.c:421
 #, c-format
 msgid "cannot get symbol table section %zu in '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:443 src/findtextrel.c:466
+#: src/findtextrel.c:441 src/findtextrel.c:464
 #, c-format
 msgid "cannot get relocation at index %d in section %zu in '%s': %s"
 msgstr ""
 
-#: src/findtextrel.c:531
+#: src/findtextrel.c:529
 #, c-format
 msgid "%s not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:584
+#: src/findtextrel.c:582
 #, c-format
 msgid ""
 "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:591 src/findtextrel.c:611
+#: src/findtextrel.c:589 src/findtextrel.c:609
 #, c-format
 msgid ""
 "the file containing the function '%s' might not be compiled with -fpic/-"
 "fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:599
+#: src/findtextrel.c:597
 #, c-format
 msgid ""
 "either the file containing the function '%s' or the file containing the "
 "function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 
-#: src/findtextrel.c:619
+#: src/findtextrel.c:617
 #, c-format
 msgid ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
 msgstr ""
 
-#: src/i386_ld.c:210
+#: src/i386_ld.c:202
 #, c-format
 msgid "cannot allocate PLT section: %s"
 msgstr "PLT セクションを割り当てられません: %s"
 
-#: src/i386_ld.c:232
+#: src/i386_ld.c:224
 #, c-format
 msgid "cannot allocate PLTREL section: %s"
 msgstr "PLTREL セクションを割り当てられません: %s"
 
-#: src/i386_ld.c:253
+#: src/i386_ld.c:245
 #, c-format
 msgid "cannot allocate GOT section: %s"
 msgstr "GOT セクションを割り当てられません: %s"
 
-#: src/i386_ld.c:274
+#: src/i386_ld.c:266
 #, c-format
 msgid "cannot allocate GOTPLT section: %s"
 msgstr "GOTPLT セクションを割り当てられません: %s"
 
-#: src/i386_ld.c:661
+#: src/i386_ld.c:653
 #, c-format
 msgid "initial-executable TLS relocation cannot be used "
 msgstr "最初に実行される TLS リロケーションが使用されません "
 
-#: src/ld.c:87
+#: src/ld.c:79
 msgid "Input File Control:"
 msgstr "入力ファイル制御:"
 
-#: src/ld.c:89
+#: src/ld.c:81
 msgid "Include whole archives in the output from now on."
 msgstr "今から出力中の全アーカイブを含める。"
 
-#: src/ld.c:91
+#: src/ld.c:83
 #, fuzzy
 msgid "Stop including the whole archives in the output."
 msgstr "出力中の全アーカイブを含めるのを止める。"
 
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
+#: src/ld.c:84 src/ld.c:98 src/ld.c:176
 msgid "FILE"
 msgstr "ふぁいる"
 
-#: src/ld.c:93
+#: src/ld.c:85
 msgid "Start a group."
 msgstr "グループの開始。"
 
-#: src/ld.c:94
+#: src/ld.c:86
 msgid "End a group."
 msgstr "グループの終了。"
 
-#: src/ld.c:95
+#: src/ld.c:87
 msgid "PATH"
 msgstr "パス"
 
-#: src/ld.c:96
+#: src/ld.c:88
 msgid "Add PATH to list of directories files are searched in."
 msgstr "ファイルが検索されるディレクトリーの一覧にPATHを追加する。"
 
-#: src/ld.c:98
+#: src/ld.c:90
 msgid "Only set DT_NEEDED for following dynamic libs if actually used"
 msgstr ""
 "実際に使用されるのなら以下のダイナミックライブラリーに DT_NEEDED を設定する"
 
-#: src/ld.c:100
+#: src/ld.c:92
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr "以下のダイナミックライブラリーに常に DT_NEEDED を設定する"
 
-#: src/ld.c:102
+#: src/ld.c:94
 msgid "Ignore LD_LIBRARY_PATH environment variable."
 msgstr "LD_LIBRARY_PATH 環境変数を無視する。"
 
-#: src/ld.c:105
+#: src/ld.c:97
 msgid "Output File Control:"
 msgstr "出力ファイル制御:"
 
-#: src/ld.c:106
+#: src/ld.c:98
 msgid "Place output in FILE."
 msgstr "出力を ふぁいる に置く。"
 
-#: src/ld.c:109
+#: src/ld.c:101
 msgid "Object is marked to not use default search path at runtime."
 msgstr "オブジェクトは実行時に省略値の検索パスを使わないと記されています。"
 
-#: src/ld.c:111
+#: src/ld.c:103
 msgid "Same as --whole-archive."
 msgstr "--whole-archive と同じ。"
 
-#: src/ld.c:112
+#: src/ld.c:104
 msgid ""
 "Default rules of extracting from archive; weak references are not enough."
 msgstr ""
 "アーカイブから抽出する時の省略値の規則: 弱い参照では十分ではありません。"
 
-#: src/ld.c:116
+#: src/ld.c:108
 msgid "Weak references cause extraction from archive."
 msgstr "弱い参照はアーカイブから抽出します。"
 
-#: src/ld.c:118
+#: src/ld.c:110
 msgid "Allow multiple definitions; first is used."
 msgstr "複数の定義を認めます: 最初を使用します。"
 
-#: src/ld.c:120
+#: src/ld.c:112
 msgid "Disallow/allow undefined symbols in DSOs."
 msgstr "DSO 中の未定義のシンボルを認めない/認める。"
 
-#: src/ld.c:123
+#: src/ld.c:115
 msgid "Object requires immediate handling of $ORIGIN."
 msgstr "オブジェクトには %ORIGIN の直接ハンドルが必要です。"
 
-#: src/ld.c:125
+#: src/ld.c:117
 msgid "Relocation will not be processed lazily."
 msgstr "リロケーションは遅延処理されません。"
 
-#: src/ld.c:127
+#: src/ld.c:119
 msgid "Object cannot be unloaded at runtime."
 msgstr "オプションは実行時にはアンロードできません。"
 
-#: src/ld.c:129
+#: src/ld.c:121
 msgid "Mark object to be initialized first."
 msgstr "オブジェクトは最初に初期化されると記します。"
 
-#: src/ld.c:131
+#: src/ld.c:123
 msgid "Enable/disable lazy-loading flag for following dependencies."
 msgstr "以下の依存性のための遅延ロードを有効/無効にします。"
 
-#: src/ld.c:133
+#: src/ld.c:125
 msgid "Mark object as not loadable with 'dlopen'."
 msgstr "'dlopen' でロードできないと記します。"
 
-#: src/ld.c:135
+#: src/ld.c:127
 msgid "Ignore/record dependencies on unused DSOs."
 msgstr "使用されない DSO の依存性を無視/記録します。"
 
-#: src/ld.c:137
+#: src/ld.c:129
 msgid "Generated DSO will be a system library."
 msgstr "生成された DSO はシステムライブラリーになります。"
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "ADDRESS"
 msgstr "アドレス"
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "Set entry point address."
 msgstr "入口点アドレスを設定します。"
 
-#: src/ld.c:141
+#: src/ld.c:133
 msgid "Do not link against shared libraries."
 msgstr "共用ライブラリーに対してリンクを設定してはいけません。"
 
-#: src/ld.c:144
+#: src/ld.c:136
 msgid "Prefer linking against shared libraries."
 msgstr "共用ライブラリーに対してリンクを好みます。"
 
-#: src/ld.c:145
+#: src/ld.c:137
 msgid "Export all dynamic symbols."
 msgstr "全ダイナミックシンボルをエクスポートします。"
 
-#: src/ld.c:146
+#: src/ld.c:138
 msgid "Strip all symbols."
 msgstr "全シンボルを取り除きます。"
 
-#: src/ld.c:147
+#: src/ld.c:139
 msgid "Strip debugging symbols."
 msgstr "デバッグシンボルを取り除きます。"
 
-#: src/ld.c:149
+#: src/ld.c:141
 msgid "Assume pagesize for the target system to be SIZE."
 msgstr "ターゲットシステムのページサイズを SIZE と見做します。"
 
-#: src/ld.c:151
+#: src/ld.c:143
 msgid "Set runtime DSO search path."
 msgstr "実行時 DSO 検索パスを設定します。"
 
-#: src/ld.c:154
+#: src/ld.c:146
 msgid "Set link time DSO search path."
 msgstr "リンク時 DSO 検索パスを設定します。"
 
-#: src/ld.c:155
+#: src/ld.c:147
 msgid "Generate dynamic shared object."
 msgstr "動的共用オブジェクトを生成します。"
 
-#: src/ld.c:156
+#: src/ld.c:148
 msgid "Generate relocatable object."
 msgstr "リロケータブルオブジェクトを生成します。"
 
-#: src/ld.c:159
+#: src/ld.c:151
 msgid "Causes symbol not assigned to a version be reduced to local."
 msgstr "バージョンが指定されていないシンボルはローカルに減少します。"
 
-#: src/ld.c:160
+#: src/ld.c:152
 msgid "Remove unused sections."
 msgstr "使用されていないセクションを取り除きます。"
 
-#: src/ld.c:163
+#: src/ld.c:155
 msgid "Don't remove unused sections."
 msgstr "利用されていていセクションを取り除いてはいけません。"
 
-#: src/ld.c:164
+#: src/ld.c:156
 msgid "Set soname of shared object."
 msgstr "共用ライブラリーの so 名を設定します。"
 
-#: src/ld.c:165
+#: src/ld.c:157
 msgid "Set the dynamic linker name."
 msgstr "動的リンカーの名前を設定します。"
 
-#: src/ld.c:168
+#: src/ld.c:160
 msgid "Add/suppress addition indentifying link-editor to .comment section."
 msgstr ""
 ".comment セクションにリンクエディターを識別する追加情報を追加/抑止します。"
 
-#: src/ld.c:171
+#: src/ld.c:163
 msgid "Create .eh_frame_hdr section"
 msgstr ".eh_frame_hdr セクションを生成します"
 
-#: src/ld.c:173
+#: src/ld.c:165
 msgid "Set hash style to sysv, gnu or both."
 msgstr "ハッシュ形式を sysvか、gnu、両方のどれかに設定します。"
 
-#: src/ld.c:175
+#: src/ld.c:167
 msgid "Generate build ID note (md5, sha1 (default), uuid)."
 msgstr "ビルド ID ノート (md5、sh1 (省略値)、uuid) を生成します。"
 
-#: src/ld.c:177
+#: src/ld.c:169
 msgid "Linker Operation Control:"
 msgstr "リンカー操作制御:"
 
-#: src/ld.c:178
+#: src/ld.c:170
 msgid "Verbose messages."
 msgstr "饒舌メッセージ。"
 
-#: src/ld.c:179
+#: src/ld.c:171
 msgid "Trace file opens."
 msgstr "ファイルのオープンを追跡します。"
 
-#: src/ld.c:181
+#: src/ld.c:173
 msgid "Trade speed for less memory usage"
 msgstr "速度と引き換えにメモリー使用量を減らします"
 
-#: src/ld.c:182
+#: src/ld.c:174
 msgid "LEVEL"
 msgstr "れべる"
 
-#: src/ld.c:183
+#: src/ld.c:175
 msgid "Set optimization level to LEVEL."
 msgstr "最適化レベルを れべる に設定します。"
 
-#: src/ld.c:184
+#: src/ld.c:176
 msgid "Use linker script in FILE."
 msgstr "ふぁいる でリンカースクリプトを使用します。"
 
-#: src/ld.c:187
+#: src/ld.c:179
 msgid "Select to get parser debug information"
 msgstr "パーサーのデバッグ情報を得るように選択します"
 
-#: src/ld.c:190
+#: src/ld.c:182
 msgid "Read version information from FILE."
 msgstr "ふぁいる からバージョン情報を読みます。"
 
-#: src/ld.c:191
+#: src/ld.c:183
 msgid "Set emulation to NAME."
 msgstr "エミュレーションを なまえ に設定します。"
 
-#: src/ld.c:197
+#: src/ld.c:189
 msgid "Combine object and archive files."
 msgstr "オブジェクトとアーカイブファイルを一体化します。"
 
-#: src/ld.c:200
+#: src/ld.c:192
 msgid "[FILE]..."
 msgstr "[ふぁいる]..."
 
-#: src/ld.c:333
+#: src/ld.c:325
 #, c-format
 msgid "At least one input file needed"
 msgstr "少なくとも 1 つの入力ファイルが必要です"
 
-#: src/ld.c:349
+#: src/ld.c:341
 #, c-format
 msgid "error while preparing linking"
 msgstr "リンクの準備中にエラー"
 
-#: src/ld.c:356
+#: src/ld.c:348
 #, c-format
 msgid "cannot open linker script '%s'"
 msgstr "リンカースクリプト '%s' を開けません"
 
-#: src/ld.c:397
+#: src/ld.c:389
 #, c-format
 msgid "-( without matching -)"
 msgstr "-( 何も一致しない -)"
 
-#: src/ld.c:572 src/ld.c:610
+#: src/ld.c:564 src/ld.c:602
 #, c-format
 msgid "only one option of -G and -r is allowed"
 msgstr "-G か -r のどちらかひとつのオプションだけ認められます"
 
-#: src/ld.c:594
+#: src/ld.c:586
 #, c-format
 msgid "more than one '-m' parameter"
 msgstr "-m パラメーターが1つを越えています"
 
-#: src/ld.c:604 src/ld.c:1013
+#: src/ld.c:596 src/ld.c:1005
 #, c-format
 msgid "unknown option `-%c %s'"
 msgstr "不明なオプション `%c %s'"
 
-#: src/ld.c:646
+#: src/ld.c:638
 #, c-format
 msgid "invalid page size value '%s': ignored"
 msgstr "不当なページサイズ値 '%s': 無視しました"
 
-#: src/ld.c:687
+#: src/ld.c:679
 #, c-format
 msgid "invalid hash style '%s'"
 msgstr "不当なハッシュスタイル '%s'"
 
-#: src/ld.c:697
+#: src/ld.c:689
 #, c-format
 msgid "invalid build-ID style '%s'"
 msgstr "不当なビルド-ID スタイル '%s'"
 
-#: src/ld.c:785
+#: src/ld.c:777
 #, c-format
 msgid "More than one output file name given."
 msgstr "ひとつを越える出力ファイル名が与えられました。"
 
-#: src/ld.c:802
+#: src/ld.c:794
 #, c-format
 msgid "Invalid optimization level `%s'"
 msgstr "不当な最適化レベル `%s'"
 
-#: src/ld.c:850
+#: src/ld.c:842
 #, c-format
 msgid "nested -( -) groups are not allowed"
 msgstr "ネストされた -( -) グループは認められません"
 
-#: src/ld.c:869
+#: src/ld.c:861
 #, c-format
 msgid "-) without matching -("
 msgstr "対応する -( がない -)"
 
-#: src/ld.c:1046
+#: src/ld.c:1038
 #, c-format
 msgid "unknown option '-%c %s'"
 msgstr "不明なオプション '-%c %s'"
 
-#: src/ld.c:1150
+#: src/ld.c:1142
 #, c-format
 msgid "could not find input file to determine output file format"
 msgstr "出力ファイル形式を決定するための入力ファイルが見つかりません"
 
-#: src/ld.c:1152
+#: src/ld.c:1144
 #, c-format
 msgid "try again with an appropriate '-m' parameter"
 msgstr "適切な '-m' パラメーターを付けて再試行してください"
 
-#: src/ld.c:1446
+#: src/ld.c:1438
 #, c-format
 msgid "cannot read version script '%s'"
 msgstr "バージョンスクリプト '%s' を読めません"
 
-#: src/ld.c:1512 src/ld.c:1551
+#: src/ld.c:1504 src/ld.c:1543
 #, c-format
 msgid "duplicate definition of '%s' in linker script"
 msgstr "リンカースクリプトに '%s' の重複定義"
 
-#: src/ldgeneric.c:209 src/ldgeneric.c:5149
+#: src/ldgeneric.c:201 src/ldgeneric.c:5141
 #, c-format
 msgid "cannot create string table"
 msgstr "文字列テーブルを生成できません"
 
-#: src/ldgeneric.c:255
+#: src/ldgeneric.c:247
 #, c-format
 msgid "cannot load ld backend library '%s': %s"
 msgstr "ld バックエンドライブラリー '%s' をロードできません: %s"
 
-#: src/ldgeneric.c:265
+#: src/ldgeneric.c:257
 #, c-format
 msgid "cannot find init function in ld backend library '%s': %s"
 msgstr "ld バックエンドライブラリー '%s' に初期化機能が見つかりません: %s "
 
-#: src/ldgeneric.c:308
+#: src/ldgeneric.c:300
 #, c-format
 msgid "%s listed more than once as input"
 msgstr "入力に %s が 1回を越えて書かれています"
 
-#: src/ldgeneric.c:422
+#: src/ldgeneric.c:414
 #, c-format
 msgid "%s (for -l%s)\n"
 msgstr "%s (-l%s 用)\n"
 
-#: src/ldgeneric.c:423
+#: src/ldgeneric.c:415
 #, c-format
 msgid "%s (for DT_NEEDED %s)\n"
 msgstr "%s (DT_NEEDED %s 用)\n"
 
-#: src/ldgeneric.c:571
+#: src/ldgeneric.c:563
 #, c-format
 msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
 msgstr ""
 "警告: `%1$s' のタイプが %3$s の %2$s から %5$s の %4$s に変更されました"
 
-#: src/ldgeneric.c:584
+#: src/ldgeneric.c:576
 #, c-format
 msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
 msgstr ""
 "警告: `%1$s の大きさが %3$s の %2$<PRIu64> から %5$s の %4$<PRIu64> に変更さ"
 "れました"
 
-#: src/ldgeneric.c:659 src/ldgeneric.c:1120 src/readelf.c:642 src/strip.c:570
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:568
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "セクション数を決定できません: %s"
 
-#: src/ldgeneric.c:675
+#: src/ldgeneric.c:667
 #, c-format
 msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
 msgstr "(%s+%#<PRIx64>): %s の複数定義 '%s'\n"
 
-#: src/ldgeneric.c:698
+#: src/ldgeneric.c:690
 #, c-format
 msgid "(%s+%#<PRIx64>): first defined here\n"
 msgstr "(%s+%#<PRIx64>): 最初の定義はここ\n"
 
-#: src/ldgeneric.c:817
+#: src/ldgeneric.c:809
 #, c-format
 msgid "%s: cannot get section group data: %s"
 msgstr "%s: セクショングループデータを得られません: %s"
 
-#: src/ldgeneric.c:838
+#: src/ldgeneric.c:830
 #, c-format
 msgid "%s: section '%s' with group flag set does not belong to any group"
 msgstr ""
 "%s: グループフラグが設定されているセクション '%s' はどのグループにも属してい"
 "ません"
 
-#: src/ldgeneric.c:883
+#: src/ldgeneric.c:875
 #, c-format
 msgid "%s: section [%2d] '%s' is not in the correct section group"
 msgstr "%s: セクション [%2d] '%s& は正しいセクショングループに入っていません"
 
-#: src/ldgeneric.c:1154 src/ldgeneric.c:1411 src/ldgeneric.c:1420
-#: src/ldgeneric.c:1479 src/ldgeneric.c:1488 src/ldgeneric.c:1751
-#: src/ldgeneric.c:2003
+#: src/ldgeneric.c:1146 src/ldgeneric.c:1403 src/ldgeneric.c:1412
+#: src/ldgeneric.c:1471 src/ldgeneric.c:1480 src/ldgeneric.c:1743
+#: src/ldgeneric.c:1995
 #, c-format
 msgid "%s: invalid ELF file (%s:%d)\n"
 msgstr "%s: 不当な ELF ファイル (%s:%d)\n"
 
-#: src/ldgeneric.c:1248
+#: src/ldgeneric.c:1240
 #, c-format
 msgid "%s: only files of type ET_REL might contain section groups"
 msgstr "%s: タイプ ET_REL のファイルのみセクショングループを含むことができます"
 
-#: src/ldgeneric.c:1300
+#: src/ldgeneric.c:1292
 #, c-format
 msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
 msgstr "%s: セクショングループ [%2zd] '%s' の署名を決定できません: %s"
 
-#: src/ldgeneric.c:1312
+#: src/ldgeneric.c:1304
 #, c-format
 msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
 msgstr "%s: セクショングループ [%2zd] '%s' の内容を得られません: %s'"
 
-#: src/ldgeneric.c:1326
+#: src/ldgeneric.c:1318
 #, c-format
 msgid ""
 "%s: group member %zu of section group [%2zd] '%s' has too high index: "
@@ -3406,75 +3491,75 @@
 "%1$s: セクショングループ [%3$2zd] '%4$s' のグループメンバー %2$zu は大きすぎ"
 "るインデックスを持っています: %5$<PRIu32>"
 
-#: src/ldgeneric.c:1348
+#: src/ldgeneric.c:1340
 #, c-format
 msgid "%s: section '%s' has unknown type: %d"
 msgstr "%s: セクション '%s' は不明なタイプを持っています: %d"
 
-#: src/ldgeneric.c:1727
+#: src/ldgeneric.c:1719
 #, c-format
 msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
 msgstr "ELF ファイル (%s:%d) のための記述子を得られません: %s\n"
 
-#: src/ldgeneric.c:1897
+#: src/ldgeneric.c:1889
 #, c-format
 msgid "cannot read archive `%s': %s"
 msgstr "アーカイブ `%s' を読めません: %s"
 
-#: src/ldgeneric.c:2018
+#: src/ldgeneric.c:2010
 #, c-format
 msgid "file of type %s cannot be linked in\n"
 msgstr "%s のファイルタイプがリンクされていません\n"
 
-#: src/ldgeneric.c:2030
+#: src/ldgeneric.c:2022
 #, c-format
 msgid "%s: input file incompatible with ELF machine type %s\n"
 msgstr "%s: 入力ファイルは ELF マシンタイプ %s と互換性がありません\n"
 
-#: src/ldgeneric.c:2042
+#: src/ldgeneric.c:2034
 #, c-format
 msgid "%s: cannot get section header string table index: %s\n"
 msgstr "%s: セクションヘッダー文字列テーブルインデックスを得られません: %s\n"
 
-#: src/ldgeneric.c:2071
+#: src/ldgeneric.c:2063
 #, c-format
 msgid "cannot use DSO '%s' when generating relocatable object file"
 msgstr "リロケータブルオブジェクトファイル生成時に DSO '%s' を使えません"
 
-#: src/ldgeneric.c:2156
+#: src/ldgeneric.c:2148
 #, c-format
 msgid "input file '%s' ignored"
 msgstr "入力ファイル '%s' を無視しました"
 
-#: src/ldgeneric.c:2370
+#: src/ldgeneric.c:2362
 #, c-format
 msgid "undefined symbol `%s' in %s"
 msgstr "%2$s 中に未定義のシンボル `%1$s'"
 
-#: src/ldgeneric.c:2700
+#: src/ldgeneric.c:2692
 #, c-format
 msgid "cannot create ELF descriptor for output file: %s"
 msgstr "出力ファイル用の ELF 記述子を生成できません: %s"
 
-#: src/ldgeneric.c:2707
+#: src/ldgeneric.c:2699
 #, c-format
 msgid "could not create ELF header for output file: %s"
 msgstr "出力ファイル用の ELF ヘッダーを生成できませんでした: %s"
 
-#: src/ldgeneric.c:3222 src/ldgeneric.c:3292 src/ldgeneric.c:3328
-#: src/ldgeneric.c:4455 src/ldgeneric.c:4504 src/ldgeneric.c:4536
-#: src/ldgeneric.c:4771 src/ldgeneric.c:4826 src/ldgeneric.c:5073
-#: src/ldgeneric.c:5129 src/ldgeneric.c:5598 src/ldgeneric.c:5610
+#: src/ldgeneric.c:3214 src/ldgeneric.c:3284 src/ldgeneric.c:3320
+#: src/ldgeneric.c:4447 src/ldgeneric.c:4496 src/ldgeneric.c:4528
+#: src/ldgeneric.c:4763 src/ldgeneric.c:4818 src/ldgeneric.c:5065
+#: src/ldgeneric.c:5121 src/ldgeneric.c:5590 src/ldgeneric.c:5602
 #, c-format
 msgid "cannot create section for output file: %s"
 msgstr "出力ファイル用のセクションを生成できません: %s"
 
-#: src/ldgeneric.c:3442
+#: src/ldgeneric.c:3434
 #, c-format
 msgid "address computation expression contains variable '%s'"
 msgstr "アドレス計算式が変数 '%s' を含んでいます"
 
-#: src/ldgeneric.c:3487
+#: src/ldgeneric.c:3479
 #, c-format
 msgid ""
 "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
@@ -3482,209 +3567,209 @@
 msgstr ""
 "アドレス計算式中の ALIGN のパラメーター %<PRIuMAX> が 2 の累乗ではありません"
 
-#: src/ldgeneric.c:3682
+#: src/ldgeneric.c:3674
 #, c-format
 msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 msgstr ""
 "エントリーシンボル '%s' が見つかりません: デフォルトの %#0*<PRIx64> にします"
 
-#: src/ldgeneric.c:3688
+#: src/ldgeneric.c:3680
 #, c-format
 msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
 msgstr ""
 "エントリーシンボルが指定されていません: デフォルトの %#0*<PRIx64> にします"
 
-#: src/ldgeneric.c:3918
+#: src/ldgeneric.c:3910
 #, c-format
 msgid "cannot create GNU hash table section for output file: %s"
 msgstr "出力ファイル用の GNU ハッシュテーブルセクションを生成できません: %s"
 
-#: src/ldgeneric.c:4069
+#: src/ldgeneric.c:4061
 #, c-format
 msgid "cannot create hash table section for output file: %s"
 msgstr "出力ファイル用のハッシュテーブルセクションを生成できません: %s"
 
-#: src/ldgeneric.c:4112
+#: src/ldgeneric.c:4104
 #, c-format
 msgid "cannot create build ID section: %s"
 msgstr "ビルド ID セクションを生成できません: %s"
 
-#: src/ldgeneric.c:4189
+#: src/ldgeneric.c:4181
 #, c-format
 msgid "cannot convert section data to file format: %s"
 msgstr "セクションデータをファイル形式に変換できません: %s"
 
-#: src/ldgeneric.c:4198
+#: src/ldgeneric.c:4190
 #, c-format
 msgid "cannot convert section data to memory format: %s"
 msgstr "セクションデータをメモリー形式に変換できません: %s"
 
-#: src/ldgeneric.c:4259
+#: src/ldgeneric.c:4251
 #, c-format
 msgid "cannot read enough data for UUID"
 msgstr "UUID に十分なデータを読めません"
 
-#: src/ldgeneric.c:4356 src/ldgeneric.c:4377 src/ldgeneric.c:4406
-#: src/ldgeneric.c:6059
+#: src/ldgeneric.c:4348 src/ldgeneric.c:4369 src/ldgeneric.c:4398
+#: src/ldgeneric.c:6051
 #, c-format
 msgid "cannot create symbol table for output file: %s"
 msgstr "出力ファイル用のシンボルテーブルを生成できません: %s"
 
-#: src/ldgeneric.c:5298 src/ldgeneric.c:5850
+#: src/ldgeneric.c:5290 src/ldgeneric.c:5842
 #, c-format
 msgid "section index too large in dynamic symbol table"
 msgstr "動的シンボルテーブルのセクションインデックスが大きすぎます"
 
-#: src/ldgeneric.c:5743
+#: src/ldgeneric.c:5735
 #, c-format
 msgid "cannot create versioning section: %s"
 msgstr "バージョニングセクションを生成できません: %s"
 
-#: src/ldgeneric.c:5816
+#: src/ldgeneric.c:5808
 #, c-format
 msgid "cannot create dynamic symbol table for output file: %s"
 msgstr "出力ファイル用の動的シンボルテーブルを生成できません: %s"
 
-#: src/ldgeneric.c:5991
+#: src/ldgeneric.c:5983
 #, c-format
 msgid "cannot create versioning data: %s"
 msgstr "バージョニングデータを生成できません: %s"
 
-#: src/ldgeneric.c:6091 src/ldgeneric.c:6104 src/ldgeneric.c:6168
-#: src/ldgeneric.c:6176
+#: src/ldgeneric.c:6083 src/ldgeneric.c:6096 src/ldgeneric.c:6160
+#: src/ldgeneric.c:6168
 #, c-format
 msgid "cannot create section header string section: %s"
 msgstr "セクションヘッダー文字列セクションを生成できません: %s"
 
-#: src/ldgeneric.c:6098
+#: src/ldgeneric.c:6090
 #, c-format
 msgid "cannot create section header string section"
 msgstr "セクションヘッダー文字列セクションを生成できません"
 
-#: src/ldgeneric.c:6256
+#: src/ldgeneric.c:6248
 #, c-format
 msgid "cannot create program header: %s"
 msgstr "プログラムヘッダーを生成できません: %s"
 
-#: src/ldgeneric.c:6264
+#: src/ldgeneric.c:6256
 #, c-format
 msgid "while determining file layout: %s"
 msgstr "ファイルレイアウトを決定中: %s"
 
-#: src/ldgeneric.c:6385
+#: src/ldgeneric.c:6377
 #, c-format
 msgid "internal error: non-nobits section follows nobits section"
 msgstr "内部エラー: 非 nobits セクションが nobits セクションに続きます"
 
-#: src/ldgeneric.c:6922
+#: src/ldgeneric.c:6914
 #, c-format
 msgid "cannot get header of 0th section: %s"
 msgstr "0番目のセクションのヘッダーを得られません: %s"
 
-#: src/ldgeneric.c:6938 src/unstrip.c:1818
+#: src/ldgeneric.c:6930 src/unstrip.c:1822
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "ELF ヘッダーを更新できません: %s"
 
-#: src/ldgeneric.c:6969
+#: src/ldgeneric.c:6961
 #, c-format
 msgid "linker backend didn't specify function to relocate section"
 msgstr ""
 "リンカーバックエンドがセクションをリロケートするための機能を指定していません"
 
-#: src/ldgeneric.c:6981
+#: src/ldgeneric.c:6973
 #, c-format
 msgid "while writing output file: %s"
 msgstr "出力ファイルに書込み中: %s"
 
-#: src/ldgeneric.c:6986
+#: src/ldgeneric.c:6978
 #, c-format
 msgid "while finishing output file: %s"
 msgstr "出力ファイルの仕上げ中: %s"
 
-#: src/ldgeneric.c:6992
+#: src/ldgeneric.c:6984
 #, c-format
 msgid "cannot stat output file"
 msgstr "出力ファイルを stat できません"
 
-#: src/ldgeneric.c:7008
+#: src/ldgeneric.c:7000
 #, c-format
 msgid "WARNING: temporary output file overwritten before linking finished"
 msgstr "警告: リンクを仕上げる前に一時出力ファイルが上書きされました"
 
-#: src/ldgeneric.c:7061 src/ldgeneric.c:7072 src/ldgeneric.c:7083
-#: src/ldgeneric.c:7094 src/ldgeneric.c:7113 src/ldgeneric.c:7126
-#: src/ldgeneric.c:7138
+#: src/ldgeneric.c:7053 src/ldgeneric.c:7064 src/ldgeneric.c:7075
+#: src/ldgeneric.c:7086 src/ldgeneric.c:7105 src/ldgeneric.c:7118
+#: src/ldgeneric.c:7130
 #, c-format
 msgid "no machine specific '%s' implementation"
 msgstr "マシン固有の '%s' 実装はありません"
 
-#: src/ldscript.y:178
+#: src/ldscript.y:170
 msgid "mode for segment invalid\n"
 msgstr "セグメント用のモードが不当です\n"
 
-#: src/ldscript.y:465
+#: src/ldscript.y:457
 #, c-format
 msgid "while reading version script '%s': %s at line %d"
 msgstr "バージョンスクリプト '%1$s' 読込み中: %3$d 行目の %2$s"
 
-#: src/ldscript.y:466
+#: src/ldscript.y:458
 #, c-format
 msgid "while reading linker script '%s': %s at line %d"
 msgstr "リンカースクリプト '%1$s' 読込み中: %3$d 行目の %2$s"
 
-#: src/ldscript.y:745
+#: src/ldscript.y:737
 #, fuzzy, c-format
 msgid "symbol '%s' is declared both local and global for unnamed version"
 msgstr "名前なしバージョン用のローカルとグローバルで宣言されたシンボル '%s'"
 
-#: src/ldscript.y:747
+#: src/ldscript.y:739
 #, fuzzy, c-format
 msgid "symbol '%s' is declared both local and global for version '%s'"
 msgstr "バージョン '%2$s' 用のローカルとグローバルで宣言されたシンボル '%1$s'"
 
-#: src/ldscript.y:767 src/ldscript.y:774
+#: src/ldscript.y:759 src/ldscript.y:766
 #, c-format
 msgid "default visibility set as local and global"
 msgstr "ローカルとグローバルに設定されたデフォルトの可視性"
 
-#: src/nm.c:74 src/strip.c:76
+#: src/nm.c:66 src/strip.c:68
 msgid "Output selection:"
 msgstr "出力選択:"
 
-#: src/nm.c:75
+#: src/nm.c:67
 msgid "Display debugger-only symbols"
 msgstr "デバッガー専用シンボルを表示"
 
-#: src/nm.c:76
+#: src/nm.c:68
 msgid "Display only defined symbols"
 msgstr "定義されたシンボルのみを表示"
 
-#: src/nm.c:79
+#: src/nm.c:71
 msgid "Display dynamic symbols instead of normal symbols"
 msgstr "通常シンボルの代わりに動的シンボルを表示"
 
-#: src/nm.c:80
+#: src/nm.c:72
 msgid "Display only external symbols"
 msgstr "外部シンボルのみを表示"
 
-#: src/nm.c:81
+#: src/nm.c:73
 msgid "Display only undefined symbols"
 msgstr "未定義シンボルのみを表示"
 
-#: src/nm.c:83
+#: src/nm.c:75
 msgid "Include index for symbols from archive members"
 msgstr "アーカイブメンバーからのシンボルの索引を含める"
 
-#: src/nm.c:85 src/size.c:66
+#: src/nm.c:77 src/size.c:58
 msgid "Output format:"
 msgstr "出力形式:"
 
-#: src/nm.c:87
+#: src/nm.c:79
 msgid "Print name of the input file before every symbol"
 msgstr "全てのシンボルの前に入力ファイル名を印刷"
 
-#: src/nm.c:90
+#: src/nm.c:82
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd', `sysv' or `posix'.  The "
 "default is `sysv'"
@@ -3692,73 +3777,73 @@
 "出力形式として FORMATを使う。FORMAT は `bsd'か、`sysv'、`posix' のどれか。省"
 "略値は `sysv'"
 
-#: src/nm.c:92
+#: src/nm.c:84
 msgid "Same as --format=bsd"
 msgstr "--format=bsd と同じ"
 
-#: src/nm.c:93
+#: src/nm.c:85
 msgid "Same as --format=posix"
 msgstr "--format=posix と同じ"
 
-#: src/nm.c:94 src/size.c:72
+#: src/nm.c:86 src/size.c:64
 msgid "Use RADIX for printing symbol values"
 msgstr "シンボル値を印刷するために RADIX を使う"
 
-#: src/nm.c:95
+#: src/nm.c:87
 #, fuzzy
 msgid "Mark special symbols"
 msgstr "弱いシンボルに印を点ける"
 
-#: src/nm.c:97
+#: src/nm.c:89
 msgid "Print size of defined symbols"
 msgstr "定義されたシンボルの印刷サイズ"
 
-#: src/nm.c:99 src/size.c:80 src/strip.c:81 src/unstrip.c:81
+#: src/nm.c:91 src/size.c:72 src/strip.c:73 src/unstrip.c:73
 msgid "Output options:"
 msgstr "出力オプション:"
 
-#: src/nm.c:100
+#: src/nm.c:92
 msgid "Sort symbols numerically by address"
 msgstr "シンボルをアドレスにより数値的に並べ替える"
 
-#: src/nm.c:102
+#: src/nm.c:94
 msgid "Do not sort the symbols"
 msgstr "シンボルを並べ替えない"
 
-#: src/nm.c:103
+#: src/nm.c:95
 msgid "Reverse the sense of the sort"
 msgstr "並べ替えの意味を逆にする"
 
-#: src/nm.c:106
+#: src/nm.c:98
 msgid "Decode low-level symbol names into source code names"
 msgstr ""
 
-#: src/nm.c:113
+#: src/nm.c:105
 msgid "List symbols from FILEs (a.out by default)."
 msgstr "ふぁいる からシンボルを表示 (デフォルトではa.out)。"
 
-#: src/nm.c:124 src/objdump.c:88
+#: src/nm.c:116 src/objdump.c:80
 #, fuzzy
 msgid "Output formatting"
 msgstr "出力形式:"
 
-#: src/nm.c:148 src/objdump.c:112 src/size.c:117 src/strip.c:128
+#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
 #, c-format
 msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
 msgstr "%s: 内部エラー %d (%s-%s): %s"
 
-#: src/nm.c:406 src/nm.c:418 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:2132
+#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
+#: src/strip.c:2160
 #, c-format
 msgid "while closing '%s'"
 msgstr "'%s' を閉じている最中"
 
-#: src/nm.c:428 src/objdump.c:304 src/strip.c:384
+#: src/nm.c:420 src/objdump.c:296 src/strip.c:376
 #, c-format
 msgid "%s: File format not recognized"
 msgstr "%s: ファイル形式を認識できませんでした"
 
-#: src/nm.c:468
+#: src/nm.c:460
 #, fuzzy
 msgid ""
 "\n"
@@ -3767,42 +3852,42 @@
 "\n"
 "アーカイブ索引:"
 
-#: src/nm.c:477
+#: src/nm.c:469
 #, c-format
 msgid "invalid offset %zu for symbol %s"
 msgstr "シンボル %2$sの不正なオフセット %1$zu "
 
-#: src/nm.c:482
+#: src/nm.c:474
 #, c-format
 msgid "%s in %s\n"
 msgstr "%2$s の中の %1$s\n"
 
-#: src/nm.c:490
+#: src/nm.c:482
 #, c-format
 msgid "cannot reset archive offset to beginning"
 msgstr "アーカイブのオフセットを最初にリセットできません"
 
-#: src/nm.c:514 src/objdump.c:352
+#: src/nm.c:506 src/objdump.c:344
 #, c-format
 msgid "%s%s%s: file format not recognized"
 msgstr "%s%s%s: ファイル形式を認識できません"
 
-#: src/nm.c:726
+#: src/nm.c:718
 #, c-format
 msgid "cannot create search tree"
 msgstr "検索ツリーを生成できません"
 
-#: src/nm.c:765 src/nm.c:1164 src/objdump.c:795 src/readelf.c:898
-#: src/readelf.c:1041 src/readelf.c:1189 src/readelf.c:1371 src/readelf.c:1571
-#: src/readelf.c:1757 src/readelf.c:1967 src/readelf.c:2221 src/readelf.c:2287
-#: src/readelf.c:2365 src/readelf.c:2863 src/readelf.c:2899 src/readelf.c:2961
-#: src/readelf.c:7307 src/readelf.c:8212 src/readelf.c:8359 src/readelf.c:8427
-#: src/size.c:425 src/size.c:499 src/strip.c:510
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:793 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:1975 src/readelf.c:2202 src/readelf.c:2460
+#: src/readelf.c:2536 src/readelf.c:2623 src/readelf.c:3201 src/readelf.c:3237
+#: src/readelf.c:3300 src/readelf.c:8187 src/readelf.c:9273 src/readelf.c:9420
+#: src/readelf.c:9488 src/size.c:417 src/size.c:486 src/strip.c:503
 #, c-format
 msgid "cannot get section header string table index"
 msgstr "セクションヘッダー文字列テーブル索引が得られません"
 
-#: src/nm.c:790
+#: src/nm.c:784
 #, c-format
 msgid ""
 "\n"
@@ -3815,7 +3900,7 @@
 "%s からのシンボル:\n"
 "\n"
 
-#: src/nm.c:793
+#: src/nm.c:787
 #, c-format
 msgid ""
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
@@ -3824,73 +3909,73 @@
 "%*s%-*s %-*s クラス タイプ   %-*s %*s セクション\n"
 "\n"
 
-#: src/nm.c:1174
+#: src/nm.c:1173
 #, c-format
 msgid "%s: entry size in section `%s' is not what we expect"
 msgstr "%s: セクションの項目の大きさ `%s' は予期したものとは異なります"
 
-#: src/nm.c:1178
+#: src/nm.c:1177
 #, c-format
 msgid "%s: size of section `%s' is not multiple of entry size"
 msgstr "%s: セクション `%s' の大きさは項目の大きさの整数倍ではありません"
 
-#: src/nm.c:1436
+#: src/nm.c:1435
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: 不当な操作"
 
-#: src/nm.c:1493
+#: src/nm.c:1492
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: シンボルがありません"
 
-#: src/objdump.c:61
+#: src/objdump.c:53
 msgid "Mode selection:"
 msgstr ""
 
-#: src/objdump.c:62
+#: src/objdump.c:54
 msgid "Display relocation information."
 msgstr ""
 
-#: src/objdump.c:64
+#: src/objdump.c:56
 msgid "Display the full contents of all sections requested"
 msgstr ""
 
-#: src/objdump.c:66
+#: src/objdump.c:58
 msgid "Display assembler code of executable sections"
 msgstr ""
 
-#: src/objdump.c:68
+#: src/objdump.c:60
 #, fuzzy
 msgid "Output content selection:"
 msgstr "出力選択:"
 
-#: src/objdump.c:70
+#: src/objdump.c:62
 msgid "Only display information for section NAME."
 msgstr ""
 
-#: src/objdump.c:76
+#: src/objdump.c:68
 msgid "Show information from FILEs (a.out by default)."
 msgstr ""
 
-#: src/objdump.c:244 src/readelf.c:441
+#: src/objdump.c:236 src/readelf.c:473
 msgid "No operation specified.\n"
 msgstr "操作が指定されていません。\n"
 
-#: src/objdump.c:282 src/objdump.c:294
+#: src/objdump.c:274 src/objdump.c:286
 #, c-format
 msgid "while close `%s'"
 msgstr ""
 
-#: src/objdump.c:387 src/readelf.c:1666 src/readelf.c:1840
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2072
 msgid "INVALID SYMBOL"
 msgstr "不当なシンボル"
 
-#: src/objdump.c:402 src/readelf.c:1697 src/readelf.c:1873
+#: src/objdump.c:394 src/readelf.c:1914 src/readelf.c:2108
 msgid "INVALID SECTION"
 msgstr "不当なセクション"
 
-#: src/objdump.c:518
+#: src/objdump.c:514
 #, c-format
 msgid ""
 "\n"
@@ -3898,228 +3983,289 @@
 "%-*s TYPE                 VALUE\n"
 msgstr ""
 
-#: src/objdump.c:521
+#: src/objdump.c:517
 msgid "OFFSET"
 msgstr ""
 
-#: src/objdump.c:584
+#: src/objdump.c:582
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr ""
 
-#: src/objdump.c:705
+#: src/objdump.c:703
 #, c-format
 msgid "cannot disassemble"
 msgstr ""
 
-#: src/objdump.c:744
+#: src/objdump.c:742
 #, fuzzy, c-format
 msgid "cannot allocate memory"
 msgstr "PLT セクションを割り当てられません: %s"
 
-#: src/ranlib.c:74
+#: src/ranlib.c:66
 msgid "Generate an index to speed access to archives."
 msgstr ""
 
-#: src/ranlib.c:77
+#: src/ranlib.c:69
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/ranlib.c:116
+#: src/ranlib.c:108
 #, c-format
 msgid "Archive name required"
 msgstr ""
 
-#: src/ranlib.c:194
+#: src/ranlib.c:186
 #, c-format
 msgid "'%s' is no archive"
 msgstr ""
 
-#: src/ranlib.c:229
+#: src/ranlib.c:221
 #, c-format
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr ""
 
+#: 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:75
+#: src/readelf.c:77
 msgid "All these plus -p .strtab -p .dynstr -p .comment"
 msgstr ""
 
-#: src/readelf.c:76
+#: src/readelf.c:78
 msgid "Display the dynamic segment"
 msgstr "動的セグメントを表示"
 
-#: src/readelf.c:77
+#: src/readelf.c:79
 msgid "Display the ELF file header"
 msgstr "ELF ファイルヘッダーを表示"
 
-#: src/readelf.c:79
+#: src/readelf.c:81
 msgid "Display histogram of bucket list lengths"
 msgstr "バケットリスト長の柱状図を表示"
 
-#: src/readelf.c:80
+#: src/readelf.c:82
 msgid "Display the program headers"
 msgstr "プログラムヘッダーを表示"
 
-#: src/readelf.c:82
+#: src/readelf.c:84
 msgid "Display relocations"
 msgstr "リロケーションを表示"
 
-#: src/readelf.c:83
+#: src/readelf.c:85
 #, fuzzy
 msgid "Display the sections' headers"
 msgstr "セクションのヘッダーを表示"
 
-#: src/readelf.c:85
+#: src/readelf.c:87
 msgid "Display the symbol table"
 msgstr "シンボルテーブルを表示"
 
-#: src/readelf.c:86
+#: src/readelf.c:88
 msgid "Display versioning information"
 msgstr "バージョニング情報の表示"
 
-#: src/readelf.c:87
+#: src/readelf.c:89
 #, fuzzy
 msgid "Display the ELF notes"
 msgstr "コアノートを表示"
 
-#: src/readelf.c:89
+#: src/readelf.c:91
 #, fuzzy
 msgid "Display architecture specific information, if any"
 msgstr "(もしあれば)アーキテクチャー固有の情報を表示"
 
-#: src/readelf.c:91
+#: src/readelf.c:93
 msgid "Display sections for exception handling"
 msgstr "例外を取り扱うためのセクションを表示"
 
-#: src/readelf.c:93
+#: src/readelf.c:95
 #, fuzzy
 msgid "Additional output selection:"
 msgstr "出力選択:"
 
-#: src/readelf.c:95
+#: 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, 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:99
+#: src/readelf.c:101
 msgid "Dump the uninterpreted contents of SECTION, by number or name"
 msgstr "数字か名前で解釈できないセクションの内容をダンプする"
 
-#: src/readelf.c:101
+#: src/readelf.c:103
 msgid "Print string contents of sections"
 msgstr "セクションの文字列内容を印刷する"
 
-#: src/readelf.c:104
+#: src/readelf.c:106
 msgid "Display the symbol index of an archive"
 msgstr "アーカイブのシンボル索引を表示"
 
-#: src/readelf.c:106
+#: src/readelf.c:108
 msgid "Output control:"
 msgstr "出力制御:"
 
-#: src/readelf.c:108
+#: src/readelf.c:110
 msgid "Do not find symbol names for addresses in DWARF data"
 msgstr "DWARFデータ中のアドレスのためのシンボル名を探さない"
 
-#: src/readelf.c:110
+#: 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:115
+#: src/readelf.c:119
 msgid "Print information from ELF file in human-readable form."
 msgstr "ELF ファイルから人間が読める形で情報を印刷する。"
 
-#: src/readelf.c:412
+#: src/readelf.c:441
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "不明な DWARF デバッグセクション `%s'.\n"
 
-#: src/readelf.c:478
+#: src/readelf.c:520 src/readelf.c:631
 #, c-format
 msgid "cannot generate Elf descriptor: %s"
 msgstr "Elf 記述子を生成できません: %s"
 
-#: src/readelf.c:490
+#: 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:495
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9440
+#: src/unstrip.c:356 src/unstrip.c:387 src/unstrip.c:436 src/unstrip.c:544
+#: src/unstrip.c:561 src/unstrip.c:597 src/unstrip.c:795 src/unstrip.c:1063
+#: src/unstrip.c:1254 src/unstrip.c:1314 src/unstrip.c:1435 src/unstrip.c:1488
+#: src/unstrip.c:1595 src/unstrip.c:1784
+#, 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:5398 src/readelf.c:7671 src/readelf.c:7773
+#: src/readelf.c:7939
+#, 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:602 src/readelf.c:619 src/readelf.c:648
 #, c-format
 msgid "error while closing Elf descriptor: %s"
 msgstr "Elf 記述子を閉じている時にエラー: %s"
 
-#: src/readelf.c:587
+#: 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:589
+#: src/readelf.c:771
 #, c-format
 msgid "input file is empty"
 msgstr "入力ファイルが空です"
 
-#: src/readelf.c:591
+#: src/readelf.c:773
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "'%s' の読込みに失敗: %s"
 
-#: src/readelf.c:627
+#: src/readelf.c:814
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr "ELF ヘッダーが読めません: %s"
 
-#: src/readelf.c:635
+#: src/readelf.c:822
 #, c-format
 msgid "cannot create EBL handle"
 msgstr "EBL ヘッダーを生成できません"
 
-#: src/readelf.c:648
+#: src/readelf.c:835
 #, fuzzy, c-format
 msgid "cannot determine number of program headers: %s"
 msgstr "セクション数を決定できません: %s"
 
-#: src/readelf.c:734
+#: src/readelf.c:921
 msgid "NONE (None)"
 msgstr "なし (なし)"
 
-#: src/readelf.c:735
+#: src/readelf.c:922
 msgid "REL (Relocatable file)"
 msgstr "REL (リロケータブルファイル)"
 
-#: src/readelf.c:736
+#: src/readelf.c:923
 msgid "EXEC (Executable file)"
 msgstr "(EXEC (実行ファイル)"
 
-#: src/readelf.c:737
+#: src/readelf.c:924
 msgid "DYN (Shared object file)"
 msgstr "DYN (共用オブジェクトファイル)"
 
-#: src/readelf.c:738
+#: src/readelf.c:925
 msgid "CORE (Core file)"
 msgstr "CORE (コアファイル)"
 
-#: src/readelf.c:743
+#: src/readelf.c:930
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr "OS 固有: (%x)\n"
 
-#: src/readelf.c:745
+#: src/readelf.c:932
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr "プロセッサー固有: (%x)\n"
 
-#: src/readelf.c:755
+#: src/readelf.c:942
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
@@ -4127,7 +4273,7 @@
 "ELF ヘッダー:\n"
 " マジック: "
 
-#: src/readelf.c:759
+#: src/readelf.c:946
 #, c-format
 msgid ""
 "\n"
@@ -4136,117 +4282,117 @@
 "\n"
 "  クラス:                            %s\n"
 
-#: src/readelf.c:764
+#: src/readelf.c:951
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  データ:                            %s\n"
 
-#: src/readelf.c:770
+#: src/readelf.c:957
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr "  識別バージョン:                    %hhd %s\n"
 
-#: src/readelf.c:772 src/readelf.c:789
+#: src/readelf.c:959 src/readelf.c:976
 msgid "(current)"
 msgstr "(現在)"
 
-#: src/readelf.c:776
+#: src/readelf.c:963
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  OS/ABI:                            %s\n"
 
-#: src/readelf.c:779
+#: src/readelf.c:966
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr "  ABI バージョン:                    %hhd\n"
 
-#: src/readelf.c:782
+#: src/readelf.c:969
 msgid "  Type:                              "
 msgstr "  タイプ:                            "
 
-#: src/readelf.c:785
+#: src/readelf.c:972
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  マシン :                           %s\n"
 
-#: src/readelf.c:787
+#: src/readelf.c:974
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  バージョン:                        %d %s\n"
 
-#: src/readelf.c:791
+#: src/readelf.c:978
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr "  入口点アドレス     :               %#<PRIx64>\n"
 
-#: src/readelf.c:794
+#: src/readelf.c:981
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr "  プログラムヘッダーの開始:          %<PRId64> %s\n"
 
-#: src/readelf.c:795 src/readelf.c:798
+#: src/readelf.c:982 src/readelf.c:985
 msgid "(bytes into file)"
 msgstr "(ファイルへのバイト数)"
 
-#: src/readelf.c:797
+#: src/readelf.c:984
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr "  セクションヘッダーの開始:          %<PRId64> %s\n"
 
-#: src/readelf.c:800
+#: src/readelf.c:987
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr "  フラグ:                            %s\n"
 
-#: src/readelf.c:803
+#: src/readelf.c:990
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr "  このヘッダーの大きさ:              %<PRId16> %s\n"
 
-#: src/readelf.c:804 src/readelf.c:807 src/readelf.c:824
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
 msgid "(bytes)"
 msgstr "(バイト)"
 
-#: src/readelf.c:806
+#: src/readelf.c:993
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr "  プログラムヘッダー項目の大きさ:%<PRId16> %s\n"
 
-#: src/readelf.c:809
+#: src/readelf.c:996
 #, fuzzy, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr "  プログラムヘッダー項目の数 : %<PRId16>\n"
 
-#: src/readelf.c:816
+#: src/readelf.c:1003
 #, fuzzy, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr "([0].sh_link の %<PRIu32>)"
 
-#: src/readelf.c:819 src/readelf.c:836 src/readelf.c:850
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
 msgid " ([0] not available)"
 msgstr "([0]は使えません)"
 
-#: src/readelf.c:823
+#: src/readelf.c:1010
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr "  セクションヘッダー項目の大きさ:%<PRId16> %s\n"
 
-#: src/readelf.c:826
+#: src/readelf.c:1013
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr "  セクションヘッダー項目の数 : %<PRId16>"
 
-#: src/readelf.c:833
+#: src/readelf.c:1020
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr " ([0].sh_size の %<PRIu32>)"
 
-#: src/readelf.c:846
+#: src/readelf.c:1033
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr "([0].sh_link の %<PRIu32>)"
 
-#: src/readelf.c:854
+#: src/readelf.c:1041
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
@@ -4255,7 +4401,7 @@
 "  セクションヘッダー文字列テーブル索引: XINDEX%s\n"
 "\n"
 
-#: src/readelf.c:858
+#: src/readelf.c:1045
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
@@ -4264,7 +4410,7 @@
 "  セクションヘッダー文字列テーブル索引: %<PRId16>\n"
 "\n"
 
-#: src/readelf.c:890
+#: src/readelf.c:1077
 #, c-format
 msgid ""
 "There are %d section headers, starting at offset %#<PRIx64>:\n"
@@ -4273,11 +4419,11 @@
 "オフセット %2$#<PRIx64> から始まる %1$d 個のセクションヘッダーがあります:\n"
 "\n"
 
-#: src/readelf.c:900
+#: src/readelf.c:1087
 msgid "Section Headers:"
 msgstr "セクションヘッダー:"
 
-#: src/readelf.c:903
+#: src/readelf.c:1090
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
@@ -4285,7 +4431,7 @@
 "[番] 名前                 タイプ       アドレス オフセ 大きさ ES フラグLk "
 "Inf Al"
 
-#: src/readelf.c:905
+#: src/readelf.c:1092
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
@@ -4293,31 +4439,17 @@
 "[番] 名前                 タイプ       アドレス         オフセ   大きさ   ES "
 "フラグLk Inf Al"
 
-#: src/readelf.c:912 src/readelf.c:1065
-#, c-format
-msgid "cannot get section: %s"
-msgstr "セクションを得られません: %s"
-
-#: src/readelf.c:919 src/readelf.c:1073 src/readelf.c:8379 src/unstrip.c:353
-#: src/unstrip.c:384 src/unstrip.c:433 src/unstrip.c:541 src/unstrip.c:558
-#: src/unstrip.c:594 src/unstrip.c:792 src/unstrip.c:1060 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:977
+#: src/readelf.c:1164
 msgid "Program Headers:"
 msgstr "プログラムヘッダー:"
 
-#: src/readelf.c:979
+#: src/readelf.c:1166
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 "  タイプ         オフセ   仮アドレス 物アドレス ファイ量 メモ量   Flg 調整 "
 
-#: src/readelf.c:982
+#: src/readelf.c:1169
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4325,12 +4457,12 @@
 "  タイプ         オフセ   仮想アドレス       物理アドレス      ファイル量メモ"
 "量   Flg 調整 "
 
-#: src/readelf.c:1022
+#: src/readelf.c:1226
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[プログラム割込みを要求: %s]\n"
 
-#: src/readelf.c:1043
+#: src/readelf.c:1247
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4340,12 +4472,12 @@
 " セクションからセグメントへのマッビング:\n"
 "  セグメント セクション..."
 
-#: src/readelf.c:1054 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
+#: src/readelf.c:1258 src/unstrip.c:1843 src/unstrip.c:1886 src/unstrip.c:1893
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "プログラムヘッダーを得られません: %s"
 
-#: src/readelf.c:1195
+#: src/readelf.c:1401
 #, c-format
 msgid ""
 "\n"
@@ -4358,7 +4490,7 @@
 "署名 '%3$s' を持つ COMDAT セクショングループ [%1$2zu] '%2$s' には %4$zu 個の"
 "項目があります:\n"
 
-#: src/readelf.c:1200
+#: src/readelf.c:1406
 #, c-format
 msgid ""
 "\n"
@@ -4371,15 +4503,21 @@
 "署名 '%3$s' を持つセクショングループ [%1$2zu] '%2$s' には %4$zu 個の項目があ"
 "ります:\n"
 
-#: src/readelf.c:1208
+#: src/readelf.c:1414
 msgid "<INVALID SYMBOL>"
 msgstr "<不当なシンボル>"
 
-#: src/readelf.c:1222
+#: src/readelf.c:1428
 msgid "<INVALID SECTION>"
 msgstr "<不当なセクション>"
 
-#: src/readelf.c:1373
+#: src/readelf.c:1585 src/readelf.c:2208 src/readelf.c:2466 src/readelf.c:2542
+#: src/readelf.c:2846 src/readelf.c:2920 src/readelf.c:4610
+#, fuzzy, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr "不当な .debug_line セクション"
+
+#: src/readelf.c:1588
 #, c-format
 msgid ""
 "\n"
@@ -4395,36 +4533,36 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:1385
+#: src/readelf.c:1598
 msgid "  Type              Value\n"
 msgstr "  タイプ            値\n"
 
-#: src/readelf.c:1409
+#: src/readelf.c:1622
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "共用ライブラリー: [%s]\n"
 
-#: src/readelf.c:1414
+#: src/readelf.c:1627
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "ライブラリー so 名: [%s]\n"
 
-#: src/readelf.c:1419
+#: src/readelf.c:1632
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "ライブラリー rパス: [%s]\n"
 
-#: src/readelf.c:1424
+#: src/readelf.c:1637
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "ライブラリー run パス: [%s]\n"
 
-#: src/readelf.c:1444
+#: src/readelf.c:1657
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (バイト)\n"
 
-#: src/readelf.c:1556 src/readelf.c:1742
+#: src/readelf.c:1770 src/readelf.c:1960
 #, c-format
 msgid ""
 "\n"
@@ -4433,7 +4571,7 @@
 "\n"
 "オフセット %#0<PRIx64> に不当なシンボルテーブル\n"
 
-#: src/readelf.c:1574 src/readelf.c:1759
+#: src/readelf.c:1788 src/readelf.c:1978
 #, c-format
 msgid ""
 "\n"
@@ -4448,7 +4586,7 @@
 "オフセット %5$#0<PRIx64> のセクション [%3$2u] '%4$s' 用のリロケーションセク"
 "ション [%1$2zu] '%2$s' には %6$d 個の項目があります:\n"
 
-#: src/readelf.c:1589
+#: src/readelf.c:1803 src/readelf.c:1993
 #, c-format
 msgid ""
 "\n"
@@ -4461,29 +4599,29 @@
 "オフセット %3$#0<PRIx64> のリロケーションセクション [%1$2u] '%2$s' には %4$d "
 "個の項目があります:\n"
 
-#: src/readelf.c:1599
+#: src/readelf.c:1813
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "  オフセット  タイプ               値          名前\n"
 
-#: src/readelf.c:1601
+#: src/readelf.c:1815
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "  オフセット          タイプ               値                  名前\n"
 
-#: src/readelf.c:1654 src/readelf.c:1665 src/readelf.c:1678 src/readelf.c:1696
-#: src/readelf.c:1708 src/readelf.c:1827 src/readelf.c:1839 src/readelf.c:1853
-#: src/readelf.c:1872 src/readelf.c:1885
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1913
+#: src/readelf.c:1925 src/readelf.c:2059 src/readelf.c:2071 src/readelf.c:2085
+#: src/readelf.c:2107 src/readelf.c:2120
 msgid "<INVALID RELOC>"
 msgstr "<不当なRELOC>"
 
-#: src/readelf.c:1771
+#: src/readelf.c:2003
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "  オフセット  タイプ          値          付加名\n"
 
-#: src/readelf.c:1773
+#: src/readelf.c:2005
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr "  オフセット          タイプ          値                  付加名\n"
 
-#: src/readelf.c:1974
+#: src/readelf.c:2216
 #, c-format
 msgid ""
 "\n"
@@ -4495,39 +4633,39 @@
 "\n"
 "シンボルテーブル [%2u] '%s' には %u 個の項目があります:\n"
 
-#: src/readelf.c:1980
+#: src/readelf.c:2221
 #, 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:1990
+#: src/readelf.c:2229
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  数 :    値      大き タイプ  Bind   Vis          Ndx 名前\n"
 
-#: src/readelf.c:1992
+#: src/readelf.c:2231
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  数 :            値      大き タイプ  Bind   Vis          Ndx 名前\n"
 
-#: src/readelf.c:2012
+#: src/readelf.c:2251
 #, 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:2100
+#: src/readelf.c:2339
 #, c-format
 msgid "bad dynamic symbol"
 msgstr "不正な動的シンボル"
 
-#: src/readelf.c:2182
+#: src/readelf.c:2421
 msgid "none"
 msgstr "なし"
 
-#: src/readelf.c:2199
+#: src/readelf.c:2438
 msgid "| <unknown>"
 msgstr "| <不明>"
 
-#: src/readelf.c:2224
+#: src/readelf.c:2469
 #, c-format
 msgid ""
 "\n"
@@ -4543,17 +4681,17 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2247
+#: src/readelf.c:2490
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: バージョン: %hu  ファイル: %s  数: %hu\n"
 
-#: src/readelf.c:2260
+#: src/readelf.c:2503
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: 名前: %s  フラグ: %s  バージョン: %hu\n"
 
-#: src/readelf.c:2291
+#: src/readelf.c:2546
 #, c-format
 msgid ""
 "\n"
@@ -4569,17 +4707,17 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2321
+#: src/readelf.c:2574
 #, 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:2336
+#: src/readelf.c:2589
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: 親 %d: %s\n"
 
-#: src/readelf.c:2568
+#: src/readelf.c:2850
 #, c-format
 msgid ""
 "\n"
@@ -4595,15 +4733,15 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'"
 
-#: src/readelf.c:2598
+#: src/readelf.c:2878
 msgid "   0 *local*                     "
 msgstr "   0 *ローカル*                  "
 
-#: src/readelf.c:2603
+#: src/readelf.c:2883
 msgid "   1 *global*                    "
 msgstr "   1 *グローバル*                "
 
-#: src/readelf.c:2634
+#: src/readelf.c:2925
 #, c-format
 msgid ""
 "\n"
@@ -4621,22 +4759,22 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2658
+#: src/readelf.c:2947
 #, fuzzy, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " 長さ    数      全体の%     範囲    \n"
 
-#: src/readelf.c:2660
+#: src/readelf.c:2949
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:2667
+#: src/readelf.c:2956
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:2680
+#: src/readelf.c:2969
 #, fuzzy, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -4645,12 +4783,27 @@
 " テストの平均数: 検索成功: %f\n"
 "                 検索失敗: %f\n"
 
-#: src/readelf.c:2698 src/readelf.c:2740 src/readelf.c:2781
+#: src/readelf.c:2987 src/readelf.c:3042 src/readelf.c:3098
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "セクションからデータを得られません %d: %s"
 
-#: src/readelf.c:2835
+#: src/readelf.c:2995
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash section %d"
+msgstr "セクション [%zu] '%s' の不当なデータ"
+
+#: src/readelf.c:3050
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash64 section %d"
+msgstr "セクション [%zu] '%s' の不当なデータ"
+
+#: src/readelf.c:3106
+#, fuzzy, c-format
+msgid "invalid data in gnu.hash section %d"
+msgstr "セクション [%zu] '%s' の不当なデータ"
+
+#: src/readelf.c:3173
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -4660,7 +4813,7 @@
 " ビットマスクの大きさ: %zu バイト  %<PRIuFAST32>%% ビット設定 第2ハッシュシフ"
 "ト: %u\n"
 
-#: src/readelf.c:2909
+#: src/readelf.c:3248
 #, c-format
 msgid ""
 "\n"
@@ -4673,7 +4826,7 @@
 "オフセット %3$#0<PRIx64> のライブラリー一覧セクション [%1$2zu] '%2$s' には "
 "%4$d 個の項目があります:\n"
 
-#: src/readelf.c:2923
+#: src/readelf.c:3262
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -4681,7 +4834,7 @@
 "       ライブラリー                  タイムスタンプ      チェックサム バー"
 "ジョン フラグ"
 
-#: src/readelf.c:2973
+#: src/readelf.c:3312
 #, c-format
 msgid ""
 "\n"
@@ -4692,160 +4845,140 @@
 "オフセット %4$#0<PRIx64> の %3$<PRIu64> バイトのオブジェクト属性セクション "
 "[%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:2989
+#: src/readelf.c:3329
 msgid "  Owner          Size\n"
 msgstr "  所有者         大きさ\n"
 
-#: src/readelf.c:3015
+#: src/readelf.c:3358
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
-#: src/readelf.c:3047
+#: src/readelf.c:3397
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
-#: src/readelf.c:3052
+#: src/readelf.c:3402
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    ファイル: %11<PRIu32>\n"
 
-#: src/readelf.c:3087
+#: src/readelf.c:3451
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>、%s\n"
 
-#: src/readelf.c:3090
+#: src/readelf.c:3454
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3093
+#: src/readelf.c:3457
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3100
+#: src/readelf.c:3467
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3103
+#: src/readelf.c:3470
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3139
+#: src/readelf.c:3515
 #, c-format
 msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3142
+#: src/readelf.c:3518
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3147
+#: src/readelf.c:3523
 #, c-format
 msgid "%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3150
+#: src/readelf.c:3526
 #, c-format
 msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3156
+#: src/readelf.c:3532
 #, c-format
 msgid "%s+%#<PRIx64> <%s>"
 msgstr "%s+%#<PRIx64> <%s>"
 
-#: src/readelf.c:3159
+#: src/readelf.c:3535
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s>"
 msgstr "%s+%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3163
+#: src/readelf.c:3539
 #, c-format
 msgid "%#<PRIx64> <%s>"
 msgstr "%#<PRIx64> <%s>"
 
-#: src/readelf.c:3166
+#: src/readelf.c:3542
 #, c-format
 msgid "%#0*<PRIx64> <%s>"
 msgstr "%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3171
+#: src/readelf.c:3547
 #, c-format
 msgid "%s+%#<PRIx64>"
 msgstr "%s+%#<PRIx64>"
 
-#: src/readelf.c:3174
+#: src/readelf.c:3550
 #, c-format
 msgid "%s+%#0*<PRIx64>"
 msgstr "%s+%#0*<PRIx64>"
 
-#: src/readelf.c:3313
-#, c-format
-msgid "unknown tag %hx"
-msgstr "不明なタグ %hx"
-
-#: src/readelf.c:3315
-#, c-format
-msgid "unknown user tag %hx"
-msgstr "不明な利用者タグ %hx"
-
-#: src/readelf.c:3603
-#, c-format
-msgid "unknown attribute %hx"
-msgstr "不明な属性 %hx"
-
-#: src/readelf.c:3606
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr "不明な利用者属性 %hx"
-
-#: src/readelf.c:3657
-#, fuzzy, c-format
-msgid "unknown form %#<PRIx64>"
-msgstr "不明な様式 %<PRIx64>"
-
-#: src/readelf.c:3893
+#: src/readelf.c:3932
 msgid "empty block"
 msgstr "空ブロック"
 
-#: src/readelf.c:3896
+#: src/readelf.c:3935
 #, c-format
 msgid "%zu byte block:"
 msgstr "%zu バイトのブロック:"
 
-#: src/readelf.c:4419
+#: src/readelf.c:4332
 #, c-format
 msgid "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 
-#: src/readelf.c:4455
+#: src/readelf.c:4389
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr ""
 
-#: src/readelf.c:4462
+#: src/readelf.c:4396
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr ""
 
-#: src/readelf.c:4542
+#: src/readelf.c:4403
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr ""
+
+#: src/readelf.c:4492
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr ""
 
-#: src/readelf.c:4550
+#: src/readelf.c:4500
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr ""
 
-#: src/readelf.c:4569
+#: src/readelf.c:4526
 #, c-format
 msgid ""
 "\n"
@@ -4856,7 +4989,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 " [ コード]\n"
 
-#: src/readelf.c:4577
+#: src/readelf.c:4534
 #, c-format
 msgid ""
 "\n"
@@ -4865,30 +4998,30 @@
 "\n"
 "オフセット %<PRIu64> の略語セクション:\n"
 
-#: src/readelf.c:4590
+#: src/readelf.c:4547
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** 略語を読んでいる間にエラー: %s\n"
 
-#: src/readelf.c:4606
+#: src/readelf.c:4563
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] オフセット: %<PRId64>、子: %s、タグ: %s\n"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "yes"
 msgstr "はい"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "no"
 msgstr "いいえ"
 
-#: src/readelf.c:4644
+#: src/readelf.c:4600 src/readelf.c:4673
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr ".debug_aragnes の内容を得られません: %s"
 
-#: src/readelf.c:4649
+#: src/readelf.c:4615
 #, c-format
 msgid ""
 "\n"
@@ -4901,25 +5034,20 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:4680
+#: src/readelf.c:4646
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:4682
+#: src/readelf.c:4648
 #, 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:4701
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ".degub_ranges の内容を得られません: %s"
-
-#: src/readelf.c:4706 src/readelf.c:5207 src/readelf.c:5982 src/readelf.c:6483
-#: src/readelf.c:6598 src/readelf.c:6770
+#: src/readelf.c:4678 src/readelf.c:4832 src/readelf.c:5408 src/readelf.c:6362
+#: src/readelf.c:6894 src/readelf.c:7014 src/readelf.c:7177 src/readelf.c:7602
 #, c-format
 msgid ""
 "\n"
@@ -4928,39 +5056,122 @@
 "\n"
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:4730 src/readelf.c:6508
+#: src/readelf.c:4691 src/readelf.c:6388
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"オフセット %Zu のテーブル:\n"
+
+#: src/readelf.c:4695 src/readelf.c:5432 src/readelf.c:6399
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "セクション [%zu] '%s' の不当なデータ"
+
+#: src/readelf.c:4711
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Length:        %6<PRIu64>\n"
+msgstr " (オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:4723
+#, fuzzy, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4727
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4738
+#, fuzzy, c-format
+msgid " CU offset:     %6<PRIx64>\n"
+msgstr " (オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:4744
+#, fuzzy, c-format
+msgid " Address size:  %6<PRIu64>\n"
+msgstr " (終了オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:4748
+#, fuzzy, c-format
+msgid "unsupported address size"
+msgstr "アドレス値ではありません"
+
+#: src/readelf.c:4753
+#, fuzzy, c-format
+msgid ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+msgstr " ファイルを %<PRIu64> に設定する\n"
+
+#: src/readelf.c:4757
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4797
+#, fuzzy, c-format
+msgid "   %s..%s (%<PRIx64>)\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4800
+#, fuzzy, c-format
+msgid "   %s..%s\n"
+msgstr " [%6tx]  %s..%s\n"
+
+#: src/readelf.c:4809
+#, c-format
+msgid "   %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4827
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr ".degub_ranges の内容を得られません: %s"
+
+#: src/readelf.c:4857 src/readelf.c:6921
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:4752 src/readelf.c:6530
+#: src/readelf.c:4879 src/readelf.c:6943
 #, c-format
 msgid " [%6tx]  base address %s\n"
 msgstr " [%6tx]  ベースアドレス %s\n"
 
-#: src/readelf.c:4758 src/readelf.c:6536
+#: src/readelf.c:4886 src/readelf.c:6950
 #, fuzzy, c-format
 msgid " [%6tx]  empty list\n"
 msgstr ""
 "\n"
 " [%6tx] ゼロ終端\n"
 
-#: src/readelf.c:4767
+#: src/readelf.c:4897
 #, c-format
 msgid " [%6tx]  %s..%s\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:4769
+#: src/readelf.c:4899
 #, c-format
 msgid "           %s..%s\n"
 msgstr "           %s..%s\n"
 
-#: src/readelf.c:5196 src/readelf.c:6838 src/readelf.c:6940 src/readelf.c:7098
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "%s の内容を得られません: %s"
+#: src/readelf.c:5078
+#, fuzzy
+msgid "         <INVALID DATA>\n"
+msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:5203
+#: src/readelf.c:5387
+#, fuzzy, c-format
+msgid "cannot get ELF: %s"
+msgstr "次の DIE を得られません: %s"
+
+#: src/readelf.c:5404
 #, c-format
 msgid ""
 "\n"
@@ -4969,12 +5180,7 @@
 "\n"
 "オフセット %3$#<PRIx64> の フレーム情報呼出しセクション [%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:5231 src/readelf.c:6017
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "セクション [%zu] '%s' の不当なデータ"
-
-#: src/readelf.c:5253
+#: src/readelf.c:5454
 #, c-format
 msgid ""
 "\n"
@@ -4983,50 +5189,50 @@
 "\n"
 " [%6tx] ゼロ終端\n"
 
-#: src/readelf.c:5338
+#: src/readelf.c:5547 src/readelf.c:5702
 #, fuzzy, c-format
 msgid "invalid augmentation length"
 msgstr "不当な拡大エンコード"
 
-#: src/readelf.c:5350
+#: src/readelf.c:5562
 msgid "FDE address encoding: "
 msgstr "FDE アドレスエンコード"
 
-#: src/readelf.c:5356
+#: src/readelf.c:5568
 msgid "LSDA pointer encoding: "
 msgstr "LSDA ポインターエンコード:"
 
-#: src/readelf.c:5454
+#: src/readelf.c:5679
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5461
+#: src/readelf.c:5686
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5488
+#: src/readelf.c:5723
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sLSDA ポインター: %#<PRIx64>\n"
 
-#: src/readelf.c:5539
+#: src/readelf.c:5778
 #, c-format
 msgid "cannot get attribute code: %s"
 msgstr "属性コードを得られません: %s"
 
-#: src/readelf.c:5548
+#: src/readelf.c:5787
 #, c-format
 msgid "cannot get attribute form: %s"
 msgstr "属性様式を得られません: %s"
 
-#: src/readelf.c:5563
+#: src/readelf.c:5802
 #, c-format
 msgid "cannot get attribute value: %s"
 msgstr "属性値を得られません: %s"
 
-#: src/readelf.c:5819
+#: src/readelf.c:6101
 #, c-format
 msgid ""
 "\n"
@@ -5037,7 +5243,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 " [オフセット]\n"
 
-#: src/readelf.c:5851
+#: src/readelf.c:6133
 #, fuzzy, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5049,7 +5255,7 @@
 " バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
 "きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
 
-#: src/readelf.c:5860
+#: src/readelf.c:6142
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5060,49 +5266,50 @@
 " バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
 "きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
 
-#: src/readelf.c:5886
+#: src/readelf.c:6167
 #, c-format
 msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
 msgstr ""
 "セクション '%2$s' の オフセット %1$<PRIu64> の DIE を得られません: %3$s"
 
-#: src/readelf.c:5898
+#: src/readelf.c:6181
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "DIE オフセットを得られません: %s"
 
-#: src/readelf.c:5907
+#: src/readelf.c:6190
 #, 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:5938
+#: src/readelf.c:6222
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "次の DIE を得られません: %s\n"
 
-#: src/readelf.c:5946
+#: src/readelf.c:6230
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:5995
+#: src/readelf.c:6266
+#, fuzzy, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+"\n"
+"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
+
+#: src/readelf.c:6375
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "ラインデータセクションデータを得られません: %s"
 
-#: src/readelf.c:6008
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-"\n"
-"オフセット %Zu のテーブル:\n"
-
-#: src/readelf.c:6063
+#: src/readelf.c:6445
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5130,18 +5337,18 @@
 "\n"
 "命令コード:\n"
 
-#: src/readelf.c:6084
+#: src/readelf.c:6466
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr "セクション [%2$zu] '%3$s' 中のオフセット %1$tu に不当なデータ"
 
-#: src/readelf.c:6099
+#: src/readelf.c:6481
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
 msgstr[0] "  [%*<PRIuFAST8>]  %hhu パラメーター\n"
 
-#: src/readelf.c:6107
+#: src/readelf.c:6489
 msgid ""
 "\n"
 "Directory table:"
@@ -5149,7 +5356,7 @@
 "\n"
 "ディレクトリーテーブル:"
 
-#: src/readelf.c:6123
+#: src/readelf.c:6505
 msgid ""
 "\n"
 "File name table:\n"
@@ -5159,7 +5366,7 @@
 "ファイル名テーブル:\n"
 " Entry Dir   時刻     大きさ    名前"
 
-#: src/readelf.c:6152
+#: src/readelf.c:6540
 msgid ""
 "\n"
 "Line number statements:"
@@ -5167,150 +5374,215 @@
 "\n"
 "行   番号   文:"
 
-#: src/readelf.c:6228
+#: src/readelf.c:6591
+#, c-format
+msgid "invalid maximum operations per instruction is zero"
+msgstr ""
+
+#: src/readelf.c:6627
 #, 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:6233
+#: src/readelf.c:6632
 #, c-format
 msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
 msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
 
-#: src/readelf.c:6253
+#: src/readelf.c:6652
 #, c-format
 msgid " extended opcode %u: "
 msgstr " 拡張命令コード %u: "
 
-#: src/readelf.c:6258
+#: src/readelf.c:6657
 #, fuzzy
 msgid " end of sequence"
 msgstr "列の終わり"
 
-#: src/readelf.c:6275
+#: src/readelf.c:6676
 #, fuzzy, c-format
 msgid " set address to %s\n"
 msgstr "アドレスを %s に設定する\n"
 
-#: src/readelf.c:6296
+#: src/readelf.c:6703
 #, 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:6309
+#: src/readelf.c:6716
 #, fuzzy, c-format
 msgid " set discriminator to %u\n"
 msgstr "カラムを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:6314
+#: src/readelf.c:6721
 #, fuzzy
 msgid " unknown opcode"
 msgstr "不明な命令コード"
 
-#: src/readelf.c:6326
+#: src/readelf.c:6733
 msgid " copy"
 msgstr "複写"
 
-#: src/readelf.c:6337
+#: src/readelf.c:6744
 #, fuzzy, c-format
 msgid " advance address by %u to %s, op_index to %u\n"
 msgstr "アドレスを %u だけ進めて %s にする\n"
 
-#: src/readelf.c:6341
+#: src/readelf.c:6748
 #, fuzzy, c-format
 msgid " advance address by %u to %s\n"
 msgstr "アドレスを %u だけ進めて %s にする\n"
 
-#: src/readelf.c:6352
+#: src/readelf.c:6759
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr "行を定数 %d だけ進めて %<PRId64> にする\n"
 
-#: src/readelf.c:6360
+#: src/readelf.c:6767
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:6370
+#: src/readelf.c:6777
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr "カラムを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:6377
+#: src/readelf.c:6784
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " '%s' を %<PRIuFAST8> に設定する\n"
 
-#: src/readelf.c:6383
+#: src/readelf.c:6790
 msgid " set basic block flag"
 msgstr "基本ブロックフラグを設定する"
 
-#: src/readelf.c:6392
+#: src/readelf.c:6803
 #, fuzzy, c-format
 msgid " advance address by constant %u to %s, op_index to %u\n"
 msgstr "アドレスを定数 %u だけ済めて %s にする\n"
 
-#: src/readelf.c:6396
+#: src/readelf.c:6807
 #, fuzzy, c-format
 msgid " advance address by constant %u to %s\n"
 msgstr "アドレスを定数 %u だけ済めて %s にする\n"
 
-#: src/readelf.c:6414
+#: src/readelf.c:6825
 #, fuzzy, c-format
 msgid " advance address by fixed value %u to %s\n"
 msgstr "アドレスを固定値 %u だけ進めて %s にする\n"
 
-#: src/readelf.c:6423
+#: src/readelf.c:6834
 msgid " set prologue end flag"
 msgstr "プロローグ終了フラグを設定する"
 
-#: src/readelf.c:6428
+#: src/readelf.c:6839
 msgid " set epilogue begin flag"
 msgstr "エピローグ開始フラグを設定する"
 
-#: src/readelf.c:6437
+#: src/readelf.c:6848
 #, fuzzy, c-format
 msgid " set isa to %u\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:6446
+#: src/readelf.c:6857
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
 msgstr[0] " %<PRIu8> 個のパラメーターのある不明な命令コード:"
 
-#: src/readelf.c:6478
+#: src/readelf.c:6889
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr ".debug_loc の内容を得られません: %s"
 
-#: src/readelf.c:6548
+#: src/readelf.c:6964
 #, c-format
 msgid " [%6tx]  %s..%s"
 msgstr " [%6tx]  %s..%s"
 
-#: src/readelf.c:6550
+#: src/readelf.c:6966
 #, c-format
 msgid "           %s..%s"
 msgstr "           %s..%s"
 
-#: src/readelf.c:6557
+#: src/readelf.c:6973 src/readelf.c:7858
 #, fuzzy
 msgid "   <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:6609
+#: src/readelf.c:7025 src/readelf.c:7186
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "マクロ情報セクションのデータを得られません: %s"
 
-#: src/readelf.c:6688
+#: src/readelf.c:7104
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** 最後のセクションの終端していない文字列"
 
-#: src/readelf.c:6756
+#: src/readelf.c:7127
+#, fuzzy, c-format
+msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
+msgstr "%*s*** 最後のセクションの終端していない文字列"
+
+#: src/readelf.c:7227
+#, fuzzy, c-format
+msgid " Offset:             0x%<PRIx64>\n"
+msgstr "  所有者         大きさ\n"
+
+#: src/readelf.c:7239
+#, fuzzy, c-format
+msgid " Version:            %<PRIu16>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:7245 src/readelf.c:7968
+#, c-format
+msgid "  unknown version, cannot parse section\n"
+msgstr ""
+
+#: src/readelf.c:7252
+#, fuzzy, c-format
+msgid " Flag:               0x%<PRIx8>\n"
+msgstr "  入口点アドレス     :               %#<PRIx64>\n"
+
+#: src/readelf.c:7255
+#, fuzzy, c-format
+msgid " Offset length:      %<PRIu8>\n"
+msgstr " (オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:7263
+#, fuzzy, c-format
+msgid " .debug_line offset: 0x%<PRIx64>\n"
+msgstr " (終了オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:7276
+#, fuzzy, c-format
+msgid "  extension opcode table, %<PRIu8> items:\n"
+msgstr " %<PRIu8> 個のパラメーターのある不明な命令コード:"
+
+#: src/readelf.c:7283
+#, c-format
+msgid "    [%<PRIx8>]"
+msgstr ""
+
+#: src/readelf.c:7295
+#, fuzzy, c-format
+msgid " %<PRIu8> arguments:"
+msgstr "  [%*<PRIuFAST8>]  %hhu パラメーター\n"
+
+#: src/readelf.c:7323
+#, c-format
+msgid " no arguments."
+msgstr ""
+
+#: src/readelf.c:7560
+#, c-format
+msgid "vendor opcode not verified?"
+msgstr ""
+
+#: src/readelf.c:7588
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
@@ -5318,7 +5590,7 @@
 
 # # "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 # # " %4$*s  文字列\n" がエラーになるのは何故? 取り敢えず fuzzy扱い
-#: src/readelf.c:6796
+#: src/readelf.c:7629
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5329,12 +5601,12 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 " %4$*s  文字列\n"
 
-#: src/readelf.c:6810
+#: src/readelf.c:7643
 #, c-format
 msgid " *** error while reading strings: %s\n"
 msgstr " *** 文字列の読込み中にエラー: %s\n"
 
-#: src/readelf.c:6830
+#: src/readelf.c:7663
 #, c-format
 msgid ""
 "\n"
@@ -5343,7 +5615,7 @@
 "\n"
 "呼出しフレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:6932
+#: src/readelf.c:7765
 #, c-format
 msgid ""
 "\n"
@@ -5352,22 +5624,22 @@
 "\n"
 "例外取扱いテーブルセクション [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:6955
+#: src/readelf.c:7788
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " LPStart コード化:    %#x "
 
-#: src/readelf.c:6967
+#: src/readelf.c:7800
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr "TType コード化:       %#x "
 
-#: src/readelf.c:6981
+#: src/readelf.c:7815
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr "呼出しサイトコード化: %#x "
 
-#: src/readelf.c:6994
+#: src/readelf.c:7828
 msgid ""
 "\n"
 " Call site table:"
@@ -5375,7 +5647,7 @@
 "\n"
 " 呼出しサイトテーブル:"
 
-#: src/readelf.c:7008
+#: src/readelf.c:7842
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5388,12 +5660,12 @@
 "        離着陸場:           %#<PRIx64>\n"
 "        行動:               %u\n"
 
-#: src/readelf.c:7068
+#: src/readelf.c:7909
 #, c-format
 msgid "invalid TType encoding"
 msgstr "不当な TType コード化"
 
-#: src/readelf.c:7089
+#: src/readelf.c:7930
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5403,42 +5675,37 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:7118
+#: src/readelf.c:7959
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:7124
-#, c-format
-msgid "  unknown version, cannot parse section\n"
-msgstr ""
-
-#: src/readelf.c:7133
+#: src/readelf.c:7977
 #, fuzzy, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:7140
+#: src/readelf.c:7984
 #, fuzzy, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:7147
+#: src/readelf.c:7991
 #, fuzzy, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:7154
+#: src/readelf.c:7998
 #, fuzzy, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:7161
+#: src/readelf.c:8005
 #, fuzzy, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:7168
+#: src/readelf.c:8012
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5448,7 +5715,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:7190
+#: src/readelf.c:8034
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5458,7 +5725,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:7216
+#: src/readelf.c:8060
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5468,7 +5735,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:7243
+#: src/readelf.c:8089
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5477,17 +5744,17 @@
 "\n"
 "オフセット %#0<PRIx64> に不当なシンボルテーブル\n"
 
-#: src/readelf.c:7296
+#: src/readelf.c:8176
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "デバッグ内容記述子を得られません: %s"
 
-#: src/readelf.c:7445 src/readelf.c:8046
+#: src/readelf.c:8336 src/readelf.c:8942 src/readelf.c:9053 src/readelf.c:9111
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "コアノートデータの変換ができません: %s"
 
-#: src/readelf.c:7786
+#: src/readelf.c:8683
 #, c-format
 msgid ""
 "\n"
@@ -5496,21 +5763,21 @@
 "\n"
 "%*s... < %u 回の繰返し> ..."
 
-#: src/readelf.c:8145
+#: src/readelf.c:9190
 msgid "  Owner          Data size  Type\n"
 msgstr "  所有者         データ大きさタイプ\n"
 
-#: src/readelf.c:8163
+#: src/readelf.c:9208
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:8197
+#: src/readelf.c:9258
 #, c-format
 msgid "cannot get content of note section: %s"
 msgstr "ノートセクションの内容を得られません: %s"
 
-#: src/readelf.c:8224
+#: src/readelf.c:9285
 #, c-format
 msgid ""
 "\n"
@@ -5520,7 +5787,7 @@
 "オフセット %4$#0<PRIx64> の %3$<PRIu64> バイトのノートセクション [%1$2zu] "
 "'%2$s':\n"
 
-#: src/readelf.c:8247
+#: src/readelf.c:9308
 #, c-format
 msgid ""
 "\n"
@@ -5529,7 +5796,7 @@
 "\n"
 "オフセット %2$#0<PRIx64> の %1$<PRIu64> バイトのノートセグメント:\n"
 
-#: src/readelf.c:8293
+#: src/readelf.c:9354
 #, c-format
 msgid ""
 "\n"
@@ -5538,12 +5805,12 @@
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/readelf.c:8299 src/readelf.c:8322
+#: src/readelf.c:9360 src/readelf.c:9383
 #, c-format
 msgid "cannot get data for section [%Zu] '%s': %s"
 msgstr "セクション [%Zu] '%s' からデータが得られません: %s"
 
-#: src/readelf.c:8303
+#: src/readelf.c:9364
 #, c-format
 msgid ""
 "\n"
@@ -5553,7 +5820,7 @@
 "オフセット %4$#0<PRIx64> のセクション [%1$Zu] '%2$s' の16進ダン"
 "プ、%3$<PRIu64> バイト:\n"
 
-#: src/readelf.c:8316
+#: src/readelf.c:9377
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5562,7 +5829,7 @@
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/readelf.c:8326
+#: src/readelf.c:9387
 #, c-format
 msgid ""
 "\n"
@@ -5572,7 +5839,7 @@
 "オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' には %3$<PRIu64> バ"
 "イトあります:\n"
 
-#: src/readelf.c:8374
+#: src/readelf.c:9435
 #, c-format
 msgid ""
 "\n"
@@ -5581,7 +5848,7 @@
 "\n"
 "セクション [%lu] がありません"
 
-#: src/readelf.c:8403
+#: src/readelf.c:9464
 #, c-format
 msgid ""
 "\n"
@@ -5590,12 +5857,12 @@
 "\n"
 "セクション '%s' がありません"
 
-#: src/readelf.c:8460
+#: src/readelf.c:9521
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "アーカイブのシンボル索引 '%s' を得られません: %s"
 
-#: src/readelf.c:8463
+#: src/readelf.c:9524
 #, c-format
 msgid ""
 "\n"
@@ -5604,7 +5871,7 @@
 "\n"
 "アーカイブ '%s' にはシンボル索引がありません\n"
 
-#: src/readelf.c:8467
+#: src/readelf.c:9528
 #, c-format
 msgid ""
 "\n"
@@ -5613,17 +5880,17 @@
 "\n"
 "アーカイブ '%s' の索引には %Zu 項目あります:\n"
 
-#: src/readelf.c:8485
+#: src/readelf.c:9546
 #, c-format
 msgid "cannot extract member at offset %Zu in '%s': %s"
 msgstr "'%2$s' の オフセット %1$Zu のメンバーを抽出できません: %3$s"
 
-#: src/readelf.c:8490
+#: src/readelf.c:9551
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "アーカイブメンバー '%s' には以下があります:\n"
 
-#: src/size.c:68
+#: src/size.c:60
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd' or `sysv'.  The default "
 "is `bsd'"
@@ -5631,589 +5898,622 @@
 "出力形式として FORMAT を使ってください。FORMAT は `bsd'か、`sysv' のどちらか"
 "です。省略値は `bsd'です"
 
-#: src/size.c:70
+#: src/size.c:62
 msgid "Same as `--format=sysv'"
 msgstr "`--format=sysv' と同じ"
 
-#: src/size.c:71
+#: src/size.c:63
 msgid "Same as `--format=bsd'"
 msgstr "`--format=bsd' と同じ"
 
-#: src/size.c:74
+#: src/size.c:66
 msgid "Same as `--radix=10'"
 msgstr "`--radix=10' と同じ"
 
-#: src/size.c:75
+#: src/size.c:67
 msgid "Same as `--radix=8'"
 msgstr "`--radix=8' と同じ"
 
-#: src/size.c:76
+#: src/size.c:68
 msgid "Same as `--radix=16'"
 msgstr "`--radix=16' と同じ"
 
-#: src/size.c:78
+#: src/size.c:70
 msgid "Similar to `--format=sysv' output but in one line"
 msgstr "`--format=sysv' の出力と似ていますが、1行です"
 
-#: src/size.c:82
+#: src/size.c:74
 msgid "Print size and permission flags for loadable segments"
 msgstr "ロード可能セグメントのための印刷の大きさと許可フラグ"
 
-#: src/size.c:83
+#: src/size.c:75
 msgid "Display the total sizes (bsd only)"
 msgstr "合計の大きさを表示 (bsd のみ)"
 
-#: src/size.c:88
+#: src/size.c:80
 msgid "List section sizes of FILEs (a.out by default)."
 msgstr "ふぁいる のセクションの大きさの一覧 (省略値は a.out)"
 
-#: src/size.c:269
+#: src/size.c:261
 #, c-format
 msgid "Invalid format: %s"
 msgstr "不当な形式: %s"
 
-#: src/size.c:280
+#: src/size.c:272
 #, c-format
 msgid "Invalid radix: %s"
 msgstr "不当な基数: %s"
 
-#: src/size.c:339
+#: src/size.c:331
 #, c-format
 msgid "%s: file format not recognized"
 msgstr "%s: ファイル形式を認識できません"
 
-#: src/size.c:446 src/size.c:589
+#: src/size.c:437 src/size.c:570
 #, c-format
 msgid " (ex %s)"
 msgstr " (ex %s)"
 
-#: src/size.c:614
+#: src/size.c:595
 msgid "(TOTALS)\n"
 msgstr "(合計)\n"
 
-#: src/strings.c:70
+#: src/strings.c:62
 msgid "Output Selection:"
 msgstr ""
 
-#: src/strings.c:71
+#: src/strings.c:63
 msgid "Scan entire file, not only loaded sections"
 msgstr ""
 
-#: src/strings.c:73
+#: src/strings.c:65
 msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 msgstr ""
 
-#: src/strings.c:74
+#: src/strings.c:66
 msgid ""
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
 msgstr ""
 
-#: src/strings.c:78
+#: src/strings.c:70
 msgid "Print name of the file before each string."
 msgstr ""
 
-#: src/strings.c:80
+#: src/strings.c:72
 msgid "Print location of the string in base 8, 10, or 16 respectively."
 msgstr ""
 
-#: src/strings.c:81
+#: src/strings.c:73
 msgid "Alias for --radix=o"
 msgstr ""
 
-#: src/strings.c:88
+#: src/strings.c:80
 msgid "Print the strings of printable characters in files."
 msgstr ""
 
-#: src/strings.c:268 src/strings.c:303
+#: src/strings.c:267 src/strings.c:302
 #, c-format
 msgid "invalid value '%s' for %s parameter"
 msgstr ""
 
-#: src/strings.c:314
+#: src/strings.c:313
 #, c-format
 msgid "invalid minimum length of matched string size"
 msgstr ""
 
-#: src/strings.c:599
+#: src/strings.c:596
 #, c-format
 msgid "lseek64 failed"
 msgstr ""
 
-#: src/strings.c:616 src/strings.c:680
+#: src/strings.c:613 src/strings.c:677
 #, c-format
 msgid "re-mmap failed"
 msgstr ""
 
-#: src/strings.c:653
+#: src/strings.c:650
 #, c-format
 msgid "mprotect failed"
 msgstr ""
 
-#: src/strip.c:77
+#: src/strip.c:69
 msgid "Place stripped output into FILE"
 msgstr "はぎ取った出力を ふぁいる に置く"
 
-#: src/strip.c:78
+#: src/strip.c:70
 msgid "Extract the removed sections into FILE"
 msgstr "抽出した取り除いたセクションを ふぁいる に置く"
 
-#: src/strip.c:79
+#: src/strip.c:71
 msgid "Embed name FILE instead of -f argument"
 msgstr "-f パラメーターの代わりに 名前 ふぁいる を有効にする"
 
-#: src/strip.c:83
+#: src/strip.c:75
 msgid "Remove all debugging symbols"
 msgstr "デバッグ用のシンボルを全て取り除く"
 
-#: src/strip.c:87
+#: src/strip.c:79
 msgid "Remove section headers (not recommended)"
 msgstr ""
 
-#: src/strip.c:89
+#: src/strip.c:81
 msgid "Copy modified/access timestamps to the output"
 msgstr "修正/アクセスタイムスタンプを出力へ複写する"
 
-#: src/strip.c:91
+#: src/strip.c:83
 msgid ""
 "Resolve all trivial relocations between debug sections if the removed "
 "sections are placed in a debug file (only relevant for ET_REL files, "
 "operation is not reversable, needs -f)"
 msgstr ""
 
-#: src/strip.c:93
+#: src/strip.c:85
 msgid "Remove .comment section"
 msgstr ".comment セクションを取り除く"
 
-#: src/strip.c:96
+#: src/strip.c:88
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr "少し壊れた ELF ファイルを取り扱うためにルールを少し緩和する"
 
-#: src/strip.c:101
+#: src/strip.c:93
 msgid "Discard symbols from object files."
 msgstr "オブジェクトファイルからシンボルを破棄する"
 
-#: src/strip.c:189
+#: src/strip.c:181
 #, c-format
 msgid "--reloc-debug-sections used without -f"
 msgstr ""
 
-#: src/strip.c:203
+#: src/strip.c:195
 #, c-format
 msgid "Only one input file allowed together with '-o' and '-f'"
 msgstr "'-o' と '-f' と一緒の場合は入力ファイルは 1 つしか認められません"
 
-#: src/strip.c:239
+#: src/strip.c:231
 #, c-format
 msgid "-f option specified twice"
 msgstr "-f オプションが 2 回指定されています"
 
-#: src/strip.c:248
+#: src/strip.c:240
 #, c-format
 msgid "-F option specified twice"
 msgstr "-F オプションが 2 回指定されています"
 
-#: src/strip.c:257 src/unstrip.c:125
+#: src/strip.c:249 src/unstrip.c:121
 #, c-format
 msgid "-o option specified twice"
 msgstr "-o オプションが 2 回指定されています"
 
-#: src/strip.c:281
+#: src/strip.c:273
 #, c-format
 msgid "-R option supports only .comment section"
 msgstr "-R オプションは .comment セクションのみをサポートします"
 
-#: src/strip.c:323 src/strip.c:347
+#: src/strip.c:315 src/strip.c:339
 #, c-format
 msgid "cannot stat input file '%s'"
 msgstr "入力ファイル '%s' を stat できません"
 
-#: src/strip.c:337
+#: src/strip.c:329
 #, c-format
 msgid "while opening '%s'"
 msgstr "'%s' を開いている間"
 
-#: src/strip.c:375
+#: src/strip.c:367
 #, c-format
 msgid "%s: cannot use -o or -f when stripping archive"
 msgstr "%s: アーカイブから抜き出している時は -o や -f は使えません"
 
-#: src/strip.c:475
+#: src/strip.c:468
 #, c-format
 msgid "cannot open EBL backend"
 msgstr "EBL バックエンドを開けません"
 
-#: src/strip.c:525 src/strip.c:549
+#: src/strip.c:508
+#, fuzzy, c-format
+msgid "cannot get number of phdrs"
+msgstr "セクション数を決定できません: %s"
+
+#: src/strip.c:523 src/strip.c:547
 #, c-format
 msgid "cannot create new file '%s': %s"
 msgstr "新しいファイル '%s' を生成できません: %s"
 
-#: src/strip.c:609
+#: src/strip.c:613
 #, c-format
 msgid "illformed file '%s'"
 msgstr "不適格なファイル '%s'"
 
-#: src/strip.c:913 src/strip.c:1002
+#: src/strip.c:935 src/strip.c:1024
 #, c-format
 msgid "while generating output file: %s"
 msgstr "出力ファイルを生成している間: %s"
 
-#: src/strip.c:975 src/strip.c:1937
+#: src/strip.c:997 src/strip.c:1962
 #, c-format
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: ELF ヘッダーを生成している間にエラー: %s"
 
-#: src/strip.c:989
+#: src/strip.c:1011
 #, c-format
 msgid "while preparing output for '%s'"
 msgstr "'%s' のための出力を準備している間"
 
-#: src/strip.c:1040 src/strip.c:1096
+#: src/strip.c:1062 src/strip.c:1119
 #, c-format
 msgid "while create section header section: %s"
 msgstr "セクションヘッダーセクションを生成している間: %s"
 
-#: src/strip.c:1046
+#: src/strip.c:1068
 #, c-format
 msgid "cannot allocate section data: %s"
 msgstr "セクションデータを割り当てられません: %s"
 
-#: src/strip.c:1105
+#: src/strip.c:1128
 #, c-format
 msgid "while create section header string table: %s"
 msgstr "セクションヘッダー文字列テーブルを生成中: %s"
 
-#: src/strip.c:1732
+#: src/strip.c:1757
 #, fuzzy, c-format
 msgid "bad relocation"
 msgstr "リロケーションを表示"
 
-#: src/strip.c:1849 src/strip.c:1959
+#: src/strip.c:1874 src/strip.c:1984
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "'%s' を書込み中: %s"
 
-#: src/strip.c:1860
+#: src/strip.c:1885
 #, c-format
 msgid "while creating '%s'"
 msgstr "'%s' を生成中"
 
-#: src/strip.c:1882
+#: src/strip.c:1907
 #, c-format
 msgid "while computing checksum for debug information"
 msgstr "デバッグ情報のチェックサムを計算中"
 
-#: src/strip.c:1945
+#: src/strip.c:1970
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: ファイルを読込み中にエラー: %s"
 
-#: src/strip.c:1984 src/strip.c:2004
+#: src/strip.c:2009 src/strip.c:2029
 #, fuzzy, c-format
 msgid "while writing '%s'"
 msgstr "'%s' を書込み中: %s"
 
-#: src/strip.c:2038 src/strip.c:2045
+#: src/strip.c:2066 src/strip.c:2073
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "'%s' の終了中にエラー: %s"
 
-#: src/strip.c:2068 src/strip.c:2125
+#: src/strip.c:2096 src/strip.c:2153
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "'%s' のアクセスと変更日付を設定できません"
 
-#: src/unstrip.c:78
+#: src/unstrip.c:70
 msgid "Match MODULE against file names, not module names"
 msgstr ""
 
-#: src/unstrip.c:79
+#: src/unstrip.c:71
 msgid "Silently skip unfindable files"
 msgstr ""
 
-#: src/unstrip.c:82
+#: src/unstrip.c:74
 msgid "Place output into FILE"
 msgstr ""
 
-#: src/unstrip.c:84
+#: src/unstrip.c:76
 msgid "Create multiple output files under DIRECTORY"
 msgstr ""
 
-#: src/unstrip.c:85
+#: src/unstrip.c:77
 msgid "Use module rather than file names"
 msgstr ""
 
-#: src/unstrip.c:87
+#: src/unstrip.c:79
 msgid "Create output for modules that have no separate debug information"
 msgstr ""
 
-#: src/unstrip.c:90
+#: src/unstrip.c:82
 msgid "Apply relocations to section contents in ET_REL files"
 msgstr ""
 
-#: src/unstrip.c:92
+#: src/unstrip.c:84
 msgid "Only list module and file names, build IDs"
 msgstr ""
 
-#: src/unstrip.c:134
+#: 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:166
+#: src/unstrip.c:165
 #, c-format
 msgid "only one of -o or -d allowed"
 msgstr ""
 
-#: src/unstrip.c:175
+#: src/unstrip.c:174
 #, c-format
 msgid "-n cannot be used with explicit files or -o or -d"
 msgstr ""
 
-#: src/unstrip.c:190
+#: src/unstrip.c:189
 #, c-format
 msgid "output directory '%s'"
 msgstr ""
 
-#: src/unstrip.c:199
+#: src/unstrip.c:198
 #, c-format
 msgid "exactly two file arguments are required"
 msgstr ""
 
-#: src/unstrip.c:205
+#: src/unstrip.c:204
 #, c-format
 msgid "-m, -a, -R, and -i options not allowed with explicit files"
 msgstr ""
 
-#: src/unstrip.c:218
+#: src/unstrip.c:217
 #, c-format
 msgid "-o or -d is required when using implicit files"
 msgstr ""
 
-#: src/unstrip.c:254
+#: src/unstrip.c:253
 #, c-format
 msgid "cannot create ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:259
+#: src/unstrip.c:258
 #, c-format
 msgid "cannot copy ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:264 src/unstrip.c:1828
+#: src/unstrip.c:262 src/unstrip.c:1832 src/unstrip.c:1876
+#, fuzzy, c-format
+msgid "cannot get number of program headers: %s"
+msgstr "セクション数を決定できません: %s"
+
+#: src/unstrip.c:267 src/unstrip.c:1836
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr ""
 
-#: src/unstrip.c:270
+#: src/unstrip.c:273
 #, c-format
 msgid "cannot copy program header: %s"
 msgstr ""
 
-#: src/unstrip.c:280
+#: src/unstrip.c:283
 #, c-format
 msgid "cannot copy section header: %s"
 msgstr ""
 
-#: src/unstrip.c:283 src/unstrip.c:1509
+#: src/unstrip.c:286 src/unstrip.c:1513
 #, c-format
 msgid "cannot get section data: %s"
 msgstr ""
 
-#: src/unstrip.c:285 src/unstrip.c:1511
+#: src/unstrip.c:288 src/unstrip.c:1515
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr ""
 
-#: src/unstrip.c:309
+#: src/unstrip.c:312
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr ""
 
-#: src/unstrip.c:349 src/unstrip.c:766 src/unstrip.c:1543
+#: src/unstrip.c:352 src/unstrip.c:769 src/unstrip.c:1547
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr ""
 
-#: src/unstrip.c:365 src/unstrip.c:583 src/unstrip.c:604 src/unstrip.c:616
-#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
+#: src/unstrip.c:368 src/unstrip.c:586 src/unstrip.c:607 src/unstrip.c:619
+#: src/unstrip.c:1568 src/unstrip.c:1698 src/unstrip.c:1722
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr ""
 
-#: src/unstrip.c:375
+#: src/unstrip.c:378
 #, c-format
 msgid "cannot update section header: %s"
 msgstr ""
 
-#: src/unstrip.c:414 src/unstrip.c:425
+#: src/unstrip.c:417 src/unstrip.c:428
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr ""
 
-#: src/unstrip.c:512
+#: src/unstrip.c:515
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr ""
 
-#: src/unstrip.c:524
+#: src/unstrip.c:527
 #, c-format
 msgid "unexpected section type in [%Zu] with sh_link to symtab"
 msgstr ""
 
-#: src/unstrip.c:772
+#: src/unstrip.c:775
 #, c-format
 msgid "invalid string offset in symbol [%Zu]"
 msgstr ""
 
-#: src/unstrip.c:914 src/unstrip.c:1254
+#: src/unstrip.c:917 src/unstrip.c:1258
 #, c-format
 msgid "cannot read section [%Zu] name: %s"
 msgstr ""
 
-#: src/unstrip.c:955 src/unstrip.c:974 src/unstrip.c:1007
+#: src/unstrip.c:958 src/unstrip.c:977 src/unstrip.c:1010
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr ""
 
-#: src/unstrip.c:995
+#: src/unstrip.c:998
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr ""
 
-#: src/unstrip.c:1050 src/unstrip.c:1374
+#: src/unstrip.c:1053 src/unstrip.c:1378
 #, c-format
 msgid "cannot find matching section for [%Zu] '%s'"
 msgstr ""
 
-#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
+#: src/unstrip.c:1178 src/unstrip.c:1193 src/unstrip.c:1459
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1198
+#: src/unstrip.c:1202
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr ""
 
-#: src/unstrip.c:1225 src/unstrip.c:1229
+#: src/unstrip.c:1229 src/unstrip.c:1233
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr ""
 
-#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
+#: src/unstrip.c:1237 src/unstrip.c:1241 src/unstrip.c:1474
 #, c-format
 msgid "cannot get section count: %s"
 msgstr ""
 
-#: src/unstrip.c:1240
+#: src/unstrip.c:1244
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 
-#: src/unstrip.c:1299 src/unstrip.c:1389
+#: src/unstrip.c:1303 src/unstrip.c:1393
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1449
+#: src/unstrip.c:1453
 #, c-format
 msgid "cannot add new section: %s"
 msgstr ""
 
-#: src/unstrip.c:1551
+#: src/unstrip.c:1555
 #, c-format
 msgid "symbol [%Zu] has invalid section index"
 msgstr ""
 
-#: src/unstrip.c:1789
+#: src/unstrip.c:1793
 #, fuzzy, c-format
 msgid "cannot read section data: %s"
 msgstr "セクションデータを割り当てられません: %s"
 
-#: src/unstrip.c:1810
+#: src/unstrip.c:1814
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:1838
+#: src/unstrip.c:1846
 #, c-format
 msgid "cannot update program header: %s"
 msgstr ""
 
-#: src/unstrip.c:1843 src/unstrip.c:1922
+#: src/unstrip.c:1851 src/unstrip.c:1934
 #, c-format
 msgid "cannot write output file: %s"
 msgstr ""
 
-#: src/unstrip.c:1891
+#: src/unstrip.c:1903
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:1894
+#: src/unstrip.c:1906
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:1913 src/unstrip.c:1953 src/unstrip.c:1965 src/unstrip.c:2045
+#: src/unstrip.c:1925 src/unstrip.c:1976 src/unstrip.c:1988 src/unstrip.c:2074
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr ""
 
-#: src/unstrip.c:1971
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
+#: src/unstrip.c:1967
+msgid "WARNING: "
 msgstr ""
 
-#: src/unstrip.c:2002
+#: src/unstrip.c:1969
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1992
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1995
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1998
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:2001
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2031
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2006
+#: src/unstrip.c:2035
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2021
+#: src/unstrip.c:2050
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2025
+#: src/unstrip.c:2054
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2038
+#: src/unstrip.c:2067
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr ""
 
-#: src/unstrip.c:2069
+#: src/unstrip.c:2098
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2202
+#: src/unstrip.c:2231
 #, c-format
 msgid "no matching modules found"
 msgstr ""
 
-#: src/unstrip.c:2211
+#: src/unstrip.c:2240
 #, c-format
 msgid "matched more than one module"
 msgstr ""
 
-#: src/unstrip.c:2258
+#: src/unstrip.c:2287
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 msgstr ""
 
-#: src/unstrip.c:2259
+#: src/unstrip.c:2288
 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"
@@ -6240,6 +6540,30 @@
 "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"
+
+#~ msgid "unknown user tag %hx"
+#~ msgstr "不明な利用者タグ %hx"
+
+#~ msgid "unknown attribute %hx"
+#~ msgstr "不明な属性 %hx"
+
+#~ msgid "unknown user attribute %hx"
+#~ msgstr "不明な利用者属性 %hx"
+
+#, fuzzy
+#~ msgid "unknown form %#<PRIx64>"
+#~ msgstr "不明な様式 %<PRIx64>"
+
 #~ msgid ""
 #~ "\n"
 #~ "\n"
diff --git a/src/po/pl.gmo b/src/po/pl.gmo
index 5ffb8f7..82b5abe 100644
--- a/src/po/pl.gmo
+++ b/src/po/pl.gmo
Binary files differ
diff --git a/src/po/pl.po b/src/po/pl.po
index 82a6228..9e6c6ed 100644
--- a/src/po/pl.po
+++ b/src/po/pl.po
@@ -1,13 +1,13 @@
 # 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-02-16 13:21+0100\n"
-"PO-Revision-Date: 2011-02-13 16:25+0100\n"
+"POT-Creation-Date: 2014-12-19 21:45+0100\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"
@@ -17,210 +17,219 @@
 "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:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2844
-#: src/readelf.c:3183 src/unstrip.c:2098 src/unstrip.c:2306
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3182
+#: src/readelf.c:3559 src/readelf.c:8285 src/unstrip.c:2127 src/unstrip.c:2335
 #, c-format
 msgid "memory exhausted"
 msgstr "pamięć wyczerpana"
 
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
+#: 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:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
+#: 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"
 
-#: libasm/asm_error.c:64 src/ldgeneric.c:2685
+#: libasm/asm_error.c:67 src/ldgeneric.c:2677
 #, c-format
 msgid "cannot create output file"
 msgstr "nie można utworzyć pliku wyjściowego"
 
-#: libasm/asm_error.c:65
+#: libasm/asm_error.c:68
 msgid "invalid parameter"
 msgstr "nieprawidłowy parametr"
 
-#: libasm/asm_error.c:66
+#: libasm/asm_error.c:69
 msgid "cannot change mode of output file"
 msgstr "nie można zmienić trybu pliku wyjściowego"
 
-#: libasm/asm_error.c:67 src/ldgeneric.c:6998
+#: libasm/asm_error.c:70 src/ldgeneric.c:6990
 #, c-format
 msgid "cannot rename output file"
 msgstr "nie można zmienić nazwy pliku wyjściowego"
 
-#: libasm/asm_error.c:68
+#: libasm/asm_error.c:71
 msgid "duplicate symbol"
 msgstr "powtórzony symbol"
 
-#: libasm/asm_error.c:69
+#: libasm/asm_error.c:72
 msgid "invalid section type for operation"
 msgstr "nieprawidłowy typ sekcji dla działania"
 
-#: libasm/asm_error.c:70
+#: libasm/asm_error.c:73
 msgid "error during output of data"
 msgstr "błąd podczas wyprowadzania danych"
 
-#: libasm/asm_error.c:71
+#: libasm/asm_error.c:74
 msgid "no backend support available"
 msgstr "brak dostępnej obsługi zaplecza"
 
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
+#: 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"
 
-#: libdw/dwarf_error.c:81
+#: libdw/dwarf_error.c:60
 msgid "invalid access"
 msgstr "nieprawidłowy dostęp"
 
-#: libdw/dwarf_error.c:82
+#: libdw/dwarf_error.c:61
 msgid "no regular file"
 msgstr "nie jest zwykłym plikiem"
 
-#: libdw/dwarf_error.c:83
+#: libdw/dwarf_error.c:62
 msgid "I/O error"
 msgstr "błąd wejścia/wyjścia"
 
-#: libdw/dwarf_error.c:84
+#: libdw/dwarf_error.c:63
 msgid "invalid ELF file"
 msgstr "nieprawidłowy plik ELF"
 
-#: libdw/dwarf_error.c:85
+#: libdw/dwarf_error.c:64
 msgid "no DWARF information"
 msgstr "brak informacji DWARF"
 
-#: libdw/dwarf_error.c:86
+#: libdw/dwarf_error.c:65
 msgid "no ELF file"
 msgstr "brak pliku ELF"
 
-#: libdw/dwarf_error.c:87
+#: libdw/dwarf_error.c:66
 msgid "cannot get ELF header"
 msgstr "nie można uzyskać nagłówka ELF"
 
-#: libdw/dwarf_error.c:89
+#: libdw/dwarf_error.c:68
 msgid "not implemented"
 msgstr "niezaimplementowane"
 
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
+#: libdw/dwarf_error.c:69 libelf/elf_error.c:107 libelf/elf_error.c:155
 msgid "invalid command"
 msgstr "nieprawidłowe polecenie"
 
-#: libdw/dwarf_error.c:91
+#: libdw/dwarf_error.c:70
 msgid "invalid version"
 msgstr "nieprawidłowa wersja"
 
-#: libdw/dwarf_error.c:92
+#: libdw/dwarf_error.c:71
 msgid "invalid file"
 msgstr "nieprawidłowy plik"
 
-#: libdw/dwarf_error.c:93
+#: libdw/dwarf_error.c:72
 msgid "no entries found"
 msgstr "nie odnaleziono wpisów"
 
-#: libdw/dwarf_error.c:94
+#: libdw/dwarf_error.c:73
 msgid "invalid DWARF"
 msgstr "nieprawidłowy DWARF"
 
-#: libdw/dwarf_error.c:95
+#: libdw/dwarf_error.c:74
 msgid "no string data"
 msgstr "brak danych w postaci ciągu"
 
-#: libdw/dwarf_error.c:96
+#: libdw/dwarf_error.c:75
 msgid "no address value"
 msgstr "brak wartości adresu"
 
-#: libdw/dwarf_error.c:97
+#: libdw/dwarf_error.c:76
 msgid "no constant value"
 msgstr "brak wartości stałej"
 
-#: libdw/dwarf_error.c:98
+#: libdw/dwarf_error.c:77
 msgid "no reference value"
 msgstr "brak wartości odwołania"
 
-#: libdw/dwarf_error.c:99
+#: libdw/dwarf_error.c:78
 msgid "invalid reference value"
 msgstr "nieprawidłowa wartość odwołania"
 
-#: libdw/dwarf_error.c:100
+#: libdw/dwarf_error.c:79
 msgid ".debug_line section missing"
 msgstr "brak sekcji .debug_line"
 
-#: libdw/dwarf_error.c:101
+#: libdw/dwarf_error.c:80
 msgid "invalid .debug_line section"
 msgstr "nieprawidłowa sekcja .debug_line"
 
-#: libdw/dwarf_error.c:102
+#: libdw/dwarf_error.c:81
 msgid "debug information too big"
 msgstr "informacje debugowania są za duże"
 
-#: libdw/dwarf_error.c:103
+#: libdw/dwarf_error.c:82
 msgid "invalid DWARF version"
 msgstr "nieprawidłowa wersja DWARF"
 
-#: libdw/dwarf_error.c:104
+#: libdw/dwarf_error.c:83
 msgid "invalid directory index"
 msgstr "nieprawidłowy indeks katalogu"
 
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
 msgid "address out of range"
 msgstr "adres jest spoza zakresu"
 
-#: libdw/dwarf_error.c:106
+#: libdw/dwarf_error.c:85
 msgid "no location list value"
 msgstr "brak wartości listy położeń"
 
-#: libdw/dwarf_error.c:107
+#: libdw/dwarf_error.c:86
 msgid "no block data"
 msgstr "brak danych blokowych"
 
-#: libdw/dwarf_error.c:108
+#: libdw/dwarf_error.c:87
 msgid "invalid line index"
 msgstr "nieprawidłowy indeks wiersza"
 
-#: libdw/dwarf_error.c:109
+#: libdw/dwarf_error.c:88
 msgid "invalid address range index"
 msgstr "nieprawidłowy indeks zakresu adresów"
 
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
+#: 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:111
+#: libdw/dwarf_error.c:90
 msgid "no flag value"
 msgstr "brak wartości flagi"
 
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
+#: libdw/dwarf_error.c:91 libelf/elf_error.c:232
 msgid "invalid offset"
 msgstr "nieprawidłowy offset"
 
-#: libdw/dwarf_error.c:113
+#: libdw/dwarf_error.c:92
 msgid ".debug_ranges section missing"
 msgstr "brak sekcji .debug_ranges"
 
-#: libdw/dwarf_error.c:114
+#: libdw/dwarf_error.c:93
 msgid "invalid CFI section"
 msgstr "nieprawidłowa wersja CFI"
 
-#: libdwfl/argp-std.c:67 src/unstrip.c:2248
+#: libdw/dwarf_error.c:94
+msgid "no alternative debug link found"
+msgstr "nie odnaleziono alternatywnego dowiązania debugowania"
+
+#: libdw/dwarf_error.c:95
+#, fuzzy
+msgid "invalid opcode"
+msgstr "nieprawidłowy operand"
+
+#: libdwfl/argp-std.c:46 src/unstrip.c:2277
 msgid "Input selection options:"
 msgstr "Opcje wyboru wejścia:"
 
-#: libdwfl/argp-std.c:68
+#: libdwfl/argp-std.c:47
 msgid "Find addresses in FILE"
 msgstr "Wyszukuje adresy w PLIKU"
 
-#: libdwfl/argp-std.c:70
+#: libdwfl/argp-std.c:49
 msgid "Find addresses from signatures found in COREFILE"
 msgstr "Wyszukuje adresy z podpisów odnalezionych w PLIKU_CORE"
 
-#: libdwfl/argp-std.c:72
+#: libdwfl/argp-std.c:51
 msgid "Find addresses in files mapped into process PID"
 msgstr "Wyszukuje adresy w plikach zmapowanych do PID procesów"
 
-#: libdwfl/argp-std.c:74
+#: libdwfl/argp-std.c:53
 msgid ""
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
@@ -228,413 +237,484 @@
 "Wyszukuje adresy w plikach zmapowanych jako odczyt z PLIKU w formacie /proc/"
 "PID/maps systemu Linux"
 
-#: libdwfl/argp-std.c:76
+#: libdwfl/argp-std.c:55
 msgid "Find addresses in the running kernel"
 msgstr "Wyszukuje adresy w uruchomionych jądrze"
 
-#: libdwfl/argp-std.c:78
+#: libdwfl/argp-std.c:57
 msgid "Kernel with all modules"
 msgstr "Jądro ze wszystkimi modułami"
 
-#: libdwfl/argp-std.c:80
+#: libdwfl/argp-std.c:59
 msgid "Search path for separate debuginfo files"
 msgstr "Wyszukuje ścieżkę dla oddzielnych plików debuginfo"
 
-#: libdwfl/argp-std.c:163
+#: 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:223
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
+msgstr "nie można wczytać symboli jądra"
+
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
+msgstr "nie można odnaleźć modułów jądra"
+
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
+msgstr "nie można odnaleźć jądra lub modułów"
+
+#: 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:241
+#: libdwfl/argp-std.c:311
 msgid "No modules recognized in core file"
 msgstr "Nie rozpoznano żadnych modułów w pliku core"
 
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr "nie można wczytać symboli jądra"
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr "nie można odnaleźć modułów jądra"
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr "nie można odnaleźć jądra lub modułów"
-
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:56
 msgid "See errno"
 msgstr "Proszę zobaczyć errno"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:57
 msgid "See elf_errno"
 msgstr "Proszę zobaczyć elf_errno"
 
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:58
 msgid "See dwarf_errno"
 msgstr "Proszę zobaczyć dwarf_errno"
 
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:59
 msgid "See ebl_errno (XXX missing)"
 msgstr "Proszę zobaczyć ebl_errno (brak XXX)"
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:60
 msgid "gzip decompression failed"
 msgstr "dekompresja gzip nie powiodła się"
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:61
 msgid "bzip2 decompression failed"
 msgstr "dekompresja bzip2 nie powiodła się"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:62
 msgid "LZMA decompression failed"
 msgstr "dekompresja LZMA nie powiodła się"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:63
 msgid "no support library found for machine"
 msgstr "nie odnaleziono biblioteki obsługi dla komputera"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:64
 msgid "Callbacks missing for ET_REL file"
 msgstr "Brak wywołań zwrotnych dla pliku ET_REL"
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:65
 msgid "Unsupported relocation type"
 msgstr "Nieobsługiwany typ relokacji"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:66
 msgid "r_offset is bogus"
 msgstr "r_offset jest fałszywe"
 
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
+#: 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:85
+#: libdwfl/libdwflP.h:68
 msgid "relocation refers to undefined symbol"
 msgstr "relokacja odnosi się do nieokreślonego symbolu"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:69
 msgid "Callback returned failure"
 msgstr "Wywołanie zwrotne zwróciło niepowodzenie"
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:70
 msgid "No DWARF information found"
 msgstr "Nie odnaleziono informacji DWARF"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:71
 msgid "No symbol table found"
 msgstr "Nie odnaleziono tabeli symboli"
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:72
 msgid "No ELF program headers"
 msgstr "Brak nagłówków programu ELF"
 
-#: libdwfl/libdwflP.h:90
+#: 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:93
+#: libdwfl/libdwflP.h:76
 msgid "image truncated"
 msgstr "skrócono obraz"
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:77
 msgid "ELF file opened"
 msgstr "otwarto plik ELF"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:78
 msgid "not a valid ELF file"
 msgstr "nie jest prawidłowym plikiem ELF"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:79
 msgid "cannot handle DWARF type description"
 msgstr "nie można obsłużyć opisu typu DWARF"
 
-#: libdwfl/libdwflP.h:97
+#: libdwfl/libdwflP.h:80
 msgid "ELF file does not match build ID"
 msgstr "plik ELF nie posiada pasującego identyfikatora kopii"
 
-#: libdwfl/libdwflP.h:98
+#: libdwfl/libdwflP.h:81
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "uszkodzone dane sekcji .gnu.prelink_undo"
 
-#: libebl/eblbackendname.c:63
+#: 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:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:94 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
+#: 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 "<unknown>"
 msgstr "<nieznany>"
 
-#: libebl/ebldynamictagname.c:126
+#: libebl/ebldynamictagname.c:105
 #, c-format
 msgid "<unknown>: %#<PRIx64>"
 msgstr "<nieznany>: %#<PRIx64>"
 
-#: libebl/eblobjnote.c:76
-#, fuzzy, c-format
+#: libebl/eblobjnote.c:55
+#, c-format
 msgid "unknown SDT version %u\n"
-msgstr "nieznana wersja"
+msgstr "nieznana wersja SDT %u\n"
 
-#: libebl/eblobjnote.c:94
-#, fuzzy, c-format
+#: libebl/eblobjnote.c:73
+#, c-format
 msgid "invalid SDT probe descriptor\n"
-msgstr "nieprawidłowy deskryptor pliku"
+msgstr "nieprawidłowy deskryptor sondy SDT\n"
 
-#: libebl/eblobjnote.c:144
+#: libebl/eblobjnote.c:123
 #, c-format
 msgid "    PC: "
-msgstr ""
+msgstr "    PC: "
 
-#: libebl/eblobjnote.c:146
+#: libebl/eblobjnote.c:125
 #, c-format
 msgid " Base: "
-msgstr ""
+msgstr " Podstawa: "
 
-#: libebl/eblobjnote.c:148
+#: libebl/eblobjnote.c:127
 #, c-format
 msgid " Semaphore: "
-msgstr ""
+msgstr " Semafor: "
 
-#: libebl/eblobjnote.c:150
+#: libebl/eblobjnote.c:129
 #, c-format
 msgid "    Provider: "
-msgstr ""
+msgstr "    Dostawca: "
 
-#: libebl/eblobjnote.c:152
+#: libebl/eblobjnote.c:131
 #, c-format
 msgid " Name: "
-msgstr ""
+msgstr " Nazwa: "
 
-#: libebl/eblobjnote.c:154
+#: libebl/eblobjnote.c:133
 #, c-format
 msgid " Args: "
-msgstr ""
+msgstr " Parametry: "
 
-#: libebl/eblobjnote.c:164
+#: libebl/eblobjnote.c:143
 #, c-format
 msgid "    Build ID: "
 msgstr "    Identyfikator kopii: "
 
-#: libebl/eblobjnote.c:175
+#: libebl/eblobjnote.c:154
 #, c-format
 msgid "    Linker version: %.*s\n"
 msgstr "    Wersja konsolidatora: %.*s\n"
 
-#: libebl/eblobjnote.c:224
+#: libebl/eblobjnote.c:203
 #, c-format
 msgid "    OS: %s, ABI: "
 msgstr "    System operacyjny: %s, ABI: "
 
-#: libebl/eblosabiname.c:95
+#: libebl/eblosabiname.c:74
 msgid "Stand alone"
 msgstr "Samodzielny"
 
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
+#: libebl/eblsymbolbindingname.c:71 libebl/eblsymboltypename.c:77
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<nieznany>: %d"
 
-#: libelf/elf_error.c:88
+#: libelf/elf_error.c:67
 msgid "unknown version"
 msgstr "nieznana wersja"
 
-#: libelf/elf_error.c:92
+#: libelf/elf_error.c:71
 msgid "unknown type"
 msgstr "nieznany typ"
 
-#: libelf/elf_error.c:96
+#: libelf/elf_error.c:75
 msgid "invalid `Elf' handle"
 msgstr "nieprawidłowa obsługa \"Elf\""
 
-#: libelf/elf_error.c:100
+#: libelf/elf_error.c:79
 msgid "invalid size of source operand"
 msgstr "nieprawidłowy rozmiar operanda źródłowego"
 
-#: libelf/elf_error.c:104
+#: libelf/elf_error.c:83
 msgid "invalid size of destination operand"
 msgstr "nieprawidłowy rozmiar operanda docelowego"
 
-#: libelf/elf_error.c:108 src/readelf.c:5176
+#: libelf/elf_error.c:87 src/readelf.c:5367
 #, c-format
 msgid "invalid encoding"
 msgstr "nieprawidłowe kodowanie"
 
-#: libelf/elf_error.c:116
+#: libelf/elf_error.c:95
 msgid "invalid file descriptor"
 msgstr "nieprawidłowy deskryptor pliku"
 
-#: libelf/elf_error.c:120
+#: libelf/elf_error.c:99
 msgid "invalid operation"
 msgstr "nieprawidłowe działanie"
 
-#: libelf/elf_error.c:124
+#: libelf/elf_error.c:103
 msgid "ELF version not set"
 msgstr "wersja ELF nie została ustawiona"
 
-#: libelf/elf_error.c:136
+#: libelf/elf_error.c:115
 msgid "invalid fmag field in archive header"
 msgstr "nieprawidłowe pole fmag w nagłówku archiwum"
 
-#: libelf/elf_error.c:140
+#: libelf/elf_error.c:119
 msgid "invalid archive file"
 msgstr "nieprawidłowy plik archiwum"
 
-#: libelf/elf_error.c:144
+#: libelf/elf_error.c:123
 msgid "descriptor is not for an archive"
 msgstr "deskryptor nie jest dla archiwum"
 
-#: libelf/elf_error.c:148
+#: libelf/elf_error.c:127
 msgid "no index available"
 msgstr "brak dostępnego indeksu"
 
-#: libelf/elf_error.c:152
+#: libelf/elf_error.c:131
 msgid "cannot read data from file"
 msgstr "nie można odczytać danych z pliku"
 
-#: libelf/elf_error.c:156
+#: libelf/elf_error.c:135
 msgid "cannot write data to file"
 msgstr "nie można zapisać danych do pliku"
 
-#: libelf/elf_error.c:160
+#: libelf/elf_error.c:139
 msgid "invalid binary class"
 msgstr "nieprawidłowa klasa pliku binarnego"
 
-#: libelf/elf_error.c:164
+#: libelf/elf_error.c:143
 msgid "invalid section index"
 msgstr "nieprawidłowy indeks sekcji"
 
-#: libelf/elf_error.c:168
+#: libelf/elf_error.c:147
 msgid "invalid operand"
 msgstr "nieprawidłowy operand"
 
-#: libelf/elf_error.c:172
+#: libelf/elf_error.c:151
 msgid "invalid section"
 msgstr "nieprawidłowa sekcja"
 
-#: libelf/elf_error.c:180
+#: libelf/elf_error.c:159
 msgid "executable header not created first"
 msgstr "nie utworzono najpierw nagłówka pliku wykonywalnego"
 
-#: libelf/elf_error.c:184
+#: libelf/elf_error.c:163
 msgid "file descriptor disabled"
 msgstr "deskryptor pliku jest wyłączony"
 
-#: libelf/elf_error.c:188
+#: libelf/elf_error.c:167
 msgid "archive/member file descriptor mismatch"
 msgstr "deskryptory archiwum/elementu nie zgadzają się"
 
-#: libelf/elf_error.c:196
+#: libelf/elf_error.c:175
 msgid "cannot manipulate null section"
 msgstr "nie można zmieniać pustej sekcji"
 
-#: libelf/elf_error.c:200
+#: libelf/elf_error.c:179
 msgid "data/scn mismatch"
 msgstr "dane/scn nie zgadzają się"
 
-#: libelf/elf_error.c:204
+#: libelf/elf_error.c:183
 msgid "invalid section header"
 msgstr "nieprawidłowy nagłówek sekcji"
 
-#: libelf/elf_error.c:208 src/readelf.c:6850 src/readelf.c:6951
-#: src/readelf.c:7113
+#: libelf/elf_error.c:187 src/readelf.c:7235 src/readelf.c:7683
+#: src/readelf.c:7784 src/readelf.c:7954
 #, c-format
 msgid "invalid data"
 msgstr "nieprawidłowe dane"
 
-#: libelf/elf_error.c:212
+#: libelf/elf_error.c:191
 msgid "unknown data encoding"
 msgstr "nieznane kodowanie danych"
 
-#: libelf/elf_error.c:216
+#: libelf/elf_error.c:195
 msgid "section `sh_size' too small for data"
 msgstr "sekcja \"sh_size\" jest za mała dla danych"
 
-#: libelf/elf_error.c:220
+#: libelf/elf_error.c:199
 msgid "invalid section alignment"
 msgstr "nieprawidłowe wyrównanie sekcji"
 
-#: libelf/elf_error.c:224
+#: libelf/elf_error.c:203
 msgid "invalid section entry size"
 msgstr "nieprawidłowy rozmiar wpisu sekcji"
 
-#: libelf/elf_error.c:228
+#: libelf/elf_error.c:207
 msgid "update() for write on read-only file"
 msgstr "update() dla zapisu pliku tylko do odczytu"
 
-#: libelf/elf_error.c:232
+#: libelf/elf_error.c:211
 msgid "no such file"
 msgstr "nie ma takiego pliku"
 
-#: libelf/elf_error.c:236
+#: libelf/elf_error.c:215
 msgid "only relocatable files can contain section groups"
 msgstr "tylko relokowalne pliki mogą zawierać grupy sekcji"
 
-#: libelf/elf_error.c:241
+#: libelf/elf_error.c:220
 msgid ""
 "program header only allowed in executables, shared objects, and core files"
 msgstr ""
 "tylko pliki wykonywalne, obiektów współdzielone i pliki core mogą mieć "
 "nagłówki programu"
 
-#: libelf/elf_error.c:248
+#: libelf/elf_error.c:227
 msgid "file has no program header"
 msgstr "plik nie posiada nagłówków programu"
 
-#: src/addr2line.c:66
+#: src/addr2line.c:58
 msgid "Output selection options:"
 msgstr "Opcje wyboru wyjścia:"
 
-#: src/addr2line.c:67
+#: src/addr2line.c:59
 msgid "Show only base names of source files"
 msgstr "Wyświetla tylko podstawowe nazwy plików źródłowych"
 
-#: src/addr2line.c:69
+#: src/addr2line.c:61
 msgid "Show absolute file names using compilation directory"
 msgstr "Wyświetla bezwzględne nazwy plików używając katalogu kompilacji"
 
-#: src/addr2line.c:70
+#: src/addr2line.c:62
 msgid "Also show function names"
 msgstr "Wyświetla także nazwy funkcji"
 
-#: src/addr2line.c:71
+#: src/addr2line.c:63
 msgid "Also show symbol or section names"
 msgstr "Wyświetla także nazwy symboli ub sekcji"
 
-#: src/addr2line.c:72
+#: 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:74
+#: 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:76 src/elfcmp.c:80 src/findtextrel.c:75 src/nm.c:108
-#: src/strings.c:83
+#: 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:85
+#: 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:89
+#: src/addr2line.c:85
 msgid "[ADDR...]"
 msgstr "[ADRES...]"
 
-#: src/addr2line.c:189 src/ar.c:296 src/elfcmp.c:670 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:273 src/objdump.c:189
-#: src/ranlib.c:136 src/readelf.c:462 src/size.c:219 src/strings.c:227
-#: src/strip.c:221 src/unstrip.c:234
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:663 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: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"
@@ -647,300 +727,300 @@
 "BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI\n"
 "HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n"
 
-#: src/addr2line.c:194 src/ar.c:301 src/elfcmp.c:675 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:278 src/objdump.c:194
-#: src/ranlib.c:141 src/readelf.c:467 src/size.c:224 src/strings.c:232
-#: src/strip.c:226 src/unstrip.c:239
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:668 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: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:413
+#: 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:436
+#: src/addr2line.c:497
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside section '%s'"
 msgstr "offset %#<PRIxMAX> leży poza sekcją \"%s\""
 
-#: src/addr2line.c:477
+#: src/addr2line.c:563
 #, c-format
 msgid "cannot find symbol '%s'"
 msgstr "nie można odnaleźć symbolu \"%s\""
 
-#: src/addr2line.c:482
+#: 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:76
+#: src/ar.c:69
 msgid "Commands:"
 msgstr "Polecenia:"
 
-#: src/ar.c:77
+#: src/ar.c:70
 msgid "Delete files from archive."
 msgstr "Usuwa pliki z archiwum."
 
-#: src/ar.c:78
+#: src/ar.c:71
 msgid "Move files in archive."
 msgstr "Przenosi pliki w archiwum."
 
-#: src/ar.c:79
+#: src/ar.c:72
 msgid "Print files in archive."
 msgstr "Wyświetla pliki w archiwum."
 
-#: src/ar.c:80
+#: src/ar.c:73
 msgid "Quick append files to archive."
 msgstr "Szybko dodaje pliki do archiwum."
 
-#: src/ar.c:82
+#: src/ar.c:75
 msgid "Replace existing or insert new file into archive."
 msgstr "Zastępuje istniejący lub umieszcza nowy plik w archiwum."
 
-#: src/ar.c:83
+#: src/ar.c:76
 msgid "Display content of archive."
 msgstr "Wyświetla zawartość archiwum."
 
-#: src/ar.c:84
+#: src/ar.c:77
 msgid "Extract files from archive."
 msgstr "Wypakowuje pliki z archiwum."
 
-#: src/ar.c:86
+#: src/ar.c:79
 msgid "Command Modifiers:"
 msgstr "Modyfikatory poleceń:"
 
-#: src/ar.c:87
+#: src/ar.c:80
 msgid "Preserve original dates."
 msgstr "Zachowuje pierwotne daty."
 
-#: src/ar.c:88
+#: src/ar.c:81
 msgid "Use instance [COUNT] of name."
 msgstr "Używa wystąpienia [LICZNIK] nazwy."
 
-#: src/ar.c:90
+#: src/ar.c:83
 msgid "Do not replace existing files with extracted files."
 msgstr "Nie zastępuje istniejących plików wypakowanymi plikami."
 
-#: src/ar.c:91
+#: src/ar.c:84
 msgid "Allow filename to be truncated if necessary."
 msgstr "Zezwala na skrócenie nazwy pliku, jeśli jest to wymagane."
 
-#: src/ar.c:93
+#: src/ar.c:86
 msgid "Provide verbose output."
 msgstr "Wyświetla więcej informacji."
 
-#: src/ar.c:94
+#: src/ar.c:87
 msgid "Force regeneration of symbol table."
 msgstr "Wymusza ponowne utworzenie tabeli symboli."
 
-#: src/ar.c:95
+#: src/ar.c:88
 msgid "Insert file after [MEMBER]."
 msgstr "Umieszcza plik po [ELEMENCIE]."
 
-#: src/ar.c:96
+#: src/ar.c:89
 msgid "Insert file before [MEMBER]."
 msgstr "Umieszcza plik przed [ELEMENTEM]."
 
-#: src/ar.c:97
+#: src/ar.c:90
 msgid "Same as -b."
 msgstr "To samo, co -b."
 
-#: src/ar.c:98
+#: src/ar.c:91
 msgid "Suppress message when library has to be created."
 msgstr "Zmniejsza komunikat, jeśli biblioteka musi zostać utworzona."
 
-#: src/ar.c:100
+#: src/ar.c:93
 msgid "Use full path for file matching."
 msgstr "Używa pełnej ścieżki do dopasowywania plików."
 
-#: src/ar.c:101
+#: src/ar.c:94
 msgid "Update only older files in archive."
 msgstr "Aktualizuje tylko starsze pliki w archiwum."
 
-#: src/ar.c:107
+#: src/ar.c:100
 msgid "Create, modify, and extract from archives."
 msgstr "Tworzenie, modyfikowanie i wypakowywanie archiwów."
 
-#: src/ar.c:110
+#: src/ar.c:103
 msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 msgstr "[ELEMENT] [LICZNIK] ARCHIWUM [PLIK...]"
 
-#: src/ar.c:192
+#: src/ar.c:185
 #, c-format
 msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
 msgstr "\"a\", \"b\" i \"i\" są dozwolone tylko z opcjami \"m\" i \"r\""
 
-#: src/ar.c:197
+#: src/ar.c:190
 #, c-format
 msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
 msgstr "parametr ELEMENT jest wymagany dla modyfikatorów \"a\", \"b\" i \"i\""
 
-#: src/ar.c:213
+#: src/ar.c:206
 #, c-format
 msgid "'N' is only meaningful with the 'x' and 'd' options"
 msgstr "\"N\" ma znaczenie tylko z opcjami \"x\" i \"d\""
 
-#: src/ar.c:218
+#: src/ar.c:211
 #, c-format
 msgid "COUNT parameter required"
 msgstr "wymagany jest parametr LICZNIK"
 
-#: src/ar.c:230
+#: src/ar.c:223
 #, c-format
 msgid "invalid COUNT parameter %s"
 msgstr "nieprawidłowy parametr LICZNIK %s"
 
-#: src/ar.c:237
+#: src/ar.c:230
 #, c-format
 msgid "'%c' is only meaningful with the 'x' option"
 msgstr "\"%c\" ma znaczenie tylko z opcją \"x\""
 
-#: src/ar.c:243
+#: src/ar.c:236
 #, c-format
 msgid "archive name required"
 msgstr "wymagana jest nazwa archiwum"
 
-#: src/ar.c:256
+#: src/ar.c:249
 #, c-format
 msgid "command option required"
-msgstr ""
+msgstr "wymagana jest opcja polecenia"
 
-#: src/ar.c:321
+#: src/ar.c:314
 #, c-format
 msgid "More than one operation specified"
 msgstr "Podano więcej niż jedno działanie"
 
-#: src/ar.c:415
+#: src/ar.c:408
 #, c-format
 msgid "cannot open archive '%s'"
 msgstr "nie można otworzyć archiwum \"%s\""
 
-#: src/ar.c:425
+#: src/ar.c:418
 #, c-format
 msgid "cannot open archive '%s': %s"
 msgstr "nie można otworzyć archiwum \"%s\": %s"
 
-#: src/ar.c:429
+#: src/ar.c:422
 #, c-format
 msgid "%s: not an archive file"
 msgstr "%s: nie jest plikiem archiwum"
 
-#: src/ar.c:433
+#: src/ar.c:426
 #, c-format
 msgid "cannot stat archive '%s'"
 msgstr "nie można wykonać stat na archiwum \"%s\""
 
-#: src/ar.c:445
+#: src/ar.c:438
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "brak wpisu %s w archiwum\n"
 
-#: src/ar.c:498 src/ar.c:940 src/ar.c:1140
+#: src/ar.c:491 src/ar.c:933 src/ar.c:1133
 #, c-format
 msgid "cannot create hash table"
 msgstr "nie można utworzyć tabeli mieszającej"
 
-#: src/ar.c:505 src/ar.c:947 src/ar.c:1149
+#: src/ar.c:498 src/ar.c:940 src/ar.c:1142
 #, c-format
 msgid "cannot insert into hash table"
 msgstr "nie można umieścić w tabeli mieszającej"
 
-#: src/ar.c:513 src/ranlib.c:176
+#: src/ar.c:506 src/ranlib.c:168
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "nie można wykonać stat na \"%s\""
 
-#: src/ar.c:609
+#: src/ar.c:602
 #, c-format
 msgid "cannot read content of %s: %s"
 msgstr "nie można odczytać zawartości %s: %s"
 
-#: src/ar.c:652
+#: src/ar.c:645
 #, c-format
 msgid "cannot open %.*s"
 msgstr "nie można otworzyć %.*s"
 
-#: src/ar.c:674
+#: src/ar.c:667
 #, c-format
 msgid "failed to write %s"
 msgstr "zapisanie %s nie powiodło się"
 
-#: src/ar.c:686
+#: src/ar.c:679
 #, c-format
 msgid "cannot change mode of %s"
 msgstr "nie można zmienić trybu %s"
 
-#: src/ar.c:702
+#: src/ar.c:695
 #, c-format
 msgid "cannot change modification time of %s"
 msgstr "nie można zmienić czasu modyfikacji %s"
 
-#: src/ar.c:748
+#: src/ar.c:741
 #, c-format
 msgid "cannot rename temporary file to %.*s"
 msgstr "nie można zmienić nazwy pliku tymczasowego na %.*s"
 
-#: src/ar.c:784 src/ar.c:1032 src/ar.c:1431 src/ranlib.c:250
+#: src/ar.c:777 src/ar.c:1025 src/ar.c:1424 src/ranlib.c:242
 #, c-format
 msgid "cannot create new file"
 msgstr "nie można utworzyć nowego pliku"
 
-#: src/ar.c:1231
+#: src/ar.c:1224
 #, c-format
 msgid "position member %s not found"
 msgstr "nie odnaleziono położenia elementu %s"
 
-#: src/ar.c:1241
+#: src/ar.c:1234
 #, c-format
 msgid "%s: no entry %s in archive!\n"
 msgstr "%s: brak wpisu %s w archiwum.\n"
 
-#: src/ar.c:1270 src/ldgeneric.c:517 src/objdump.c:265
+#: src/ar.c:1263 src/ldgeneric.c:509 src/objdump.c:257
 #, c-format
 msgid "cannot open %s"
 msgstr "nie można otworzyć %s"
 
-#: src/ar.c:1275
+#: src/ar.c:1268
 #, c-format
 msgid "cannot stat %s"
 msgstr "nie można wykonać stat na %s"
 
-#: src/ar.c:1281
+#: src/ar.c:1274
 #, c-format
 msgid "%s is no regular file"
 msgstr "%s nie jest zwykłym plikiem"
 
-#: src/ar.c:1294
+#: src/ar.c:1287
 #, c-format
 msgid "cannot get ELF descriptor for %s: %s\n"
 msgstr "nie można uzyskać deskryptora ELF dla %s: %s\n"
 
-#: src/ar.c:1314
+#: src/ar.c:1307
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "nie można odczytać %s: %s"
 
-#: src/arlib.c:216
+#: src/arlib.c:209
 #, c-format
 msgid "the archive '%s' is too large"
 msgstr "archiwum \"%s\" jest za duże"
 
-#: src/arlib.c:229
+#: src/arlib.c:222
 #, c-format
 msgid "cannot read ELF header of %s(%s): %s"
 msgstr "nie można odczytać nagłówka ELF %s(%s): %s"
 
-#: src/elfcmp.c:70
+#: src/elfcmp.c:62
 msgid "Control options:"
 msgstr "Opcje sterujące:"
 
-#: src/elfcmp.c:72
+#: src/elfcmp.c:64
 msgid "Output all differences, not just the first"
 msgstr "Wyświetlanie wszystkich różnic, nie tylko pierwszej"
 
-#: src/elfcmp.c:73
+#: src/elfcmp.c:65
 msgid ""
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
@@ -948,211 +1028,211 @@
 "Sterowanie traktowaniem luk w segmentach wczytywalnych [ignore|match] "
 "(domyślne: ignore)"
 
-#: src/elfcmp.c:75
+#: src/elfcmp.c:67
 msgid "Ignore permutation of buckets in SHT_HASH section"
 msgstr "Ignorowanie permutacji kubełków w sekcji SHT_HASH"
 
-#: src/elfcmp.c:77
+#: 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:78
+#: src/elfcmp.c:70
 msgid "Output nothing; yield exit status only"
 msgstr "Bez wypisywania; przekazanie tylko kodu wyjścia"
 
-#: src/elfcmp.c:85
+#: src/elfcmp.c:77
 msgid "Compare relevant parts of two ELF files for equality."
 msgstr "Porównywanie odpowiednich części dwóch plików ELF pod kątem równości."
 
-#: src/elfcmp.c:89
+#: src/elfcmp.c:81
 msgid "FILE1 FILE2"
 msgstr "PLIK1 PLIK2"
 
-#: src/elfcmp.c:151
+#: src/elfcmp.c:143
 msgid "Invalid number of parameters.\n"
 msgstr "Nieprawidłowa liczba parametrów.\n"
 
-#: src/elfcmp.c:182 src/elfcmp.c:187
+#: src/elfcmp.c:174 src/elfcmp.c:179
 #, c-format
 msgid "cannot get ELF header of '%s': %s"
 msgstr "nie można uzyskać nagłówka ELF \"%s\": %s"
 
-#: src/elfcmp.c:213
+#: src/elfcmp.c:205
 #, c-format
 msgid "%s %s diff: ELF header"
 msgstr "%s %s różnią się: nagłówek ELF"
 
-#: src/elfcmp.c:220 src/elfcmp.c:223
+#: src/elfcmp.c:212 src/elfcmp.c:215
 #, c-format
 msgid "cannot get section count of '%s': %s"
 msgstr "nie można uzyskać licznika sekcji \"%s\": %s"
 
-#: src/elfcmp.c:228
+#: src/elfcmp.c:220
 #, c-format
 msgid "%s %s diff: section count"
 msgstr "%s %s różnią się: licznik sekcji"
 
-#: src/elfcmp.c:235 src/elfcmp.c:238
+#: src/elfcmp.c:227 src/elfcmp.c:230
 #, c-format
 msgid "cannot get program header count of '%s': %s"
 msgstr "nie można uzyskać licznika nagłówka programu \"%s\": %s"
 
-#: src/elfcmp.c:243
+#: src/elfcmp.c:235
 #, c-format
 msgid "%s %s diff: program header count"
 msgstr "%s %s różnią się: licznik nagłówka programu"
 
-#: src/elfcmp.c:300
+#: src/elfcmp.c:292
 #, c-format
 msgid "%s %s differ: section [%zu], [%zu] name"
 msgstr "%s %s różnią się: nazwa sekcji [%zu], [%zu]"
 
-#: src/elfcmp.c:323
+#: src/elfcmp.c:315
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' header"
 msgstr "%s %s różnią się: nagłówek sekcji [%zu] \"%s\""
 
-#: src/elfcmp.c:331 src/elfcmp.c:337
+#: src/elfcmp.c:323 src/elfcmp.c:329
 #, c-format
 msgid "cannot get content of section %zu in '%s': %s"
 msgstr "nie można uzyskać zawartości sekcji %zu w \"%s\": %s"
 
-#: src/elfcmp.c:353 src/elfcmp.c:359
+#: src/elfcmp.c:345 src/elfcmp.c:351
 #, c-format
 msgid "cannot get symbol in '%s': %s"
 msgstr "nie można uzyskać symbolu w \"%s\": %s"
 
-#: src/elfcmp.c:380
+#: src/elfcmp.c:373
 #, c-format
 msgid "%s %s differ: symbol table [%zu]"
 msgstr "%s %s różnią się: tabela symboli [%zu]"
 
-#: src/elfcmp.c:383
+#: src/elfcmp.c:376
 #, c-format
 msgid "%s %s differ: symbol table [%zu,%zu]"
 msgstr "%s %s różnią się: tabela symboli [%zu,%zu]"
 
-#: src/elfcmp.c:429 src/elfcmp.c:498
+#: src/elfcmp.c:422 src/elfcmp.c:491
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' number of notes"
 msgstr "%s %s różnią się: liczba notatek sekcji [%zu] \"%s\""
 
-#: src/elfcmp.c:437
+#: src/elfcmp.c:430
 #, c-format
 msgid "cannot read note section [%zu] '%s' in '%s': %s"
 msgstr "nie można odczytać notatki sekcji [%zu] \"%s\" w \"%s\": %s"
 
-#: src/elfcmp.c:447
+#: src/elfcmp.c:440
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note name"
 msgstr "%s %s różnią się: nazwa notatki sekcji [%zu] \"%s\""
 
-#: src/elfcmp.c:455
+#: src/elfcmp.c:448
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' type"
 msgstr "%s %s różnią się: sekcja [%zu] \"%s\" notatka \"%s\" typ"
 
-#: src/elfcmp.c:470
+#: src/elfcmp.c:463
 #, 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:478
+#: src/elfcmp.c:471
 #, 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:487
+#: src/elfcmp.c:480
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' content"
 msgstr "%s %s różnią się: sekcja [%zu] \"%s\" notatka \"%s\" zawartość"
 
-#: src/elfcmp.c:527
+#: src/elfcmp.c:520
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' content"
 msgstr "%s %s różnią się: zawartość sekcji [%zu] \"%s\""
 
-#: src/elfcmp.c:531
+#: src/elfcmp.c:524
 #, c-format
 msgid "%s %s differ: section [%zu,%zu] '%s' content"
 msgstr "%s %s różnią się: zawartość sekcji [%zu,%zu] \"%s\""
 
-#: src/elfcmp.c:546
+#: src/elfcmp.c:539
 #, c-format
 msgid "%s %s differ: unequal amount of important sections"
 msgstr "%s %s różnią się: różna liczba ważnych sekcji"
 
-#: src/elfcmp.c:579 src/elfcmp.c:584
+#: src/elfcmp.c:572 src/elfcmp.c:577
 #, c-format
 msgid "cannot load data of '%s': %s"
 msgstr "nie można wczytać danych z \"%s\": %s"
 
-#: src/elfcmp.c:603 src/elfcmp.c:609
+#: src/elfcmp.c:596 src/elfcmp.c:602
 #, c-format
 msgid "cannot get program header entry %d of '%s': %s"
 msgstr "nie można uzyskać wpisu nagłówka programu %d z \"%s\": %s"
 
-#: src/elfcmp.c:615
+#: src/elfcmp.c:608
 #, c-format
 msgid "%s %s differ: program header %d"
 msgstr "%s %s różnią się: nagłówek programu %d"
 
-#: src/elfcmp.c:639
+#: src/elfcmp.c:632
 #, c-format
 msgid "%s %s differ: gap"
 msgstr "%s %s różnią się: luka"
 
-#: src/elfcmp.c:702
+#: src/elfcmp.c:695
 #, c-format
 msgid "Invalid value '%s' for --gaps parameter."
 msgstr "Nieprawidłowa wartość \"%s\" dla parametru --gaps."
 
-#: src/elfcmp.c:730 src/findtextrel.c:229 src/ldgeneric.c:1765
-#: src/ldgeneric.c:4255 src/nm.c:389 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:458 src/strip.c:495 src/unstrip.c:1911
-#: src/unstrip.c:1940
+#: src/elfcmp.c:723 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:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1923
+#: src/unstrip.c:1952
 #, c-format
 msgid "cannot open '%s'"
 msgstr "nie można otworzyć \"%s\""
 
-#: src/elfcmp.c:734 src/findtextrel.c:236 src/ranlib.c:186
+#: src/elfcmp.c:727 src/findtextrel.c:228 src/ranlib.c:178
 #, c-format
 msgid "cannot create ELF descriptor for '%s': %s"
 msgstr "nie można utworzyć deskryptora ELF dla \"%s\": %s"
 
-#: src/elfcmp.c:739
+#: src/elfcmp.c:732
 #, c-format
 msgid "cannot create EBL descriptor for '%s'"
 msgstr "nie można utworzyć deskryptora EBL dla \"%s\""
 
-#: src/elfcmp.c:757
+#: src/elfcmp.c:750
 #, c-format
 msgid "cannot get section header of section %zu: %s"
 msgstr "nie można uzyskać nagłówka sekcji dla sekcji %zu: %s"
 
-#: src/elfcmp.c:767
+#: src/elfcmp.c:760
 #, c-format
 msgid "cannot get content of section %zu: %s"
 msgstr "nie można uzyskać zawartości sekcji %zu: %s"
 
-#: src/elfcmp.c:777 src/elfcmp.c:791
+#: src/elfcmp.c:770 src/elfcmp.c:784
 #, c-format
 msgid "cannot get relocation: %s"
 msgstr "nie można uzyskać relokacji: %s"
 
-#: src/elflint.c:72
+#: src/elflint.c:64
 msgid "Be extremely strict, flag level 2 features."
 msgstr "Bardzo ścisłe sprawdzanie, cechy poziomu 2 flag."
 
-#: src/elflint.c:73
+#: src/elflint.c:65
 msgid "Do not print anything if successful"
 msgstr "Nie wypisywanie niczego w przypadku powodzenia"
 
-#: src/elflint.c:74
+#: src/elflint.c:66
 msgid "Binary is a separate debuginfo file"
 msgstr "Plik binarny jest oddzielnym plikiem debuginfo"
 
-#: src/elflint.c:76
+#: src/elflint.c:68
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1160,165 +1240,165 @@
 "Plik binarny został utworzony przez program GNU ld, przez co jest uszkodzony "
 "w pewien sposób"
 
-#: src/elflint.c:82
+#: src/elflint.c:74
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr ""
 "Szczegółowe sprawdzanie zgodności plików ELF ze specyfikacją gABI/psABI."
 
-#: src/elflint.c:86 src/readelf.c:119
+#: src/elflint.c:78 src/readelf.c:123
 msgid "FILE..."
 msgstr "PLIK..."
 
-#: src/elflint.c:159 src/readelf.c:275
+#: 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:166
+#: 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:185
+#: 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:189
+#: src/elflint.c:185
 msgid "No errors"
 msgstr "Brak błędów"
 
-#: src/elflint.c:223 src/readelf.c:436
+#: src/elflint.c:219 src/readelf.c:468
 msgid "Missing file name.\n"
 msgstr "Brak nazwy pliku.\n"
 
-#: src/elflint.c:302
+#: 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:310
+#: 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:370
+#: 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:375
+#: 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:379
+#: 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:385
+#: 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:391
+#: 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:396
+#: 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:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "nieznany typ pliku obiektu %d\n"
 
-#: src/elflint.c:408
+#: src/elflint.c:409
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "nieznany typ komputera %d\n"
 
-#: src/elflint.c:412
+#: src/elflint.c:413
 #, c-format
 msgid "unknown object file version\n"
 msgstr "nieznana wersja pliku obiektu\n"
 
-#: src/elflint.c:418
+#: src/elflint.c:419
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "nieprawidłowy offset nagłówka programu\n"
 
-#: src/elflint.c:420
+#: 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:424
+#: 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:432
+#: 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:435
+#: 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:449
+#: 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:466
+#: src/elflint.c:467
 #, c-format
 msgid "invalid section header index\n"
 msgstr "nieprawidłowy indeks nagłówka sekcji\n"
 
-#: src/elflint.c:480
+#: 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:489
+#: src/elflint.c:490
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "nieprawidłowe flagi komputera: %s\n"
 
-#: src/elflint.c:496 src/elflint.c:513
+#: 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:499 src/elflint.c:516
+#: 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:502 src/elflint.c:519
+#: 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:505 src/elflint.c:522
+#: 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:508 src/elflint.c:525
+#: 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:569
+#: src/elflint.c:570
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1326,7 +1406,7 @@
 msgstr ""
 "sekcja [%2d] \"%s\": sekcja z flagą SHF_GROUP nie jest częścią grupy sekcji\n"
 
-#: src/elflint.c:573
+#: src/elflint.c:574
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
@@ -1334,14 +1414,14 @@
 "sekcja [%2d] \"%s\": grupa sekcji [%2zu] \"%s\" nie poprzedza elementu "
 "grupy\n"
 
-#: src/elflint.c:589 src/elflint.c:1433 src/elflint.c:1483 src/elflint.c:1588
-#: src/elflint.c:2173 src/elflint.c:2687 src/elflint.c:2848 src/elflint.c:2978
-#: src/elflint.c:3150 src/elflint.c:4050
+#: 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:602 src/elflint.c:1595
+#: src/elflint.c:603 src/elflint.c:1621
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1350,7 +1430,7 @@
 "sekcja [%2d] \"%s\": użyta jako tabela ciągów dla sekcji [%2d] \"%s\", ale "
 "nie jest typu SHT_STRTAB\n"
 
-#: src/elflint.c:625
+#: src/elflint.c:626
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1359,38 +1439,38 @@
 "sekcja [%2d] \"%s\": tabela symboli nie może mieć więcej niż jednej "
 "rozszerzonej sekcji indeksów\n"
 
-#: src/elflint.c:636
+#: 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:645
+#: 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:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
+#: 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:668
+#: 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:678
+#: 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:687
+#: 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:701
+#: src/elflint.c:704
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: too large section index but no extended "
@@ -1399,7 +1479,7 @@
 "sekcja [%2d] \"%s\": symbol %zu: za duży indeks sekcji, ale nie posiada "
 "sekcji rozszerzonych indeksów sekcji\n"
 
-#: src/elflint.c:707
+#: src/elflint.c:710
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
@@ -1408,28 +1488,28 @@
 "sekcja [%2d] \"%s\": symbol %zu: XINDEX użyty dla indeksu, który zmieściłby "
 "się w st_shndx (%<PRIu32>)\n"
 
-#: src/elflint.c:719
+#: 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:727
+#: 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:733
+#: 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:738
+#: 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:746
+#: src/elflint.c:749
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
@@ -1437,23 +1517,23 @@
 "sekcja [%2d] \"%s\": symbol %zu: COMMON jest dozwolone tylko w plikach "
 "relokowalnych\n"
 
-#: src/elflint.c:750
+#: 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:754
+#: 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:786
+#: 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:792 src/elflint.c:817 src/elflint.c:860
+#: 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 "
@@ -1462,7 +1542,7 @@
 "sekcja [%2d] \"%s\": symbol %zu nie mieści się w całości we wskazywanej "
 "sekcji [%2d] \"%s\"\n"
 
-#: src/elflint.c:801
+#: src/elflint.c:819
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
@@ -1471,7 +1551,7 @@
 "sekcja [%2d] \"%s\": symbol %zu: wskazywana sekcja [%2d] \"%s\" nie posiada "
 "ustawionej flagi SHF_TLS\n"
 
-#: src/elflint.c:811 src/elflint.c:853
+#: src/elflint.c:829 src/elflint.c:871
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
@@ -1480,7 +1560,7 @@
 "sekcja [%2d] \"%s\": symbol %zu: st_value spoza zakresu wskazywanej sekcji "
 "[%2d] \"%s\"\n"
 
-#: src/elflint.c:838
+#: src/elflint.c:856
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
@@ -1488,7 +1568,7 @@
 "sekcja [%2d] \"%s\": symbol %zu: symbol TLS, ale brak wpisu TLS nagłówka "
 "programu\n"
 
-#: src/elflint.c:846
+#: src/elflint.c:864
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
@@ -1497,7 +1577,7 @@
 "sekcja [%2d] \"%s\": symbol %zu: st_value pomija wskazywaną sekcję [%2d] \"%s"
 "\"\n"
 
-#: src/elflint.c:873
+#: src/elflint.c:891
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: local symbol outside range described in "
@@ -1506,7 +1586,7 @@
 "sekcja [%2d] \"%s\": symbol %zu: lokalny symbol spoza zakresu określonego w "
 "sh_info\n"
 
-#: src/elflint.c:880
+#: src/elflint.c:898
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
@@ -1515,12 +1595,12 @@
 "sekcja [%2d] \"%s\": symbol %zu: nielokalny symbol spoza zakresu określonego "
 "w sh_info\n"
 
-#: src/elflint.c:887
+#: 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:937
+#: src/elflint.c:955
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1529,7 +1609,7 @@
 "sekcja [%2d] \"%s\": symbol _GLOBAL_OFFSET_TABLE_ odnosi się do błędnej "
 "sekcji [%2d]\n"
 
-#: src/elflint.c:944
+#: src/elflint.c:962
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1538,7 +1618,7 @@
 "sekcja [%2d] \"%s\": symbol _GLOBAL_OFFSET_TABLE_ odnosi się do sekcji [%2d] "
 "\"%s\"\n"
 
-#: src/elflint.c:960
+#: src/elflint.c:978
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1547,7 +1627,7 @@
 "sekcja [%2d] \"%s\": wartość symbolu _GLOBAL_OFFSET_TABLE_ %#<PRIx64> nie "
 "pasuje do adresu sekcji %s %#<PRIx64>\n"
 
-#: src/elflint.c:967
+#: src/elflint.c:985
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1556,7 +1636,7 @@
 "sekcja [%2d] \"%s\": rozmiar symbolu _GLOBAL_OFFSET_TABLE_ %<PRIu64> nie "
 "pasuje do rozmiaru sekcji %s %<PRIu64>\n"
 
-#: src/elflint.c:975
+#: src/elflint.c:993
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1565,7 +1645,7 @@
 "sekcja [%2d] \"%s\": symbol _GLOBAL_OFFSET_TABLE_ istnieje, ale brak sekcji ."
 "got\n"
 
-#: src/elflint.c:991
+#: src/elflint.c:1009
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1574,7 +1654,7 @@
 "sekcja [%2d] \"%s\": wartość symbolu _DYNAMIC_ %#<PRIx64> nie pasuje do "
 "adresu segmentu dynamicznego %#<PRIx64>\n"
 
-#: src/elflint.c:998
+#: src/elflint.c:1016
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1583,7 +1663,7 @@
 "sekcja [%2d] \"%s\": rozmiar symbolu _DYNAMIC_ %<PRIu64> nie pasuje do "
 "rozmiaru segmentu dynamicznego %<PRIu64>\n"
 
-#: src/elflint.c:1011
+#: src/elflint.c:1029
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
@@ -1592,22 +1672,22 @@
 "sekcja [%2d] \"%s\": symbol %zu: symbol w dynamicznej tabeli symboli z "
 "niedomyślną widocznością\n"
 
-#: src/elflint.c:1015
+#: 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:1060
+#: 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:1069 src/elflint.c:1121
+#: 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:1094 src/elflint.c:1146
+#: src/elflint.c:1118 src/elflint.c:1170
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1616,7 +1696,7 @@
 "sekcja [%2d] \"%s\": relokacje względne po indeksie %d podanym przez "
 "DT_RELCOUNT\n"
 
-#: src/elflint.c:1100 src/elflint.c:1152
+#: src/elflint.c:1124 src/elflint.c:1176
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -1625,50 +1705,50 @@
 "sekcja [%2d] \"%s\": relokacja bezwzględna pod indeksem %zu; DT_RELCOUNT "
 "podał %d relokacji względnych\n"
 
-#: src/elflint.c:1112
+#: 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:1194
+#: 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:1207
+#: 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:1215
+#: 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:1222
+#: 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:1229
+#: 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:1289
+#: 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:1316
+#: 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:1324
+#: src/elflint.c:1348
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -1677,12 +1757,12 @@
 "sekcja [%2d] \"%s\": relokacja %zu: typ relokacji nieprawidłowy dla tego "
 "typu pliku\n"
 
-#: src/elflint.c:1332
+#: 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:1350
+#: src/elflint.c:1374
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -1691,12 +1771,12 @@
 "sekcja [%2d] \"%s\": relokacja %zu: z %s można użyć tylko symbolu "
 "\"_GLOBAL_OFFSET_TABLE_\"\n"
 
-#: src/elflint.c:1367
+#: 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:1382
+#: src/elflint.c:1406
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -1705,7 +1785,7 @@
 "sekcja [%2d] \"%s\": relokacja %zu: relokacja kopii względem symbolu typu "
 "%s\n"
 
-#: src/elflint.c:1403
+#: src/elflint.c:1427
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -1714,60 +1794,60 @@
 "sekcja [%2d] \"%s\": relokacja %zu: sekcja tylko do odczytu została "
 "zmodyfikowana, ale nie ustawiono flagi relokacji tekstu\n"
 
-#: src/elflint.c:1418
+#: 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:1457 src/elflint.c:1507
+#: 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:1583
+#: 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:1601
+#: 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:1606 src/elflint.c:1889
+#: 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:1616
+#: 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:1624
+#: 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:1631
+#: 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:1642
+#: 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:1652
+#: 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:1670
+#: src/elflint.c:1697
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -1775,7 +1855,7 @@
 "sekcja [%2d] \"%s\": wpis %zu: wartość DT_PLTREL musi wynosić DT_REL lub "
 "DT_RELA\n"
 
-#: src/elflint.c:1683
+#: src/elflint.c:1710
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -1784,7 +1864,7 @@
 "sekcja [%2d] \"%s\": wpis %zu: wskaźnik nie pasuje do adresu sekcji [%2d] "
 "\"%s\" wskazywanej przez sh_link\n"
 
-#: src/elflint.c:1726
+#: src/elflint.c:1753
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
@@ -1792,7 +1872,7 @@
 "sekcja [%2d] \"%s\": wpis %zu: wartość %s musi wskazywać na wczytany "
 "segment\n"
 
-#: src/elflint.c:1741
+#: src/elflint.c:1768
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -1801,48 +1881,48 @@
 "sekcja [%2d] \"%s\": wpis %zu: wartość %s musi być prawidłowym offsetem w "
 "sekcji [%2d] \"%s\"\n"
 
-#: src/elflint.c:1761 src/elflint.c:1789
+#: 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:1773
+#: 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:1782
+#: 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:1797 src/elflint.c:1804
+#: 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:1814 src/elflint.c:1818
+#: 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:1824
+#: 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:1835 src/elflint.c:1839 src/elflint.c:1843 src/elflint.c:1847
+#: 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:1859
+#: src/elflint.c:1886
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
@@ -1850,7 +1930,7 @@
 "sekcja [%2d] \"%s\": tylko pliki relokowalne mogą mieć rozszerzoną sekcję "
 "indeksów\n"
 
-#: src/elflint.c:1869
+#: src/elflint.c:1896
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
@@ -1858,24 +1938,24 @@
 "sekcja [%2d] \"%s\": sekcja rozszerzonych indeksów sekcji nie dla tabeli "
 "symboli\n"
 
-#: src/elflint.c:1874
+#: 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:1877
+#: 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:1884
+#: 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:1899
+#: src/elflint.c:1928
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -1884,24 +1964,24 @@
 "sekcja [%2d] \"%s\": rozszerzony indeks sekcji w sekcji [%2zu] \"%s\" "
 "odwołuje się do tej samej tabeli symboli\n"
 
-#: src/elflint.c:1910
+#: 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:1922
+#: 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:1927
+#: 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:1943 src/elflint.c:1984
+#: 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"
@@ -1909,52 +1989,52 @@
 "sekcja [%2d] \"%s\": sekcja tabeli mieszającej jest za mała (%ld, oczekiwano "
 "%ld)\n"
 
-#: src/elflint.c:1955 src/elflint.c:1996
+#: 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:1964 src/elflint.c:2005
+#: 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:1970
+#: 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:2011
+#: 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:2026
+#: 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:2037
-#, 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:2045
+#: 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:2077
+#: src/elflint.c:2132
 #, c-format
 msgid ""
 "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -1962,7 +2042,7 @@
 "sekcja [%2d] \"%s\": łańcuch mieszający dla kubełka %zu jest mniejszy niż "
 "przesunięcie indeksu symboli\n"
 
-#: src/elflint.c:2098
+#: src/elflint.c:2153
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -1971,7 +2051,7 @@
 "sekcja [%2d] \"%s\": symbol %u wskazywany w łańcuchu dla kubełka %zu jest "
 "nieokreślony\n"
 
-#: src/elflint.c:2109
+#: src/elflint.c:2164
 #, c-format
 msgid ""
 "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -1979,13 +2059,13 @@
 "sekcja [%2d] \"%s\": wartość skrótu dla symbolu %u w łańcuchu dla kubełka "
 "%zu jest błędna\n"
 
-#: src/elflint.c:2140
+#: 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:2145
+#: src/elflint.c:2200
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -1993,36 +2073,36 @@
 "sekcja [%2d] \"%s\": odwołanie do symbolu w łańcuchu dla kubełka %zu jest "
 "spoza zakresu\n"
 
-#: src/elflint.c:2151
+#: 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:2164
+#: 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:2182
+#: 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:2190
+#: 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:2195
+#: 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:2200
+#: src/elflint.c:2255
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2031,18 +2111,18 @@
 "sekcja [%2d] \"%s\": tabela mieszająca nie posiada miejsca nawet na "
 "początkowe wpisy administracyjne\n"
 
-#: src/elflint.c:2248
+#: 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:2326 src/elflint.c:2330
+#: 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:2337
+#: src/elflint.c:2392
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2051,7 +2131,7 @@
 "symbol %d wymieniony w nowej tabeli mieszającej w [%2zu] \"%s\", ale nie w "
 "poprzedniej tabeli mieszającej [%2zu] \"%s\"\n"
 
-#: src/elflint.c:2349
+#: src/elflint.c:2404
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2060,12 +2140,12 @@
 "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:2365
+#: 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:2385
+#: src/elflint.c:2440
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
@@ -2073,92 +2153,92 @@
 "sekcja [%2d] \"%s\": w plikach obiektów relokowalnych dozwolone są tylko "
 "grupy sekcji\n"
 
-#: src/elflint.c:2396
+#: 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:2401
+#: 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:2407
+#: 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:2412
+#: 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:2419
+#: 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:2424
+#: 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:2430
+#: 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:2436
+#: 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:2445
+#: 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:2450
+#: 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:2456
+#: 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:2460
+#: 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:2471
+#: 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:2483
+#: 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:2492
+#: 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:2499
+#: 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:2505
+#: src/elflint.c:2560
 #, c-format
 msgid ""
 "section [%2d] '%s': element %Zu references section [%2d] '%s' without "
@@ -2167,12 +2247,12 @@
 "sekcja [%2d] \"%s\": element %Zu odwołuje się do sekcji [%2d] \"%s\" bez "
 "flagi SHF_GROUP\n"
 
-#: src/elflint.c:2512
+#: 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:2701
+#: src/elflint.c:2756
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2181,7 +2261,7 @@
 "sekcja [%2d] \"%s\" odwołuje się w sh_link do sekcji [%2d] \"%s\", która nie "
 "jest tabelą symboli dynamicznych\n"
 
-#: src/elflint.c:2712
+#: src/elflint.c:2768
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2190,78 +2270,78 @@
 "sekcja [%2d] \"%s\" posiada inną liczbę wpisów niż tabela symboli [%2d] \"%s"
 "\"\n"
 
-#: src/elflint.c:2728
+#: 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:2744
+#: 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:2752
+#: 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:2766
+#: 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:2771
+#: 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:2781
+#: 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:2833
+#: 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:2841 src/elflint.c:2970
+#: 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:2864 src/elflint.c:3022
+#: 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:2870 src/elflint.c:3028
+#: 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:2878
+#: 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:2886
+#: 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:2898
+#: 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:2905
+#: src/elflint.c:2961
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2270,7 +2350,7 @@
 "sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada nieprawidłowe "
 "odniesienie do nazwy\n"
 
-#: src/elflint.c:2912
+#: src/elflint.c:2968
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2279,7 +2359,7 @@
 "sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada błędną wartość "
 "skrótu: %#x, oczekiwano %#x\n"
 
-#: src/elflint.c:2922
+#: src/elflint.c:2978
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -2288,7 +2368,7 @@
 "sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada powtórzoną nazwę "
 "wersji \"%s\"\n"
 
-#: src/elflint.c:2933
+#: src/elflint.c:2989
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
@@ -2296,52 +2376,52 @@
 "sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada błędne następne "
 "pole\n"
 
-#: src/elflint.c:2949 src/elflint.c:3107
+#: 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:2962
+#: 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:3007
+#: 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:3011
+#: 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:3017
+#: 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:3041
+#: 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:3048
+#: 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:3057
+#: 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:3076
+#: src/elflint.c:3132
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -2349,52 +2429,52 @@
 "sekcja [%2d] \"%s\": wpis %d posiada nieprawidłowe odniesienie do nazwy w "
 "danych dodatkowych\n"
 
-#: src/elflint.c:3091
+#: 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:3113
+#: 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:3129
+#: 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:3142
+#: 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:3163
+#: 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:3179
+#: 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:3188
+#: 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:3200
+#: 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:3217
+#: src/elflint.c:3273
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -2402,12 +2482,12 @@
 "sekcja [%2d] \"%s\": offset %zu: niekończące się ULEB128 w znaczniku "
 "podsekcji atrybutów\n"
 
-#: src/elflint.c:3226
+#: 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:3235
+#: src/elflint.c:3291
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
@@ -2415,7 +2495,7 @@
 "sekcja [%2d] \"%s\": offset %zu: zerowej długości pole w podsekcji "
 "atrybutów\n"
 
-#: src/elflint.c:3248
+#: src/elflint.c:3304
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
@@ -2423,7 +2503,7 @@
 "sekcja [%2d] \"%s\": offset %zu: nieprawidłowa długość w podsekcji "
 "atrybutów\n"
 
-#: src/elflint.c:3259
+#: src/elflint.c:3315
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -2431,24 +2511,24 @@
 "sekcja [%2d] \"%s\": offset %zu: podsekcja atrybutów posiada nieoczekiwany "
 "znacznik %u\n"
 
-#: src/elflint.c:3277
+#: 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:3288
+#: 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:3301
+#: 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:3305
+#: src/elflint.c:3361
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
@@ -2456,12 +2536,12 @@
 "sekcja [%2d] \"%s\": offset %zu: atrybut %s posiada nierozpoznaną wartość "
 "%<PRIu64>\n"
 
-#: src/elflint.c:3315
+#: 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:3321
+#: src/elflint.c:3377
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -2469,47 +2549,47 @@
 "sekcja [%2d] \"%s\": offset %zu: dodatkowe bajty po ostatniej sekcji "
 "atrybutów\n"
 
-#: src/elflint.c:3410
+#: 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:3414
+#: src/elflint.c:3470
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr "sekcja zerowa posiada niezerową nazwę\n"
 
-#: src/elflint.c:3416
+#: src/elflint.c:3472
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr "sekcja zerowa posiada niezerowy typ\n"
 
-#: src/elflint.c:3418
+#: src/elflint.c:3474
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr "sekcja zerowa posiada niezerowe flagi\n"
 
-#: src/elflint.c:3420
+#: src/elflint.c:3476
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr "sekcja zerowa posiada niezerowy adres\n"
 
-#: src/elflint.c:3422
+#: src/elflint.c:3478
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr "sekcja zerowa posiada niezerowy offset\n"
 
-#: src/elflint.c:3424
+#: 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:3426
+#: 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:3429
+#: src/elflint.c:3485
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -2518,7 +2598,7 @@
 "sekcja zerowa posiada niezerową wartość rozmiaru, a nagłówek ELF posiada "
 "niezerową wartość shnum\n"
 
-#: src/elflint.c:3433
+#: src/elflint.c:3489
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2527,7 +2607,7 @@
 "sekcja zerowa posiada niezerową wartość dowiązań, a nagłówek ELF nie "
 "wskazuje przepełnienia w shstrndx\n"
 
-#: src/elflint.c:3437
+#: src/elflint.c:3493
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2536,27 +2616,27 @@
 "sekcja zerowa posiada niezerową wartość dowiązań, a nagłówek ELF nie "
 "wskazuje przepełnienia w phnum\n"
 
-#: src/elflint.c:3454
+#: 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:3463
+#: src/elflint.c:3519
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr "sekcja [%2zu]: nieprawidłowa nazwa\n"
 
-#: src/elflint.c:3490
+#: 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:3506
+#: 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:3523
+#: src/elflint.c:3579
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
@@ -2564,12 +2644,12 @@
 "sekcja [%2zu] \"%s\" posiada błędne flagi: oczekiwano %s i być może %s, jest "
 "%s\n"
 
-#: src/elflint.c:3541
+#: 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:3547 src/elflint.c:3579
+#: 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"
@@ -2577,7 +2657,7 @@
 "sekcja [%2zu] \"%s\" posiada flagę SHF_ALLOC, ale nie posiada segmentu "
 "wczytywalnego\n"
 
-#: src/elflint.c:3552 src/elflint.c:3584
+#: src/elflint.c:3608 src/elflint.c:3640
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -2586,7 +2666,7 @@
 "sekcja [%2zu] \"%s\" nie posiada flagi SHF_ALLOC, ale są segmenty "
 "wczytywalne\n"
 
-#: src/elflint.c:3560
+#: src/elflint.c:3616
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -2594,23 +2674,23 @@
 "sekcja [%2zu] \"%s\" jest tabelą indeksów sekcji rozszerzeń w pliku "
 "nieobiektowym\n"
 
-#: src/elflint.c:3603
+#: 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:3608
+#: src/elflint.c:3664
 #, c-format
 msgid "cannot get section header\n"
 msgstr "nie można uzyskać nagłówka sekcji\n"
 
-#: src/elflint.c:3618
+#: 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:3632
+#: src/elflint.c:3688
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -2618,56 +2698,56 @@
 "sekcja [%2zu] \"%s\" zawiera nieprawidłowe flagi specyficzne dla procesora "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3639
+#: 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:3647
+#: 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:3655
+#: 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:3660
+#: 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:3667
+#: 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:3672
+#: 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:3690
+#: 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:3699
+#: 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:3726
+#: src/elflint.c:3784
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -2676,7 +2756,7 @@
 "sekcja [%2zu] \"%s\" nie jest w całości zawarta w segmencie wpisu %d "
 "nagłówka programu\n"
 
-#: src/elflint.c:3734
+#: src/elflint.c:3792
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -2685,7 +2765,7 @@
 "sekcja [%2zu] \"%s\" posiada typ NOBITS, a jest odczytywana z pliku w "
 "segmencie wpisu %d nagłówka programu\n"
 
-#: src/elflint.c:3743
+#: src/elflint.c:3801
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -2694,17 +2774,17 @@
 "sekcja [%2zu] \"%s\" nie posiada typu NOBITS, a nie jest odczytywana z pliku "
 "w segmencie wpisu %d nagłówka programu\n"
 
-#: src/elflint.c:3754
+#: 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:3764
+#: 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:3774
+#: src/elflint.c:3832
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -2712,7 +2792,7 @@
 "sekcja [%2zu] \"%s\": posiada flagę alloc, ale sekcja nie jest w żadnym "
 "segmencie wczytywalnym\n"
 
-#: src/elflint.c:3780
+#: src/elflint.c:3838
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -2721,7 +2801,7 @@
 "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:3788
+#: src/elflint.c:3846
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -2729,17 +2809,17 @@
 "sekcja [%2zu] \"%s\": pliki relokowalne nie mogą posiadać tabeli symboli "
 "dynamicznych\n"
 
-#: src/elflint.c:3839
+#: 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:3862
+#: 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:3873
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
@@ -2747,14 +2827,14 @@
 "wczytywalny segment [%u] jest wykonywalny, ale nie zawiera wykonywalnych "
 "sekcji\n"
 
-#: src/elflint.c:3879
+#: 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:3890
+#: src/elflint.c:3948
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -2763,23 +2843,23 @@
 "brak sekcji .gnu.versym, ale istnieje sekcja .gnu.versym_d lub .gnu."
 "versym_r\n"
 
-#: src/elflint.c:3903
+#: src/elflint.c:3961
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "powtórzony indeks wersji %d\n"
 
-#: src/elflint.c:3917
+#: 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:3966
+#: 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:3970
+#: src/elflint.c:4028
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
@@ -2787,13 +2867,13 @@
 "phdr[%2d]: \"%s\": nieznany typ notatki pliku core %<PRIu32> pod offsetem "
 "%Zu\n"
 
-#: src/elflint.c:3993
+#: 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:3997
+#: src/elflint.c:4055
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
@@ -2801,37 +2881,37 @@
 "phdr[%d]: \"%s\": nieznany typ notatki pliku obiektu %<PRIu32> pod offsetem "
 "%Zu\n"
 
-#: src/elflint.c:4014
+#: 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:4033
+#: 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:4036
+#: 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:4057
+#: 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:4064
+#: 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:4067
+#: 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:4085
+#: src/elflint.c:4143
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -2839,129 +2919,129 @@
 "tylko pliki wykonywalne, obiekty współdzielone i pliki core mogą posiadać "
 "nagłówki programu\n"
 
-#: src/elflint.c:4100
+#: 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:4109
+#: 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:4120
+#: 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:4128
+#: 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:4135
+#: 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:4149
+#: 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:4152
+#: 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:4162
+#: 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:4183
+#: 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:4186
+#: 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:4194 src/elflint.c:4217
+#: 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:4223
+#: 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:4247
+#: 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:4250
+#: 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:4263
+#: 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:4271
+#: 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:4274
+#: 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:4278
+#: 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:4281
+#: 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:4286
+#: 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:4289
+#: 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:4300
+#: 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:4307
+#: 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:4310
+#: src/elflint.c:4368
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -2970,7 +3050,7 @@
 "wpis nagłówka programu %d: offset w pliku i adres wirtualny nie są "
 "wielokrotnością wyrównania\n"
 
-#: src/elflint.c:4323
+#: src/elflint.c:4381
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -2979,100 +3059,105 @@
 "plik wykonywalny/DSO z sekcją .eh_frame_hdr nie posiada wpisu nagłówka "
 "programu PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4357
+#: 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:4383
+#: 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/findtextrel.c:70
+#: src/findtextrel.c:62
 msgid "Input Selection:"
 msgstr "Wybór wejścia:"
 
-#: src/findtextrel.c:71
+#: src/findtextrel.c:63
 msgid "Prepend PATH to all file names"
 msgstr "Dołącza ŚCIEŻKĘ do wszystkich nazw plików"
 
-#: src/findtextrel.c:73
+#: src/findtextrel.c:65
 msgid "Use PATH as root of debuginfo hierarchy"
 msgstr "Używa ŚCIEŻKI jako korzenia dla hierarchii debuginfo"
 
-#: src/findtextrel.c:80
+#: src/findtextrel.c:72
 msgid "Locate source of text relocations in FILEs (a.out by default)."
 msgstr "Odnajduje źródło relokacji tekstu w PLIKACH (domyślnie a.out)."
 
-#: src/findtextrel.c:84 src/nm.c:116 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:104
+#: src/findtextrel.c:76 src/nm.c:108 src/objdump.c:72 src/size.c:84
+#: src/strings.c:84 src/strip.c:96
 msgid "[FILE...]"
 msgstr "[PLIK...]"
 
-#: src/findtextrel.c:246
+#: src/findtextrel.c:238
 #, c-format
 msgid "cannot get ELF header '%s': %s"
 msgstr "nie można uzyskać nagłówka ELF \"%s\": %s"
 
-#: src/findtextrel.c:257
+#: src/findtextrel.c:249
 #, c-format
 msgid "'%s' is not a DSO or PIE"
 msgstr "\"%s\" nie jest DSO ani PIE"
 
-#: src/findtextrel.c:277
+#: src/findtextrel.c:269
 #, c-format
 msgid "getting get section header of section %zu: %s"
 msgstr "uzyskiwanie nagłówka sekcji dla sekcji %zu: %s"
 
-#: src/findtextrel.c:300
+#: src/findtextrel.c:292
 #, c-format
 msgid "cannot read dynamic section: %s"
 msgstr "nie można odczytać sekcji dynamicznej: %s"
 
-#: src/findtextrel.c:321
+#: src/findtextrel.c:313
 #, c-format
 msgid "no text relocations reported in '%s'"
 msgstr "brak relokacji tekstu w \"%s\""
 
-#: src/findtextrel.c:333
+#: src/findtextrel.c:325
 #, c-format
 msgid "while reading ELF file"
 msgstr "podczas odczytywania pliku ELF"
 
-#: src/findtextrel.c:342 src/findtextrel.c:359
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
+#: src/findtextrel.c:329
+#, fuzzy, c-format
+msgid "cannot get program header count: %s"
+msgstr "nie można uzyskać nagłówka programu: %s"
+
+#: src/findtextrel.c:340 src/findtextrel.c:357
+#, fuzzy, c-format
+msgid "cannot get program header index at offset %zd: %s"
 msgstr "nie można uzyskać indeksu nagłówka programu pod offsetem %d: %s"
 
-#: src/findtextrel.c:411
+#: src/findtextrel.c:409
 #, c-format
 msgid "cannot get section header of section %Zu: %s"
 msgstr "nie można uzyskać nagłówka sekcji dla sekcji %Zu: %s"
 
-#: src/findtextrel.c:423
+#: src/findtextrel.c:421
 #, c-format
 msgid "cannot get symbol table section %zu in '%s': %s"
 msgstr "nie można uzyskać sekcji tabeli symboli %zu w \"%s\": %s"
 
-#: src/findtextrel.c:443 src/findtextrel.c:466
+#: src/findtextrel.c:441 src/findtextrel.c:464
 #, c-format
 msgid "cannot get relocation at index %d in section %zu in '%s': %s"
 msgstr "nie można uzyskać relokacji pod indeksem %d w sekcji %zu w \"%s\": %s"
 
-#: src/findtextrel.c:531
+#: src/findtextrel.c:529
 #, c-format
 msgid "%s not compiled with -fpic/-fPIC\n"
 msgstr "%s nie został skompilowany z -fpic/-fPIC\n"
 
-#: src/findtextrel.c:584
+#: src/findtextrel.c:582
 #, c-format
 msgid ""
 "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 "plik zawierający funkcję \"%s\" nie został skompilowany z -fpic/-fPIC\n"
 
-#: src/findtextrel.c:591 src/findtextrel.c:611
+#: src/findtextrel.c:589 src/findtextrel.c:609
 #, c-format
 msgid ""
 "the file containing the function '%s' might not be compiled with -fpic/-"
@@ -3080,7 +3165,7 @@
 msgstr ""
 "plik zawierający funkcję \"%s\" mógł nie zostać skompilowany z -fpic/-fPIC\n"
 
-#: src/findtextrel.c:599
+#: src/findtextrel.c:597
 #, c-format
 msgid ""
 "either the file containing the function '%s' or the file containing the "
@@ -3089,7 +3174,7 @@
 "plik zawierający funkcję \"%s\" lub plik zawierający funkcję \"%s\" nie "
 "został skompilowany z -fpic/-fPIC\n"
 
-#: src/findtextrel.c:619
+#: src/findtextrel.c:617
 #, c-format
 msgid ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
@@ -3097,466 +3182,467 @@
 "relokacja modyfikuje pamięć pod offsetem %llu w segmencie zabezpieczonym "
 "przed zapisem\n"
 
-#: src/i386_ld.c:210
+#: src/i386_ld.c:202
 #, c-format
 msgid "cannot allocate PLT section: %s"
 msgstr "nie można przydzielić sekcji PLT: %s"
 
-#: src/i386_ld.c:232
+#: src/i386_ld.c:224
 #, c-format
 msgid "cannot allocate PLTREL section: %s"
 msgstr "nie można przydzielić sekcji PLTREL: %s"
 
-#: src/i386_ld.c:253
+#: src/i386_ld.c:245
 #, c-format
 msgid "cannot allocate GOT section: %s"
 msgstr "nie można przydzielić sekcji GOT: %s"
 
-#: src/i386_ld.c:274
+#: src/i386_ld.c:266
 #, c-format
 msgid "cannot allocate GOTPLT section: %s"
 msgstr "nie można przydzielić sekcji GOTPLT: %s"
 
-#: src/i386_ld.c:661
+#: src/i386_ld.c:653
 #, c-format
 msgid "initial-executable TLS relocation cannot be used "
 msgstr "początkowo wykonywalna relokacja TLS nie może zostać użyta "
 
-#: src/ld.c:87
+#: src/ld.c:79
 msgid "Input File Control:"
 msgstr "Sterowanie plikiem wejściowym:"
 
-#: src/ld.c:89
+#: src/ld.c:81
 msgid "Include whole archives in the output from now on."
 msgstr "Dołącza całe archiwa w wyjściu od teraz."
 
-#: src/ld.c:91
+#: src/ld.c:83
 msgid "Stop including the whole archives in the output."
 msgstr "Przestaje dołączać całe archiwa w wyjściu."
 
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
+#: src/ld.c:84 src/ld.c:98 src/ld.c:176
 msgid "FILE"
 msgstr "PLIK"
 
-#: src/ld.c:93
+#: src/ld.c:85
 msgid "Start a group."
 msgstr "Rozpoczyna grupę."
 
-#: src/ld.c:94
+#: src/ld.c:86
 msgid "End a group."
 msgstr "Kończy grupę."
 
-#: src/ld.c:95
+#: src/ld.c:87
 msgid "PATH"
 msgstr "ŚCIEŻKA"
 
-#: src/ld.c:96
+#: src/ld.c:88
 msgid "Add PATH to list of directories files are searched in."
 msgstr "Dodaje ŚCIEŻKĘ do listy katalogów, w których są szukane pliki."
 
-#: src/ld.c:98
+#: src/ld.c:90
 msgid "Only set DT_NEEDED for following dynamic libs if actually used"
 msgstr ""
 "Ustawia DT_NEEDED dla następujących bibliotek dynamicznych tylko, jeśli są "
 "używane"
 
-#: src/ld.c:100
+#: src/ld.c:92
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr "Ustawia zawsze DT_NEEDED dla następujących bibliotek dynamicznych"
 
-#: src/ld.c:102
+#: src/ld.c:94
 msgid "Ignore LD_LIBRARY_PATH environment variable."
 msgstr "Ignoruje zmienną środowiskową LD_LIBRARY_PATH."
 
-#: src/ld.c:105
+#: src/ld.c:97
 msgid "Output File Control:"
 msgstr "Sterowanie plikiem wyjściowym:"
 
-#: src/ld.c:106
+#: src/ld.c:98
 msgid "Place output in FILE."
 msgstr "Umieszcza wyjście w PLIKU."
 
-#: src/ld.c:109
+#: src/ld.c:101
 msgid "Object is marked to not use default search path at runtime."
 msgstr "Oznacza obiekt, aby nie używał domyślnej ścieżki przeszukiwań."
 
-#: src/ld.c:111
+#: src/ld.c:103
 msgid "Same as --whole-archive."
 msgstr "To samo, co --whole-archive."
 
-#: src/ld.c:112
+#: src/ld.c:104
 msgid ""
 "Default rules of extracting from archive; weak references are not enough."
 msgstr ""
 "Domyślne reguły wydobywania z archiwum; słabe odwołania nie wystarczają."
 
-#: src/ld.c:116
+#: src/ld.c:108
 msgid "Weak references cause extraction from archive."
 msgstr "Słabe odwołania powodują wydobywanie z archiwum."
 
-#: src/ld.c:118
+#: src/ld.c:110
 msgid "Allow multiple definitions; first is used."
 msgstr "Zezwala na wielokrotne definicje; używana jest pierwsza."
 
-#: src/ld.c:120
+#: src/ld.c:112
 msgid "Disallow/allow undefined symbols in DSOs."
 msgstr "Zabrania/zezwala na nieokreślone symbole w DSO."
 
-#: src/ld.c:123
+#: src/ld.c:115
 msgid "Object requires immediate handling of $ORIGIN."
 msgstr "Obiekt wymaga natychmiastowej obsługi $ORIGIN."
 
-#: src/ld.c:125
+#: src/ld.c:117
 msgid "Relocation will not be processed lazily."
 msgstr "Relokacje nie będą przeprowadzane leniwie."
 
-#: src/ld.c:127
+#: src/ld.c:119
 msgid "Object cannot be unloaded at runtime."
 msgstr "Obiekt nie może być wyładowany w czasie działania."
 
-#: src/ld.c:129
+#: src/ld.c:121
 msgid "Mark object to be initialized first."
 msgstr "Oznacza obiekt, aby był inicjowany jako pierwszy."
 
-#: src/ld.c:131
+#: src/ld.c:123
 msgid "Enable/disable lazy-loading flag for following dependencies."
 msgstr "Włącza/wyłącza flagi leniwego wczytywania dla następnych zależności."
 
-#: src/ld.c:133
+#: src/ld.c:125
 msgid "Mark object as not loadable with 'dlopen'."
 msgstr "Oznacza obiekt jako niewczytywalnego przez \"dlopen\"."
 
-#: src/ld.c:135
+#: src/ld.c:127
 msgid "Ignore/record dependencies on unused DSOs."
 msgstr "Ignoruje/zapisuje zależności od nieużywanych DSO."
 
-#: src/ld.c:137
+#: src/ld.c:129
 msgid "Generated DSO will be a system library."
 msgstr "Utworzony DSO będzie biblioteką systemową."
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "ADDRESS"
 msgstr "ADRES"
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "Set entry point address."
 msgstr "Ustawia adres punktu wejściowego."
 
-#: src/ld.c:141
+#: src/ld.c:133
 msgid "Do not link against shared libraries."
 msgstr "Bez konsolidowania z bibliotekami współdzielonymi."
 
-#: src/ld.c:144
+#: src/ld.c:136
 msgid "Prefer linking against shared libraries."
 msgstr "Preferuje konsolidowanie z bibliotekami dzielonymi."
 
-#: src/ld.c:145
+#: src/ld.c:137
 msgid "Export all dynamic symbols."
 msgstr "Eksportuje wszystkie symbole dynamiczne."
 
-#: src/ld.c:146
+#: src/ld.c:138
 msgid "Strip all symbols."
 msgstr "Skraca wszystkie symbole."
 
-#: src/ld.c:147
+#: src/ld.c:139
 msgid "Strip debugging symbols."
 msgstr "Skraca symbole debugowania."
 
-#: src/ld.c:149
+#: src/ld.c:141
 msgid "Assume pagesize for the target system to be SIZE."
 msgstr "Przyjmuje dla systemu docelowego rozmiaru strony ROZMIAR."
 
-#: src/ld.c:151
+#: src/ld.c:143
 msgid "Set runtime DSO search path."
 msgstr "Ustawia ścieżkę poszukiwania DSO w czasie działania."
 
-#: src/ld.c:154
+#: src/ld.c:146
 msgid "Set link time DSO search path."
 msgstr "Ustawia ścieżki poszukiwania DSO w czasie konsolidowania."
 
-#: src/ld.c:155
+#: src/ld.c:147
 msgid "Generate dynamic shared object."
 msgstr "Tworzy dynamiczny obiekt współdzielony."
 
-#: src/ld.c:156
+#: src/ld.c:148
 msgid "Generate relocatable object."
 msgstr "Tworzy obiekt relokowalny."
 
-#: src/ld.c:159
+#: src/ld.c:151
 msgid "Causes symbol not assigned to a version be reduced to local."
 msgstr "Ogranicza zasięg symboli nieprzypisanych do wersji do lokalnego."
 
-#: src/ld.c:160
+#: src/ld.c:152
 msgid "Remove unused sections."
 msgstr "Usuwa nieużywane sekcje."
 
-#: src/ld.c:163
+#: src/ld.c:155
 msgid "Don't remove unused sections."
 msgstr "Bez usuwania nieużywanych sekcji."
 
-#: src/ld.c:164
+#: src/ld.c:156
 msgid "Set soname of shared object."
 msgstr "Ustawia soname obiektu współdzielonego."
 
-#: src/ld.c:165
+#: src/ld.c:157
 msgid "Set the dynamic linker name."
 msgstr "Ustawia nazwę dynamicznego konsolidatora."
 
-#: src/ld.c:168
+#: src/ld.c:160
 msgid "Add/suppress addition indentifying link-editor to .comment section."
 msgstr ""
 "Dodaje/pomija dodanie identyfikacji edytora konsolidacji do sekcji .comment"
 
-#: src/ld.c:171
+#: src/ld.c:163
 msgid "Create .eh_frame_hdr section"
 msgstr "Tworzy sekcję .eh_frame_hdr"
 
-#: src/ld.c:173
+#: src/ld.c:165
 msgid "Set hash style to sysv, gnu or both."
 msgstr "Ustawia styl sum kontrolnych na sysv, gnu lub oba."
 
-#: src/ld.c:175
+#: 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:177
+#: src/ld.c:169
 msgid "Linker Operation Control:"
 msgstr "Sterowanie działaniami konsolidatora:"
 
-#: src/ld.c:178
+#: src/ld.c:170
 msgid "Verbose messages."
 msgstr "Szczegółowe komunikaty."
 
-#: src/ld.c:179
+#: src/ld.c:171
 msgid "Trace file opens."
 msgstr "Śledzi otwarcia plików."
 
-#: src/ld.c:181
+#: src/ld.c:173
 msgid "Trade speed for less memory usage"
 msgstr "Poświęca prędkość na mniejsze zużycie pamięci"
 
-#: src/ld.c:182
+#: src/ld.c:174
 msgid "LEVEL"
 msgstr "POZIOM"
 
-#: src/ld.c:183
+#: src/ld.c:175
 msgid "Set optimization level to LEVEL."
 msgstr "Ustawia poziom optymalizacji na POZIOM."
 
-#: src/ld.c:184
+#: src/ld.c:176
 msgid "Use linker script in FILE."
 msgstr "Używa skryptu konsolidatora z PLIKU."
 
-#: src/ld.c:187
+#: src/ld.c:179
 msgid "Select to get parser debug information"
 msgstr "Wybiera pobranie informacji debugowania parsera"
 
-#: src/ld.c:190
+#: src/ld.c:182
 msgid "Read version information from FILE."
 msgstr "Odczytuje informacje o wersji z PLIKU."
 
-#: src/ld.c:191
+#: src/ld.c:183
 msgid "Set emulation to NAME."
 msgstr "Ustawia emulację na NAZWĘ."
 
-#: src/ld.c:197
+#: src/ld.c:189
 msgid "Combine object and archive files."
 msgstr "Łączy pliki obiektów i archiwów."
 
-#: src/ld.c:200
+#: src/ld.c:192
 msgid "[FILE]..."
 msgstr "[PLIK]..."
 
-#: src/ld.c:333
+#: src/ld.c:325
 #, c-format
 msgid "At least one input file needed"
 msgstr "Wymagany jest co najmniej jeden plik wejściowy"
 
-#: src/ld.c:349
+#: src/ld.c:341
 #, c-format
 msgid "error while preparing linking"
 msgstr "błąd podczas przygotowywania konsolidowania"
 
-#: src/ld.c:356
+#: src/ld.c:348
 #, c-format
 msgid "cannot open linker script '%s'"
 msgstr "nie można otworzyć skryptu konsolidatora \"%s\""
 
-#: src/ld.c:397
+#: src/ld.c:389
 #, c-format
 msgid "-( without matching -)"
 msgstr "-( bez pasującego -)"
 
-#: src/ld.c:572 src/ld.c:610
+#: src/ld.c:564 src/ld.c:602
 #, c-format
 msgid "only one option of -G and -r is allowed"
 msgstr "dozwolona jest tylko jedna z opcji -G i -r"
 
-#: src/ld.c:594
+#: src/ld.c:586
 #, c-format
 msgid "more than one '-m' parameter"
 msgstr "podano więcej niż jeden parametr \"-m\""
 
-#: src/ld.c:604 src/ld.c:1013
+#: src/ld.c:596 src/ld.c:1005
 #, c-format
 msgid "unknown option `-%c %s'"
 msgstr "nieznana opcja \"-%c %s\""
 
-#: src/ld.c:646
+#: src/ld.c:638
 #, c-format
 msgid "invalid page size value '%s': ignored"
 msgstr "nieprawidłowa wartość rozmiaru strony \"%s\": zignorowano"
 
-#: src/ld.c:687
+#: src/ld.c:679
 #, c-format
 msgid "invalid hash style '%s'"
 msgstr "nieprawidłowy styl sum kontrolnych \"%s\""
 
-#: src/ld.c:697
+#: src/ld.c:689
 #, c-format
 msgid "invalid build-ID style '%s'"
 msgstr "nieprawidłowy styl identyfikatora budowania \"%s\""
 
-#: src/ld.c:785
+#: src/ld.c:777
 #, c-format
 msgid "More than one output file name given."
 msgstr "Podano więcej niż jeden plik wyjściowy."
 
-#: src/ld.c:802
+#: src/ld.c:794
 #, c-format
 msgid "Invalid optimization level `%s'"
 msgstr "Nieprawidłowy poziom optymalizacji \"%s\""
 
-#: src/ld.c:850
+#: src/ld.c:842
 #, c-format
 msgid "nested -( -) groups are not allowed"
 msgstr "zagnieżdżone grupy -( -) nie są dozwolone"
 
-#: src/ld.c:869
+#: src/ld.c:861
 #, c-format
 msgid "-) without matching -("
 msgstr "-) bez pasującego -("
 
-#: src/ld.c:1046
+#: src/ld.c:1038
 #, c-format
 msgid "unknown option '-%c %s'"
 msgstr "nieznana opcja \"-%c %s\""
 
-#: src/ld.c:1150
+#: src/ld.c:1142
 #, c-format
 msgid "could not find input file to determine output file format"
 msgstr ""
 "nie można odnaleźć pliku wejściowego, aby określić format pliku wyjściowego"
 
-#: src/ld.c:1152
+#: src/ld.c:1144
 #, c-format
 msgid "try again with an appropriate '-m' parameter"
 msgstr "proszę spróbować jeszcze raz z odpowiednim parametrem \"-m\""
 
-#: src/ld.c:1446
+#: src/ld.c:1438
 #, c-format
 msgid "cannot read version script '%s'"
 msgstr "nie można odczytać skryptu wersji \"%s\""
 
-#: src/ld.c:1512 src/ld.c:1551
+#: src/ld.c:1504 src/ld.c:1543
 #, c-format
 msgid "duplicate definition of '%s' in linker script"
 msgstr "powtórzona definicja \"%s\" w skrypcie konsolidatora"
 
-#: src/ldgeneric.c:209 src/ldgeneric.c:5149
+#: src/ldgeneric.c:201 src/ldgeneric.c:5141
 #, c-format
 msgid "cannot create string table"
 msgstr "nie można utworzyć tabeli ciągów"
 
-#: src/ldgeneric.c:255
+#: src/ldgeneric.c:247
 #, c-format
 msgid "cannot load ld backend library '%s': %s"
 msgstr "nie można odczytać biblioteki zaplecza ld \"%s\": %s"
 
-#: src/ldgeneric.c:265
+#: src/ldgeneric.c:257
 #, c-format
 msgid "cannot find init function in ld backend library '%s': %s"
 msgstr "nie można odnaleźć funkcji init w bibliotece zaplecza ld \"%s\": %s"
 
-#: src/ldgeneric.c:308
+#: src/ldgeneric.c:300
 #, c-format
 msgid "%s listed more than once as input"
 msgstr "%s podano więcej niż raz w wejściu"
 
-#: src/ldgeneric.c:422
+#: src/ldgeneric.c:414
 #, c-format
 msgid "%s (for -l%s)\n"
 msgstr "%s (dla -l%s)\n"
 
-#: src/ldgeneric.c:423
+#: src/ldgeneric.c:415
 #, c-format
 msgid "%s (for DT_NEEDED %s)\n"
 msgstr "%s (dla DT_NEEDED %s)\n"
 
-#: src/ldgeneric.c:571
+#: src/ldgeneric.c:563
 #, c-format
 msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
 msgstr "Ostrzeżenie: typ \"%s\" zmienił się z %s w %s na %s w %s"
 
-#: src/ldgeneric.c:584
+#: src/ldgeneric.c:576
 #, c-format
 msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
 msgstr ""
 "Ostrzeżenie: rozmiar \"%s\" zmienił się z %<PRIu64> w %s na %<PRIu64> w %s"
 
-#: src/ldgeneric.c:659 src/ldgeneric.c:1120 src/readelf.c:642 src/strip.c:570
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:568
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "nie można określić liczby sekcji: %s"
 
-#: src/ldgeneric.c:675
+#: src/ldgeneric.c:667
 #, c-format
 msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
 msgstr "(%s+%#<PRIx64>): wielokrotna definicja %s `%s'\n"
 
-#: src/ldgeneric.c:698
+#: src/ldgeneric.c:690
 #, c-format
 msgid "(%s+%#<PRIx64>): first defined here\n"
 msgstr "(%s+%#<PRIx64>): pierwszy raz określono tutaj\n"
 
-#: src/ldgeneric.c:817
+#: src/ldgeneric.c:809
 #, c-format
 msgid "%s: cannot get section group data: %s"
 msgstr "%s: nie można uzyskać danych grupy sekcji: %s"
 
-#: src/ldgeneric.c:838
+#: src/ldgeneric.c:830
 #, c-format
 msgid "%s: section '%s' with group flag set does not belong to any group"
 msgstr "%s: sekcja \"%s\" z ustawioną flagą grupy nie należy do żadnej grupy"
 
-#: src/ldgeneric.c:883
+#: src/ldgeneric.c:875
 #, c-format
 msgid "%s: section [%2d] '%s' is not in the correct section group"
 msgstr "%s: sekcja [%2d] \"%s\" nie jest w poprawnej grupie sekcji"
 
-#: src/ldgeneric.c:1154 src/ldgeneric.c:1411 src/ldgeneric.c:1420
-#: src/ldgeneric.c:1479 src/ldgeneric.c:1488 src/ldgeneric.c:1751
-#: src/ldgeneric.c:2003
+#: src/ldgeneric.c:1146 src/ldgeneric.c:1403 src/ldgeneric.c:1412
+#: src/ldgeneric.c:1471 src/ldgeneric.c:1480 src/ldgeneric.c:1743
+#: src/ldgeneric.c:1995
 #, c-format
 msgid "%s: invalid ELF file (%s:%d)\n"
 msgstr "%s: nieprawidłowy plik ELF (%s:%d)\n"
 
-#: src/ldgeneric.c:1248
+#: src/ldgeneric.c:1240
 #, c-format
 msgid "%s: only files of type ET_REL might contain section groups"
 msgstr "%s: tylko pliki typu ET_REL mogą zawierać grupy sekcji"
 
-#: src/ldgeneric.c:1300
+#: src/ldgeneric.c:1292
 #, c-format
 msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
 msgstr "%s: nie można określić podpisu grupy sekcji [%2zd] \"%s\": %s"
 
-#: src/ldgeneric.c:1312
+#: src/ldgeneric.c:1304
 #, c-format
 msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
 msgstr "%s: nie można uzyskać zawartości grupy sekcji [%2zd] \"%s\": %s"
 
-#: src/ldgeneric.c:1326
+#: src/ldgeneric.c:1318
 #, c-format
 msgid ""
 "%s: group member %zu of section group [%2zd] '%s' has too high index: "
@@ -3565,76 +3651,76 @@
 "%s: element grupy %zu grupy sekcji [%2zd] \"%s\" posiada za wysoki indeks: "
 "%<PRIu32>"
 
-#: src/ldgeneric.c:1348
+#: src/ldgeneric.c:1340
 #, c-format
 msgid "%s: section '%s' has unknown type: %d"
 msgstr "%s: sekcja \"%s\" posiada nieznany typ: %d"
 
-#: src/ldgeneric.c:1727
+#: src/ldgeneric.c:1719
 #, c-format
 msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
 msgstr "nie można uzyskać deskryptora dla pliku ELF (%s:%d): %s\n"
 
-#: src/ldgeneric.c:1897
+#: src/ldgeneric.c:1889
 #, c-format
 msgid "cannot read archive `%s': %s"
 msgstr "nie można odczytać archiwum \"%s\": %s"
 
-#: src/ldgeneric.c:2018
+#: src/ldgeneric.c:2010
 #, c-format
 msgid "file of type %s cannot be linked in\n"
 msgstr "plik typu %s nie może zostać wkonsolidowany\n"
 
-#: src/ldgeneric.c:2030
+#: src/ldgeneric.c:2022
 #, c-format
 msgid "%s: input file incompatible with ELF machine type %s\n"
 msgstr "%s: plik wejściowy jest niezgodny z rodzajem komputera ELF %s\n"
 
-#: src/ldgeneric.c:2042
+#: src/ldgeneric.c:2034
 #, c-format
 msgid "%s: cannot get section header string table index: %s\n"
 msgstr "%s: nie można uzyskać indeksu tabeli ciągów nagłówków sekcji: %s\n"
 
-#: src/ldgeneric.c:2071
+#: src/ldgeneric.c:2063
 #, c-format
 msgid "cannot use DSO '%s' when generating relocatable object file"
 msgstr ""
 "nie można użyć DSO \"%s\" podczas tworzenia relokowalnego pliku obiektu"
 
-#: src/ldgeneric.c:2156
+#: src/ldgeneric.c:2148
 #, c-format
 msgid "input file '%s' ignored"
 msgstr "plik wejściowy \"%s\" został zignorowany"
 
-#: src/ldgeneric.c:2370
+#: src/ldgeneric.c:2362
 #, c-format
 msgid "undefined symbol `%s' in %s"
 msgstr "nieokreślony symbol \"%s\" w %s"
 
-#: src/ldgeneric.c:2700
+#: src/ldgeneric.c:2692
 #, c-format
 msgid "cannot create ELF descriptor for output file: %s"
 msgstr "nie można utworzyć deskryptora ELF dla pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:2707
+#: src/ldgeneric.c:2699
 #, c-format
 msgid "could not create ELF header for output file: %s"
 msgstr "nie można utworzyć nagłówka ELF dla pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:3222 src/ldgeneric.c:3292 src/ldgeneric.c:3328
-#: src/ldgeneric.c:4455 src/ldgeneric.c:4504 src/ldgeneric.c:4536
-#: src/ldgeneric.c:4771 src/ldgeneric.c:4826 src/ldgeneric.c:5073
-#: src/ldgeneric.c:5129 src/ldgeneric.c:5598 src/ldgeneric.c:5610
+#: src/ldgeneric.c:3214 src/ldgeneric.c:3284 src/ldgeneric.c:3320
+#: src/ldgeneric.c:4447 src/ldgeneric.c:4496 src/ldgeneric.c:4528
+#: src/ldgeneric.c:4763 src/ldgeneric.c:4818 src/ldgeneric.c:5065
+#: src/ldgeneric.c:5121 src/ldgeneric.c:5590 src/ldgeneric.c:5602
 #, c-format
 msgid "cannot create section for output file: %s"
 msgstr "nie można utworzyć sekcji dla pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:3442
+#: src/ldgeneric.c:3434
 #, c-format
 msgid "address computation expression contains variable '%s'"
 msgstr "wyrażenie obliczenia adresu zawiera zmienną \"%s\""
 
-#: src/ldgeneric.c:3487
+#: src/ldgeneric.c:3479
 #, c-format
 msgid ""
 "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
@@ -3643,215 +3729,215 @@
 "parametr \"%<PRIuMAX>\" ALIGN w wyrażeniu obliczenia adresu nie jest potęgą "
 "dwójki"
 
-#: src/ldgeneric.c:3682
+#: src/ldgeneric.c:3674
 #, c-format
 msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 msgstr ""
 "nie można odnaleźć symbolu wejściowego \"%s\": użycie domyślnego %#0*<PRIx64>"
 
-#: src/ldgeneric.c:3688
+#: src/ldgeneric.c:3680
 #, c-format
 msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
 msgstr "nie określono symbolu wejściowego: użycie domyślnego %#0*<PRIx64>"
 
-#: src/ldgeneric.c:3918
+#: src/ldgeneric.c:3910
 #, c-format
 msgid "cannot create GNU hash table section for output file: %s"
 msgstr ""
 "nie można utworzyć sekcji tabeli mieszającej GNU dla pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:4069
+#: src/ldgeneric.c:4061
 #, c-format
 msgid "cannot create hash table section for output file: %s"
 msgstr "nie można utworzyć sekcji tabeli mieszającej dla pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:4112
+#: 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:4189
+#: src/ldgeneric.c:4181
 #, c-format
 msgid "cannot convert section data to file format: %s"
 msgstr "nie można przekonwertować danych sekcji na format pliku: %s"
 
-#: src/ldgeneric.c:4198
+#: src/ldgeneric.c:4190
 #, c-format
 msgid "cannot convert section data to memory format: %s"
 msgstr "nie można przekonwertować danych sekcji na format pamięci: %s"
 
-#: src/ldgeneric.c:4259
+#: src/ldgeneric.c:4251
 #, c-format
 msgid "cannot read enough data for UUID"
 msgstr "nie można odczytać danych wystarczających dla UUID"
 
-#: src/ldgeneric.c:4356 src/ldgeneric.c:4377 src/ldgeneric.c:4406
-#: src/ldgeneric.c:6059
+#: src/ldgeneric.c:4348 src/ldgeneric.c:4369 src/ldgeneric.c:4398
+#: src/ldgeneric.c:6051
 #, c-format
 msgid "cannot create symbol table for output file: %s"
 msgstr "nie można utworzyć tabeli symboli dla pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:5298 src/ldgeneric.c:5850
+#: src/ldgeneric.c:5290 src/ldgeneric.c:5842
 #, c-format
 msgid "section index too large in dynamic symbol table"
 msgstr "indeks sekcji za duży w tabeli symboli dynamicznych"
 
-#: src/ldgeneric.c:5743
+#: src/ldgeneric.c:5735
 #, c-format
 msgid "cannot create versioning section: %s"
 msgstr "nie można utworzyć sekcji wersjonowania: %s"
 
-#: src/ldgeneric.c:5816
+#: src/ldgeneric.c:5808
 #, c-format
 msgid "cannot create dynamic symbol table for output file: %s"
 msgstr ""
 "nie można utworzyć tabeli symboli dynamicznych dla pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:5991
+#: src/ldgeneric.c:5983
 #, c-format
 msgid "cannot create versioning data: %s"
 msgstr "nie można utworzyć danych wersjonowania: %s"
 
-#: src/ldgeneric.c:6091 src/ldgeneric.c:6104 src/ldgeneric.c:6168
-#: src/ldgeneric.c:6176
+#: src/ldgeneric.c:6083 src/ldgeneric.c:6096 src/ldgeneric.c:6160
+#: src/ldgeneric.c:6168
 #, c-format
 msgid "cannot create section header string section: %s"
 msgstr "nie można utworzyć sekcji ciągów nagłówków sekcji: %s"
 
-#: src/ldgeneric.c:6098
+#: src/ldgeneric.c:6090
 #, c-format
 msgid "cannot create section header string section"
 msgstr "nie można utworzyć sekcji ciągów nagłówków sekcji"
 
-#: src/ldgeneric.c:6256
+#: src/ldgeneric.c:6248
 #, c-format
 msgid "cannot create program header: %s"
 msgstr "nie można utworzyć nagłówka programu: %s"
 
-#: src/ldgeneric.c:6264
+#: src/ldgeneric.c:6256
 #, c-format
 msgid "while determining file layout: %s"
 msgstr "podczas określania układu pliku: %s"
 
-#: src/ldgeneric.c:6385
+#: src/ldgeneric.c:6377
 #, c-format
 msgid "internal error: non-nobits section follows nobits section"
 msgstr "błąd wewnętrzny: sekcja nie będąca nobits po sekcji nobits"
 
-#: src/ldgeneric.c:6922
+#: src/ldgeneric.c:6914
 #, c-format
 msgid "cannot get header of 0th section: %s"
 msgstr "nie można uzyskać nagłówka zerowej sekcji: %s"
 
-#: src/ldgeneric.c:6938 src/unstrip.c:1818
+#: src/ldgeneric.c:6930 src/unstrip.c:1822
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "nie można zaktualizować nagłówka ELF: %s"
 
-#: src/ldgeneric.c:6969
+#: src/ldgeneric.c:6961
 #, c-format
 msgid "linker backend didn't specify function to relocate section"
 msgstr "zaplecze konsolidatora nie określiło funkcji dla sekcji relokacji"
 
-#: src/ldgeneric.c:6981
+#: src/ldgeneric.c:6973
 #, c-format
 msgid "while writing output file: %s"
 msgstr "podczas zapisywania pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:6986
+#: src/ldgeneric.c:6978
 #, c-format
 msgid "while finishing output file: %s"
 msgstr "podczas kończenia pliku wyjściowego: %s"
 
-#: src/ldgeneric.c:6992
+#: src/ldgeneric.c:6984
 #, c-format
 msgid "cannot stat output file"
 msgstr "nie można wykonać stat na pliku wyjściowym"
 
-#: src/ldgeneric.c:7008
+#: src/ldgeneric.c:7000
 #, c-format
 msgid "WARNING: temporary output file overwritten before linking finished"
 msgstr ""
 "OSTRZEŻENIE: tymczasowy plik wyjściowy został zastąpiony przed ukończeniem "
 "konsolidowania"
 
-#: src/ldgeneric.c:7061 src/ldgeneric.c:7072 src/ldgeneric.c:7083
-#: src/ldgeneric.c:7094 src/ldgeneric.c:7113 src/ldgeneric.c:7126
-#: src/ldgeneric.c:7138
+#: src/ldgeneric.c:7053 src/ldgeneric.c:7064 src/ldgeneric.c:7075
+#: src/ldgeneric.c:7086 src/ldgeneric.c:7105 src/ldgeneric.c:7118
+#: src/ldgeneric.c:7130
 #, c-format
 msgid "no machine specific '%s' implementation"
 msgstr "brak implementacji \"%s\" specyficznej dla maszyny"
 
-#: src/ldscript.y:178
+#: src/ldscript.y:170
 msgid "mode for segment invalid\n"
 msgstr "nieprawidłowy tryb dla segmentu\n"
 
-#: src/ldscript.y:465
+#: src/ldscript.y:457
 #, c-format
 msgid "while reading version script '%s': %s at line %d"
 msgstr "podczas odczytywania skryptu wersji \"%s\": %s w wierszu %d"
 
-#: src/ldscript.y:466
+#: src/ldscript.y:458
 #, c-format
 msgid "while reading linker script '%s': %s at line %d"
 msgstr "podczas odczytywania skryptu konsolidatora \"%s\": %s w wierszu %d"
 
-#: src/ldscript.y:745
+#: src/ldscript.y:737
 #, c-format
 msgid "symbol '%s' is declared both local and global for unnamed version"
 msgstr ""
 "symbol \"%s\" jest zadeklarowany jednocześnie lokalny i globalny dla "
 "nienazwanej wersji"
 
-#: src/ldscript.y:747
+#: src/ldscript.y:739
 #, c-format
 msgid "symbol '%s' is declared both local and global for version '%s'"
 msgstr ""
 "symbol \"%s\" jest zadeklarowany jednocześnie lokalny i globalny dla wersji "
 "\"%s\""
 
-#: src/ldscript.y:767 src/ldscript.y:774
+#: src/ldscript.y:759 src/ldscript.y:766
 #, c-format
 msgid "default visibility set as local and global"
 msgstr "domyślna widoczność ustawiona jako lokalna i globalna"
 
-#: src/nm.c:74 src/strip.c:76
+#: src/nm.c:66 src/strip.c:68
 msgid "Output selection:"
 msgstr "Wybór wyjścia:"
 
-#: src/nm.c:75
+#: src/nm.c:67
 msgid "Display debugger-only symbols"
 msgstr "Wyświetla symbole wyłącznie debugowowania"
 
-#: src/nm.c:76
+#: src/nm.c:68
 msgid "Display only defined symbols"
 msgstr "Wyświetla tylko określone symbole"
 
-#: src/nm.c:79
+#: src/nm.c:71
 msgid "Display dynamic symbols instead of normal symbols"
 msgstr "Wyświetla symbole dynamiczne zamiast zwykłych"
 
-#: src/nm.c:80
+#: src/nm.c:72
 msgid "Display only external symbols"
 msgstr "Wyświetla tylko symbole zewnętrzne"
 
-#: src/nm.c:81
+#: src/nm.c:73
 msgid "Display only undefined symbols"
 msgstr "Wyświetla tylko nieokreślone symbole"
 
-#: src/nm.c:83
+#: src/nm.c:75
 msgid "Include index for symbols from archive members"
 msgstr "Dołącza indeks dla symboli z elementów archiwum"
 
-#: src/nm.c:85 src/size.c:66
+#: src/nm.c:77 src/size.c:58
 msgid "Output format:"
 msgstr "Format wyjścia:"
 
-#: src/nm.c:87
+#: src/nm.c:79
 msgid "Print name of the input file before every symbol"
 msgstr "Wyświetla nazwę pliku wejściowego przed każdym symbolem"
 
-#: src/nm.c:90
+#: src/nm.c:82
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd', `sysv' or `posix'.  The "
 "default is `sysv'"
@@ -3859,117 +3945,114 @@
 "Używa FORMATU wyjściowego. Może to być \"bsd\", \"sysv\" lub \"posix\". "
 "Domyślny jest format \"sysv\""
 
-#: src/nm.c:92
+#: src/nm.c:84
 msgid "Same as --format=bsd"
 msgstr "To samo, co --format=bsd"
 
-#: src/nm.c:93
+#: src/nm.c:85
 msgid "Same as --format=posix"
 msgstr "To samo co, --format=posix"
 
-#: src/nm.c:94 src/size.c:72
+#: src/nm.c:86 src/size.c:64
 msgid "Use RADIX for printing symbol values"
 msgstr "Używa BAZY do wypisywania wartości symboli"
 
-#: src/nm.c:95
-#, fuzzy
+#: src/nm.c:87
 msgid "Mark special symbols"
-msgstr "Oznacza słabe symbole"
+msgstr "Oznacza specjalne symbole"
 
-#: src/nm.c:97
+#: src/nm.c:89
 msgid "Print size of defined symbols"
 msgstr "Wyświetla rozmiar określonych symboli"
 
-#: src/nm.c:99 src/size.c:80 src/strip.c:81 src/unstrip.c:81
+#: src/nm.c:91 src/size.c:72 src/strip.c:73 src/unstrip.c:73
 msgid "Output options:"
 msgstr "Opcje wyjścia:"
 
-#: src/nm.c:100
+#: src/nm.c:92
 msgid "Sort symbols numerically by address"
 msgstr "Porządkuje symbole numerycznie według adresu"
 
-#: src/nm.c:102
+#: src/nm.c:94
 msgid "Do not sort the symbols"
 msgstr "Bez porządkowania symboli"
 
-#: src/nm.c:103
+#: src/nm.c:95
 msgid "Reverse the sense of the sort"
 msgstr "Odwraca kierunek porządkowania"
 
-#: src/nm.c:106
+#: 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:113
+#: 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:124 src/objdump.c:88
-#, fuzzy
+#: src/nm.c:116 src/objdump.c:80
 msgid "Output formatting"
-msgstr "Format wyjścia:"
+msgstr "Formatowanie wyjścia"
 
-#: src/nm.c:148 src/objdump.c:112 src/size.c:117 src/strip.c:128
+#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
 #, c-format
 msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
 msgstr "%s: BŁĄD WEWNĘTRZNY %d (%s-%s): %s"
 
-#: src/nm.c:406 src/nm.c:418 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:2132
+#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
+#: src/strip.c:2160
 #, c-format
 msgid "while closing '%s'"
 msgstr "podczas zamykania \"%s\""
 
-#: src/nm.c:428 src/objdump.c:304 src/strip.c:384
+#: src/nm.c:420 src/objdump.c:296 src/strip.c:376
 #, c-format
 msgid "%s: File format not recognized"
 msgstr "%s: nie rozpoznano formatu pliku"
 
-#: src/nm.c:468
-#, fuzzy
+#: src/nm.c:460
 msgid ""
 "\n"
 "Archive index:\n"
 msgstr ""
 "\n"
-"Indeks archiwum:"
+"Indeks archiwum:\n"
 
-#: src/nm.c:477
+#: src/nm.c:469
 #, c-format
 msgid "invalid offset %zu for symbol %s"
 msgstr "nieprawidłowy offset %zu dla symbolu %s"
 
-#: src/nm.c:482
+#: src/nm.c:474
 #, c-format
 msgid "%s in %s\n"
 msgstr "%s w %s\n"
 
-#: src/nm.c:490
+#: src/nm.c:482
 #, c-format
 msgid "cannot reset archive offset to beginning"
 msgstr "nie można przywrócić offsetu w archiwum na początek"
 
-#: src/nm.c:514 src/objdump.c:352
+#: src/nm.c:506 src/objdump.c:344
 #, c-format
 msgid "%s%s%s: file format not recognized"
 msgstr "%s%s%s: nie rozpoznano formatu pliku"
 
-#: src/nm.c:726
+#: src/nm.c:718
 #, c-format
 msgid "cannot create search tree"
 msgstr "nie można utworzyć drzewa wyszukiwania"
 
-#: src/nm.c:765 src/nm.c:1164 src/objdump.c:795 src/readelf.c:898
-#: src/readelf.c:1041 src/readelf.c:1189 src/readelf.c:1371 src/readelf.c:1571
-#: src/readelf.c:1757 src/readelf.c:1967 src/readelf.c:2221 src/readelf.c:2287
-#: src/readelf.c:2365 src/readelf.c:2863 src/readelf.c:2899 src/readelf.c:2961
-#: src/readelf.c:7307 src/readelf.c:8212 src/readelf.c:8359 src/readelf.c:8427
-#: src/size.c:425 src/size.c:499 src/strip.c:510
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:793 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:1975 src/readelf.c:2202 src/readelf.c:2460
+#: src/readelf.c:2536 src/readelf.c:2623 src/readelf.c:3201 src/readelf.c:3237
+#: src/readelf.c:3300 src/readelf.c:8187 src/readelf.c:9273 src/readelf.c:9420
+#: src/readelf.c:9488 src/size.c:417 src/size.c:486 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:790
+#: src/nm.c:784
 #, c-format
 msgid ""
 "\n"
@@ -3982,7 +4065,7 @@
 "Symbole z %s:\n"
 "\n"
 
-#: src/nm.c:793
+#: src/nm.c:787
 #, c-format
 msgid ""
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
@@ -3991,73 +4074,72 @@
 "%*s%-*s %-*s Klasa  Typ      %-*s %*s Sekcja\n"
 "\n"
 
-#: src/nm.c:1174
+#: 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:1178
+#: 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:1436
+#: 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:1493
+#: src/nm.c:1492
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: brak symboli"
 
-#: src/objdump.c:61
+#: src/objdump.c:53
 msgid "Mode selection:"
 msgstr "Wybór trybu:"
 
-#: src/objdump.c:62
+#: src/objdump.c:54
 msgid "Display relocation information."
 msgstr "Wyświetla informacje o relokacji."
 
-#: src/objdump.c:64
+#: src/objdump.c:56
 msgid "Display the full contents of all sections requested"
 msgstr "Wyświetla pełną zawartość żądanych sekcji"
 
-#: src/objdump.c:66
+#: src/objdump.c:58
 msgid "Display assembler code of executable sections"
 msgstr "Wyświetla kod asemblera sekcji wykonywalnych"
 
-#: src/objdump.c:68
-#, fuzzy
+#: src/objdump.c:60
 msgid "Output content selection:"
-msgstr "Wybór opcji wyjścia:"
+msgstr "Wybór zawartości wyjścia:"
 
-#: src/objdump.c:70
+#: src/objdump.c:62
 msgid "Only display information for section NAME."
 msgstr "Wyświetla tylko informacje o sekcji NAZWA."
 
-#: src/objdump.c:76
+#: src/objdump.c:68
 msgid "Show information from FILEs (a.out by default)."
 msgstr "Wyświetla informacje z PLIKÓW (domyślnie a.out)."
 
-#: src/objdump.c:244 src/readelf.c:441
+#: src/objdump.c:236 src/readelf.c:473
 msgid "No operation specified.\n"
 msgstr "Nie podano działania.\n"
 
-#: src/objdump.c:282 src/objdump.c:294
+#: src/objdump.c:274 src/objdump.c:286
 #, c-format
 msgid "while close `%s'"
 msgstr "podczas zamykania \"%s\""
 
-#: src/objdump.c:387 src/readelf.c:1666 src/readelf.c:1840
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2072
 msgid "INVALID SYMBOL"
 msgstr "NIEPRAWIDŁOWY SYMBOL"
 
-#: src/objdump.c:402 src/readelf.c:1697 src/readelf.c:1873
+#: src/objdump.c:394 src/readelf.c:1914 src/readelf.c:2108
 msgid "INVALID SECTION"
 msgstr "NIEPRAWIDŁOWA SEKCJA"
 
-#: src/objdump.c:518
+#: src/objdump.c:514
 #, c-format
 msgid ""
 "\n"
@@ -4068,223 +4150,285 @@
 "PISY RELOKACJI DLA [%s]:\n"
 "%-*s TYP                  WARTOŚĆ\n"
 
-#: src/objdump.c:521
+#: src/objdump.c:517
 msgid "OFFSET"
 msgstr "OFFSET"
 
-#: src/objdump.c:584
+#: src/objdump.c:582
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Zawartość sekcji %s:\n"
 
-#: src/objdump.c:705
+#: src/objdump.c:703
 #, c-format
 msgid "cannot disassemble"
 msgstr "nie można deasemblować"
 
-#: src/objdump.c:744
-#, fuzzy, c-format
+#: src/objdump.c:742
+#, c-format
 msgid "cannot allocate memory"
-msgstr "nie można przydzielić sekcji PLT: %s"
+msgstr "nie można przydzielić pamięci"
 
-#: src/ranlib.c:74
+#: src/ranlib.c:66
 msgid "Generate an index to speed access to archives."
 msgstr "Tworzenie indeksu w celu przyspieszenia dostępu do archiwów."
 
-#: src/ranlib.c:77
+#: src/ranlib.c:69
 msgid "ARCHIVE"
 msgstr "ARCHIWUM"
 
-#: src/ranlib.c:116
+#: src/ranlib.c:108
 #, c-format
 msgid "Archive name required"
 msgstr "Wymagana jest nazwa archiwum"
 
-#: src/ranlib.c:194
+#: src/ranlib.c:186
 #, c-format
 msgid "'%s' is no archive"
 msgstr "\"%s\" nie jest archiwum"
 
-#: src/ranlib.c:229
+#: src/ranlib.c:221
 #, c-format
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr "błąd podczas zwalniania deskryptora pod-ELF: %s"
 
+#: 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:75
+#: 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:76
+#: src/readelf.c:78
 msgid "Display the dynamic segment"
 msgstr "Wyświetla segment dynamiczny"
 
-#: src/readelf.c:77
+#: src/readelf.c:79
 msgid "Display the ELF file header"
 msgstr "Wyświetla nagłówek pliku ELF"
 
-#: src/readelf.c:79
+#: 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:80
+#: src/readelf.c:82
 msgid "Display the program headers"
 msgstr "Wyświetla nagłówki programu"
 
-#: src/readelf.c:82
+#: src/readelf.c:84
 msgid "Display relocations"
 msgstr "Wyświetla relokacje"
 
-#: src/readelf.c:83
+#: src/readelf.c:85
 msgid "Display the sections' headers"
 msgstr "Wyświetla nagłówków sekcji"
 
-#: src/readelf.c:85
+#: src/readelf.c:87
 msgid "Display the symbol table"
 msgstr "Wyświetla tabelę symboli"
 
-#: src/readelf.c:86
+#: src/readelf.c:88
 msgid "Display versioning information"
 msgstr "Wyświetla informacje o wersjonowaniu"
 
-#: src/readelf.c:87
+#: src/readelf.c:89
 msgid "Display the ELF notes"
 msgstr "Wyświetla notatki ELF"
 
-#: src/readelf.c:89
+#: src/readelf.c:91
 msgid "Display architecture specific information, if any"
 msgstr "Wyświetla informacje specyficzne dla architektury, jeśli są"
 
-#: src/readelf.c:91
+#: src/readelf.c:93
 msgid "Display sections for exception handling"
 msgstr "Wyświetla sekcje do obsługi wyjątków"
 
-#: src/readelf.c:93
+#: src/readelf.c:95
 msgid "Additional output selection:"
 msgstr "Dodatkowy wybór wyjścia:"
 
-#: src/readelf.c:95
+#: 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, 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:99
+#: 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:101
+#: src/readelf.c:103
 msgid "Print string contents of sections"
 msgstr "Wyświetla zawartość ciągów sekcji"
 
-#: src/readelf.c:104
+#: src/readelf.c:106
 msgid "Display the symbol index of an archive"
 msgstr "Wyświetla indeks symboli archiwum"
 
-#: src/readelf.c:106
+#: src/readelf.c:108
 msgid "Output control:"
 msgstr "Kontrola wyjścia:"
 
-#: src/readelf.c:108
+#: 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:110
-msgid "Ignored for compatibility (lines always wide)"
-msgstr ""
+#: 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:115
+#: src/readelf.c:114
+msgid "Ignored for compatibility (lines always wide)"
+msgstr "Ignorowane dla zgodności (wiersze są zawsze szerokie)"
+
+#: 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:412
+#: src/readelf.c:441
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "Nieznana sekcja debugowania DWARF \"%s\".\n"
 
-#: src/readelf.c:478
+#: 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:490
+#: 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:495
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9440
+#: src/unstrip.c:356 src/unstrip.c:387 src/unstrip.c:436 src/unstrip.c:544
+#: src/unstrip.c:561 src/unstrip.c:597 src/unstrip.c:795 src/unstrip.c:1063
+#: src/unstrip.c:1254 src/unstrip.c:1314 src/unstrip.c:1435 src/unstrip.c:1488
+#: src/unstrip.c:1595 src/unstrip.c:1784
+#, 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:5398 src/readelf.c:7671 src/readelf.c:7773
+#: src/readelf.c:7939
+#, 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: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:587
+#: 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:589
+#: src/readelf.c:771
 #, c-format
 msgid "input file is empty"
 msgstr "plik wejściowy jest pusty"
 
-#: src/readelf.c:591
+#: src/readelf.c:773
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "odczytanie \"%s\" nie powiodło się: %s"
 
-#: src/readelf.c:627
+#: src/readelf.c:814
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr "nie można odczytać nagłówka ELF: %s"
 
-#: src/readelf.c:635
+#: src/readelf.c:822
 #, c-format
 msgid "cannot create EBL handle"
 msgstr "nie można utworzyć uchwytu EBL"
 
-#: src/readelf.c:648
+#: 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:734
+#: src/readelf.c:921
 msgid "NONE (None)"
 msgstr "NONE (żaden)"
 
-#: src/readelf.c:735
+#: src/readelf.c:922
 msgid "REL (Relocatable file)"
 msgstr "REL (plik relokowalny)"
 
-#: src/readelf.c:736
+#: src/readelf.c:923
 msgid "EXEC (Executable file)"
 msgstr "EXEC (plik wykonywalny)"
 
-#: src/readelf.c:737
+#: src/readelf.c:924
 msgid "DYN (Shared object file)"
 msgstr "DYN (plik obiektu współdzielonego)"
 
-#: src/readelf.c:738
+#: src/readelf.c:925
 msgid "CORE (Core file)"
 msgstr "CORE (plik core)"
 
-#: src/readelf.c:743
+#: src/readelf.c:930
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr "Zależny od systemu: (%x)\n"
 
-#: src/readelf.c:745
+#: src/readelf.c:932
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr "Zależny od procesora: (%x)\n"
 
-#: src/readelf.c:755
+#: src/readelf.c:942
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
@@ -4292,7 +4436,7 @@
 "Nagłówek ELF:\n"
 "  Magic:  "
 
-#: src/readelf.c:759
+#: src/readelf.c:946
 #, c-format
 msgid ""
 "\n"
@@ -4301,117 +4445,117 @@
 "\n"
 "  Klasa:                             %s\n"
 
-#: src/readelf.c:764
+#: src/readelf.c:951
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Dane:                              %s\n"
 
-#: src/readelf.c:770
+#: src/readelf.c:957
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr "  Wersja Ident:                      %hhd %s\n"
 
-#: src/readelf.c:772 src/readelf.c:789
+#: src/readelf.c:959 src/readelf.c:976
 msgid "(current)"
 msgstr "(bieżąca)"
 
-#: src/readelf.c:776
+#: src/readelf.c:963
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  System operacyjny/ABI:             %s\n"
 
-#: src/readelf.c:779
+#: src/readelf.c:966
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr "  Wersja ABI:                        %hhd\n"
 
-#: src/readelf.c:782
+#: src/readelf.c:969
 msgid "  Type:                              "
 msgstr "  Typ:                               "
 
-#: src/readelf.c:785
+#: src/readelf.c:972
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Komputer:                          %s\n"
 
-#: src/readelf.c:787
+#: src/readelf.c:974
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Wersja:                            %d %s\n"
 
-#: src/readelf.c:791
+#: src/readelf.c:978
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr "  Adres punktu wejściowego:          %#<PRIx64>\n"
 
-#: src/readelf.c:794
+#: 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:795 src/readelf.c:798
+#: src/readelf.c:982 src/readelf.c:985
 msgid "(bytes into file)"
 msgstr "(bajtów w pliku)"
 
-#: src/readelf.c:797
+#: 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:800
+#: src/readelf.c:987
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr "  Flagi:                             %s\n"
 
-#: src/readelf.c:803
+#: 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:804 src/readelf.c:807 src/readelf.c:824
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
 msgid "(bytes)"
 msgstr "(bajtów)"
 
-#: src/readelf.c:806
+#: 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:809
+#: 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:816
+#: src/readelf.c:1003
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr " (%<PRIu32> w [0].sh_info)"
 
-#: src/readelf.c:819 src/readelf.c:836 src/readelf.c:850
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
 msgid " ([0] not available)"
 msgstr " ([0] niedostępny)"
 
-#: src/readelf.c:823
+#: 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:826
+#: 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:833
+#: src/readelf.c:1020
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr " (%<PRIu32> w [0].sh_size)"
 
-#: src/readelf.c:846
+#: src/readelf.c:1033
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr " (%<PRIu32> w [0].sh_link)"
 
-#: src/readelf.c:854
+#: src/readelf.c:1041
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
@@ -4420,7 +4564,7 @@
 "  Indeks tabeli ciągów nagłówków sekcji: XINDEX%s\n"
 "\n"
 
-#: src/readelf.c:858
+#: src/readelf.c:1045
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
@@ -4429,7 +4573,7 @@
 "  Indeks tabeli ciągów nagłówków sekcji: %<PRId16>\n"
 "\n"
 
-#: src/readelf.c:890
+#: src/readelf.c:1077
 #, c-format
 msgid ""
 "There are %d section headers, starting at offset %#<PRIx64>:\n"
@@ -4438,11 +4582,11 @@
 "Jest %d nagłówków sekcji, rozpoczynających się od offsetu %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:900
+#: src/readelf.c:1087
 msgid "Section Headers:"
 msgstr "Nagłówki sekcji:"
 
-#: src/readelf.c:903
+#: src/readelf.c:1090
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
@@ -4450,7 +4594,7 @@
 "[Nr] Nazwa                Typ          Adres    Offset Rozm   ES Flagi Lk "
 "Inf Al"
 
-#: src/readelf.c:905
+#: src/readelf.c:1092
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
@@ -4458,32 +4602,18 @@
 "[Nr] Nazwa                Typ          Adres            Offset   Rozmiar  ES "
 "Flagi Lk Inf Al"
 
-#: src/readelf.c:912 src/readelf.c:1065
-#, c-format
-msgid "cannot get section: %s"
-msgstr "nie można uzyskać sekcji: %s"
-
-#: src/readelf.c:919 src/readelf.c:1073 src/readelf.c:8379 src/unstrip.c:353
-#: src/unstrip.c:384 src/unstrip.c:433 src/unstrip.c:541 src/unstrip.c:558
-#: src/unstrip.c:594 src/unstrip.c:792 src/unstrip.c:1060 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:977
+#: src/readelf.c:1164
 msgid "Program Headers:"
 msgstr "Nagłówki programu:"
 
-#: src/readelf.c:979
+#: 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:982
+#: src/readelf.c:1169
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4491,12 +4621,12 @@
 "  Typ            Offset   AdresWirtualny     AdresFizyczny      RozmPlik "
 "RozmPam  Flg Wyrównanie"
 
-#: src/readelf.c:1022
+#: src/readelf.c:1226
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[Wywołanie interpretera programu: %s]\n"
 
-#: src/readelf.c:1043
+#: src/readelf.c:1247
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4506,12 +4636,12 @@
 " mapowanie sekcji do segmentów:\n"
 "  Segment sekcji..."
 
-#: src/readelf.c:1054 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
+#: src/readelf.c:1258 src/unstrip.c:1843 src/unstrip.c:1886 src/unstrip.c:1893
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "nie można uzyskać nagłówka programu: %s"
 
-#: src/readelf.c:1195
+#: src/readelf.c:1401
 #, c-format
 msgid ""
 "\n"
@@ -4529,7 +4659,7 @@
 "\n"
 "Grupa sekcji COMDAT [%2zu] \"%s\" z podpisem \"%s\" zawiera %zu wpisów:\n"
 
-#: src/readelf.c:1200
+#: src/readelf.c:1406
 #, c-format
 msgid ""
 "\n"
@@ -4547,15 +4677,21 @@
 "\n"
 "Grupa sekcji [%2zu] \"%s\" z podpisem \"%s\" zawiera %zu wpisów:\n"
 
-#: src/readelf.c:1208
+#: src/readelf.c:1414
 msgid "<INVALID SYMBOL>"
 msgstr "<NIEPRAWIDŁOWY SYMBOL>"
 
-#: src/readelf.c:1222
+#: src/readelf.c:1428
 msgid "<INVALID SECTION>"
 msgstr "<NIEPRAWIDŁOWY SEKCJA>"
 
-#: src/readelf.c:1373
+#: src/readelf.c:1585 src/readelf.c:2208 src/readelf.c:2466 src/readelf.c:2542
+#: src/readelf.c:2846 src/readelf.c:2920 src/readelf.c:4610
+#, 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"
@@ -4581,36 +4717,36 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] "
 "'%s'\n"
 
-#: src/readelf.c:1385
+#: src/readelf.c:1598
 msgid "  Type              Value\n"
 msgstr "  Typ               Wartość\n"
 
-#: src/readelf.c:1409
+#: src/readelf.c:1622
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "Biblioteka współdzielona: [%s]\n"
 
-#: src/readelf.c:1414
+#: src/readelf.c:1627
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "soname biblioteki: [%s]\n"
 
-#: src/readelf.c:1419
+#: src/readelf.c:1632
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "rpath biblioteki: [%s]\n"
 
-#: src/readelf.c:1424
+#: src/readelf.c:1637
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "runpath biblioteki: [%s]\n"
 
-#: src/readelf.c:1444
+#: src/readelf.c:1657
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (bajtów)\n"
 
-#: src/readelf.c:1556 src/readelf.c:1742
+#: src/readelf.c:1770 src/readelf.c:1960
 #, c-format
 msgid ""
 "\n"
@@ -4619,7 +4755,7 @@
 "\n"
 "Nieprawidłowa tabela symboli pod offsetem %#0<PRIx64>\n"
 
-#: src/readelf.c:1574 src/readelf.c:1759
+#: src/readelf.c:1788 src/readelf.c:1978
 #, c-format
 msgid ""
 "\n"
@@ -4642,7 +4778,7 @@
 "Sekcja relokacji [%2zu] \"%s\" dla sekcji [%2u] \"%s\" pod offsetem "
 "%#0<PRIx64> zawiera %d wpisów:\n"
 
-#: src/readelf.c:1589
+#: src/readelf.c:1803 src/readelf.c:1993
 #, c-format
 msgid ""
 "\n"
@@ -4660,30 +4796,30 @@
 "\n"
 "Sekcja relokacji [%2u] \"%s\" pod offsetem %#0<PRIx64> zawiera %d wpisów:\n"
 
-#: src/readelf.c:1599
+#: src/readelf.c:1813
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "  Offset      Typ                  Wartość     Nazwa\n"
 
-#: src/readelf.c:1601
+#: src/readelf.c:1815
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "  Offset              Typ                  Wartość             Nazwa\n"
 
-#: src/readelf.c:1654 src/readelf.c:1665 src/readelf.c:1678 src/readelf.c:1696
-#: src/readelf.c:1708 src/readelf.c:1827 src/readelf.c:1839 src/readelf.c:1853
-#: src/readelf.c:1872 src/readelf.c:1885
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1913
+#: src/readelf.c:1925 src/readelf.c:2059 src/readelf.c:2071 src/readelf.c:2085
+#: src/readelf.c:2107 src/readelf.c:2120
 msgid "<INVALID RELOC>"
 msgstr "<NIEPRAWIDŁOWA RELOKACJA>"
 
-#: src/readelf.c:1771
+#: src/readelf.c:2003
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "  Offset      Typ             Wartość     Koniec Nazwa\n"
 
-#: src/readelf.c:1773
+#: src/readelf.c:2005
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 "  Offset              Typ             Wartość             Koniec Nazwa\n"
 
-#: src/readelf.c:1974
+#: src/readelf.c:2216
 #, c-format
 msgid ""
 "\n"
@@ -4701,7 +4837,7 @@
 "\n"
 "Tabela symboli [%2u] \"%s\" zawiera %u wpisów:\n"
 
-#: src/readelf.c:1980
+#: src/readelf.c:2221
 #, c-format
 msgid " %lu local symbol  String table: [%2u] '%s'\n"
 msgid_plural " %lu local symbols  String table: [%2u] '%s'\n"
@@ -4709,33 +4845,33 @@
 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:1990
+#: src/readelf.c:2229
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Numer:  Wartość Rozm Typ     Bind   Widoczność   Ndx Nazwa\n"
 
-#: src/readelf.c:1992
+#: src/readelf.c:2231
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Numer:          Wartość Rozm Typ     Bind   Widoczność   Ndx Nazwa\n"
 
-#: src/readelf.c:2012
+#: src/readelf.c:2251
 #, 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:2100
+#: src/readelf.c:2339
 #, c-format
 msgid "bad dynamic symbol"
 msgstr "błędny symbol dynamiczny"
 
-#: src/readelf.c:2182
+#: src/readelf.c:2421
 msgid "none"
 msgstr "brak"
 
-#: src/readelf.c:2199
+#: src/readelf.c:2438
 msgid "| <unknown>"
 msgstr "| <nieznany>"
 
-#: src/readelf.c:2224
+#: src/readelf.c:2469
 #, c-format
 msgid ""
 "\n"
@@ -4761,17 +4897,17 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] \"%s"
 "\"\n"
 
-#: src/readelf.c:2247
+#: src/readelf.c:2490
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Wersja: %hu  Plik: %s  Licznik: %hu\n"
 
-#: src/readelf.c:2260
+#: src/readelf.c:2503
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Nazwa: %s  Flagi: %s  Wersja: %hu\n"
 
-#: src/readelf.c:2291
+#: src/readelf.c:2546
 #, c-format
 msgid ""
 "\n"
@@ -4797,18 +4933,18 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] \"%s"
 "\"\n"
 
-#: src/readelf.c:2321
+#: src/readelf.c:2574
 #, 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:2336
+#: src/readelf.c:2589
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Rodzic %d: %s\n"
 
-#: src/readelf.c:2568
+#: src/readelf.c:2850
 #, c-format
 msgid ""
 "\n"
@@ -4834,15 +4970,15 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] \"%s"
 "\""
 
-#: src/readelf.c:2598
+#: src/readelf.c:2878
 msgid "   0 *local*                     "
 msgstr "   0 *lokalny*                   "
 
-#: src/readelf.c:2603
+#: src/readelf.c:2883
 msgid "   1 *global*                    "
 msgstr "   1 *globalny*                  "
 
-#: src/readelf.c:2634
+#: src/readelf.c:2925
 #, c-format
 msgid ""
 "\n"
@@ -4873,22 +5009,22 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] \"%s"
 "\"\n"
 
-#: src/readelf.c:2658
+#: src/readelf.c:2947
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " Długość Liczba  % całości   Pokrycie\n"
 
-#: src/readelf.c:2660
+#: src/readelf.c:2949
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:2667
+#: src/readelf.c:2956
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:2680
+#: src/readelf.c:2969
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -4897,12 +5033,27 @@
 " Średnia liczba testów:   udane wyszukania: %f\n"
 "\t\t\t  nieudane wyszukania: %f\n"
 
-#: src/readelf.c:2698 src/readelf.c:2740 src/readelf.c:2781
+#: src/readelf.c:2987 src/readelf.c:3042 src/readelf.c:3098
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "nie można uzyskać danych dla sekcji %d: %s"
 
-#: src/readelf.c:2835
+#: src/readelf.c:2995
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash section %d"
+msgstr "nieprawidłowe dane w sekcji [%zu] \"%s\""
+
+#: src/readelf.c:3050
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash64 section %d"
+msgstr "nieprawidłowe dane w sekcji [%zu] \"%s\""
+
+#: src/readelf.c:3106
+#, fuzzy, c-format
+msgid "invalid data in gnu.hash section %d"
+msgstr "nieprawidłowe dane w sekcji [%zu] \"%s\""
+
+#: src/readelf.c:3173
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -4912,7 +5063,7 @@
 " Rozmiar maski bitowej: %zu bajtów  %<PRIuFAST32>%% bitów ustawionych  "
 "drugie przesunięcie skrótu: %u\n"
 
-#: src/readelf.c:2909
+#: src/readelf.c:3248
 #, c-format
 msgid ""
 "\n"
@@ -4933,7 +5084,7 @@
 "Sekcja listy bibliotek [%2zu] \"%s\" pod offsetem %#0<PRIx64> zawiera %d "
 "wpisów:\n"
 
-#: src/readelf.c:2923
+#: src/readelf.c:3262
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -4941,7 +5092,7 @@
 "       Biblioteka                    Oznaczenie czasu    Suma k.  Wersja  "
 "Flagi"
 
-#: src/readelf.c:2973
+#: src/readelf.c:3312
 #, c-format
 msgid ""
 "\n"
@@ -4952,160 +5103,140 @@
 "Sekcja atrybutów obiektu [%2zu] \"%s\" %<PRIu64> bajtów pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:2989
+#: src/readelf.c:3329
 msgid "  Owner          Size\n"
 msgstr "  Właściciel          Rozmiar\n"
 
-#: src/readelf.c:3015
+#: src/readelf.c:3358
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
-#: src/readelf.c:3047
+#: src/readelf.c:3397
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
-#: src/readelf.c:3052
+#: src/readelf.c:3402
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    Plik: %11<PRIu32>\n"
 
-#: src/readelf.c:3087
+#: src/readelf.c:3451
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3090
+#: src/readelf.c:3454
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3093
+#: src/readelf.c:3457
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3100
+#: src/readelf.c:3467
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3103
+#: src/readelf.c:3470
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3139
+#: src/readelf.c:3515
 #, c-format
 msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3142
+#: src/readelf.c:3518
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3147
+#: src/readelf.c:3523
 #, c-format
 msgid "%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3150
+#: src/readelf.c:3526
 #, c-format
 msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3156
+#: src/readelf.c:3532
 #, c-format
 msgid "%s+%#<PRIx64> <%s>"
 msgstr "%s+%#<PRIx64> <%s>"
 
-#: src/readelf.c:3159
+#: src/readelf.c:3535
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s>"
 msgstr "%s+%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3163
+#: src/readelf.c:3539
 #, c-format
 msgid "%#<PRIx64> <%s>"
 msgstr "%#<PRIx64> <%s>"
 
-#: src/readelf.c:3166
+#: src/readelf.c:3542
 #, c-format
 msgid "%#0*<PRIx64> <%s>"
 msgstr "%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3171
+#: src/readelf.c:3547
 #, c-format
 msgid "%s+%#<PRIx64>"
 msgstr "%s+%#<PRIx64>"
 
-#: src/readelf.c:3174
+#: src/readelf.c:3550
 #, c-format
 msgid "%s+%#0*<PRIx64>"
 msgstr "%s+%#0*<PRIx64>"
 
-#: src/readelf.c:3313
-#, c-format
-msgid "unknown tag %hx"
-msgstr "nieznany znacznik %hx"
-
-#: src/readelf.c:3315
-#, c-format
-msgid "unknown user tag %hx"
-msgstr "nieznany znacznik użytkownika %hx"
-
-#: src/readelf.c:3603
-#, c-format
-msgid "unknown attribute %hx"
-msgstr "nieznany atrybut %hx"
-
-#: src/readelf.c:3606
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr "nieznany atrybut użytkownika %hx"
-
-#: src/readelf.c:3657
-#, fuzzy, c-format
-msgid "unknown form %#<PRIx64>"
-msgstr "nieznana forma %<PRIx64>"
-
-#: src/readelf.c:3893
+#: src/readelf.c:3932
 msgid "empty block"
 msgstr "pusty blok"
 
-#: src/readelf.c:3896
+#: src/readelf.c:3935
 #, c-format
 msgid "%zu byte block:"
 msgstr "%zu bajtowy blok:"
 
-#: src/readelf.c:4419
+#: src/readelf.c:4332
 #, c-format
 msgid "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%4<PRIuMAX>] %s  <SKRÓCONE>\n"
 
-#: src/readelf.c:4455
+#: src/readelf.c:4389
 #, 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:4462
+#: src/readelf.c:4396
 #, 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:4542
+#: src/readelf.c:4403
+#, 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:4492
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr " [%6tx]  <NIEUŻYWANE ŚMIECIE W RESZCIE SEKCJI>\n"
 
-#: src/readelf.c:4550
+#: src/readelf.c:4500
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <NIEUŻYWANE ŚMIECIE>... %<PRIu64> bajtów...\n"
 
-#: src/readelf.c:4569
+#: src/readelf.c:4526
 #, c-format
 msgid ""
 "\n"
@@ -5116,7 +5247,7 @@
 "Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
 " [ Kod]\n"
 
-#: src/readelf.c:4577
+#: src/readelf.c:4534
 #, c-format
 msgid ""
 "\n"
@@ -5125,30 +5256,30 @@
 "\n"
 "Sekcja skrótów pod offsetem %<PRIu64>:\n"
 
-#: src/readelf.c:4590
+#: src/readelf.c:4547
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** błąd podczas odczytywania skrótu: %s\n"
 
-#: src/readelf.c:4606
+#: src/readelf.c:4563
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] offset: %<PRId64>, potomek: %s, znacznik: %s\n"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "yes"
 msgstr "tak"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "no"
 msgstr "nie"
 
-#: src/readelf.c:4644
+#: src/readelf.c:4600 src/readelf.c:4673
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "nie można uzyskać zawartości .debug_aranges: %s"
 
-#: src/readelf.c:4649
+#: src/readelf.c:4615
 #, c-format
 msgid ""
 "\n"
@@ -5166,12 +5297,12 @@
 "\n"
 "Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:4680
+#: src/readelf.c:4646
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:4682
+#: src/readelf.c:4648
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5179,13 +5310,8 @@
 " [%*zu] początek: %0#*<PRIx64>, długość: %5<PRIu64>, offset CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:4701
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "nie można uzyskać zawartości .debug_ranges: %s"
-
-#: src/readelf.c:4706 src/readelf.c:5207 src/readelf.c:5982 src/readelf.c:6483
-#: src/readelf.c:6598 src/readelf.c:6770
+#: src/readelf.c:4678 src/readelf.c:4832 src/readelf.c:5408 src/readelf.c:6362
+#: src/readelf.c:6894 src/readelf.c:7014 src/readelf.c:7177 src/readelf.c:7602
 #, c-format
 msgid ""
 "\n"
@@ -5194,37 +5320,120 @@
 "\n"
 "Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
 
-#: src/readelf.c:4730 src/readelf.c:6508
+#: src/readelf.c:4691 src/readelf.c:6388
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Tabela pod offsetem %Zu:\n"
+
+#: src/readelf.c:4695 src/readelf.c:5432 src/readelf.c:6399
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "nieprawidłowe dane w sekcji [%zu] \"%s\""
+
+#: src/readelf.c:4711
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Length:        %6<PRIu64>\n"
+msgstr " Długość offsetu:      %<PRIu8>\n"
+
+#: src/readelf.c:4723
+#, fuzzy, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " Wersja:            %<PRIu16>\n"
+
+#: src/readelf.c:4727
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4738
+#, fuzzy, c-format
+msgid " CU offset:     %6<PRIx64>\n"
+msgstr " offset CU:       %#<PRIx32>\n"
+
+#: src/readelf.c:4744
+#, fuzzy, c-format
+msgid " Address size:  %6<PRIu64>\n"
+msgstr " offset adresu:  %#<PRIx32>\n"
+
+#: src/readelf.c:4748
+#, fuzzy, c-format
+msgid "unsupported address size"
+msgstr "brak wartości adresu"
+
+#: src/readelf.c:4753
+#, fuzzy, c-format
+msgid ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+msgstr " ustawienie pliku na %<PRIu64>\n"
+
+#: src/readelf.c:4757
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4797
+#, fuzzy, c-format
+msgid "   %s..%s (%<PRIx64>)\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:4800
+#, fuzzy, c-format
+msgid "   %s..%s\n"
+msgstr " [%6tx]  %s...%s\n"
+
+#: src/readelf.c:4809
+#, c-format
+msgid "   %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4827
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "nie można uzyskać zawartości .debug_ranges: %s"
+
+#: src/readelf.c:4857 src/readelf.c:6921
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:4752 src/readelf.c:6530
+#: src/readelf.c:4879 src/readelf.c:6943
 #, c-format
 msgid " [%6tx]  base address %s\n"
 msgstr " [%6tx]  adres podstawowy %s\n"
 
-#: src/readelf.c:4758 src/readelf.c:6536
+#: src/readelf.c:4886 src/readelf.c:6950
 #, c-format
 msgid " [%6tx]  empty list\n"
 msgstr " [%6tx]  pusta lista\n"
 
-#: src/readelf.c:4767
+#: src/readelf.c:4897
 #, c-format
 msgid " [%6tx]  %s..%s\n"
 msgstr " [%6tx]  %s...%s\n"
 
-#: src/readelf.c:4769
+#: src/readelf.c:4899
 #, c-format
 msgid "           %s..%s\n"
 msgstr "           %s...%s\n"
 
-#: src/readelf.c:5196 src/readelf.c:6838 src/readelf.c:6940 src/readelf.c:7098
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "nie można uzyskać zwartości %s: %s"
+#: src/readelf.c:5078
+#, fuzzy
+msgid "         <INVALID DATA>\n"
+msgstr "   <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:5203
+#: src/readelf.c:5387
+#, fuzzy, c-format
+msgid "cannot get ELF: %s"
+msgstr "nie można uzyskać nagłówka ELF: %s"
+
+#: src/readelf.c:5404
 #, c-format
 msgid ""
 "\n"
@@ -5233,12 +5442,7 @@
 "\n"
 "Sekcja informacji o ramce wywołania [%2zu] \"%s\" pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:5231 src/readelf.c:6017
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "nieprawidłowe dane w sekcji [%zu] \"%s\""
-
-#: src/readelf.c:5253
+#: src/readelf.c:5454
 #, c-format
 msgid ""
 "\n"
@@ -5247,50 +5451,50 @@
 "\n"
 " [%6tx] Zerowy koniec\n"
 
-#: src/readelf.c:5338
+#: src/readelf.c:5547 src/readelf.c:5702
 #, c-format
 msgid "invalid augmentation length"
 msgstr "nieprawidłowa długość powiększenia"
 
-#: src/readelf.c:5350
+#: src/readelf.c:5562
 msgid "FDE address encoding: "
 msgstr "Kodowanie adresu FDE: "
 
-#: src/readelf.c:5356
+#: src/readelf.c:5568
 msgid "LSDA pointer encoding: "
 msgstr "Kodowanie wskaźnika LSDA: "
 
-#: src/readelf.c:5454
+#: src/readelf.c:5679
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (offset: %#<PRIx64>)"
 
-#: src/readelf.c:5461
+#: src/readelf.c:5686
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (kończący offset: %#<PRIx64>)"
 
-#: src/readelf.c:5488
+#: src/readelf.c:5723
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sWskaźnik LSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:5539
+#: src/readelf.c:5778
 #, c-format
 msgid "cannot get attribute code: %s"
 msgstr "nie można uzyskać kodu atrybutu: %s"
 
-#: src/readelf.c:5548
+#: src/readelf.c:5787
 #, c-format
 msgid "cannot get attribute form: %s"
 msgstr "nie można uzyskać formy atrybutu: %s"
 
-#: src/readelf.c:5563
+#: src/readelf.c:5802
 #, c-format
 msgid "cannot get attribute value: %s"
 msgstr "nie można uzyskać wartości atrybutu: %s"
 
-#: src/readelf.c:5819
+#: src/readelf.c:6101
 #, c-format
 msgid ""
 "\n"
@@ -5301,7 +5505,7 @@
 "Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
 " [Offset]\n"
 
-#: src/readelf.c:5851
+#: src/readelf.c:6133
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5314,7 +5518,7 @@
 "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
 " Podpis typu: %#<PRIx64>, offset typu: %#<PRIx64>\n"
 
-#: src/readelf.c:5860
+#: src/readelf.c:6142
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5325,47 +5529,48 @@
 " Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
 "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
 
-#: src/readelf.c:5886
+#: src/readelf.c:6167
 #, 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:5898
+#: src/readelf.c:6181
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "nie można uzyskać offsetu DIE: %s"
 
-#: src/readelf.c:5907
+#: src/readelf.c:6190
 #, 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:5938
+#: src/readelf.c:6222
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "nie można uzyskać następnego DIE: %s\n"
 
-#: src/readelf.c:5946
+#: src/readelf.c:6230
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "nie można uzyskać następnego DIE: %s"
 
-#: src/readelf.c:5995
+#: src/readelf.c:6266
+#, fuzzy, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+"\n"
+"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
+
+#: src/readelf.c:6375
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "nie można uzyskać danych sekcji danych wiersza: %s"
 
-#: src/readelf.c:6008
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-"\n"
-"Tabela pod offsetem %Zu:\n"
-
-#: src/readelf.c:6063
+#: src/readelf.c:6445
 #, c-format
 msgid ""
 "\n"
@@ -5394,12 +5599,12 @@
 "\n"
 "Instrukcje:\n"
 
-#: src/readelf.c:6084
+#: src/readelf.c:6466
 #, 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:6099
+#: src/readelf.c:6481
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
@@ -5407,7 +5612,7 @@
 msgstr[1] "  [%*<PRIuFAST8>]  %hhu parametry\n"
 msgstr[2] "  [%*<PRIuFAST8>]  %hhu parametrów\n"
 
-#: src/readelf.c:6107
+#: src/readelf.c:6489
 msgid ""
 "\n"
 "Directory table:"
@@ -5415,7 +5620,7 @@
 "\n"
 "Tabela katalogu:"
 
-#: src/readelf.c:6123
+#: src/readelf.c:6505
 msgid ""
 "\n"
 "File name table:\n"
@@ -5425,7 +5630,7 @@
 "Tabela nazw plików:\n"
 " Wpis Kat    Czas      Rozmiar   Nazwa"
 
-#: src/readelf.c:6152
+#: src/readelf.c:6540
 msgid ""
 "\n"
 "Line number statements:"
@@ -5433,118 +5638,119 @@
 "\n"
 "Instrukcje numerów wierszy:"
 
-#: src/readelf.c:6228
+#: src/readelf.c:6591
+#, fuzzy, c-format
+msgid "invalid maximum operations per instruction is zero"
+msgstr "nieprawidłowa minimalna długość dopasowanego rozmiaru ciągu"
+
+#: src/readelf.c:6627
 #, 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:6233
+#: src/readelf.c:6632
 #, 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:6253
+#: src/readelf.c:6652
 #, c-format
 msgid " extended opcode %u: "
 msgstr " instrukcja rozszerzona %u: "
 
-#: src/readelf.c:6258
-#, fuzzy
+#: src/readelf.c:6657
 msgid " end of sequence"
-msgstr "koniec sekwencji"
+msgstr " koniec sekwencji"
 
-#: src/readelf.c:6275
-#, fuzzy, c-format
+#: src/readelf.c:6676
+#, c-format
 msgid " set address to %s\n"
-msgstr "ustawienie adresu na %s\n"
+msgstr " ustawienie adresu na %s\n"
 
-#: src/readelf.c:6296
-#, fuzzy, c-format
+#: src/readelf.c:6703
+#, 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:6309
+#: src/readelf.c:6716
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " ustawienie dyskryminatora na %u\n"
 
-#: src/readelf.c:6314
-#, fuzzy
+#: src/readelf.c:6721
 msgid " unknown opcode"
-msgstr "nieznana instrukcja"
+msgstr " nieznana instrukcja"
 
-#: src/readelf.c:6326
+#: src/readelf.c:6733
 msgid " copy"
 msgstr " kopiowanie"
 
-#: src/readelf.c:6337
-#, fuzzy, c-format
+#: src/readelf.c:6744
+#, 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:6341
-#, fuzzy, c-format
+#: src/readelf.c:6748
+#, 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:6352
+#: src/readelf.c:6759
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " zwiększenie wiersza o stałą %d do %<PRId64>\n"
 
-#: src/readelf.c:6360
+#: src/readelf.c:6767
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " ustawienie pliku na %<PRIu64>\n"
 
-#: src/readelf.c:6370
+#: src/readelf.c:6777
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr " ustawienie kolumny na %<PRIu64>\n"
 
-#: src/readelf.c:6377
+#: src/readelf.c:6784
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " ustawienie \"%s\" na %<PRIuFAST8>\n"
 
-#: src/readelf.c:6383
+#: src/readelf.c:6790
 msgid " set basic block flag"
 msgstr " ustawienie podstawowej flagi bloku"
 
-#: src/readelf.c:6392
-#, fuzzy, c-format
+#: src/readelf.c:6803
+#, 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:6396
-#, fuzzy, c-format
+#: src/readelf.c:6807
+#, 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:6414
-#, fuzzy, c-format
+#: src/readelf.c:6825
+#, 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:6423
+#: src/readelf.c:6834
 msgid " set prologue end flag"
 msgstr " ustawienie flagi końca prologu"
 
-#: src/readelf.c:6428
+#: src/readelf.c:6839
 msgid " set epilogue begin flag"
 msgstr " ustawienie flagi początku epilogu"
 
-#: src/readelf.c:6437
+#: src/readelf.c:6848
 #, c-format
 msgid " set isa to %u\n"
 msgstr " ustawienie isa na %u\n"
 
-#: src/readelf.c:6446
+#: src/readelf.c:6857
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -5552,41 +5758,101 @@
 msgstr[1] " nieznana instrukcja z %<PRIu8> parametrami:"
 msgstr[2] " nieznana instrukcja z %<PRIu8> parametrami:"
 
-#: src/readelf.c:6478
+#: src/readelf.c:6889
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr "nie można uzyskać zawartości .debug_log: %s"
 
-#: src/readelf.c:6548
+#: src/readelf.c:6964
 #, c-format
 msgid " [%6tx]  %s..%s"
 msgstr " [%6tx]  %s...%s"
 
-#: src/readelf.c:6550
+#: src/readelf.c:6966
 #, c-format
 msgid "           %s..%s"
 msgstr "           %s...%s"
 
-#: src/readelf.c:6557
+#: src/readelf.c:6973 src/readelf.c:7858
 msgid "   <INVALID DATA>\n"
 msgstr "   <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:6609
+#: src/readelf.c:7025 src/readelf.c:7186
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "nie można uzyskać danych sekcji informacji o makrach: %s"
 
-#: src/readelf.c:6688
+#: src/readelf.c:7104
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** niezakończony ciąg na końcu sekcji"
 
-#: src/readelf.c:6756
+#: src/readelf.c:7127
+#, fuzzy, c-format
+msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
+msgstr "%*s*** niezakończony ciąg na końcu sekcji"
+
+#: src/readelf.c:7227
+#, c-format
+msgid " Offset:             0x%<PRIx64>\n"
+msgstr " Offset:             0x%<PRIx64>\n"
+
+#: src/readelf.c:7239
+#, c-format
+msgid " Version:            %<PRIu16>\n"
+msgstr " Wersja:            %<PRIu16>\n"
+
+#: src/readelf.c:7245 src/readelf.c:7968
+#, c-format
+msgid "  unknown version, cannot parse section\n"
+msgstr "  nieznana wersja, nie można przetworzyć sekcji\n"
+
+#: src/readelf.c:7252
+#, c-format
+msgid " Flag:               0x%<PRIx8>\n"
+msgstr "  Flaga:               0x%<PRIx8>\n"
+
+#: src/readelf.c:7255
+#, c-format
+msgid " Offset length:      %<PRIu8>\n"
+msgstr " Długość offsetu:      %<PRIu8>\n"
+
+#: src/readelf.c:7263
+#, c-format
+msgid " .debug_line offset: 0x%<PRIx64>\n"
+msgstr " Offset .debug_line: 0x%<PRIx64>\n"
+
+#: src/readelf.c:7276
+#, c-format
+msgid "  extension opcode table, %<PRIu8> items:\n"
+msgstr " tablica instrukcji rozszerzenia, %<PRIu8> elementów:\n"
+
+#: src/readelf.c:7283
+#, c-format
+msgid "    [%<PRIx8>]"
+msgstr "    [%<PRIx8>]"
+
+#: src/readelf.c:7295
+#, c-format
+msgid " %<PRIu8> arguments:"
+msgstr " Parametry %<PRIu8>:"
+
+#: src/readelf.c:7323
+#, c-format
+msgid " no arguments."
+msgstr " brak parametrów."
+
+#: src/readelf.c:7560
+#, c-format
+msgid "vendor opcode not verified?"
+msgstr "instrukcja producenta nie została sprawdzona?"
+
+#: src/readelf.c:7588
 #, 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:6796
+#: src/readelf.c:7629
 #, c-format
 msgid ""
 "\n"
@@ -5597,12 +5863,12 @@
 "Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
 " %*s  Ciąg\n"
 
-#: src/readelf.c:6810
+#: src/readelf.c:7643
 #, c-format
 msgid " *** error while reading strings: %s\n"
 msgstr " *** błąd podczas odczytywania ciągów: %s\n"
 
-#: src/readelf.c:6830
+#: src/readelf.c:7663
 #, c-format
 msgid ""
 "\n"
@@ -5611,7 +5877,7 @@
 "\n"
 "Sekcja tabeli wyszukiwania ramki wywołania [%2zu] \".eh_frame_hdr\":\n"
 
-#: src/readelf.c:6932
+#: src/readelf.c:7765
 #, c-format
 msgid ""
 "\n"
@@ -5620,22 +5886,22 @@
 "\n"
 "Sekcja tabeli obsługiwania wyjątków [%2zu] \".gcc_except_table\":\n"
 
-#: src/readelf.c:6955
+#: src/readelf.c:7788
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " Kodowanie LPStart:    %#x "
 
-#: src/readelf.c:6967
+#: src/readelf.c:7800
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr " Kodowanie TType:      %#x "
 
-#: src/readelf.c:6981
+#: src/readelf.c:7815
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr " Kodowanie strony wywołania:  %#x "
 
-#: src/readelf.c:6994
+#: src/readelf.c:7828
 msgid ""
 "\n"
 " Call site table:"
@@ -5643,7 +5909,7 @@
 "\n"
 " Tabela strony wywołania:"
 
-#: src/readelf.c:7008
+#: src/readelf.c:7842
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5656,102 +5922,97 @@
 "        Lądowisko:                 %#<PRIx64>\n"
 "        Działanie:                 %u\n"
 
-#: src/readelf.c:7068
+#: src/readelf.c:7909
 #, c-format
 msgid "invalid TType encoding"
 msgstr "nieprawidłowe kodowanie TType"
 
-#: src/readelf.c:7089
-#, fuzzy, c-format
+#: src/readelf.c:7930
+#, 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:7118
-#, fuzzy, c-format
-msgid " Version:         %<PRId32>\n"
-msgstr "      %s: %<PRId64>\n"
-
-#: src/readelf.c:7124
+#: src/readelf.c:7959
 #, c-format
-msgid "  unknown version, cannot parse section\n"
-msgstr ""
+msgid " Version:         %<PRId32>\n"
+msgstr " Wersja:         %<PRId32>\n"
 
-#: src/readelf.c:7133
-#, fuzzy, c-format
+#: src/readelf.c:7977
+#, c-format
 msgid " CU offset:       %#<PRIx32>\n"
-msgstr " (offset: %#<PRIx64>)"
+msgstr " offset CU:       %#<PRIx32>\n"
 
-#: src/readelf.c:7140
-#, fuzzy, c-format
+#: src/readelf.c:7984
+#, c-format
 msgid " TU offset:       %#<PRIx32>\n"
-msgstr " (offset: %#<PRIx64>)"
+msgstr " offset TU:       %#<PRIx32>\n"
 
-#: src/readelf.c:7147
-#, fuzzy, c-format
+#: src/readelf.c:7991
+#, c-format
 msgid " address offset:  %#<PRIx32>\n"
-msgstr " (kończący offset: %#<PRIx64>)"
+msgstr " offset adresu:  %#<PRIx32>\n"
 
-#: src/readelf.c:7154
-#, fuzzy, c-format
+#: src/readelf.c:7998
+#, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
-msgstr " (offset: %#<PRIx64>)"
+msgstr " offset symbolu:   %#<PRIx32>\n"
 
-#: src/readelf.c:7161
-#, fuzzy, c-format
+#: src/readelf.c:8005
+#, c-format
 msgid " constant offset: %#<PRIx32>\n"
-msgstr " (kończący offset: %#<PRIx64>)"
+msgstr " offset stałej: %#<PRIx32>\n"
 
-#: src/readelf.c:7168
-#, fuzzy, c-format
+#: src/readelf.c:8012
+#, 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:7190
-#, fuzzy, c-format
+#: src/readelf.c:8034
+#, 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:7216
-#, fuzzy, c-format
+#: src/readelf.c:8060
+#, 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:7243
-#, fuzzy, c-format
+#: src/readelf.c:8089
+#, 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:7296
+#: src/readelf.c:8176
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s"
 
-#: src/readelf.c:7445 src/readelf.c:8046
+#: src/readelf.c:8336 src/readelf.c:8942 src/readelf.c:9053 src/readelf.c:9111
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "nie można przekonwertować danych notatki core: %s"
 
-#: src/readelf.c:7786
+#: src/readelf.c:8683
 #, c-format
 msgid ""
 "\n"
@@ -5760,21 +6021,21 @@
 "\n"
 "%*s... <powtarza się jeszcze %u razy>..."
 
-#: src/readelf.c:8145
+#: src/readelf.c:9190
 msgid "  Owner          Data size  Type\n"
 msgstr "  Właściciel     Rozmiar danych  Typ\n"
 
-#: src/readelf.c:8163
+#: src/readelf.c:9208
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:8197
+#: src/readelf.c:9258
 #, c-format
 msgid "cannot get content of note section: %s"
 msgstr "nie można uzyskać zawartości sekcji notatki: %s"
 
-#: src/readelf.c:8224
+#: src/readelf.c:9285
 #, c-format
 msgid ""
 "\n"
@@ -5784,7 +6045,7 @@
 "Segment notatki [%2zu] \"%s\" o długości %<PRIu64> bajtów pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:8247
+#: src/readelf.c:9308
 #, c-format
 msgid ""
 "\n"
@@ -5793,7 +6054,7 @@
 "\n"
 "Segment notatki o długości %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:8293
+#: src/readelf.c:9354
 #, c-format
 msgid ""
 "\n"
@@ -5802,12 +6063,12 @@
 "\n"
 "Sekcja [%Zu] \"%s\" nie posiada danych do zrzucenia.\n"
 
-#: src/readelf.c:8299 src/readelf.c:8322
+#: src/readelf.c:9360 src/readelf.c:9383
 #, 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:8303
+#: src/readelf.c:9364
 #, c-format
 msgid ""
 "\n"
@@ -5817,7 +6078,7 @@
 "Segment zrzutu szesnastkowego [%Zu] \"%s\", %<PRIu64> bajtów pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:8316
+#: src/readelf.c:9377
 #, c-format
 msgid ""
 "\n"
@@ -5826,7 +6087,7 @@
 "\n"
 "Sekcja [%Zu] \"%s\" nie posiada ciągów do zrzucenia.\n"
 
-#: src/readelf.c:8326
+#: src/readelf.c:9387
 #, c-format
 msgid ""
 "\n"
@@ -5836,7 +6097,7 @@
 "Sekcja ciągów [%Zu] \"%s\" zawiera %<PRIu64> bajtów pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:8374
+#: src/readelf.c:9435
 #, c-format
 msgid ""
 "\n"
@@ -5845,7 +6106,7 @@
 "\n"
 "sekcja [%lu] nie istnieje"
 
-#: src/readelf.c:8403
+#: src/readelf.c:9464
 #, c-format
 msgid ""
 "\n"
@@ -5854,12 +6115,12 @@
 "\n"
 "sekcja \"%s\" nie istnieje"
 
-#: src/readelf.c:8460
+#: src/readelf.c:9521
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "nie można uzyskać indeksu symboli archiwum \"%s\": %s"
 
-#: src/readelf.c:8463
+#: src/readelf.c:9524
 #, c-format
 msgid ""
 "\n"
@@ -5868,7 +6129,7 @@
 "\n"
 "Archiwum \"%s\" nie posiada indeksu symboli\n"
 
-#: src/readelf.c:8467
+#: src/readelf.c:9528
 #, c-format
 msgid ""
 "\n"
@@ -5877,17 +6138,17 @@
 "\n"
 "Indeks archiwum \"%s\" posiada %Zu wpisów:\n"
 
-#: src/readelf.c:8485
+#: src/readelf.c:9546
 #, 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:8490
+#: src/readelf.c:9551
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Element archiwum \"%s\" zawiera:\n"
 
-#: src/size.c:68
+#: src/size.c:60
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd' or `sysv'.  The default "
 "is `bsd'"
@@ -5895,80 +6156,80 @@
 "Używa FORMATU wyjścia. Może to być \"bsd\" lub \"sysv\". Domyślny jest \"bsd"
 "\""
 
-#: src/size.c:70
+#: src/size.c:62
 msgid "Same as `--format=sysv'"
 msgstr "To samo, co \"--format=sysv\""
 
-#: src/size.c:71
+#: src/size.c:63
 msgid "Same as `--format=bsd'"
 msgstr "To samo, co \"--format=bsd\""
 
-#: src/size.c:74
+#: src/size.c:66
 msgid "Same as `--radix=10'"
 msgstr "To samo, co \"--radix=10\""
 
-#: src/size.c:75
+#: src/size.c:67
 msgid "Same as `--radix=8'"
 msgstr "To samo, co \"--radix=8\""
 
-#: src/size.c:76
+#: src/size.c:68
 msgid "Same as `--radix=16'"
 msgstr "To samo, co \"--radix=16\""
 
-#: src/size.c:78
+#: src/size.c:70
 msgid "Similar to `--format=sysv' output but in one line"
 msgstr "Podobne do wyjścia \"--format=sysv\", ale w jednym wierszu"
 
-#: src/size.c:82
+#: src/size.c:74
 msgid "Print size and permission flags for loadable segments"
 msgstr "Wyświetla rozmiar i flagi uprawnień dla segmentów wczytywalnych"
 
-#: src/size.c:83
+#: src/size.c:75
 msgid "Display the total sizes (bsd only)"
 msgstr "Wyświetla całkowite rozmiary (tylko bsd)"
 
-#: src/size.c:88
+#: src/size.c:80
 msgid "List section sizes of FILEs (a.out by default)."
 msgstr "Wyświetla listę rozmiarów sekcji PLIKU (domyślnie a.out)."
 
-#: src/size.c:269
+#: src/size.c:261
 #, c-format
 msgid "Invalid format: %s"
 msgstr "Nieprawidłowy format: %s"
 
-#: src/size.c:280
+#: src/size.c:272
 #, c-format
 msgid "Invalid radix: %s"
 msgstr "Nieprawidłowa baza: %s"
 
-#: src/size.c:339
+#: src/size.c:331
 #, c-format
 msgid "%s: file format not recognized"
 msgstr "%s: nie rozpoznano formatu pliku"
 
-#: src/size.c:446 src/size.c:589
+#: src/size.c:437 src/size.c:570
 #, c-format
 msgid " (ex %s)"
 msgstr " (ex %s)"
 
-#: src/size.c:614
+#: src/size.c:595
 msgid "(TOTALS)\n"
 msgstr "(CAŁKOWITE)\n"
 
-#: src/strings.c:70
+#: src/strings.c:62
 msgid "Output Selection:"
 msgstr "Wybór wyjścia:"
 
-#: src/strings.c:71
+#: src/strings.c:63
 msgid "Scan entire file, not only loaded sections"
 msgstr "Przeszukuje cały plik, nie tylko wczytane sekcje"
 
-#: src/strings.c:73
+#: src/strings.c:65
 msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 msgstr ""
 "Wyświetlane są tylko zakończone NUL sekwencje o MIN-LEN lub więcej znaków"
 
-#: src/strings.c:74
+#: src/strings.c:66
 msgid ""
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
@@ -5976,455 +6237,472 @@
 "Wybór rozmiaru i kolejności znaków: s = 7 bitów, S = 8 bitów, {b,l} = 16 "
 "bitów, {B,L} = 32 bity"
 
-#: src/strings.c:78
+#: src/strings.c:70
 msgid "Print name of the file before each string."
 msgstr "Wyświetla nazwę pliku przed każdym ciągiem."
 
-#: src/strings.c:80
+#: src/strings.c:72
 msgid "Print location of the string in base 8, 10, or 16 respectively."
 msgstr "Wyświetla położenie ciągu z podstawą odpowiednio 8, 10 lub 16."
 
-#: src/strings.c:81
+#: src/strings.c:73
 msgid "Alias for --radix=o"
 msgstr "Alias dla --radix=o"
 
-#: src/strings.c:88
+#: src/strings.c:80
 msgid "Print the strings of printable characters in files."
 msgstr "Wyświetla ciągi znaków drukowalnych w plikach."
 
-#: src/strings.c:268 src/strings.c:303
+#: 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:314
+#: 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:599
+#: src/strings.c:596
 #, c-format
 msgid "lseek64 failed"
 msgstr "lseek64 nie powiodło się"
 
-#: src/strings.c:616 src/strings.c:680
+#: src/strings.c:613 src/strings.c:677
 #, c-format
 msgid "re-mmap failed"
 msgstr "ponowne mmap nie powiodło się"
 
-#: src/strings.c:653
+#: src/strings.c:650
 #, c-format
 msgid "mprotect failed"
 msgstr "mprotect nie powiodło się"
 
-#: src/strip.c:77
+#: src/strip.c:69
 msgid "Place stripped output into FILE"
 msgstr "Umieszcza okrojone wyjście w PLIKU"
 
-#: src/strip.c:78
+#: src/strip.c:70
 msgid "Extract the removed sections into FILE"
 msgstr "Wydobywa usunięte sekcje do PLIKU"
 
-#: src/strip.c:79
+#: src/strip.c:71
 msgid "Embed name FILE instead of -f argument"
 msgstr "Osadza nazwę PLIKU zamiast parametru -f"
 
-#: src/strip.c:83
+#: src/strip.c:75
 msgid "Remove all debugging symbols"
 msgstr "Usuwa wszystkie symbole debugowania"
 
-#: src/strip.c:87
+#: src/strip.c:79
 msgid "Remove section headers (not recommended)"
 msgstr "Usuwa nagłówki sekcji (niezalecane)"
 
-#: src/strip.c:89
+#: src/strip.c:81
 msgid "Copy modified/access timestamps to the output"
 msgstr "Kopiuje czasy modyfikacji/dostępu do wyjścia"
 
-#: src/strip.c:91
+#: src/strip.c:83
 msgid ""
 "Resolve all trivial relocations between debug sections if the removed "
 "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:93
+#: src/strip.c:85
 msgid "Remove .comment section"
 msgstr "Usuwa sekcję .comment"
 
-#: src/strip.c:96
+#: src/strip.c:88
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr "Łagodzi kilka reguł, aby obsłużyć lekko uszkodzone pliki ELF"
 
-#: src/strip.c:101
+#: src/strip.c:93
 msgid "Discard symbols from object files."
 msgstr "Odrzuca symbole z plików obiektów."
 
-#: src/strip.c:189
+#: 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:203
+#: src/strip.c:195
 #, c-format
 msgid "Only one input file allowed together with '-o' and '-f'"
 msgstr "Tylko jeden plik wejściowy jest dozwolony z \"-o\" i \"-f\""
 
-#: src/strip.c:239
+#: src/strip.c:231
 #, c-format
 msgid "-f option specified twice"
 msgstr "Opcję -f podano dwukrotnie"
 
-#: src/strip.c:248
+#: src/strip.c:240
 #, c-format
 msgid "-F option specified twice"
 msgstr "Opcję -F podano dwukrotnie"
 
-#: src/strip.c:257 src/unstrip.c:125
+#: src/strip.c:249 src/unstrip.c:121
 #, c-format
 msgid "-o option specified twice"
 msgstr "Opcję -o podano dwukrotnie"
 
-#: src/strip.c:281
+#: src/strip.c:273
 #, c-format
 msgid "-R option supports only .comment section"
 msgstr "Opcja -R obsługuje tylko sekcję .comment"
 
-#: src/strip.c:323 src/strip.c:347
+#: src/strip.c:315 src/strip.c:339
 #, c-format
 msgid "cannot stat input file '%s'"
 msgstr "nie można wykonać stat na pliku wejściowym \"%s\""
 
-#: src/strip.c:337
+#: src/strip.c:329
 #, c-format
 msgid "while opening '%s'"
 msgstr "podczas otwierania \"%s\""
 
-#: src/strip.c:375
+#: src/strip.c:367
 #, c-format
 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:475
+#: src/strip.c:468
 #, c-format
 msgid "cannot open EBL backend"
 msgstr "nie można otworzyć zaplecza EBL"
 
-#: src/strip.c:525 src/strip.c:549
+#: src/strip.c:508
+#, fuzzy, c-format
+msgid "cannot get number of phdrs"
+msgstr "nie można określić liczby nagłówków programu: %s"
+
+#: src/strip.c:523 src/strip.c:547
 #, c-format
 msgid "cannot create new file '%s': %s"
 msgstr "nie można utworzyć nowego pliku \"%s\": %s"
 
-#: src/strip.c:609
+#: src/strip.c:613
 #, c-format
 msgid "illformed file '%s'"
 msgstr "plik \"%s\" posiada błędny format"
 
-#: src/strip.c:913 src/strip.c:1002
+#: src/strip.c:935 src/strip.c:1024
 #, c-format
 msgid "while generating output file: %s"
 msgstr "podczas tworzenia pliku wyjściowego: %s"
 
-#: src/strip.c:975 src/strip.c:1937
+#: src/strip.c:997 src/strip.c:1962
 #, c-format
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s"
 
-#: src/strip.c:989
+#: src/strip.c:1011
 #, c-format
 msgid "while preparing output for '%s'"
 msgstr "podczas przygotowywania wyjścia dla \"%s\""
 
-#: src/strip.c:1040 src/strip.c:1096
+#: src/strip.c:1062 src/strip.c:1119
 #, c-format
 msgid "while create section header section: %s"
 msgstr "podczas tworzenia sekcji nagłówka sekcji: %s"
 
-#: src/strip.c:1046
+#: src/strip.c:1068
 #, c-format
 msgid "cannot allocate section data: %s"
 msgstr "nie można przydzielić danych sekcji: %s"
 
-#: src/strip.c:1105
+#: src/strip.c:1128
 #, c-format
 msgid "while create section header string table: %s"
 msgstr "podczas tworzenia tabeli ciągów nagłówka sekcji: %s"
 
-#: src/strip.c:1732
-#, fuzzy, c-format
+#: src/strip.c:1757
+#, c-format
 msgid "bad relocation"
-msgstr "Wyświetla relokacje"
+msgstr "błędna relokacja"
 
-#: src/strip.c:1849 src/strip.c:1959
+#: src/strip.c:1874 src/strip.c:1984
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "podczas zapisywania \"%s\": %s"
 
-#: src/strip.c:1860
+#: src/strip.c:1885
 #, c-format
 msgid "while creating '%s'"
 msgstr "podczas tworzenia \"%s\""
 
-#: src/strip.c:1882
+#: src/strip.c:1907
 #, c-format
 msgid "while computing checksum for debug information"
 msgstr "podczas obliczania sumy kontrolnej dla informacji debugowania"
 
-#: src/strip.c:1945
+#: src/strip.c:1970
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: błąd podczas odczytywania pliku: %s"
 
-#: src/strip.c:1984 src/strip.c:2004
+#: src/strip.c:2009 src/strip.c:2029
 #, c-format
 msgid "while writing '%s'"
 msgstr "podczas zapisywania \"%s\""
 
-#: src/strip.c:2038 src/strip.c:2045
+#: src/strip.c:2066 src/strip.c:2073
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "błąd podczas kończenia \"%s\": %s"
 
-#: src/strip.c:2068 src/strip.c:2125
+#: src/strip.c:2096 src/strip.c:2153
 #, 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:78
+#: src/unstrip.c:70
 msgid "Match MODULE against file names, not module names"
 msgstr "Dopasowuje MODUŁY do nazw plików, a nie nazwy modułów"
 
-#: src/unstrip.c:79
+#: src/unstrip.c:71
 msgid "Silently skip unfindable files"
 msgstr "Pomija nieodnalezione pliki bez zgłaszania tego"
 
-#: src/unstrip.c:82
+#: src/unstrip.c:74
 msgid "Place output into FILE"
 msgstr "Umieszcza wyjście w PLIKU"
 
-#: src/unstrip.c:84
+#: src/unstrip.c:76
 msgid "Create multiple output files under DIRECTORY"
 msgstr "Tworzy wiele plików wyjściowych w KATALOGU"
 
-#: src/unstrip.c:85
+#: src/unstrip.c:77
 msgid "Use module rather than file names"
 msgstr "Używa nazw modułów zamiast nazw plików"
 
-#: src/unstrip.c:87
+#: src/unstrip.c:79
 msgid "Create output for modules that have no separate debug information"
 msgstr ""
 "Tworzy wyjście dla modułów nieposiadających oddzielnych informacji "
 "debugowania"
 
-#: src/unstrip.c:90
+#: src/unstrip.c:82
 msgid "Apply relocations to section contents in ET_REL files"
 msgstr "Zastosowuje relokacje do zawartości sekcji w plikach ET_REL"
 
-#: src/unstrip.c:92
+#: 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:134
+#: 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:166
+#: 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:175
+#: 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:190
+#: src/unstrip.c:189
 #, c-format
 msgid "output directory '%s'"
 msgstr "katalog wyjściowy \"%s\""
 
-#: src/unstrip.c:199
+#: 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:205
+#: 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:218
+#: 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:254
+#: src/unstrip.c:253
 #, c-format
 msgid "cannot create ELF header: %s"
 msgstr "nie można utworzyć nagłówka ELF: %s"
 
-#: src/unstrip.c:259
+#: src/unstrip.c:258
 #, c-format
 msgid "cannot copy ELF header: %s"
 msgstr "nie można skopiować nagłówka ELF: %s"
 
-#: src/unstrip.c:264 src/unstrip.c:1828
+#: src/unstrip.c:262 src/unstrip.c:1832 src/unstrip.c:1876
+#, fuzzy, c-format
+msgid "cannot get number of program headers: %s"
+msgstr "nie można określić liczby nagłówków programu: %s"
+
+#: src/unstrip.c:267 src/unstrip.c:1836
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "nie można utworzyć nagłówków programu: %s"
 
-#: src/unstrip.c:270
+#: src/unstrip.c:273
 #, c-format
 msgid "cannot copy program header: %s"
 msgstr "nie można skopiować nagłówka programu: %s"
 
-#: src/unstrip.c:280
+#: src/unstrip.c:283
 #, c-format
 msgid "cannot copy section header: %s"
 msgstr "nie można skopiować nagłówka sekcji: %s"
 
-#: src/unstrip.c:283 src/unstrip.c:1509
+#: src/unstrip.c:286 src/unstrip.c:1513
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "nie można uzyskać danych sekcji: %s"
 
-#: src/unstrip.c:285 src/unstrip.c:1511
+#: src/unstrip.c:288 src/unstrip.c:1515
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "nie można skopiować danych sekcji: %s"
 
-#: src/unstrip.c:309
+#: src/unstrip.c:312
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "nie można utworzyć katalogu \"%s\""
 
-#: src/unstrip.c:349 src/unstrip.c:766 src/unstrip.c:1543
+#: src/unstrip.c:352 src/unstrip.c:769 src/unstrip.c:1547
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "nie można uzyskać wpisu tabeli symboli: %s"
 
-#: src/unstrip.c:365 src/unstrip.c:583 src/unstrip.c:604 src/unstrip.c:616
-#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
+#: src/unstrip.c:368 src/unstrip.c:586 src/unstrip.c:607 src/unstrip.c:619
+#: src/unstrip.c:1568 src/unstrip.c:1698 src/unstrip.c:1722
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "nie można zaktualizować tabeli symboli: %s"
 
-#: src/unstrip.c:375
+#: src/unstrip.c:378
 #, c-format
 msgid "cannot update section header: %s"
 msgstr "nie można zaktualizować nagłówka sekcji: %s"
 
-#: src/unstrip.c:414 src/unstrip.c:425
+#: src/unstrip.c:417 src/unstrip.c:428
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr "nie można zaktualizować relokacji: %s"
 
-#: src/unstrip.c:512
+#: src/unstrip.c:515
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr "nie można uzyskać wersji symbolu: %s"
 
-#: src/unstrip.c:524
+#: src/unstrip.c:527
 #, 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:772
+#: src/unstrip.c:775
 #, c-format
 msgid "invalid string offset in symbol [%Zu]"
 msgstr "nieprawidłowy offset ciągu w symbolu [%Zu]"
 
-#: src/unstrip.c:914 src/unstrip.c:1254
+#: src/unstrip.c:917 src/unstrip.c:1258
 #, c-format
 msgid "cannot read section [%Zu] name: %s"
 msgstr "nie można odczytać nazwy sekcji [%Zu]: %s"
 
-#: src/unstrip.c:955 src/unstrip.c:974 src/unstrip.c:1007
+#: src/unstrip.c:958 src/unstrip.c:977 src/unstrip.c:1010
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr "nie można odczytać sekcji \".gnu.prelink_undo\": %s"
 
-#: src/unstrip.c:995
+#: src/unstrip.c:998
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr "nieprawidłowa zawartość w sekcji \"%s\""
 
-#: src/unstrip.c:1050 src/unstrip.c:1374
+#: src/unstrip.c:1053 src/unstrip.c:1378
 #, c-format
 msgid "cannot find matching section for [%Zu] '%s'"
 msgstr "nie można odnaleźć pasującej sekcji dla [%Zu] \"%s\""
 
-#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
+#: src/unstrip.c:1178 src/unstrip.c:1193 src/unstrip.c:1459
 #, 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:1198
+#: src/unstrip.c:1202
 #, 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:1225 src/unstrip.c:1229
+#: src/unstrip.c:1229 src/unstrip.c:1233
 #, 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:1233 src/unstrip.c:1237 src/unstrip.c:1470
+#: src/unstrip.c:1237 src/unstrip.c:1241 src/unstrip.c:1474
 #, c-format
 msgid "cannot get section count: %s"
 msgstr "nie można uzyskać licznika sekcji: %s"
 
-#: src/unstrip.c:1240
+#: src/unstrip.c:1244
 #, 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:1299 src/unstrip.c:1389
+#: src/unstrip.c:1303 src/unstrip.c:1393
 #, 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:1449
+#: src/unstrip.c:1453
 #, c-format
 msgid "cannot add new section: %s"
 msgstr "nie można dodać nowej sekcji: %s"
 
-#: src/unstrip.c:1551
+#: src/unstrip.c:1555
 #, c-format
 msgid "symbol [%Zu] has invalid section index"
 msgstr "symbol [%Zu] posiada nieprawidłowy indeks sekcji"
 
-#: src/unstrip.c:1789
+#: src/unstrip.c:1793
 #, c-format
 msgid "cannot read section data: %s"
 msgstr "nie można odczytać danych sekcji: %s"
 
-#: src/unstrip.c:1810
+#: src/unstrip.c:1814
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr "nie można uzyskać nagłówka ELF: %s"
 
-#: src/unstrip.c:1838
+#: src/unstrip.c:1846
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "nie można zaktualizować nagłówka programu: %s"
 
-#: src/unstrip.c:1843 src/unstrip.c:1922
+#: src/unstrip.c:1851 src/unstrip.c:1934
 #, c-format
 msgid "cannot write output file: %s"
 msgstr "nie można zapisać pliku wyjściowego: %s"
 
-#: src/unstrip.c:1891
+#: src/unstrip.c:1903
 #, 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:1894
+#: src/unstrip.c:1906
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6432,58 +6710,77 @@
 "Dane DWARF w \"%s\" nie zostały dostosowane do przesunięcia wczesnego "
 "konsolidowania; proszę rozważyć polecenie prelink -u"
 
-#: src/unstrip.c:1913 src/unstrip.c:1953 src/unstrip.c:1965 src/unstrip.c:2045
+#: src/unstrip.c:1925 src/unstrip.c:1976 src/unstrip.c:1988 src/unstrip.c:2074
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr "nie można utworzyć deskryptora ELF: %s"
 
-#: src/unstrip.c:1971
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "\"%s\" i \"%s\" nie zgadzają się"
+#: src/unstrip.c:1967
+msgid "WARNING: "
+msgstr ""
 
-#: src/unstrip.c:2002
+#: src/unstrip.c:1969
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1992
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1995
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1998
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:2001
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2031
 #, 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:2006
+#: src/unstrip.c:2035
 #, 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:2021
+#: src/unstrip.c:2050
 #, 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:2025
+#: src/unstrip.c:2054
 #, 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:2038
+#: src/unstrip.c:2067
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr "moduł \"%s\" pliku \"%s\" nie został okrojony"
 
-#: src/unstrip.c:2069
+#: src/unstrip.c:2098
 #, 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:2202
+#: src/unstrip.c:2231
 #, c-format
 msgid "no matching modules found"
 msgstr "nie odnaleziono pasujących modułów"
 
-#: src/unstrip.c:2211
+#: src/unstrip.c:2240
 #, c-format
 msgid "matched more than one module"
 msgstr "pasuje więcej niż jeden moduł"
 
-#: src/unstrip.c:2258
+#: src/unstrip.c:2287
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
@@ -6491,7 +6788,7 @@
 "OKROJONY-PLIK PLIK-DEBUGOWANIA\n"
 "[MODUŁ...]"
 
-#: src/unstrip.c:2259
+#: src/unstrip.c:2288
 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"
@@ -6533,25 +6830,24 @@
 "\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 ""
-#~ "\n"
-#~ "\n"
-#~ "Symbols from %s[%s]:\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "\n"
-#~ "Symbole z %s[%s]:\n"
-#~ "\n"
+#, fuzzy
+#~ msgid "cannot attach to process"
+#~ msgstr "nie można utworzyć drzewa wyszukiwania"
+
+#, fuzzy
+#~ 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ę"
diff --git a/src/po/uk.gmo b/src/po/uk.gmo
index aba54ba..4ae14cd 100644
--- a/src/po/uk.gmo
+++ b/src/po/uk.gmo
Binary files differ
diff --git a/src/po/uk.po b/src/po/uk.po
index fd1e207..65ee122 100644
--- a/src/po/uk.po
+++ b/src/po/uk.po
@@ -1,226 +1,237 @@
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Yuri Chornoivan <yurchor@ukr.net>, 2010, 2011.
+# Ukrainian translation of elfutils
+# 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, 2013.
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-02-16 13:21+0100\n"
-"PO-Revision-Date: 2011-02-12 13:36+0200\n"
+"POT-Creation-Date: 2014-12-19 21:45+0100\n"
+"PO-Revision-Date: 2013-10-09 17:50+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
-"Language-Team: Ukrainian <kde-i18n-doc@kde.org>\n"
+"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 1.2\n"
+"X-Generator: Lokalize 1.5\n"
 
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2844
-#: src/readelf.c:3183 src/unstrip.c:2098 src/unstrip.c:2306
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3182
+#: src/readelf.c:3559 src/readelf.c:8285 src/unstrip.c:2127 src/unstrip.c:2335
 #, c-format
 msgid "memory exhausted"
 msgstr "пам’ять вичерпано"
 
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
+#: 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:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
+#: libelf/elf_error.c:91
 msgid "out of memory"
 msgstr "нестача пам'яті"
 
-#: libasm/asm_error.c:64 src/ldgeneric.c:2685
+#: libasm/asm_error.c:67 src/ldgeneric.c:2677
 #, c-format
 msgid "cannot create output file"
 msgstr "не вдалося створити файл виводу даних"
 
-#: libasm/asm_error.c:65
+#: libasm/asm_error.c:68
 msgid "invalid parameter"
 msgstr "некоректний параметр"
 
-#: libasm/asm_error.c:66
+#: libasm/asm_error.c:69
 msgid "cannot change mode of output file"
 msgstr "не вдалося змінити права доступу до файла виводу даних"
 
-#: libasm/asm_error.c:67 src/ldgeneric.c:6998
+#: libasm/asm_error.c:70 src/ldgeneric.c:6990
 #, c-format
 msgid "cannot rename output file"
 msgstr "не вдалося перейменувати файл виводу даних"
 
-#: libasm/asm_error.c:68
+#: libasm/asm_error.c:71
 msgid "duplicate symbol"
 msgstr "дублювання символів"
 
-#: libasm/asm_error.c:69
+#: libasm/asm_error.c:72
 msgid "invalid section type for operation"
 msgstr "некоректний тип розділу для дії"
 
-#: libasm/asm_error.c:70
+#: libasm/asm_error.c:73
 msgid "error during output of data"
 msgstr "помилка під час спроби виведення даних"
 
-#: libasm/asm_error.c:71
+#: libasm/asm_error.c:74
 msgid "no backend support available"
 msgstr "підтримки серверів не передбачено"
 
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
+#: libelf/elf_error.c:63
 msgid "unknown error"
 msgstr "невідома помилка"
 
-#: libdw/dwarf_error.c:81
+#: libdw/dwarf_error.c:60
 msgid "invalid access"
 msgstr "некоректний доступ"
 
-#: libdw/dwarf_error.c:82
+#: libdw/dwarf_error.c:61
 msgid "no regular file"
 msgstr "не є звичайним файлом"
 
-#: libdw/dwarf_error.c:83
+#: libdw/dwarf_error.c:62
 msgid "I/O error"
 msgstr "помилка вводу/виводу"
 
-#: libdw/dwarf_error.c:84
+#: libdw/dwarf_error.c:63
 msgid "invalid ELF file"
 msgstr "некоректний файл ELF"
 
-#: libdw/dwarf_error.c:85
+#: libdw/dwarf_error.c:64
 msgid "no DWARF information"
 msgstr "немає відомостей DWARF"
 
-#: libdw/dwarf_error.c:86
+#: libdw/dwarf_error.c:65
 msgid "no ELF file"
 msgstr "немає файла ELF"
 
-#: libdw/dwarf_error.c:87
+#: libdw/dwarf_error.c:66
 msgid "cannot get ELF header"
 msgstr "не вдалося отримати заголовок ELF"
 
-#: libdw/dwarf_error.c:89
+#: libdw/dwarf_error.c:68
 msgid "not implemented"
 msgstr "не реалізовано"
 
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
+#: libdw/dwarf_error.c:69 libelf/elf_error.c:107 libelf/elf_error.c:155
 msgid "invalid command"
 msgstr "некоректна команда"
 
-#: libdw/dwarf_error.c:91
+#: libdw/dwarf_error.c:70
 msgid "invalid version"
 msgstr "некоректна версія"
 
-#: libdw/dwarf_error.c:92
+#: libdw/dwarf_error.c:71
 msgid "invalid file"
 msgstr "некоректний файл"
 
-#: libdw/dwarf_error.c:93
+#: libdw/dwarf_error.c:72
 msgid "no entries found"
 msgstr "запис не знайдено"
 
-#: libdw/dwarf_error.c:94
+#: libdw/dwarf_error.c:73
 msgid "invalid DWARF"
 msgstr "некоректний запис DWARF"
 
-#: libdw/dwarf_error.c:95
+#: libdw/dwarf_error.c:74
 msgid "no string data"
 msgstr "немає рядкових даних"
 
-#: libdw/dwarf_error.c:96
+#: libdw/dwarf_error.c:75
 msgid "no address value"
 msgstr "немає значення адреси"
 
-#: libdw/dwarf_error.c:97
+#: libdw/dwarf_error.c:76
 msgid "no constant value"
 msgstr "немає значення сталої"
 
-#: libdw/dwarf_error.c:98
+#: libdw/dwarf_error.c:77
 msgid "no reference value"
 msgstr "немає значення для порівняння"
 
-#: libdw/dwarf_error.c:99
+#: libdw/dwarf_error.c:78
 msgid "invalid reference value"
 msgstr "некоректне значення для порівняння"
 
-#: libdw/dwarf_error.c:100
+#: libdw/dwarf_error.c:79
 msgid ".debug_line section missing"
 msgstr "немає розділу .debug_line"
 
-#: libdw/dwarf_error.c:101
+#: libdw/dwarf_error.c:80
 msgid "invalid .debug_line section"
 msgstr "некоректний розділ .debug_line"
 
-#: libdw/dwarf_error.c:102
+#: libdw/dwarf_error.c:81
 msgid "debug information too big"
 msgstr "занадто великі відомості для діагностики"
 
-#: libdw/dwarf_error.c:103
+#: libdw/dwarf_error.c:82
 msgid "invalid DWARF version"
 msgstr "некоректна версія DWARF"
 
-#: libdw/dwarf_error.c:104
+#: libdw/dwarf_error.c:83
 msgid "invalid directory index"
 msgstr "некоректний покажчик каталогу"
 
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
 msgid "address out of range"
 msgstr "некоректна адреса"
 
-#: libdw/dwarf_error.c:106
+#: libdw/dwarf_error.c:85
 msgid "no location list value"
 msgstr "немає значення списку адрес"
 
-#: libdw/dwarf_error.c:107
+#: libdw/dwarf_error.c:86
 msgid "no block data"
 msgstr "немає блокових даних"
 
-#: libdw/dwarf_error.c:108
+#: libdw/dwarf_error.c:87
 msgid "invalid line index"
 msgstr "некоректний номер рядка"
 
-#: libdw/dwarf_error.c:109
+#: libdw/dwarf_error.c:88
 msgid "invalid address range index"
 msgstr "некоректний індекс діапазону адрес"
 
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
 msgid "no matching address range"
 msgstr "не виявлено відповідного діапазону адрес"
 
-#: libdw/dwarf_error.c:111
+#: libdw/dwarf_error.c:90
 msgid "no flag value"
 msgstr "немає значення прапорця"
 
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
+#: libdw/dwarf_error.c:91 libelf/elf_error.c:232
 msgid "invalid offset"
 msgstr "некоректне значення зміщення"
 
-#: libdw/dwarf_error.c:113
+#: libdw/dwarf_error.c:92
 msgid ".debug_ranges section missing"
 msgstr "немає розділу .debug_ranges"
 
-#: libdw/dwarf_error.c:114
+#: libdw/dwarf_error.c:93
 msgid "invalid CFI section"
 msgstr "некоректний розділ CFI"
 
-#: libdwfl/argp-std.c:67 src/unstrip.c:2248
+#: libdw/dwarf_error.c:94
+msgid "no alternative debug link found"
+msgstr "альтернативного діагностичного посилання не знайдено"
+
+#: libdw/dwarf_error.c:95
+#, fuzzy
+msgid "invalid opcode"
+msgstr "некоректний параметр"
+
+#: libdwfl/argp-std.c:46 src/unstrip.c:2277
 msgid "Input selection options:"
 msgstr "Вибір параметрів виведення даних:"
 
-#: libdwfl/argp-std.c:68
+#: libdwfl/argp-std.c:47
 msgid "Find addresses in FILE"
 msgstr "Знайти адреси у ФАЙЛІ"
 
-#: libdwfl/argp-std.c:70
+#: libdwfl/argp-std.c:49
 msgid "Find addresses from signatures found in COREFILE"
 msgstr "Знайти адреси за сигнатурами з файла COREFILE"
 
-#: libdwfl/argp-std.c:72
+#: libdwfl/argp-std.c:51
 msgid "Find addresses in files mapped into process PID"
 msgstr "Знайти адреси у файлах, відображених на процес з PID"
 
-#: libdwfl/argp-std.c:74
+#: libdwfl/argp-std.c:53
 msgid ""
 "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
 "format"
@@ -228,412 +239,485 @@
 "Знайти адреси у файлах, відображених як read за ФАЙЛОМ у форматі /proc/PID/"
 "maps Linux"
 
-#: libdwfl/argp-std.c:76
+#: libdwfl/argp-std.c:55
 msgid "Find addresses in the running kernel"
 msgstr "Знайти адреси у запущеному ядрі"
 
-#: libdwfl/argp-std.c:78
+#: libdwfl/argp-std.c:57
 msgid "Kernel with all modules"
 msgstr "Ядро з усіма модулями"
 
-#: libdwfl/argp-std.c:80
+#: libdwfl/argp-std.c:59
 msgid "Search path for separate debuginfo files"
 msgstr "Шукати у вказаному каталозі окремі файли debuginfo"
 
-#: libdwfl/argp-std.c:163
+#: 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:223
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
+msgstr "не вдалося завантажити символи ядра"
+
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
+msgstr "не вдалося виявити модулі ядра"
+
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
+msgstr "не вдалося виявити ядро або модулі"
+
+#: libdwfl/argp-std.c:290
 #, c-format
 msgid "cannot read ELF core file: %s"
 msgstr "не вдалося прочитати файл core ELF: %s"
 
-#: libdwfl/argp-std.c:241
+#: libdwfl/argp-std.c:311
 msgid "No modules recognized in core file"
 msgstr "Не вдалося виявити модулі у файлі core"
 
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr "не вдалося завантажити символи ядра"
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr "не вдалося виявити модулі ядра"
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr "не вдалося виявити ядро або модулі"
-
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:56
 msgid "See errno"
 msgstr "Див. errno"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:57
 msgid "See elf_errno"
 msgstr "Див. elf_errno"
 
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:58
 msgid "See dwarf_errno"
 msgstr "Див. dwarf_errno"
 
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:59
 msgid "See ebl_errno (XXX missing)"
 msgstr "Див. ebl_errno (не виявлено XXX)"
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:60
 msgid "gzip decompression failed"
 msgstr "Помилка під час спроби видобування з gzip"
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:61
 msgid "bzip2 decompression failed"
 msgstr "Помилка під час спроби видобування з bzip2"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:62
 msgid "LZMA decompression failed"
 msgstr "Помилка під час спроби видобування з LZMA"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:63
 msgid "no support library found for machine"
 msgstr "у системі не виявлено бібліотеки підтримки"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:64
 msgid "Callbacks missing for ET_REL file"
 msgstr "Немає зворотних викликів для файла ET_REL"
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:65
 msgid "Unsupported relocation type"
-msgstr "Непідтримуваний тип переміщення"
+msgstr "Непідтримуваний тип пересування"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:66
 msgid "r_offset is bogus"
 msgstr "r_offset є фіктивним"
 
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
 msgid "offset out of range"
 msgstr "перевищення можливого зміщення"
 
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:68
 msgid "relocation refers to undefined symbol"
-msgstr "переміщення посилається на невизначений символ."
+msgstr "пересування посилається на невизначений символ."
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:69
 msgid "Callback returned failure"
 msgstr "Зворотним викликом повернуто помилку"
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:70
 msgid "No DWARF information found"
 msgstr "Не виявлено відомостей DWARF"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:71
 msgid "No symbol table found"
 msgstr "Не виявлено таблиці символів"
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:72
 msgid "No ELF program headers"
 msgstr "Немає заголовків програми ELF"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:73
 msgid "address range overlaps an existing module"
 msgstr "діапазон адрес перекриває існуючий модуль"
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:76
 msgid "image truncated"
 msgstr "образ обрізано"
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:77
 msgid "ELF file opened"
 msgstr "Відкритий файл ELF"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:78
 msgid "not a valid ELF file"
 msgstr "не є коректним файлом ELF"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:79
 msgid "cannot handle DWARF type description"
 msgstr "не вдалося обробити опис типу DWARF"
 
-#: libdwfl/libdwflP.h:97
+#: libdwfl/libdwflP.h:80
 msgid "ELF file does not match build ID"
 msgstr "Файл ELF не відповідає ідентифікатору збирання"
 
-#: libdwfl/libdwflP.h:98
+#: libdwfl/libdwflP.h:81
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "дані розділу «.gnu.prelink_undo» пошкоджено"
 
-#: libebl/eblbackendname.c:63
+#: 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:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:94 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
+#: 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 "<unknown>"
 msgstr "<невідомо>"
 
-#: libebl/ebldynamictagname.c:126
+#: libebl/ebldynamictagname.c:105
 #, c-format
 msgid "<unknown>: %#<PRIx64>"
 msgstr "<невідомо>: %#<PRIx64>"
 
-#: libebl/eblobjnote.c:76
-#, fuzzy, c-format
+#: libebl/eblobjnote.c:55
+#, c-format
 msgid "unknown SDT version %u\n"
-msgstr "невідома версія"
+msgstr "невідома версія SDT, %u\n"
 
-#: libebl/eblobjnote.c:94
-#, fuzzy, c-format
+#: libebl/eblobjnote.c:73
+#, c-format
 msgid "invalid SDT probe descriptor\n"
-msgstr "некоректний дескриптор файла"
+msgstr "некоректний дескриптор зондування SDT\n"
 
-#: libebl/eblobjnote.c:144
+#: libebl/eblobjnote.c:123
 #, c-format
 msgid "    PC: "
-msgstr ""
+msgstr "    PC: "
 
-#: libebl/eblobjnote.c:146
+#: libebl/eblobjnote.c:125
 #, c-format
 msgid " Base: "
-msgstr ""
+msgstr "Основа: "
 
-#: libebl/eblobjnote.c:148
+#: libebl/eblobjnote.c:127
 #, c-format
 msgid " Semaphore: "
-msgstr ""
+msgstr " Семафор:   "
 
-#: libebl/eblobjnote.c:150
+#: libebl/eblobjnote.c:129
 #, c-format
 msgid "    Provider: "
-msgstr ""
+msgstr " Постачальник: "
 
-#: libebl/eblobjnote.c:152
+#: libebl/eblobjnote.c:131
 #, c-format
 msgid " Name: "
-msgstr ""
+msgstr "Назва: "
 
-#: libebl/eblobjnote.c:154
+#: libebl/eblobjnote.c:133
 #, c-format
 msgid " Args: "
-msgstr ""
+msgstr " Арг.: "
 
-#: libebl/eblobjnote.c:164
+#: libebl/eblobjnote.c:143
 #, c-format
 msgid "    Build ID: "
 msgstr "    Ід. збирання: "
 
-#: libebl/eblobjnote.c:175
+#: libebl/eblobjnote.c:154
 #, c-format
 msgid "    Linker version: %.*s\n"
 msgstr "    Версія компонувальника: %.*s\n"
 
-#: libebl/eblobjnote.c:224
+#: libebl/eblobjnote.c:203
 #, c-format
 msgid "    OS: %s, ABI: "
 msgstr "    ОС: %s, ABI: "
 
-#: libebl/eblosabiname.c:95
+#: libebl/eblosabiname.c:74
 msgid "Stand alone"
 msgstr "Окремий"
 
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
+#: libebl/eblsymbolbindingname.c:71 libebl/eblsymboltypename.c:77
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<невідомий>: %d"
 
-#: libelf/elf_error.c:88
+#: libelf/elf_error.c:67
 msgid "unknown version"
 msgstr "невідома версія"
 
-#: libelf/elf_error.c:92
+#: libelf/elf_error.c:71
 msgid "unknown type"
 msgstr "невизначений тип"
 
-#: libelf/elf_error.c:96
+#: libelf/elf_error.c:75
 msgid "invalid `Elf' handle"
 msgstr "некоректний дескриптор «Elf»"
 
-#: libelf/elf_error.c:100
+#: libelf/elf_error.c:79
 msgid "invalid size of source operand"
 msgstr "некоректна розмірність вхідного параметра"
 
-#: libelf/elf_error.c:104
+#: libelf/elf_error.c:83
 msgid "invalid size of destination operand"
 msgstr "некоректна розмірність вихідного параметра"
 
-#: libelf/elf_error.c:108 src/readelf.c:5176
+#: libelf/elf_error.c:87 src/readelf.c:5367
 #, c-format
 msgid "invalid encoding"
 msgstr "некоректне кодування"
 
-#: libelf/elf_error.c:116
+#: libelf/elf_error.c:95
 msgid "invalid file descriptor"
 msgstr "некоректний дескриптор файла"
 
-#: libelf/elf_error.c:120
+#: libelf/elf_error.c:99
 msgid "invalid operation"
 msgstr "недійсна дія"
 
-#: libelf/elf_error.c:124
+#: libelf/elf_error.c:103
 msgid "ELF version not set"
 msgstr "версію ELF не вказано"
 
-#: libelf/elf_error.c:136
+#: libelf/elf_error.c:115
 msgid "invalid fmag field in archive header"
 msgstr "некоректне поле fmag у заголовку архіву"
 
-#: libelf/elf_error.c:140
+#: libelf/elf_error.c:119
 msgid "invalid archive file"
 msgstr "некоректний файл архіву"
 
-#: libelf/elf_error.c:144
+#: libelf/elf_error.c:123
 msgid "descriptor is not for an archive"
 msgstr "дескриптор не належить архіву"
 
-#: libelf/elf_error.c:148
+#: libelf/elf_error.c:127
 msgid "no index available"
 msgstr "такого номера немає"
 
-#: libelf/elf_error.c:152
+#: libelf/elf_error.c:131
 msgid "cannot read data from file"
 msgstr "не вдалося прочитати дані з файла"
 
-#: libelf/elf_error.c:156
+#: libelf/elf_error.c:135
 msgid "cannot write data to file"
 msgstr "не вдалося записати дані до файла"
 
-#: libelf/elf_error.c:160
+#: libelf/elf_error.c:139
 msgid "invalid binary class"
 msgstr "некоректний бінарний клас"
 
-#: libelf/elf_error.c:164
+#: libelf/elf_error.c:143
 msgid "invalid section index"
 msgstr "некоректний номер розділу"
 
-#: libelf/elf_error.c:168
+#: libelf/elf_error.c:147
 msgid "invalid operand"
 msgstr "некоректний параметр"
 
-#: libelf/elf_error.c:172
+#: libelf/elf_error.c:151
 msgid "invalid section"
 msgstr "некоректний розділ"
 
-#: libelf/elf_error.c:180
+#: libelf/elf_error.c:159
 msgid "executable header not created first"
 msgstr "заголовок виконуваного файла не було створено першим"
 
-#: libelf/elf_error.c:184
+#: libelf/elf_error.c:163
 msgid "file descriptor disabled"
 msgstr "дескриптор файла вимкнено"
 
-#: libelf/elf_error.c:188
+#: libelf/elf_error.c:167
 msgid "archive/member file descriptor mismatch"
 msgstr "невідповідність дескрипторів файлів архіву/елемента"
 
-#: libelf/elf_error.c:196
+#: libelf/elf_error.c:175
 msgid "cannot manipulate null section"
 msgstr "не можна оперувати нульовим розділом"
 
-#: libelf/elf_error.c:200
+#: libelf/elf_error.c:179
 msgid "data/scn mismatch"
 msgstr "невідповідність полів data/scn"
 
-#: libelf/elf_error.c:204
+#: libelf/elf_error.c:183
 msgid "invalid section header"
 msgstr "некоректний заголовок розділу"
 
-#: libelf/elf_error.c:208 src/readelf.c:6850 src/readelf.c:6951
-#: src/readelf.c:7113
+#: libelf/elf_error.c:187 src/readelf.c:7235 src/readelf.c:7683
+#: src/readelf.c:7784 src/readelf.c:7954
 #, c-format
 msgid "invalid data"
 msgstr "некоректні дані"
 
-#: libelf/elf_error.c:212
+#: libelf/elf_error.c:191
 msgid "unknown data encoding"
 msgstr "невідоме кодування даних"
 
-#: libelf/elf_error.c:216
+#: libelf/elf_error.c:195
 msgid "section `sh_size' too small for data"
 msgstr "розділ «sh_size» є замалим для даних"
 
-#: libelf/elf_error.c:220
+#: libelf/elf_error.c:199
 msgid "invalid section alignment"
 msgstr "некоректне вирівнювання розділу"
 
-#: libelf/elf_error.c:224
+#: libelf/elf_error.c:203
 msgid "invalid section entry size"
 msgstr "некоректна розмірність запису розділу"
 
-#: libelf/elf_error.c:228
+#: libelf/elf_error.c:207
 msgid "update() for write on read-only file"
 msgstr "update() для запису придатного лише для читання файла"
 
-#: libelf/elf_error.c:232
+#: libelf/elf_error.c:211
 msgid "no such file"
 msgstr "такого файла не виявлено"
 
-#: libelf/elf_error.c:236
+#: libelf/elf_error.c:215
 msgid "only relocatable files can contain section groups"
 msgstr "містити групи розділів можуть лише придатні до пересування файли"
 
-#: libelf/elf_error.c:241
+#: libelf/elf_error.c:220
 msgid ""
 "program header only allowed in executables, shared objects, and core files"
 msgstr ""
 "заголовок програми можна використовувати лише у виконуваних файлах, об’єктах "
 "спільного використання та файлах ядра"
 
-#: libelf/elf_error.c:248
+#: libelf/elf_error.c:227
 msgid "file has no program header"
 msgstr "у файлі немає заголовка програми"
 
-#: src/addr2line.c:66
+#: src/addr2line.c:58
 msgid "Output selection options:"
 msgstr "Параметри вибору виведених даних:"
 
-#: src/addr2line.c:67
+#: src/addr2line.c:59
 msgid "Show only base names of source files"
 msgstr "Показувати лише базові назви файлів коду програми"
 
-#: src/addr2line.c:69
+#: src/addr2line.c:61
 msgid "Show absolute file names using compilation directory"
 msgstr "Показувати абсолютні назви файлів з використанням каталогу збирання"
 
-#: src/addr2line.c:70
+#: src/addr2line.c:62
 msgid "Also show function names"
 msgstr "Показувати також назви функцій"
 
-#: src/addr2line.c:71
+#: src/addr2line.c:63
 msgid "Also show symbol or section names"
 msgstr "Показувати також назви символів та розділів"
 
-#: src/addr2line.c:72
+#: 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:74
+#: src/addr2line.c:67
 msgid "Treat addresses as offsets relative to NAME section."
 msgstr "Вважати адреси зміщеннями відносно розділу НАЗВА."
 
-#: src/addr2line.c:76 src/elfcmp.c:80 src/findtextrel.c:75 src/nm.c:108
-#: src/strings.c:83
+#: 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:85
+#: src/addr2line.c:81
 msgid ""
 "Locate source files and line information for ADDRs (in a.out by default)."
 msgstr "Шукати АДРЕСИ у файлах кодів та даних про рядки (типово, у a.out)."
 
-#: src/addr2line.c:89
+#: src/addr2line.c:85
 msgid "[ADDR...]"
 msgstr "[АДРЕСА...]"
 
-#: src/addr2line.c:189 src/ar.c:296 src/elfcmp.c:670 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:273 src/objdump.c:189
-#: src/ranlib.c:136 src/readelf.c:462 src/size.c:219 src/strings.c:227
-#: src/strip.c:221 src/unstrip.c:234
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:663 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: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"
@@ -645,303 +729,303 @@
 "початкових кодах. Умовами ліцензування програми НЕ передбачено жодних "
 "гарантій, зокрема гарантій працездатності або придатності для певної мети.\n"
 
-#: src/addr2line.c:194 src/ar.c:301 src/elfcmp.c:675 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:278 src/objdump.c:194
-#: src/ranlib.c:141 src/readelf.c:467 src/size.c:224 src/strings.c:232
-#: src/strip.c:226 src/unstrip.c:239
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:668 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: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:413
+#: src/addr2line.c:474
 #, c-format
 msgid "Section syntax requires exactly one module"
 msgstr "Синтаксис розділів вимагає точного одного модуля"
 
-#: src/addr2line.c:436
+#: src/addr2line.c:497
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside section '%s'"
 msgstr "зміщення %#<PRIxMAX> розташовано поза межами розділу «%s»"
 
-#: src/addr2line.c:477
+#: src/addr2line.c:563
 #, c-format
 msgid "cannot find symbol '%s'"
 msgstr "не вдалося знайти символ «%s»"
 
-#: src/addr2line.c:482
+#: src/addr2line.c:568
 #, c-format
 msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
 msgstr "зміщення %#<PRIxMAX> розташовано поза межами вмісту «%s»"
 
-#: src/ar.c:76
+#: src/ar.c:69
 msgid "Commands:"
 msgstr "Команди:"
 
-#: src/ar.c:77
+#: src/ar.c:70
 msgid "Delete files from archive."
 msgstr "Вилучити файли з архіву."
 
-#: src/ar.c:78
+#: src/ar.c:71
 msgid "Move files in archive."
 msgstr "Пересунути файли до архіву."
 
-#: src/ar.c:79
+#: src/ar.c:72
 msgid "Print files in archive."
 msgstr "Надрукувати список файлів у архіві."
 
-#: src/ar.c:80
+#: src/ar.c:73
 msgid "Quick append files to archive."
 msgstr "Швидко додати файли до архіву."
 
-#: src/ar.c:82
+#: src/ar.c:75
 msgid "Replace existing or insert new file into archive."
 msgstr "Замінити поточний або вставити новий файл до архіву."
 
-#: src/ar.c:83
+#: src/ar.c:76
 msgid "Display content of archive."
 msgstr "Показати вміст архіву."
 
-#: src/ar.c:84
+#: src/ar.c:77
 msgid "Extract files from archive."
 msgstr "Видобути файли з архіву."
 
-#: src/ar.c:86
+#: src/ar.c:79
 msgid "Command Modifiers:"
 msgstr "Модифікатори команд:"
 
-#: src/ar.c:87
+#: src/ar.c:80
 msgid "Preserve original dates."
 msgstr "Зберігати початкові часові мітки."
 
-#: src/ar.c:88
+#: src/ar.c:81
 msgid "Use instance [COUNT] of name."
 msgstr "Використовувати екземпляр [НОМЕР] назви."
 
-#: src/ar.c:90
+#: src/ar.c:83
 msgid "Do not replace existing files with extracted files."
 msgstr "Не замінювати поточні файли видобутими."
 
-#: src/ar.c:91
+#: src/ar.c:84
 msgid "Allow filename to be truncated if necessary."
 msgstr "Уможливити, за потреби, обрізання назв файлів."
 
-#: src/ar.c:93
+#: src/ar.c:86
 msgid "Provide verbose output."
 msgstr "Докладний вивід даних."
 
-#: src/ar.c:94
+#: src/ar.c:87
 msgid "Force regeneration of symbol table."
 msgstr "Примусове повторне створення таблиці символів."
 
-#: src/ar.c:95
+#: src/ar.c:88
 msgid "Insert file after [MEMBER]."
 msgstr "Вставити файл після [ЕЛЕМЕНТ]."
 
-#: src/ar.c:96
+#: src/ar.c:89
 msgid "Insert file before [MEMBER]."
 msgstr "Вставити файл перед [ЕЛЕМЕНТ]."
 
-#: src/ar.c:97
+#: src/ar.c:90
 msgid "Same as -b."
 msgstr "Те саме, що і -b."
 
-#: src/ar.c:98
+#: src/ar.c:91
 msgid "Suppress message when library has to be created."
 msgstr "Придушити повідомлення, якщо має бути створено бібліотеку."
 
-#: src/ar.c:100
+#: src/ar.c:93
 msgid "Use full path for file matching."
 msgstr "Використовувати для порівняння повний шлях до файла."
 
-#: src/ar.c:101
+#: src/ar.c:94
 msgid "Update only older files in archive."
 msgstr "Оновлювати у архіві лише старіші файли."
 
-#: src/ar.c:107
+#: src/ar.c:100
 msgid "Create, modify, and extract from archives."
 msgstr "Створення, зміна архівів і видобування даних з архівів."
 
-#: src/ar.c:110
+#: src/ar.c:103
 msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
 msgstr "[ЕЛЕМЕНТ] [НОМЕР] АРХІВ [ФАЙЛ...]"
 
-#: src/ar.c:192
+#: src/ar.c:185
 #, c-format
 msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
 msgstr ""
 "модифікатори «a», «b» і «i» можна використовувати лише разом з параметрами "
 "«m» і «r»"
 
-#: src/ar.c:197
+#: src/ar.c:190
 #, c-format
 msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
 msgstr ""
 "Для модифікаторів «a», «b» та «i» слід використовувати параметр ЕЛЕМЕНТ"
 
-#: src/ar.c:213
+#: src/ar.c:206
 #, c-format
 msgid "'N' is only meaningful with the 'x' and 'd' options"
 msgstr "«N» має значення лише разом з параметрами «x» і «d»"
 
-#: src/ar.c:218
+#: src/ar.c:211
 #, c-format
 msgid "COUNT parameter required"
 msgstr "потрібен параметр НОМЕР"
 
-#: src/ar.c:230
+#: src/ar.c:223
 #, c-format
 msgid "invalid COUNT parameter %s"
 msgstr "некоректний параметр НОМЕР %s"
 
-#: src/ar.c:237
+#: src/ar.c:230
 #, c-format
 msgid "'%c' is only meaningful with the 'x' option"
 msgstr "«%c» має сенс лише у разі використання параметра «x»"
 
-#: src/ar.c:243
+#: src/ar.c:236
 #, c-format
 msgid "archive name required"
 msgstr "слід вказати назву архіву"
 
-#: src/ar.c:256
+#: src/ar.c:249
 #, c-format
 msgid "command option required"
-msgstr ""
+msgstr "має бути вказано параметр команди"
 
-#: src/ar.c:321
+#: src/ar.c:314
 #, c-format
 msgid "More than one operation specified"
 msgstr "Вказано більше за одну дію"
 
-#: src/ar.c:415
+#: src/ar.c:408
 #, c-format
 msgid "cannot open archive '%s'"
 msgstr "не вдалося відкрити архів «%s»"
 
-#: src/ar.c:425
+#: src/ar.c:418
 #, c-format
 msgid "cannot open archive '%s': %s"
 msgstr "не вдалося відкрити архів «%s»: %s"
 
-#: src/ar.c:429
+#: src/ar.c:422
 #, c-format
 msgid "%s: not an archive file"
 msgstr "%s: не є файлом архіву"
 
-#: src/ar.c:433
+#: src/ar.c:426
 #, c-format
 msgid "cannot stat archive '%s'"
 msgstr "не вдалося отримати дані архіву «%s» за допомогою stat"
 
-#: src/ar.c:445
+#: src/ar.c:438
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "у архіві немає запису %s\n"
 
-#: src/ar.c:498 src/ar.c:940 src/ar.c:1140
+#: src/ar.c:491 src/ar.c:933 src/ar.c:1133
 #, c-format
 msgid "cannot create hash table"
 msgstr "не вдалося створити таблицю хешів"
 
-#: src/ar.c:505 src/ar.c:947 src/ar.c:1149
+#: src/ar.c:498 src/ar.c:940 src/ar.c:1142
 #, c-format
 msgid "cannot insert into hash table"
 msgstr "не вдалося вставити запис до таблиці хешів"
 
-#: src/ar.c:513 src/ranlib.c:176
+#: src/ar.c:506 src/ranlib.c:168
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "не вдалося отримати дані з «%s» за допомогою stat"
 
-#: src/ar.c:609
+#: src/ar.c:602
 #, c-format
 msgid "cannot read content of %s: %s"
 msgstr "не вдалося прочитати вміст з %s: %s"
 
-#: src/ar.c:652
+#: src/ar.c:645
 #, c-format
 msgid "cannot open %.*s"
 msgstr "не вдалося відкрити %.*s"
 
-#: src/ar.c:674
+#: src/ar.c:667
 #, c-format
 msgid "failed to write %s"
 msgstr "не вдалося записати %s"
 
-#: src/ar.c:686
+#: src/ar.c:679
 #, c-format
 msgid "cannot change mode of %s"
 msgstr "не вдалося змінити права доступу до %s"
 
-#: src/ar.c:702
+#: src/ar.c:695
 #, c-format
 msgid "cannot change modification time of %s"
 msgstr "не вдалося змінити часову мітку зміни %s"
 
-#: src/ar.c:748
+#: src/ar.c:741
 #, c-format
 msgid "cannot rename temporary file to %.*s"
 msgstr "не вдалося перейменувати файл тимчасових даних на %.*s"
 
-#: src/ar.c:784 src/ar.c:1032 src/ar.c:1431 src/ranlib.c:250
+#: src/ar.c:777 src/ar.c:1025 src/ar.c:1424 src/ranlib.c:242
 #, c-format
 msgid "cannot create new file"
 msgstr "не вдалося створити файл"
 
-#: src/ar.c:1231
+#: src/ar.c:1224
 #, c-format
 msgid "position member %s not found"
 msgstr "не виявлено елемента позиції %s"
 
-#: src/ar.c:1241
+#: src/ar.c:1234
 #, c-format
 msgid "%s: no entry %s in archive!\n"
 msgstr "%s: у архіві немає запису %s!\n"
 
-#: src/ar.c:1270 src/ldgeneric.c:517 src/objdump.c:265
+#: src/ar.c:1263 src/ldgeneric.c:509 src/objdump.c:257
 #, c-format
 msgid "cannot open %s"
 msgstr "не вдалося відкрити %s"
 
-#: src/ar.c:1275
+#: src/ar.c:1268
 #, c-format
 msgid "cannot stat %s"
 msgstr "не вдалося отримати дані %s за допомогою stat"
 
-#: src/ar.c:1281
+#: src/ar.c:1274
 #, c-format
 msgid "%s is no regular file"
 msgstr "%s не є звичайним файлом"
 
-#: src/ar.c:1294
+#: src/ar.c:1287
 #, c-format
 msgid "cannot get ELF descriptor for %s: %s\n"
 msgstr "не вдалося отримати дескриптор ELF для %s: %s\n"
 
-#: src/ar.c:1314
+#: src/ar.c:1307
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "не вдалося прочитати %s: %s"
 
-#: src/arlib.c:216
+#: src/arlib.c:209
 #, c-format
 msgid "the archive '%s' is too large"
 msgstr "розмір архіву «%s» є занадто великим"
 
-#: src/arlib.c:229
+#: src/arlib.c:222
 #, c-format
 msgid "cannot read ELF header of %s(%s): %s"
 msgstr "не вдалося прочитати заголовок ELF з %s(%s): %s"
 
-#: src/elfcmp.c:70
+#: src/elfcmp.c:62
 msgid "Control options:"
 msgstr "Параметри керування:"
 
-#: src/elfcmp.c:72
+#: src/elfcmp.c:64
 msgid "Output all differences, not just the first"
 msgstr "Показати всі відмінності, не лише першу з них"
 
-#: src/elfcmp.c:73
+#: src/elfcmp.c:65
 msgid ""
 "Control treatment of gaps in loadable segments [ignore|match] (default: "
 "ignore)"
@@ -949,212 +1033,212 @@
 "Керування обробкою проміжків у придатних до завантаження сегментах [ignore|"
 "match] (типово, ignore)"
 
-#: src/elfcmp.c:75
+#: src/elfcmp.c:67
 msgid "Ignore permutation of buckets in SHT_HASH section"
 msgstr "Ігнорувати переставляння блоків у розділі SHT_HASH"
 
-#: src/elfcmp.c:77
+#: src/elfcmp.c:69
 msgid "Ignore differences in build ID"
 msgstr "Ігнорувати відмінності у ідентифікаторі збирання"
 
-#: src/elfcmp.c:78
+#: src/elfcmp.c:70
 msgid "Output nothing; yield exit status only"
 msgstr "Нічого не виводити; визначити лише стан виходу"
 
-#: src/elfcmp.c:85
+#: src/elfcmp.c:77
 msgid "Compare relevant parts of two ELF files for equality."
 msgstr "Порівнює відповідні частини двох файлів ELF."
 
-#: src/elfcmp.c:89
+#: src/elfcmp.c:81
 msgid "FILE1 FILE2"
 msgstr "ФАЙЛ1 ФАЙЛ2"
 
-#: src/elfcmp.c:151
+#: src/elfcmp.c:143
 msgid "Invalid number of parameters.\n"
 msgstr "Некоректна кількість параметрів.\n"
 
-#: src/elfcmp.c:182 src/elfcmp.c:187
+#: src/elfcmp.c:174 src/elfcmp.c:179
 #, c-format
 msgid "cannot get ELF header of '%s': %s"
 msgstr "не вдалося отримати заголовок ELF «%s»: %s"
 
-#: src/elfcmp.c:213
+#: src/elfcmp.c:205
 #, c-format
 msgid "%s %s diff: ELF header"
 msgstr "%s %s diff: заголовок ELF"
 
-#: src/elfcmp.c:220 src/elfcmp.c:223
+#: src/elfcmp.c:212 src/elfcmp.c:215
 #, c-format
 msgid "cannot get section count of '%s': %s"
 msgstr "не вдалося отримати даних щодо кількості розділів «%s»: %s"
 
-#: src/elfcmp.c:228
+#: src/elfcmp.c:220
 #, c-format
 msgid "%s %s diff: section count"
 msgstr "%s %s diff: кількість розділів"
 
-#: src/elfcmp.c:235 src/elfcmp.c:238
+#: src/elfcmp.c:227 src/elfcmp.c:230
 #, c-format
 msgid "cannot get program header count of '%s': %s"
 msgstr ""
 "не вдалося отримати даних щодо кількості заголовків програми у «%s»: %s"
 
-#: src/elfcmp.c:243
+#: src/elfcmp.c:235
 #, c-format
 msgid "%s %s diff: program header count"
 msgstr "%s %s diff: кількість заголовків програми"
 
-#: src/elfcmp.c:300
+#: src/elfcmp.c:292
 #, c-format
 msgid "%s %s differ: section [%zu], [%zu] name"
 msgstr "%s %s diff: розділ [%zu], назва [%zu]"
 
-#: src/elfcmp.c:323
+#: src/elfcmp.c:315
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' header"
 msgstr "%s %s diff: розділ [%zu] заголовок «%s»"
 
-#: src/elfcmp.c:331 src/elfcmp.c:337
+#: src/elfcmp.c:323 src/elfcmp.c:329
 #, c-format
 msgid "cannot get content of section %zu in '%s': %s"
 msgstr "не вдалося отримати вміст розділу %zu у «%s»: %s"
 
-#: src/elfcmp.c:353 src/elfcmp.c:359
+#: src/elfcmp.c:345 src/elfcmp.c:351
 #, c-format
 msgid "cannot get symbol in '%s': %s"
 msgstr "не вдалося отримати символ у «%s»: %s"
 
-#: src/elfcmp.c:380
+#: src/elfcmp.c:373
 #, c-format
 msgid "%s %s differ: symbol table [%zu]"
 msgstr "%s %s diff: таблиця символів [%zu]"
 
-#: src/elfcmp.c:383
+#: src/elfcmp.c:376
 #, c-format
 msgid "%s %s differ: symbol table [%zu,%zu]"
 msgstr "%s %s diff: таблиця символів [%zu,%zu]"
 
-#: src/elfcmp.c:429 src/elfcmp.c:498
+#: src/elfcmp.c:422 src/elfcmp.c:491
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' number of notes"
 msgstr "%s %s diff: розділ [%zu] кількість нотаток «%s»"
 
-#: src/elfcmp.c:437
+#: src/elfcmp.c:430
 #, c-format
 msgid "cannot read note section [%zu] '%s' in '%s': %s"
 msgstr "не вдалося прочитати розділ нотаток [%zu] «%s» у «%s»: %s"
 
-#: src/elfcmp.c:447
+#: src/elfcmp.c:440
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note name"
 msgstr "%s %s diff: розділ [%zu] назва нотатки «%s»"
 
-#: src/elfcmp.c:455
+#: src/elfcmp.c:448
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' type"
 msgstr "%s %s diff: розділ [%zu] нотатка «%s» тип «%s»"
 
-#: src/elfcmp.c:470
+#: src/elfcmp.c:463
 #, c-format
 msgid "%s %s differ: build ID length"
 msgstr "%s %s diff: довжина ідентифікатора збирання"
 
-#: src/elfcmp.c:478
+#: src/elfcmp.c:471
 #, c-format
 msgid "%s %s differ: build ID content"
 msgstr "%s %s diff: вміст ідентифікатора збирання"
 
-#: src/elfcmp.c:487
+#: src/elfcmp.c:480
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' note '%s' content"
 msgstr "%s %s diff: розділ [%zu] нотатка «%s» вміст «%s»"
 
-#: src/elfcmp.c:527
+#: src/elfcmp.c:520
 #, c-format
 msgid "%s %s differ: section [%zu] '%s' content"
 msgstr "%s %s diff: розділ [%zu] «%s», вміст"
 
-#: src/elfcmp.c:531
+#: src/elfcmp.c:524
 #, c-format
 msgid "%s %s differ: section [%zu,%zu] '%s' content"
 msgstr "%s %s diff: розділ [%zu,%zu] «%s», вміст"
 
-#: src/elfcmp.c:546
+#: src/elfcmp.c:539
 #, c-format
 msgid "%s %s differ: unequal amount of important sections"
 msgstr "%s %s diff: невідповідність об’ємів важливих розділів"
 
-#: src/elfcmp.c:579 src/elfcmp.c:584
+#: src/elfcmp.c:572 src/elfcmp.c:577
 #, c-format
 msgid "cannot load data of '%s': %s"
 msgstr "не вдалося завантажити дані «%s»: %s"
 
-#: src/elfcmp.c:603 src/elfcmp.c:609
+#: src/elfcmp.c:596 src/elfcmp.c:602
 #, c-format
 msgid "cannot get program header entry %d of '%s': %s"
 msgstr "не вдалося отримати запис заголовка програми %d «%s»: %s"
 
-#: src/elfcmp.c:615
+#: src/elfcmp.c:608
 #, c-format
 msgid "%s %s differ: program header %d"
 msgstr "%s %s diff: заголовок програми %d"
 
-#: src/elfcmp.c:639
+#: src/elfcmp.c:632
 #, c-format
 msgid "%s %s differ: gap"
 msgstr "%s %s diff: проміжок"
 
-#: src/elfcmp.c:702
+#: src/elfcmp.c:695
 #, c-format
 msgid "Invalid value '%s' for --gaps parameter."
 msgstr "Некоректне значення «%s» параметра --gaps."
 
-#: src/elfcmp.c:730 src/findtextrel.c:229 src/ldgeneric.c:1765
-#: src/ldgeneric.c:4255 src/nm.c:389 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:458 src/strip.c:495 src/unstrip.c:1911
-#: src/unstrip.c:1940
+#: src/elfcmp.c:723 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:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1923
+#: src/unstrip.c:1952
 #, c-format
 msgid "cannot open '%s'"
 msgstr "не вдалося відкрити «%s»"
 
-#: src/elfcmp.c:734 src/findtextrel.c:236 src/ranlib.c:186
+#: src/elfcmp.c:727 src/findtextrel.c:228 src/ranlib.c:178
 #, c-format
 msgid "cannot create ELF descriptor for '%s': %s"
 msgstr "не вдалося створити дескриптор ELF для «%s»: %s"
 
-#: src/elfcmp.c:739
+#: src/elfcmp.c:732
 #, c-format
 msgid "cannot create EBL descriptor for '%s'"
 msgstr "не вдалося створити дескриптор EBL для «%s»"
 
-#: src/elfcmp.c:757
+#: src/elfcmp.c:750
 #, c-format
 msgid "cannot get section header of section %zu: %s"
 msgstr "не вдалося отримати заголовок розділу %zu: %s"
 
-#: src/elfcmp.c:767
+#: src/elfcmp.c:760
 #, c-format
 msgid "cannot get content of section %zu: %s"
 msgstr "не вдалося отримати вміст розділу %zu: %s"
 
-#: src/elfcmp.c:777 src/elfcmp.c:791
+#: src/elfcmp.c:770 src/elfcmp.c:784
 #, c-format
 msgid "cannot get relocation: %s"
-msgstr "не вдалося отримати переміщення: %s"
+msgstr "не вдалося отримати пересування: %s"
 
-#: src/elflint.c:72
+#: src/elflint.c:64
 msgid "Be extremely strict, flag level 2 features."
 msgstr "Висока строгість, увімкнути можливості рівня 2."
 
-#: src/elflint.c:73
+#: src/elflint.c:65
 msgid "Do not print anything if successful"
 msgstr "Не виводити ніяких даних у разі успіху"
 
-#: src/elflint.c:74
+#: src/elflint.c:66
 msgid "Binary is a separate debuginfo file"
 msgstr "Бінарний файл є окремим файлом debuginfo"
 
-#: src/elflint.c:76
+#: src/elflint.c:68
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1162,166 +1246,166 @@
 "Бінарний файл було створено за допомогою GNU ld, тому він, очевидно, є до "
 "певної міри неправильним"
 
-#: src/elflint.c:82
+#: src/elflint.c:74
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr ""
 "Педантична перевірка файлів ELF на сумісність зі специфікаціями gABI/psABI."
 
-#: src/elflint.c:86 src/readelf.c:119
+#: src/elflint.c:78 src/readelf.c:123
 msgid "FILE..."
 msgstr "ФАЙЛ..."
 
-#: src/elflint.c:159 src/readelf.c:275
+#: src/elflint.c:155 src/readelf.c:292
 #, c-format
 msgid "cannot open input file"
 msgstr "не вдалося відкрити вхідний файл."
 
-#: src/elflint.c:166
+#: src/elflint.c:162
 #, c-format
 msgid "cannot generate Elf descriptor: %s\n"
 msgstr "не вдалося створити дескриптор Elf: %s\n"
 
-#: src/elflint.c:185
+#: src/elflint.c:181
 #, c-format
 msgid "error while closing Elf descriptor: %s\n"
 msgstr "помилка під час спроби закриття дескриптора Elf: %s\n"
 
-#: src/elflint.c:189
+#: src/elflint.c:185
 msgid "No errors"
 msgstr "Без помилок"
 
-#: src/elflint.c:223 src/readelf.c:436
+#: src/elflint.c:219 src/readelf.c:468
 msgid "Missing file name.\n"
 msgstr "Не вказано назви файла.\n"
 
-#: src/elflint.c:302
+#: src/elflint.c:298
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr " помилка під час спроби вивільнення дескриптора суб-ELF: %s\n"
 
-#: src/elflint.c:310
+#: 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:370
+#: 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:375
+#: 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:379
+#: 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:385
+#: 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:391
+#: 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:396
+#: src/elflint.c:397
 #, c-format
 msgid "e_ident[%zu] is not zero\n"
 msgstr "e_ident[%zu] не дорівнює нулеві\n"
 
-#: src/elflint.c:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "невідомий тип об’єктних файлів %d\n"
 
-#: src/elflint.c:408
+#: src/elflint.c:409
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "невідомий тип архітектури %d\n"
 
-#: src/elflint.c:412
+#: src/elflint.c:413
 #, c-format
 msgid "unknown object file version\n"
 msgstr "невідома версія об’єктних файлів\n"
 
-#: src/elflint.c:418
+#: src/elflint.c:419
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "некоректне зміщення заголовка програми\n"
 
-#: src/elflint.c:420
+#: src/elflint.c:421
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 "виконувані файли і DSO не можуть містити заголовка програми з нульовим "
 "зміщенням\n"
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr "некоректна кількість записів заголовків програми\n"
 
-#: src/elflint.c:432
+#: src/elflint.c:433
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr "некоректне зміщення таблиці заголовків розділів\n"
 
-#: src/elflint.c:435
+#: src/elflint.c:436
 #, c-format
 msgid "section header table must be present\n"
 msgstr "має бути вказано таблицю заголовків розділів\n"
 
-#: src/elflint.c:449
+#: src/elflint.c:450
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr "некоректна кількість записів таблиці заголовків розділів\n"
 
-#: src/elflint.c:466
+#: src/elflint.c:467
 #, c-format
 msgid "invalid section header index\n"
 msgstr "некоректний індекс заголовка розділу\n"
 
-#: src/elflint.c:480
+#: src/elflint.c:481
 #, c-format
 msgid "invalid number of program header table entries\n"
 msgstr "некоректна кількість записів таблиці заголовків програми\n"
 
-#: src/elflint.c:489
+#: src/elflint.c:490
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "некоректні прапорці архітектури: %s\n"
 
-#: src/elflint.c:496 src/elflint.c:513
+#: src/elflint.c:497 src/elflint.c:514
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr "некоректний розмір заголовка ELF: %hd\n"
 
-#: src/elflint.c:499 src/elflint.c:516
+#: src/elflint.c:500 src/elflint.c:517
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr "некоректний розмір заголовка програми: %hd\n"
 
-#: src/elflint.c:502 src/elflint.c:519
+#: src/elflint.c:503 src/elflint.c:520
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr "некоректне розташування або розмір заголовка програми\n"
 
-#: src/elflint.c:505 src/elflint.c:522
+#: src/elflint.c:506 src/elflint.c:523
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr "некоректний розмір заголовка розділу: %hd\n"
 
-#: src/elflint.c:508 src/elflint.c:525
+#: src/elflint.c:509 src/elflint.c:526
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr "некоректне розташування або розмір заголовка розділу\n"
 
-#: src/elflint.c:569
+#: src/elflint.c:570
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1330,7 +1414,7 @@
 "розділ [%2d] «%s»: розділ з встановленим прапорцем SHF_GROUP не є частиною "
 "групи розділів\n"
 
-#: src/elflint.c:573
+#: src/elflint.c:574
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
@@ -1338,14 +1422,14 @@
 "розділ [%2d] «%s»: групу розділів [%2zu] «%s» мало бути визначено до розділу-"
 "елемента цієї групи\n"
 
-#: src/elflint.c:589 src/elflint.c:1433 src/elflint.c:1483 src/elflint.c:1588
-#: src/elflint.c:2173 src/elflint.c:2687 src/elflint.c:2848 src/elflint.c:2978
-#: src/elflint.c:3150 src/elflint.c:4050
+#: 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:602 src/elflint.c:1595
+#: src/elflint.c:603 src/elflint.c:1621
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1354,7 +1438,7 @@
 "розділ [%2d] «%s»: надано посилання на таблицю рядків розділу [%2d] «%s», "
 "але типом даних не є SHT_STRTAB\n"
 
-#: src/elflint.c:625
+#: src/elflint.c:626
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1363,38 +1447,38 @@
 "розділ [%2d] «%s»: у таблиці символів не може бути більше одного розширеного "
 "розділу покажчика\n"
 
-#: src/elflint.c:636
+#: 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:645
+#: 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:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
+#: 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:668
+#: 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:678
+#: 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:687
+#: src/elflint.c:689
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr "розділ [%2d] «%s»: символ %zu: некоректне значення назви\n"
 
-#: src/elflint.c:701
+#: src/elflint.c:704
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: too large section index but no extended "
@@ -1403,7 +1487,7 @@
 "розділ [%2d] «%s»: символ %zu: занадто великий покажчик розділу за умови, що "
 "не визначено розділу розширеного покажчика розділів\n"
 
-#: src/elflint.c:707
+#: src/elflint.c:710
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
@@ -1412,44 +1496,44 @@
 "розділ [%2d] «%s»: символ %zu: XINDEX використано для індексування, яке не "
 "відповідає st_shndx (%<PRIu32>)\n"
 
-#: src/elflint.c:719
+#: src/elflint.c:722
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
 msgstr "розділ [%2d] «%s»: символ %zu: некоректний індекс розділу\n"
 
-#: src/elflint.c:727
+#: src/elflint.c:730
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown type\n"
 msgstr "розділ [%2d] «%s»: символ %zu: невідомий тип\n"
 
-#: src/elflint.c:733
+#: src/elflint.c:736
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
 msgstr "розділ [%2d] «%s»: символ %zu: невідома прив’язка символу\n"
 
-#: src/elflint.c:738
+#: 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:746
+#: src/elflint.c:749
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
 msgstr ""
 "розділ [%2d] «%s»: символ %zu: COMMON можна використовувати лише у файлах, "
-"придатних до переміщення\n"
+"придатних до пересування\n"
 
-#: src/elflint.c:750
+#: 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:754
+#: src/elflint.c:757
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
@@ -1457,13 +1541,13 @@
 "розділ [%2d] «%s»: символ %zu: використання функції у розділі COMMON "
 "позбавлене сенсу\n"
 
-#: src/elflint.c:786
+#: 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:792 src/elflint.c:817 src/elflint.c:860
+#: 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 "
@@ -1472,7 +1556,7 @@
 "розділ [%2d] «%s»: символ %zu не повністю відповідає розділу, на який "
 "посилається, [%2d] «%s»\n"
 
-#: src/elflint.c:801
+#: src/elflint.c:819
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
@@ -1481,7 +1565,7 @@
 "розділ [%2d] «%s»: символ %zu: для розділу посилання [%2d] «%s» не "
 "встановлено прапорець SHF_TLS\n"
 
-#: src/elflint.c:811 src/elflint.c:853
+#: src/elflint.c:829 src/elflint.c:871
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
@@ -1490,14 +1574,14 @@
 "розділ [%2d] «%s»: символ %zu: значення st_value поза межами розділу "
 "посилання, [%2d] «%s»\n"
 
-#: src/elflint.c:838
+#: 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:846
+#: src/elflint.c:864
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
@@ -1506,7 +1590,7 @@
 "розділ [%2d] «%s»: символ %zu: значення st_value перед розділом посилання, "
 "[%2d] «%s»\n"
 
-#: src/elflint.c:873
+#: src/elflint.c:891
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: local symbol outside range described in "
@@ -1515,7 +1599,7 @@
 "розділ [%2d] «%s»: символ %zu: у sh_info описано локальний символ поза "
 "діапазоном\n"
 
-#: src/elflint.c:880
+#: src/elflint.c:898
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
@@ -1524,12 +1608,12 @@
 "розділ [%2d] «%s»: символ %zu: у sh_info описано нелокальний символ поза "
 "діапазоном\n"
 
-#: src/elflint.c:887
+#: 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:937
+#: src/elflint.c:955
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1538,7 +1622,7 @@
 "розділ [%2d] «%s»: символ _GLOBAL_OFFSET_TABLE_  посилається на помилковий "
 "розділ, [%2d]\n"
 
-#: src/elflint.c:944
+#: src/elflint.c:962
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1547,7 +1631,7 @@
 "розділ [%2d] «%s»: символ _GLOBAL_OFFSET_TABLE_  посилається на розділ [%2d] "
 "'%s'\n"
 
-#: src/elflint.c:960
+#: src/elflint.c:978
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1556,7 +1640,7 @@
 "розділ [%2d] «%s»: значення символу _GLOBAL_OFFSET_TABLE_ %#<PRIx64> не "
 "відповідає адресі розділу %s %#<PRIx64>\n"
 
-#: src/elflint.c:967
+#: src/elflint.c:985
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1565,7 +1649,7 @@
 "розділ [%2d] «%s»: розмір символу _GLOBAL_OFFSET_TABLE_ %<PRIu64> не "
 "відповідає розміру розділу %s %<PRIu64>\n"
 
-#: src/elflint.c:975
+#: src/elflint.c:993
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1574,7 +1658,7 @@
 "розділ [%2d] «%s»: виявлено символ _GLOBAL_OFFSET_TABLE_, але не виявлено "
 "розділу .got\n"
 
-#: src/elflint.c:991
+#: src/elflint.c:1009
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1583,7 +1667,7 @@
 "розділ [%2d] «%s»: значення символу _DYNAMIC_ %#<PRIx64> не відповідає "
 "адресі динамічного сегмента %#<PRIx64>\n"
 
-#: src/elflint.c:998
+#: src/elflint.c:1016
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1592,7 +1676,7 @@
 "розділ [%2d] «%s»: розмір символу _DYNAMIC %<PRIu64> не відповідає розміру "
 "динамічного сегмента %<PRIu64>\n"
 
-#: src/elflint.c:1011
+#: src/elflint.c:1029
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
@@ -1601,186 +1685,186 @@
 "розділ [%2d] «%s»: символ %zu: символ у динамічній таблиці символів з "
 "нетиповою видимістю\n"
 
-#: src/elflint.c:1015
+#: 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:1060
+#: 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:1069 src/elflint.c:1121
+#: 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:1094 src/elflint.c:1146
+#: 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 ""
-"розділ [%2d] «%s»: відносні переміщення після позиції %d, вказаної за "
+"розділ [%2d] «%s»: відносні пересування після позиції %d, вказаної за "
 "допомогою DT_RELCOUNT\n"
 
-#: src/elflint.c:1100 src/elflint.c:1152
+#: 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 ""
-"розділ [%2d] «%s»: безвідносне переміщення на позиції %zu; DT_RELCOUNT "
-"визначено %d відносних переміщення\n"
+"розділ [%2d] «%s»: безвідносне пересування на позиції %zu; DT_RELCOUNT "
+"визначено %d відносних пересування\n"
 
-#: src/elflint.c:1112
+#: 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:1194
+#: src/elflint.c:1218
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr "розділ [%2d] «%s»: некоректний індекс розділу призначення\n"
 
-#: src/elflint.c:1207
+#: src/elflint.c:1230
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr "розділ [%2d] «%s»: некоректний тип розділу призначення\n"
 
-#: src/elflint.c:1215
+#: 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:1222
+#: src/elflint.c:1245
 #, c-format
 msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
 msgstr ""
-"розділ [%2d] «%s»: переміщення у придатних до об’єднання розділах неможливе\n"
+"розділ [%2d] «%s»: пересування у придатних до об’єднання розділах неможливе\n"
 
-#: src/elflint.c:1229
+#: 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:1289
+#: src/elflint.c:1313
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr ""
-"встановлено прапорець переміщення тексту, але сегмент придатний лише до "
+"встановлено прапорець пересування тексту, але сегмент придатний лише до "
 "читання\n"
 
-#: src/elflint.c:1316
+#: src/elflint.c:1340
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
-msgstr "розділ [%2d] «%s»: переміщення %zu: некоректний тип\n"
+msgstr "розділ [%2d] «%s»: пересування %zu: некоректний тип\n"
 
-#: src/elflint.c:1324
+#: src/elflint.c:1348
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
 "type\n"
 msgstr ""
-"розділ [%2d] «%s»: переміщення %zu: некоректний тип переміщення для типу "
+"розділ [%2d] «%s»: пересування %zu: некоректний тип пересування для типу "
 "файла\n"
 
-#: src/elflint.c:1332
+#: src/elflint.c:1356
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
-msgstr "розділ [%2d] «%s»: переміщення %zu: некоректний індекс символу\n"
+msgstr "розділ [%2d] «%s»: пересування %zu: некоректний індекс символу\n"
 
-#: src/elflint.c:1350
+#: src/elflint.c:1374
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
 "be used with %s\n"
 msgstr ""
-"розділ [%2d] «%s»: переміщення %zu: з %s можна використовувати лише символ "
+"розділ [%2d] «%s»: пересування %zu: з %s можна використовувати лише символ "
 "«_GLOBAL_OFFSET_TABLE_»\n"
 
-#: src/elflint.c:1367
+#: src/elflint.c:1391
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
-msgstr "розділ [%2d] «%s»: переміщення %zu: зміщення за межі діапазону\n"
+msgstr "розділ [%2d] «%s»: пересування %zu: зміщення за межі діапазону\n"
 
-#: src/elflint.c:1382
+#: src/elflint.c:1406
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
 "%s\n"
 msgstr ""
-"розділ [%2d] «%s»: переміщення %zu: переміщення копіювання для символу типу "
+"розділ [%2d] «%s»: пересування %zu: пересування копіювання для символу типу "
 "%s\n"
 
-#: src/elflint.c:1403
+#: src/elflint.c:1427
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
 "relocation flag not set\n"
 msgstr ""
-"розділ [%2d] «%s»: переміщення %zu: змінено придатний лише для читання "
-"розділ, але не встановлено прапорець переміщення тексту\n"
+"розділ [%2d] «%s»: пересування %zu: змінено придатний лише для читання "
+"розділ, але не встановлено прапорець пересування тексту\n"
 
-#: src/elflint.c:1418
+#: src/elflint.c:1442
 #, c-format
 msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
-msgstr "розділ [%2d] «%s»: переміщення завантажених і незавантажених даних\n"
+msgstr "розділ [%2d] «%s»: пересування завантажених і незавантажених даних\n"
 
-#: src/elflint.c:1457 src/elflint.c:1507
+#: 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:1583
+#: src/elflint.c:1609
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr "вказано більше одного динамічного розділу\n"
 
-#: src/elflint.c:1601
+#: 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:1606 src/elflint.c:1889
+#: 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:1616
+#: 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:1624
+#: 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:1631
+#: src/elflint.c:1658
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr "розділ [%2d] «%s»: запис %zu: невідома мітка\n"
 
-#: src/elflint.c:1642
+#: 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:1652
+#: 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:1670
+#: src/elflint.c:1697
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -1788,7 +1872,7 @@
 "розділ [%2d] «%s»: запис %zu: значенням DT_PLTREL має бути DT_REL або "
 "DT_RELA\n"
 
-#: src/elflint.c:1683
+#: src/elflint.c:1710
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -1797,7 +1881,7 @@
 "розділ [%2d] «%s»: розділ %zu: вказівник не відповідає адресі розділу [%2d] "
 "«%s», на яку посилається sh_link\n"
 
-#: src/elflint.c:1726
+#: src/elflint.c:1753
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
@@ -1805,7 +1889,7 @@
 "розділ [%2d] «%s»: запис %zu: значення %s має вказувати на завантажений "
 "сегмент\n"
 
-#: src/elflint.c:1741
+#: src/elflint.c:1768
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -1814,56 +1898,56 @@
 "розділ [%2d] «%s»: запис %zu: значенням %s має бути коректне зміщення у "
 "розділі [%2d] «%s»\n"
 
-#: src/elflint.c:1761 src/elflint.c:1789
+#: 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:1773
+#: src/elflint.c:1800
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr "розділ [%2d] «%s»: немає обов’язкової мітки %s\n"
 
-#: src/elflint.c:1782
+#: src/elflint.c:1809
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr "розділ [%2d] «%s»: не виявлено розділу хешів\n"
 
-#: src/elflint.c:1797 src/elflint.c:1804
+#: 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:1814 src/elflint.c:1818
+#: 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:1824
+#: 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:1835 src/elflint.c:1839 src/elflint.c:1843 src/elflint.c:1847
+#: 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:1859
+#: src/elflint.c:1886
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
 msgstr ""
 "розділ [%2d] «%s»: розширений розділ покажчика можуть мати лише файли, "
-"придатні до переміщення\n"
+"придатні до пересування\n"
 
-#: src/elflint.c:1869
+#: src/elflint.c:1896
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
@@ -1871,23 +1955,23 @@
 "розділ [%2d] «%s»: розділ розширеного покажчика розділів не призначено для "
 "таблиць символів\n"
 
-#: src/elflint.c:1874
+#: src/elflint.c:1901
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr "не вдалося отримати дані для розділу символів\n"
 
-#: src/elflint.c:1877
+#: 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:1884
+#: 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:1899
+#: src/elflint.c:1928
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -1896,24 +1980,24 @@
 "розділ [%2d] «%s»: розширений покажчик розділів у розділі [%2zu] «%s» "
 "посилається на ту саму таблицю розділів\n"
 
-#: src/elflint.c:1910
+#: src/elflint.c:1945
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr "символу 0 має відповідати нульовий індекс розширеного розділу\n"
 
-#: src/elflint.c:1922
+#: src/elflint.c:1957
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr "не вдалося отримати дані для символу %zu\n"
 
-#: src/elflint.c:1927
+#: 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:1943 src/elflint.c:1984
+#: 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"
@@ -1921,51 +2005,51 @@
 "розділ [%2d] «%s»: розділ таблиці хешів занадто малий (розмір %ld, мало бути "
 "— %ld)\n"
 
-#: src/elflint.c:1955 src/elflint.c:1996
+#: 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:1964 src/elflint.c:2005
+#: 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:1970
+#: 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:2011
+#: 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:2026
+#: 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:2037
-#, 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:2045
+#: 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:2077
+#: src/elflint.c:2132
 #, c-format
 msgid ""
 "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -1973,7 +2057,7 @@
 "розділ [%2d] '%s': ланцюжок хешів для блоку %zu розташовано нижче за позицію "
 "відхилення індексу символу\n"
 
-#: src/elflint.c:2098
+#: src/elflint.c:2153
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -1982,7 +2066,7 @@
 "розділ [%2d] «%s»: символ %u, на який посилається ланцюжок у блоці %zu не "
 "визначено\n"
 
-#: src/elflint.c:2109
+#: src/elflint.c:2164
 #, c-format
 msgid ""
 "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -1990,14 +2074,14 @@
 "розділ [%2d] «%s»: значення хешу для символу %u у ланцюжку для блоку %zu є "
 "помилковим\n"
 
-#: src/elflint.c:2140
+#: 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:2145
+#: src/elflint.c:2200
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -2005,36 +2089,36 @@
 "розділ [%2d] «%s»: посилання на символ у ланцюжку для блоку %zu лежить поза "
 "межами діапазону\n"
 
-#: src/elflint.c:2151
+#: 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:2164
+#: src/elflint.c:2219
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
-"розділ [%2d] «%s»: придатні до переміщення файли не можуть містити таблиць "
+"розділ [%2d] «%s»: придатні до пересування файли не можуть містити таблиць "
 "хешів\n"
 
-#: src/elflint.c:2182
+#: 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:2190
+#: src/elflint.c:2245
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr "розділ [%2d] «%s»: розмірність запису таблиці хешів є некоректною\n"
 
-#: src/elflint.c:2195
+#: src/elflint.c:2250
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr "розділ [%2d] «%s»: не позначено для пересування\n"
 
-#: src/elflint.c:2200
+#: src/elflint.c:2255
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2043,17 +2127,17 @@
 "розділ [%2d] «%s»: у таблиці хешів виявлено незвичайне розташування "
 "початкових адміністративних записів\n"
 
-#: src/elflint.c:2248
+#: 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:2326 src/elflint.c:2330
+#: 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:2337
+#: src/elflint.c:2392
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2062,7 +2146,7 @@
 "виявлено посилання на символ %d у новій таблиці хешів у [%2zu] «%s», але "
 "його немає у старій таблиці хешів у [%2zu] «%s»\n"
 
-#: src/elflint.c:2349
+#: src/elflint.c:2404
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2071,103 +2155,103 @@
 "виявлено посилання на символ %d у старій таблиці хешів у [%2zu] «%s», але "
 "його немає у новій таблиці хешів у [%2zu] «%s»\n"
 
-#: src/elflint.c:2365
+#: 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:2385
+#: src/elflint.c:2440
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
 msgstr ""
 "розділ [%2d] «%s»: групи розділів передбачено лише для придатних до "
-"переміщення об’єктних файлах\n"
+"пересування об’єктних файлах\n"
 
-#: src/elflint.c:2396
+#: src/elflint.c:2451
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати таблицю символів: %s\n"
 
-#: src/elflint.c:2401
+#: 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:2407
+#: 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:2412
+#: src/elflint.c:2467
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr "розділ [%2d] «%s»: sh_flags не є нульовим\n"
 
-#: src/elflint.c:2419
+#: src/elflint.c:2474
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати символ для підпису\n"
 
-#: src/elflint.c:2424
+#: src/elflint.c:2479
 #, c-format
 msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
 msgstr "розділ [%2d] «%s»: символ підпису не може бути порожнім рядком\n"
 
-#: src/elflint.c:2430
+#: 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:2436
+#: src/elflint.c:2491
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати дані: %s\n"
 
-#: src/elflint.c:2445
+#: 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:2450
+#: src/elflint.c:2505
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr "розділ [%2d] «%s»: група розділів без значення типу word прапорців\n"
 
-#: src/elflint.c:2456
+#: src/elflint.c:2511
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr "розділ [%2d] «%s»: група розділів без елементів\n"
 
-#: src/elflint.c:2460
+#: src/elflint.c:2515
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr "розділ [%2d] «%s»: група розділів, що містить лише один елемент\n"
 
-#: src/elflint.c:2471
+#: src/elflint.c:2526
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr "розділ [%2d] «%s»: невідомі прапорці групи розділів\n"
 
-#: src/elflint.c:2483
+#: 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:2492
+#: 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:2499
+#: 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:2505
+#: src/elflint.c:2560
 #, c-format
 msgid ""
 "section [%2d] '%s': element %Zu references section [%2d] '%s' without "
@@ -2176,12 +2260,12 @@
 "розділ [%2d] «%s»: елемент %Zu посилається на розділ [%2d] «%s» без "
 "встановленого прапорця SHF_GROUP\n"
 
-#: src/elflint.c:2512
+#: 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:2701
+#: src/elflint.c:2756
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2190,7 +2274,7 @@
 "розділ [%2d] «%s» посилається у sh_link на розділ [%2d] «%s», який не має "
 "динамічної таблиці символів\n"
 
-#: src/elflint.c:2712
+#: src/elflint.c:2768
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2199,28 +2283,28 @@
 "кількість записів у розділі [%2d] «%s» відрізняється від кількості у таблиці "
 "символів [%2d] «%s»\n"
 
-#: src/elflint.c:2728
+#: 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:2744
+#: 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:2752
+#: 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:2766
+#: 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:2771
+#: src/elflint.c:2827
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
@@ -2228,7 +2312,7 @@
 "розділ [%2d] «%s»: символ %d: індекси версії %d призначено до визначеної "
 "версії\n"
 
-#: src/elflint.c:2781
+#: src/elflint.c:2837
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
@@ -2236,45 +2320,45 @@
 "розділ [%2d] «%s»: символ %d: індекс версії %d призначено для версії, на яку "
 "надійшов запит\n"
 
-#: src/elflint.c:2833
+#: src/elflint.c:2889
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr "виявлено більше за один розділ посилань на версії\n"
 
-#: src/elflint.c:2841 src/elflint.c:2970
+#: 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:2864 src/elflint.c:3022
+#: 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:2870 src/elflint.c:3028
+#: 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:2878
+#: 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:2886
+#: src/elflint.c:2942
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr "розділ [%2d] «%s»: запис %d посилається на невідому залежність\n"
 
-#: src/elflint.c:2898
+#: 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:2905
+#: src/elflint.c:2961
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2283,7 +2367,7 @@
 "розділ [%2d] «%s»: допоміжний запис %d запису %d містить некоректне "
 "посилання на назву\n"
 
-#: src/elflint.c:2912
+#: src/elflint.c:2968
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2292,7 +2376,7 @@
 "розділ [%2d] «%s»: допоміжний запис %d запису %d має помилкове значення "
 "хешу: %#x, мало бути %#x\n"
 
-#: src/elflint.c:2922
+#: src/elflint.c:2978
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -2301,7 +2385,7 @@
 "розділ [%2d] «%s»: допоміжний запис %d запису %d містить дублікати назви "
 "версії «%s»\n"
 
-#: src/elflint.c:2933
+#: src/elflint.c:2989
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
@@ -2309,50 +2393,50 @@
 "розділ [%2d] «%s»: допоміжний запис %d запису %d має помилкове наступне "
 "поле\n"
 
-#: src/elflint.c:2949 src/elflint.c:3107
+#: 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:2962
+#: src/elflint.c:3018
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr "виявлено більше за один розділ визначення версій\n"
 
-#: src/elflint.c:3007
+#: src/elflint.c:3063
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr "розділ [%2d] «%s»: повторне визначення BASE\n"
 
-#: src/elflint.c:3011
+#: 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:3017
+#: src/elflint.c:3073
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr "розділ [%2d] «%s»: невідомий прапорець запису %d\n"
 
-#: src/elflint.c:3041
+#: 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:3048
+#: 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:3057
+#: 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:3076
+#: src/elflint.c:3132
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -2360,53 +2444,53 @@
 "розділ [%2d] «%s»: запис %d містить некоректне посилання на назву у "
 "допоміжних даних\n"
 
-#: src/elflint.c:3091
+#: 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:3113
+#: src/elflint.c:3169
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr "розділ [%2d] «%s»: немає визначення BASE\n"
 
-#: src/elflint.c:3129
+#: src/elflint.c:3185
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr "розділ [%2d] «%s»: невідома основна версія «%s»\n"
 
-#: src/elflint.c:3142
+#: src/elflint.c:3198
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr "розділ [%2d] «%s»: порожній розділ атрибутів об’єкта\n"
 
-#: src/elflint.c:3163
+#: src/elflint.c:3219
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr "розділ [%2d] «%s»: не вдалося визначити формат атрибутів\n"
 
-#: src/elflint.c:3179
+#: 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:3188
+#: 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:3200
+#: 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:3217
+#: src/elflint.c:3273
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -2414,12 +2498,12 @@
 "розділ [%2d] «%s»: зміщення %zu: незавершене поле ULEB128 у тезі підрозділу "
 "атрибутів\n"
 
-#: src/elflint.c:3226
+#: src/elflint.c:3282
 #, c-format
 msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
 msgstr "розділ [%2d] «%s»: зміщення %zu: обрізаний розділ атрибутів\n"
 
-#: src/elflint.c:3235
+#: src/elflint.c:3291
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
@@ -2427,14 +2511,14 @@
 "розділ [%2d] «%s»: зміщення %zu: поле нульового розміру у підрозділі "
 "атрибутів\n"
 
-#: src/elflint.c:3248
+#: 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:3259
+#: src/elflint.c:3315
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -2442,35 +2526,35 @@
 "розділ [%2d] «%s»: зміщення %zu: підрозділ атрибутів містить неочікуваний "
 "теґ %u\n"
 
-#: src/elflint.c:3277
+#: 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:3288
+#: 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:3301
+#: 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:3305
+#: 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:3315
+#: 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:3321
+#: src/elflint.c:3377
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -2478,47 +2562,47 @@
 "розділ [%2d] «%s»: зміщення %zu: зайві байти після останнього розділу "
 "атрибутів\n"
 
-#: src/elflint.c:3410
+#: src/elflint.c:3466
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr "не вдалося отримати заголовок нульового розділу\n"
 
-#: src/elflint.c:3414
+#: src/elflint.c:3470
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr "нульовий розділ має ненульову назву\n"
 
-#: src/elflint.c:3416
+#: src/elflint.c:3472
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr "нульовий розділ має ненульовий тип\n"
 
-#: src/elflint.c:3418
+#: src/elflint.c:3474
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr "нульовий розділ має ненульові прапорці\n"
 
-#: src/elflint.c:3420
+#: src/elflint.c:3476
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr "нульовий розділ має ненульову адресу\n"
 
-#: src/elflint.c:3422
+#: src/elflint.c:3478
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr "нульовий розділ має ненульове зміщення\n"
 
-#: src/elflint.c:3424
+#: src/elflint.c:3480
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr "нульовий розділ має ненульове значення вирівнювання\n"
 
-#: src/elflint.c:3426
+#: src/elflint.c:3482
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr "нульовий розділ має ненульове значення розміру запису\n"
 
-#: src/elflint.c:3429
+#: src/elflint.c:3485
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -2527,7 +2611,7 @@
 "нульовий розділ має ненульове значення розміру, хоча заголовок ELF ман "
 "ненульове значення shnum\n"
 
-#: src/elflint.c:3433
+#: src/elflint.c:3489
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2536,7 +2620,7 @@
 "нульовий розділ має ненульове значення компонування, хоча у заголовку ELF "
 "немає сигналу переповнення у shstrndx\n"
 
-#: src/elflint.c:3437
+#: src/elflint.c:3493
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -2545,28 +2629,28 @@
 "нульовий розділ має ненульове значення компонування, хоча у заголовку ELF "
 "немає сигналу переповнення у phnum\n"
 
-#: src/elflint.c:3454
+#: 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:3463
+#: src/elflint.c:3519
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr "розділ [%2zu]: некоректна назва\n"
 
-#: src/elflint.c:3490
+#: 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:3506
+#: 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:3523
+#: src/elflint.c:3579
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
@@ -2574,12 +2658,12 @@
 "розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, можливо, %s, але "
 "маємо %s\n"
 
-#: src/elflint.c:3541
+#: src/elflint.c:3597
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr "у об’єктному файлі виявлено розділ [%2zu] «%s»\n"
 
-#: src/elflint.c:3547 src/elflint.c:3579
+#: 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"
@@ -2587,7 +2671,7 @@
 "у розділ [%2zu] «%s» встановлено прапорець SHF_ALLOC, але немає придатного "
 "до завантаження сегмента\n"
 
-#: src/elflint.c:3552 src/elflint.c:3584
+#: src/elflint.c:3608 src/elflint.c:3640
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -2596,7 +2680,7 @@
 "у розділі [%2zu] «%s» не встановлено прапорець SHF_ALLOC, але є придатні до "
 "завантаження сегменти\n"
 
-#: src/elflint.c:3560
+#: src/elflint.c:3616
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -2604,22 +2688,22 @@
 "розділ [%2zu] «%s» є таблицею-покажчиком розділу розширень у файлі, який не "
 "є об’єктним\n"
 
-#: src/elflint.c:3603
+#: src/elflint.c:3659
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr "розділ [%2zu] «%s»: розмір не є кратним до розміру запису\n"
 
-#: src/elflint.c:3608
+#: src/elflint.c:3664
 #, c-format
 msgid "cannot get section header\n"
 msgstr "не вдалося отримати заголовок розділу\n"
 
-#: src/elflint.c:3618
+#: src/elflint.c:3674
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr "розділ [%2zu] «%s» належить до непідтримуваного типу %d\n"
 
-#: src/elflint.c:3632
+#: src/elflint.c:3688
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -2627,52 +2711,52 @@
 "розділ [%2zu] «%s» містить некоректні специфічні для процесора прапорці "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3639
+#: src/elflint.c:3695
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr "розділ [%2zu] «%s» містить невідомі прапорці %#<PRIx64>\n"
 
-#: src/elflint.c:3647
+#: 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:3655
+#: src/elflint.c:3711
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 "розділ [%2zu] «%s»: некоректне посилання на розділ у значенні компонування\n"
 
-#: src/elflint.c:3660
+#: src/elflint.c:3716
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 "розділ [%2zu] «%s»: некоректне посилання на розділ у значенні відомостей\n"
 
-#: src/elflint.c:3667
+#: 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:3672
+#: 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:3690
+#: 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:3699
+#: src/elflint.c:3755
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr "розділ [%2zu] «%s» є одночасно виконуваним і придатним до запису\n"
 
-#: src/elflint.c:3726
+#: src/elflint.c:3784
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -2681,7 +2765,7 @@
 "розділ [%2zu] «%s» не повністю міститься у сегменті запису заголовка "
 "програми %d\n"
 
-#: src/elflint.c:3734
+#: src/elflint.c:3792
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -2690,7 +2774,7 @@
 "розділ [%2zu] «%s» належить до типу NOBITS, але його читання виконується з "
 "файла у сегментів запису заголовка програми %d\n"
 
-#: src/elflint.c:3743
+#: src/elflint.c:3801
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -2699,19 +2783,19 @@
 "розділ [%2zu] «%s» не належить до типу NOBITS, але його читання не "
 "виконується з файла у сегментів запису заголовка програми %d\n"
 
-#: src/elflint.c:3754
+#: 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:3764
+#: 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:3774
+#: src/elflint.c:3832
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -2719,7 +2803,7 @@
 "розділ [%2zu] «%s»: встановлено прапорець alloc, але розділ не перебуває у "
 "жодному завантаженому сегменті\n"
 
-#: src/elflint.c:3780
+#: src/elflint.c:3838
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -2728,25 +2812,25 @@
 "розділ [%2zu] «%s»: заголовок ELF повідомляє про те, що це таблиця рядків "
 "заголовка розділу, але ця таблиця не належить до типу SHT_TYPE\n"
 
-#: src/elflint.c:3788
+#: src/elflint.c:3846
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
 msgstr ""
-"розділ [%2zu] «%s»: придатні до переміщення файли не можуть містити "
+"розділ [%2zu] «%s»: придатні до пересування файли не можуть містити "
 "динамічних таблиць символів\n"
 
-#: src/elflint.c:3839
+#: src/elflint.c:3897
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr "виявлено більше за одну таблицю символів версій\n"
 
-#: src/elflint.c:3862
+#: src/elflint.c:3920
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr "існує запис заголовка програми INTERP, але не розділ .interp\n"
 
-#: src/elflint.c:3873
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
@@ -2754,14 +2838,14 @@
 "придатний до завантаження сегмент [%u] є виконуваним, але не містить "
 "виконуваних розділів\n"
 
-#: src/elflint.c:3879
+#: src/elflint.c:3937
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 "придатний до завантаження розділ [%u] є придатним до запису, але не містить "
 "придатних до запису розділів\n"
 
-#: src/elflint.c:3890
+#: src/elflint.c:3948
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -2770,24 +2854,24 @@
 "немає розділу .gnu.versym, хоча існує розділ .gnu.versym_d або .gnu."
 "versym_r\n"
 
-#: src/elflint.c:3903
+#: src/elflint.c:3961
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "дублікат індексу версії %d\n"
 
-#: src/elflint.c:3917
+#: 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:3966
+#: 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:3970
+#: src/elflint.c:4028
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
@@ -2795,13 +2879,13 @@
 "розділ [%2d] «%s»: невідомий тип нотатки файла core %<PRIu32> за зміщенням "
 "%Zu\n"
 
-#: src/elflint.c:3993
+#: 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:3997
+#: src/elflint.c:4055
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
@@ -2809,39 +2893,39 @@
 "розділ [%2d] «%s»: невідомий тип нотатки об’єктного файла %<PRIu32> за "
 "зміщенням %Zu\n"
 
-#: src/elflint.c:4014
+#: 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:4033
+#: 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:4036
+#: src/elflint.c:4094
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr "phdr[%d]: зайві %<PRIu64> байтів після останнього запису нотатки\n"
 
-#: src/elflint.c:4057
+#: 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:4064
+#: src/elflint.c:4122
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати вміст розділу нотаток\n"
 
-#: src/elflint.c:4067
+#: 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:4085
+#: src/elflint.c:4143
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -2849,135 +2933,135 @@
 "заголовки програм можуть бути лише у виконуваних файлів, об’єктних файлів "
 "спільного використання або файлів core\n"
 
-#: src/elflint.c:4100
+#: src/elflint.c:4158
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr "не вдалося отримати запис заголовка програми %d: %s\n"
 
-#: src/elflint.c:4109
+#: 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:4120
+#: src/elflint.c:4178
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr "більше за один запис INTERP у заголовку програми\n"
 
-#: src/elflint.c:4128
+#: src/elflint.c:4186
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr "більше за один запис TLS у заголовку програми\n"
 
-#: src/elflint.c:4135
+#: src/elflint.c:4193
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr "у статичному виконуваному файлі не може бути динамічних розділів\n"
 
-#: src/elflint.c:4149
+#: src/elflint.c:4207
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 "посилання на динамічний розділ у заголовку програми має помилкове зміщення\n"
 
-#: src/elflint.c:4152
+#: src/elflint.c:4210
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 "розміри динамічного розділу у заголовку програми та у заголовку розділу не "
 "збігаються\n"
 
-#: src/elflint.c:4162
+#: src/elflint.c:4220
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr "більше за один запис GNU_RELRO у заголовку програми\n"
 
-#: src/elflint.c:4183
+#: src/elflint.c:4241
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 "придатний до завантаження сегмент, до якого звертається GNU_RELRO, "
 "непридатний до запису\n"
 
-#: src/elflint.c:4186
+#: 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:4194 src/elflint.c:4217
+#: 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:4223
+#: 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:4247
+#: src/elflint.c:4305
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 "посилання на таблицю вікон викликів у заголовку програми має помилкове "
 "зміщення\n"
 
-#: src/elflint.c:4250
+#: src/elflint.c:4308
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 "розміри таблиці пошуку вікон виклику у заголовку програми та у заголовку "
 "розділу не збігаються\n"
 
-#: src/elflint.c:4263
+#: 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:4271
+#: src/elflint.c:4329
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr "таблицю пошуку вікон викликів має бути розміщено у пам’яті\n"
 
-#: src/elflint.c:4274
+#: src/elflint.c:4332
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr "розділ [%2zu] «%s» має бути розміщено у пам’яті\n"
 
-#: src/elflint.c:4278
+#: src/elflint.c:4336
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr "таблиця пошуку вікон викликів не повинна бути придатною до запису\n"
 
-#: src/elflint.c:4281
+#: src/elflint.c:4339
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr "розділ [%2zu] «%s» не повинен бути придатним до запису\n"
 
-#: src/elflint.c:4286
+#: src/elflint.c:4344
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr "таблиця пошуку вікон викликів не повинна бути придатною до виконання\n"
 
-#: src/elflint.c:4289
+#: src/elflint.c:4347
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr "розділ [%2zu] «%s» не повинен бути придатним до виконання\n"
 
-#: src/elflint.c:4300
+#: src/elflint.c:4358
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr "запис заголовка програми %d: розмір файла перевищує об’єм пам’яті\n"
 
-#: src/elflint.c:4307
+#: 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:4310
+#: src/elflint.c:4368
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -2986,7 +3070,7 @@
 "запис заголовка програми %d: зміщення у файлі і віртуальна адреса не "
 "співвідносяться з вирівнюванням\n"
 
-#: src/elflint.c:4323
+#: src/elflint.c:4381
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -2995,102 +3079,107 @@
 "виконуваний модуль/DSO з розділом .eh_frame_hdr не містить запису заголовка "
 "програми PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4357
+#: src/elflint.c:4415
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "не вдалося прочитати заголовок ELF: %s\n"
 
-#: src/elflint.c:4383
+#: src/elflint.c:4441
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
-"встановлено прапорець переміщення тексту, але такий прапорець не потрібен\n"
+"встановлено прапорець пересування тексту, але такий прапорець не потрібен\n"
 
-#: src/findtextrel.c:70
+#: src/findtextrel.c:62
 msgid "Input Selection:"
 msgstr "Вибір параметрів виводу даних:"
 
-#: src/findtextrel.c:71
+#: src/findtextrel.c:63
 msgid "Prepend PATH to all file names"
 msgstr "Додавати ШЛЯХ до всіх назв файлів"
 
-#: src/findtextrel.c:73
+#: src/findtextrel.c:65
 msgid "Use PATH as root of debuginfo hierarchy"
 msgstr "Використовувати ШЛЯХ як кореневий каталог для ієрархії debuginfo"
 
-#: src/findtextrel.c:80
+#: src/findtextrel.c:72
 msgid "Locate source of text relocations in FILEs (a.out by default)."
-msgstr "Шукає джерело переміщеного тексту у ФАЙЛАХ (типово, a.out)."
+msgstr "Шукає джерело пересуваного тексту у ФАЙЛАХ (типово, a.out)."
 
-#: src/findtextrel.c:84 src/nm.c:116 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:104
+#: src/findtextrel.c:76 src/nm.c:108 src/objdump.c:72 src/size.c:84
+#: src/strings.c:84 src/strip.c:96
 msgid "[FILE...]"
 msgstr "[ФАЙЛ...]"
 
-#: src/findtextrel.c:246
+#: src/findtextrel.c:238
 #, c-format
 msgid "cannot get ELF header '%s': %s"
 msgstr "не вдалося отримати заголовок ELF «%s»: %s"
 
-#: src/findtextrel.c:257
+#: src/findtextrel.c:249
 #, c-format
 msgid "'%s' is not a DSO or PIE"
 msgstr "«%s» не є DSO або PIE"
 
-#: src/findtextrel.c:277
+#: src/findtextrel.c:269
 #, c-format
 msgid "getting get section header of section %zu: %s"
 msgstr "отримання заголовка розділу get розділу %zu: %s"
 
-#: src/findtextrel.c:300
+#: src/findtextrel.c:292
 #, c-format
 msgid "cannot read dynamic section: %s"
 msgstr "не вдалося прочитати динамічний розділ: %s"
 
-#: src/findtextrel.c:321
+#: src/findtextrel.c:313
 #, c-format
 msgid "no text relocations reported in '%s'"
-msgstr "у «%s» не виявлено переміщень тексту"
+msgstr "у «%s» не виявлено пересувань тексту"
 
-#: src/findtextrel.c:333
+#: src/findtextrel.c:325
 #, c-format
 msgid "while reading ELF file"
 msgstr "під час спроби читання файла ELF"
 
-#: src/findtextrel.c:342 src/findtextrel.c:359
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
+#: src/findtextrel.c:329
+#, fuzzy, c-format
+msgid "cannot get program header count: %s"
+msgstr "не вдалося отримати заголовок програми: %s"
+
+#: src/findtextrel.c:340 src/findtextrel.c:357
+#, fuzzy, c-format
+msgid "cannot get program header index at offset %zd: %s"
 msgstr "не вдалося отримати індекс заголовка програми за зміщенням %d: %s"
 
-#: src/findtextrel.c:411
+#: src/findtextrel.c:409
 #, c-format
 msgid "cannot get section header of section %Zu: %s"
 msgstr "не вдалося отримати заголовок розділу %Zu: %s"
 
-#: src/findtextrel.c:423
+#: src/findtextrel.c:421
 #, c-format
 msgid "cannot get symbol table section %zu in '%s': %s"
 msgstr "не вдалося отримати таблицю символів розділу %zu у «%s»: %s"
 
-#: src/findtextrel.c:443 src/findtextrel.c:466
+#: src/findtextrel.c:441 src/findtextrel.c:464
 #, c-format
 msgid "cannot get relocation at index %d in section %zu in '%s': %s"
 msgstr ""
-"не вдалося отримати переміщення за індексом %d у розділі %zu у «%s»: %s"
+"не вдалося отримати пересування за індексом %d у розділі %zu у «%s»: %s"
 
-#: src/findtextrel.c:531
+#: src/findtextrel.c:529
 #, c-format
 msgid "%s not compiled with -fpic/-fPIC\n"
 msgstr "%s не зібрано з -fpic/-fPIC\n"
 
-#: src/findtextrel.c:584
+#: src/findtextrel.c:582
 #, c-format
 msgid ""
 "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
 msgstr ""
 "файл, що містить функцію «%s», не було зібрано з параметрами -fpic/-fPIC\n"
 
-#: src/findtextrel.c:591 src/findtextrel.c:611
+#: src/findtextrel.c:589 src/findtextrel.c:609
 #, c-format
 msgid ""
 "the file containing the function '%s' might not be compiled with -fpic/-"
@@ -3099,7 +3188,7 @@
 "файл, що містить функцію «%s», ймовірно, не було зібрано з параметрами -"
 "fpic/-fPIC\n"
 
-#: src/findtextrel.c:599
+#: src/findtextrel.c:597
 #, c-format
 msgid ""
 "either the file containing the function '%s' or the file containing the "
@@ -3108,483 +3197,484 @@
 "файл, що містить функцію «%s», або файл, що містить функцію «%s», зібрано "
 "без параметрів -fpic/-fPIC\n"
 
-#: src/findtextrel.c:619
+#: src/findtextrel.c:617
 #, c-format
 msgid ""
 "a relocation modifies memory at offset %llu in a write-protected segment\n"
 msgstr ""
-"переміщення призводить до зміни запису пам’яті за зміщенням %llu у "
+"пересування призводить до зміни запису пам’яті за зміщенням %llu у "
 "захищеному від запису сегменті\n"
 
-#: src/i386_ld.c:210
+#: src/i386_ld.c:202
 #, c-format
 msgid "cannot allocate PLT section: %s"
 msgstr "не вдалося розмістити PLT-розділ: %s"
 
-#: src/i386_ld.c:232
+#: src/i386_ld.c:224
 #, c-format
 msgid "cannot allocate PLTREL section: %s"
 msgstr "не вдалося розмістити розділ PLTREL: %s"
 
-#: src/i386_ld.c:253
+#: src/i386_ld.c:245
 #, c-format
 msgid "cannot allocate GOT section: %s"
 msgstr "не вдалося розмістити розділ GOT: %s"
 
-#: src/i386_ld.c:274
+#: src/i386_ld.c:266
 #, c-format
 msgid "cannot allocate GOTPLT section: %s"
 msgstr "не вдалося розмістити розділ GOTPLT: %s"
 
-#: src/i386_ld.c:661
+#: src/i386_ld.c:653
 #, c-format
 msgid "initial-executable TLS relocation cannot be used "
 msgstr ""
-"не можна використовувати переміщення TLS у початковому виконуваному файлі"
+"не можна використовувати пересування TLS у початковому виконуваному файлі"
 
-#: src/ld.c:87
+#: src/ld.c:79
 msgid "Input File Control:"
 msgstr "Керування файлом вхідних даних:"
 
-#: src/ld.c:89
+#: src/ld.c:81
 msgid "Include whole archives in the output from now on."
 msgstr "Відтепер включати цілі архіви до виведених даних."
 
-#: src/ld.c:91
+#: src/ld.c:83
 msgid "Stop including the whole archives in the output."
 msgstr "Припинити включення цілих архівів до вихідних даних."
 
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
+#: src/ld.c:84 src/ld.c:98 src/ld.c:176
 msgid "FILE"
 msgstr "ФАЙЛ"
 
-#: src/ld.c:93
+#: src/ld.c:85
 msgid "Start a group."
 msgstr "Почати групу."
 
-#: src/ld.c:94
+#: src/ld.c:86
 msgid "End a group."
 msgstr "Завершити групу."
 
-#: src/ld.c:95
+#: src/ld.c:87
 msgid "PATH"
 msgstr "ШЛЯХ"
 
-#: src/ld.c:96
+#: src/ld.c:88
 msgid "Add PATH to list of directories files are searched in."
 msgstr "Додати ШЛЯХ до списку каталогів, у яких слід шукати файли."
 
-#: src/ld.c:98
+#: src/ld.c:90
 msgid "Only set DT_NEEDED for following dynamic libs if actually used"
 msgstr ""
 "Встановлювати DT_NEEDED лише для наступних динамічних бібліотек, якщо він "
 "справді використовується"
 
-#: src/ld.c:100
+#: src/ld.c:92
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr "Завжди встановлювати DT_NEEDED для наступних динамічних бібліотек"
 
-#: src/ld.c:102
+#: src/ld.c:94
 msgid "Ignore LD_LIBRARY_PATH environment variable."
 msgstr "Ігнорувати змінну середовища LD_LIBRARY_PATH."
 
-#: src/ld.c:105
+#: src/ld.c:97
 msgid "Output File Control:"
 msgstr "Керування файлом виведених даних:"
 
-#: src/ld.c:106
+#: src/ld.c:98
 msgid "Place output in FILE."
 msgstr "Вивести дані до ФАЙЛА."
 
-#: src/ld.c:109
+#: src/ld.c:101
 msgid "Object is marked to not use default search path at runtime."
 msgstr ""
 "Об’єкт позначено, як таких, який не використовує типовий шлях пошуку під час "
 "запуску."
 
-#: src/ld.c:111
+#: src/ld.c:103
 msgid "Same as --whole-archive."
 msgstr "Те саме, що --whole-archive."
 
-#: src/ld.c:112
+#: src/ld.c:104
 msgid ""
 "Default rules of extracting from archive; weak references are not enough."
 msgstr "Типові правила видобування з архівів; слабкого посилання недостатньо."
 
-#: src/ld.c:116
+#: src/ld.c:108
 msgid "Weak references cause extraction from archive."
 msgstr "Слабкі посилання спричиняють видобування з архіву."
 
-#: src/ld.c:118
+#: src/ld.c:110
 msgid "Allow multiple definitions; first is used."
 msgstr "Дозволити декілька визначень. Використовуватиметься лише перше."
 
-#: src/ld.c:120
+#: src/ld.c:112
 msgid "Disallow/allow undefined symbols in DSOs."
 msgstr "Заборонити/Дозволити невизначені символи у DSO."
 
-#: src/ld.c:123
+#: src/ld.c:115
 msgid "Object requires immediate handling of $ORIGIN."
 msgstr "Об’єкт вимагає негайної обробки $ORIGIN."
 
-#: src/ld.c:125
+#: src/ld.c:117
 msgid "Relocation will not be processed lazily."
 msgstr "Переміщення не буде оброблятися у лінивому режимі."
 
-#: src/ld.c:127
+#: src/ld.c:119
 msgid "Object cannot be unloaded at runtime."
 msgstr "Об’єкт не можна вивантажувати під час запуску."
 
-#: src/ld.c:129
+#: src/ld.c:121
 msgid "Mark object to be initialized first."
 msgstr "Позначити об’єкт, як такий, що потребує ініціалізації."
 
-#: src/ld.c:131
+#: src/ld.c:123
 msgid "Enable/disable lazy-loading flag for following dependencies."
 msgstr ""
 "Увімкнути/Вимкнути прапорець лінивого завантаження для наведених нижче "
 "залежностей."
 
-#: src/ld.c:133
+#: src/ld.c:125
 msgid "Mark object as not loadable with 'dlopen'."
 msgstr ""
 "Позначити об’єкт, як непридатний для завантаження за допомогою «dlopen»."
 
-#: src/ld.c:135
+#: src/ld.c:127
 msgid "Ignore/record dependencies on unused DSOs."
 msgstr "Ігнорувати/Записувати залежності невикористаних DSO."
 
-#: src/ld.c:137
+#: src/ld.c:129
 msgid "Generated DSO will be a system library."
 msgstr "Створена DSO буде системною бібліотекою."
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "ADDRESS"
 msgstr "АДРЕСА"
 
-#: src/ld.c:138
+#: src/ld.c:130
 msgid "Set entry point address."
 msgstr "Встановити адресу точки входу."
 
-#: src/ld.c:141
+#: src/ld.c:133
 msgid "Do not link against shared libraries."
 msgstr "Не компонувати з бібліотеками спільного використання."
 
-#: src/ld.c:144
+#: src/ld.c:136
 msgid "Prefer linking against shared libraries."
 msgstr "Надавати перевагу компонуванню з бібліотеками спільного використання."
 
-#: src/ld.c:145
+#: src/ld.c:137
 msgid "Export all dynamic symbols."
 msgstr "Експортувати всі динамічні символи."
 
-#: src/ld.c:146
+#: src/ld.c:138
 msgid "Strip all symbols."
 msgstr "Вилучити всі символи."
 
-#: src/ld.c:147
+#: src/ld.c:139
 msgid "Strip debugging symbols."
 msgstr "Вилучити символи зневаджування."
 
-#: src/ld.c:149
+#: src/ld.c:141
 msgid "Assume pagesize for the target system to be SIZE."
 msgstr ""
 "Вважати розмір сторінки для системи призначення рівним значенню РОЗМІР."
 
-#: src/ld.c:151
+#: src/ld.c:143
 msgid "Set runtime DSO search path."
 msgstr "Встановити шлях пошуку DSO під час запуску."
 
-#: src/ld.c:154
+#: src/ld.c:146
 msgid "Set link time DSO search path."
 msgstr "Встановити шлях пошуку DSO під час компонування."
 
-#: src/ld.c:155
+#: src/ld.c:147
 msgid "Generate dynamic shared object."
 msgstr "Створити динамічний об’єкт спільного використання."
 
-#: src/ld.c:156
+#: src/ld.c:148
 msgid "Generate relocatable object."
-msgstr "Створити придатний для переміщення об’єкт."
+msgstr "Створити придатний для пересування об’єкт."
 
-#: src/ld.c:159
+#: src/ld.c:151
 msgid "Causes symbol not assigned to a version be reduced to local."
 msgstr ""
 "Спричиняє перетворення символів, не прив’язаних до версії, на локальні."
 
-#: src/ld.c:160
+#: src/ld.c:152
 msgid "Remove unused sections."
 msgstr "Вилучити невикористані розділи."
 
-#: src/ld.c:163
+#: src/ld.c:155
 msgid "Don't remove unused sections."
 msgstr "Не вилучати невикористані розділи."
 
-#: src/ld.c:164
+#: src/ld.c:156
 msgid "Set soname of shared object."
 msgstr "Встановити soname об’єкта спільного використання."
 
-#: src/ld.c:165
+#: src/ld.c:157
 msgid "Set the dynamic linker name."
 msgstr "Встановити назву динамічного компонувальника."
 
-#: src/ld.c:168
+#: src/ld.c:160
 msgid "Add/suppress addition indentifying link-editor to .comment section."
 msgstr ""
 "Додати/Придушити додавання ідентифікації редактора компонування до розділу ."
 "comment."
 
-#: src/ld.c:171
+#: src/ld.c:163
 msgid "Create .eh_frame_hdr section"
 msgstr "Створити розділ .eh_frame_hdr"
 
-#: src/ld.c:173
+#: src/ld.c:165
 msgid "Set hash style to sysv, gnu or both."
 msgstr "Встановити формат хешування у значення sysv, gnu або both."
 
-#: src/ld.c:175
+#: src/ld.c:167
 msgid "Generate build ID note (md5, sha1 (default), uuid)."
 msgstr "Створити запису ідентифікатора збирання (md5, sha1 (типовий), uuid)."
 
-#: src/ld.c:177
+#: src/ld.c:169
 msgid "Linker Operation Control:"
 msgstr "Керування роботою компонувальника:"
 
-#: src/ld.c:178
+#: src/ld.c:170
 msgid "Verbose messages."
 msgstr "Докладні повідомлення."
 
-#: src/ld.c:179
+#: src/ld.c:171
 msgid "Trace file opens."
 msgstr "Спостерігати за відкриттями файлів."
 
-#: src/ld.c:181
+#: src/ld.c:173
 msgid "Trade speed for less memory usage"
 msgstr "Зменшити споживання пам’яті за рахунок швидкості"
 
-#: src/ld.c:182
+#: src/ld.c:174
 msgid "LEVEL"
 msgstr "РІВЕНЬ"
 
-#: src/ld.c:183
+#: src/ld.c:175
 msgid "Set optimization level to LEVEL."
 msgstr "Встановити рівень оптимізації РІВЕНЬ."
 
-#: src/ld.c:184
+#: src/ld.c:176
 msgid "Use linker script in FILE."
 msgstr "Використати скрипт компонування у ФАЙЛі."
 
-#: src/ld.c:187
+#: src/ld.c:179
 msgid "Select to get parser debug information"
 msgstr "Позначте, щоб отримати діагностичні дані обробника"
 
-#: src/ld.c:190
+#: src/ld.c:182
 msgid "Read version information from FILE."
 msgstr "Прочитати відомості щодо версії з ФАЙЛа."
 
-#: src/ld.c:191
+#: src/ld.c:183
 msgid "Set emulation to NAME."
 msgstr "Встановити режим емуляції на основі НАЗВИ."
 
-#: src/ld.c:197
+#: src/ld.c:189
 msgid "Combine object and archive files."
 msgstr "Комбінує об’єктні файли і файли архівів."
 
-#: src/ld.c:200
+#: src/ld.c:192
 msgid "[FILE]..."
 msgstr "[ФАЙЛ]..."
 
-#: src/ld.c:333
+#: src/ld.c:325
 #, c-format
 msgid "At least one input file needed"
 msgstr "Потрібен принаймні один файл вхідних даних"
 
-#: src/ld.c:349
+#: src/ld.c:341
 #, c-format
 msgid "error while preparing linking"
 msgstr "помилка під час приготування до компонування"
 
-#: src/ld.c:356
+#: src/ld.c:348
 #, c-format
 msgid "cannot open linker script '%s'"
 msgstr "не вдалося відкрити скрипт компонування «%s»"
 
-#: src/ld.c:397
+#: src/ld.c:389
 #, c-format
 msgid "-( without matching -)"
 msgstr "-( без відповідника -)"
 
-#: src/ld.c:572 src/ld.c:610
+#: src/ld.c:564 src/ld.c:602
 #, c-format
 msgid "only one option of -G and -r is allowed"
 msgstr "можна використовувати лише один з параметрів -G або -r"
 
-#: src/ld.c:594
+#: src/ld.c:586
 #, c-format
 msgid "more than one '-m' parameter"
 msgstr "декілька параметрів «-m»"
 
-#: src/ld.c:604 src/ld.c:1013
+#: src/ld.c:596 src/ld.c:1005
 #, c-format
 msgid "unknown option `-%c %s'"
 msgstr "невідомий параметр «-%c %s»"
 
-#: src/ld.c:646
+#: src/ld.c:638
 #, c-format
 msgid "invalid page size value '%s': ignored"
 msgstr "некоректне значення розміру сторінки «%s»: проігноровано"
 
-#: src/ld.c:687
+#: src/ld.c:679
 #, c-format
 msgid "invalid hash style '%s'"
 msgstr "некоректний формат хешування «%s»"
 
-#: src/ld.c:697
+#: src/ld.c:689
 #, c-format
 msgid "invalid build-ID style '%s'"
 msgstr "некоректний формат ідентифікатора збирання «%s»"
 
-#: src/ld.c:785
+#: src/ld.c:777
 #, c-format
 msgid "More than one output file name given."
 msgstr "Вказано декілька назв файлів виведення даних."
 
-#: src/ld.c:802
+#: src/ld.c:794
 #, c-format
 msgid "Invalid optimization level `%s'"
 msgstr "Некоректний рівень оптимізації «%s»"
 
-#: src/ld.c:850
+#: src/ld.c:842
 #, c-format
 msgid "nested -( -) groups are not allowed"
 msgstr "підтримки вкладених груп -( -) не передбачено"
 
-#: src/ld.c:869
+#: src/ld.c:861
 #, c-format
 msgid "-) without matching -("
 msgstr "-) без відповідника -("
 
-#: src/ld.c:1046
+#: src/ld.c:1038
 #, c-format
 msgid "unknown option '-%c %s'"
 msgstr "невідомий параметр «-%c %s»"
 
-#: src/ld.c:1150
+#: src/ld.c:1142
 #, c-format
 msgid "could not find input file to determine output file format"
 msgstr ""
 "не вдалося виявити файл вхідних даних для визначення формату файла вихідних "
 "даних"
 
-#: src/ld.c:1152
+#: src/ld.c:1144
 #, c-format
 msgid "try again with an appropriate '-m' parameter"
 msgstr "повторіть спробу з належним параметром «-m»"
 
-#: src/ld.c:1446
+#: src/ld.c:1438
 #, c-format
 msgid "cannot read version script '%s'"
 msgstr "не вдалося прочитати скрипт версій «%s»"
 
-#: src/ld.c:1512 src/ld.c:1551
+#: src/ld.c:1504 src/ld.c:1543
 #, c-format
 msgid "duplicate definition of '%s' in linker script"
 msgstr "повторне визначення «%s» у скрипті компонування"
 
-#: src/ldgeneric.c:209 src/ldgeneric.c:5149
+#: src/ldgeneric.c:201 src/ldgeneric.c:5141
 #, c-format
 msgid "cannot create string table"
 msgstr "не вдалося створити таблицю рядків"
 
-#: src/ldgeneric.c:255
+#: src/ldgeneric.c:247
 #, c-format
 msgid "cannot load ld backend library '%s': %s"
 msgstr "не вдалося завантажити бібліотеку сервера ld «%s»: %s"
 
-#: src/ldgeneric.c:265
+#: src/ldgeneric.c:257
 #, c-format
 msgid "cannot find init function in ld backend library '%s': %s"
 msgstr "не вдалося виявити функцію init у бібліотеці сервера ld «%s»: %s"
 
-#: src/ldgeneric.c:308
+#: src/ldgeneric.c:300
 #, c-format
 msgid "%s listed more than once as input"
 msgstr "%s вказано декілька разів як джерело даних"
 
-#: src/ldgeneric.c:422
+#: src/ldgeneric.c:414
 #, c-format
 msgid "%s (for -l%s)\n"
 msgstr "%s (для -l%s)\n"
 
-#: src/ldgeneric.c:423
+#: src/ldgeneric.c:415
 #, c-format
 msgid "%s (for DT_NEEDED %s)\n"
 msgstr "%s (для DT_NEEDED %s)\n"
 
-#: src/ldgeneric.c:571
+#: src/ldgeneric.c:563
 #, c-format
 msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
 msgstr "Попередження: тип «%s» змінився з %s у %s на %s у %s"
 
-#: src/ldgeneric.c:584
+#: src/ldgeneric.c:576
 #, c-format
 msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
 msgstr "Попередження: розмір «%s» змінено з %<PRIu64> у %s на %<PRIu64> у %s"
 
-#: src/ldgeneric.c:659 src/ldgeneric.c:1120 src/readelf.c:642 src/strip.c:570
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:568
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "не вдалося визначити кількість розділів: %s"
 
-#: src/ldgeneric.c:675
+#: src/ldgeneric.c:667
 #, c-format
 msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
 msgstr "(%s+%#<PRIx64>): повторне визначення %s «%s»\n"
 
-#: src/ldgeneric.c:698
+#: src/ldgeneric.c:690
 #, c-format
 msgid "(%s+%#<PRIx64>): first defined here\n"
 msgstr "(%s+%#<PRIx64>): вперше визначено тут\n"
 
-#: src/ldgeneric.c:817
+#: src/ldgeneric.c:809
 #, c-format
 msgid "%s: cannot get section group data: %s"
 msgstr "%s: не вдалося отримати дані групи розділів: %s"
 
-#: src/ldgeneric.c:838
+#: src/ldgeneric.c:830
 #, c-format
 msgid "%s: section '%s' with group flag set does not belong to any group"
 msgstr ""
 "%s: розділ «%s» з встановленим прапорцем групи не належить жодній групі"
 
-#: src/ldgeneric.c:883
+#: src/ldgeneric.c:875
 #, c-format
 msgid "%s: section [%2d] '%s' is not in the correct section group"
 msgstr "%s: розділ [%2d] «%s» не належить до відповідної групи розділів"
 
-#: src/ldgeneric.c:1154 src/ldgeneric.c:1411 src/ldgeneric.c:1420
-#: src/ldgeneric.c:1479 src/ldgeneric.c:1488 src/ldgeneric.c:1751
-#: src/ldgeneric.c:2003
+#: src/ldgeneric.c:1146 src/ldgeneric.c:1403 src/ldgeneric.c:1412
+#: src/ldgeneric.c:1471 src/ldgeneric.c:1480 src/ldgeneric.c:1743
+#: src/ldgeneric.c:1995
 #, c-format
 msgid "%s: invalid ELF file (%s:%d)\n"
 msgstr "%s: некоректний файл ELF (%s:%d)\n"
 
-#: src/ldgeneric.c:1248
+#: src/ldgeneric.c:1240
 #, c-format
 msgid "%s: only files of type ET_REL might contain section groups"
 msgstr "%s: групи розділів можуть містити лише файли типу ET_REL"
 
-#: src/ldgeneric.c:1300
+#: src/ldgeneric.c:1292
 #, c-format
 msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
 msgstr "%s: не вдалося визначити підпис групи розділів [%2zd] «%s»: %s"
 
-#: src/ldgeneric.c:1312
+#: src/ldgeneric.c:1304
 #, c-format
 msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
 msgstr "%s: не вдалося отримати вміст групи розділів [%2zd] «%s»: %s'"
 
-#: src/ldgeneric.c:1326
+#: src/ldgeneric.c:1318
 #, c-format
 msgid ""
 "%s: group member %zu of section group [%2zd] '%s' has too high index: "
@@ -3593,78 +3683,78 @@
 "%s: елемент групи %zu групи розділів [%2zd] «%s» має надто високий індекс: "
 "%<PRIu32>"
 
-#: src/ldgeneric.c:1348
+#: src/ldgeneric.c:1340
 #, c-format
 msgid "%s: section '%s' has unknown type: %d"
 msgstr "%s: розділ «%s» належить до невідомого типу: %d"
 
-#: src/ldgeneric.c:1727
+#: src/ldgeneric.c:1719
 #, c-format
 msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
 msgstr "не вдалося отримати дескриптор файла ELF (%s:%d): %s\n"
 
-#: src/ldgeneric.c:1897
+#: src/ldgeneric.c:1889
 #, c-format
 msgid "cannot read archive `%s': %s"
 msgstr "не вдалося прочитати архів «%s»: %s"
 
-#: src/ldgeneric.c:2018
+#: src/ldgeneric.c:2010
 #, c-format
 msgid "file of type %s cannot be linked in\n"
 msgstr "файл типу %s не можна скомпонувати у\n"
 
-#: src/ldgeneric.c:2030
+#: src/ldgeneric.c:2022
 #, c-format
 msgid "%s: input file incompatible with ELF machine type %s\n"
 msgstr "%s: файл вхідних даних несумісний з типом архітектури ELF %s\n"
 
-#: src/ldgeneric.c:2042
+#: src/ldgeneric.c:2034
 #, c-format
 msgid "%s: cannot get section header string table index: %s\n"
 msgstr ""
 "%s: не вдалося отримати покажчик таблиці рядків заголовка розділу: %s\n"
 
-#: src/ldgeneric.c:2071
+#: src/ldgeneric.c:2063
 #, c-format
 msgid "cannot use DSO '%s' when generating relocatable object file"
 msgstr ""
-"не вдалося використати DSO «%s» під час створення придатного до переміщення "
+"не вдалося використати DSO «%s» під час створення придатного до пересування "
 "об’єктного файла"
 
-#: src/ldgeneric.c:2156
+#: src/ldgeneric.c:2148
 #, c-format
 msgid "input file '%s' ignored"
 msgstr "файл вхідних даних «%s» проігноровано"
 
-#: src/ldgeneric.c:2370
+#: src/ldgeneric.c:2362
 #, c-format
 msgid "undefined symbol `%s' in %s"
 msgstr "невизначений символ «%s» у %s"
 
-#: src/ldgeneric.c:2700
+#: src/ldgeneric.c:2692
 #, c-format
 msgid "cannot create ELF descriptor for output file: %s"
 msgstr "не вдалося створити дескриптор ELF для файла вихідних даних: %s"
 
-#: src/ldgeneric.c:2707
+#: src/ldgeneric.c:2699
 #, c-format
 msgid "could not create ELF header for output file: %s"
 msgstr "не вдалося створити заголовок ELF для файла виведених даних: %s"
 
-#: src/ldgeneric.c:3222 src/ldgeneric.c:3292 src/ldgeneric.c:3328
-#: src/ldgeneric.c:4455 src/ldgeneric.c:4504 src/ldgeneric.c:4536
-#: src/ldgeneric.c:4771 src/ldgeneric.c:4826 src/ldgeneric.c:5073
-#: src/ldgeneric.c:5129 src/ldgeneric.c:5598 src/ldgeneric.c:5610
+#: src/ldgeneric.c:3214 src/ldgeneric.c:3284 src/ldgeneric.c:3320
+#: src/ldgeneric.c:4447 src/ldgeneric.c:4496 src/ldgeneric.c:4528
+#: src/ldgeneric.c:4763 src/ldgeneric.c:4818 src/ldgeneric.c:5065
+#: src/ldgeneric.c:5121 src/ldgeneric.c:5590 src/ldgeneric.c:5602
 #, c-format
 msgid "cannot create section for output file: %s"
 msgstr "не вдалося створити розділ для файла вихідних даних: %s"
 
-#: src/ldgeneric.c:3442
+#: src/ldgeneric.c:3434
 #, c-format
 msgid "address computation expression contains variable '%s'"
 msgstr "вираз обчислення адреси містить змінну «%s»"
 
-#: src/ldgeneric.c:3487
+#: src/ldgeneric.c:3479
 #, c-format
 msgid ""
 "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
@@ -3672,213 +3762,213 @@
 msgstr ""
 "значення «%<PRIuMAX>» ALIGN у виразі обчислення адреси не є степенем двійки"
 
-#: src/ldgeneric.c:3682
+#: src/ldgeneric.c:3674
 #, c-format
 msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
 msgstr ""
 "не вдалося знайти символ запису «%s»: встановлено типове значення "
 "%#0*<PRIx64>"
 
-#: src/ldgeneric.c:3688
+#: src/ldgeneric.c:3680
 #, c-format
 msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
 msgstr "не вказано символу запису: встановлено типове значення %#0*<PRIx64>"
 
-#: src/ldgeneric.c:3918
+#: src/ldgeneric.c:3910
 #, c-format
 msgid "cannot create GNU hash table section for output file: %s"
 msgstr ""
 "не вдалося створити розділ таблиці хешів GNU для файла вихідних даних: %s"
 
-#: src/ldgeneric.c:4069
+#: src/ldgeneric.c:4061
 #, c-format
 msgid "cannot create hash table section for output file: %s"
 msgstr "не вдалося створити розділ таблиці хешів для файла вихідних даних: %s"
 
-#: src/ldgeneric.c:4112
+#: src/ldgeneric.c:4104
 #, c-format
 msgid "cannot create build ID section: %s"
 msgstr "не вдалося створити розділу ідентифікатора збирання: %s"
 
-#: src/ldgeneric.c:4189
+#: src/ldgeneric.c:4181
 #, c-format
 msgid "cannot convert section data to file format: %s"
 msgstr "не вдалося перетворити дані розділу у формат файла: %s"
 
-#: src/ldgeneric.c:4198
+#: src/ldgeneric.c:4190
 #, c-format
 msgid "cannot convert section data to memory format: %s"
 msgstr "не вдалося перетворити дані розділу у формат вмісту пам’яті: %s"
 
-#: src/ldgeneric.c:4259
+#: src/ldgeneric.c:4251
 #, c-format
 msgid "cannot read enough data for UUID"
 msgstr "не вдалося прочитати достатньо даних для встановлення UUID"
 
-#: src/ldgeneric.c:4356 src/ldgeneric.c:4377 src/ldgeneric.c:4406
-#: src/ldgeneric.c:6059
+#: src/ldgeneric.c:4348 src/ldgeneric.c:4369 src/ldgeneric.c:4398
+#: src/ldgeneric.c:6051
 #, c-format
 msgid "cannot create symbol table for output file: %s"
 msgstr "не вдалося створити таблицю символів для файла вихідних даних: %s"
 
-#: src/ldgeneric.c:5298 src/ldgeneric.c:5850
+#: src/ldgeneric.c:5290 src/ldgeneric.c:5842
 #, c-format
 msgid "section index too large in dynamic symbol table"
 msgstr "у таблиці динамічних символів покажчик є занадто великим"
 
-#: src/ldgeneric.c:5743
+#: src/ldgeneric.c:5735
 #, c-format
 msgid "cannot create versioning section: %s"
 msgstr "не вдалося створити розділ версій: %s"
 
-#: src/ldgeneric.c:5816
+#: src/ldgeneric.c:5808
 #, c-format
 msgid "cannot create dynamic symbol table for output file: %s"
 msgstr ""
 "не вдалося створити динамічну таблицю символів для файла вихідних даних: %s"
 
-#: src/ldgeneric.c:5991
+#: src/ldgeneric.c:5983
 #, c-format
 msgid "cannot create versioning data: %s"
 msgstr "не вдалося створити даних версії: %s"
 
-#: src/ldgeneric.c:6091 src/ldgeneric.c:6104 src/ldgeneric.c:6168
-#: src/ldgeneric.c:6176
+#: src/ldgeneric.c:6083 src/ldgeneric.c:6096 src/ldgeneric.c:6160
+#: src/ldgeneric.c:6168
 #, c-format
 msgid "cannot create section header string section: %s"
 msgstr "не вдалося створити розділ рядків заголовка розділу: %s"
 
-#: src/ldgeneric.c:6098
+#: src/ldgeneric.c:6090
 #, c-format
 msgid "cannot create section header string section"
 msgstr "не вдалося створити розділ рядків заголовка розділу"
 
-#: src/ldgeneric.c:6256
+#: src/ldgeneric.c:6248
 #, c-format
 msgid "cannot create program header: %s"
 msgstr "не вдалося створити заголовок програми: %s"
 
-#: src/ldgeneric.c:6264
+#: src/ldgeneric.c:6256
 #, c-format
 msgid "while determining file layout: %s"
 msgstr "під час визначення компонування файла: %s"
 
-#: src/ldgeneric.c:6385
+#: src/ldgeneric.c:6377
 #, c-format
 msgid "internal error: non-nobits section follows nobits section"
 msgstr "внутрішня помилка: небезбітовий розділ слідом за безбітовим розділом"
 
-#: src/ldgeneric.c:6922
+#: src/ldgeneric.c:6914
 #, c-format
 msgid "cannot get header of 0th section: %s"
 msgstr "не вдалося отримати заголовок 0-го розділу: %s"
 
-#: src/ldgeneric.c:6938 src/unstrip.c:1818
+#: src/ldgeneric.c:6930 src/unstrip.c:1822
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "не вдалося оновити заголовок ELF: %s"
 
-#: src/ldgeneric.c:6969
+#: src/ldgeneric.c:6961
 #, c-format
 msgid "linker backend didn't specify function to relocate section"
-msgstr "у сервері компонування не визначено функції для розділу переміщення"
+msgstr "у сервері компонування не визначено функції для розділу пересування"
 
-#: src/ldgeneric.c:6981
+#: src/ldgeneric.c:6973
 #, c-format
 msgid "while writing output file: %s"
 msgstr "під час запису файла вихідних даних: %s"
 
-#: src/ldgeneric.c:6986
+#: src/ldgeneric.c:6978
 #, c-format
 msgid "while finishing output file: %s"
 msgstr "під час закриття файла вихідних даних: %s"
 
-#: src/ldgeneric.c:6992
+#: src/ldgeneric.c:6984
 #, c-format
 msgid "cannot stat output file"
 msgstr "не вдалося обробити stat файл виводу даних"
 
-#: src/ldgeneric.c:7008
+#: src/ldgeneric.c:7000
 #, c-format
 msgid "WARNING: temporary output file overwritten before linking finished"
 msgstr ""
 "ПОПЕРЕДЖЕННЯ: файл тимчасового виводу даних було перезаписано до завершення "
 "компонування"
 
-#: src/ldgeneric.c:7061 src/ldgeneric.c:7072 src/ldgeneric.c:7083
-#: src/ldgeneric.c:7094 src/ldgeneric.c:7113 src/ldgeneric.c:7126
-#: src/ldgeneric.c:7138
+#: src/ldgeneric.c:7053 src/ldgeneric.c:7064 src/ldgeneric.c:7075
+#: src/ldgeneric.c:7086 src/ldgeneric.c:7105 src/ldgeneric.c:7118
+#: src/ldgeneric.c:7130
 #, c-format
 msgid "no machine specific '%s' implementation"
 msgstr "не специфічна для архітектури реалізація «%s»"
 
-#: src/ldscript.y:178
+#: src/ldscript.y:170
 msgid "mode for segment invalid\n"
 msgstr "режим сегмента є некоректним\n"
 
-#: src/ldscript.y:465
+#: src/ldscript.y:457
 #, c-format
 msgid "while reading version script '%s': %s at line %d"
 msgstr "під час читання скрипту версій «%s»: %s у рядку %d"
 
-#: src/ldscript.y:466
+#: src/ldscript.y:458
 #, c-format
 msgid "while reading linker script '%s': %s at line %d"
 msgstr "під час читання скрипту компонування «%s»: %s у рядку %d"
 
-#: src/ldscript.y:745
+#: src/ldscript.y:737
 #, c-format
 msgid "symbol '%s' is declared both local and global for unnamed version"
 msgstr ""
 "символ «%s» оголошено локально і на загальному рівні для версії без назви"
 
-#: src/ldscript.y:747
+#: src/ldscript.y:739
 #, c-format
 msgid "symbol '%s' is declared both local and global for version '%s'"
 msgstr "символ «%s» оголошено локально і на загальному рівні для версії «%s»"
 
-#: src/ldscript.y:767 src/ldscript.y:774
+#: src/ldscript.y:759 src/ldscript.y:766
 #, c-format
 msgid "default visibility set as local and global"
 msgstr "типову видимість визначено як локальну і загальну"
 
-#: src/nm.c:74 src/strip.c:76
+#: src/nm.c:66 src/strip.c:68
 msgid "Output selection:"
 msgstr "Вибір виводу:"
 
-#: src/nm.c:75
+#: src/nm.c:67
 msgid "Display debugger-only symbols"
 msgstr "Показувати лише діагностичні символи"
 
-#: src/nm.c:76
+#: src/nm.c:68
 msgid "Display only defined symbols"
 msgstr "Показувати лише визначені символи"
 
-#: src/nm.c:79
+#: src/nm.c:71
 msgid "Display dynamic symbols instead of normal symbols"
 msgstr "Показувати динамічні символи замість звичайних символів"
 
-#: src/nm.c:80
+#: src/nm.c:72
 msgid "Display only external symbols"
 msgstr "Показувати лише зовнішні символи"
 
-#: src/nm.c:81
+#: src/nm.c:73
 msgid "Display only undefined symbols"
 msgstr "Показувати лише невизначені символи"
 
-#: src/nm.c:83
+#: src/nm.c:75
 msgid "Include index for symbols from archive members"
 msgstr "Включити покажчик для символів з елементів архіву"
 
-#: src/nm.c:85 src/size.c:66
+#: src/nm.c:77 src/size.c:58
 msgid "Output format:"
 msgstr "Формат виводу:"
 
-#: src/nm.c:87
+#: src/nm.c:79
 msgid "Print name of the input file before every symbol"
 msgstr "Виводити перед кожним символом назву вхідного файла"
 
-#: src/nm.c:90
+#: src/nm.c:82
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd', `sysv' or `posix'.  The "
 "default is `sysv'"
@@ -3886,117 +3976,114 @@
 "Використовувати формат виводу ФОРМАТ. ФОРМАТом може бути «bsd», «sysv» або "
 "«posix». Типовим форматом є «sysv»"
 
-#: src/nm.c:92
+#: src/nm.c:84
 msgid "Same as --format=bsd"
 msgstr "Те саме, що і --format=bsd"
 
-#: src/nm.c:93
+#: src/nm.c:85
 msgid "Same as --format=posix"
 msgstr "Те саме, що і --format=posix"
 
-#: src/nm.c:94 src/size.c:72
+#: src/nm.c:86 src/size.c:64
 msgid "Use RADIX for printing symbol values"
 msgstr "Використовувати ОСНОВУ числення для виводу символьних значень"
 
-#: src/nm.c:95
-#, fuzzy
+#: src/nm.c:87
 msgid "Mark special symbols"
-msgstr "Позначати слабкі символи"
+msgstr "Позначати спеціальні символи"
 
-#: src/nm.c:97
+#: src/nm.c:89
 msgid "Print size of defined symbols"
 msgstr "Вивести розмір визначених символів"
 
-#: src/nm.c:99 src/size.c:80 src/strip.c:81 src/unstrip.c:81
+#: src/nm.c:91 src/size.c:72 src/strip.c:73 src/unstrip.c:73
 msgid "Output options:"
 msgstr "Параметри виводу:"
 
-#: src/nm.c:100
+#: src/nm.c:92
 msgid "Sort symbols numerically by address"
 msgstr "Числове впорядкування символів за адресою"
 
-#: src/nm.c:102
+#: src/nm.c:94
 msgid "Do not sort the symbols"
 msgstr "Не впорядковувати символи"
 
-#: src/nm.c:103
+#: src/nm.c:95
 msgid "Reverse the sense of the sort"
 msgstr "Змінити порядок на протилежний"
 
-#: src/nm.c:106
+#: src/nm.c:98
 msgid "Decode low-level symbol names into source code names"
-msgstr ""
+msgstr "Визначати за низькорівневими назвами символів назви у початковому коді"
 
-#: src/nm.c:113
+#: src/nm.c:105
 msgid "List symbols from FILEs (a.out by default)."
 msgstr "Показати список символів з ФАЙЛів (типово з a.out)."
 
-#: src/nm.c:124 src/objdump.c:88
-#, fuzzy
+#: src/nm.c:116 src/objdump.c:80
 msgid "Output formatting"
-msgstr "Формат виводу:"
+msgstr "Форматування виводу"
 
-#: src/nm.c:148 src/objdump.c:112 src/size.c:117 src/strip.c:128
+#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
 #, c-format
 msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
 msgstr "%s: ВНУТРІШНЯ ПОМИЛКА %d (%s-%s): %s"
 
-#: src/nm.c:406 src/nm.c:418 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:2132
+#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
+#: src/strip.c:2160
 #, c-format
 msgid "while closing '%s'"
 msgstr "під час закриття «%s»"
 
-#: src/nm.c:428 src/objdump.c:304 src/strip.c:384
+#: src/nm.c:420 src/objdump.c:296 src/strip.c:376
 #, c-format
 msgid "%s: File format not recognized"
 msgstr "%s: не вдалося розпізнати формат файла"
 
-#: src/nm.c:468
-#, fuzzy
+#: src/nm.c:460
 msgid ""
 "\n"
 "Archive index:\n"
 msgstr ""
 "\n"
-"Покажчик архіву:"
+"Покажчик архіву:\n"
 
-#: src/nm.c:477
+#: src/nm.c:469
 #, c-format
 msgid "invalid offset %zu for symbol %s"
 msgstr "некоректне зміщення %zu для символу %s"
 
-#: src/nm.c:482
+#: src/nm.c:474
 #, c-format
 msgid "%s in %s\n"
 msgstr "%s у %s\n"
 
-#: src/nm.c:490
+#: src/nm.c:482
 #, c-format
 msgid "cannot reset archive offset to beginning"
 msgstr "не вдалося відновити зміщення початку архіву"
 
-#: src/nm.c:514 src/objdump.c:352
+#: src/nm.c:506 src/objdump.c:344
 #, c-format
 msgid "%s%s%s: file format not recognized"
 msgstr "%s%s%s: не вдалося розпізнати формат файла"
 
-#: src/nm.c:726
+#: src/nm.c:718
 #, c-format
 msgid "cannot create search tree"
 msgstr "не вдалося створити дерево пошуку"
 
-#: src/nm.c:765 src/nm.c:1164 src/objdump.c:795 src/readelf.c:898
-#: src/readelf.c:1041 src/readelf.c:1189 src/readelf.c:1371 src/readelf.c:1571
-#: src/readelf.c:1757 src/readelf.c:1967 src/readelf.c:2221 src/readelf.c:2287
-#: src/readelf.c:2365 src/readelf.c:2863 src/readelf.c:2899 src/readelf.c:2961
-#: src/readelf.c:7307 src/readelf.c:8212 src/readelf.c:8359 src/readelf.c:8427
-#: src/size.c:425 src/size.c:499 src/strip.c:510
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:793 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:1975 src/readelf.c:2202 src/readelf.c:2460
+#: src/readelf.c:2536 src/readelf.c:2623 src/readelf.c:3201 src/readelf.c:3237
+#: src/readelf.c:3300 src/readelf.c:8187 src/readelf.c:9273 src/readelf.c:9420
+#: src/readelf.c:9488 src/size.c:417 src/size.c:486 src/strip.c:503
 #, c-format
 msgid "cannot get section header string table index"
 msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків"
 
-#: src/nm.c:790
+#: src/nm.c:784
 #, c-format
 msgid ""
 "\n"
@@ -4009,7 +4096,7 @@
 "Символи з %s:\n"
 "\n"
 
-#: src/nm.c:793
+#: src/nm.c:787
 #, c-format
 msgid ""
 "%*s%-*s %-*s Class  Type     %-*s %*s Section\n"
@@ -4018,73 +4105,72 @@
 "%*s%-*s %-*s Клас   Тип      %-*s %*s Розділ\n"
 "\n"
 
-#: src/nm.c:1174
+#: src/nm.c:1173
 #, c-format
 msgid "%s: entry size in section `%s' is not what we expect"
 msgstr "%s: розмір запису у розділі «%s» не є очікуваним"
 
-#: src/nm.c:1178
+#: src/nm.c:1177
 #, c-format
 msgid "%s: size of section `%s' is not multiple of entry size"
 msgstr "%s: розмір розділу «%s» не є кратним до розміру запису"
 
-#: src/nm.c:1436
+#: src/nm.c:1435
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: некоректна дія"
 
-#: src/nm.c:1493
+#: src/nm.c:1492
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: немає символів"
 
-#: src/objdump.c:61
+#: src/objdump.c:53
 msgid "Mode selection:"
 msgstr "Вибір режиму:"
 
-#: src/objdump.c:62
+#: src/objdump.c:54
 msgid "Display relocation information."
-msgstr "Показати інформацію про переміщення."
+msgstr "Показати інформацію про пересування."
 
-#: src/objdump.c:64
+#: src/objdump.c:56
 msgid "Display the full contents of all sections requested"
 msgstr "Показати весь вміст всіх вказаних розділів"
 
-#: src/objdump.c:66
+#: src/objdump.c:58
 msgid "Display assembler code of executable sections"
 msgstr "Показати код асемблера виконуваних розділів"
 
-#: src/objdump.c:68
-#, fuzzy
+#: src/objdump.c:60
 msgid "Output content selection:"
-msgstr "Вибір параметрів виводу:"
+msgstr "Вибір виведених даних:"
 
-#: src/objdump.c:70
+#: src/objdump.c:62
 msgid "Only display information for section NAME."
 msgstr "Показати інформацію лише з розділу НАЗВА."
 
-#: src/objdump.c:76
+#: src/objdump.c:68
 msgid "Show information from FILEs (a.out by default)."
 msgstr "Показати інформацію з ФАЙЛів (типово a.out)."
 
-#: src/objdump.c:244 src/readelf.c:441
+#: src/objdump.c:236 src/readelf.c:473
 msgid "No operation specified.\n"
 msgstr "Не вказано дії.\n"
 
-#: src/objdump.c:282 src/objdump.c:294
+#: src/objdump.c:274 src/objdump.c:286
 #, c-format
 msgid "while close `%s'"
 msgstr "під час закриття «%s»"
 
-#: src/objdump.c:387 src/readelf.c:1666 src/readelf.c:1840
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2072
 msgid "INVALID SYMBOL"
 msgstr "НЕКОРЕКТНИЙ СИМВОЛ"
 
-#: src/objdump.c:402 src/readelf.c:1697 src/readelf.c:1873
+#: src/objdump.c:394 src/readelf.c:1914 src/readelf.c:2108
 msgid "INVALID SECTION"
 msgstr "НЕКОРЕКТНИЙ РОЗДІЛ"
 
-#: src/objdump.c:518
+#: src/objdump.c:514
 #, c-format
 msgid ""
 "\n"
@@ -4095,225 +4181,286 @@
 "ЗАПИСИ ПЕРЕМІЩЕННЯ ДЛЯ [%s]:\n"
 "%-*s ТИП                  ЗНАЧЕННЯ\n"
 
-#: src/objdump.c:521
+#: src/objdump.c:517
 msgid "OFFSET"
 msgstr "ЗМІЩЕННЯ"
 
-#: src/objdump.c:584
+#: src/objdump.c:582
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Вміст розділу %s:\n"
 
-#: src/objdump.c:705
+#: src/objdump.c:703
 #, c-format
 msgid "cannot disassemble"
 msgstr "не вдалося дизасемблювати"
 
-#: src/objdump.c:744
-#, fuzzy, c-format
+#: src/objdump.c:742
+#, c-format
 msgid "cannot allocate memory"
-msgstr "не вдалося розмістити PLT-розділ: %s"
+msgstr "не вдалося розподілити пам’ять"
 
-#: src/ranlib.c:74
+#: src/ranlib.c:66
 msgid "Generate an index to speed access to archives."
 msgstr "Створювати покажчик для пришвидшення доступу до архівів."
 
-#: src/ranlib.c:77
+#: src/ranlib.c:69
 msgid "ARCHIVE"
 msgstr "АРХІВ"
 
-#: src/ranlib.c:116
+#: src/ranlib.c:108
 #, c-format
 msgid "Archive name required"
 msgstr "Слід вказати назву архіву"
 
-#: src/ranlib.c:194
+#: src/ranlib.c:186
 #, c-format
 msgid "'%s' is no archive"
 msgstr "«%s» не є архівом"
 
-#: src/ranlib.c:229
+#: src/ranlib.c:221
 #, c-format
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr "помилка під час спроби вивільнення дескриптора під-ELF: %s"
 
+#: 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:75
+#: src/readelf.c:77
 msgid "All these plus -p .strtab -p .dynstr -p .comment"
 msgstr "Все це плюс -p .strtab -p .dynstr -p .comment"
 
-#: src/readelf.c:76
+#: src/readelf.c:78
 msgid "Display the dynamic segment"
 msgstr "Показувати динамічний сегмент"
 
-#: src/readelf.c:77
+#: src/readelf.c:79
 msgid "Display the ELF file header"
 msgstr "Показувати заголовок файла ELF"
 
-#: src/readelf.c:79
+#: src/readelf.c:81
 msgid "Display histogram of bucket list lengths"
 msgstr "Показати гістограму довжин списку блоків"
 
-#: src/readelf.c:80
+#: src/readelf.c:82
 msgid "Display the program headers"
 msgstr "Показувати заголовки програми"
 
-#: src/readelf.c:82
+#: src/readelf.c:84
 msgid "Display relocations"
-msgstr "Показувати переміщення"
+msgstr "Показувати пересування"
 
-#: src/readelf.c:83
+#: src/readelf.c:85
 msgid "Display the sections' headers"
 msgstr "Показувати заголовки розділів"
 
-#: src/readelf.c:85
+#: src/readelf.c:87
 msgid "Display the symbol table"
 msgstr "Показувати таблицю символів"
 
-#: src/readelf.c:86
+#: src/readelf.c:88
 msgid "Display versioning information"
 msgstr "Показувати відомості щодо версії"
 
-#: src/readelf.c:87
+#: src/readelf.c:89
 msgid "Display the ELF notes"
 msgstr "Показувати нотатки ELF"
 
-#: src/readelf.c:89
+#: src/readelf.c:91
 msgid "Display architecture specific information, if any"
 msgstr "Показувати специфічні для архітектури дані, якщо такі буде виявлено"
 
-#: src/readelf.c:91
+#: src/readelf.c:93
 msgid "Display sections for exception handling"
 msgstr "Показувати розділи для обробки виключень"
 
-#: src/readelf.c:93
+#: src/readelf.c:95
 msgid "Additional output selection:"
 msgstr "Додатковий вибір виводу:"
 
-#: src/readelf.c:95
-#, fuzzy
+#: 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, or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
 msgstr ""
 "Показати вміст розділу DWARF. Значенням РОЗДІЛ може бути abbrev, aranges, "
-"frame, info, loc, line, ranges, pubnames, str, macinfo або exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro або exception"
 
-#: src/readelf.c:99
+#: src/readelf.c:101
 msgid "Dump the uninterpreted contents of SECTION, by number or name"
 msgstr ""
 "Створити дамп даних РОЗДІЛ, які не вдалося інтерпретувати, за номером або "
 "назвами"
 
-#: src/readelf.c:101
+#: src/readelf.c:103
 msgid "Print string contents of sections"
 msgstr "Виводити вміст рядків розділів"
 
-#: src/readelf.c:104
+#: src/readelf.c:106
 msgid "Display the symbol index of an archive"
 msgstr "Показувати покажчик символів архіву"
 
-#: src/readelf.c:106
+#: src/readelf.c:108
 msgid "Output control:"
 msgstr "Керування виводом:"
 
-#: src/readelf.c:108
-msgid "Do not find symbol names for addresses in DWARF data"
-msgstr "Не шукати назви символів для адресу у даних DWARF"
-
 #: src/readelf.c:110
-msgid "Ignored for compatibility (lines always wide)"
-msgstr ""
+msgid "Do not find symbol names for addresses in DWARF data"
+msgstr "Не шукати назви символів для адрес у даних DWARF"
 
-#: src/readelf.c:115
+#: 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:119
 msgid "Print information from ELF file in human-readable form."
 msgstr "Виводити відомості з файла ELF у придатному для читання форматі."
 
-#: src/readelf.c:412
+#: src/readelf.c:441
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "Невідомий діагностичний розділ DWARF «%s».\n"
 
-#: src/readelf.c:478
+#: src/readelf.c:520 src/readelf.c:631
 #, c-format
 msgid "cannot generate Elf descriptor: %s"
 msgstr "не вдалося створити дескриптор Elf: %s"
 
-#: src/readelf.c:490
+#: 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:495
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9440
+#: src/unstrip.c:356 src/unstrip.c:387 src/unstrip.c:436 src/unstrip.c:544
+#: src/unstrip.c:561 src/unstrip.c:597 src/unstrip.c:795 src/unstrip.c:1063
+#: src/unstrip.c:1254 src/unstrip.c:1314 src/unstrip.c:1435 src/unstrip.c:1488
+#: src/unstrip.c:1595 src/unstrip.c:1784
+#, c-format
+msgid "cannot get section header: %s"
+msgstr "не вдалося отримати заголовок розділу: %s"
+
+#: src/readelf.c:562
+#, c-format
+msgid "cannot get section name"
+msgstr "не вдалося отримати назву розділу"
+
+#: src/readelf.c:571 src/readelf.c:5398 src/readelf.c:7671 src/readelf.c:7773
+#: src/readelf.c:7939
+#, 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:587
+#: 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:589
+#: src/readelf.c:771
 #, c-format
 msgid "input file is empty"
 msgstr "вхідний файл є порожнім"
 
-#: src/readelf.c:591
+#: src/readelf.c:773
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "не вдалося прочитати «%s»: %s"
 
-#: src/readelf.c:627
+#: src/readelf.c:814
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr "не вдалося прочитати заголовок ELF: %s"
 
-#: src/readelf.c:635
+#: src/readelf.c:822
 #, c-format
 msgid "cannot create EBL handle"
 msgstr "не вдалося створити дескриптор EBL"
 
-#: src/readelf.c:648
+#: src/readelf.c:835
 #, c-format
 msgid "cannot determine number of program headers: %s"
 msgstr "не вдалося визначити кількість заголовків програми: %s"
 
-#: src/readelf.c:734
+#: src/readelf.c:921
 msgid "NONE (None)"
 msgstr "NONE (Немає)"
 
-#: src/readelf.c:735
+#: src/readelf.c:922
 msgid "REL (Relocatable file)"
-msgstr "REL (Придатний до переміщення файл)"
+msgstr "REL (Придатний до пересування файл)"
 
-#: src/readelf.c:736
+#: src/readelf.c:923
 msgid "EXEC (Executable file)"
 msgstr "EXEC (Виконуваний файл)"
 
-#: src/readelf.c:737
+#: src/readelf.c:924
 msgid "DYN (Shared object file)"
 msgstr "DYN (Файл об’єктів спільного використання)"
 
-#: src/readelf.c:738
+#: src/readelf.c:925
 msgid "CORE (Core file)"
 msgstr "CORE (Файл ядра)"
 
-#: src/readelf.c:743
+#: src/readelf.c:930
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr "ОС-специфічне: (%x)\n"
 
-#: src/readelf.c:745
+#: src/readelf.c:932
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr "Специфічне для процесора: (%x)\n"
 
-#: src/readelf.c:755
+#: src/readelf.c:942
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
@@ -4321,7 +4468,7 @@
 "Заголовок ELF:\n"
 "  Magic:  "
 
-#: src/readelf.c:759
+#: src/readelf.c:946
 #, c-format
 msgid ""
 "\n"
@@ -4330,117 +4477,117 @@
 "\n"
 "  Клас:                              %s\n"
 
-#: src/readelf.c:764
+#: src/readelf.c:951
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Дані:                              %s\n"
 
-#: src/readelf.c:770
+#: src/readelf.c:957
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr "   Версія Ident:                     %hhd %s\n"
 
-#: src/readelf.c:772 src/readelf.c:789
+#: src/readelf.c:959 src/readelf.c:976
 msgid "(current)"
 msgstr "(поточний)"
 
-#: src/readelf.c:776
+#: src/readelf.c:963
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  ОС/ABI:                            %s\n"
 
-#: src/readelf.c:779
+#: src/readelf.c:966
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr "  Версія ABI:                       %hhd\n"
 
-#: src/readelf.c:782
+#: src/readelf.c:969
 msgid "  Type:                              "
 msgstr "  Тип:                                "
 
-#: src/readelf.c:785
+#: src/readelf.c:972
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Архітектура:                       %s\n"
 
-#: src/readelf.c:787
+#: src/readelf.c:974
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Версія:                            %d %s\n"
 
-#: src/readelf.c:791
+#: src/readelf.c:978
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr "  Адреса вхідної точки:              %#<PRIx64>\n"
 
-#: src/readelf.c:794
+#: src/readelf.c:981
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr "  Початок заголовків програм:      %<PRId64> %s\n"
 
-#: src/readelf.c:795 src/readelf.c:798
+#: src/readelf.c:982 src/readelf.c:985
 msgid "(bytes into file)"
 msgstr "(байтів у файл)"
 
-#: src/readelf.c:797
+#: src/readelf.c:984
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr "  Початок заголовків розділів:     %<PRId64> %s\n"
 
-#: src/readelf.c:800
+#: src/readelf.c:987
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr "  Прапорці:                          %s\n"
 
-#: src/readelf.c:803
+#: src/readelf.c:990
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr "  Розмір цього заголовка:            %<PRId16> %s\n"
 
-#: src/readelf.c:804 src/readelf.c:807 src/readelf.c:824
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
 msgid "(bytes)"
 msgstr "(байтів)"
 
-#: src/readelf.c:806
+#: src/readelf.c:993
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr "  Розмір записів заголовка програми:  %<PRId16> %s\n"
 
-#: src/readelf.c:809
+#: src/readelf.c:996
 #, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr "  Кількість записів заголовків програми: %<PRId16>"
 
-#: src/readelf.c:816
+#: src/readelf.c:1003
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr " (%<PRIu32> у [0].sh_info)"
 
-#: src/readelf.c:819 src/readelf.c:836 src/readelf.c:850
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
 msgid " ([0] not available)"
 msgstr " ([0] недоступний)"
 
-#: src/readelf.c:823
+#: src/readelf.c:1010
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr "  Розмір записів заголовків розділів:  %<PRId16> %s\n"
 
-#: src/readelf.c:826
+#: src/readelf.c:1013
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr "  Кількість записів заголовків розділів: %<PRId16>"
 
-#: src/readelf.c:833
+#: src/readelf.c:1020
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr " (%<PRIu32> у [0].sh_size)"
 
-#: src/readelf.c:846
+#: src/readelf.c:1033
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr " (%<PRIu32> у [0].sh_link)"
 
-#: src/readelf.c:854
+#: src/readelf.c:1041
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
@@ -4449,7 +4596,7 @@
 "  Індекс заголовка розділу у таблиці рядків: XINDEX%s\n"
 "\n"
 
-#: src/readelf.c:858
+#: src/readelf.c:1045
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
@@ -4458,7 +4605,7 @@
 "  Індекс заголовка розділу у таблиці рядків: %<PRId16>\n"
 "\n"
 
-#: src/readelf.c:890
+#: src/readelf.c:1077
 #, c-format
 msgid ""
 "There are %d section headers, starting at offset %#<PRIx64>:\n"
@@ -4467,11 +4614,11 @@
 "Виявлено %d заголовків розділів, зміщення початку — %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:900
+#: src/readelf.c:1087
 msgid "Section Headers:"
 msgstr "Заголовки розділів:"
 
-#: src/readelf.c:903
+#: src/readelf.c:1090
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
@@ -4479,7 +4626,7 @@
 "[№ ] Назва                Тип          Адр      Змі    Розмір ES Прап  Lk "
 "Інф Al"
 
-#: src/readelf.c:905
+#: src/readelf.c:1092
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
@@ -4487,31 +4634,17 @@
 "[№ ] Назва                Тип          Адр              Змі      Розмір   ES "
 "Прап  Lk Інф Al"
 
-#: src/readelf.c:912 src/readelf.c:1065
-#, c-format
-msgid "cannot get section: %s"
-msgstr "не вдалося отримати розділ: %s"
-
-#: src/readelf.c:919 src/readelf.c:1073 src/readelf.c:8379 src/unstrip.c:353
-#: src/unstrip.c:384 src/unstrip.c:433 src/unstrip.c:541 src/unstrip.c:558
-#: src/unstrip.c:594 src/unstrip.c:792 src/unstrip.c:1060 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:977
+#: src/readelf.c:1164
 msgid "Program Headers:"
 msgstr "Заголовки програми:"
 
-#: src/readelf.c:979
+#: src/readelf.c:1166
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 "  Тип            Зміщен   ВіртАдр    ФізАдр     РозмФайл РозмПам  Пра Вирів"
 
-#: src/readelf.c:982
+#: src/readelf.c:1169
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4519,12 +4652,12 @@
 "  Тип           Зміщен   ВіртАдр            ФізАдр             "
 "РозмФайлРозмПам  Пра Вирів"
 
-#: src/readelf.c:1022
+#: src/readelf.c:1226
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[Запит щодо інтерпретатора програми: %s]\n"
 
-#: src/readelf.c:1043
+#: src/readelf.c:1247
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4534,12 +4667,12 @@
 " Відображення розділів на сегмент:\n"
 "  Розділи сегмента..."
 
-#: src/readelf.c:1054 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
+#: src/readelf.c:1258 src/unstrip.c:1843 src/unstrip.c:1886 src/unstrip.c:1893
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "не вдалося отримати заголовок програми: %s"
 
-#: src/readelf.c:1195
+#: src/readelf.c:1401
 #, c-format
 msgid ""
 "\n"
@@ -4557,7 +4690,7 @@
 "\n"
 "Група розділів COMDAT [%2zu] «%s» з підписом «%s» містить %zu записів:\n"
 
-#: src/readelf.c:1200
+#: src/readelf.c:1406
 #, c-format
 msgid ""
 "\n"
@@ -4575,15 +4708,21 @@
 "\n"
 "Група розділів [%2zu] «%s» з підписом «%s» містить %zu записів:\n"
 
-#: src/readelf.c:1208
+#: src/readelf.c:1414
 msgid "<INVALID SYMBOL>"
 msgstr "<НЕКОРЕКТНИЙ СИМВОЛ>"
 
-#: src/readelf.c:1222
+#: src/readelf.c:1428
 msgid "<INVALID SECTION>"
 msgstr "<НЕКОРЕКТНИЙ РОЗДІЛ>"
 
-#: src/readelf.c:1373
+#: src/readelf.c:1585 src/readelf.c:2208 src/readelf.c:2466 src/readelf.c:2542
+#: src/readelf.c:2846 src/readelf.c:2920 src/readelf.c:4610
+#, fuzzy, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr "некоректний розділ .debug_line"
+
+#: src/readelf.c:1588
 #, c-format
 msgid ""
 "\n"
@@ -4606,36 +4745,36 @@
 "Динамічний сегмент містить %lu записів:\n"
 " Адр: %#0*<PRIx64>  Зміщення: %#08<PRIx64>  Пос. на розділ: [%2u] '%s'\n"
 
-#: src/readelf.c:1385
+#: src/readelf.c:1598
 msgid "  Type              Value\n"
 msgstr "  Тип              Значення\n"
 
-#: src/readelf.c:1409
+#: src/readelf.c:1622
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "Спільна бібліотека: [%s]\n"
 
-#: src/readelf.c:1414
+#: src/readelf.c:1627
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "Назва so бібліотеки: [%s]\n"
 
-#: src/readelf.c:1419
+#: src/readelf.c:1632
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "Rpath бібліотеки: [%s]\n"
 
-#: src/readelf.c:1424
+#: src/readelf.c:1637
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "Runpath бібліотеки: [%s]\n"
 
-#: src/readelf.c:1444
+#: src/readelf.c:1657
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (байт)\n"
 
-#: src/readelf.c:1556 src/readelf.c:1742
+#: src/readelf.c:1770 src/readelf.c:1960
 #, c-format
 msgid ""
 "\n"
@@ -4644,7 +4783,7 @@
 "\n"
 "Некоректна таблиця символів за зміщенням %#0<PRIx64>\n"
 
-#: src/readelf.c:1574 src/readelf.c:1759
+#: src/readelf.c:1788 src/readelf.c:1978
 #, c-format
 msgid ""
 "\n"
@@ -4656,18 +4795,18 @@
 "contains %d entries:\n"
 msgstr[0] ""
 "\n"
-"Розділ переміщення [%2zu] «%s» для розділу [%2u] «%s» за зміщенням "
+"Розділ пересування [%2zu] «%s» для розділу [%2u] «%s» за зміщенням "
 "%#0<PRIx64> містить %d запис:\n"
 msgstr[1] ""
 "\n"
-"Розділ переміщення [%2zu] «%s» для розділу [%2u] «%s» за зміщенням "
+"Розділ пересування [%2zu] «%s» для розділу [%2u] «%s» за зміщенням "
 "%#0<PRIx64> містить %d записи:\n"
 msgstr[2] ""
 "\n"
-"Розділ переміщення [%2zu] «%s» для розділу [%2u] «%s» за зміщенням "
+"Розділ пересування [%2zu] «%s» для розділу [%2u] «%s» за зміщенням "
 "%#0<PRIx64> містить %d записів:\n"
 
-#: src/readelf.c:1589
+#: src/readelf.c:1803 src/readelf.c:1993
 #, c-format
 msgid ""
 "\n"
@@ -4677,38 +4816,38 @@
 "Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n"
 msgstr[0] ""
 "\n"
-"Розділ переміщення [%2u] «%s» за зміщенням %#0<PRIx64> містить %d запис:\n"
+"Розділ пересування [%2u] «%s» за зміщенням %#0<PRIx64> містить %d запис:\n"
 msgstr[1] ""
 "\n"
-"Розділ переміщення [%2u] «%s» за зміщенням %#0<PRIx64> містить %d записи:\n"
+"Розділ пересування [%2u] «%s» за зміщенням %#0<PRIx64> містить %d записи:\n"
 msgstr[2] ""
 "\n"
-"Розділ переміщення [%2u] «%s» за зміщенням %#0<PRIx64> містить %d записів:\n"
+"Розділ пересування [%2u] «%s» за зміщенням %#0<PRIx64> містить %d записів:\n"
 
-#: src/readelf.c:1599
+#: src/readelf.c:1813
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "  Зміщення     Тип                  Значення    Назва\n"
 
-#: src/readelf.c:1601
+#: src/readelf.c:1815
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "  Зміщення            Тип                  Значення            Назва\n"
 
-#: src/readelf.c:1654 src/readelf.c:1665 src/readelf.c:1678 src/readelf.c:1696
-#: src/readelf.c:1708 src/readelf.c:1827 src/readelf.c:1839 src/readelf.c:1853
-#: src/readelf.c:1872 src/readelf.c:1885
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1913
+#: src/readelf.c:1925 src/readelf.c:2059 src/readelf.c:2071 src/readelf.c:2085
+#: src/readelf.c:2107 src/readelf.c:2120
 msgid "<INVALID RELOC>"
 msgstr "<НЕКОРЕКТНЕ ПЕРЕМІЩЕННЯ>"
 
-#: src/readelf.c:1771
+#: src/readelf.c:2003
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "  Зміщення    Тип             Значення    Назва додатка\n"
 
-#: src/readelf.c:1773
+#: src/readelf.c:2005
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 "  Зміщення            Тип             Значення            Назва додатка\n"
 
-#: src/readelf.c:1974
+#: src/readelf.c:2216
 #, c-format
 msgid ""
 "\n"
@@ -4726,7 +4865,7 @@
 "\n"
 "Таблиця символів [%2u] «%s» містить %u записів:\n"
 
-#: src/readelf.c:1980
+#: src/readelf.c:2221
 #, c-format
 msgid " %lu local symbol  String table: [%2u] '%s'\n"
 msgid_plural " %lu local symbols  String table: [%2u] '%s'\n"
@@ -4734,33 +4873,33 @@
 msgstr[1] " %lu лок. символи  Таблиця символів: [%2u] «%s»\n"
 msgstr[2] " %lu лок. символів Таблиця символів: [%2u] «%s»\n"
 
-#: src/readelf.c:1990
+#: src/readelf.c:2229
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  №№      Знач.   Роз. Тип     Зв’яз  Вид.         Інд Назва\n"
 
-#: src/readelf.c:1992
+#: src/readelf.c:2231
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  №№              Знач.   Роз. Тип     Зв’яз  Вид.         Інд Назва\n"
 
-#: src/readelf.c:2012
+#: src/readelf.c:2251
 #, 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:2100
+#: src/readelf.c:2339
 #, c-format
 msgid "bad dynamic symbol"
 msgstr "помилковий динамічний символ"
 
-#: src/readelf.c:2182
+#: src/readelf.c:2421
 msgid "none"
 msgstr "немає"
 
-#: src/readelf.c:2199
+#: src/readelf.c:2438
 msgid "| <unknown>"
 msgstr "| <невідомо>"
 
-#: src/readelf.c:2224
+#: src/readelf.c:2469
 #, c-format
 msgid ""
 "\n"
@@ -4783,17 +4922,17 @@
 "Розділ потреби у версіях [%2u] «%s», що містить %d записів:\n"
 " Адр.: %#0*<PRIx64>  Зміщ.:  %#08<PRIx64>  Посилання на розділ: [%2u] «%s»\n"
 
-#: src/readelf.c:2247
+#: src/readelf.c:2490
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Версія: %hu  Файл: %s  Кть: %hu\n"
 
-#: src/readelf.c:2260
+#: src/readelf.c:2503
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Назва: %s  Прап: %s  Версія: %hu\n"
 
-#: src/readelf.c:2291
+#: src/readelf.c:2546
 #, c-format
 msgid ""
 "\n"
@@ -4816,17 +4955,17 @@
 "Розділ визначення версії [%2u] «%s», що містить %d записів:\n"
 " Адр.: %#0*<PRIx64>  Зміщ.:  %#08<PRIx64>  Посилання на розділ: [%2u] «%s»\n"
 
-#: src/readelf.c:2321
+#: src/readelf.c:2574
 #, 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:2336
+#: src/readelf.c:2589
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: батьківський %d: %s\n"
 
-#: src/readelf.c:2568
+#: src/readelf.c:2850
 #, c-format
 msgid ""
 "\n"
@@ -4849,15 +4988,15 @@
 "Розділ символів версій [%2u] «%s», що містить %d записів:\n"
 " Адр.: %#0*<PRIx64>  Зміщ.:  %#08<PRIx64>  Посилання на розділ: [%2u] «%s»"
 
-#: src/readelf.c:2598
+#: src/readelf.c:2878
 msgid "   0 *local*                     "
 msgstr "   0 *локальний*                 "
 
-#: src/readelf.c:2603
+#: src/readelf.c:2883
 msgid "   1 *global*                    "
 msgstr "   1 *загальний*                 "
 
-#: src/readelf.c:2634
+#: src/readelf.c:2925
 #, c-format
 msgid ""
 "\n"
@@ -4885,22 +5024,22 @@
 "блоками):\n"
 " Адр.: %#0*<PRIx64>  Зміщ.: %#08<PRIx64>  Посилання на розділ: [%2u] «%s»\n"
 
-#: src/readelf.c:2658
+#: src/readelf.c:2947
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " Довжина Номер   % від загал. Покриття\n"
 
-#: src/readelf.c:2660
+#: src/readelf.c:2949
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:2667
+#: src/readelf.c:2956
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:2680
+#: src/readelf.c:2969
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -4909,12 +5048,27 @@
 " Середня кількість тестів:   успішний пошук: %f\n"
 "\t\t\t  неуспішний пошук: %f\n"
 
-#: src/readelf.c:2698 src/readelf.c:2740 src/readelf.c:2781
+#: src/readelf.c:2987 src/readelf.c:3042 src/readelf.c:3098
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "не вдалося отримати дані для розділу %d: %s"
 
-#: src/readelf.c:2835
+#: src/readelf.c:2995
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash section %d"
+msgstr "некоректні дані у розділі [%zu] «%s»"
+
+#: src/readelf.c:3050
+#, fuzzy, c-format
+msgid "invalid data in sysv.hash64 section %d"
+msgstr "некоректні дані у розділі [%zu] «%s»"
+
+#: src/readelf.c:3106
+#, fuzzy, c-format
+msgid "invalid data in gnu.hash section %d"
+msgstr "некоректні дані у розділі [%zu] «%s»"
+
+#: src/readelf.c:3173
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -4924,7 +5078,7 @@
 " Розмір бітової маски: %zu байтів  %<PRIuFAST32>%% встановлених бітів  зсув "
 "2-го хешу: %u\n"
 
-#: src/readelf.c:2909
+#: src/readelf.c:3248
 #, c-format
 msgid ""
 "\n"
@@ -4945,7 +5099,7 @@
 "Розділ списку бібліотек [%2zu] «%s» за зміщенням %#0<PRIx64> містить %d "
 "записів:\n"
 
-#: src/readelf.c:2923
+#: src/readelf.c:3262
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -4953,7 +5107,7 @@
 "       Бібліотека                    Часовий штамп       Версія суми      "
 "Прапорці"
 
-#: src/readelf.c:2973
+#: src/readelf.c:3312
 #, c-format
 msgid ""
 "\n"
@@ -4964,160 +5118,140 @@
 "Розділ атрибутів об’єктів [%2zu] «%s» з %<PRIu64> байтів за зміщенням "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:2989
+#: src/readelf.c:3329
 msgid "  Owner          Size\n"
 msgstr "  Власник        Розмір\n"
 
-#: src/readelf.c:3015
+#: src/readelf.c:3358
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
-#: src/readelf.c:3047
+#: src/readelf.c:3397
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
-#: src/readelf.c:3052
+#: src/readelf.c:3402
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    Файл: %11<PRIu32>\n"
 
-#: src/readelf.c:3087
+#: src/readelf.c:3451
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3090
+#: src/readelf.c:3454
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3093
+#: src/readelf.c:3457
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3100
+#: src/readelf.c:3467
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3103
+#: src/readelf.c:3470
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3139
+#: src/readelf.c:3515
 #, c-format
 msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3142
+#: src/readelf.c:3518
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3147
+#: src/readelf.c:3523
 #, c-format
 msgid "%#<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3150
+#: src/readelf.c:3526
 #, c-format
 msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
 msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
 
-#: src/readelf.c:3156
+#: src/readelf.c:3532
 #, c-format
 msgid "%s+%#<PRIx64> <%s>"
 msgstr "%s+%#<PRIx64> <%s>"
 
-#: src/readelf.c:3159
+#: src/readelf.c:3535
 #, c-format
 msgid "%s+%#0*<PRIx64> <%s>"
 msgstr "%s+%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3163
+#: src/readelf.c:3539
 #, c-format
 msgid "%#<PRIx64> <%s>"
 msgstr "%#<PRIx64> <%s>"
 
-#: src/readelf.c:3166
+#: src/readelf.c:3542
 #, c-format
 msgid "%#0*<PRIx64> <%s>"
 msgstr "%#0*<PRIx64> <%s>"
 
-#: src/readelf.c:3171
+#: src/readelf.c:3547
 #, c-format
 msgid "%s+%#<PRIx64>"
 msgstr "%s+%#<PRIx64>"
 
-#: src/readelf.c:3174
+#: src/readelf.c:3550
 #, c-format
 msgid "%s+%#0*<PRIx64>"
 msgstr "%s+%#0*<PRIx64>"
 
-#: src/readelf.c:3313
-#, c-format
-msgid "unknown tag %hx"
-msgstr "невідомий теґ %hx"
-
-#: src/readelf.c:3315
-#, c-format
-msgid "unknown user tag %hx"
-msgstr "невідомий теґ користувача %hx"
-
-#: src/readelf.c:3603
-#, c-format
-msgid "unknown attribute %hx"
-msgstr "невідомий атрибут %hx"
-
-#: src/readelf.c:3606
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr "невідомий атрибут користувача %hx"
-
-#: src/readelf.c:3657
-#, fuzzy, c-format
-msgid "unknown form %#<PRIx64>"
-msgstr "невідома форма %<PRIx64>"
-
-#: src/readelf.c:3893
+#: src/readelf.c:3932
 msgid "empty block"
 msgstr "порожній блок"
 
-#: src/readelf.c:3896
+#: src/readelf.c:3935
 #, c-format
 msgid "%zu byte block:"
 msgstr "%zu-байтовий блок:"
 
-#: src/readelf.c:4419
+#: src/readelf.c:4332
 #, c-format
 msgid "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%4<PRIuMAX>] %s  <ОБРІЗАНО>\n"
 
-#: src/readelf.c:4455
+#: src/readelf.c:4389
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr "%s %#<PRIx64> використано з різними розмірами адрес"
 
-#: src/readelf.c:4462
+#: src/readelf.c:4396
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr "%s %#<PRIx64> використано з різними розмірами зміщень"
 
-#: src/readelf.c:4542
+#: src/readelf.c:4403
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> використано з різними базовими адресами"
+
+#: src/readelf.c:4492
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr " [%6tx]  <НЕВИКОРИСТОВУВАНІ ДАНІ У РЕШТІ РОЗДІЛУ>\n"
 
-#: src/readelf.c:4550
+#: src/readelf.c:4500
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <НЕВИКОРИСТОВУВАНІ ДАНІ> ... %<PRIu64> байтів ...\n"
 
-#: src/readelf.c:4569
+#: src/readelf.c:4526
 #, c-format
 msgid ""
 "\n"
@@ -5128,7 +5262,7 @@
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 " [ Код]\n"
 
-#: src/readelf.c:4577
+#: src/readelf.c:4534
 #, c-format
 msgid ""
 "\n"
@@ -5137,30 +5271,30 @@
 "\n"
 "Розділ скорочень за зміщенням %<PRIu64>:\n"
 
-#: src/readelf.c:4590
+#: src/readelf.c:4547
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** помилка під час читання скорочення: %s\n"
 
-#: src/readelf.c:4606
+#: src/readelf.c:4563
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] зміщення: %<PRId64>, дочірній: %s, мітка: %s\n"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "yes"
 msgstr "так"
 
-#: src/readelf.c:4609
+#: src/readelf.c:4566
 msgid "no"
 msgstr "ні"
 
-#: src/readelf.c:4644
+#: src/readelf.c:4600 src/readelf.c:4673
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "не вдалося отримати дані get .debug_aranges: %s"
 
-#: src/readelf.c:4649
+#: src/readelf.c:4615
 #, c-format
 msgid ""
 "\n"
@@ -5178,12 +5312,12 @@
 "\n"
 "Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64> містить %zu записів:\n"
 
-#: src/readelf.c:4680
+#: src/readelf.c:4646
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:4682
+#: src/readelf.c:4648
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5191,13 +5325,8 @@
 " [%*zu] початок: %0#*<PRIx64>, довжина: %5<PRIu64>, зміщення CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:4701
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "не вдалося отримати дані .debug_ranges: %s"
-
-#: src/readelf.c:4706 src/readelf.c:5207 src/readelf.c:5982 src/readelf.c:6483
-#: src/readelf.c:6598 src/readelf.c:6770
+#: src/readelf.c:4678 src/readelf.c:4832 src/readelf.c:5408 src/readelf.c:6362
+#: src/readelf.c:6894 src/readelf.c:7014 src/readelf.c:7177 src/readelf.c:7602
 #, c-format
 msgid ""
 "\n"
@@ -5206,37 +5335,124 @@
 "\n"
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 
-#: src/readelf.c:4730 src/readelf.c:6508
+#: src/readelf.c:4691 src/readelf.c:6388
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Таблиця за зміщенням %Zu:\n"
+
+#: src/readelf.c:4695 src/readelf.c:5432 src/readelf.c:6399
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "некоректні дані у розділі [%zu] «%s»"
+
+#: src/readelf.c:4711
+#, c-format
+msgid ""
+"\n"
+" Length:        %6<PRIu64>\n"
+msgstr ""
+"\n"
+" Довжина:       %6<PRIu64>\n"
+
+#: src/readelf.c:4723
+#, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " версія DWARF:  %6<PRIuFAST16>\n"
+
+#: src/readelf.c:4727
+#, c-format
+msgid "unsupported aranges version"
+msgstr "непідтримувана версія aranges"
+
+#: src/readelf.c:4738
+#, c-format
+msgid " CU offset:     %6<PRIx64>\n"
+msgstr " зміщення CU:     %6<PRIx64>\n"
+
+#: src/readelf.c:4744
+#, c-format
+msgid " Address size:  %6<PRIu64>\n"
+msgstr " Розмір адреси:  %6<PRIu64>\n"
+
+#: src/readelf.c:4748
+#, c-format
+msgid "unsupported address size"
+msgstr "непідтримуваний розмір адреси"
+
+#: src/readelf.c:4753
+#, c-format
+msgid ""
+" Segment size:  %6<PRIu64>\n"
+"\n"
+msgstr ""
+" Розмір сегмента:  %6<PRIu64>\n"
+"\n"
+
+#: src/readelf.c:4757
+#, c-format
+msgid "unsupported segment size"
+msgstr "непідтримуваний розмір сегмента"
+
+#: src/readelf.c:4797
+#, c-format
+msgid "   %s..%s (%<PRIx64>)\n"
+msgstr "   %s..%s (%<PRIx64>)\n"
+
+#: src/readelf.c:4800
+#, c-format
+msgid "   %s..%s\n"
+msgstr "   %s..%s\n"
+
+#: src/readelf.c:4809
+#, c-format
+msgid "   %Zu padding bytes\n"
+msgstr "   %Zu байтів доповнення\n"
+
+#: src/readelf.c:4827
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "не вдалося отримати дані .debug_ranges: %s"
+
+#: src/readelf.c:4857 src/readelf.c:6921
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:4752 src/readelf.c:6530
+#: src/readelf.c:4879 src/readelf.c:6943
 #, c-format
 msgid " [%6tx]  base address %s\n"
 msgstr " [%6tx]  базова адреса %s\n"
 
-#: src/readelf.c:4758 src/readelf.c:6536
+#: src/readelf.c:4886 src/readelf.c:6950
 #, c-format
 msgid " [%6tx]  empty list\n"
 msgstr " [%6tx]  порожній список\n"
 
-#: src/readelf.c:4767
+#: src/readelf.c:4897
 #, c-format
 msgid " [%6tx]  %s..%s\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:4769
+#: src/readelf.c:4899
 #, c-format
 msgid "           %s..%s\n"
 msgstr "           %s..%s\n"
 
-#: src/readelf.c:5196 src/readelf.c:6838 src/readelf.c:6940 src/readelf.c:7098
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "не вдалося отримати дані %s: %s"
+#: src/readelf.c:5078
+#, fuzzy
+msgid "         <INVALID DATA>\n"
+msgstr "   <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:5203
+#: src/readelf.c:5387
+#, c-format
+msgid "cannot get ELF: %s"
+msgstr "не вдалося отримати ELF: %s"
+
+#: src/readelf.c:5404
 #, c-format
 msgid ""
 "\n"
@@ -5245,12 +5461,7 @@
 "\n"
 "Розділ відомостей щодо вікна викликів [%2zu] «%s» за зміщенням %#<PRIx64>:\n"
 
-#: src/readelf.c:5231 src/readelf.c:6017
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "некоректні дані у розділі [%zu] «%s»"
-
-#: src/readelf.c:5253
+#: src/readelf.c:5454
 #, c-format
 msgid ""
 "\n"
@@ -5259,50 +5470,50 @@
 "\n"
 " [%6tx] нульовий переривач\n"
 
-#: src/readelf.c:5338
+#: src/readelf.c:5547 src/readelf.c:5702
 #, c-format
 msgid "invalid augmentation length"
 msgstr "некоректна довжина збільшення"
 
-#: src/readelf.c:5350
+#: src/readelf.c:5562
 msgid "FDE address encoding: "
 msgstr "Кодування адреси FDE: "
 
-#: src/readelf.c:5356
+#: src/readelf.c:5568
 msgid "LSDA pointer encoding: "
 msgstr "Кодування вказівника LSDA: "
 
-#: src/readelf.c:5454
+#: src/readelf.c:5679
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (зміщення: %#<PRIx64>)"
 
-#: src/readelf.c:5461
+#: src/readelf.c:5686
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (зміщення від кінця: %#<PRIx64>)"
 
-#: src/readelf.c:5488
+#: src/readelf.c:5723
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sвказівник LSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:5539
+#: src/readelf.c:5778
 #, c-format
 msgid "cannot get attribute code: %s"
 msgstr "не вдалося отримати код атрибута: %s"
 
-#: src/readelf.c:5548
+#: src/readelf.c:5787
 #, c-format
 msgid "cannot get attribute form: %s"
 msgstr "не вдалося отримати форму атрибута: %s"
 
-#: src/readelf.c:5563
+#: src/readelf.c:5802
 #, c-format
 msgid "cannot get attribute value: %s"
 msgstr "не вдалося отримати значення атрибута: %s"
 
-#: src/readelf.c:5819
+#: src/readelf.c:6101
 #, c-format
 msgid ""
 "\n"
@@ -5313,7 +5524,7 @@
 "Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64>:\n"
 " [Зміщення]\n"
 
-#: src/readelf.c:5851
+#: src/readelf.c:6133
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5326,7 +5537,7 @@
 "Зміщення: %<PRIu8>\n"
 " Підпис типу: %#<PRIx64>, Зміщення типу: %#<PRIx64>\n"
 
-#: src/readelf.c:5860
+#: src/readelf.c:6142
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5337,47 +5548,49 @@
 " Версія: %<PRIu16>, Зміщення розділу скорочень: %<PRIu64>, Адреса: %<PRIu8>, "
 "Зміщення: %<PRIu8>\n"
 
-#: src/readelf.c:5886
+#: src/readelf.c:6167
 #, c-format
 msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
 msgstr "не вдалося отримати DIE за зміщенням %<PRIu64> у розділі «%s»: %s"
 
-#: src/readelf.c:5898
+#: src/readelf.c:6181
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "не вдалося отримати зміщення DIE: %s"
 
-#: src/readelf.c:5907
+#: src/readelf.c:6190
 #, c-format
 msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
 msgstr ""
 "не вдалося отримати мітку DIE за зміщенням %<PRIu64> у розділі «%s»: %s"
 
-#: src/readelf.c:5938
+#: src/readelf.c:6222
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "не вдалося визначити наступний DIE: %s\n"
 
-#: src/readelf.c:5946
+#: src/readelf.c:6230
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "не вдалося визначити наступний DIE: %s"
 
-#: src/readelf.c:5995
+#: src/readelf.c:6266
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+"\n"
+"Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
+"\n"
+
+#: src/readelf.c:6375
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "не вдалося отримати дані розділу лінійних даних: %s"
 
-#: src/readelf.c:6008
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-"\n"
-"Таблиця за зміщенням %Zu:\n"
-
-#: src/readelf.c:6063
+#: src/readelf.c:6445
 #, c-format
 msgid ""
 "\n"
@@ -5406,12 +5619,12 @@
 "\n"
 "Коди операцій:\n"
 
-#: src/readelf.c:6084
+#: src/readelf.c:6466
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr "некоректні дані зі зміщенням %tu у розділі [%zu] «%s»"
 
-#: src/readelf.c:6099
+#: src/readelf.c:6481
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
@@ -5419,7 +5632,7 @@
 msgstr[1] "  [%*<PRIuFAST8>]  %hhu аргументи\n"
 msgstr[2] "  [%*<PRIuFAST8>]  %hhu аргументів\n"
 
-#: src/readelf.c:6107
+#: src/readelf.c:6489
 msgid ""
 "\n"
 "Directory table:"
@@ -5427,7 +5640,7 @@
 "\n"
 "Таблиця каталогу:"
 
-#: src/readelf.c:6123
+#: src/readelf.c:6505
 msgid ""
 "\n"
 "File name table:\n"
@@ -5437,7 +5650,7 @@
 "Таблиця назв файлів:\n"
 " Запис Кат   Час       Розмір    Назва"
 
-#: src/readelf.c:6152
+#: src/readelf.c:6540
 msgid ""
 "\n"
 "Line number statements:"
@@ -5445,117 +5658,120 @@
 "\n"
 "Оператори номерів рядків:"
 
-#: src/readelf.c:6228
+#: src/readelf.c:6591
+#, fuzzy, c-format
+msgid "invalid maximum operations per instruction is zero"
+msgstr "некоректна мінімальна довжина розмірності рядка для порівняння"
+
+#: src/readelf.c:6627
 #, 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:6233
+#: src/readelf.c:6632
 #, c-format
 msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
 msgstr " спеціальний код операції %u: адреса+%u = %s, рядок%+d = %zu\n"
 
-#: src/readelf.c:6253
+#: src/readelf.c:6652
 #, c-format
 msgid " extended opcode %u: "
 msgstr " розширений код операції %u: "
 
-#: src/readelf.c:6258
-#, fuzzy
+#: src/readelf.c:6657
 msgid " end of sequence"
-msgstr "кінець послідовності"
+msgstr " кінець послідовності"
 
-#: src/readelf.c:6275
-#, fuzzy, c-format
+#: src/readelf.c:6676
+#, c-format
 msgid " set address to %s\n"
-msgstr "встановити адресу у значення %s\n"
+msgstr " встановити адресу у значення %s\n"
 
-#: src/readelf.c:6296
-#, fuzzy, c-format
+#: src/readelf.c:6703
+#, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
-"визначення нового файла: dir=%u, mtime=%<PRIu64>, довжина=%<PRIu64>, назва="
+" визначення нового файла: dir=%u, mtime=%<PRIu64>, довжина=%<PRIu64>, назва="
 "%s\n"
 
-#: src/readelf.c:6309
+#: src/readelf.c:6716
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " встановити розрізнення для %u\n"
 
-#: src/readelf.c:6314
-#, fuzzy
+#: src/readelf.c:6721
 msgid " unknown opcode"
-msgstr "невідомий код операції"
+msgstr " невідомий код операції"
 
-#: src/readelf.c:6326
+#: src/readelf.c:6733
 msgid " copy"
 msgstr " копія"
 
-#: src/readelf.c:6337
-#, fuzzy, c-format
+#: src/readelf.c:6744
+#, c-format
 msgid " advance address by %u to %s, op_index to %u\n"
-msgstr "збільшення адреси на %u до %s, індекс_оп до %u\n"
+msgstr " збільшення адреси на %u до %s, індекс_оп до %u\n"
 
-#: src/readelf.c:6341
-#, fuzzy, c-format
+#: src/readelf.c:6748
+#, c-format
 msgid " advance address by %u to %s\n"
-msgstr "збільшення адреси на %u до %s\n"
+msgstr " збільшення адреси на %u до %s\n"
 
-#: src/readelf.c:6352
+#: src/readelf.c:6759
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " просувати рядок на сталу %d до %<PRId64>\n"
 
-#: src/readelf.c:6360
+#: src/readelf.c:6767
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " встановити файл у %<PRIu64>\n"
 
-#: src/readelf.c:6370
+#: src/readelf.c:6777
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr " встановити значення стовпчика %<PRIu64>\n"
 
-#: src/readelf.c:6377
+#: src/readelf.c:6784
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " встановити «%s» у %<PRIuFAST8>\n"
 
-#: src/readelf.c:6383
+#: src/readelf.c:6790
 msgid " set basic block flag"
 msgstr " встановити прапорець базового блоку"
 
-#: src/readelf.c:6392
-#, fuzzy, c-format
+#: src/readelf.c:6803
+#, c-format
 msgid " advance address by constant %u to %s, op_index to %u\n"
-msgstr "збільшити адресу на сталу величину %u до %s,  індекс_оп до %u\n"
+msgstr " збільшити адресу на сталу величину %u до %s, індекс_оп до %u\n"
 
-#: src/readelf.c:6396
-#, fuzzy, c-format
+#: src/readelf.c:6807
+#, c-format
 msgid " advance address by constant %u to %s\n"
-msgstr "збільшити адресу на сталу величину %u до %s\n"
+msgstr " збільшити адресу на сталу величину %u до %s\n"
 
-#: src/readelf.c:6414
-#, fuzzy, c-format
+#: src/readelf.c:6825
+#, c-format
 msgid " advance address by fixed value %u to %s\n"
-msgstr "збільшити адресу на фіксовану величину %u до %s\n"
+msgstr " збільшити адресу на фіксовану величину %u до %s\n"
 
-#: src/readelf.c:6423
+#: src/readelf.c:6834
 msgid " set prologue end flag"
 msgstr " встановити прапорець кінця вступу"
 
-#: src/readelf.c:6428
+#: src/readelf.c:6839
 msgid " set epilogue begin flag"
 msgstr " встановити прапорець початку епілогу"
 
-#: src/readelf.c:6437
+#: src/readelf.c:6848
 #, c-format
 msgid " set isa to %u\n"
 msgstr " встановити isa у %u\n"
 
-#: src/readelf.c:6446
+#: src/readelf.c:6857
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -5563,42 +5779,102 @@
 msgstr[1] " невідомий код операції з %<PRIu8> параметрами:"
 msgstr[2] " невідомий код операції з %<PRIu8> параметрами:"
 
-#: src/readelf.c:6478
+#: src/readelf.c:6889
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr "не вдалося отримати вміст .debug_loc: %s"
 
-#: src/readelf.c:6548
+#: src/readelf.c:6964
 #, c-format
 msgid " [%6tx]  %s..%s"
 msgstr " [%6tx]  %s..%s"
 
-#: src/readelf.c:6550
+#: src/readelf.c:6966
 #, c-format
 msgid "           %s..%s"
 msgstr "           %s..%s"
 
-#: src/readelf.c:6557
+#: src/readelf.c:6973 src/readelf.c:7858
 msgid "   <INVALID DATA>\n"
 msgstr "   <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:6609
+#: src/readelf.c:7025 src/readelf.c:7186
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "не вдалося отримати дані розділу відомостей щодо макросів: %s"
 
-#: src/readelf.c:6688
+#: src/readelf.c:7104
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** незавершений рядок наприкінці розділу"
 
-#: src/readelf.c:6756
+#: src/readelf.c:7127
+#, fuzzy, c-format
+msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
+msgstr "%*s*** незавершений рядок наприкінці розділу"
+
+#: src/readelf.c:7227
+#, c-format
+msgid " Offset:             0x%<PRIx64>\n"
+msgstr " Зміщення:           0x%<PRIx64>\n"
+
+#: src/readelf.c:7239
+#, c-format
+msgid " Version:            %<PRIu16>\n"
+msgstr " Версія:             %<PRIu16>\n"
+
+#: src/readelf.c:7245 src/readelf.c:7968
+#, c-format
+msgid "  unknown version, cannot parse section\n"
+msgstr "  невідома версія, не вдалося обробити розділ\n"
+
+#: src/readelf.c:7252
+#, c-format
+msgid " Flag:               0x%<PRIx8>\n"
+msgstr " Прапорець:          0x%<PRIx8>\n"
+
+#: src/readelf.c:7255
+#, c-format
+msgid " Offset length:      %<PRIu8>\n"
+msgstr " Довжина зміщення:   %<PRIu8>\n"
+
+#: src/readelf.c:7263
+#, c-format
+msgid " .debug_line offset: 0x%<PRIx64>\n"
+msgstr " зміщення .debug_line: 0x%<PRIx64>\n"
+
+#: src/readelf.c:7276
+#, c-format
+msgid "  extension opcode table, %<PRIu8> items:\n"
+msgstr "  таблиця кодів операцій розширень, записів — %<PRIu8>:\n"
+
+#: src/readelf.c:7283
+#, c-format
+msgid "    [%<PRIx8>]"
+msgstr "    [%<PRIx8>]"
+
+#: src/readelf.c:7295
+#, c-format
+msgid " %<PRIu8> arguments:"
+msgstr " %<PRIu8> аргументів:"
+
+#: src/readelf.c:7323
+#, c-format
+msgid " no arguments."
+msgstr " немає аргументів."
+
+#: src/readelf.c:7560
+#, c-format
+msgid "vendor opcode not verified?"
+msgstr "код операції постачальника не перевірено?"
+
+#: src/readelf.c:7588
 #, 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:6796
+#: src/readelf.c:7629
 #, c-format
 msgid ""
 "\n"
@@ -5609,12 +5885,12 @@
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 " %*s  Рядок\n"
 
-#: src/readelf.c:6810
+#: src/readelf.c:7643
 #, c-format
 msgid " *** error while reading strings: %s\n"
 msgstr " *** помилка під час читання рядків: %s\n"
 
-#: src/readelf.c:6830
+#: src/readelf.c:7663
 #, c-format
 msgid ""
 "\n"
@@ -5623,7 +5899,7 @@
 "\n"
 "Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:6932
+#: src/readelf.c:7765
 #, c-format
 msgid ""
 "\n"
@@ -5632,22 +5908,22 @@
 "\n"
 "Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:6955
+#: src/readelf.c:7788
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " Кодування LPStart:   %#x "
 
-#: src/readelf.c:6967
+#: src/readelf.c:7800
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr " Кодування TType:     %#x "
 
-#: src/readelf.c:6981
+#: src/readelf.c:7815
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr " Кодування місця виклику:%#x "
 
-#: src/readelf.c:6994
+#: src/readelf.c:7828
 msgid ""
 "\n"
 " Call site table:"
@@ -5655,7 +5931,7 @@
 "\n"
 " Таблиця місця виклику:"
 
-#: src/readelf.c:7008
+#: src/readelf.c:7842
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5668,102 +5944,97 @@
 "        Місце застосування:   %#<PRIx64>\n"
 "        Дія:                  %u\n"
 
-#: src/readelf.c:7068
+#: src/readelf.c:7909
 #, c-format
 msgid "invalid TType encoding"
 msgstr "некоректне кодування TType"
 
-#: src/readelf.c:7089
-#, fuzzy, c-format
+#: src/readelf.c:7930
+#, c-format
 msgid ""
 "\n"
 "GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
 msgstr ""
 "\n"
-"Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64> містить %zu запис:\n"
+"Розділ GDB [%2zu] «%s» за зміщенням %#<PRIx64> містить %<PRId64> байтів:\n"
 
-#: src/readelf.c:7118
-#, fuzzy, c-format
-msgid " Version:         %<PRId32>\n"
-msgstr "      %s: %<PRId64>\n"
-
-#: src/readelf.c:7124
+#: src/readelf.c:7959
 #, c-format
-msgid "  unknown version, cannot parse section\n"
-msgstr ""
+msgid " Version:         %<PRId32>\n"
+msgstr " Версія:          %<PRId32>\n"
 
-#: src/readelf.c:7133
-#, fuzzy, c-format
+#: src/readelf.c:7977
+#, c-format
 msgid " CU offset:       %#<PRIx32>\n"
-msgstr " (зміщення: %#<PRIx64>)"
+msgstr " зміщення CU:     %#<PRIx32>\n"
 
-#: src/readelf.c:7140
-#, fuzzy, c-format
+#: src/readelf.c:7984
+#, c-format
 msgid " TU offset:       %#<PRIx32>\n"
-msgstr " (зміщення: %#<PRIx64>)"
+msgstr " зміщення TU:      %#<PRIx32>\n"
 
-#: src/readelf.c:7147
-#, fuzzy, c-format
+#: src/readelf.c:7991
+#, c-format
 msgid " address offset:  %#<PRIx32>\n"
-msgstr " (зміщення від кінця: %#<PRIx64>)"
+msgstr " зміщення адреси: %#<PRIx32>\n"
 
-#: src/readelf.c:7154
-#, fuzzy, c-format
+#: src/readelf.c:7998
+#, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
-msgstr " (зміщення: %#<PRIx64>)"
+msgstr " зміщення символу: %#<PRIx32>\n"
 
-#: src/readelf.c:7161
-#, fuzzy, c-format
+#: src/readelf.c:8005
+#, c-format
 msgid " constant offset: %#<PRIx32>\n"
-msgstr " (зміщення від кінця: %#<PRIx64>)"
+msgstr " стале зміщення:  %#<PRIx32>\n"
 
-#: src/readelf.c:7168
-#, fuzzy, c-format
+#: src/readelf.c:8012
+#, c-format
 msgid ""
 "\n"
 " CU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 "\n"
-"Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64> містить %zu запис:\n"
+" Список CU зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:7190
-#, fuzzy, c-format
+#: src/readelf.c:8034
+#, c-format
 msgid ""
 "\n"
 " TU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 "\n"
-"Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64> містить %zu запис:\n"
+" Список TU зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:7216
-#, fuzzy, c-format
+#: src/readelf.c:8060
+#, c-format
 msgid ""
 "\n"
 " Address list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 "\n"
-"Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64> містить %zu запис:\n"
+" Список адрес зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:7243
-#, fuzzy, c-format
+#: src/readelf.c:8089
+#, c-format
 msgid ""
 "\n"
 " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
 msgstr ""
 "\n"
-"Некоректна таблиця символів за зміщенням %#0<PRIx64>\n"
+" Таблиця символів за зміщенням %#<PRIx32> містить %zu позицій:\n"
 
-#: src/readelf.c:7296
+#: src/readelf.c:8176
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "не вдалося отримати дескриптор контексту зневаджування: %s"
 
-#: src/readelf.c:7445 src/readelf.c:8046
+#: src/readelf.c:8336 src/readelf.c:8942 src/readelf.c:9053 src/readelf.c:9111
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "не вдалося перетворити дані запису ядра: %s"
 
-#: src/readelf.c:7786
+#: src/readelf.c:8683
 #, c-format
 msgid ""
 "\n"
@@ -5772,21 +6043,21 @@
 "\n"
 "%*s... <повторюється %u разів> ..."
 
-#: src/readelf.c:8145
+#: src/readelf.c:9190
 msgid "  Owner          Data size  Type\n"
 msgstr "  Власник        Розм. даних Тип\n"
 
-#: src/readelf.c:8163
+#: src/readelf.c:9208
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:8197
+#: src/readelf.c:9258
 #, c-format
 msgid "cannot get content of note section: %s"
 msgstr "не вдалося отримати вміст розділу записів: %s"
 
-#: src/readelf.c:8224
+#: src/readelf.c:9285
 #, c-format
 msgid ""
 "\n"
@@ -5796,7 +6067,7 @@
 "Розділ записів (note) [%2zu] «%s» з %<PRIu64> байтів за зміщенням "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:8247
+#: src/readelf.c:9308
 #, c-format
 msgid ""
 "\n"
@@ -5805,7 +6076,7 @@
 "\n"
 "Сегмент записів з %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:8293
+#: src/readelf.c:9354
 #, c-format
 msgid ""
 "\n"
@@ -5814,12 +6085,12 @@
 "\n"
 "У розділі [%Zu] «%s» не міститься даних для створення дампу.\n"
 
-#: src/readelf.c:8299 src/readelf.c:8322
+#: src/readelf.c:9360 src/readelf.c:9383
 #, c-format
 msgid "cannot get data for section [%Zu] '%s': %s"
 msgstr "не вдалося отримати дані для розділу [%Zu] «%s»: %s"
 
-#: src/readelf.c:8303
+#: src/readelf.c:9364
 #, c-format
 msgid ""
 "\n"
@@ -5828,7 +6099,7 @@
 "\n"
 "Шіст. дамп розділу [%Zu] «%s», %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:8316
+#: src/readelf.c:9377
 #, c-format
 msgid ""
 "\n"
@@ -5837,7 +6108,7 @@
 "\n"
 "У розділі [%Zu] «%s» не міститься рядків для створення дампу.\n"
 
-#: src/readelf.c:8326
+#: src/readelf.c:9387
 #, c-format
 msgid ""
 "\n"
@@ -5846,7 +6117,7 @@
 "\n"
 "Розділ рядків [%Zu] «%s» містить %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:8374
+#: src/readelf.c:9435
 #, c-format
 msgid ""
 "\n"
@@ -5855,7 +6126,7 @@
 "\n"
 "розділу [%lu] не існує"
 
-#: src/readelf.c:8403
+#: src/readelf.c:9464
 #, c-format
 msgid ""
 "\n"
@@ -5864,12 +6135,12 @@
 "\n"
 "розділу «%s» не існує"
 
-#: src/readelf.c:8460
+#: src/readelf.c:9521
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "не вдалося отримати покажчик символів архіву «%s»: %s"
 
-#: src/readelf.c:8463
+#: src/readelf.c:9524
 #, c-format
 msgid ""
 "\n"
@@ -5878,7 +6149,7 @@
 "\n"
 "У архіві «%s» немає покажчика символів\n"
 
-#: src/readelf.c:8467
+#: src/readelf.c:9528
 #, c-format
 msgid ""
 "\n"
@@ -5887,17 +6158,17 @@
 "\n"
 "Покажчик архіву «%s» містить %Zu записів:\n"
 
-#: src/readelf.c:8485
+#: src/readelf.c:9546
 #, c-format
 msgid "cannot extract member at offset %Zu in '%s': %s"
 msgstr "не вдалося видобути елемент за зміщенням %Zu у «%s»: %s"
 
-#: src/readelf.c:8490
+#: src/readelf.c:9551
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Елемент архіву «%s» містить:\n"
 
-#: src/size.c:68
+#: src/size.c:60
 msgid ""
 "Use the output format FORMAT.  FORMAT can be `bsd' or `sysv'.  The default "
 "is `bsd'"
@@ -5905,83 +6176,83 @@
 "Використовувати формат виводу ФОРМАТ. ФОРМАТом може бути «bsd» або «sysv». "
 "Типовим є значення «bsd»"
 
-#: src/size.c:70
+#: src/size.c:62
 msgid "Same as `--format=sysv'"
 msgstr "Те саме, що і «--format=sysv»"
 
-#: src/size.c:71
+#: src/size.c:63
 msgid "Same as `--format=bsd'"
 msgstr "Те саме, що і «--format=bsd»"
 
-#: src/size.c:74
+#: src/size.c:66
 msgid "Same as `--radix=10'"
 msgstr "Те саме, що і «--radix=10»"
 
-#: src/size.c:75
+#: src/size.c:67
 msgid "Same as `--radix=8'"
 msgstr "Те саме, що і «--radix=8»"
 
-#: src/size.c:76
+#: src/size.c:68
 msgid "Same as `--radix=16'"
 msgstr "Те саме, що і «--radix=16»"
 
-#: src/size.c:78
+#: src/size.c:70
 msgid "Similar to `--format=sysv' output but in one line"
 msgstr "Вивід даних у форматі, подібному до «--format=sysv», але у один рядок"
 
-#: src/size.c:82
+#: src/size.c:74
 msgid "Print size and permission flags for loadable segments"
 msgstr ""
 "Вивести розмір і прапорці прав доступу для придатних до завантаження "
 "сегментів"
 
-#: src/size.c:83
+#: src/size.c:75
 msgid "Display the total sizes (bsd only)"
 msgstr "Показувати загальні розміри (лише bsd)"
 
-#: src/size.c:88
+#: src/size.c:80
 msgid "List section sizes of FILEs (a.out by default)."
 msgstr "Показати розміри розділів ФАЙЛів (типово a.out)."
 
-#: src/size.c:269
+#: src/size.c:261
 #, c-format
 msgid "Invalid format: %s"
 msgstr "Некоректний формат: %s"
 
-#: src/size.c:280
+#: src/size.c:272
 #, c-format
 msgid "Invalid radix: %s"
 msgstr "Некоректна основа числення: %s"
 
-#: src/size.c:339
+#: src/size.c:331
 #, c-format
 msgid "%s: file format not recognized"
 msgstr "%s: не вдалося розпізнати формат файла"
 
-#: src/size.c:446 src/size.c:589
+#: src/size.c:437 src/size.c:570
 #, c-format
 msgid " (ex %s)"
 msgstr " (прикл. %s)"
 
-#: src/size.c:614
+#: src/size.c:595
 msgid "(TOTALS)\n"
 msgstr "(ЗАГАЛОМ)\n"
 
-#: src/strings.c:70
+#: src/strings.c:62
 msgid "Output Selection:"
 msgstr "Вибір виводу:"
 
-#: src/strings.c:71
+#: src/strings.c:63
 msgid "Scan entire file, not only loaded sections"
 msgstr "Шукати у всьому файлі, а не лише у завантажених розділах"
 
-#: src/strings.c:73
+#: src/strings.c:65
 msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
 msgstr ""
 "Буде виведено лише послідовності з не менше, ніж MIN-LEN символів, що "
 "завершуються на NUL"
 
-#: src/strings.c:74
+#: src/strings.c:66
 msgid ""
 "Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
 "{B,L} = 32-bit"
@@ -5989,463 +6260,480 @@
 "Визначення розмірності та порядку бітів символів: s = 7-бітові, S = 8-"
 "бітові, {b,l} = 16-бітові, {B,L} = 32-бітові"
 
-#: src/strings.c:78
+#: src/strings.c:70
 msgid "Print name of the file before each string."
 msgstr "Виводити назву файла перед кожним рядком."
 
-#: src/strings.c:80
+#: src/strings.c:72
 msgid "Print location of the string in base 8, 10, or 16 respectively."
 msgstr "Виводити адресу рядка за основами 8, 10 та 16, відповідно."
 
-#: src/strings.c:81
+#: src/strings.c:73
 msgid "Alias for --radix=o"
 msgstr "Замінник --radix=o"
 
-#: src/strings.c:88
+#: src/strings.c:80
 msgid "Print the strings of printable characters in files."
 msgstr "Вивести рядки файлів з символів, придатних для друку."
 
-#: src/strings.c:268 src/strings.c:303
+#: src/strings.c:267 src/strings.c:302
 #, c-format
 msgid "invalid value '%s' for %s parameter"
 msgstr "некоректне значення «%s» параметра %s"
 
-#: src/strings.c:314
+#: src/strings.c:313
 #, c-format
 msgid "invalid minimum length of matched string size"
 msgstr "некоректна мінімальна довжина розмірності рядка для порівняння"
 
-#: src/strings.c:599
+#: src/strings.c:596
 #, c-format
 msgid "lseek64 failed"
 msgstr "помилка lseek64"
 
-#: src/strings.c:616 src/strings.c:680
+#: src/strings.c:613 src/strings.c:677
 #, c-format
 msgid "re-mmap failed"
 msgstr "помилка повторного використання mmap"
 
-#: src/strings.c:653
+#: src/strings.c:650
 #, c-format
 msgid "mprotect failed"
 msgstr "помилка mprotect"
 
-#: src/strip.c:77
+#: src/strip.c:69
 msgid "Place stripped output into FILE"
 msgstr "Вивести дані після вилучення до ФАЙЛа"
 
-#: src/strip.c:78
+#: src/strip.c:70
 msgid "Extract the removed sections into FILE"
 msgstr "Видобути вилучені розділи до ФАЙЛа"
 
-#: src/strip.c:79
+#: src/strip.c:71
 msgid "Embed name FILE instead of -f argument"
 msgstr "Вбудувати назву ФАЙЛа замість аргументу -f"
 
-#: src/strip.c:83
+#: src/strip.c:75
 msgid "Remove all debugging symbols"
 msgstr "Вилучити всі символи зневаджування"
 
-#: src/strip.c:87
+#: src/strip.c:79
 msgid "Remove section headers (not recommended)"
 msgstr "Вилучити заголовки розділів (не рекомендовано)"
 
-#: src/strip.c:89
+#: src/strip.c:81
 msgid "Copy modified/access timestamps to the output"
 msgstr "Скопіювати часові позначки зміни/доступу до виведених даних"
 
-#: src/strip.c:91
+#: src/strip.c:83
 msgid ""
 "Resolve all trivial relocations between debug sections if the removed "
 "sections are placed in a debug file (only relevant for ET_REL files, "
 "operation is not reversable, needs -f)"
 msgstr ""
+"Розв’язати всі очевидні пересування між діагностичними розділами, якщо "
+"вилучені розділи було розташовано у діагностичному файлі (стосується лише "
+"файлів ET_REL, скасувати дію неможливо, потребує параметра -f)"
 
-#: src/strip.c:93
+#: src/strip.c:85
 msgid "Remove .comment section"
 msgstr "Вилучити розділ .comment"
 
-#: src/strip.c:96
+#: src/strip.c:88
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr ""
 "Знехтувати декількома правилами для обробки трохи пошкоджених файлів ELF"
 
-#: src/strip.c:101
+#: src/strip.c:93
 msgid "Discard symbols from object files."
 msgstr "Відкинути символи з об’єктних файлів"
 
-#: src/strip.c:189
+#: src/strip.c:181
 #, c-format
 msgid "--reloc-debug-sections used without -f"
-msgstr ""
+msgstr "--reloc-debug-sections використано без -f"
 
-#: src/strip.c:203
+#: src/strip.c:195
 #, c-format
 msgid "Only one input file allowed together with '-o' and '-f'"
 msgstr ""
 "Разом з «-o» або «-f» можна використовувати лише один файл вхідних даних"
 
-#: src/strip.c:239
+#: src/strip.c:231
 #, c-format
 msgid "-f option specified twice"
 msgstr "параметр -f вказано двічі"
 
-#: src/strip.c:248
+#: src/strip.c:240
 #, c-format
 msgid "-F option specified twice"
 msgstr "параметр -F вказано двічі"
 
-#: src/strip.c:257 src/unstrip.c:125
+#: src/strip.c:249 src/unstrip.c:121
 #, c-format
 msgid "-o option specified twice"
 msgstr "параметр -o вказано двічі"
 
-#: src/strip.c:281
+#: src/strip.c:273
 #, c-format
 msgid "-R option supports only .comment section"
 msgstr "Для параметра -R передбачено підтримку лише розділу .comment"
 
-#: src/strip.c:323 src/strip.c:347
+#: src/strip.c:315 src/strip.c:339
 #, c-format
 msgid "cannot stat input file '%s'"
 msgstr "не вдалося отримати дані з вхідного файла «%s» за допомогою stat"
 
-#: src/strip.c:337
+#: src/strip.c:329
 #, c-format
 msgid "while opening '%s'"
 msgstr "під час спроби відкриття «%s»"
 
-#: src/strip.c:375
+#: src/strip.c:367
 #, c-format
 msgid "%s: cannot use -o or -f when stripping archive"
 msgstr ""
 "%s: не можна використовувати -o або -f під час вилучення додаткового вмісту "
 "архіву"
 
-#: src/strip.c:475
+#: src/strip.c:468
 #, c-format
 msgid "cannot open EBL backend"
 msgstr "не вдалося відкрити канал сервера EBL"
 
-#: src/strip.c:525 src/strip.c:549
+#: src/strip.c:508
+#, fuzzy, c-format
+msgid "cannot get number of phdrs"
+msgstr "не вдалося визначити кількість заголовків програми: %s"
+
+#: src/strip.c:523 src/strip.c:547
 #, c-format
 msgid "cannot create new file '%s': %s"
 msgstr "не вдалося створити файл «%s»: %s"
 
-#: src/strip.c:609
+#: src/strip.c:613
 #, c-format
 msgid "illformed file '%s'"
 msgstr "помилкове форматування файла «%s»"
 
-#: src/strip.c:913 src/strip.c:1002
+#: src/strip.c:935 src/strip.c:1024
 #, c-format
 msgid "while generating output file: %s"
 msgstr "під час спроби створення файла з виведеними даними: %s"
 
-#: src/strip.c:975 src/strip.c:1937
+#: src/strip.c:997 src/strip.c:1962
 #, c-format
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: помилка під час створення заголовка ELF: %s"
 
-#: src/strip.c:989
+#: src/strip.c:1011
 #, c-format
 msgid "while preparing output for '%s'"
 msgstr "під час приготування виведених даних для «%s»"
 
-#: src/strip.c:1040 src/strip.c:1096
+#: src/strip.c:1062 src/strip.c:1119
 #, c-format
 msgid "while create section header section: %s"
 msgstr "під час створення розділу заголовка розділу: %s"
 
-#: src/strip.c:1046
+#: src/strip.c:1068
 #, c-format
 msgid "cannot allocate section data: %s"
 msgstr "не вдалося розмістити дані розділу: %s"
 
-#: src/strip.c:1105
+#: src/strip.c:1128
 #, c-format
 msgid "while create section header string table: %s"
 msgstr "під час створення таблиці рядків заголовка розділу: %s"
 
-#: src/strip.c:1732
-#, fuzzy, c-format
+#: src/strip.c:1757
+#, c-format
 msgid "bad relocation"
-msgstr "Показувати переміщення"
+msgstr "помилкове пересування"
 
-#: src/strip.c:1849 src/strip.c:1959
+#: src/strip.c:1874 src/strip.c:1984
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "під час запису «%s»: %s"
 
-#: src/strip.c:1860
+#: src/strip.c:1885
 #, c-format
 msgid "while creating '%s'"
 msgstr "під час спроби створення «%s»"
 
-#: src/strip.c:1882
+#: src/strip.c:1907
 #, c-format
 msgid "while computing checksum for debug information"
 msgstr "під час обчислення контрольної суми для діагностичних даних"
 
-#: src/strip.c:1945
+#: src/strip.c:1970
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: помилка під час читання файла: %s"
 
-#: src/strip.c:1984 src/strip.c:2004
+#: src/strip.c:2009 src/strip.c:2029
 #, c-format
 msgid "while writing '%s'"
 msgstr "під час спроби запису «%s»"
 
-#: src/strip.c:2038 src/strip.c:2045
+#: src/strip.c:2066 src/strip.c:2073
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "помилка під час завершення «%s»: %s"
 
-#: src/strip.c:2068 src/strip.c:2125
+#: src/strip.c:2096 src/strip.c:2153
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "не вдалося встановити права доступу та дату зміни «%s»"
 
-#: src/unstrip.c:78
+#: src/unstrip.c:70
 msgid "Match MODULE against file names, not module names"
 msgstr ""
 "Встановити відповідність МОДУЛЯ назвам файлів, а не назвам модулів names"
 
-#: src/unstrip.c:79
+#: src/unstrip.c:71
 msgid "Silently skip unfindable files"
 msgstr "Пропустити незнайдені файли без додаткових повідомлень"
 
-#: src/unstrip.c:82
+#: src/unstrip.c:74
 msgid "Place output into FILE"
 msgstr "Вивести дані у ФАЙЛ"
 
-#: src/unstrip.c:84
+#: src/unstrip.c:76
 msgid "Create multiple output files under DIRECTORY"
 msgstr "Створити декілька файлів виведених даних у КАТАЛОЗІ"
 
-#: src/unstrip.c:85
+#: src/unstrip.c:77
 msgid "Use module rather than file names"
 msgstr "Використовувати назви модулів, а не файлів"
 
-#: src/unstrip.c:87
+#: src/unstrip.c:79
 msgid "Create output for modules that have no separate debug information"
 msgstr ""
 "Вивести дані для модулів, які не містять окремих діагностичних відомостей"
 
-#: src/unstrip.c:90
+#: src/unstrip.c:82
 msgid "Apply relocations to section contents in ET_REL files"
-msgstr "Застосувати переміщення до вмісту розділів у файлах ET_REL"
+msgstr "Застосувати пересування до вмісту розділів у файлах ET_REL"
 
-#: src/unstrip.c:92
+#: src/unstrip.c:84
 msgid "Only list module and file names, build IDs"
 msgstr "Вивести лише список назв модулів, файлів, побудувати ідентифікатори"
 
-#: src/unstrip.c:134
+#: 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:166
+#: src/unstrip.c:165
 #, c-format
 msgid "only one of -o or -d allowed"
 msgstr "можна використовувати лише один з параметрів: -o або -d"
 
-#: src/unstrip.c:175
+#: 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:190
+#: src/unstrip.c:189
 #, c-format
 msgid "output directory '%s'"
 msgstr "каталог виведення даних «%s»"
 
-#: src/unstrip.c:199
+#: src/unstrip.c:198
 #, c-format
 msgid "exactly two file arguments are required"
 msgstr "як аргументи має бути вказано точно два файла"
 
-#: src/unstrip.c:205
+#: 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:218
+#: src/unstrip.c:217
 #, c-format
 msgid "-o or -d is required when using implicit files"
 msgstr ""
 "якщо використовуються файли, задані неявно, слід додавати параметр -o або -d"
 
-#: src/unstrip.c:254
+#: src/unstrip.c:253
 #, c-format
 msgid "cannot create ELF header: %s"
 msgstr "не вдалося створити заголовок ELF: %s"
 
-#: src/unstrip.c:259
+#: src/unstrip.c:258
 #, c-format
 msgid "cannot copy ELF header: %s"
 msgstr "не вдалося скопіювати заголовок ELF: %s"
 
-#: src/unstrip.c:264 src/unstrip.c:1828
+#: src/unstrip.c:262 src/unstrip.c:1832 src/unstrip.c:1876
+#, fuzzy, c-format
+msgid "cannot get number of program headers: %s"
+msgstr "не вдалося визначити кількість заголовків програми: %s"
+
+#: src/unstrip.c:267 src/unstrip.c:1836
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "не вдалося створити заголовки програми: %s"
 
-#: src/unstrip.c:270
+#: src/unstrip.c:273
 #, c-format
 msgid "cannot copy program header: %s"
 msgstr "не вдалося скопіювати заголовок програми: %s"
 
-#: src/unstrip.c:280
+#: src/unstrip.c:283
 #, c-format
 msgid "cannot copy section header: %s"
 msgstr "не вдалося скопіювати заголовок розділу: %s"
 
-#: src/unstrip.c:283 src/unstrip.c:1509
+#: src/unstrip.c:286 src/unstrip.c:1513
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "не вдалося отримати дані розділу: %s"
 
-#: src/unstrip.c:285 src/unstrip.c:1511
+#: src/unstrip.c:288 src/unstrip.c:1515
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "не вдалося скопіювати дані розділу: %s"
 
-#: src/unstrip.c:309
+#: src/unstrip.c:312
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "не вдалося створити каталог «%s»"
 
-#: src/unstrip.c:349 src/unstrip.c:766 src/unstrip.c:1543
+#: src/unstrip.c:352 src/unstrip.c:769 src/unstrip.c:1547
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "не вдалося отримати запис таблиці символів: %s"
 
-#: src/unstrip.c:365 src/unstrip.c:583 src/unstrip.c:604 src/unstrip.c:616
-#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
+#: src/unstrip.c:368 src/unstrip.c:586 src/unstrip.c:607 src/unstrip.c:619
+#: src/unstrip.c:1568 src/unstrip.c:1698 src/unstrip.c:1722
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "не вдалося оновити таблицю символів: %s"
 
-#: src/unstrip.c:375
+#: src/unstrip.c:378
 #, c-format
 msgid "cannot update section header: %s"
 msgstr "не вдалося оновити заголовок розділу: %s"
 
-#: src/unstrip.c:414 src/unstrip.c:425
+#: src/unstrip.c:417 src/unstrip.c:428
 #, c-format
 msgid "cannot update relocation: %s"
-msgstr "не вдалося оновити переміщення: %s"
+msgstr "не вдалося оновити пересування: %s"
 
-#: src/unstrip.c:512
+#: src/unstrip.c:515
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr "не вдалося отримати версію символу: %s"
 
-#: src/unstrip.c:524
+#: src/unstrip.c:527
 #, c-format
 msgid "unexpected section type in [%Zu] with sh_link to symtab"
 msgstr "неочікуваний тип розділу у [%Zu] з посиланням sh_link на symtab"
 
-#: src/unstrip.c:772
+#: src/unstrip.c:775
 #, c-format
 msgid "invalid string offset in symbol [%Zu]"
 msgstr "некоректне зміщення рядка у символі [%Zu]"
 
-#: src/unstrip.c:914 src/unstrip.c:1254
+#: src/unstrip.c:917 src/unstrip.c:1258
 #, c-format
 msgid "cannot read section [%Zu] name: %s"
 msgstr "не вдалося прочитати назву розділу [%Zu]: %s"
 
-#: src/unstrip.c:955 src/unstrip.c:974 src/unstrip.c:1007
+#: src/unstrip.c:958 src/unstrip.c:977 src/unstrip.c:1010
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr "не вдалося прочитати розділ «.gnu.prelink_undo»: %s"
 
-#: src/unstrip.c:995
+#: src/unstrip.c:998
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr "некоректний вміст розділу «%s»"
 
-#: src/unstrip.c:1050 src/unstrip.c:1374
+#: src/unstrip.c:1053 src/unstrip.c:1378
 #, c-format
 msgid "cannot find matching section for [%Zu] '%s'"
 msgstr "не вдалося знайти відповідний розділ для [%Zu] «%s»"
 
-#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
+#: src/unstrip.c:1178 src/unstrip.c:1193 src/unstrip.c:1459
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr "не вдалося додати назву розділу до таблиці рядків: %s"
 
-#: src/unstrip.c:1198
+#: src/unstrip.c:1202
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr "не вдалося оновити дані заголовка розділу у таблиці рядків: %s"
 
-#: src/unstrip.c:1225 src/unstrip.c:1229
+#: src/unstrip.c:1229 src/unstrip.c:1233
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr ""
 "не вдалося визначити індекс розділу заголовка розділу у таблиці рядків: %s"
 
-#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
+#: src/unstrip.c:1237 src/unstrip.c:1241 src/unstrip.c:1474
 #, c-format
 msgid "cannot get section count: %s"
 msgstr "не вдалося отримати кількість розділів: %s"
 
-#: src/unstrip.c:1240
+#: src/unstrip.c:1244
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 "у очищеному файлі більше розділів ніж у файлі з даними для зневаджування — "
 "помилковий порядок параметрів?"
 
-#: src/unstrip.c:1299 src/unstrip.c:1389
+#: src/unstrip.c:1303 src/unstrip.c:1393
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr "не вдалося прочитати таблицю рядків заголовка розділу: %s"
 
-#: src/unstrip.c:1449
+#: src/unstrip.c:1453
 #, c-format
 msgid "cannot add new section: %s"
 msgstr "не вдалося додати новий розділ: %s"
 
-#: src/unstrip.c:1551
+#: src/unstrip.c:1555
 #, c-format
 msgid "symbol [%Zu] has invalid section index"
 msgstr "символ [%Zu] має некоректний індекс розділу"
 
-#: src/unstrip.c:1789
+#: src/unstrip.c:1793
 #, c-format
 msgid "cannot read section data: %s"
 msgstr "не вдалося прочитати дані розділу: %s"
 
-#: src/unstrip.c:1810
+#: src/unstrip.c:1814
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr "не вдалося отримати заголовок ELF: %s"
 
-#: src/unstrip.c:1838
+#: src/unstrip.c:1846
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "не вдалося оновити заголовок програми: %s"
 
-#: src/unstrip.c:1843 src/unstrip.c:1922
+#: src/unstrip.c:1851 src/unstrip.c:1934
 #, c-format
 msgid "cannot write output file: %s"
 msgstr "не вдалося записати файл виведених даних: %s"
 
-#: src/unstrip.c:1891
+#: src/unstrip.c:1903
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 "Дані DWARF не скориговано відповідно до відхилення перед компонуванням; "
 "спробуйте виправити це командою prelink -u"
 
-#: src/unstrip.c:1894
+#: src/unstrip.c:1906
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6453,57 +6741,76 @@
 "Дані DWARF у «%s» не скориговано відповідно до відхилення перед "
 "компонуванням; спробуйте виправити це командою prelink -u"
 
-#: src/unstrip.c:1913 src/unstrip.c:1953 src/unstrip.c:1965 src/unstrip.c:2045
+#: src/unstrip.c:1925 src/unstrip.c:1976 src/unstrip.c:1988 src/unstrip.c:2074
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr "не вдалося створити дескриптор ELF: %s"
 
-#: src/unstrip.c:1971
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "«%s» і «%s» не відповідають одне одному"
+#: src/unstrip.c:1967
+msgid "WARNING: "
+msgstr ""
 
-#: src/unstrip.c:2002
+#: src/unstrip.c:1969
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1992
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1995
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1998
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:2001
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2031
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr "не вдалося знайти очищений файл для модуля «%s»: %s"
 
-#: src/unstrip.c:2006
+#: src/unstrip.c:2035
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr "не вдалося відкрити очищений файл «%s» для модуля «%s»: %s"
 
-#: src/unstrip.c:2021
+#: src/unstrip.c:2050
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr "не вдалося знайти файл діагностичних даних для модуля «%s»: %s"
 
-#: src/unstrip.c:2025
+#: src/unstrip.c:2054
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr "не вдалося відкрити файл діагностичних даних «%s» для модуля «%s»: %s"
 
-#: src/unstrip.c:2038
+#: src/unstrip.c:2067
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr "у модулі «%s» файл «%s» не очищено strip"
 
-#: src/unstrip.c:2069
+#: src/unstrip.c:2098
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr "не вдалося кешувати адреси розділів для модуля «%s»: %s"
 
-#: src/unstrip.c:2202
+#: src/unstrip.c:2231
 #, c-format
 msgid "no matching modules found"
 msgstr "відповідних модулів не виявлено"
 
-#: src/unstrip.c:2211
+#: src/unstrip.c:2240
 #, c-format
 msgid "matched more than one module"
 msgstr "встановлено відповідність декількох модулів"
 
-#: src/unstrip.c:2258
+#: src/unstrip.c:2287
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
@@ -6511,7 +6818,7 @@
 "ОЧИЩЕНИЙ-ФАЙЛ ФАЙЛ-DEBUG\n"
 "[МОДУЛЬ...]"
 
-#: src/unstrip.c:2259
+#: src/unstrip.c:2288
 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"
@@ -6567,6 +6874,32 @@
 "окремого файла діагностичних даних або «-», якщо файла діагностичних даних "
 "не вдалося знайти, і «.», якщо ФАЙЛ сам містить діагностичні дані."
 
+#, 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"
+
+#~ msgid "unknown user tag %hx"
+#~ msgstr "невідомий теґ користувача %hx"
+
+#~ msgid "unknown attribute %hx"
+#~ msgstr "невідомий атрибут %hx"
+
+#~ msgid "unknown user attribute %hx"
+#~ msgstr "невідомий атрибут користувача %hx"
+
+#~ msgid "unknown form %#<PRIx64>"
+#~ msgstr "невідома форма %#<PRIx64>"
+
 #~ msgid ""
 #~ "\n"
 #~ "\n"
diff --git a/src/src/ChangeLog b/src/src/ChangeLog
index ff19b48..0ae863e 100644
--- a/src/src/ChangeLog
+++ b/src/src/ChangeLog
@@ -1,3 +1,884 @@
+2014-12-18  Ulrich Drepper  <drepper@gmail.com>
+
+	* Makefile.am: Suppress output of textrel_check command.
+
+2014-12-17  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_cfa_program): Add bounds check before each op that
+	takes at least one argument.
+
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_decoded_line_section): Print dwarf_errmsg if
+	dwarf_onesrcline or dwarf_linesrc fails.
+
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_line_section): Correct overflow check for
+	unit_length.
+	(print_debug_aranges_section): Correct overflow check for length.
+
+2014-12-15  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (notice_listptr): Return false if offset doesn't fit
+	in 61-bits.
+	(attr_callback): Warn if loclist or rangelist offset doesn't fit.
+
+2014-12-15  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_ops): Don't assert when addr_size or ref_size
+	is not 4 or 8, just report invalid data.
+
+2014-12-15  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_gdb_index_section): Add more bounds checks.
+
+2014-12-15  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_line_section): Check there is enough room
+	for DW_LNE_set_address argument. Make sure there is enough room
+	for the the initial unit_length.
+
+2014-12-14  Mark Wielaard  <mjw@redhat.com>
+
+	* elflint.c (check_attributes): Call get_uleb128 with end pointer.
+	* readelf.c (print_attributes): Likewise.
+	(print_ops): Likewise and also for get_sleb128.
+	(print_cfa_program): Likewise and add more readp bounds checks.
+	(read_encoded): Likewise.
+	(print_debug_frame_section): Likewise.
+	(print_debug_line_section): Likewise.
+	(print_debug_macinfo_section): Likewise.
+	(print_debug_macro_section): Likewise.
+	(print_debug_exception_table): Likewise.
+
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+	* elfcmp.c (compare_Elf32_Word): Make sure (unsigned) Elf32_Word
+	difference doesn't wrap around before returning as int.
+
+2014-12-11  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_exception_table): Check TType base offset
+	and Action table are sane.
+
+2014-12-11  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_frame_section): Check number of augmentation
+	chars to print.
+
+2014-12-09  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (handle_file_note): Check count fits data section and
+	doesn't overflow fptr.
+
+2014-12-08  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_exception_table): Report invalid data if
+	action table doesn't immediately follow call site table.
+
+2014-12-10  Josh Stone  <jistone@redhat.com>
+
+	* addr2line.c (get_diename): New, get linkage_name or name.
+	* addr2line.c (print_dwarf_function): Use get_diename.
+	* addr2line.c (handle_address): Likewise.
+	* addr2line.c (print_diesym): Removed.
+
+2014-12-10  Josh Stone  <jistone@redhat.com>
+
+	* addr2line.c (handle_address): Find the proper inline parents.
+
+2014-12-07  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_line_section): max_ops_per_instr cannot
+	be zero.
+
+2014-12-07  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_ops): Handle zero ref_size for DW_OP_call_ref
+	and DW_OP_GNU_implicit_pointer.
+
+2014-12-04  Mark Wielaard  <mjw@redhat.com>
+
+	* objdump.c (show_relocs_x): Make sure destshdr exists.
+	(show_relocs_rel): Don't rely on shdr->sh_entsize, use gelf_fsize.
+	(show_relocs_rela): Likewise.
+	(show_relocs): Make sure destshdr, symshdr and symdata exists.
+
+2014-11-30  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (handle_sysv_hash64): Fix overflow check.
+
+2014-11-28  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (handle_relocs_rel): Don't reuse destshdr to store
+	section header of a relocation against a STT_SECTION symbol. Use
+	a new local variable secshdr.
+	(handle_relocs_rela): Likewise.
+
+2014-11-26  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_aranges_section): Cast Dwarf_Word length
+	to ptrdiff_t for comparison.
+
+2014-11-24  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_line_section): Check line_range is not zero
+	before usage.
+
+2014-11-23  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_aranges_section): Check length to catch
+	nexthdr overflow.
+
+2014-11-21  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_attributes): Guard against empty section.
+	Document attribute format. Break when vendor name isn't terminated.
+	Add overflow check for subsection_len. Handle both gnu and non-gnu
+	attribute tags.
+
+2014-11-22  Mark Wielaard  <mjw@redhat.com>
+
+	* elflint.c (check_sections): Call ebl_bss_plt_p without ehdr.
+	* findtextrel.c (process_file): Use elf_getphdrnum.
+	* readelf.c (process_elf_file): Remove redundant ehdr->e_phoff check.
+	(print_phdr): Check phnum.
+	* size.c (show_segments): Use elf_getphdrnum.
+	* strip.c (handle_elf): Likewise.
+	* unstrip.c (copy_elf): Likewise.
+	(copy_elided_sections): Likewise.
+	(handle_file): Likewise.
+
+2014-11-18  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_cfa_program): Fix sanity check of DW_FORM_block
+	length.
+
+2014-11-17  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (handle_verneed): Check vna_next and vn_next exist.
+	(handle_verdef): Check vda_next and vd_next exist.
+	(handle_versym): Check vd_next, vna_next and vn_next exist.
+	Check vername and filename are not NULL before use.
+
+2014-11-17  Mark Wielaard  <mjw@redhat.com>
+
+	* elfcmp.c (main): Check section names are NULL before use.
+	* objdump.c (section_match): Likewise.
+	* size.c (show_sysv): Likewise.
+
+2014-11-17  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_frame_section): Warn if ptr_size is not 4
+	or 8 instead of just calling print_cfa_program.
+
+2014-11-16  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf (process_elf_file): Set phnum to zero if there aren't
+	actually any pheaders.
+	(print_phdr): Check there actually is a phdr.
+
+2014-11-16  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_cfa_program): Check block len before calling
+	print_ops.
+
+2014-11-14  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_frame_section): Sanity Check CIE
+	unit_length and augmentationlen.
+
+2014-11-14  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (handle_versym): Check def == NULL before use.
+
+2014-11-08  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (handle_versym): Initialize vername and filename array
+	elements.
+
+2014-11-07  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (handle_sysv_hash): Sanity check section contents.
+	(handle_sysv_hash64): Likewise.
+	(handle_gnu_hash): Likewise.
+
+2014-09-14  Petr Machata  <pmachata@redhat.com>
+
+	* readelf.c (handle_relocs_rela): Typo fix, test DESTSHDR properly.
+
+2014-09-12  Petr Machata  <pmachata@redhat.com>
+
+	* readelf.c (encoded_ptr_size): In the switch statement, change
+	magic constants 3 and 4 to DW_EH_PE_* counterparts.  Still accept
+	0.  Print diagnostic for anything else.
+
+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.
+
+2012-08-27  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (register_info): Handle loc == NULL.
+
+2012-08-22  Jeff Kenton  <jkenton@tilera.com>
+
+	* elflint.c (valid_e_machine): Add EM_TILEGX and EM_TILEPRO.
+
+2012-08-16  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (dwarf_tag_name): Renamed from dwarf_tag_string.
+	Uses new dwarf_tag_string or adds ??? or lo_user+%#x when
+	appropriate.
+	(dwarf_attr_name): Likewise.
+	(dwarf_form_name): Likewise.
+	(dwarf_lang_name): Likewise.
+	(dwarf_inline_name): Likewise.
+	(dwarf_encoding_name): Likewise.
+	(dwarf_access_name): Likewise.
+	(dwarf_visibility_name): Likewise.
+	(dwarf_virtuality_name): Likewise.
+	(dwarf_identifier_case_name): Likewise.
+	(dwarf_calling_convention_name): Likewise.
+	(dwarf_ordering_name): Likewise.
+	(dwarf_discr_list_name): Likewise.
+	(print_ops): Remove KNOWN.  Use dwarf_locexpr_opcode_string.
+	(attr_callback): Call new dwarf_foobar_name instead of old
+	dwarf_foobar_string functions.
+	(dwarf_tag_string): New function using known-dwarf.h macros.
+	(dwarf_attr_string): Likewise.
+	(dwarf_form_string): Likewise.
+	(dwarf_lang_string): Likewise.
+	(dwarf_inline_string): Likewise.
+	(dwarf_encoding_string): Likewise.
+	(dwarf_access_string): Likewise.
+	(dwarf_visibility_string): Likewise.
+	(dwarf_virtuality_string): Likewise.
+	(dwarf_identifier_case_string): Likewise.
+	(dwarf_calling_convention_string): Likewise.
+	(dwarf_ordering_string): Likewise.
+	(dwarf_discr_list_string): Likewise.
+	(dwarf_locexpr_opcode_string): Likewise.
+
+2012-06-27  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (dwarf_form_string): Handle DW_FORM_GNU_ref_alt and
+	DW_FORM_GNU_strp_alt.
+	(attr_callback): Likewise.
+
+2012-07-30  Petr Machata  <pmachata@redhat.com>
+
+	* nm.c (show_symbols_bsd): Reorder arguments in {S,}FMTSTRS (and
+	corresponding printf) so that those that are referenced by only
+	one of the formatting strings are at the end.
+
+2012-07-29  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (dwarf_lang_string): Use DW_LANG_ObjC, not DW_LANG_Objc.
+	(print_ops): Use known[op], not op_name, for DW_OP_GNU_parameter_ref.
+
+2012-07-19  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_ops): Handle DW_OP_GNU_parameter_ref.
+
+2012-07-11  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (options): Add macro to help of debug-dump.
+	(section_e): Add section_macro.
+	(section_all): Add section_macro.
+	(parse_opt): Handle macro.
+	(print_debug_macro_section): New function.
+	(print_debug): Add NEW_SECTION (macro).
+
+2012-07-10  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_gdb_index_section): Add version 7 support.
+	Keep track of cu_nr. Print kind and static/global flag for each
+	symbol. When a symbol is in the TU list add 'T'.
+
+2012-06-26  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (dwarf_attr_string): Add DW_AT_GNU_macros.
+
+2012-06-22  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_ops): Cast printf PRIu/x64 arguments to uint64_t
+	for gcc 4.7 -Wformat.
+
+2012-05-09  Roland McGrath  <roland@hack.frob.com>
+
+	* elflint (check_sections): Allow zero sized sections at (filesz) end
+	of segment. And make check overflow-proofed.
+
+2012-04-24  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_ops): Add DW_OP_GNU_push_tls_address,
+	DW_OP_GNU_uinit and DW_OP_GNU_encoded_addr.
+
+2012-03-28  Roland McGrath  <roland@hack.frob.com>
+
+	* elflint.c (special_sections): Accept SHF_INFO_LINK for reloc sections.
+
+2012-03-28  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_debug_abbrev_section): Check there is Dwarf
+	section data.
+	(print_debug_str_section): Likewise.
+
+2012-03-21  Mark Wielaard  <mjw@redhat.com>
+
+	* readelf.c (print_gdb_index_section): Accept version 6.
+
 2012-01-31  Mark Wielaard  <mjw@redhat.com>
 
 	* readelf.c (attr_callback): Don't special case DW_FORM_sec_offset.
diff --git a/src/src/Makefile b/src/src/Makefile
new file mode 100644
index 0000000..5a90099
--- /dev/null
+++ b/src/src/Makefile
@@ -0,0 +1,1041 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# src/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+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) stack$(EXEEXT)
+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.
+#am__append_1 = libdummy.a
+# -ldl is always needed for libebl.
+#am__append_2 = libld_elf.a
+#am_libld_elf_i386_pic_a_OBJECTS =
+subdir = src
+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_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+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) \
+	arlib-argp.$(OBJEXT)
+libar_a_OBJECTS = $(am_libar_a_OBJECTS)
+libdummy_a_AR = $(AR) $(ARFLAGS)
+libdummy_a_LIBADD =
+am__libdummy_a_SOURCES_DIST = i386_ld.c
+#am_libdummy_a_OBJECTS = i386_ld.$(OBJEXT)
+libdummy_a_OBJECTS = $(am_libdummy_a_OBJECTS)
+libld_elf_a_AR = $(AR) $(ARFLAGS)
+libld_elf_a_LIBADD =
+am__libld_elf_a_SOURCES_DIST = $(base_cpu)_ld.c
+#am_libld_elf_a_OBJECTS = $(base_cpu)_ld.$(OBJEXT)
+libld_elf_a_OBJECTS = $(am_libld_elf_a_OBJECTS)
+libld_elf_i386_pic_a_AR = $(AR) $(ARFLAGS)
+libld_elf_i386_pic_a_LIBADD =
+libld_elf_i386_pic_a_OBJECTS = $(am_libld_elf_i386_pic_a_OBJECTS)
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
+am__EXEEXT_1 = libld_elf_i386.so$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+addr2line_SOURCES = addr2line.c
+addr2line_OBJECTS = addr2line.$(OBJEXT)
+am__DEPENDENCIES_1 =
+am__DEPENDENCIES_2 = ../libdw/libdw.so
+#am__DEPENDENCIES_2 = ../libdw/libdw.a \
+#	$(am__DEPENDENCIES_1) $(libelf) $(libebl)
+addr2line_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libelf)
+ar_SOURCES = ar.c
+ar_OBJECTS = ar.$(OBJEXT)
+ar_DEPENDENCIES = libar.a $(libelf) $(libeu)
+elfcmp_SOURCES = elfcmp.c
+elfcmp_OBJECTS = elfcmp.$(OBJEXT)
+elfcmp_DEPENDENCIES = $(libebl) $(libelf)
+elflint_SOURCES = elflint.c
+elflint_OBJECTS = elflint.$(OBJEXT)
+elflint_DEPENDENCIES = $(libebl) $(libelf) $(libeu)
+findtextrel_SOURCES = findtextrel.c
+findtextrel_OBJECTS = findtextrel.$(OBJEXT)
+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__append_2)
+ld_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ld_LDFLAGS) $(LDFLAGS) -o \
+	$@
+am_libld_elf_i386_so_OBJECTS =
+libld_elf_i386_so_OBJECTS = $(am_libld_elf_i386_so_OBJECTS)
+libld_elf_i386_so_LDADD = $(LDADD)
+nm_SOURCES = nm.c
+nm_OBJECTS = nm.$(OBJEXT)
+nm_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libebl) $(libelf) $(libeu) \
+	$(am__DEPENDENCIES_1)
+objdump_SOURCES = objdump.c
+objdump_OBJECTS = objdump.$(OBJEXT)
+objdump_DEPENDENCIES = $(libasm) $(libebl) $(libelf) $(libeu)
+ranlib_SOURCES = ranlib.c
+ranlib_OBJECTS = ranlib.$(OBJEXT)
+ranlib_DEPENDENCIES = libar.a $(libelf) $(libeu)
+readelf_SOURCES = readelf.c
+readelf_OBJECTS = readelf.$(OBJEXT)
+readelf_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libebl) $(libelf) \
+	$(libeu)
+size_SOURCES = size.c
+size_OBJECTS = size.$(OBJEXT)
+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)
+strip_SOURCES = strip.c
+strip_OBJECTS = strip.$(OBJEXT)
+strip_DEPENDENCIES = $(libebl) $(libelf) $(libeu)
+unstrip_SOURCES = unstrip.c
+unstrip_OBJECTS = unstrip.$(OBJEXT)
+unstrip_DEPENDENCIES = $(libebl) $(libelf) $(am__DEPENDENCIES_2) \
+	$(libeu)
+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; }; \
+  }
+SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+am__skiplex = test -f $@ ||
+LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
+AM_V_LEX = $(am__v_LEX_$(V))
+am__v_LEX_ = $(am__v_LEX_$(AM_DEFAULT_VERBOSITY))
+am__v_LEX_0 = @echo "  LEX     " $@;
+am__v_LEX_1 = 
+YLWRAP = $(top_srcdir)/config/ylwrap
+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_$(V))
+am__v_YACC_ = $(am__v_YACC_$(AM_DEFAULT_VERBOSITY))
+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 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 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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"' \
+	$(YYDEBUG) -DDEBUGPRED=0 -DSRCDIR=\"$(shell cd \
+	$(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\"
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 0.161
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y -d
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/src
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/src
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+	-I$(srcdir)/../libelf -I$(srcdir)/../libebl \
+	-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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
+AM_LDFLAGS = -Wl,-rpath-link,../libelf:../libdw
+AM_YFLAGS = -pld
+AM_LFLAGS = -Pld -olex.yy.c
+native_ld = @native_ld@
+ld_dsos = libld_elf_i386_pic.a
+noinst_LIBRARIES = libld_elf.a libar.a $(ld_dsos) \
+	$(am__append_1)
+#noinst_LIBRARIES = libld_elf.a libar.a $(am__append_1)
+#native_ld_cflags = -DBASE_ELF_NAME=elf_$(base_cpu)
+#libdummy_a_SOURCES = i386_ld.c
+ld_SOURCES = ld.c ldgeneric.c ldlex.l ldscript.y symbolhash.c sectionhash.c \
+	     versionhash.c
+
+libar_a_SOURCES = arlib.c arlib2.c arlib-argp.c
+noinst_HEADERS = ld.h symbolhash.h sectionhash.h versionhash.h \
+		 ldscript.h xelf.h unaligned.h
+
+EXTRA_DIST = elf32-i386.script libld_elf_i386.map $(ld_modules) \
+	arlib.h debugpred.h make-debug-archive.in
+ld_modules = i386_ld.c
+bin_SCRIPTS = make-debug-archive
+libasm = ../libasm/libasm.so
+#libasm = ../libasm/libasm.a
+libdw = ../libdw/libdw.so
+#libdw = ../libdw/libdw.a $(zip_LIBS) $(libelf) $(libebl) -ldl
+libelf = ../libelf/libelf.so
+#libelf = ../libelf/libelf.a
+libebl = ../libebl/libebl.a
+libeu = ../lib/libeu.a
+demanglelib = -lstdc++
+
+# XXX While the file is not finished, don't warn about this
+ldgeneric_no_Wunused = yes
+readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl
+nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl \
+	   $(demanglelib)
+
+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) -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.
+#libld_elf_a_SOURCES := $(base_cpu)_ld.c
+libld_elf_i386_pic_a_SOURCES = 
+am_libld_elf_i386_pic_a_OBJECTS = i386_ld.os
+libld_elf_i386_so_SOURCES = 
+MAINTAINERCLEANFILES = ldlex.c ldscript.c ldscript.h
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .l .o .obj .y
+$(srcdir)/Makefile.in: # $(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 src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits src/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(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)
+
+libar.a: $(libar_a_OBJECTS) $(libar_a_DEPENDENCIES) $(EXTRA_libar_a_DEPENDENCIES) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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)
+	@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; \
+	done | \
+	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 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@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)/' \
+	`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+clean-noinstPROGRAMS:
+	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
+addr2line$(EXEEXT): $(addr2line_OBJECTS) $(addr2line_DEPENDENCIES) $(EXTRA_addr2line_DEPENDENCIES) 
+	@rm -f addr2line$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(addr2line_OBJECTS) $(addr2line_LDADD) $(LIBS)
+
+ar$(EXEEXT): $(ar_OBJECTS) $(ar_DEPENDENCIES) $(EXTRA_ar_DEPENDENCIES) 
+	@rm -f ar$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ar_OBJECTS) $(ar_LDADD) $(LIBS)
+
+elfcmp$(EXEEXT): $(elfcmp_OBJECTS) $(elfcmp_DEPENDENCIES) $(EXTRA_elfcmp_DEPENDENCIES) 
+	@rm -f elfcmp$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(elfcmp_OBJECTS) $(elfcmp_LDADD) $(LIBS)
+
+elflint$(EXEEXT): $(elflint_OBJECTS) $(elflint_DEPENDENCIES) $(EXTRA_elflint_DEPENDENCIES) 
+	@rm -f elflint$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(elflint_OBJECTS) $(elflint_LDADD) $(LIBS)
+
+findtextrel$(EXEEXT): $(findtextrel_OBJECTS) $(findtextrel_DEPENDENCIES) $(EXTRA_findtextrel_DEPENDENCIES) 
+	@rm -f findtextrel$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(findtextrel_OBJECTS) $(findtextrel_LDADD) $(LIBS)
+
+ld$(EXEEXT): $(ld_OBJECTS) $(ld_DEPENDENCIES) $(EXTRA_ld_DEPENDENCIES) 
+	@rm -f ld$(EXEEXT)
+	$(AM_V_CCLD)$(ld_LINK) $(ld_OBJECTS) $(ld_LDADD) $(LIBS)
+
+#libld_elf_i386.so$(EXEEXT): $(libld_elf_i386_so_OBJECTS) $(libld_elf_i386_so_DEPENDENCIES) $(EXTRA_libld_elf_i386_so_DEPENDENCIES) 
+#	@rm -f libld_elf_i386.so$(EXEEXT)
+#	$(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)
+	$(AM_V_CCLD)$(LINK) $(nm_OBJECTS) $(nm_LDADD) $(LIBS)
+
+objdump$(EXEEXT): $(objdump_OBJECTS) $(objdump_DEPENDENCIES) $(EXTRA_objdump_DEPENDENCIES) 
+	@rm -f objdump$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(objdump_OBJECTS) $(objdump_LDADD) $(LIBS)
+
+ranlib$(EXEEXT): $(ranlib_OBJECTS) $(ranlib_DEPENDENCIES) $(EXTRA_ranlib_DEPENDENCIES) 
+	@rm -f ranlib$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ranlib_OBJECTS) $(ranlib_LDADD) $(LIBS)
+
+readelf$(EXEEXT): $(readelf_OBJECTS) $(readelf_DEPENDENCIES) $(EXTRA_readelf_DEPENDENCIES) 
+	@rm -f readelf$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(readelf_OBJECTS) $(readelf_LDADD) $(LIBS)
+
+size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES) $(EXTRA_size_DEPENDENCIES) 
+	@rm -f size$(EXEEXT)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(strings_OBJECTS) $(strings_LDADD) $(LIBS)
+
+strip$(EXEEXT): $(strip_OBJECTS) $(strip_DEPENDENCIES) $(EXTRA_strip_DEPENDENCIES) 
+	@rm -f strip$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(strip_OBJECTS) $(strip_LDADD) $(LIBS)
+
+unstrip$(EXEEXT): $(unstrip_OBJECTS) $(unstrip_DEPENDENCIES) $(EXTRA_unstrip_DEPENDENCIES) 
+	@rm -f unstrip$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(unstrip_OBJECTS) $(unstrip_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	@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; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
+
+uninstall-binSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+
+installcheck-binSCRIPTS: $(bin_SCRIPTS)
+	bad=0; pid=$$$$; list="$(bin_SCRIPTS)"; for p in $$list; do \
+	  case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+	   *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+	  esac; \
+	  f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
+	  for opt in --help --version; do \
+	    if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \
+	         2>c$${pid}_.err </dev/null \
+		 && test -n "`cat c$${pid}_.out`" \
+		 && test -z "`cat c$${pid}_.err`"; then :; \
+	    else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+	  done; \
+	done; rm -f c$${pid}_.???; exit $$bad
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/$(base_cpu)_ld.Po
+include ./$(DEPDIR)/addr2line.Po
+include ./$(DEPDIR)/ar.Po
+include ./$(DEPDIR)/arlib-argp.Po
+include ./$(DEPDIR)/arlib.Po
+include ./$(DEPDIR)/arlib2.Po
+include ./$(DEPDIR)/elfcmp.Po
+include ./$(DEPDIR)/elflint.Po
+include ./$(DEPDIR)/findtextrel.Po
+include ./$(DEPDIR)/i386_ld.Po
+include ./$(DEPDIR)/ld.Po
+include ./$(DEPDIR)/ldgeneric.Po
+include ./$(DEPDIR)/ldlex.Po
+include ./$(DEPDIR)/ldscript.Po
+include ./$(DEPDIR)/nm.Po
+include ./$(DEPDIR)/objdump.Po
+include ./$(DEPDIR)/ranlib.Po
+include ./$(DEPDIR)/readelf.Po
+include ./$(DEPDIR)/sectionhash.Po
+include ./$(DEPDIR)/size.Po
+include ./$(DEPDIR)/stack.Po
+include ./$(DEPDIR)/strings.Po
+include ./$(DEPDIR)/strip.Po
+include ./$(DEPDIR)/symbolhash.Po
+include ./$(DEPDIR)/unstrip.Po
+include ./$(DEPDIR)/versionhash.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.l.c:
+	$(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+
+.y.c:
+	$(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`; \
+	$(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) $(PROGRAMS) $(SCRIPTS) $(HEADERS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; 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."
+	-rm -f ldlex.c
+	-rm -f ldscript.c
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+	clean-noinstPROGRAMS 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-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-binSCRIPTS
+
+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: installcheck-binPROGRAMS installcheck-binSCRIPTS
+
+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-binPROGRAMS uninstall-binSCRIPTS
+
+.MAKE: install-am install-strip
+
+.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 \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installcheck-binPROGRAMS \
+	installcheck-binSCRIPTS installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS
+
+
+%.os: %.c %.o
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
+
+ldlex.o: ldscript.c
+ldscript.h: ldscript.c
+libld_elf_i386.so: libld_elf_i386_pic.a libld_elf_i386.map
+	$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
+		$(libelf) $(libeu) \
+		-Wl,--version-script,$(srcdir)/libld_elf_i386.map
+	@$(textrel_check)
+
+# Special rule to make it possible to define libld_elf_a_SOURCES as we do.
+# Otherwise make would complain.
+.deps/none_ld.Po: none_ld.os
+	-:
+
+installcheck-binPROGRAMS: $(bin_PROGRAMS)
+	bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \
+	  case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+	   *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+	  esac; \
+	  f=`echo "$$p" | \
+	     sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  for opt in --help --version; do \
+	    if LD_LIBRARY_PATH=$(DESTDIR)$(libdir) \
+	       $(DESTDIR)$(bindir)/$$f $$opt > c$${pid}_.out 2> c$${pid}_.err \
+		 && test -n "`cat c$${pid}_.out`" \
+		 && test -z "`cat c$${pid}_.err`"; then :; \
+	    else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+	  done; \
+	done; rm -f c$${pid}_.???; exit $$bad
+
+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" \
+	    -e "s%[@]PACKAGE_NAME[@]%$(PACKAGE_NAME)%g" \
+	    -e "s%[@]PACKAGE_VERSION[@]%$(PACKAGE_VERSION)%g" \
+	    $(srcdir)/make-debug-archive.in > $@.new
+	chmod +x $@.new
+	mv -f $@.new $@
+
+# 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:
diff --git a/src/src/Makefile.am b/src/src/Makefile.am
index dc835cb..7a25374 100644
--- a/src/src/Makefile.am
+++ b/src/src/Makefile.am
@@ -1,40 +1,30 @@
 ## Process this file with automake to create Makefile.in
 ##
-## Copyright (C) 1996-2012 Red Hat, Inc.
-## This file is part of Red Hat elfutils.
+## Copyright (C) 1996-2014 Red Hat, Inc.
+## This file is part of elfutils.
 ##
-## Red Hat elfutils 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; version 2 of the License.
+## 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.
 ##
-## Red Hat elfutils is distributed in the hope that it will be useful, but
+## 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.
+## 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 Red Hat elfutils; if not, write to the Free Software Foundation,
-## Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-##
-## Red Hat elfutils is an included package of the Open Invention Network.
-## An included package of the Open Invention Network is a package for which
-## Open Invention Network licensees cross-license their patents.  No patent
-## license is granted, either expressly or impliedly, by designation as an
-## included package.  Should you wish to participate in the Open Invention
-## Network licensing program, please visit www.openinventionnetwork.com
-## <http://www.openinventionnetwork.com>.
+## 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 $(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
@@ -45,7 +35,7 @@
 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
@@ -96,33 +86,30 @@
 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
@@ -140,7 +127,7 @@
 	$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
 		$(libelf) $(libeu) \
 		-Wl,--version-script,$(srcdir)/libld_elf_i386.map
-	$(textrel_check)
+	@$(textrel_check)
 endif
 
 # Special rule to make it possible to define libld_elf_a_SOURCES as we do.
@@ -173,7 +160,7 @@
 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
diff --git a/src/src/Makefile.in b/src/src/Makefile.in
index bccaaf9..19009c7 100644
--- a/src/src/Makefile.in
+++ b/src/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -19,6 +18,51 @@
 
 
 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@
@@ -37,25 +81,26 @@
 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 ylwrap
-@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) \
@@ -65,8 +110,11 @@
 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) \
@@ -94,28 +142,24 @@
 @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 =
@@ -124,32 +168,34 @@
 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/||"`;; \
@@ -171,44 +217,106 @@
 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; }; \
+  }
 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) $(LFLAGS) $(AM_LFLAGS)
+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 $@ ||
-YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+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@
@@ -219,10 +327,13 @@
 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@
@@ -243,6 +354,7 @@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
+NM = @NM@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -253,6 +365,7 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+READELF = @READELF@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -267,6 +380,7 @@
 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@
@@ -316,32 +430,30 @@
 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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 \
@@ -364,30 +476,27 @@
 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.
@@ -421,6 +530,7 @@
 	    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
@@ -433,32 +543,40 @@
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libar.a: $(libar_a_OBJECTS) $(libar_a_DEPENDENCIES) 
-	-rm -f libar.a
-	$(libar_a_AR) libar.a $(libar_a_OBJECTS) $(libar_a_LIBADD)
-	$(RANLIB) libar.a
-libdummy.a: $(libdummy_a_OBJECTS) $(libdummy_a_DEPENDENCIES) 
-	-rm -f libdummy.a
-	$(libdummy_a_AR) libdummy.a $(libdummy_a_OBJECTS) $(libdummy_a_LIBADD)
-	$(RANLIB) libdummy.a
-libld_elf.a: $(libld_elf_a_OBJECTS) $(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
-libld_elf_i386_pic.a: $(libld_elf_i386_pic_a_OBJECTS) $(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
+
+libar.a: $(libar_a_OBJECTS) $(libar_a_DEPENDENCIES) $(EXTRA_libar_a_DEPENDENCIES) 
+	$(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) 
+	$(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) 
+	$(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) 
+	$(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 } \
@@ -479,7 +597,8 @@
 	@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
@@ -489,55 +608,77 @@
 
 clean-noinstPROGRAMS:
 	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-addr2line$(EXEEXT): $(addr2line_OBJECTS) $(addr2line_DEPENDENCIES) 
+
+addr2line$(EXEEXT): $(addr2line_OBJECTS) $(addr2line_DEPENDENCIES) $(EXTRA_addr2line_DEPENDENCIES) 
 	@rm -f addr2line$(EXEEXT)
-	$(LINK) $(addr2line_OBJECTS) $(addr2line_LDADD) $(LIBS)
-ar$(EXEEXT): $(ar_OBJECTS) $(ar_DEPENDENCIES) 
+	$(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)
-elfcmp$(EXEEXT): $(elfcmp_OBJECTS) $(elfcmp_DEPENDENCIES) 
+	$(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)
-elflint$(EXEEXT): $(elflint_OBJECTS) $(elflint_DEPENDENCIES) 
+	$(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)
-findtextrel$(EXEEXT): $(findtextrel_OBJECTS) $(findtextrel_DEPENDENCIES) 
+	$(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)
-ld$(EXEEXT): $(ld_OBJECTS) $(ld_DEPENDENCIES) 
+	$(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)
-@NATIVE_LD_TRUE@libld_elf_i386.so$(EXEEXT): $(libld_elf_i386_so_OBJECTS) $(libld_elf_i386_so_DEPENDENCIES) 
+	$(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)
-nm$(EXEEXT): $(nm_OBJECTS) $(nm_DEPENDENCIES) 
+@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)
-objdump$(EXEEXT): $(objdump_OBJECTS) $(objdump_DEPENDENCIES) 
+	$(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)
-ranlib$(EXEEXT): $(ranlib_OBJECTS) $(ranlib_DEPENDENCIES) 
+	$(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)
-readelf$(EXEEXT): $(readelf_OBJECTS) $(readelf_DEPENDENCIES) 
+	$(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)
-size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES) 
+	$(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)
-strings$(EXEEXT): $(strings_OBJECTS) $(strings_DEPENDENCIES) 
+	$(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)
-strip$(EXEEXT): $(strip_OBJECTS) $(strip_DEPENDENCIES) 
+	$(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)
-unstrip$(EXEEXT): $(unstrip_OBJECTS) $(unstrip_DEPENDENCIES) 
+	$(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; \
@@ -565,9 +706,7 @@
 	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 
 installcheck-binSCRIPTS: $(bin_SCRIPTS)
 	bad=0; pid=$$$$; list="$(bin_SCRIPTS)"; for p in $$list; do \
@@ -610,6 +749,7 @@
 @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@
@@ -617,45 +757,34 @@
 @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 -o $@ $<
 
 .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 -o $@ `$(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)
+	$(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` 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
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+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; \
@@ -667,15 +796,11 @@
 	      $$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
@@ -684,6 +809,21 @@
 	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
@@ -735,10 +875,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	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:
@@ -826,11 +971,12 @@
 
 .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 \
@@ -838,7 +984,7 @@
 	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
 
 
@@ -857,7 +1003,7 @@
 @NATIVE_LD_FALSE@	$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
 @NATIVE_LD_FALSE@		$(libelf) $(libeu) \
 @NATIVE_LD_FALSE@		-Wl,--version-script,$(srcdir)/libld_elf_i386.map
-@NATIVE_LD_FALSE@	$(textrel_check)
+@NATIVE_LD_FALSE@	@$(textrel_check)
 
 # Special rule to make it possible to define libld_elf_a_SOURCES as we do.
 # Otherwise make would complain.
@@ -883,7 +1029,7 @@
 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
diff --git a/src/src/addr2line.c b/src/src/addr2line.c
index 2fcc1b1..de80294 100644
--- a/src/src/addr2line.c
+++ b/src/src/addr2line.c
@@ -1,28 +1,20 @@
 /* Locate source files and line information for given addresses
-   Copyright (C) 2005-2010, 2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2012, 2013 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -69,9 +61,13 @@
     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.  */
@@ -119,9 +115,15 @@
 /* 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[])
@@ -160,11 +162,15 @@
 
       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);
 	}
 
@@ -177,6 +183,7 @@
       while (++remaining < argc);
     }
 
+  dwfl_end (dwfl);
   return result;
 }
 
@@ -231,10 +238,19 @@
       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;
     }
@@ -242,6 +258,23 @@
 }
 
 
+static const char *
+get_diename (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 bool
 print_dwarf_function (Dwfl_Module *mod, Dwarf_Addr addr)
 {
@@ -258,7 +291,7 @@
       {
       case DW_TAG_subprogram:
 	{
-	  const char *name = dwarf_diename (&scopes[i]);
+	  const char *name = get_diename (&scopes[i]);
 	  if (name == NULL)
 	    return false;
 	  puts (name);
@@ -267,7 +300,7 @@
 
       case DW_TAG_inlined_subroutine:
 	{
-	  const char *name = dwarf_diename (&scopes[i]);
+	  const char *name = get_diename (&scopes[i]);
 	  if (name == NULL)
 	    return false;
 	  printf ("%s inlined", name);
@@ -335,8 +368,9 @@
 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.  */
@@ -348,10 +382,34 @@
       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 int
@@ -377,11 +435,14 @@
 {
   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))
@@ -445,6 +506,30 @@
   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)
 {
@@ -471,7 +556,8 @@
 
 	  /* 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);
@@ -482,7 +568,7 @@
 		       gettext ("offset %#" PRIxMAX " lies outside"
 				" contents of '%s'"),
 		       addr, name);
-	      addr += sym.st_value;
+	      addr += value;
 	      parsed = true;
 	    }
 	  break;
@@ -513,28 +599,11 @@
 
   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;
@@ -568,6 +637,88 @@
   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)
+			{
+			  /* Search for the parent inline or function.  It
+			     might not be directly above this inline -- e.g.
+			     there could be a lexical_block in between.  */
+			  for (int j = i + 1; j < nscopes; j++)
+			    {
+			      Dwarf_Die *parent = &scopes[j];
+			      int tag = dwarf_tag (parent);
+			      if (tag == DW_TAG_inlined_subroutine
+				  || tag == DW_TAG_entry_point
+				  || tag == DW_TAG_subprogram)
+				{
+				  puts (get_diename (parent));
+				  break;
+				}
+			    }
+			}
+
+		      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;
 }
 
diff --git a/src/src/ar.c b/src/src/ar.c
index 721f4c3..f51f0ef 100644
--- a/src/src/ar.c
+++ b/src/src/ar.c
@@ -1,27 +1,20 @@
 /* Create, modify, and extract from archives.
    Copyright (C) 2005-2012 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -209,7 +202,7 @@
   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"));
 
@@ -926,7 +919,7 @@
 		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;
diff --git a/src/src/arlib-argp.c b/src/src/arlib-argp.c
index a0e669c..1bdd8d0 100644
--- a/src/src/arlib-argp.c
+++ b/src/src/arlib-argp.c
@@ -1,26 +1,19 @@
 /* Options common to ar and ranlib.
    Copyright (C) 2012 Red Hat, Inc.
+   This file is part of elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/arlib.c b/src/src/arlib.c
index bcf9344..43a9145 100644
--- a/src/src/arlib.c
+++ b/src/src/arlib.c
@@ -1,27 +1,20 @@
 /* Functions to handle creation of Linux archives.
    Copyright (C) 2007-2012 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -66,11 +59,11 @@
      _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
@@ -128,10 +121,10 @@
 
       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);
diff --git a/src/src/arlib.h b/src/src/arlib.h
index ea77b23..e117166 100644
--- a/src/src/arlib.h
+++ b/src/src/arlib.h
@@ -1,26 +1,19 @@
 /* Copyright (C) 2007-2012 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _ARLIB_H
 #define _ARLIB_H	1
diff --git a/src/src/arlib2.c b/src/src/arlib2.c
index 7098fec..7998fc6 100644
--- a/src/src/arlib2.c
+++ b/src/src/arlib2.c
@@ -1,27 +1,20 @@
 /* Functions to handle creation of Linux archives.
    Copyright (C) 2007 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/debugpred.h b/src/src/debugpred.h
index 41d4679..4845a6e 100644
--- a/src/src/debugpred.h
+++ b/src/src/debugpred.h
@@ -1,28 +1,20 @@
 /* Support to debug branch prediction.
    Copyright (C) 2007 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 <stdio.h>
 
diff --git a/src/src/elfcmp.c b/src/src/elfcmp.c
index 99296d1..d1008b3 100644
--- a/src/src/elfcmp.c
+++ b/src/src/elfcmp.c
@@ -1,28 +1,20 @@
 /* Compare relevant content of two ELF files.
-   Copyright (C) 2005-2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -363,7 +355,8 @@
 					      sym1->st_name);
 	      const char *name2 = elf_strptr (elf2, shdr2->sh_link,
 					      sym2->st_name);
-	      if (unlikely (strcmp (name1, name2) != 0
+	      if (unlikely (name1 == NULL || name2 == NULL
+			    || strcmp (name1, name2) != 0
 			    || sym1->st_value != sym2->st_value
 			    || (sym1->st_size != sym2->st_size
 				&& sym1->st_shndx != SHN_UNDEF)
@@ -818,8 +811,7 @@
 {
   const Elf32_Word *w1 = p1;
   const Elf32_Word *w2 = p2;
-  assert (sizeof (int) >= sizeof (*w1));
-  return (int) *w1 - (int) *w2;
+  return *w1 < *w2 ? -1 : *w1 > *w2 ? 1 : 0;
 }
 
 static int
diff --git a/src/src/elflint.c b/src/src/elflint.c
index abca8b7..7e73253 100644
--- a/src/src/elflint.c
+++ b/src/src/elflint.c
@@ -1,28 +1,20 @@
 /* Pedantic checking of ELF files compliance with gABI/psABI spec.
-   Copyright (C) 2001-2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2001-2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -131,6 +123,10 @@
 /* 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[])
@@ -319,10 +315,19 @@
 {
   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;
 }
 
 
@@ -338,17 +343,13 @@
     EM_68HC16, EM_68HC11, EM_68HC08, EM_68HC05, EM_SVX, EM_ST19, EM_VAX,
     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_MN10200, EM_PJ, EM_OPENRISC, EM_ARC_A5, EM_XTENSA, EM_ALPHA,
+    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)
 {
@@ -632,7 +633,8 @@
 	  }
       }
 
-  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));
@@ -670,7 +672,7 @@
 	       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)
@@ -690,7 +692,8 @@
       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)
@@ -765,29 +768,44 @@
 	    {
 	      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"),
@@ -807,12 +825,12 @@
 		    {
 		      /* 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"),
@@ -841,20 +859,20 @@
 			}
 		      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 ("\
@@ -1039,9 +1057,11 @@
     {
       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);
@@ -1051,7 +1071,9 @@
 	    {
 	      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)
 		{
@@ -1065,7 +1087,9 @@
 		      /* 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),
@@ -1199,8 +1223,7 @@
 				 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)
@@ -1225,7 +1248,8 @@
 	}
     }
 
-  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"),
@@ -1448,7 +1472,8 @@
   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);
@@ -1498,7 +1523,8 @@
   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);
@@ -1597,7 +1623,8 @@
 	   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));
@@ -1607,7 +1634,7 @@
 	   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);
@@ -1879,6 +1906,8 @@
 	   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 ("\
@@ -1905,6 +1934,12 @@
     }
 
   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"));
@@ -1947,7 +1982,7 @@
 
   size_t maxidx = nchain;
 
-  if (symshdr != NULL)
+  if (symshdr != NULL && symshdr->sh_entsize != 0)
     {
       size_t symsize = symshdr->sh_size / symshdr->sh_entsize;
 
@@ -1958,18 +1993,28 @@
       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);
+    }
 }
 
 
@@ -1999,18 +2044,28 @@
       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);
+    }
 }
 
 
@@ -2035,7 +2090,7 @@
   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;
@@ -2707,8 +2762,9 @@
 
   /* 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),
@@ -3210,7 +3266,7 @@
 	    unsigned const char *chunk = q;
 
 	    unsigned int subsection_tag;
-	    get_uleb128 (subsection_tag, q);
+	    get_uleb128 (subsection_tag, q, p);
 
 	    if (q >= p)
 	      {
@@ -3265,13 +3321,13 @@
 		while (chunk < q)
 		  {
 		    unsigned int tag;
-		    get_uleb128 (tag, chunk);
+		    get_uleb128 (tag, chunk, q);
 
 		    uint64_t value = 0;
 		    const unsigned char *r = chunk;
 		    if (tag == 32 || (tag & 1) == 0)
 		      {
-			get_uleb128 (value, r);
+			get_uleb128 (value, r, q);
 			if (r > q)
 			  {
 			    ERROR (gettext ("\
@@ -3357,8 +3413,8 @@
     { ".note", 6, SHT_NOTE, atleast, 0, SHF_ALLOC },
     { ".plt", 5, SHT_PROGBITS, unused, 0, 0 }, // XXX more tests
     { ".preinit_array", 15, SHT_PREINIT_ARRAY, exact, SHF_ALLOC | SHF_WRITE, 0 },
-    { ".rela", 5, SHT_RELA, atleast, 0, SHF_ALLOC }, // XXX more tests
-    { ".rel", 4, SHT_REL, atleast, 0, SHF_ALLOC }, // XXX more tests
+    { ".rela", 5, SHT_RELA, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests
+    { ".rel", 4, SHT_REL, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests
     { ".rodata", 8, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS },
     { ".rodata1", 9, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS },
     { ".shstrtab", 10, SHT_STRTAB, exact, 0, 0 },
@@ -3476,7 +3532,7 @@
 
 		GElf_Word good_type = special_sections[s].type;
 		if (IS_KNOWN_SPECIAL (s, ".plt", false)
-		    && ebl_bss_plt_p (ebl, ehdr))
+		    && ebl_bss_plt_p (ebl))
 		  good_type = SHT_NOBITS;
 
 		/* In a debuginfo file, any normal section can be SHT_NOBITS.
@@ -3716,8 +3772,10 @@
 		    || (phdr->p_type == PT_TLS
 			&& (shdr->sh_flags & SHF_TLS) != 0))
 		&& phdr->p_offset <= shdr->sh_offset
-		&& (phdr->p_offset + phdr->p_filesz > shdr->sh_offset
-		    || (phdr->p_offset + phdr->p_memsz > shdr->sh_offset
+		&& ((shdr->sh_offset - phdr->p_offset <= phdr->p_filesz
+		     && (shdr->sh_offset - phdr->p_offset < phdr->p_filesz
+			 || shdr->sh_size == 0))
+		    || (shdr->sh_offset - phdr->p_offset < phdr->p_memsz
 			&& shdr->sh_type == SHT_NOBITS)))
 	      {
 		/* Found the segment.  */
diff --git a/src/src/findtextrel.c b/src/src/findtextrel.c
index 444f3a2..264a06b 100644
--- a/src/src/findtextrel.c
+++ b/src/src/findtextrel.c
@@ -1,28 +1,20 @@
 /* Locate source files or functions which caused text relocations.
-   Copyright (C) 2005-2010, 2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -319,7 +311,7 @@
   if (!have_textrel)
     {
       error (0, 0, gettext ("no text relocations reported in '%s'"), fname);
-      return 1;
+      goto err_elf_close;
     }
 
   int fd2 = -1;
@@ -332,14 +324,20 @@
   if (segments == NULL)
     error (1, errno, gettext ("while reading ELF file"));
 
-  for (int i = 0; i < ehdr->e_phnum; ++i)
+  size_t phnum;
+  if (elf_getphdrnum (elf, &phnum) != 0)
+    error (1, 0, gettext ("cannot get program header count: %s"),
+           elf_errmsg (-1));
+
+
+  for (size_t i = 0; i < phnum; ++i)
     {
       GElf_Phdr phdr_mem;
       GElf_Phdr *phdr = gelf_getphdr (elf, i, &phdr_mem);
       if (phdr == NULL)
 	{
 	  error (0, 0,
-		 gettext ("cannot get program header index at offset %d: %s"),
+		 gettext ("cannot get program header index at offset %zd: %s"),
 		 i, elf_errmsg (-1));
 	  result = 1;
 	  goto next;
@@ -357,7 +355,7 @@
 	      if (segments == NULL)
 		{
 		  error (0, 0, gettext ("\
-cannot get program header index at offset %d: %s"),
+cannot get program header index at offset %zd: %s"),
 			 i, elf_errmsg (-1));
 		  result = 1;
 		  goto next;
diff --git a/src/src/i386_ld.c b/src/src/i386_ld.c
index 2702ef8..d196177 100644
--- a/src/src/i386_ld.c
+++ b/src/src/i386_ld.c
@@ -1,27 +1,19 @@
 /* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/ld.c b/src/src/ld.c
index 6384e86..73e4f04 100644
--- a/src/src/ld.c
+++ b/src/src/ld.c
@@ -1,27 +1,19 @@
 /* Copyright (C) 2001-2010, 2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/ld.h b/src/src/ld.h
index 72d5b27..29f4031 100644
--- a/src/src/ld.h
+++ b/src/src/ld.h
@@ -1,27 +1,19 @@
 /* Copyright (C) 2001, 2002, 2003, 2005, 2006, 2008, 2009 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef LD_H
 #define LD_H	1
diff --git a/src/src/ldgeneric.c b/src/src/ldgeneric.c
index 98bdc22..1b5d0f9 100644
--- a/src/src/ldgeneric.c
+++ b/src/src/ldgeneric.c
@@ -1,27 +1,19 @@
 /* Copyright (C) 2001-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/ldlex.c b/src/src/ldlex.c
index e1b5b4e..03870df 100644
--- a/src/src/ldlex.c
+++ b/src/src/ldlex.c
@@ -28,7 +28,7 @@
 #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
@@ -73,7 +73,6 @@
 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
@@ -104,6 +103,8 @@
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#endif /* ! C99 */
+
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -172,7 +173,12 @@
 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;
 
@@ -211,11 +217,6 @@
 
 #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
@@ -233,7 +234,7 @@
 	/* 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
@@ -303,8 +304,8 @@
 
 /* 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;
@@ -332,7 +333,7 @@
 
 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  );
@@ -364,7 +365,7 @@
 
 /* Begin user sect3 */
 
-#define ldwrap(n) 1
+#define ldwrap() 1
 #define YY_SKIP_YYWRAP
 
 typedef unsigned char YY_CHAR;
@@ -1072,32 +1073,24 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *ldtext;
-#line 1 "ldlex.l"
-#line 2 "ldlex.l"
+#line 1 "/home/mark/src/elfutils/src/ldlex.l"
+#line 2 "/home/mark/src/elfutils/src/ldlex.l"
 /* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -1153,7 +1146,7 @@
 static int handle_ifdef (void);
 static void invalid_char (int ch);
 
-#line 1157 "ldlex.c"
+#line 1150 "ldlex.c"
 
 #define INITIAL 0
 #define IGNORE 1
@@ -1193,7 +1186,7 @@
 
 void ldset_out  (FILE * out_str  );
 
-int ldget_leng (void );
+yy_size_t ldget_leng (void );
 
 char *ldget_text (void );
 
@@ -1254,7 +1247,7 @@
 	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; \
@@ -1339,7 +1332,7 @@
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
     
-#line 96 "ldlex.l"
+#line 88 "/home/mark/src/elfutils/src/ldlex.l"
 
 				if (unlikely (ld_scan_version_script))
 				  {
@@ -1347,7 +1340,7 @@
 				    return kVERSION_SCRIPT;
 				  }
 
-#line 1351 "ldlex.c"
+#line 1344 "ldlex.c"
 
 	if ( !(yy_init) )
 		{
@@ -1418,7 +1411,7 @@
 
 		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' )
 					   
@@ -1443,7 +1436,7 @@
 (yy_c_buf_p) = yy_cp = yy_bp + 6;
 YY_DO_BEFORE_ACTION; /* set up ldtext again */
 YY_RULE_SETUP
-#line 103 "ldlex.l"
+#line 95 "/home/mark/src/elfutils/src/ldlex.l"
 { BEGIN (handle_ifdef ()); }
 	YY_BREAK
 case 2:
@@ -1452,7 +1445,7 @@
 (yy_c_buf_p) = yy_cp = yy_bp + 5;
 YY_DO_BEFORE_ACTION; /* set up ldtext again */
 YY_RULE_SETUP
-#line 104 "ldlex.l"
+#line 96 "/home/mark/src/elfutils/src/ldlex.l"
 { eat_to_eol (true);
 				  push_state (skip_to_endif);
 				  BEGIN (IGNORE); }
@@ -1463,7 +1456,7 @@
 (yy_c_buf_p) = yy_cp = yy_bp + 8;
 YY_DO_BEFORE_ACTION; /* set up ldtext again */
 YY_RULE_SETUP
-#line 107 "ldlex.l"
+#line 99 "/home/mark/src/elfutils/src/ldlex.l"
 { eat_to_eol (false);
 				  push_state (skip_to_endif);
 				  BEGIN (IGNORE); }
@@ -1474,7 +1467,7 @@
 (yy_c_buf_p) = yy_cp = yy_bp + 6;
 YY_DO_BEFORE_ACTION; /* set up ldtext again */
 YY_RULE_SETUP
-#line 110 "ldlex.l"
+#line 102 "/home/mark/src/elfutils/src/ldlex.l"
 { eat_to_eol (true) ; }
 	YY_BREAK
 case 5:
@@ -1483,7 +1476,7 @@
 (yy_c_buf_p) = yy_cp = yy_bp + 6;
 YY_DO_BEFORE_ACTION; /* set up ldtext again */
 YY_RULE_SETUP
-#line 112 "ldlex.l"
+#line 104 "/home/mark/src/elfutils/src/ldlex.l"
 { eat_to_eol (false);
 				  push_state (skip_to_endif); }
 	YY_BREAK
@@ -1493,7 +1486,7 @@
 (yy_c_buf_p) = yy_cp = yy_bp + 5;
 YY_DO_BEFORE_ACTION; /* set up ldtext again */
 YY_RULE_SETUP
-#line 114 "ldlex.l"
+#line 106 "/home/mark/src/elfutils/src/ldlex.l"
 { eat_to_eol (true);
 				  assert (prepdepth > 0);
 				  if (prepstate[prepdepth - 1] == skip_if)
@@ -1510,7 +1503,7 @@
 (yy_c_buf_p) = yy_cp = yy_bp + 8;
 YY_DO_BEFORE_ACTION; /* set up ldtext again */
 YY_RULE_SETUP
-#line 123 "ldlex.l"
+#line 115 "/home/mark/src/elfutils/src/ldlex.l"
 { assert (prepdepth > 0);
 				  if (prepstate[prepdepth - 1] == skip_if)
 				    {
@@ -1526,114 +1519,114 @@
 (yy_c_buf_p) = yy_cp = yy_bp + 6;
 YY_DO_BEFORE_ACTION; /* set up ldtext again */
 YY_RULE_SETUP
-#line 131 "ldlex.l"
+#line 123 "/home/mark/src/elfutils/src/ldlex.l"
 { eat_to_eol (true);
 				  BEGIN (pop_state ()); }
 	YY_BREAK
 case 9:
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 133 "ldlex.l"
+#line 125 "/home/mark/src/elfutils/src/ldlex.l"
 { /* nothing */ }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 136 "ldlex.l"
+#line 128 "/home/mark/src/elfutils/src/ldlex.l"
 { eat_comment (); }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 138 "ldlex.l"
+#line 130 "/home/mark/src/elfutils/src/ldlex.l"
 { return kALIGN; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 139 "ldlex.l"
+#line 131 "/home/mark/src/elfutils/src/ldlex.l"
 { return kAS_NEEDED; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 140 "ldlex.l"
+#line 132 "/home/mark/src/elfutils/src/ldlex.l"
 { return kENTRY; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 141 "ldlex.l"
+#line 133 "/home/mark/src/elfutils/src/ldlex.l"
 { return kEXCLUDE_FILE; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 142 "ldlex.l"
+#line 134 "/home/mark/src/elfutils/src/ldlex.l"
 { return kGLOBAL; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 143 "ldlex.l"
+#line 135 "/home/mark/src/elfutils/src/ldlex.l"
 { return kGROUP; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 144 "ldlex.l"
+#line 136 "/home/mark/src/elfutils/src/ldlex.l"
 { return kINPUT; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 145 "ldlex.l"
+#line 137 "/home/mark/src/elfutils/src/ldlex.l"
 { return kINTERP; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 146 "ldlex.l"
+#line 138 "/home/mark/src/elfutils/src/ldlex.l"
 { return kKEEP; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 147 "ldlex.l"
+#line 139 "/home/mark/src/elfutils/src/ldlex.l"
 { return kLOCAL; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 148 "ldlex.l"
+#line 140 "/home/mark/src/elfutils/src/ldlex.l"
 { return kOUTPUT_FORMAT; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 149 "ldlex.l"
+#line 141 "/home/mark/src/elfutils/src/ldlex.l"
 { return kPAGESIZE; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 150 "ldlex.l"
+#line 142 "/home/mark/src/elfutils/src/ldlex.l"
 { return kPROVIDE; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 151 "ldlex.l"
+#line 143 "/home/mark/src/elfutils/src/ldlex.l"
 { return kSEARCH_DIR; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 152 "ldlex.l"
+#line 144 "/home/mark/src/elfutils/src/ldlex.l"
 { return kSEGMENT; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 153 "ldlex.l"
+#line 145 "/home/mark/src/elfutils/src/ldlex.l"
 { return kSIZEOF_HEADERS; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 154 "ldlex.l"
+#line 146 "/home/mark/src/elfutils/src/ldlex.l"
 { return kSORT; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 155 "ldlex.l"
+#line 147 "/home/mark/src/elfutils/src/ldlex.l"
 { return kVERSION; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 157 "ldlex.l"
+#line 149 "/home/mark/src/elfutils/src/ldlex.l"
 { int cnt = 1 ;
 				  ldlval.num = 0;
 				  while (cnt < ldleng - 1)
@@ -1642,82 +1635,82 @@
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 163 "ldlex.l"
+#line 155 "/home/mark/src/elfutils/src/ldlex.l"
 { return '{'; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 164 "ldlex.l"
+#line 156 "/home/mark/src/elfutils/src/ldlex.l"
 { return '}'; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 165 "ldlex.l"
+#line 157 "/home/mark/src/elfutils/src/ldlex.l"
 { return '('; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 166 "ldlex.l"
+#line 158 "/home/mark/src/elfutils/src/ldlex.l"
 { return ')'; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 167 "ldlex.l"
+#line 159 "/home/mark/src/elfutils/src/ldlex.l"
 { return ':'; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 168 "ldlex.l"
+#line 160 "/home/mark/src/elfutils/src/ldlex.l"
 { return ';'; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 169 "ldlex.l"
+#line 161 "/home/mark/src/elfutils/src/ldlex.l"
 { return '='; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 170 "ldlex.l"
+#line 162 "/home/mark/src/elfutils/src/ldlex.l"
 { ldlval.op = exp_plus; return kADD_OP; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 171 "ldlex.l"
+#line 163 "/home/mark/src/elfutils/src/ldlex.l"
 { ldlval.op = exp_minus; return kADD_OP; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 172 "ldlex.l"
+#line 164 "/home/mark/src/elfutils/src/ldlex.l"
 { return '*'; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 173 "ldlex.l"
+#line 165 "/home/mark/src/elfutils/src/ldlex.l"
 { ldlval.op = exp_div; return kMUL_OP; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 174 "ldlex.l"
+#line 166 "/home/mark/src/elfutils/src/ldlex.l"
 { ldlval.op = exp_mod; return kMUL_OP; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 175 "ldlex.l"
+#line 167 "/home/mark/src/elfutils/src/ldlex.l"
 { return '&'; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 176 "ldlex.l"
+#line 168 "/home/mark/src/elfutils/src/ldlex.l"
 { return '|'; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 178 "ldlex.l"
+#line 170 "/home/mark/src/elfutils/src/ldlex.l"
 { return ','; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 180 "ldlex.l"
+#line 172 "/home/mark/src/elfutils/src/ldlex.l"
 { char *endp;
 				  ldlval.num = strtoumax (ldtext, &endp, 0);
 				  if (*endp != '\0')
@@ -1734,14 +1727,14 @@
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 194 "ldlex.l"
+#line 186 "/home/mark/src/elfutils/src/ldlex.l"
 { ldlval.str = obstack_strndup (&ld_state.smem,
 								ldtext, ldleng);
 				  return kID; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 198 "ldlex.l"
+#line 190 "/home/mark/src/elfutils/src/ldlex.l"
 { ldlval.str = obstack_strndup (&ld_state.smem,
 								ldtext, ldleng);
 				  return kFILENAME; }
@@ -1749,20 +1742,20 @@
 case 48:
 /* rule 48 can match eol */
 YY_RULE_SETUP
-#line 202 "ldlex.l"
+#line 194 "/home/mark/src/elfutils/src/ldlex.l"
 { /* IGNORE */ }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 204 "ldlex.l"
+#line 196 "/home/mark/src/elfutils/src/ldlex.l"
 { invalid_char (*ldtext); }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 206 "ldlex.l"
+#line 198 "/home/mark/src/elfutils/src/ldlex.l"
 ECHO;
 	YY_BREAK
-#line 1766 "ldlex.c"
+#line 1759 "ldlex.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(IGNORE):
 	yyterminate();
@@ -1950,21 +1943,21 @@
 
 	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;
@@ -1995,7 +1988,7 @@
 
 		/* 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);
 		}
@@ -2091,7 +2084,7 @@
 	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 )
@@ -2106,7 +2099,7 @@
 	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 =
@@ -2159,7 +2152,7 @@
 
 		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(  ) )
@@ -2437,7 +2430,7 @@
  */
 static void ldensure_buffer_stack (void)
 {
-	int num_to_alloc;
+	yy_size_t num_to_alloc;
     
 	if (!(yy_buffer_stack)) {
 
@@ -2529,17 +2522,17 @@
 
 /** 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;
@@ -2621,7 +2614,7 @@
 /** Get the length of the current token.
  * 
  */
-int ldget_leng  (void)
+yy_size_t ldget_leng  (void)
 {
         return ldleng;
 }
@@ -2772,7 +2765,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 206 "ldlex.l"
+#line 198 "/home/mark/src/elfutils/src/ldlex.l"
 
 
 
diff --git a/src/src/ldlex.l b/src/src/ldlex.l
index eb15c7b..bfc8bbe 100644
--- a/src/src/ldlex.l
+++ b/src/src/ldlex.l
@@ -1,28 +1,20 @@
 %{
 /* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/ldscript.c b/src/src/ldscript.c
index 05a393b..690d805 100644
--- a/src/src/ldscript.c
+++ b/src/src/ldscript.c
@@ -1,8 +1,8 @@
-/* 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
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.7"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -58,8 +58,6 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 /* Substitute the variable and function names.  */
 #define yyparse         ldparse
@@ -70,37 +68,27 @@
 #define yydebug         lddebug
 #define yynerrs         ldnerrs
 
-
 /* Copy the first part of user declarations.  */
-
-/* Line 268 of yacc.c  */
-#line 1 "ldscript.y"
+/* Line 371 of yacc.c  */
+#line 1 "/home/mark/src/elfutils/src/ldscript.y"
 
 /* Parser for linker scripts.
    Copyright (C) 2001-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -144,14 +132,16 @@
 
 extern int yylex (void);
 
+/* Line 371 of yacc.c  */
+#line 137 "ldscript.c"
 
-/* Line 268 of yacc.c  */
-#line 150 "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
@@ -161,11 +151,17 @@
 # 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
@@ -233,13 +229,11 @@
 
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 293 of yacc.c  */
-#line 71 "ldscript.y"
+/* Line 387 of yacc.c  */
+#line 63 "/home/mark/src/elfutils/src/ldscript.y"
 
   uintmax_t num;
   enum expression_tag op;
@@ -255,21 +249,36 @@
   struct id_list *id_list;
 
 
-
-/* Line 293 of yacc.c  */
-#line 261 "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;
+
+#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 273 "ldscript.c"
+/* Line 390 of yacc.c  */
+#line 282 "ldscript.c"
 
 #ifdef short
 # undef short
@@ -322,24 +331,24 @@
 # 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)
@@ -375,6 +384,7 @@
 #    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
@@ -466,20 +476,20 @@
 #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
@@ -587,17 +597,17 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   143,   143,   144,   148,   149,   152,   157,   161,   166,
-     172,   176,   182,   193,   195,   197,   199,   203,   208,   212,
-     217,   229,   253,   255,   259,   264,   268,   273,   280,   287,
-     298,   300,   304,   307,   310,   315,   317,   323,   329,   335,
-     341,   347,   352,   357,   359,   363,   368,   372,   373,   376,
-     387,   389,   394,   399,   403,   409,   415,   424,   426,   430,
-     432,   437,   443,   447,   449,   453,   455
+       0,   135,   135,   136,   140,   141,   144,   149,   153,   158,
+     164,   168,   174,   185,   187,   189,   191,   195,   200,   204,
+     209,   221,   245,   247,   251,   256,   260,   265,   272,   279,
+     290,   292,   296,   299,   302,   307,   309,   315,   321,   327,
+     333,   339,   344,   349,   351,   355,   360,   364,   365,   368,
+     379,   381,   386,   391,   395,   401,   407,   416,   418,   422,
+     424,   429,   435,   439,   441,   445,   447
 };
 #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[] =
@@ -613,7 +623,7 @@
   "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
 
@@ -746,10 +756,10 @@
        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[] =
@@ -828,62 +838,35 @@
 
 #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
@@ -933,6 +916,8 @@
     YYSTYPE const * const yyvaluep;
 #endif
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
@@ -944,7 +929,7 @@
   switch (yytype)
     {
       default:
-	break;
+        break;
     }
 }
 
@@ -1184,12 +1169,11 @@
 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
@@ -1249,11 +1233,13 @@
                     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;
+                }
               }
         }
     }
@@ -1273,10 +1259,12 @@
 # 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)
     {
@@ -1336,32 +1324,27 @@
     {
 
       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;
@@ -1401,7 +1384,7 @@
        `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.  */
@@ -1419,7 +1402,7 @@
   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;
@@ -1437,9 +1420,8 @@
      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"));
@@ -1448,14 +1430,6 @@
   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;
 
 /*------------------------------------------------------------.
@@ -1596,7 +1570,9 @@
   yychar = YYEMPTY;
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
 
@@ -1633,16 +1609,14 @@
   switch (yyn)
     {
         case 3:
-
-/* Line 1806 of yacc.c  */
-#line 145 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 137 "/home/mark/src/elfutils/src/ldscript.y"
     { add_versions ((yyvsp[(2) - (2)].version)); }
     break;
 
   case 6:
-
-/* Line 1806 of yacc.c  */
-#line 153 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 145 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      if (likely (ld_state.entry == NULL))
 			ld_state.entry = (yyvsp[(3) - (5)].str);
@@ -1650,18 +1624,16 @@
     break;
 
   case 7:
-
-/* Line 1806 of yacc.c  */
-#line 158 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 150 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      ld_new_searchdir ((yyvsp[(3) - (5)].str));
 		    }
     break;
 
   case 8:
-
-/* Line 1806 of yacc.c  */
-#line 162 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 154 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      if (likely (ld_state.pagesize == 0))
 			ld_state.pagesize = (yyvsp[(3) - (5)].num);
@@ -1669,9 +1641,8 @@
     break;
 
   case 9:
-
-/* Line 1806 of yacc.c  */
-#line 167 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 159 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      if (likely (ld_state.interp == NULL)
 			  && ld_state.file_type != dso_file_type)
@@ -1680,18 +1651,16 @@
     break;
 
   case 10:
-
-/* Line 1806 of yacc.c  */
-#line 173 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 165 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      new_segment ((yyvsp[(2) - (5)].num), (yyvsp[(4) - (5)].output_rule));
 		    }
     break;
 
   case 11:
-
-/* Line 1806 of yacc.c  */
-#line 177 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 169 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      fputs_unlocked (gettext ("mode for segment invalid\n"),
 				      stderr);
@@ -1700,9 +1669,8 @@
     break;
 
   case 12:
-
-/* Line 1806 of yacc.c  */
-#line 183 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 175 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      /* First little optimization.  If there is only one
 			 file in the group don't do anything.  */
@@ -1716,37 +1684,32 @@
     break;
 
   case 13:
-
-/* Line 1806 of yacc.c  */
-#line 194 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 186 "/home/mark/src/elfutils/src/ldscript.y"
     { add_inputfiles ((yyvsp[(3) - (4)].filename_list)); }
     break;
 
   case 14:
-
-/* Line 1806 of yacc.c  */
-#line 196 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 188 "/home/mark/src/elfutils/src/ldscript.y"
     { add_inputfiles (mark_as_needed ((yyvsp[(3) - (4)].filename_list))); }
     break;
 
   case 15:
-
-/* Line 1806 of yacc.c  */
-#line 198 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 190 "/home/mark/src/elfutils/src/ldscript.y"
     { add_versions ((yyvsp[(3) - (4)].version)); }
     break;
 
   case 16:
-
-/* Line 1806 of yacc.c  */
-#line 200 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 192 "/home/mark/src/elfutils/src/ldscript.y"
     { /* XXX TODO */ }
     break;
 
   case 17:
-
-/* Line 1806 of yacc.c  */
-#line 204 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 196 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyvsp[(2) - (2)].output_rule)->next = (yyvsp[(1) - (2)].output_rule)->next;
 		      (yyval.output_rule) = (yyvsp[(1) - (2)].output_rule)->next = (yyvsp[(2) - (2)].output_rule);
@@ -1754,16 +1717,14 @@
     break;
 
   case 18:
-
-/* Line 1806 of yacc.c  */
-#line 209 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 201 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.output_rule) = (yyvsp[(1) - (1)].output_rule); }
     break;
 
   case 19:
-
-/* Line 1806 of yacc.c  */
-#line 213 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 205 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.output_rule) = new_output_rule (output_assignment);
 		      (yyval.output_rule)->val.assignment = (yyvsp[(1) - (2)].assignment);
@@ -1771,9 +1732,8 @@
     break;
 
   case 20:
-
-/* Line 1806 of yacc.c  */
-#line 218 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 210 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.output_rule) = new_output_rule (output_section);
 		      (yyval.output_rule)->val.section.name = (yyvsp[(1) - (4)].str);
@@ -1788,9 +1748,8 @@
     break;
 
   case 21:
-
-/* Line 1806 of yacc.c  */
-#line 230 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 222 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      /* This is a short cut for "ID { *(ID) }".  */
 		      (yyval.output_rule) = new_output_rule (output_section);
@@ -1815,23 +1774,20 @@
     break;
 
   case 22:
-
-/* Line 1806 of yacc.c  */
-#line 254 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 246 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.assignment) = new_assignment ((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].expr), false); }
     break;
 
   case 23:
-
-/* Line 1806 of yacc.c  */
-#line 256 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 248 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.assignment) = new_assignment ((yyvsp[(3) - (6)].str), (yyvsp[(5) - (6)].expr), true); }
     break;
 
   case 24:
-
-/* Line 1806 of yacc.c  */
-#line 260 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 252 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyvsp[(2) - (2)].input_rule)->next = (yyvsp[(1) - (2)].input_rule)->next;
 		      (yyval.input_rule) = (yyvsp[(1) - (2)].input_rule)->next = (yyvsp[(2) - (2)].input_rule);
@@ -1839,16 +1795,14 @@
     break;
 
   case 25:
-
-/* Line 1806 of yacc.c  */
-#line 265 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 257 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.input_rule) = (yyvsp[(1) - (1)].input_rule); }
     break;
 
   case 26:
-
-/* Line 1806 of yacc.c  */
-#line 269 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 261 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.input_rule) = new_input_rule (input_section);
 		      (yyval.input_rule)->val.section = (yyvsp[(1) - (1)].filemask_section_name);
@@ -1856,9 +1810,8 @@
     break;
 
   case 27:
-
-/* Line 1806 of yacc.c  */
-#line 274 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 266 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyvsp[(3) - (4)].filemask_section_name)->keep_flag = true;
 
@@ -1868,9 +1821,8 @@
     break;
 
   case 28:
-
-/* Line 1806 of yacc.c  */
-#line 281 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 273 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.input_rule) = new_input_rule (input_assignment);
 		      (yyval.input_rule)->val.assignment = (yyvsp[(1) - (2)].assignment);
@@ -1878,9 +1830,8 @@
     break;
 
   case 29:
-
-/* Line 1806 of yacc.c  */
-#line 288 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 280 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.filemask_section_name) = (struct filemask_section_name *)
 			obstack_alloc (&ld_state.smem, sizeof (*(yyval.filemask_section_name)));
@@ -1892,37 +1843,32 @@
     break;
 
   case 30:
-
-/* Line 1806 of yacc.c  */
-#line 299 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 291 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.sectionname) = new_input_section_name ((yyvsp[(1) - (1)].str), false); }
     break;
 
   case 31:
-
-/* Line 1806 of yacc.c  */
-#line 301 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 293 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.sectionname) = new_input_section_name ((yyvsp[(3) - (4)].str), true); }
     break;
 
   case 32:
-
-/* Line 1806 of yacc.c  */
-#line 305 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 297 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.str) = (yyvsp[(3) - (4)].str); }
     break;
 
   case 33:
-
-/* Line 1806 of yacc.c  */
-#line 307 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 299 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.str) = NULL; }
     break;
 
   case 34:
-
-/* Line 1806 of yacc.c  */
-#line 311 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 303 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.expr) = new_expr (exp_align);
 		      (yyval.expr)->val.child = (yyvsp[(3) - (4)].expr);
@@ -1930,16 +1876,14 @@
     break;
 
   case 35:
-
-/* Line 1806 of yacc.c  */
-#line 316 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 308 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.expr) = (yyvsp[(2) - (3)].expr); }
     break;
 
   case 36:
-
-/* Line 1806 of yacc.c  */
-#line 318 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 310 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.expr) = new_expr (exp_mult);
 		      (yyval.expr)->val.binary.left = (yyvsp[(1) - (3)].expr);
@@ -1948,9 +1892,8 @@
     break;
 
   case 37:
-
-/* Line 1806 of yacc.c  */
-#line 324 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 316 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.expr) = new_expr ((yyvsp[(2) - (3)].op));
 		      (yyval.expr)->val.binary.left = (yyvsp[(1) - (3)].expr);
@@ -1959,9 +1902,8 @@
     break;
 
   case 38:
-
-/* Line 1806 of yacc.c  */
-#line 330 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 322 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.expr) = new_expr ((yyvsp[(2) - (3)].op));
 		      (yyval.expr)->val.binary.left = (yyvsp[(1) - (3)].expr);
@@ -1970,9 +1912,8 @@
     break;
 
   case 39:
-
-/* Line 1806 of yacc.c  */
-#line 336 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 328 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.expr) = new_expr (exp_and);
 		      (yyval.expr)->val.binary.left = (yyvsp[(1) - (3)].expr);
@@ -1981,9 +1922,8 @@
     break;
 
   case 40:
-
-/* Line 1806 of yacc.c  */
-#line 342 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 334 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.expr) = new_expr (exp_or);
 		      (yyval.expr)->val.binary.left = (yyvsp[(1) - (3)].expr);
@@ -1992,9 +1932,8 @@
     break;
 
   case 41:
-
-/* Line 1806 of yacc.c  */
-#line 348 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 340 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.expr) = new_expr (exp_num);
 		      (yyval.expr)->val.num = (yyvsp[(1) - (1)].num);
@@ -2002,9 +1941,8 @@
     break;
 
   case 42:
-
-/* Line 1806 of yacc.c  */
-#line 353 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 345 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyval.expr) = new_expr (exp_id);
 		      (yyval.expr)->val.str = (yyvsp[(1) - (1)].str);
@@ -2012,23 +1950,20 @@
     break;
 
   case 43:
-
-/* Line 1806 of yacc.c  */
-#line 358 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 350 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.expr) = new_expr (exp_sizeof_headers); }
     break;
 
   case 44:
-
-/* Line 1806 of yacc.c  */
-#line 360 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 352 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.expr) = new_expr (exp_pagesize); }
     break;
 
   case 45:
-
-/* Line 1806 of yacc.c  */
-#line 364 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 356 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyvsp[(3) - (3)].filename_list)->next = (yyvsp[(1) - (3)].filename_list)->next;
 		      (yyval.filename_list) = (yyvsp[(1) - (3)].filename_list)->next = (yyvsp[(3) - (3)].filename_list);
@@ -2036,16 +1971,14 @@
     break;
 
   case 46:
-
-/* Line 1806 of yacc.c  */
-#line 369 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 361 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.filename_list) = (yyvsp[(1) - (1)].filename_list); }
     break;
 
   case 49:
-
-/* Line 1806 of yacc.c  */
-#line 377 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 369 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      /* First little optimization.  If there is only one
 			 file in the group don't do anything.  */
@@ -2059,23 +1992,20 @@
     break;
 
   case 50:
-
-/* Line 1806 of yacc.c  */
-#line 388 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 380 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.filename_list) = mark_as_needed ((yyvsp[(3) - (4)].filename_list)); }
     break;
 
   case 51:
-
-/* Line 1806 of yacc.c  */
-#line 390 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 382 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.filename_list) = new_filename_listelem ((yyvsp[(1) - (1)].str)); }
     break;
 
   case 52:
-
-/* Line 1806 of yacc.c  */
-#line 395 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 387 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyvsp[(2) - (2)].version)->next = (yyvsp[(1) - (2)].version)->next;
 		      (yyval.version) = (yyvsp[(1) - (2)].version)->next = (yyvsp[(2) - (2)].version);
@@ -2083,16 +2013,14 @@
     break;
 
   case 53:
-
-/* Line 1806 of yacc.c  */
-#line 400 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 392 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.version) = (yyvsp[(1) - (1)].version); }
     break;
 
   case 54:
-
-/* Line 1806 of yacc.c  */
-#line 404 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 396 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyvsp[(2) - (4)].version)->versionname = "";
 		      (yyvsp[(2) - (4)].version)->parentname = NULL;
@@ -2101,9 +2029,8 @@
     break;
 
   case 55:
-
-/* Line 1806 of yacc.c  */
-#line 410 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 402 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyvsp[(3) - (5)].version)->versionname = (yyvsp[(1) - (5)].str);
 		      (yyvsp[(3) - (5)].version)->parentname = NULL;
@@ -2112,9 +2039,8 @@
     break;
 
   case 56:
-
-/* Line 1806 of yacc.c  */
-#line 416 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 408 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      (yyvsp[(3) - (6)].version)->versionname = (yyvsp[(1) - (6)].str);
 		      (yyvsp[(3) - (6)].version)->parentname = (yyvsp[(5) - (6)].str);
@@ -2123,37 +2049,32 @@
     break;
 
   case 57:
-
-/* Line 1806 of yacc.c  */
-#line 425 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 417 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.version) = merge_versions ((yyvsp[(1) - (2)].version), (yyvsp[(2) - (2)].version)); }
     break;
 
   case 58:
-
-/* Line 1806 of yacc.c  */
-#line 427 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 419 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.version) = (yyvsp[(1) - (1)].version); }
     break;
 
   case 59:
-
-/* Line 1806 of yacc.c  */
-#line 431 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 423 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.version) = new_version (NULL, (yyvsp[(2) - (2)].id_list)); }
     break;
 
   case 60:
-
-/* Line 1806 of yacc.c  */
-#line 433 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 425 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.version) = new_version ((yyvsp[(2) - (2)].id_list), NULL); }
     break;
 
   case 61:
-
-/* Line 1806 of yacc.c  */
-#line 438 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 430 "/home/mark/src/elfutils/src/ldscript.y"
     {
 		      struct id_list *newp = new_id_listelem ((yyvsp[(2) - (3)].str));
 		      newp->next = (yyvsp[(1) - (3)].id_list)->next;
@@ -2162,44 +2083,38 @@
     break;
 
   case 62:
-
-/* Line 1806 of yacc.c  */
-#line 444 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 436 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.id_list) = new_id_listelem ((yyvsp[(1) - (2)].str)); }
     break;
 
   case 63:
-
-/* Line 1806 of yacc.c  */
-#line 448 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 440 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); }
     break;
 
   case 64:
-
-/* Line 1806 of yacc.c  */
-#line 450 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 442 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); }
     break;
 
   case 65:
-
-/* Line 1806 of yacc.c  */
-#line 454 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 446 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); }
     break;
 
   case 66:
-
-/* Line 1806 of yacc.c  */
-#line 456 "ldscript.y"
+/* Line 1792 of yacc.c  */
+#line 448 "/home/mark/src/elfutils/src/ldscript.y"
     { (yyval.str) = NULL; }
     break;
 
 
-
-/* Line 1806 of yacc.c  */
-#line 2203 "ldscript.c"
+/* Line 1792 of yacc.c  */
+#line 2118 "ldscript.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2362,7 +2277,9 @@
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
@@ -2386,7 +2303,7 @@
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2428,9 +2345,8 @@
 }
 
 
-
-/* Line 2067 of yacc.c  */
-#line 459 "ldscript.y"
+/* Line 2055 of yacc.c  */
+#line 451 "/home/mark/src/elfutils/src/ldscript.y"
 
 
 static void
@@ -2784,4 +2700,3 @@
     }
   while (versions != NULL);
 }
-
diff --git a/src/src/ldscript.h b/src/src/ldscript.h
index e33b803..6442d67 100644
--- a/src/src/ldscript.h
+++ b/src/src/ldscript.h
@@ -1,8 +1,8 @@
-/* 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
@@ -30,6 +30,15 @@
    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
@@ -97,13 +106,11 @@
 
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 2068 of yacc.c  */
-#line 71 "ldscript.y"
+/* Line 2058 of yacc.c  */
+#line 63 "/home/mark/src/elfutils/src/ldscript.y"
 
   uintmax_t num;
   enum expression_tag op;
@@ -119,9 +126,8 @@
   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 */
@@ -130,4 +136,18 @@
 
 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  */
diff --git a/src/src/ldscript.y b/src/src/ldscript.y
index c2f1971..ec58e21 100644
--- a/src/src/ldscript.y
+++ b/src/src/ldscript.y
@@ -1,29 +1,21 @@
 %{
 /* Parser for linker scripts.
    Copyright (C) 2001-2011 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/nm.c b/src/src/nm.c
index f33302a..4f2e0e7 100644
--- a/src/src/nm.c
+++ b/src/src/nm.c
@@ -1,28 +1,20 @@
 /* Print symbol information from ELF file in human-readable form.
-   Copyright (C) 2000-2008, 2009, 2011, 2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   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.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -771,14 +763,16 @@
     {
       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;
@@ -800,15 +794,6 @@
 	  /* 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;
@@ -826,8 +811,8 @@
 				     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,
@@ -856,9 +841,15 @@
 	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);
 	}
 
@@ -935,19 +926,6 @@
   if (prefix != NULL && ! print_file_name)
     printf ("\n%s:\n", fname);
 
-  static const char *const fmtstrs[] =
-    {
-      [radix_hex] = "%8$s%2$0*1$" PRIx64 "%10$s %9$s%3$c%4$s %5$s",
-      [radix_decimal] = "%8$s%*" PRId64 "%10$s %9$s%3$c%4$s %5$s",
-      [radix_octal] = "%8$s%2$0*1$" PRIo64 "%10$s %9$s%3$c%4$s %5$s"
-    };
-  static const char *const sfmtstrs[] =
-    {
-      [radix_hex] = "%8$s%2$0*1$" PRIx64 "%10$s %7$0*6$" PRIx64 " %9$s%3$c%4$s %5$s",
-      [radix_decimal] = "%8$s%2$*1$" PRId64 "%10$s %7$*6$" PRId64 " %9$s%3$c%4$s %5$s",
-      [radix_octal] = "%8$s%2$0*1$" PRIo64 "%10$s %7$0*6$" PRIo64 " %9$s%3$c%4$s %5$s"
-    };
-
 #ifdef USE_DEMANGLE
   size_t demangle_buffer_len = 0;
   char *demangle_buffer = NULL;
@@ -971,8 +949,8 @@
 	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,
@@ -1022,16 +1000,41 @@
 	      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,
-		  digits, (uint64_t) syms[cnt].sym.st_size,
-		  color_mode ? color_address : "",
-		  color,
-		  color_mode ? color_off : "");
+	  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)
@@ -1053,14 +1056,6 @@
   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
@@ -1082,8 +1077,8 @@
 	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,
@@ -1102,7 +1097,11 @@
 	  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
@@ -1250,8 +1249,8 @@
 	    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,
diff --git a/src/src/objdump.c b/src/src/objdump.c
index e2fcfbf..87290cc 100644
--- a/src/src/objdump.c
+++ b/src/src/objdump.c
@@ -1,28 +1,20 @@
 /* Print information from ELF file in human-readable form.
-   Copyright (C) 2005, 2006, 2007, 2009, 2011, 2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005, 2006, 2007, 2009, 2011, 2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -397,7 +389,7 @@
 					   ? xndx : sym->st_shndx),
 			       &destshdr_mem);
 
-      if (shdr == NULL)
+      if (shdr == NULL || destshdr == NULL)
 	printf ("<%s %ld>",
 		gettext ("INVALID SECTION"),
 		(long int) (sym->st_shndx == SHN_XINDEX
@@ -426,7 +418,8 @@
 		 Elf_Data *symdata, Elf_Data *xndxdata, size_t symstrndx,
 		 size_t shstrndx)
 {
-  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;
 
   for (int cnt = 0; cnt < nentries; ++cnt)
     {
@@ -446,7 +439,8 @@
 		  Elf_Data *symdata, Elf_Data *xndxdata, size_t symstrndx,
 		  size_t shstrndx)
 {
-  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;
 
   for (int cnt = 0; cnt < nentries; ++cnt)
     {
@@ -468,13 +462,13 @@
     return true;
 
   struct section_list *runp = section_list;
+  const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
 
   do
     {
       if (runp->is_name)
 	{
-	  if (strcmp (runp->name,
-		      elf_strptr (elf, shstrndx, shdr->sh_name)) == 0)
+	  if (name && strcmp (runp->name, name) == 0)
 	    return true;
 	}
       else
@@ -514,6 +508,8 @@
 	  GElf_Shdr *destshdr = gelf_getshdr (elf_getscn (ebl->elf,
 							  shdr->sh_info),
 					      &destshdr_mem);
+	  if (unlikely (destshdr == NULL))
+	    continue;
 
 	  printf (gettext ("\nRELOCATION RECORDS FOR [%s]:\n"
 			   "%-*s TYPE                 VALUE\n"),
@@ -530,6 +526,8 @@
 	  GElf_Shdr symshdr_mem;
 	  GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem);
 	  Elf_Data *symdata = elf_getdata (symscn, NULL);
+	  if (unlikely (symshdr == NULL || symdata == NULL))
+	    continue;
 
 	  /* Search for the optional extended section index table.  */
 	  Elf_Data *xndxdata = NULL;
diff --git a/src/src/ranlib.c b/src/src/ranlib.c
index d30fc32..8435fc1 100644
--- a/src/src/ranlib.c
+++ b/src/src/ranlib.c
@@ -1,28 +1,20 @@
 /* Generate an index to speed access to archives.
    Copyright (C) 2005-2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/readelf.c b/src/src/readelf.c
index 8876688..df0a874 100644
--- a/src/src/readelf.c
+++ b/src/src/readelf.c
@@ -1,28 +1,20 @@
 /* Print information from ELF file in human-readable form.
-   Copyright (C) 1999-2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 1999-2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1999.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -50,6 +42,7 @@
 #include <unistd.h>
 #include <sys/param.h>
 #include <sys/stat.h>
+#include <signal.h>
 
 #include <system.h>
 #include "../libelf/libelfP.h"
@@ -59,6 +52,8 @@
 #include "../libdwfl/libdwflP.h"
 #include "../libdw/memory-access.h"
 
+#include "../libdw/known-dwarf.h"
+
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
@@ -67,9 +62,16 @@
 /* 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 },
@@ -93,8 +95,8 @@
   { 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, 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,
@@ -106,6 +108,8 @@
   { 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 }
@@ -127,6 +131,8 @@
   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.  */
 
@@ -175,6 +181,15 @@
 /* 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
 {
@@ -191,10 +206,12 @@
   section_ranges = 512, 	/* .debug_ranges  */
   section_exception = 1024,	/* .eh_frame & al.  */
   section_gdb_index = 2048,	/* .gdb_index  */
+  section_macro = 4096,		/* .debug_macro  */
   section_all = (section_abbrev | section_aranges | section_frame
 		 | section_info | section_line | section_loc
 		 | section_pubnames | section_str | section_macinfo
-		 | section_ranges | section_exception | section_gdb_index)
+		 | section_ranges | section_exception | section_gdb_index
+		 | section_macro)
 } print_debug_sections, implicit_debug_sections;
 
 /* Select hex dumping of sections.  */
@@ -381,6 +398,11 @@
 	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;
@@ -397,12 +419,19 @@
 	}
       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)
 	print_debug_sections |= section_str;
       else if (strcmp (arg, "macinfo") == 0)
 	print_debug_sections |= section_macinfo;
+      else if (strcmp (arg, "macro") == 0)
+	print_debug_sections |= section_macro;
       else if (strcmp (arg, "exception") == 0)
 	print_debug_sections |= section_exception;
       else if (strcmp (arg, "gdb_index") == 0)
@@ -432,6 +461,9 @@
     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;
@@ -447,6 +479,12 @@
       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;
     }
@@ -468,6 +506,121 @@
 }
 
 
+/* 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)
@@ -540,18 +693,32 @@
   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.  */
@@ -564,6 +731,21 @@
   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))
@@ -608,6 +790,11 @@
       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);
 }
 
 
@@ -970,7 +1157,7 @@
 static void
 print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
 {
-  if (ehdr->e_phnum == 0)
+  if (phnum == 0)
     /* No program header, this is OK in relocatable objects.  */
     return;
 
@@ -1014,11 +1201,28 @@
 
       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);
 	}
@@ -1191,6 +1395,8 @@
   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",
@@ -1203,8 +1409,8 @@
 		      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);
 
@@ -1355,10 +1561,12 @@
 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);
@@ -1370,21 +1578,26 @@
     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);
@@ -1533,7 +1746,8 @@
 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);
@@ -1680,12 +1894,15 @@
 		    elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name));
 	  else
 	    {
-	      destshdr = gelf_getshdr (elf_getscn (ebl->elf,
-						   sym->st_shndx == SHN_XINDEX
-						   ? xndx : sym->st_shndx),
-				       &destshdr_mem);
+	      /* This is a relocation against a STT_SECTION symbol.  */
+	      GElf_Shdr secshdr_mem;
+	      GElf_Shdr *secshdr;
+	      secshdr = gelf_getshdr (elf_getscn (ebl->elf,
+						  sym->st_shndx == SHN_XINDEX
+						  ? xndx : sym->st_shndx),
+				      &secshdr_mem);
 
-	      if (unlikely (destshdr == NULL))
+	      if (unlikely (secshdr == NULL))
 		printf ("  %#0*" PRIx64 "  %-20s <%s %ld>\n",
 			class == ELFCLASS32 ? 10 : 18, rel->r_offset,
 			ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info))
@@ -1707,7 +1924,7 @@
 					       buf, sizeof (buf)) + 2
 			: gettext ("<INVALID RELOC>"),
 			class == ELFCLASS32 ? 10 : 18, sym->st_value,
-			elf_strptr (ebl->elf, shstrndx, destshdr->sh_name));
+			elf_strptr (ebl->elf, shstrndx, secshdr->sh_name));
 	    }
 	}
     }
@@ -1719,7 +1936,8 @@
 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);
@@ -1756,7 +1974,8 @@
     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",
@@ -1767,6 +1986,19 @@
 	  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")
@@ -1856,12 +2088,15 @@
 		    elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name));
 	  else
 	    {
-	      destshdr = gelf_getshdr (elf_getscn (ebl->elf,
-						   sym->st_shndx == SHN_XINDEX
-						   ? xndx : sym->st_shndx),
-				       &destshdr_mem);
+	      /* This is a relocation against a STT_SECTION symbol.  */
+	      GElf_Shdr secshdr_mem;
+	      GElf_Shdr *secshdr;
+	      secshdr = gelf_getshdr (elf_getscn (ebl->elf,
+						  sym->st_shndx == SHN_XINDEX
+						  ? xndx : sym->st_shndx),
+				      &secshdr_mem);
 
-	      if (unlikely (shdr == NULL))
+	      if (unlikely (secshdr == NULL))
 		printf ("  %#0*" PRIx64 "  %-15s <%s %ld>\n",
 			class == ELFCLASS32 ? 10 : 18, rel->r_offset,
 			ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info))
@@ -1885,7 +2120,7 @@
 			: gettext ("<INVALID RELOC>"),
 			class == ELFCLASS32 ? 10 : 18, sym->st_value,
 			rel->r_addend,
-			elf_strptr (ebl->elf, shstrndx, destshdr->sh_name));
+			elf_strptr (ebl->elf, shstrndx, secshdr->sh_name));
 	    }
 	}
     }
@@ -1966,6 +2201,13 @@
     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)
@@ -1976,15 +2218,12 @@
 		    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 ("\
@@ -2220,7 +2459,13 @@
     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",
 		    "\
@@ -2231,9 +2476,7 @@
 	  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; )
@@ -2263,10 +2506,16 @@
 		  get_ver_flags (aux->vna_flags),
 		  (unsigned short int) aux->vna_other);
 
+	  if (aux->vna_next == 0)
+	    break;
+
 	  auxoffset += aux->vna_next;
 	}
 
       /* Find the next offset.  */
+      if (need->vn_next == 0)
+	break;
+
       offset += need->vn_next;
     }
 }
@@ -2286,8 +2535,14 @@
     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",
 		    "\
@@ -2299,9 +2554,7 @@
 	  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; )
@@ -2337,10 +2590,15 @@
 		  auxoffset, cnt2,
 		  elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name));
 
+	  if (aux->vda_next == 0)
+	    break;
+
 	  auxoffset += aux->vda_next;
 	}
 
       /* Find the next offset.  */
+      if (def->vd_next == 0)
+	break;
       offset += def->vd_next;
     }
 }
@@ -2419,6 +2677,8 @@
 
 	      nvername = MAX (nvername, (size_t) (def->vd_ndx & 0x7fff));
 
+	      if (def->vd_next == 0)
+		break;
 	      offset += def->vd_next;
 	    }
 	}
@@ -2463,9 +2723,13 @@
 		  nvername = MAX (nvername,
 				  (size_t) (aux->vna_other & 0x7fff));
 
+		  if (aux->vna_next == 0)
+		    break;
 		  auxoffset += aux->vna_next;
 		}
 
+	      if (need->vn_next == 0)
+		break;
 	      offset += need->vn_next;
 	    }
 	}
@@ -2475,7 +2739,9 @@
 
       /* Allocate the array.  */
       vername = (const char **) alloca (nvername * sizeof (const char *));
+      memset(vername, 0, nvername * sizeof (const char *));
       filename = (const char **) alloca (nvername * sizeof (const char *));
+      memset(filename, 0, nvername * sizeof (const char *));
 
       /* Run through the data structures again and collect the strings.  */
       if (defscn != NULL)
@@ -2501,17 +2767,22 @@
 	      /* Get the data at the next offset.  */
 	      GElf_Verdef defmem;
 	      GElf_Verdef *def = gelf_getverdef (defdata, offset, &defmem);
+	      if (unlikely (def == NULL))
+		break;
+
 	      GElf_Verdaux auxmem;
 	      GElf_Verdaux *aux = gelf_getverdaux (defdata,
 						   offset + def->vd_aux,
 						   &auxmem);
-	      if (unlikely (def == NULL || aux == NULL))
+	      if (unlikely (aux == NULL))
 		break;
 
 	      vername[def->vd_ndx & 0x7fff]
 		= elf_strptr (ebl->elf, defshdr->sh_link, aux->vda_name);
 	      filename[def->vd_ndx & 0x7fff] = NULL;
 
+	      if (def->vd_next == 0)
+		break;
 	      offset += def->vd_next;
 	    }
 	}
@@ -2549,9 +2820,13 @@
 		  filename[aux->vna_other & 0x7fff]
 		    = elf_strptr (ebl->elf, needshdr->sh_link, need->vn_file);
 
+		  if (aux->vna_next == 0)
+		    break;
 		  auxoffset += aux->vna_next;
 		}
 
+	      if (need->vn_next == 0)
+		break;
 	      offset += need->vn_next;
 	    }
 	}
@@ -2563,25 +2838,30 @@
       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);
@@ -2607,10 +2887,11 @@
 	default:
 	  n = printf ("%4d%c%s",
 		      *sym & 0x7fff, *sym & 0x8000 ? 'h' : ' ',
-		      (unsigned int) (*sym & 0x7fff) < nvername
+		      (vername != NULL
+		       && (unsigned int) (*sym & 0x7fff) < nvername)
 		      ? vername[*sym & 0x7fff] : "???");
 	  if ((unsigned int) (*sym & 0x7fff) < nvername
-	      && filename[*sym & 0x7fff] != NULL)
+	      && filename != NULL && filename[*sym & 0x7fff] != NULL)
 	    n += printf ("(%s)", filename[*sym & 0x7fff]);
 	  printf ("%*s", MAX (0, 33 - (int) n), " ");
 	  break;
@@ -2630,7 +2911,17 @@
   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",
 		    "\
@@ -2643,9 +2934,7 @@
 	  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);
@@ -2700,8 +2989,21 @@
       return;
     }
 
+  if (unlikely (data->d_size < 2 * sizeof (Elf32_Word)))
+    {
+    invalid_data:
+      error (0, 0, gettext ("invalid data in sysv.hash section %d"),
+	     (int) elf_ndxscn (scn));
+      return;
+    }
+
   Elf32_Word nbucket = ((Elf32_Word *) data->d_buf)[0];
   Elf32_Word nchain = ((Elf32_Word *) data->d_buf)[1];
+
+  uint64_t used_buf = (2ULL + nchain + nbucket) * sizeof (Elf32_Word);
+  if (used_buf > data->d_size)
+    goto invalid_data;
+
   Elf32_Word *bucket = &((Elf32_Word *) data->d_buf)[2];
   Elf32_Word *chain = &((Elf32_Word *) data->d_buf)[2 + nbucket];
 
@@ -2742,8 +3044,23 @@
       return;
     }
 
+  if (unlikely (data->d_size < 2 * sizeof (Elf64_Xword)))
+    {
+    invalid_data:
+      error (0, 0, gettext ("invalid data in sysv.hash64 section %d"),
+	     (int) elf_ndxscn (scn));
+      return;
+    }
+
   Elf64_Xword nbucket = ((Elf64_Xword *) data->d_buf)[0];
   Elf64_Xword nchain = ((Elf64_Xword *) data->d_buf)[1];
+
+  uint64_t maxwords = data->d_size / sizeof (Elf64_Xword);
+  if (maxwords < 2
+      || maxwords - 2 < nbucket
+      || maxwords - 2 - nbucket < nchain)
+    goto invalid_data;
+
   Elf64_Xword *bucket = &((Elf64_Xword *) data->d_buf)[2];
   Elf64_Xword *chain = &((Elf64_Xword *) data->d_buf)[2 + nbucket];
 
@@ -2783,18 +3100,37 @@
       return;
     }
 
+  if (unlikely (data->d_size < 4 * sizeof (Elf32_Word)))
+    {
+    invalid_data:
+      error (0, 0, gettext ("invalid data in gnu.hash section %d"),
+	     (int) elf_ndxscn (scn));
+      return;
+    }
+
   Elf32_Word nbucket = ((Elf32_Word *) data->d_buf)[0];
   Elf32_Word symbias = ((Elf32_Word *) data->d_buf)[1];
 
   /* Next comes the size of the bitmap.  It's measured in words for
      the architecture.  It's 32 bits for 32 bit archs, and 64 bits for
-     64 bit archs.  */
+     64 bit archs.  There is always a bloom filter present, so zero is
+     an invalid value.  */
   Elf32_Word bitmask_words = ((Elf32_Word *) data->d_buf)[2];
   if (gelf_getclass (ebl->elf) == ELFCLASS64)
     bitmask_words *= 2;
 
+  if (bitmask_words == 0)
+    goto invalid_data;
+
   Elf32_Word shift = ((Elf32_Word *) data->d_buf)[3];
 
+  /* Is there still room for the sym chain?
+     Use uint64_t calculation to prevent 32bit overlow.  */
+  uint64_t used_buf = (4ULL + bitmask_words + nbucket) * sizeof (Elf32_Word);
+  uint32_t max_nsyms = (data->d_size - used_buf) / sizeof (Elf32_Word);
+  if (used_buf > data->d_size)
+    goto invalid_data;
+
   uint32_t *lengths = (uint32_t *) xcalloc (nbucket, sizeof (uint32_t));
 
   Elf32_Word *bitmask = &((Elf32_Word *) data->d_buf)[4];
@@ -2814,6 +3150,8 @@
 	    ++nsyms;
 	    if (maxlength < ++lengths[cnt])
 	      ++maxlength;
+	    if (inner > max_nsyms)
+	      goto invalid_data;
 	  }
 	while ((chain[inner++] & 1) == 0);
       }
@@ -2905,7 +3243,8 @@
 
       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",
 			    "\
@@ -2978,11 +3317,12 @@
 	      shdr->sh_size, shdr->sh_offset);
 
       Elf_Data *data = elf_rawdata (scn, NULL);
-      if (data == NULL)
+      if (unlikely (data == NULL || data->d_size == 0))
 	return;
 
       const unsigned char *p = data->d_buf;
 
+      /* There is only one 'version', A.  */
       if (unlikely (*p++ != 'A'))
 	return;
 
@@ -2993,8 +3333,10 @@
 	return (const unsigned char *) data->d_buf + data->d_size - p;
       }
 
+      /* Loop over the sections.  */
       while (left () >= 4)
 	{
+	  /* Section length.  */
 	  uint32_t len;
 	  memcpy (&len, p, sizeof len);
 
@@ -3004,25 +3346,29 @@
 	  if (unlikely (len > left ()))
 	    break;
 
+	  /* Section vendor name.  */
 	  const unsigned char *name = p + sizeof len;
 	  p += len;
 
 	  unsigned const char *q = memchr (name, '\0', len);
 	  if (unlikely (q == NULL))
-	    continue;
+	    break;
 	  ++q;
 
 	  printf (gettext ("  %-13s  %4" PRIu32 "\n"), name, len);
 
+	  bool gnu_vendor = (q - name == sizeof "gnu"
+			     && !memcmp (name, "gnu", sizeof "gnu"));
+
+	  /* Loop over subsections.  */
 	  if (shdr->sh_type != SHT_GNU_ATTRIBUTES
-	      || (q - name == sizeof "gnu"
-		  && !memcmp (name, "gnu", sizeof "gnu")))
+	      || gnu_vendor)
 	    while (q < p)
 	      {
 		const unsigned char *const sub = q;
 
 		unsigned int subsection_tag;
-		get_uleb128 (subsection_tag, q);
+		get_uleb128 (subsection_tag, q, p);
 		if (unlikely (q >= p))
 		  break;
 
@@ -3035,7 +3381,10 @@
 		if (MY_ELFDATA != ehdr->e_ident[EI_DATA])
 		  CONVERT (subsection_len);
 
-		if (unlikely (p - sub < (ptrdiff_t) subsection_len))
+		/* Don't overflow, ptrdiff_t might be 32bits, but signed.  */
+		if (unlikely (subsection_len == 0
+			      || subsection_len >= (uint32_t) PTRDIFF_MAX
+			      || p - sub < (ptrdiff_t) subsection_len))
 		  break;
 
 		const unsigned char *r = q + sizeof subsection_len;
@@ -3044,6 +3393,7 @@
 		switch (subsection_tag)
 		  {
 		  default:
+		    /* Unknown subsection, print and skip.  */
 		    printf (gettext ("    %-4u %12" PRIu32 "\n"),
 			    subsection_tag, subsection_len);
 		    break;
@@ -3055,20 +3405,34 @@
 		    while (r < q)
 		      {
 			unsigned int tag;
-			get_uleb128 (tag, r);
+			get_uleb128 (tag, r, q);
 			if (unlikely (r >= q))
 			  break;
 
+			/* GNU style tags have either a uleb128 value,
+			   when lowest bit is not set, or a string
+			   when the lowest bit is set.
+			   "compatibility" (32) is special.  It has
+			   both a string and a uleb128 value.  For
+			   non-gnu we assume 6 till 31 only take ints.
+			   XXX see arm backend, do we need a separate
+			   hook?  */
 			uint64_t value = 0;
 			const char *string = NULL;
-			if (tag == 32 || (tag & 1) == 0)
+			if (tag == 32 || (tag & 1) == 0
+			    || (! gnu_vendor && (tag > 5 && tag < 32)))
 			  {
-			    get_uleb128 (value, r);
+			    get_uleb128 (value, r, q);
 			    if (r > q)
 			      break;
 			  }
-			if (tag == 32 || (tag & 1) != 0)
+			if (tag == 32
+			    || ((tag & 1) != 0
+				&& (gnu_vendor
+				    || (! gnu_vendor && tag > 32)))
+			    || (! gnu_vendor && tag > 3 && tag < 6))
 			  {
+			    string = (const char *) r;
 			    r = memchr (r, '\0', q - r);
 			    if (r == NULL)
 			      break;
@@ -3095,7 +3459,10 @@
 			  }
 			else
 			  {
-			    assert (tag != 32);
+			    /* For "gnu" vendor 32 "compatibility" has
+			       already been handled above.  */
+			    assert (tag != 32
+				    || strcmp ((const char *) name, "gnu"));
 			    if (string == NULL)
 			      printf (gettext ("      %u: %" PRId64 "\n"),
 				      tag, value);
@@ -3113,43 +3480,52 @@
 
 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,
@@ -3188,521 +3564,58 @@
 static const char *
 dwarf_tag_string (unsigned int tag)
 {
-  static const char *const known_tags[]  =
+  switch (tag)
     {
-      [DW_TAG_array_type] = "array_type",
-      [DW_TAG_class_type] = "class_type",
-      [DW_TAG_entry_point] = "entry_point",
-      [DW_TAG_enumeration_type] = "enumeration_type",
-      [DW_TAG_formal_parameter] = "formal_parameter",
-      [DW_TAG_imported_declaration] = "imported_declaration",
-      [DW_TAG_label] = "label",
-      [DW_TAG_lexical_block] = "lexical_block",
-      [DW_TAG_member] = "member",
-      [DW_TAG_pointer_type] = "pointer_type",
-      [DW_TAG_reference_type] = "reference_type",
-      [DW_TAG_compile_unit] = "compile_unit",
-      [DW_TAG_string_type] = "string_type",
-      [DW_TAG_structure_type] = "structure_type",
-      [DW_TAG_subroutine_type] = "subroutine_type",
-      [DW_TAG_typedef] = "typedef",
-      [DW_TAG_union_type] = "union_type",
-      [DW_TAG_unspecified_parameters] = "unspecified_parameters",
-      [DW_TAG_variant] = "variant",
-      [DW_TAG_common_block] = "common_block",
-      [DW_TAG_common_inclusion] = "common_inclusion",
-      [DW_TAG_inheritance] = "inheritance",
-      [DW_TAG_inlined_subroutine] = "inlined_subroutine",
-      [DW_TAG_module] = "module",
-      [DW_TAG_ptr_to_member_type] = "ptr_to_member_type",
-      [DW_TAG_set_type] = "set_type",
-      [DW_TAG_subrange_type] = "subrange_type",
-      [DW_TAG_with_stmt] = "with_stmt",
-      [DW_TAG_access_declaration] = "access_declaration",
-      [DW_TAG_base_type] = "base_type",
-      [DW_TAG_catch_block] = "catch_block",
-      [DW_TAG_const_type] = "const_type",
-      [DW_TAG_constant] = "constant",
-      [DW_TAG_enumerator] = "enumerator",
-      [DW_TAG_file_type] = "file_type",
-      [DW_TAG_friend] = "friend",
-      [DW_TAG_namelist] = "namelist",
-      [DW_TAG_namelist_item] = "namelist_item",
-      [DW_TAG_packed_type] = "packed_type",
-      [DW_TAG_subprogram] = "subprogram",
-      [DW_TAG_template_type_parameter] = "template_type_parameter",
-      [DW_TAG_template_value_parameter] = "template_value_parameter",
-      [DW_TAG_thrown_type] = "thrown_type",
-      [DW_TAG_try_block] = "try_block",
-      [DW_TAG_variant_part] = "variant_part",
-      [DW_TAG_variable] = "variable",
-      [DW_TAG_volatile_type] = "volatile_type",
-      [DW_TAG_dwarf_procedure] = "dwarf_procedure",
-      [DW_TAG_restrict_type] = "restrict_type",
-      [DW_TAG_interface_type] = "interface_type",
-      [DW_TAG_namespace] = "namespace",
-      [DW_TAG_imported_module] = "imported_module",
-      [DW_TAG_unspecified_type] = "unspecified_type",
-      [DW_TAG_partial_unit] = "partial_unit",
-      [DW_TAG_imported_unit] = "imported_unit",
-      [DW_TAG_mutable_type] = "mutable_type",
-      [DW_TAG_condition] = "condition",
-      [DW_TAG_shared_type] = "shared_type",
-      [DW_TAG_type_unit] = "type_unit",
-      [DW_TAG_rvalue_reference_type] = "rvalue_reference_type",
-      [DW_TAG_template_alias] = "template_alias",
-    };
-  const unsigned int nknown_tags = (sizeof (known_tags)
-				    / sizeof (known_tags[0]));
-  static char buf[40];
-  const char *result = NULL;
-
-  if (likely (tag < nknown_tags))
-    result = known_tags[tag];
-
-  if (unlikely (result == NULL))
-    /* There are a few known extensions.  */
-    switch (tag)
-      {
-      case DW_TAG_MIPS_loop:
-	result = "MIPS_loop";
-	break;
-
-      case DW_TAG_format_label:
-	result = "format_label";
-	break;
-
-      case DW_TAG_function_template:
-	result = "function_template";
-	break;
-
-      case DW_TAG_class_template:
-	result = "class_template";
-	break;
-
-      case DW_TAG_GNU_BINCL:
-	result = "GNU_BINCL";
-	break;
-
-      case DW_TAG_GNU_EINCL:
-	result = "GNU_EINCL";
-	break;
-
-      case DW_TAG_GNU_template_template_param:
-	result = "GNU_template_template_param";
-	break;
-
-      case DW_TAG_GNU_template_parameter_pack:
-	result = "GNU_template_parameter_pack";
-	break;
-
-      case DW_TAG_GNU_formal_parameter_pack:
-	result = "GNU_formal_parameter_pack";
-	break;
-
-      case DW_TAG_GNU_call_site:
-	result = "GNU_call_site";
-	break;
-
-      case DW_TAG_GNU_call_site_parameter:
-	result = "GNU_call_site_parameter";
-	break;
-
-      default:
-	if (tag < DW_TAG_lo_user)
-	  snprintf (buf, sizeof buf, gettext ("unknown tag %hx"), tag);
-	else
-	  snprintf (buf, sizeof buf, gettext ("unknown user tag %hx"), tag);
-	result = buf;
-	break;
-      }
-
-  return result;
+#define ONE_KNOWN_DW_TAG(NAME, CODE) case CODE: return #NAME;
+      ALL_KNOWN_DW_TAG
+#undef ONE_KNOWN_DW_TAG
+    default:
+      return NULL;
+    }
 }
 
 
 static const char *
 dwarf_attr_string (unsigned int attrnum)
 {
-  static const char *const known_attrs[] =
+  switch (attrnum)
     {
-      [DW_AT_sibling] = "sibling",
-      [DW_AT_location] = "location",
-      [DW_AT_name] = "name",
-      [DW_AT_ordering] = "ordering",
-      [DW_AT_subscr_data] = "subscr_data",
-      [DW_AT_byte_size] = "byte_size",
-      [DW_AT_bit_offset] = "bit_offset",
-      [DW_AT_bit_size] = "bit_size",
-      [DW_AT_element_list] = "element_list",
-      [DW_AT_stmt_list] = "stmt_list",
-      [DW_AT_low_pc] = "low_pc",
-      [DW_AT_high_pc] = "high_pc",
-      [DW_AT_language] = "language",
-      [DW_AT_member] = "member",
-      [DW_AT_discr] = "discr",
-      [DW_AT_discr_value] = "discr_value",
-      [DW_AT_visibility] = "visibility",
-      [DW_AT_import] = "import",
-      [DW_AT_string_length] = "string_length",
-      [DW_AT_common_reference] = "common_reference",
-      [DW_AT_comp_dir] = "comp_dir",
-      [DW_AT_const_value] = "const_value",
-      [DW_AT_containing_type] = "containing_type",
-      [DW_AT_default_value] = "default_value",
-      [DW_AT_inline] = "inline",
-      [DW_AT_is_optional] = "is_optional",
-      [DW_AT_lower_bound] = "lower_bound",
-      [DW_AT_producer] = "producer",
-      [DW_AT_prototyped] = "prototyped",
-      [DW_AT_return_addr] = "return_addr",
-      [DW_AT_start_scope] = "start_scope",
-      [DW_AT_bit_stride] = "bit_stride",
-      [DW_AT_upper_bound] = "upper_bound",
-      [DW_AT_abstract_origin] = "abstract_origin",
-      [DW_AT_accessibility] = "accessibility",
-      [DW_AT_address_class] = "address_class",
-      [DW_AT_artificial] = "artificial",
-      [DW_AT_base_types] = "base_types",
-      [DW_AT_calling_convention] = "calling_convention",
-      [DW_AT_count] = "count",
-      [DW_AT_data_member_location] = "data_member_location",
-      [DW_AT_decl_column] = "decl_column",
-      [DW_AT_decl_file] = "decl_file",
-      [DW_AT_decl_line] = "decl_line",
-      [DW_AT_declaration] = "declaration",
-      [DW_AT_discr_list] = "discr_list",
-      [DW_AT_encoding] = "encoding",
-      [DW_AT_external] = "external",
-      [DW_AT_frame_base] = "frame_base",
-      [DW_AT_friend] = "friend",
-      [DW_AT_identifier_case] = "identifier_case",
-      [DW_AT_macro_info] = "macro_info",
-      [DW_AT_namelist_item] = "namelist_item",
-      [DW_AT_priority] = "priority",
-      [DW_AT_segment] = "segment",
-      [DW_AT_specification] = "specification",
-      [DW_AT_static_link] = "static_link",
-      [DW_AT_type] = "type",
-      [DW_AT_use_location] = "use_location",
-      [DW_AT_variable_parameter] = "variable_parameter",
-      [DW_AT_virtuality] = "virtuality",
-      [DW_AT_vtable_elem_location] = "vtable_elem_location",
-      [DW_AT_allocated] = "allocated",
-      [DW_AT_associated] = "associated",
-      [DW_AT_data_location] = "data_location",
-      [DW_AT_byte_stride] = "byte_stride",
-      [DW_AT_entry_pc] = "entry_pc",
-      [DW_AT_use_UTF8] = "use_UTF8",
-      [DW_AT_extension] = "extension",
-      [DW_AT_ranges] = "ranges",
-      [DW_AT_trampoline] = "trampoline",
-      [DW_AT_call_column] = "call_column",
-      [DW_AT_call_file] = "call_file",
-      [DW_AT_call_line] = "call_line",
-      [DW_AT_description] = "description",
-      [DW_AT_binary_scale] = "binary_scale",
-      [DW_AT_decimal_scale] = "decimal_scale",
-      [DW_AT_small] = "small",
-      [DW_AT_decimal_sign] = "decimal_sign",
-      [DW_AT_digit_count] = "digit_count",
-      [DW_AT_picture_string] = "picture_string",
-      [DW_AT_mutable] = "mutable",
-      [DW_AT_threads_scaled] = "threads_scaled",
-      [DW_AT_explicit] = "explicit",
-      [DW_AT_object_pointer] = "object_pointer",
-      [DW_AT_endianity] = "endianity",
-      [DW_AT_elemental] = "elemental",
-      [DW_AT_pure] = "pure",
-      [DW_AT_recursive] = "recursive",
-      [DW_AT_signature] = "signature",
-      [DW_AT_main_subprogram] = "main_subprogram",
-      [DW_AT_data_bit_offset] = "data_bit_offset",
-      [DW_AT_const_expr] = "const_expr",
-      [DW_AT_enum_class] = "enum_class",
-      [DW_AT_linkage_name] = "linkage_name",
-    };
-  const unsigned int nknown_attrs = (sizeof (known_attrs)
-				     / sizeof (known_attrs[0]));
-  static char buf[40];
-  const char *result = NULL;
-
-  if (likely (attrnum < nknown_attrs))
-    result = known_attrs[attrnum];
-
-  if (unlikely (result == NULL))
-    /* There are a few known extensions.  */
-    switch (attrnum)
-      {
-      case DW_AT_MIPS_fde:
-	result = "MIPS_fde";
-	break;
-
-      case DW_AT_MIPS_loop_begin:
-	result = "MIPS_loop_begin";
-	break;
-
-      case DW_AT_MIPS_tail_loop_begin:
-	result = "MIPS_tail_loop_begin";
-	break;
-
-      case DW_AT_MIPS_epilog_begin:
-	result = "MIPS_epilog_begin";
-	break;
-
-      case DW_AT_MIPS_loop_unroll_factor:
-	result = "MIPS_loop_unroll_factor";
-	break;
-
-      case DW_AT_MIPS_software_pipeline_depth:
-	result = "MIPS_software_pipeline_depth";
-	break;
-
-      case DW_AT_MIPS_linkage_name:
-	result = "MIPS_linkage_name";
-	break;
-
-      case DW_AT_MIPS_stride:
-	result = "MIPS_stride";
-	break;
-
-      case DW_AT_MIPS_abstract_name:
-	result = "MIPS_abstract_name";
-	break;
-
-      case DW_AT_MIPS_clone_origin:
-	result = "MIPS_clone_origin";
-	break;
-
-      case DW_AT_MIPS_has_inlines:
-	result = "MIPS_has_inlines";
-	break;
-
-      case DW_AT_MIPS_stride_byte:
-	result = "MIPS_stride_byte";
-	break;
-
-      case DW_AT_MIPS_stride_elem:
-	result = "MIPS_stride_elem";
-	break;
-
-      case DW_AT_MIPS_ptr_dopetype:
-	result = "MIPS_ptr_dopetype";
-	break;
-
-      case DW_AT_MIPS_allocatable_dopetype:
-	result = "MIPS_allocatable_dopetype";
-	break;
-
-      case DW_AT_MIPS_assumed_shape_dopetype:
-	result = "MIPS_assumed_shape_dopetype";
-	break;
-
-      case DW_AT_MIPS_assumed_size:
-	result = "MIPS_assumed_size";
-	break;
-
-      case DW_AT_sf_names:
-	result = "sf_names";
-	break;
-
-      case DW_AT_src_info:
-	result = "src_info";
-	break;
-
-      case DW_AT_mac_info:
-	result = "mac_info";
-	break;
-
-      case DW_AT_src_coords:
-	result = "src_coords";
-	break;
-
-      case DW_AT_body_begin:
-	result = "body_begin";
-	break;
-
-      case DW_AT_body_end:
-	result = "body_end";
-	break;
-
-      case DW_AT_GNU_vector:
-	result = "GNU_vector";
-	break;
-
-      case DW_AT_GNU_guarded_by:
-	result = "GNU_guarded_by";
-	break;
-
-      case DW_AT_GNU_pt_guarded_by:
-	result = "GNU_pt_guarded_by";
-	break;
-
-      case DW_AT_GNU_guarded:
-	result = "GNU_guarded";
-	break;
-
-      case DW_AT_GNU_pt_guarded:
-	result = "GNU_pt_guarded";
-	break;
-
-      case DW_AT_GNU_locks_excluded:
-	result = "GNU_locks_excluded";
-	break;
-
-      case DW_AT_GNU_exclusive_locks_required:
-	result = "GNU_exclusive_locks_required";
-	break;
-
-      case DW_AT_GNU_shared_locks_required:
-	result = "GNU_shared_locks_required";
-	break;
-
-      case DW_AT_GNU_odr_signature:
-	result = "GNU_odr_signature";
-	break;
-
-      case DW_AT_GNU_template_name:
-	result = "GNU_template_name";
-	break;
-
-      case DW_AT_GNU_call_site_value:
-	result = "GNU_call_site_value";
-	break;
-
-      case DW_AT_GNU_call_site_data_value:
-	result = "GNU_call_site_data_value";
-	break;
-
-      case DW_AT_GNU_call_site_target:
-	result = "GNU_call_site_target";
-	break;
-
-      case DW_AT_GNU_call_site_target_clobbered:
-	result = "GNU_call_site_target_clobbered";
-	break;
-
-      case DW_AT_GNU_tail_call:
-	result = "GNU_tail_call";
-	break;
-
-      case DW_AT_GNU_all_tail_call_sites:
-	result = "GNU_all_tail_call_sites";
-	break;
-
-      case DW_AT_GNU_all_call_sites:
-	result = "GNU_all_call_sites";
-	break;
-
-      case DW_AT_GNU_all_source_call_sites:
-	result = "GNU_all_source_call_sites";
-	break;
-
-      default:
-	if (attrnum < DW_AT_lo_user)
-	  snprintf (buf, sizeof buf, gettext ("unknown attribute %hx"),
-		    attrnum);
-	else
-	  snprintf (buf, sizeof buf, gettext ("unknown user attribute %hx"),
-		    attrnum);
-	result = buf;
-	break;
-      }
-
-  return result;
+#define ONE_KNOWN_DW_AT(NAME, CODE) case CODE: return #NAME;
+      ALL_KNOWN_DW_AT
+#undef ONE_KNOWN_DW_AT
+    default:
+      return NULL;
+    }
 }
 
 
 static const char *
 dwarf_form_string (unsigned int form)
 {
-  static const char *const known_forms[] =
+  switch (form)
     {
-      [DW_FORM_addr] = "addr",
-      [DW_FORM_block2] = "block2",
-      [DW_FORM_block4] = "block4",
-      [DW_FORM_data2] = "data2",
-      [DW_FORM_data4] = "data4",
-      [DW_FORM_data8] = "data8",
-      [DW_FORM_string] = "string",
-      [DW_FORM_block] = "block",
-      [DW_FORM_block1] = "block1",
-      [DW_FORM_data1] = "data1",
-      [DW_FORM_flag] = "flag",
-      [DW_FORM_sdata] = "sdata",
-      [DW_FORM_strp] = "strp",
-      [DW_FORM_udata] = "udata",
-      [DW_FORM_ref_addr] = "ref_addr",
-      [DW_FORM_ref1] = "ref1",
-      [DW_FORM_ref2] = "ref2",
-      [DW_FORM_ref4] = "ref4",
-      [DW_FORM_ref8] = "ref8",
-      [DW_FORM_ref_udata] = "ref_udata",
-      [DW_FORM_indirect] = "indirect",
-      [DW_FORM_sec_offset] = "sec_offset",
-      [DW_FORM_exprloc] = "exprloc",
-      [DW_FORM_flag_present] = "flag_present",
-      [DW_FORM_ref_sig8] = "ref_sig8",
-    };
-  const unsigned int nknown_forms = (sizeof (known_forms)
-				     / sizeof (known_forms[0]));
-  static char buf[40];
-  const char *result = NULL;
-
-  if (likely (form < nknown_forms))
-    result = known_forms[form];
-
-  if (unlikely (result == NULL))
-    {
-      snprintf (buf, sizeof buf, gettext ("unknown form %#" PRIx64),
-		(uint64_t) form);
-      result = buf;
+#define ONE_KNOWN_DW_FORM_DESC(NAME, CODE, DESC) ONE_KNOWN_DW_FORM (NAME, CODE)
+#define ONE_KNOWN_DW_FORM(NAME, CODE) case CODE: return #NAME;
+      ALL_KNOWN_DW_FORM
+#undef ONE_KNOWN_DW_FORM
+#undef ONE_KNOWN_DW_FORM_DESC
+    default:
+      return NULL;
     }
-
-  return result;
 }
 
 
 static const char *
 dwarf_lang_string (unsigned int lang)
 {
-  static const char *const known[] =
+  switch (lang)
     {
-      [DW_LANG_C89] = "ISO C89",
-      [DW_LANG_C] = "C",
-      [DW_LANG_Ada83] = "Ada83",
-      [DW_LANG_C_plus_plus] = "C++",
-      [DW_LANG_Cobol74] = "Cobol74",
-      [DW_LANG_Cobol85] = "Cobol85",
-      [DW_LANG_Fortran77] = "Fortran77",
-      [DW_LANG_Fortran90] = "Fortran90",
-      [DW_LANG_Pascal83] = "Pascal83",
-      [DW_LANG_Modula2] = "Modula2",
-      [DW_LANG_Java] = "Java",
-      [DW_LANG_C99] = "ISO C99",
-      [DW_LANG_Ada95] = "Ada95",
-      [DW_LANG_Fortran95] = "Fortran95",
-      [DW_LANG_PL1] = "PL1",
-      [DW_LANG_Objc] = "Objective C",
-      [DW_LANG_ObjC_plus_plus] = "Objective C++",
-      [DW_LANG_UPC] = "UPC",
-      [DW_LANG_D] = "D",
-    };
-
-  if (likely (lang < sizeof (known) / sizeof (known[0])))
-    return known[lang];
-  else if (lang == DW_LANG_Mips_Assembler)
-    /* This language tag is used for assembler in general.  */
-    return "Assembler";
-
-  if (lang >= DW_LANG_lo_user && lang <= DW_LANG_hi_user)
-    {
-      static char buf[30];
-      snprintf (buf, sizeof (buf), "lo_user+%u", lang - DW_LANG_lo_user);
-      return buf;
+#define ONE_KNOWN_DW_LANG_DESC(NAME, CODE, DESC) case CODE: return #NAME;
+      ALL_KNOWN_DW_LANG
+#undef ONE_KNOWN_DW_LANG_DESC
+    default:
+      return NULL;
     }
-
-  return "???";
 }
 
 
@@ -3711,16 +3624,15 @@
 {
   static const char *const known[] =
     {
-      [DW_INL_not_inlined] = "not_inlined",
-      [DW_INL_inlined] = "inlined",
-      [DW_INL_declared_not_inlined] = "declared_not_inlined",
-      [DW_INL_declared_inlined] = "declared_inlined"
+#define ONE_KNOWN_DW_INL(NAME, CODE) [CODE] = #NAME,
+      ALL_KNOWN_DW_INL
+#undef ONE_KNOWN_DW_INL
     };
 
   if (likely (code < sizeof (known) / sizeof (known[0])))
     return known[code];
 
-  return "???";
+  return NULL;
 }
 
 
@@ -3729,35 +3641,15 @@
 {
   static const char *const known[] =
     {
-      [DW_ATE_void] = "void",
-      [DW_ATE_address] = "address",
-      [DW_ATE_boolean] = "boolean",
-      [DW_ATE_complex_float] = "complex_float",
-      [DW_ATE_float] = "float",
-      [DW_ATE_signed] = "signed",
-      [DW_ATE_signed_char] = "signed_char",
-      [DW_ATE_unsigned] = "unsigned",
-      [DW_ATE_unsigned_char] = "unsigned_char",
-      [DW_ATE_imaginary_float] = "imaginary_float",
-      [DW_ATE_packed_decimal] = "packed_decimal",
-      [DW_ATE_numeric_string] = "numeric_string",
-      [DW_ATE_edited] = "edited",
-      [DW_ATE_signed_fixed] = "signed_fixed",
-      [DW_ATE_unsigned_fixed] = "unsigned_fixed",
-      [DW_ATE_decimal_float] = "decimal_float",
+#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];
 
-  if (code >= DW_ATE_lo_user && code <= DW_ATE_hi_user)
-    {
-      static char buf[30];
-      snprintf (buf, sizeof (buf), "lo_user+%u", code - DW_ATE_lo_user);
-      return buf;
-    }
-
-  return "???";
+  return NULL;
 }
 
 
@@ -3766,15 +3658,15 @@
 {
   static const char *const known[] =
     {
-      [DW_ACCESS_public] = "public",
-      [DW_ACCESS_protected] = "protected",
-      [DW_ACCESS_private] = "private"
+#define ONE_KNOWN_DW_ACCESS(NAME, CODE) [CODE] = #NAME,
+      ALL_KNOWN_DW_ACCESS
+#undef ONE_KNOWN_DW_ACCESS
     };
 
   if (likely (code < sizeof (known) / sizeof (known[0])))
     return known[code];
 
-  return "???";
+  return NULL;
 }
 
 
@@ -3783,15 +3675,15 @@
 {
   static const char *const known[] =
     {
-      [DW_VIS_local] = "local",
-      [DW_VIS_exported] = "exported",
-      [DW_VIS_qualified] = "qualified"
+#define ONE_KNOWN_DW_VIS(NAME, CODE) [CODE] = #NAME,
+      ALL_KNOWN_DW_VIS
+#undef ONE_KNOWN_DW_VIS
     };
 
   if (likely (code < sizeof (known) / sizeof (known[0])))
     return known[code];
 
-  return "???";
+  return NULL;
 }
 
 
@@ -3800,15 +3692,15 @@
 {
   static const char *const known[] =
     {
-      [DW_VIRTUALITY_none] = "none",
-      [DW_VIRTUALITY_virtual] = "virtual",
-      [DW_VIRTUALITY_pure_virtual] = "pure_virtual"
+#define ONE_KNOWN_DW_VIRTUALITY(NAME, CODE) [CODE] = #NAME,
+      ALL_KNOWN_DW_VIRTUALITY
+#undef ONE_KNOWN_DW_VIRTUALITY
     };
 
   if (likely (code < sizeof (known) / sizeof (known[0])))
     return known[code];
 
-  return "???";
+  return NULL;
 }
 
 
@@ -3817,16 +3709,15 @@
 {
   static const char *const known[] =
     {
-      [DW_ID_case_sensitive] = "sensitive",
-      [DW_ID_up_case] = "up_case",
-      [DW_ID_down_case] = "down_case",
-      [DW_ID_case_insensitive] = "insensitive"
+#define ONE_KNOWN_DW_ID(NAME, CODE) [CODE] = #NAME,
+      ALL_KNOWN_DW_ID
+#undef ONE_KNOWN_DW_ID
     };
 
   if (likely (code < sizeof (known) / sizeof (known[0])))
     return known[code];
 
-  return "???";
+  return NULL;
 }
 
 
@@ -3835,22 +3726,15 @@
 {
   static const char *const known[] =
     {
-      [DW_CC_normal] = "normal",
-      [DW_CC_program] = "program",
-      [DW_CC_nocall] = "nocall",
+#define ONE_KNOWN_DW_CC(NAME, CODE) [CODE] = #NAME,
+      ALL_KNOWN_DW_CC
+#undef ONE_KNOWN_DW_CC
     };
 
   if (likely (code < sizeof (known) / sizeof (known[0])))
     return known[code];
 
-  if (code >= DW_CC_lo_user && code <= DW_CC_hi_user)
-    {
-      static char buf[30];
-      snprintf (buf, sizeof (buf), "lo_user+%u", code - DW_CC_lo_user);
-      return buf;
-    }
-
-  return "???";
+  return NULL;
 }
 
 
@@ -3859,14 +3743,15 @@
 {
   static const char *const known[] =
     {
-      [DW_ORD_row_major] = "row_major",
-      [DW_ORD_col_major] = "col_major"
+#define ONE_KNOWN_DW_ORD(NAME, CODE) [CODE] = #NAME,
+      ALL_KNOWN_DW_ORD
+#undef ONE_KNOWN_DW_ORD
     };
 
   if (likely (code < sizeof (known) / sizeof (known[0])))
     return known[code];
 
-  return "???";
+  return NULL;
 }
 
 
@@ -3875,17 +3760,171 @@
 {
   static const char *const known[] =
     {
-      [DW_DSC_label] = "label",
-      [DW_DSC_range] = "range"
+#define ONE_KNOWN_DW_DSC(NAME, CODE) [CODE] = #NAME,
+      ALL_KNOWN_DW_DSC
+#undef ONE_KNOWN_DW_DSC
     };
 
   if (likely (code < sizeof (known) / sizeof (known[0])))
     return known[code];
 
+  return NULL;
+}
+
+
+static const char *
+dwarf_locexpr_opcode_string (unsigned int code)
+{
+  static const char *const known[] =
+    {
+      /* Normally we can't affort building huge table of 64K entries,
+	 most of them zero, just because there are a couple defined
+	 values at the far end.  In case of opcodes, it's OK.  */
+#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;
+}
+
+
+/* Used by all dwarf_foo_name functions.  */
+static const char *
+string_or_unknown (const char *known, unsigned int code,
+                   unsigned int lo_user, unsigned int hi_user,
+		   bool print_unknown_num)
+{
+  static char unknown_buf[20];
+
+  if (likely (known != NULL))
+    return known;
+
+  if (lo_user != 0 && code >= lo_user && code <= hi_user)
+    {
+      snprintf (unknown_buf, sizeof unknown_buf, "lo_user+%#x",
+		code - lo_user);
+      return unknown_buf;
+    }
+
+  if (print_unknown_num)
+    {
+      snprintf (unknown_buf, sizeof unknown_buf, "??? (%#x)", code);
+      return unknown_buf;
+    }
+
   return "???";
 }
 
 
+static const char *
+dwarf_tag_name (unsigned int tag)
+{
+  const char *ret = dwarf_tag_string (tag);
+  return string_or_unknown (ret, tag, DW_TAG_lo_user, DW_TAG_hi_user, true);
+}
+
+static const char *
+dwarf_attr_name (unsigned int attr)
+{
+  const char *ret = dwarf_attr_string (attr);
+  return string_or_unknown (ret, attr, DW_AT_lo_user, DW_AT_hi_user, true);
+}
+
+
+static const char *
+dwarf_form_name (unsigned int form)
+{
+  const char *ret = dwarf_form_string (form);
+  return string_or_unknown (ret, form, 0, 0, true);
+}
+
+
+static const char *
+dwarf_lang_name (unsigned int lang)
+{
+  const char *ret = dwarf_lang_string (lang);
+  return string_or_unknown (ret, lang, DW_LANG_lo_user, DW_LANG_hi_user, false);
+}
+
+
+static const char *
+dwarf_inline_name (unsigned int code)
+{
+  const char *ret = dwarf_inline_string (code);
+  return string_or_unknown (ret, code, 0, 0, false);
+}
+
+
+static const char *
+dwarf_encoding_name (unsigned int code)
+{
+  const char *ret = dwarf_encoding_string (code);
+  return string_or_unknown (ret, code, DW_ATE_lo_user, DW_ATE_hi_user, false);
+}
+
+
+static const char *
+dwarf_access_name (unsigned int code)
+{
+  const char *ret = dwarf_access_string (code);
+  return string_or_unknown (ret, code, 0, 0, false);
+}
+
+
+static const char *
+dwarf_visibility_name (unsigned int code)
+{
+  const char *ret = dwarf_visibility_string (code);
+  return string_or_unknown (ret, code, 0, 0, false);
+}
+
+
+static const char *
+dwarf_virtuality_name (unsigned int code)
+{
+  const char *ret = dwarf_virtuality_string (code);
+  return string_or_unknown (ret, code, 0, 0, false);
+}
+
+
+static const char *
+dwarf_identifier_case_name (unsigned int code)
+{
+  const char *ret = dwarf_identifier_case_string (code);
+  return string_or_unknown (ret, code, 0, 0, false);
+}
+
+
+static const char *
+dwarf_calling_convention_name (unsigned int code)
+{
+  const char *ret = dwarf_calling_convention_string (code);
+  return string_or_unknown (ret, code, DW_CC_lo_user, DW_CC_hi_user, false);
+}
+
+
+static const char *
+dwarf_ordering_name (unsigned int code)
+{
+  const char *ret = dwarf_ordering_string (code);
+  return string_or_unknown (ret, code, 0, 0, false);
+}
+
+
+static const char *
+dwarf_discr_list_name (unsigned int code)
+{
+  const char *ret = dwarf_discr_list_string (code);
+  return string_or_unknown (ret, code, 0, 0, false);
+}
+
+
 static void
 print_block (size_t n, const void *block)
 {
@@ -3905,175 +3944,10 @@
 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;
 
-  static const char *const known[] =
-    {
-      [DW_OP_addr] = "addr",
-      [DW_OP_deref] = "deref",
-      [DW_OP_const1u] = "const1u",
-      [DW_OP_const1s] = "const1s",
-      [DW_OP_const2u] = "const2u",
-      [DW_OP_const2s] = "const2s",
-      [DW_OP_const4u] = "const4u",
-      [DW_OP_const4s] = "const4s",
-      [DW_OP_const8u] = "const8u",
-      [DW_OP_const8s] = "const8s",
-      [DW_OP_constu] = "constu",
-      [DW_OP_consts] = "consts",
-      [DW_OP_dup] = "dup",
-      [DW_OP_drop] = "drop",
-      [DW_OP_over] = "over",
-      [DW_OP_pick] = "pick",
-      [DW_OP_swap] = "swap",
-      [DW_OP_rot] = "rot",
-      [DW_OP_xderef] = "xderef",
-      [DW_OP_abs] = "abs",
-      [DW_OP_and] = "and",
-      [DW_OP_div] = "div",
-      [DW_OP_minus] = "minus",
-      [DW_OP_mod] = "mod",
-      [DW_OP_mul] = "mul",
-      [DW_OP_neg] = "neg",
-      [DW_OP_not] = "not",
-      [DW_OP_or] = "or",
-      [DW_OP_plus] = "plus",
-      [DW_OP_plus_uconst] = "plus_uconst",
-      [DW_OP_shl] = "shl",
-      [DW_OP_shr] = "shr",
-      [DW_OP_shra] = "shra",
-      [DW_OP_xor] = "xor",
-      [DW_OP_bra] = "bra",
-      [DW_OP_eq] = "eq",
-      [DW_OP_ge] = "ge",
-      [DW_OP_gt] = "gt",
-      [DW_OP_le] = "le",
-      [DW_OP_lt] = "lt",
-      [DW_OP_ne] = "ne",
-      [DW_OP_skip] = "skip",
-      [DW_OP_lit0] = "lit0",
-      [DW_OP_lit1] = "lit1",
-      [DW_OP_lit2] = "lit2",
-      [DW_OP_lit3] = "lit3",
-      [DW_OP_lit4] = "lit4",
-      [DW_OP_lit5] = "lit5",
-      [DW_OP_lit6] = "lit6",
-      [DW_OP_lit7] = "lit7",
-      [DW_OP_lit8] = "lit8",
-      [DW_OP_lit9] = "lit9",
-      [DW_OP_lit10] = "lit10",
-      [DW_OP_lit11] = "lit11",
-      [DW_OP_lit12] = "lit12",
-      [DW_OP_lit13] = "lit13",
-      [DW_OP_lit14] = "lit14",
-      [DW_OP_lit15] = "lit15",
-      [DW_OP_lit16] = "lit16",
-      [DW_OP_lit17] = "lit17",
-      [DW_OP_lit18] = "lit18",
-      [DW_OP_lit19] = "lit19",
-      [DW_OP_lit20] = "lit20",
-      [DW_OP_lit21] = "lit21",
-      [DW_OP_lit22] = "lit22",
-      [DW_OP_lit23] = "lit23",
-      [DW_OP_lit24] = "lit24",
-      [DW_OP_lit25] = "lit25",
-      [DW_OP_lit26] = "lit26",
-      [DW_OP_lit27] = "lit27",
-      [DW_OP_lit28] = "lit28",
-      [DW_OP_lit29] = "lit29",
-      [DW_OP_lit30] = "lit30",
-      [DW_OP_lit31] = "lit31",
-      [DW_OP_reg0] = "reg0",
-      [DW_OP_reg1] = "reg1",
-      [DW_OP_reg2] = "reg2",
-      [DW_OP_reg3] = "reg3",
-      [DW_OP_reg4] = "reg4",
-      [DW_OP_reg5] = "reg5",
-      [DW_OP_reg6] = "reg6",
-      [DW_OP_reg7] = "reg7",
-      [DW_OP_reg8] = "reg8",
-      [DW_OP_reg9] = "reg9",
-      [DW_OP_reg10] = "reg10",
-      [DW_OP_reg11] = "reg11",
-      [DW_OP_reg12] = "reg12",
-      [DW_OP_reg13] = "reg13",
-      [DW_OP_reg14] = "reg14",
-      [DW_OP_reg15] = "reg15",
-      [DW_OP_reg16] = "reg16",
-      [DW_OP_reg17] = "reg17",
-      [DW_OP_reg18] = "reg18",
-      [DW_OP_reg19] = "reg19",
-      [DW_OP_reg20] = "reg20",
-      [DW_OP_reg21] = "reg21",
-      [DW_OP_reg22] = "reg22",
-      [DW_OP_reg23] = "reg23",
-      [DW_OP_reg24] = "reg24",
-      [DW_OP_reg25] = "reg25",
-      [DW_OP_reg26] = "reg26",
-      [DW_OP_reg27] = "reg27",
-      [DW_OP_reg28] = "reg28",
-      [DW_OP_reg29] = "reg29",
-      [DW_OP_reg30] = "reg30",
-      [DW_OP_reg31] = "reg31",
-      [DW_OP_breg0] = "breg0",
-      [DW_OP_breg1] = "breg1",
-      [DW_OP_breg2] = "breg2",
-      [DW_OP_breg3] = "breg3",
-      [DW_OP_breg4] = "breg4",
-      [DW_OP_breg5] = "breg5",
-      [DW_OP_breg6] = "breg6",
-      [DW_OP_breg7] = "breg7",
-      [DW_OP_breg8] = "breg8",
-      [DW_OP_breg9] = "breg9",
-      [DW_OP_breg10] = "breg10",
-      [DW_OP_breg11] = "breg11",
-      [DW_OP_breg12] = "breg12",
-      [DW_OP_breg13] = "breg13",
-      [DW_OP_breg14] = "breg14",
-      [DW_OP_breg15] = "breg15",
-      [DW_OP_breg16] = "breg16",
-      [DW_OP_breg17] = "breg17",
-      [DW_OP_breg18] = "breg18",
-      [DW_OP_breg19] = "breg19",
-      [DW_OP_breg20] = "breg20",
-      [DW_OP_breg21] = "breg21",
-      [DW_OP_breg22] = "breg22",
-      [DW_OP_breg23] = "breg23",
-      [DW_OP_breg24] = "breg24",
-      [DW_OP_breg25] = "breg25",
-      [DW_OP_breg26] = "breg26",
-      [DW_OP_breg27] = "breg27",
-      [DW_OP_breg28] = "breg28",
-      [DW_OP_breg29] = "breg29",
-      [DW_OP_breg30] = "breg30",
-      [DW_OP_breg31] = "breg31",
-      [DW_OP_regx] = "regx",
-      [DW_OP_fbreg] = "fbreg",
-      [DW_OP_bregx] = "bregx",
-      [DW_OP_piece] = "piece",
-      [DW_OP_deref_size] = "deref_size",
-      [DW_OP_xderef_size] = "xderef_size",
-      [DW_OP_nop] = "nop",
-      [DW_OP_push_object_address] = "push_object_address",
-      [DW_OP_call2] = "call2",
-      [DW_OP_call4] = "call4",
-      [DW_OP_call_ref] = "call_ref",
-      [DW_OP_form_tls_address] = "form_tls_address",
-      [DW_OP_call_frame_cfa] = "call_frame_cfa",
-      [DW_OP_bit_piece] = "bit_piece",
-      [DW_OP_implicit_value] = "implicit_value",
-      [DW_OP_stack_value] = "stack_value",
-      [DW_OP_GNU_implicit_pointer] = "GNU_implicit_pointer",
-      [DW_OP_GNU_entry_value] = "GNU_entry_value",
-      [DW_OP_GNU_const_type] = "GNU_const_type",
-      [DW_OP_GNU_regval_type] = "GNU_regval_type",
-      [DW_OP_GNU_deref_type] = "GNU_deref_type",
-      [DW_OP_GNU_convert] = "GNU_convert",
-      [DW_OP_GNU_reinterpret] = "GNU_reinterpret",
-    };
-
   if (len == 0)
     {
       printf ("%*s(empty)\n", indent, "");
@@ -4088,6 +3962,17 @@
     {
       uint_fast8_t op = *data++;
 
+      const char *op_name = dwarf_locexpr_opcode_string (op);
+      if (unlikely (op_name == NULL))
+	{
+	  static char buf[20];
+	  if (op >= DW_OP_lo_user)
+	    snprintf (buf, sizeof buf, "lo_user+%#x", op - DW_OP_lo_user);
+	  else
+	    snprintf (buf, sizeof buf, "??? (%#x)", op);
+	  op_name = buf;
+	}
+
       switch (op)
 	{
 	case DW_OP_addr:;
@@ -4096,17 +3981,16 @@
 	  NEED (addrsize);
 	  if (addrsize == 4)
 	    addr = read_4ubyte_unaligned (dbg, data);
+	  else if (addrsize == 8)
+	    addr = read_8ubyte_unaligned (dbg, data);
 	  else
-	    {
-	      assert (addrsize == 8);
-	      addr = read_8ubyte_unaligned (dbg, data);
-	    }
+	    goto invalid;
 	  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, known[op], a);
+		  indent, "", (uintmax_t) offset, op_name, a);
 	  free (a);
 
 	  offset += 1 + addrsize;
@@ -4114,20 +3998,19 @@
 
 	case DW_OP_call_ref:
 	  /* Offset operand.  */
+	  if (ref_size != 4 && ref_size != 8)
+	    goto invalid; /* Cannot be used in CFA.  */
 	  NEED (ref_size);
 	  if (ref_size == 4)
 	    addr = read_4ubyte_unaligned (dbg, data);
 	  else
-	    {
-	      assert (ref_size == 8);
-	      addr = read_8ubyte_unaligned (dbg, data);
-	    }
+	    addr = read_8ubyte_unaligned (dbg, data);
 	  data += ref_size;
 	  CONSUME (ref_size);
 
 	  printf ("%*s[%4" PRIuMAX "] %s %#" PRIxMAX "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], (uintmax_t) addr);
+		  op_name, (uintmax_t) addr);
 	  offset += 1 + ref_size;
 	  break;
 
@@ -4139,7 +4022,7 @@
 	  NEED (1);
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu8 "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], *((uint8_t *) data));
+		  op_name, *((uint8_t *) data));
 	  ++data;
 	  --len;
 	  offset += 2;
@@ -4150,7 +4033,7 @@
 	  // XXX value might be modified by relocation
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu16 "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], read_2ubyte_unaligned (dbg, data));
+		  op_name, read_2ubyte_unaligned (dbg, data));
 	  CONSUME (2);
 	  data += 2;
 	  offset += 3;
@@ -4161,7 +4044,7 @@
 	  // XXX value might be modified by relocation
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu32 "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], read_4ubyte_unaligned (dbg, data));
+		  op_name, read_4ubyte_unaligned (dbg, data));
 	  CONSUME (4);
 	  data += 4;
 	  offset += 5;
@@ -4172,7 +4055,7 @@
 	  // XXX value might be modified by relocation
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu64 "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], read_8ubyte_unaligned (dbg, data));
+		  op_name, (uint64_t) read_8ubyte_unaligned (dbg, data));
 	  CONSUME (8);
 	  data += 8;
 	  offset += 9;
@@ -4183,7 +4066,7 @@
 	  // XXX value might be modified by relocation
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRId8 "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], *((int8_t *) data));
+		  op_name, *((int8_t *) data));
 	  ++data;
 	  --len;
 	  offset += 2;
@@ -4194,7 +4077,7 @@
 	  // XXX value might be modified by relocation
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRId16 "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], read_2sbyte_unaligned (dbg, data));
+		  op_name, read_2sbyte_unaligned (dbg, data));
 	  CONSUME (2);
 	  data += 2;
 	  offset += 3;
@@ -4205,7 +4088,7 @@
 	  // XXX value might be modified by relocation
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRId32 "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], read_4sbyte_unaligned (dbg, data));
+		  op_name, read_4sbyte_unaligned (dbg, data));
 	  CONSUME (4);
 	  data += 4;
 	  offset += 5;
@@ -4216,7 +4099,7 @@
 	  // XXX value might be modified by relocation
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRId64 "\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], read_8sbyte_unaligned (dbg, data));
+		  op_name, read_8sbyte_unaligned (dbg, data));
 	  CONSUME (8);
 	  data += 8;
 	  offset += 9;
@@ -4229,9 +4112,9 @@
 	  const unsigned char *start = data;
 	  uint64_t uleb;
 	  NEED (1);
-	  get_uleb128 (uleb, data); /* XXX check overrun */
+	  get_uleb128 (uleb, data, data + len);
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu64 "\n",
-		  indent, "", (uintmax_t) offset, known[op], uleb);
+		  indent, "", (uintmax_t) offset, op_name, uleb);
 	  CONSUME (data - start);
 	  offset += 1 + (data - start);
 	  break;
@@ -4239,11 +4122,12 @@
 	case DW_OP_bit_piece:
 	  start = data;
 	  uint64_t uleb2;
-	  NEED (2);
-	  get_uleb128 (uleb, data); /* XXX check overrun */
-	  get_uleb128 (uleb2, data); /* XXX check overrun */
+	  NEED (1);
+	  get_uleb128 (uleb, data, data + len);
+	  NEED (1);
+	  get_uleb128 (uleb2, data, data + len);
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu64 ", %" PRIu64 "\n",
-		  indent, "", (uintmax_t) offset, known[op], uleb, uleb2);
+		  indent, "", (uintmax_t) offset, op_name, uleb, uleb2);
 	  CONSUME (data - start);
 	  offset += 1 + (data - start);
 	  break;
@@ -4254,20 +4138,21 @@
 	  start = data;
 	  int64_t sleb;
 	  NEED (1);
-	  get_sleb128 (sleb, data); /* XXX check overrun */
+	  get_sleb128 (sleb, data, data + len);
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRId64 "\n",
-		  indent, "", (uintmax_t) offset, known[op], sleb);
+		  indent, "", (uintmax_t) offset, op_name, sleb);
 	  CONSUME (data - start);
 	  offset += 1 + (data - start);
 	  break;
 
 	case DW_OP_bregx:
 	  start = data;
-	  NEED (2);
-	  get_uleb128 (uleb, data); /* XXX check overrun */
-	  get_sleb128 (sleb, data); /* XXX check overrun */
+	  NEED (1);
+	  get_uleb128 (uleb, data, data + len);
+	  NEED (1);
+	  get_sleb128 (sleb, data, data + len);
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu64 " %" PRId64 "\n",
-		  indent, "", (uintmax_t) offset, known[op], uleb, sleb);
+		  indent, "", (uintmax_t) offset, op_name, uleb, sleb);
 	  CONSUME (data - start);
 	  offset += 1 + (data - start);
 	  break;
@@ -4275,7 +4160,7 @@
 	case DW_OP_call2:
 	  NEED (2);
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu16 "\n",
-		  indent, "", (uintmax_t) offset, known[op],
+		  indent, "", (uintmax_t) offset, op_name,
 		  read_2ubyte_unaligned (dbg, data));
 	  CONSUME (2);
 	  offset += 3;
@@ -4284,7 +4169,7 @@
 	case DW_OP_call4:
 	  NEED (4);
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu32 "\n",
-		  indent, "", (uintmax_t) offset, known[op],
+		  indent, "", (uintmax_t) offset, op_name,
 		  read_4ubyte_unaligned (dbg, data));
 	  CONSUME (4);
 	  offset += 5;
@@ -4294,8 +4179,8 @@
 	case DW_OP_bra:
 	  NEED (2);
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIuMAX "\n",
-		  indent, "", (uintmax_t) offset, known[op],
-		  (uintmax_t) (offset + read_2sbyte_unaligned (dbg, data)));
+		  indent, "", (uintmax_t) offset, op_name,
+		  (uintmax_t) (offset + read_2sbyte_unaligned (dbg, data) + 3));
 	  CONSUME (2);
 	  data += 2;
 	  offset += 3;
@@ -4304,9 +4189,9 @@
 	case DW_OP_implicit_value:
 	  start = data;
 	  NEED (1);
-	  get_uleb128 (uleb, data); /* XXX check overrun */
+	  get_uleb128 (uleb, data, data + len);
 	  printf ("%*s[%4" PRIuMAX "] %s: ",
-		  indent, "", (uintmax_t) offset, known[op]);
+		  indent, "", (uintmax_t) offset, op_name);
 	  NEED (uleb);
 	  print_block (uleb, data);
 	  data += uleb;
@@ -4317,21 +4202,21 @@
 	case DW_OP_GNU_implicit_pointer:
 	  /* DIE offset operand.  */
 	  start = data;
-	  NEED (ref_size + 1);
+	  NEED (ref_size);
+	  if (ref_size != 4 && ref_size != 8)
+	    goto invalid; /* Cannot be used in CFA.  */
 	  if (ref_size == 4)
 	    addr = read_4ubyte_unaligned (dbg, data);
 	  else
-	    {
-	      assert (ref_size == 8);
-	      addr = read_8ubyte_unaligned (dbg, data);
-	    }
+	    addr = read_8ubyte_unaligned (dbg, data);
 	  data += ref_size;
 	  /* Byte offset operand.  */
-	  get_sleb128 (sleb, data); /* XXX check overrun */
+	  NEED (1);
+	  get_sleb128 (sleb, data, data + len);
 
-	  printf ("%*s[%4" PRIuMAX "] %s %#" PRIxMAX ", %+" PRId64 "\n",
+	  printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "] %+" PRId64 "\n",
 		  indent, "", (intmax_t) offset,
-		  known[op], (uintmax_t) addr, sleb);
+		  op_name, (uintmax_t) addr, sleb);
 	  CONSUME (data - start);
 	  offset += 1 + (data - start);
 	  break;
@@ -4340,26 +4225,30 @@
 	  /* Size plus expression block.  */
 	  start = data;
 	  NEED (1);
-	  get_uleb128 (uleb, data); /* XXX check overrun */
+	  get_uleb128 (uleb, data, data + len);
 	  printf ("%*s[%4" PRIuMAX "] %s:\n",
-		  indent, "", (uintmax_t) offset, known[op]);
+		  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 */
+	  NEED (1);
+	  get_uleb128 (uleb, data, data + len);
+	  if (! print_unresolved_addresses && cu != NULL)
+	    uleb += cu->start;
+	  NEED (1);
 	  uint8_t usize = *(uint8_t *) data++;
 	  NEED (usize);
 	  printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "] ",
-		  indent, "", (uintmax_t) offset, known[op], uleb);
+		  indent, "", (uintmax_t) offset, op_name, uleb);
 	  print_block (usize, data);
 	  data += usize;
 	  CONSUME (data - start);
@@ -4367,47 +4256,71 @@
 	  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",
-		  indent, "", (uintmax_t) offset, known[op], uleb, uleb2);
+	  NEED (1);
+	  get_uleb128 (uleb, data, data + len);
+	  NEED (1);
+	  get_uleb128 (uleb2, data, data + len);
+	  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);
+	  NEED (1);
 	  usize = *(uint8_t *) data++;
-	  get_uleb128 (uleb, data); /* XXX check overrun */
+	  NEED (1);
+	  get_uleb128 (uleb, data, data + len);
+	  if (! print_unresolved_addresses && cu != NULL)
+	    uleb += cu->start;
 	  printf ("%*s[%4" PRIuMAX "] %s %" PRIu8 " [%6" PRIxMAX "]\n",
 		  indent, "", (uintmax_t) offset,
-		  known[op], usize, uleb);
+		  op_name, usize, uleb);
 	  CONSUME (data - start);
 	  offset += 1 + (data - start);
 	  break;
 
 	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 */
+	  get_uleb128 (uleb, data, data + len);
+	  if (uleb != 0 && ! print_unresolved_addresses && cu != NULL)
+	    uleb += cu->start;
 	  printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "]\n",
-		  indent, "", (uintmax_t) offset, known[op], uleb);
+		  indent, "", (uintmax_t) offset, op_name, uleb);
 	  CONSUME (data - start);
 	  offset += 1 + (data - start);
 	  break;
 
+	case DW_OP_GNU_parameter_ref:
+	  /* 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, param_off);
+	  CONSUME (4);
+	  data += 4;
+	  offset += 5;
+	  break;
+
 	default:
 	  /* No Operand.  */
-	  if (op < sizeof known / sizeof known[0] && known[op] != NULL)
-	    printf ("%*s[%4" PRIuMAX "] %s\n",
-		    indent, "", (uintmax_t) offset, known[op]);
-	  else
-	    printf ("%*s[%4" PRIuMAX "] %#x\n",
-		    indent, "", (uintmax_t) offset, op);
+	  printf ("%*s[%4" PRIuMAX "] %s\n",
+		  indent, "", (uintmax_t) offset, op_name);
 	  ++offset;
 	  break;
 	}
@@ -4417,7 +4330,7 @@
 
     invalid:
       printf (gettext ("%*s[%4" PRIuMAX "] %s  <TRUNCATED>\n"),
-	      indent, "", (uintmax_t) offset, known[op]);
+	      indent, "", (uintmax_t) offset, op_name);
       break;
     }
 }
@@ -4429,11 +4342,32 @@
   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)
 {
@@ -4462,6 +4396,13 @@
 		 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;
@@ -4485,10 +4426,11 @@
   table->n = table->alloc = 0;
 }
 
-static void
+/* Returns false if offset doesn't fit.  See struct listptr.  */
+static bool
 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)
     {
@@ -4508,10 +4450,17 @@
 	{
 	  .addr64 = address_size == 8,
 	  .dwarf64 = offset_size == 8,
-	  .offset = offset
+	  .offset = offset,
+	  .cu = cu
 	};
-      assert (p->offset == offset);
+
+      if (p->offset != offset)
+	{
+	  table->n--;
+	  return false;
+	}
     }
+  return true;
 }
 
 static void
@@ -4525,7 +4474,8 @@
 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;
@@ -4556,6 +4506,10 @@
     *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;
 }
@@ -4566,13 +4520,16 @@
 			    Ebl *ebl, GElf_Ehdr *ehdr,
 			    Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
 {
+  const size_t sh_size = (dbg->sectiondata[IDX_debug_abbrev] ?
+			  dbg->sectiondata[IDX_debug_abbrev]->d_size : 0);
+
   printf (gettext ("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"
 		   " [ Code]\n"),
 	  elf_ndxscn (scn), section_name (ebl, ehdr, shdr),
 	  (uint64_t) shdr->sh_offset);
 
   Dwarf_Off offset = 0;
-  while (offset < dbg->sectiondata[IDX_debug_abbrev]->d_size)
+  while (offset < sh_size)
     {
       printf (gettext ("\nAbbreviation section at offset %" PRIu64 ":\n"),
 	      offset);
@@ -4607,7 +4564,7 @@
 			   ", children: %s, tag: %s\n"),
 		  code, (int64_t) offset,
 		  has_children ? gettext ("yes") : gettext ("no"),
-		  dwarf_tag_string (tag));
+		  dwarf_tag_name (tag));
 
 	  size_t cnt = 0;
 	  unsigned int name;
@@ -4617,7 +4574,7 @@
 				      &name, &form, &enoffset) == 0)
 	    {
 	      printf ("          attr: %s, form: %s, offset: %#" PRIx64 "\n",
-		      dwarf_attr_string (name), dwarf_form_string (form),
+		      dwarf_attr_name (name), dwarf_form_name (form),
 		      (uint64_t) enoffset);
 
 	      ++cnt;
@@ -4633,9 +4590,8 @@
    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;
@@ -4646,6 +4602,16 @@
       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",
 		    "\
@@ -4687,6 +4653,166 @@
     }
 }
 
+
+/* 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 (unlikely (length > (size_t) (readendp - readp)))
+	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,
@@ -4694,7 +4820,7 @@
 			    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))
     {
@@ -4714,6 +4840,7 @@
   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)
@@ -4721,11 +4848,11 @@
       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;
@@ -4748,9 +4875,10 @@
 
       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.  */
 	{
@@ -4760,8 +4888,10 @@
 	}
       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);
@@ -4787,9 +4917,12 @@
 				 bits ?: &ignore, type ?: &ignore);
   if (n <= 0)
     {
-      snprintf (name, REGNAMESZ, "reg%u", loc->regno);
+      if (loc != NULL)
+	snprintf (name, REGNAMESZ, "reg%u", loc->regno);
+      else
+	snprintf (name, REGNAMESZ, "??? 0x%x", regno);
       if (bits != NULL)
-	*bits = loc->bits;
+	*bits = loc != NULL ? loc->bits : 0;
       if (type != NULL)
 	*type = DW_ATE_unsigned;
       set = "??? unrecognized";
@@ -4797,7 +4930,7 @@
   else
     {
       if (bits != NULL && *bits <= 0)
-	*bits = loc->bits;
+	*bits = loc != NULL ? loc->bits : 0;
       if (type != NULL && *type == DW_ATE_void)
 	*type = DW_ATE_unsigned;
 
@@ -4838,54 +4971,70 @@
 	    puts ("     nop");
 	    break;
 	  case DW_CFA_set_loc:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
 	    op1 += vma_base;
 	    printf ("     set_loc %" PRIu64 "\n", op1 * code_align);
 	    break;
 	  case DW_CFA_advance_loc1:
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
 	    printf ("     advance_loc1 %u to %#" PRIx64 "\n",
 		    *readp, pc += *readp * code_align);
 	    ++readp;
 	    break;
 	  case DW_CFA_advance_loc2:
+	    if ((uint64_t) (endp - readp) < 2)
+	      goto invalid;
 	    op1 = read_2ubyte_unaligned_inc (dbg, readp);
 	    printf ("     advance_loc2 %" PRIu64 " to %#" PRIx64 "\n",
 		    op1, pc += op1 * code_align);
 	    break;
 	  case DW_CFA_advance_loc4:
+	    if ((uint64_t) (endp - readp) < 4)
+	      goto invalid;
 	    op1 = read_4ubyte_unaligned_inc (dbg, readp);
 	    printf ("     advance_loc4 %" PRIu64 " to %#" PRIx64 "\n",
 		    op1, pc += op1 * code_align);
 	    break;
 	  case DW_CFA_offset_extended:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_uleb128 (op2, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op2, readp, endp);
 	    printf ("     offset_extended r%" PRIu64 " (%s) at cfa%+" PRId64
 		    "\n",
 		    op1, regname (op1), op2 * data_align);
 	    break;
 	  case DW_CFA_restore_extended:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
 	    printf ("     restore_extended r%" PRIu64 " (%s)\n",
 		    op1, regname (op1));
 	    break;
 	  case DW_CFA_undefined:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
 	    printf ("     undefined r%" PRIu64 " (%s)\n", op1, regname (op1));
 	    break;
 	  case DW_CFA_same_value:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
 	    printf ("     same_value r%" PRIu64 " (%s)\n", op1, regname (op1));
 	    break;
 	  case DW_CFA_register:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_uleb128 (op2, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op2, readp, endp);
 	    printf ("     register r%" PRIu64 " (%s) in r%" PRIu64 " (%s)\n",
 		    op1, regname (op1), op2, regname (op2));
 	    break;
@@ -4896,83 +5045,123 @@
 	    puts ("     restore_state");
 	    break;
 	  case DW_CFA_def_cfa:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_uleb128 (op2, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op2, readp, endp);
 	    printf ("     def_cfa r%" PRIu64 " (%s) at offset %" PRIu64 "\n",
 		    op1, regname (op1), op2);
 	    break;
 	  case DW_CFA_def_cfa_register:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
 	    printf ("     def_cfa_register r%" PRIu64 " (%s)\n",
 		    op1, regname (op1));
 	    break;
 	  case DW_CFA_def_cfa_offset:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
 	    printf ("     def_cfa_offset %" PRIu64 "\n", op1);
 	    break;
 	  case DW_CFA_def_cfa_expression:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);	/* Length of DW_FORM_block.  */
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);	/* Length of DW_FORM_block.  */
 	    printf ("     def_cfa_expression %" PRIu64 "\n", op1);
-	    print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, op1, readp);
+	    if ((uint64_t) (endp - readp) < op1)
+	      {
+	    invalid:
+	        fputs (gettext ("         <INVALID DATA>\n"), stdout);
+		return;
+	      }
+	    print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, NULL,
+		       op1, readp);
 	    readp += op1;
 	    break;
 	  case DW_CFA_expression:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_uleb128 (op2, readp);	/* Length of DW_FORM_block.  */
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op2, readp, endp);	/* 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);
+	    if ((uint64_t) (endp - readp) < op2)
+	      goto invalid;
+	    print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, NULL,
+		       op2, readp);
 	    readp += op2;
 	    break;
 	  case DW_CFA_offset_extended_sf:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_sleb128 (sop2, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_sleb128 (sop2, readp, endp);
 	    printf ("     offset_extended_sf r%" PRIu64 " (%s) at cfa%+"
 		    PRId64 "\n",
 		    op1, regname (op1), sop2 * data_align);
 	    break;
 	  case DW_CFA_def_cfa_sf:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_sleb128 (sop2, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_sleb128 (sop2, readp, endp);
 	    printf ("     def_cfa_sf r%" PRIu64 " (%s) at offset %" PRId64 "\n",
 		    op1, regname (op1), sop2 * data_align);
 	    break;
 	  case DW_CFA_def_cfa_offset_sf:
-	    // XXX overflow check
-	    get_sleb128 (sop1, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_sleb128 (sop1, readp, endp);
 	    printf ("     def_cfa_offset_sf %" PRId64 "\n", sop1 * data_align);
 	    break;
 	  case DW_CFA_val_offset:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_uleb128 (op2, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op2, readp, endp);
 	    printf ("     val_offset %" PRIu64 " at offset %" PRIu64 "\n",
 		    op1, op2 * data_align);
 	    break;
 	  case DW_CFA_val_offset_sf:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_sleb128 (sop2, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_sleb128 (sop2, readp, endp);
 	    printf ("     val_offset_sf %" PRIu64 " at offset %" PRId64 "\n",
 		    op1, sop2 * data_align);
 	    break;
 	  case DW_CFA_val_expression:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
-	    get_uleb128 (op2, readp);	/* Length of DW_FORM_block.  */
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op2, readp, endp);	/* 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);
+	    if ((uint64_t) (endp - readp) < op2)
+	      goto invalid;
+	    print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0,
+		       NULL, op2, readp);
 	    readp += op2;
 	    break;
 	  case DW_CFA_MIPS_advance_loc8:
+	    if ((uint64_t) (endp - readp) < 8)
+	      goto invalid;
 	    op1 = read_8ubyte_unaligned_inc (dbg, readp);
 	    printf ("     MIPS_advance_loc8 %" PRIu64 " to %#" PRIx64 "\n",
 		    op1, pc += op1 * code_align);
@@ -4981,8 +5170,9 @@
 	    puts ("     GNU_window_save");
 	    break;
 	  case DW_CFA_GNU_args_size:
-	    // XXX overflow check
-	    get_uleb128 (op1, readp);
+	    if ((uint64_t) (endp - readp) < 1)
+	      goto invalid;
+	    get_uleb128 (op1, readp, endp);
 	    printf ("     args_size %" PRIu64 "\n", op1);
 	    break;
 	  default:
@@ -4995,8 +5185,9 @@
       else if (opcode < DW_CFA_restore)
 	{
 	  uint64_t offset;
-	  // XXX overflow check
-	  get_uleb128 (offset, readp);
+	  if ((uint64_t) (endp - readp) < 1)
+	    goto invalid;
+	  get_uleb128 (offset, readp, endp);
 	  printf ("     offset r%u (%s) at cfa%+" PRId64 "\n",
 		  opcode & 0x3f, regname (opcode & 0x3f), offset * data_align);
 	}
@@ -5012,15 +5203,17 @@
 {
   switch (encoding & 7)
     {
-    case 2:
-      return 2;
-    case 3:
+    case DW_EH_PE_udata4:
       return 4;
-    case 4:
+    case DW_EH_PE_udata8:
       return 8;
-    default:
+    case 0:
       return ptr_size;
     }
+
+  fprintf (stderr, "Unsupported pointer encoding: %#x, "
+	   "assuming pointer size of %d.\n", encoding, ptr_size);
+  return ptr_size;
 }
 
 
@@ -5133,12 +5326,10 @@
   switch (encoding & 0xf)
     {
     case DW_EH_PE_uleb128:
-      // XXX buffer overrun check
-      get_uleb128 (*res, readp);
+      get_uleb128 (*res, readp, endp);
       break;
     case DW_EH_PE_sleb128:
-      // XXX buffer overrun check
-      get_sleb128 (*res, readp);
+      get_sleb128 (*res, readp, endp);
       break;
     case DW_EH_PE_udata2:
       if (readp + 2 > endp)
@@ -5189,7 +5380,18 @@
   (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))
     {
@@ -5197,7 +5399,6 @@
 	     scnname, elf_errmsg (-1));
       return;
     }
-  bool is_eh_frame = strcmp (scnname, ".eh_frame") == 0;
 
   if (is_eh_frame)
     printf (gettext ("\
@@ -5254,6 +5455,10 @@
 	  continue;
 	}
 
+      Dwarf_Word maxsize = dataend - readp;
+      if (unlikely (unit_length > maxsize))
+	goto invalid_data;
+
       unsigned int ptr_size = ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 4 : 8;
 
       ptrdiff_t start = readp - (unsigned char *) data->d_buf;
@@ -5297,21 +5502,24 @@
 	      segment_size = *readp++;
 	    }
 
-	  // XXX Check overflow
-	  get_uleb128 (code_alignment_factor, readp);
-	  // XXX Check overflow
-	  get_sleb128 (data_alignment_factor, readp);
+	  if (cieend - readp < 1)
+	    goto invalid_data;
+	  get_uleb128 (code_alignment_factor, readp, cieend);
+	  if (cieend - readp < 1)
+	    goto invalid_data;
+	  get_sleb128 (data_alignment_factor, readp, cieend);
 
 	  /* In some variant for unwind data there is another field.  */
 	  if (strcmp (augmentation, "eh") == 0)
 	    readp += ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 4 : 8;
 
 	  unsigned int return_address_register;
+	  if (cieend - readp < 1)
+	    goto invalid_data;
 	  if (unlikely (version == 1))
 	    return_address_register = *readp++;
 	  else
-	    // XXX Check overflow
-	    get_uleb128 (return_address_register, readp);
+	    get_uleb128 (return_address_register, readp, cieend);
 
 	  printf ("\n [%6tx] CIE length=%" PRIu64 "\n"
 		  "   CIE_id:                   %" PRIu64 "\n"
@@ -5332,14 +5540,18 @@
 	  if (augmentation[0] == 'z')
 	    {
 	      unsigned int augmentationlen;
-	      get_uleb128 (augmentationlen, readp);
+	      get_uleb128 (augmentationlen, readp, cieend);
 
-	      if (augmentationlen > (size_t) (dataend - readp))
-		error (1, 0, gettext ("invalid augmentation length"));
+	      if (augmentationlen > (size_t) (cieend - readp))
+		{
+		  error (0, 0, gettext ("invalid augmentation length"));
+		  readp = cieend;
+		  continue;
+		}
 
 	      const char *hdr = "Augmentation data:";
 	      const char *cp = augmentation + 1;
-	      while (*cp != '\0')
+	      while (*cp != '\0' && cp < augmentation + augmentationlen + 1)
 		{
 		  printf ("   %-26s%#x ", hdr, *readp);
 		  hdr = "";
@@ -5431,12 +5643,25 @@
 
 	  const unsigned char *base = readp;
 	  // XXX There are sometimes relocations for this value
-	  initial_location = read_ubyte_unaligned_inc (ptr_size, dbg, readp);
+	  initial_location = read_addr_unaligned_inc (ptr_size, dbg, readp);
 	  Dwarf_Word address_range
-	    = read_ubyte_unaligned_inc (ptr_size, dbg, readp);
+	    = read_addr_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",
@@ -5468,14 +5693,24 @@
 	  if (cie->augmentation[0] == 'z')
 	    {
 	      unsigned int augmentationlen;
-	      get_uleb128 (augmentationlen, readp);
+	      if (cieend - readp < 1)
+		goto invalid_data;
+	      get_uleb128 (augmentationlen, readp, cieend);
+
+	      if (augmentationlen > (size_t) (cieend - readp))
+		{
+		  error (0, 0, gettext ("invalid augmentation length"));
+		  readp = cieend;
+		  continue;
+		}
 
 	      if (augmentationlen > 0)
 		{
 		  const char *hdr = "Augmentation data:";
 		  const char *cp = cie->augmentation + 1;
 		  unsigned int u = 0;
-		  while (*cp != '\0')
+		  while (*cp != '\0'
+			 && cp < cie->augmentation + augmentationlen + 1)
 		    {
 		      if (*cp == 'L')
 			{
@@ -5505,9 +5740,12 @@
 	}
 
       /* Handle the initialization instructions.  */
-      print_cfa_program (readp, cieend, vma_base, code_alignment_factor,
-			 data_alignment_factor, version, ptr_size,
-			 dwflmod, ebl, dbg);
+      if (ptr_size != 4 && ptr_size !=8)
+	printf ("invalid CIE pointer size (%u), must be 4 or 8.\n", ptr_size);
+      else
+	print_cfa_program (readp, cieend, vma_base, code_alignment_factor,
+			   data_alignment_factor, version, ptr_size,
+			   dwflmod, ebl, dbg);
       readp = cieend;
     }
 }
@@ -5517,12 +5755,13 @@
 {
   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;
 };
 
 
@@ -5564,10 +5803,11 @@
 		       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_string (attr),
-		  dwarf_form_string (form), a);
+		  (int) (level * 2), "", dwarf_attr_name (attr),
+		  dwarf_form_name (form), a);
 	  free (a);
 	}
       break;
@@ -5575,14 +5815,15 @@
     case DW_FORM_indirect:
     case DW_FORM_strp:
     case DW_FORM_string:
+    case DW_FORM_GNU_strp_alt:
       if (cbargs->silent)
 	break;
       const char *str = dwarf_formstring (attrp);
       if (unlikely (str == NULL))
 	goto attrval_out;
       printf ("           %*s%-20s (%s) \"%s\"\n",
-	      (int) (level * 2), "", dwarf_attr_string (attr),
-	      dwarf_form_string (form), str);
+	      (int) (level * 2), "", dwarf_attr_name (attr),
+	      dwarf_form_name (form), str);
       break;
 
     case DW_FORM_ref_addr:
@@ -5590,7 +5831,8 @@
     case DW_FORM_ref8:
     case DW_FORM_ref4:
     case DW_FORM_ref2:
-    case DW_FORM_ref1:;
+    case DW_FORM_ref1:
+    case DW_FORM_GNU_ref_alt:
       if (cbargs->silent)
 	break;
       Dwarf_Die ref;
@@ -5598,17 +5840,17 @@
 	goto attrval_out;
 
       printf ("           %*s%-20s (%s) [%6" PRIxMAX "]\n",
-	      (int) (level * 2), "", dwarf_attr_string (attr),
-	      dwarf_form_string (form), (uintmax_t) dwarf_dieoffset (&ref));
+	      (int) (level * 2), "", dwarf_attr_name (attr),
+	      dwarf_form_name (form), (uintmax_t) dwarf_dieoffset (&ref));
       break;
 
     case DW_FORM_ref_sig8:
       if (cbargs->silent)
 	break;
       printf ("           %*s%-20s (%s) {%6" PRIx64 "}\n",
-	      (int) (level * 2), "", dwarf_attr_string (attr),
-	      dwarf_form_string (form),
-	      read_8ubyte_unaligned (attrp->cu->dbg, attrp->valp));
+	      (int) (level * 2), "", dwarf_attr_name (attr),
+	      dwarf_form_name (form),
+	      (uint64_t) read_8ubyte_unaligned (attrp->cu->dbg, attrp->valp));
       break;
 
     case DW_FORM_sec_offset:
@@ -5633,8 +5875,8 @@
 	    {
 	      if (!cbargs->silent)
 		printf ("           %*s%-20s (%s) %" PRIxMAX "\n",
-			(int) (level * 2), "", dwarf_attr_string (attr),
-			dwarf_form_string (form), (uintmax_t) num);
+			(int) (level * 2), "", dwarf_attr_name (attr),
+			dwarf_form_name (form), (uintmax_t) num);
 	      return DWARF_CB_OK;
 	    }
 	  /* else fallthrough */
@@ -5652,52 +5894,60 @@
 	case DW_AT_GNU_call_site_data_value:
 	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);
-	  if (!cbargs->silent)
-	    printf ("           %*s%-20s (%s) location list [%6" PRIxMAX "]\n",
-		    (int) (level * 2), "", dwarf_attr_string (attr),
-		    dwarf_form_string (form), (uintmax_t) num);
+	  {
+	    bool nlpt = notice_listptr (section_loc, &known_loclistptr,
+					cbargs->addrsize, cbargs->offset_size,
+					cbargs->cu, num);
+	    if (!cbargs->silent)
+	      printf ("           %*s%-20s (%s) location list [%6" PRIxMAX "]%s\n",
+		      (int) (level * 2), "", dwarf_attr_name (attr),
+		      dwarf_form_name (form), (uintmax_t) num,
+		      nlpt ? "" : " <WARNING offset too big>");
+	  }
 	  return DWARF_CB_OK;
 
 	case DW_AT_ranges:
-	  notice_listptr (section_ranges, &known_rangelistptr,
-			  cbargs->addrsize, cbargs->offset_size, num);
-	  if (!cbargs->silent)
-	    printf ("           %*s%-20s (%s) range list [%6" PRIxMAX "]\n",
-		    (int) (level * 2), "", dwarf_attr_string (attr),
-		    dwarf_form_string (form), (uintmax_t) num);
+	  {
+	    bool nlpt = notice_listptr (section_ranges, &known_rangelistptr,
+					cbargs->addrsize, cbargs->offset_size,
+					cbargs->cu, num);
+	    if (!cbargs->silent)
+	      printf ("           %*s%-20s (%s) range list [%6" PRIxMAX "]%s\n",
+		      (int) (level * 2), "", dwarf_attr_name (attr),
+		      dwarf_form_name (form), (uintmax_t) num,
+		      nlpt ? "" : " <WARNING offset too big>");
+	  }
 	  return DWARF_CB_OK;
 
 	case DW_AT_language:
-	  valuestr = dwarf_lang_string (num);
+	  valuestr = dwarf_lang_name (num);
 	  break;
 	case DW_AT_encoding:
-	  valuestr = dwarf_encoding_string (num);
+	  valuestr = dwarf_encoding_name (num);
 	  break;
 	case DW_AT_accessibility:
-	  valuestr = dwarf_access_string (num);
+	  valuestr = dwarf_access_name (num);
 	  break;
 	case DW_AT_visibility:
-	  valuestr = dwarf_visibility_string (num);
+	  valuestr = dwarf_visibility_name (num);
 	  break;
 	case DW_AT_virtuality:
-	  valuestr = dwarf_virtuality_string (num);
+	  valuestr = dwarf_virtuality_name (num);
 	  break;
 	case DW_AT_identifier_case:
-	  valuestr = dwarf_identifier_case_string (num);
+	  valuestr = dwarf_identifier_case_name (num);
 	  break;
 	case DW_AT_calling_convention:
-	  valuestr = dwarf_calling_convention_string (num);
+	  valuestr = dwarf_calling_convention_name (num);
 	  break;
 	case DW_AT_inline:
-	  valuestr = dwarf_inline_string (num);
+	  valuestr = dwarf_inline_name (num);
 	  break;
 	case DW_AT_ordering:
-	  valuestr = dwarf_ordering_string (num);
+	  valuestr = dwarf_ordering_name (num);
 	  break;
 	case DW_AT_discr_list:
-	  valuestr = dwarf_discr_list_string (num);
+	  valuestr = dwarf_discr_list_name (num);
 	  break;
 	default:
 	  /* Nothing.  */
@@ -5707,14 +5957,46 @@
       if (cbargs->silent)
 	break;
 
-      if (valuestr == NULL)
-	printf ("           %*s%-20s (%s) %" PRIuMAX "\n",
-		(int) (level * 2), "", dwarf_attr_string (attr),
-		dwarf_form_string (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_string (attr),
-		dwarf_form_string (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:
@@ -5725,16 +6007,16 @@
 	goto attrval_out;
 
       printf ("           %*s%-20s (%s) %s\n",
-	      (int) (level * 2), "", dwarf_attr_string (attr),
-	      dwarf_form_string (form), nl_langinfo (flag ? YESSTR : NOSTR));
+	      (int) (level * 2), "", dwarf_attr_name (attr),
+	      dwarf_form_name (form), nl_langinfo (flag ? YESSTR : NOSTR));
       break;
 
     case DW_FORM_flag_present:
       if (cbargs->silent)
 	break;
       printf ("           %*s%-20s (%s) %s\n",
-	      (int) (level * 2), "", dwarf_attr_string (attr),
-	      dwarf_form_string (form), nl_langinfo (YESSTR));
+	      (int) (level * 2), "", dwarf_attr_name (attr),
+	      dwarf_form_name (form), nl_langinfo (YESSTR));
       break;
 
     case DW_FORM_exprloc:
@@ -5749,8 +6031,8 @@
 	goto attrval_out;
 
       printf ("           %*s%-20s (%s) ",
-	      (int) (level * 2), "", dwarf_attr_string (attr),
-	      dwarf_form_string (form));
+	      (int) (level * 2), "", dwarf_attr_name (attr),
+	      dwarf_form_name (form));
 
       switch (attr)
 	{
@@ -5789,7 +6071,7 @@
 	  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;
@@ -5798,7 +6080,7 @@
       if (cbargs->silent)
 	break;
       printf ("           %*s%-20s (form: %#x) ???\n",
-	      (int) (level * 2), "", dwarf_attr_string (attr),
+	      (int) (level * 2), "", dwarf_attr_name (attr),
 	      (int) form);
       break;
     }
@@ -5871,8 +6153,7 @@
       .silent = silent,
       .version = version,
       .addrsize = addrsize,
-      .offset_size = offsize,
-      .cu_offset = offset
+      .offset_size = offsize
     };
 
   offset += cuhl;
@@ -5889,6 +6170,8 @@
       goto do_return;
     }
 
+  args.cu = dies[0].cu;
+
   do
     {
       offset = dwarf_dieoffset (&dies[level]);
@@ -5913,10 +6196,11 @@
       if (!silent)
 	printf (" [%6" PRIx64 "]  %*s%s\n",
 		(uint64_t) offset, (int) (level * 2), "",
-		dwarf_tag_string (tag));
+		dwarf_tag_name (tag));
 
       /* 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.  */
@@ -5976,9 +6260,105 @@
 
 
 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);
+	  if (line == NULL)
+	    {
+	      printf ("  dwarf_onesrcline: %s\n", dwarf_errmsg (-1));
+	      continue;
+	    }
+	  Dwarf_Word mtime, length;
+	  const char *file = dwarf_linesrc (line, &mtime, &length);
+	  if (file == NULL)
+	    {
+	      printf ("  <%s> (mtime: ?, length: ?)\n", dwarf_errmsg (-1));
+	      last_file = "";
+	    }
+	  else 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),
@@ -5989,7 +6369,7 @@
 
   /* 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"),
@@ -6007,6 +6387,8 @@
 
       printf (gettext ("\nTable at offset %Zu:\n"), start_offset);
 
+      if (unlikely (linep + 4 > lineendp))
+	goto invalid_data;
       Dwarf_Word unit_length = read_4ubyte_unaligned_inc (dbg, linep);
       unsigned int length = 4;
       if (unlikely (unit_length == 0xffffffff))
@@ -6023,8 +6405,8 @@
 	}
 
       /* Check whether we have enough room in the section.  */
-      if (unit_length < 2 + length + 5 * 1
-	  || unlikely (linep + unit_length > lineendp))
+      if (unlikely (unit_length > (size_t) (lineendp - linep)
+	  || unit_length < 2 + length + 5 * 1))
 	goto invalid_data;
       lineendp = linep + unit_length;
 
@@ -6133,15 +6515,21 @@
 
 	  /* Then the index.  */
 	  unsigned int diridx;
-	  get_uleb128 (diridx, linep);
+	  if (lineendp - linep < 1)
+	    goto invalid_unit;
+	  get_uleb128 (diridx, linep, lineendp);
 
 	  /* Next comes the modification time.  */
 	  unsigned int mtime;
-	  get_uleb128 (mtime, linep);
+	  if (lineendp - linep < 1)
+	    goto invalid_unit;
+	  get_uleb128 (mtime, linep, lineendp);
 
 	  /* Finally the length of the file.  */
 	  unsigned int fsize;
-	  get_uleb128 (fsize, linep);
+	  if (lineendp - linep < 1)
+	    goto invalid_unit;
+	  get_uleb128 (fsize, linep, lineendp);
 
 	  printf (" %-5u %-5u %-9u %-9u %s\n",
 		  cnt, diridx, mtime, fsize, fname);
@@ -6197,6 +6585,14 @@
 	op_index = (op_index + op_advance) % max_ops_per_instr;
       }
 
+      if (max_ops_per_instr == 0)
+	{
+	  error (0, 0,
+		 gettext ("invalid maximum operations per instruction is zero"));
+	  linep = lineendp;
+	  continue;
+	}
+
       while (linep < lineendp)
 	{
 	  size_t offset = linep - (const unsigned char *) data->d_buf;
@@ -6210,6 +6606,9 @@
 	  /* Is this a special opcode?  */
 	  if (likely (opcode >= opcode_base))
 	    {
+	      if (unlikely (line_range == 0))
+		goto invalid_unit;
+
 	      /* Yes.  Handling this is quite easy since the opcode value
 		 is computed with
 
@@ -6223,7 +6622,7 @@
 	      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"),
@@ -6266,12 +6665,14 @@
 
 		case DW_LNE_set_address:
 		  op_index = 0;
+		  if (unlikely ((size_t) (lineendp - linep) < address_size))
+		    goto invalid_unit;
 		  if (address_size == 4)
 		    address = read_4ubyte_unaligned_inc (dbg, linep);
 		  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);
 		  }
@@ -6287,11 +6688,17 @@
 		    linep = endp + 1;
 
 		    unsigned int diridx;
-		    get_uleb128 (diridx, linep);
+		    if (lineendp - linep < 1)
+		      goto invalid_unit;
+		    get_uleb128 (diridx, linep, lineendp);
 		    Dwarf_Word mtime;
-		    get_uleb128 (mtime, linep);
+		    if (lineendp - linep < 1)
+		      goto invalid_unit;
+		    get_uleb128 (mtime, linep, lineendp);
 		    Dwarf_Word filelength;
-		    get_uleb128 (filelength, linep);
+		    if (lineendp - linep < 1)
+		      goto invalid_unit;
+		    get_uleb128 (filelength, linep, lineendp);
 
 		    printf (gettext ("\
  define new file: dir=%u, mtime=%" PRIu64 ", length=%" PRIu64 ", name=%s\n"),
@@ -6305,7 +6712,7 @@
 		  if (unlikely (standard_opcode_lengths[opcode] != 1))
 		    goto invalid_unit;
 
-		  get_uleb128 (u128, linep);
+		  get_uleb128 (u128, linep, lineendp);
 		  printf (gettext (" set discriminator to %u\n"), u128);
 		  break;
 
@@ -6329,10 +6736,10 @@
 		case DW_LNS_advance_pc:
 		  /* Takes one uleb128 parameter which is added to the
 		     address.  */
-		  get_uleb128 (u128, linep);
+		  get_uleb128 (u128, linep, lineendp);
 		  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"),
@@ -6347,7 +6754,7 @@
 		case DW_LNS_advance_line:
 		  /* Takes one sleb128 parameter which is added to the
 		     line.  */
-		  get_sleb128 (s128, linep);
+		  get_sleb128 (s128, linep, lineendp);
 		  line += s128;
 		  printf (gettext ("\
  advance line by constant %d to %" PRId64 "\n"),
@@ -6356,7 +6763,7 @@
 
 		case DW_LNS_set_file:
 		  /* Takes one uleb128 parameter which is stored in file.  */
-		  get_uleb128 (u128, linep);
+		  get_uleb128 (u128, linep, lineendp);
 		  printf (gettext (" set file to %" PRIu64 "\n"),
 			  (uint64_t) u128);
 		  break;
@@ -6366,7 +6773,7 @@
 		  if (unlikely (standard_opcode_lengths[opcode] != 1))
 		    goto invalid_unit;
 
-		  get_uleb128 (u128, linep);
+		  get_uleb128 (u128, linep, lineendp);
 		  printf (gettext (" set column to %" PRIu64 "\n"),
 			  (uint64_t) u128);
 		  break;
@@ -6385,9 +6792,13 @@
 
 		case DW_LNS_const_add_pc:
 		  /* Takes no argument.  */
+
+		  if (unlikely (line_range == 0))
+		    goto invalid_unit;
+
 		  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"),
@@ -6410,7 +6821,7 @@
 		  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);
@@ -6433,7 +6844,7 @@
 		  if (unlikely (standard_opcode_lengths[opcode] != 1))
 		    goto invalid_unit;
 
-		  get_uleb128 (u128, linep);
+		  get_uleb128 (u128, linep, lineendp);
 		  printf (gettext (" set isa to %u\n"), u128);
 		  break;
 		}
@@ -6449,7 +6860,7 @@
 		      standard_opcode_lengths[opcode]);
 	      for (int n = standard_opcode_lengths[opcode]; n > 0; --n)
 		{
-		  get_uleb128 (u128, linep);
+		  get_uleb128 (u128, linep, lineendp);
 		  if (n != standard_opcode_lengths[opcode])
 		    putc_unlocked (',', stdout);
 		  printf (" %u", u128);
@@ -6471,7 +6882,7 @@
 			 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))
     {
@@ -6492,6 +6903,8 @@
   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)
@@ -6499,11 +6912,11 @@
       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;
@@ -6526,9 +6939,10 @@
 
       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.  */
 	{
@@ -6541,8 +6955,10 @@
 	  /* 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);
@@ -6559,7 +6975,7 @@
 	    }
 
 	  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;
@@ -6603,7 +7019,7 @@
 
   /* 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"),
@@ -6680,7 +7096,7 @@
 	      For the latter
 		number, string.
 	      We can treat these cases together.  */
-	  get_uleb128 (u128, readp);
+	  get_uleb128 (u128, readp, readendp);
 
 	  endp = memchr (readp, '\0', readendp - readp);
 	  if (unlikely (endp == NULL))
@@ -6705,8 +7121,15 @@
 
 	case DW_MACINFO_start_file:
 	  /* The two parameters are line and file index, in this order.  */
-	  get_uleb128 (u128, readp);
-	  get_uleb128 (u128_2, readp);
+	  get_uleb128 (u128, readp, readendp);
+	  if (readendp - readp < 1)
+	    {
+	      printf (gettext ("\
+%*s*** missing DW_MACINFO_start_file argument at end of section"),
+		      level, "");
+	      return;
+	    }
+	  get_uleb128 (u128_2, readp, readendp);
 
 	  /* Find the CU DIE for this file.  */
 	  size_t macoff = readp - (const unsigned char *) data->d_buf;
@@ -6746,6 +7169,415 @@
 }
 
 
+static void
+print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
+			   Ebl *ebl, GElf_Ehdr *ehdr,
+			   Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
+{
+  printf (gettext ("\
+\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
+	  elf_ndxscn (scn), section_name (ebl, ehdr, shdr),
+	  (uint64_t) shdr->sh_offset);
+  putc_unlocked ('\n', stdout);
+
+  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"),
+	     elf_errmsg (-1));
+      return;
+    }
+
+  /* Get the source file information for all CUs.  Uses same
+     datastructure as macinfo.  But uses offset field to directly
+     match .debug_line offset.  And just stored in a list.  */
+  Dwarf_Off offset;
+  Dwarf_Off ncu = 0;
+  size_t hsize;
+  struct mac_culist *culist = NULL;
+  size_t nculist = 0;
+  while (dwarf_nextcu (dbg, offset = ncu, &ncu, &hsize, NULL, NULL, NULL) == 0)
+    {
+      Dwarf_Die cudie;
+      if (dwarf_offdie (dbg, offset + hsize, &cudie) == NULL)
+	continue;
+
+      Dwarf_Attribute attr;
+      if (dwarf_attr (&cudie, DW_AT_stmt_list, &attr) == NULL)
+	continue;
+
+      Dwarf_Word lineoff;
+      if (dwarf_formudata (&attr, &lineoff) != 0)
+	continue;
+
+      struct mac_culist *newp = (struct mac_culist *) alloca (sizeof (*newp));
+      newp->die = cudie;
+      newp->offset = lineoff;
+      newp->files = NULL;
+      newp->next = culist;
+      culist = newp;
+      ++nculist;
+    }
+
+  const unsigned char *readp = (const unsigned char *) data->d_buf;
+  const unsigned char *readendp = readp + data->d_size;
+
+  while (readp < readendp)
+    {
+      printf (gettext (" Offset:             0x%" PRIx64 "\n"),
+	      (uint64_t) (readp - (const unsigned char *) data->d_buf));
+
+      // Header, 2 byte version, 1 byte flag, optional .debug_line offset,
+      // optional vendor extension macro entry table.
+      if (readp + 2 > readendp)
+	{
+	invalid_data:
+	  error (0, 0, gettext ("invalid data"));
+	  return;
+	}
+      const uint16_t vers = read_2ubyte_unaligned_inc (dbg, readp);
+      printf (gettext (" Version:            %" PRIu16 "\n"), vers);
+
+      // Version 4 is the GNU extension for DWARF4.  DWARF5 will use version
+      // 5 when it gets standardized.
+      if (vers != 4)
+	{
+	  printf (gettext ("  unknown version, cannot parse section\n"));
+	  return;
+	}
+
+      if (readp + 1 > readendp)
+	goto invalid_data;
+      const unsigned char flag = *readp++;
+      printf (gettext (" Flag:               0x%" PRIx8 "\n"), flag);
+
+      unsigned int offset_len = (flag & 0x01) ? 8 : 4;
+      printf (gettext (" Offset length:      %" PRIu8 "\n"), offset_len);
+      Dwarf_Off line_offset = -1;
+      if (flag & 0x02)
+	{
+	  if (offset_len == 8)
+	    line_offset = read_8ubyte_unaligned_inc (dbg, readp);
+	  else
+	    line_offset = read_4ubyte_unaligned_inc (dbg, readp);
+	  printf (gettext (" .debug_line offset: 0x%" PRIx64 "\n"),
+		  line_offset);
+	}
+
+      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
+	  // of arguments, for each argument 1 byte form code.
+	  if (readp + 1 > readendp)
+	    goto invalid_data;
+	  unsigned int tlen = *readp++;
+	  printf (gettext ("  extension opcode table, %" PRIu8 " items:\n"),
+		  tlen);
+	  for (unsigned int i = 0; i < tlen; i++)
+	    {
+	      if (readp + 1 > readendp)
+		goto invalid_data;
+	      unsigned int opcode = *readp++;
+	      printf (gettext ("    [%" PRIx8 "]"), opcode);
+	      if (opcode < DW_MACRO_GNU_lo_user
+		  || opcode > DW_MACRO_GNU_hi_user)
+		goto invalid_data;
+	      // Record the start of description for this vendor opcode.
+	      // uleb128 nr args, 1 byte per arg form.
+	      vendor[opcode - DW_MACRO_GNU_lo_user] = readp;
+	      if (readp + 1 > readendp)
+		goto invalid_data;
+	      unsigned int args = *readp++;
+	      if (args > 0)
+		{
+		  printf (gettext (" %" PRIu8 " arguments:"), args);
+		  while (args > 0)
+		    {
+		      if (readp + 1 > readendp)
+			goto invalid_data;
+		      unsigned int form = *readp++;
+		      printf (" %s", dwarf_form_string (form));
+		      if (form != DW_FORM_data1
+			  && form != DW_FORM_data2
+			  && form != DW_FORM_data4
+			  && form != DW_FORM_data8
+			  && form != DW_FORM_sdata
+			  && form != DW_FORM_udata
+			  && form != DW_FORM_block
+			  && form != DW_FORM_block1
+			  && form != DW_FORM_block2
+			  && form != DW_FORM_block4
+			  && form != DW_FORM_flag
+			  && form != DW_FORM_string
+			  && form != DW_FORM_strp
+			  && form != DW_FORM_sec_offset)
+			goto invalid_data;
+		      args--;
+		      if (args > 0)
+			putchar_unlocked (',');
+		    }
+		}
+	      else
+		printf (gettext (" no arguments."));
+	      putchar_unlocked ('\n');
+	    }
+	}
+      putchar_unlocked ('\n');
+
+      int level = 1;
+      if (readp + 1 > readendp)
+	goto invalid_data;
+      unsigned int opcode = *readp++;
+      while (opcode != 0)
+	{
+	  unsigned int u128;
+	  unsigned int u128_2;
+	  const unsigned char *endp;
+	  uint64_t off;
+
+          switch (opcode)
+            {
+            case DW_MACRO_GNU_start_file:
+	      get_uleb128 (u128, readp, readendp);
+	      if (readp >= readendp)
+		goto invalid_data;
+	      get_uleb128 (u128_2, readp, readendp);
+
+	      /* Find the CU DIE that matches this line offset.  */
+	      const char *fname = "???";
+	      if (line_offset != (Dwarf_Off) -1)
+		{
+		  struct mac_culist *cu = culist;
+		  while (cu != NULL && line_offset != cu->offset)
+		    cu = cu->next;
+		  if (cu != NULL)
+		    {
+		      if (cu->files == NULL
+			  && dwarf_getsrcfiles (&cu->die, &cu->files,
+						NULL) != 0)
+			cu->files = (Dwarf_Files *) -1l;
+
+		      if (cu->files != (Dwarf_Files *) -1l)
+			fname = (dwarf_filesrc (cu->files, u128_2,
+						NULL, NULL) ?: "???");
+		    }
+		}
+	      printf ("%*sstart_file %u, [%u] %s\n",
+		      level, "", u128, u128_2, fname);
+	      ++level;
+	      break;
+
+	    case DW_MACRO_GNU_end_file:
+	      --level;
+	      printf ("%*send_file\n", level, "");
+	      break;
+
+	    case DW_MACRO_GNU_define:
+	      get_uleb128 (u128, readp, readendp);
+	      endp = memchr (readp, '\0', readendp - readp);
+	      if (endp == NULL)
+		goto invalid_data;
+	      printf ("%*s#define %s, line %u\n",
+		      level, "", readp, u128);
+	      readp = endp + 1;
+	      break;
+
+	    case DW_MACRO_GNU_undef:
+	      get_uleb128 (u128, readp, readendp);
+	      endp = memchr (readp, '\0', readendp - readp);
+	      if (endp == NULL)
+		goto invalid_data;
+	      printf ("%*s#undef %s, line %u\n",
+		      level, "", readp, u128);
+	      readp = endp + 1;
+	      break;
+
+	    case DW_MACRO_GNU_define_indirect:
+	      get_uleb128 (u128, readp, readendp);
+	      if (readp + offset_len > readendp)
+		goto invalid_data;
+	      if (offset_len == 8)
+		off = read_8ubyte_unaligned_inc (dbg, readp);
+	      else
+		off = read_4ubyte_unaligned_inc (dbg, readp);
+	      printf ("%*s#define %s, line %u (indirect)\n",
+		      level, "", dwarf_getstring (dbg, off, NULL), u128);
+	      break;
+
+	    case DW_MACRO_GNU_undef_indirect:
+	      get_uleb128 (u128, readp, readendp);
+	      if (readp + offset_len > readendp)
+		goto invalid_data;
+	      if (offset_len == 8)
+		off = read_8ubyte_unaligned_inc (dbg, readp);
+	      else
+		off = read_4ubyte_unaligned_inc (dbg, readp);
+	      printf ("%*s#undef %s, line %u (indirect)\n",
+		      level, "", dwarf_getstring (dbg, off, NULL), u128);
+	      break;
+
+	    case DW_MACRO_GNU_transparent_include:
+	      if (readp + offset_len > readendp)
+		goto invalid_data;
+	      if (offset_len == 8)
+		off = read_8ubyte_unaligned_inc (dbg, readp);
+	      else
+		off = read_4ubyte_unaligned_inc (dbg, readp);
+	      printf ("%*s#include offset 0x%" PRIx64 "\n",
+		      level, "", off);
+	      break;
+
+	    default:
+	      printf ("%*svendor opcode 0x%" PRIx8, level, "", opcode);
+	      if (opcode < DW_MACRO_GNU_lo_user
+		  || opcode > DW_MACRO_GNU_lo_user
+		  || vendor[opcode - DW_MACRO_GNU_lo_user] == NULL)
+		goto invalid_data;
+
+	      const unsigned char *op_desc;
+	      op_desc = vendor[opcode - DW_MACRO_GNU_lo_user];
+
+	      // Just skip the arguments, we cannot really interpret them,
+	      // but print as much as we can.
+	      unsigned int args = *op_desc++;
+	      while (args > 0)
+		{
+		  unsigned int form = *op_desc++;
+		  Dwarf_Word val;
+		  switch (form)
+		    {
+		    case DW_FORM_data1:
+		      if (readp + 1 > readendp)
+			goto invalid_data;
+		      val = *readp++;
+		      printf (" %" PRIx8, (unsigned int) val);
+		      break;
+
+		    case DW_FORM_data2:
+		      if (readp + 2 > readendp)
+			goto invalid_data;
+		      val = read_2ubyte_unaligned_inc (dbg, readp);
+		      printf(" %" PRIx16, (unsigned int) val);
+		      break;
+
+		    case DW_FORM_data4:
+		      if (readp + 4 > readendp)
+			goto invalid_data;
+		      val = read_4ubyte_unaligned_inc (dbg, readp);
+		      printf (" %" PRIx32, (unsigned int) val);
+		      break;
+
+		    case DW_FORM_data8:
+		      if (readp + 8 > readendp)
+			goto invalid_data;
+		      val = read_8ubyte_unaligned_inc (dbg, readp);
+		      printf (" %" PRIx64, val);
+		      break;
+
+		    case DW_FORM_sdata:
+		      get_sleb128 (val, readp, readendp);
+		      printf (" %" PRIx64, val);
+		      break;
+
+		    case DW_FORM_udata:
+		      get_uleb128 (val, readp, readendp);
+		      printf (" %" PRIx64, val);
+		      break;
+
+		    case DW_FORM_block:
+		      get_uleb128 (val, readp, readendp);
+		      printf (" block[%" PRIu64 "]", val);
+		      if (readp + val > readendp)
+			goto invalid_data;
+		      readp += val;
+		      break;
+
+		    case DW_FORM_block1:
+		      if (readp + 1 > readendp)
+			goto invalid_data;
+		      val = *readp++;
+		      printf (" block[%" PRIu64 "]", val);
+		      if (readp + val > readendp)
+			goto invalid_data;
+		      break;
+
+		    case DW_FORM_block2:
+		      if (readp + 2 > readendp)
+			goto invalid_data;
+		      val = read_2ubyte_unaligned_inc (dbg, readp);
+		      printf (" block[%" PRIu64 "]", val);
+		      if (readp + val > readendp)
+			goto invalid_data;
+		      break;
+
+		    case DW_FORM_block4:
+		      if (readp + 2 > readendp)
+			goto invalid_data;
+		      val =read_4ubyte_unaligned_inc (dbg, readp);
+		      printf (" block[%" PRIu64 "]", val);
+		      if (readp + val > readendp)
+			goto invalid_data;
+		      break;
+
+		    case DW_FORM_flag:
+		      if (readp + 1 > readendp)
+			goto invalid_data;
+		      val = *readp++;
+		      printf (" %s", nl_langinfo (val != 0 ? YESSTR : NOSTR));
+		      break;
+
+		    case DW_FORM_string:
+		      endp = memchr (readp, '\0', readendp - readp);
+		      if (endp == NULL)
+			goto invalid_data;
+		      printf (" %s", readp);
+		      readp = endp + 1;
+		      break;
+
+		    case DW_FORM_strp:
+		      if (readp + offset_len > readendp)
+			goto invalid_data;
+		      if (offset_len == 8)
+			val = read_8ubyte_unaligned_inc (dbg, readp);
+		      else
+			val = read_4ubyte_unaligned_inc (dbg, readp);
+		      printf (" %s", dwarf_getstring (dbg, val, NULL));
+		      break;
+
+		    case DW_FORM_sec_offset:
+		      if (readp + offset_len > readendp)
+			goto invalid_data;
+		      if (offset_len == 8)
+			val = read_8ubyte_unaligned_inc (dbg, readp);
+		      else
+			val = read_4ubyte_unaligned_inc (dbg, readp);
+		      printf (" %" PRIx64, val);
+		      break;
+
+		      default:
+			error (0, 0, gettext ("vendor opcode not verified?"));
+			return;
+		    }
+
+		  args--;
+		  if (args > 0)
+		    putchar_unlocked (',');
+		}
+	      putchar_unlocked ('\n');
+	    }
+
+	  if (readp + 1 > readendp)
+	    goto invalid_data;
+	  opcode = *readp++;
+	  if (opcode == 0)
+	    putchar_unlocked ('\n');
+	}
+    }
+}
+
+
 /* Callback for printing global names.  */
 static int
 print_pubnames (Dwarf *dbg __attribute__ ((unused)), Dwarf_Global *global,
@@ -6781,7 +7613,8 @@
 			 Ebl *ebl, GElf_Ehdr *ehdr,
 			 Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
 {
-  const size_t sh_size = dbg->sectiondata[IDX_debug_str]->d_size;
+  const size_t sh_size = (dbg->sectiondata[IDX_debug_str] ?
+			  dbg->sectiondata[IDX_debug_str]->d_size : 0);
 
   /* Compute floor(log16(shdr->sh_size)).  */
   GElf_Addr tmp = sh_size;
@@ -6970,9 +7803,10 @@
   if (ttype_encoding != DW_EH_PE_omit)
     {
       unsigned int ttype_base_offset;
-      get_uleb128 (ttype_base_offset, readp);
+      get_uleb128 (ttype_base_offset, readp, dataend);
       printf (" TType base offset:   %#x\n", ttype_base_offset);
-      ttype_base = readp + ttype_base_offset;
+      if ((size_t) (dataend - readp) > ttype_base_offset)
+        ttype_base = readp + ttype_base_offset;
     }
 
   if (unlikely (readp + 1 > dataend))
@@ -6981,7 +7815,7 @@
   printf (gettext (" Call site encoding:  %#x "), call_site_encoding);
   print_encoding_base ("", call_site_encoding);
   unsigned int call_site_table_len;
-  get_uleb128 (call_site_table_len, readp);
+  get_uleb128 (call_site_table_len, readp, dataend);
 
   const unsigned char *const action_table = readp + call_site_table_len;
   if (unlikely (action_table > dataend))
@@ -7003,7 +7837,7 @@
       readp = read_encoded (call_site_encoding, readp, dataend,
 			    &landing_pad, dbg);
       unsigned int action;
-      get_uleb128 (action, readp);
+      get_uleb128 (action, readp, dataend);
       max_action = MAX (action, max_action);
       printf (gettext (" [%4u] Call site start:   %#" PRIx64 "\n"
 		       "        Call site length:  %" PRIu64 "\n"
@@ -7011,13 +7845,20 @@
 		       "        Action:            %u\n"),
 	      u++, call_site_start, call_site_length, landing_pad, action);
     }
-  assert (readp == action_table);
+  if (readp != action_table)
+    goto invalid_data;
 
   unsigned int max_ar_filter = 0;
   if (max_action > 0)
     {
       puts ("\n Action table:");
 
+      if ((size_t) (dataend - action_table) < max_action + 1)
+	{
+	  fputs (gettext ("   <INVALID DATA>\n"), stdout);
+	  return;
+	}
+
       const unsigned char *const action_table_end
 	= action_table + max_action + 1;
 
@@ -7025,11 +7866,11 @@
       do
 	{
 	  int ar_filter;
-	  get_sleb128 (ar_filter, readp);
+	  get_sleb128 (ar_filter, readp, action_table_end);
 	  if (ar_filter > 0 && (unsigned int) ar_filter > max_ar_filter)
 	    max_ar_filter = ar_filter;
 	  int ar_disp;
-	  get_sleb128 (ar_disp, readp);
+	  get_sleb128 (ar_disp, readp, action_table_end);
 
 	  printf (" [%4u] ar_filter:  % d\n"
 		  "        ar_disp:    % -5d",
@@ -7045,7 +7886,7 @@
       while (readp < action_table_end);
     }
 
-  if (max_ar_filter > 0)
+  if (max_ar_filter > 0 && ttype_base != NULL)
     {
       puts ("\n TType table:");
 
@@ -7118,8 +7959,11 @@
   printf (gettext (" Version:         %" PRId32 "\n"), vers);
 
   // The only difference between version 4 and version 5 is the
-  // hash used for generating the table.
-  if (vers < 4 || vers > 5)
+  // hash used for generating the table.  Version 6 contains symbols
+  // 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;
@@ -7163,14 +8007,14 @@
   readp = data->d_buf + cu_off;
 
   const unsigned char *nextp = data->d_buf + tu_off;
-  size_t nr = (nextp - readp) / 16;
+  size_t cu_nr = (nextp - readp) / 16;
 
   printf (gettext ("\n CU list at offset %#" PRIx32
 		   " contains %zu entries:\n"),
-	  cu_off, nr);
+	  cu_off, cu_nr);
 
   size_t n = 0;
-  while (readp + 16 <= dataend && n < nr)
+  while (readp + 16 <= dataend && n < cu_nr)
     {
       uint64_t off = read_8ubyte_unaligned (dbg, readp);
       readp += 8;
@@ -7185,14 +8029,14 @@
 
   readp = data->d_buf + tu_off;
   nextp = data->d_buf + addr_off;
-  nr = (nextp - readp) / 24;
+  size_t tu_nr = (nextp - readp) / 24;
 
   printf (gettext ("\n TU list at offset %#" PRIx32
 		   " contains %zu entries:\n"),
-	  tu_off, nr);
+	  tu_off, tu_nr);
 
   n = 0;
-  while (readp + 24 <= dataend && n < nr)
+  while (readp + 24 <= dataend && n < tu_nr)
     {
       uint64_t off = read_8ubyte_unaligned (dbg, readp);
       readp += 8;
@@ -7211,14 +8055,14 @@
 
   readp = data->d_buf + addr_off;
   nextp = data->d_buf + sym_off;
-  nr = (nextp - readp) / 20;
+  size_t addr_nr = (nextp - readp) / 20;
 
   printf (gettext ("\n Address list at offset %#" PRIx32
 		   " contains %zu entries:\n"),
-	  addr_off, nr);
+	  addr_off, addr_nr);
 
   n = 0;
-  while (readp + 20 <= dataend && n < nr)
+  while (readp + 20 <= dataend && n < addr_nr)
     {
       uint64_t low = read_8ubyte_unaligned (dbg, readp);
       readp += 8;
@@ -7229,23 +8073,25 @@
       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++;
     }
 
   readp = data->d_buf + sym_off;
   nextp = data->d_buf + const_off;
-  nr = (nextp - readp) / 8;
+  size_t sym_nr = (nextp - readp) / 8;
 
   printf (gettext ("\n Symbol table at offset %#" PRIx32
 		   " contains %zu slots:\n"),
-	  addr_off, nr);
+	  addr_off, sym_nr);
 
   n = 0;
-  while (readp + 8 <= dataend && n < nr)
+  while (readp + 8 <= dataend && n < sym_nr)
     {
       uint32_t name = read_4ubyte_unaligned (dbg, readp);
       readp += 4;
@@ -7256,22 +8102,56 @@
       if (name != 0 || vector != 0)
 	{
 	  const unsigned char *sym = data->d_buf + const_off + name;
-	  if (unlikely (sym > dataend))
+	  if (unlikely (sym > dataend
+			|| memchr (sym, '\0', dataend - sym) == NULL))
 	    goto invalid_data;
 
 	  printf (" [%4zu] symbol: %s, CUs: ", n, sym);
 
 	  const unsigned char *readcus = data->d_buf + const_off + vector;
-	  if (unlikely (readcus + 8 > dataend))
+	  if (unlikely (readcus + 4 > dataend))
 	    goto invalid_data;
-
 	  uint32_t cus = read_4ubyte_unaligned (dbg, readcus);
 	  while (cus--)
 	    {
-	      uint32_t cu;
+	      uint32_t cu_kind, cu, kind;
+	      bool is_static;
 	      readcus += 4;
-	      cu = read_4ubyte_unaligned (dbg, readcus);
-	      printf ("%" PRId32 "%s", cu, ((cus > 0) ? ", " : ""));
+	      if (unlikely (readcus + 4 > dataend))
+		goto invalid_data;
+	      cu_kind = read_4ubyte_unaligned (dbg, readcus);
+	      cu = cu_kind & ((1 << 24) - 1);
+	      kind = (cu_kind >> 28) & 7;
+	      is_static = cu_kind & (1U << 31);
+	      if (cu > cu_nr - 1)
+		printf ("%" PRId32 "T", cu - (uint32_t) cu_nr);
+	      else
+		printf ("%" PRId32, cu);
+	      if (kind != 0)
+		{
+		  printf (" (");
+		  switch (kind)
+		    {
+		    case 1:
+		      printf ("type");
+		      break;
+		    case 2:
+		      printf ("var");
+		      break;
+		    case 3:
+		      printf ("func");
+		      break;
+		    case 4:
+		      printf ("other");
+		      break;
+		    default:
+		      printf ("unknown-0x%" PRIx32, kind);
+		      break;
+		    }
+		  printf (":%c)", (is_static ? 'S' : 'G'));
+		}
+	      if (cus > 0)
+		printf (", ");
 	    }
 	  printf ("\n");
 	}
@@ -7335,6 +8215,7 @@
 	      NEW_SECTION (pubnames),
 	      NEW_SECTION (str),
 	      NEW_SECTION (macinfo),
+	      NEW_SECTION (macro),
 	      NEW_SECTION (ranges),
 	      { ".eh_frame", section_frame | section_exception,
 		print_debug_frame_section },
@@ -7348,8 +8229,10 @@
 				       / 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
@@ -7373,24 +8256,35 @@
 
 
 #define ITEM_INDENT		4
-#define ITEM_WRAP_COLUMN	150
-#define REGISTER_WRAP_COLUMN	75
+#define WRAP_COLUMN		75
 
-/* 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.  */
+/* 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.  */
+
 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)
     {
@@ -7408,12 +8302,9 @@
       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;
 }
@@ -7456,14 +8347,14 @@
   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)
+  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, max) GElf_##Name Name[count]
+#define DO_TYPE(NAME, Name, hex, dec) GElf_##Name Name[count]
   union { TYPES; } value;
 #undef DO_TYPE
 
@@ -7495,10 +8386,10 @@
       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
@@ -7511,10 +8402,10 @@
       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
@@ -7534,7 +8425,7 @@
       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';
 
@@ -7551,19 +8442,19 @@
 	  }
 
 	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
 		  {
@@ -7579,11 +8470,10 @@
 		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;
@@ -7593,14 +8483,12 @@
       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
@@ -7623,19 +8511,19 @@
 	  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':
@@ -7662,7 +8550,10 @@
 	  s = eol + 1;
 	}
 
-      colno = ITEM_WRAP_COLUMN;
+      colno = WRAP_COLUMN;
+      break;
+
+    case 'h':
       break;
 
     default:
@@ -7711,6 +8602,24 @@
 {
   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];
@@ -7729,19 +8638,7 @@
   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)
@@ -7754,7 +8651,7 @@
 	    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)
@@ -7822,12 +8719,12 @@
       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
@@ -7839,17 +8736,17 @@
 	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;
@@ -7858,9 +8755,9 @@
 	      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;
 
@@ -7889,9 +8786,8 @@
 	      *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;
@@ -8030,7 +8926,7 @@
 				      reg->regloc, desc, colno);
 
       /* Force a line break at the end of the group.  */
-      colno = REGISTER_WRAP_COLUMN;
+      colno = WRAP_COLUMN;
     }
 
   return colno;
@@ -8108,6 +9004,155 @@
     }
 }
 
+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;
+    }
+
+  size_t addrsize = gelf_fsize (core, ELF_T_ADDR, 1, EV_CURRENT);
+  uint64_t maxcount = (size_t) (end - ptr) / (3 * addrsize);
+  if (count > maxcount)
+    goto fail;
+
+  /* Where file names are stored.  */
+  unsigned char const *const fstart = ptr + 3 * count * addrsize;
+  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)
@@ -8181,6 +9226,22 @@
 		  && !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);
 	    }
diff --git a/src/src/sectionhash.c b/src/src/sectionhash.c
index 68d734e..83a7cca 100644
--- a/src/src/sectionhash.c
+++ b/src/src/sectionhash.c
@@ -1,28 +1,20 @@
 /* Section hash table implementation.
    Copyright (C) 2001, 2002, 2005 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/sectionhash.h b/src/src/sectionhash.h
index ba41ee8..96da336 100644
--- a/src/src/sectionhash.h
+++ b/src/src/sectionhash.h
@@ -1,27 +1,19 @@
 /* Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef SECTIONHASH_H
 #define SECTIONHASH_H	1
diff --git a/src/src/size.c b/src/src/size.c
index 14dafc4..0e7e41e 100644
--- a/src/src/size.c
+++ b/src/src/size.c
@@ -1,28 +1,20 @@
 /* Print size information from ELF file.
-   Copyright (C) 2000-2007,2009,2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2007,2009,2012,2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -435,10 +427,9 @@
 	INTERNAL_ERROR (fullname);
 
       /* Ignore all sections which are not used at runtime.  */
-      if ((shdr->sh_flags & SHF_ALLOC) != 0)
-	maxlen = MAX (maxlen,
-		      (int) strlen (elf_strptr (elf, shstrndx,
-						shdr->sh_name)));
+      const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
+      if (name != NULL && (shdr->sh_flags & SHF_ALLOC) != 0)
+	maxlen = MAX (maxlen, (int) strlen (name));
     }
 
   fputs_unlocked (fname, stdout);
@@ -449,14 +440,6 @@
 	  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)
@@ -467,7 +450,11 @@
       /* 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);
@@ -498,14 +485,6 @@
     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;
@@ -523,8 +502,10 @@
 	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;
     }
@@ -619,14 +600,13 @@
 static void
 show_segments (Elf *elf, const char *fullname)
 {
-  GElf_Ehdr ehdr_mem;
-  GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
-  if (ehdr == NULL)
+  size_t phnum;
+  if (elf_getphdrnum (elf, &phnum) != 0)
     INTERNAL_ERROR (fullname);
 
   GElf_Off total = 0;
   bool first = true;
-  for (size_t cnt = 0; cnt < ehdr->e_phnum; ++cnt)
+  for (size_t cnt = 0; cnt < phnum; ++cnt)
     {
       GElf_Phdr phdr_mem;
       GElf_Phdr *phdr;
diff --git a/src/src/stack.c b/src/src/stack.c
new file mode 100644
index 0000000..c277dfd
--- /dev/null
+++ b/src/src/stack.c
@@ -0,0 +1,760 @@
+/* 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;
+}
diff --git a/src/src/strings.c b/src/src/strings.c
index 442901e..f60e4b4 100644
--- a/src/src/strings.c
+++ b/src/src/strings.c
@@ -1,28 +1,20 @@
 /* Print the strings of printable characters in files.
-   Copyright (C) 2005-2010, 2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2005-2010, 2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2005.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -124,8 +116,15 @@
 /* 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;
@@ -287,16 +286,16 @@
       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:
@@ -363,8 +362,11 @@
 		  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))
 		{
@@ -428,8 +430,11 @@
 		  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))
 		{
@@ -460,13 +465,6 @@
 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
@@ -508,7 +506,6 @@
 
   *map_sizep = map_size;
   return mem;
-#endif
 }
 
 
diff --git a/src/src/strip.c b/src/src/strip.c
index 78f683a..2b21799 100644
--- a/src/src/strip.c
+++ b/src/src/strip.c
@@ -1,28 +1,20 @@
 /* Discard section not used at runtime from object files.
-   Copyright (C) 2000-2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2000-2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
@@ -440,6 +432,7 @@
   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)
@@ -509,6 +502,11 @@
     error (EXIT_FAILURE, 0,
 	   gettext ("cannot get section header string table index"));
 
+  /* Get the number of phdrs in the old file.  */
+  size_t phnum;
+  if (elf_getphdrnum (elf, &phnum) != 0)
+    error (EXIT_FAILURE, 0, gettext ("cannot get number of phdrs"));
+
   /* We now create a new ELF descriptor for the same file.  We
      construct it almost exactly in the same way with some information
      dropped.  */
@@ -520,7 +518,7 @@
 
   if (unlikely (gelf_newehdr (newelf, gelf_getclass (elf)) == 0)
       || (ehdr->e_type != ET_REL
-	  && unlikely (gelf_newphdr (newelf, ehdr->e_phnum) == 0)))
+	  && unlikely (gelf_newphdr (newelf, phnum) == 0)))
     {
       error (0, 0, gettext ("cannot create new file '%s': %s"),
 	     output_fname, elf_errmsg (-1));
@@ -529,7 +527,7 @@
 
   /* Copy over the old program header if needed.  */
   if (ehdr->e_type != ET_REL)
-    for (cnt = 0; cnt < ehdr->e_phnum; ++cnt)
+    for (cnt = 0; cnt < phnum; ++cnt)
       {
 	GElf_Phdr phdr_mem;
 	GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &phdr_mem);
@@ -544,7 +542,7 @@
       debugelf = elf_begin (debug_fd, ELF_C_WRITE_MMAP, NULL);
       if (unlikely (gelf_newehdr (debugelf, gelf_getclass (elf)) == 0)
 	  || (ehdr->e_type != ET_REL
-	      && unlikely (gelf_newphdr (debugelf, ehdr->e_phnum) == 0)))
+	      && unlikely (gelf_newphdr (debugelf, phnum) == 0)))
 	{
 	  error (0, 0, gettext ("cannot create new file '%s': %s"),
 		 debug_fname, elf_errmsg (-1));
@@ -553,7 +551,7 @@
 
       /* Copy over the old program header if needed.  */
       if (ehdr->e_type != ET_REL)
-	for (cnt = 0; cnt < ehdr->e_phnum; ++cnt)
+	for (cnt = 0; cnt < phnum; ++cnt)
 	  {
 	    GElf_Phdr phdr_mem;
 	    GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &phdr_mem);
@@ -572,6 +570,11 @@
       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.
@@ -593,7 +596,7 @@
     {
       /* 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;
 
@@ -606,6 +609,7 @@
 					shdr_info[cnt].shdr.sh_name);
       if (shdr_info[cnt].name == NULL)
 	{
+	illformed:
 	  error (0, 0, gettext ("illformed file '%s'"), fname);
 	  goto fail_close;
 	}
@@ -615,6 +619,8 @@
 
       /* 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
@@ -627,7 +633,7 @@
 	 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))
@@ -644,7 +650,12 @@
 	  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
@@ -655,7 +666,7 @@
 	}
       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;
 	}
 
@@ -663,7 +674,7 @@
 	 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)
 	    {
@@ -739,10 +750,14 @@
 	    {
 	      /* 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.  */
@@ -786,7 +801,7 @@
 		  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,
@@ -826,6 +841,9 @@
 		      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
@@ -856,11 +874,15 @@
 		}
 
 	      /* 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.  */
@@ -1002,7 +1024,7 @@
 	  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);
@@ -1039,7 +1061,7 @@
 	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)
@@ -1054,7 +1076,8 @@
       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);
 
@@ -1095,7 +1118,7 @@
     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.  */
@@ -1185,20 +1208,20 @@
 		    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);
 		  }
 
@@ -1253,7 +1276,7 @@
 		      sec = shdr_info[sym->st_shndx].idx;
 		    else
 		      {
-			assert (shndxdata != NULL);
+			elf_assert (shndxdata != NULL);
 
 			sec = shdr_info[xshndx].idx;
 		      }
@@ -1274,7 +1297,7 @@
 			    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))
@@ -1301,9 +1324,11 @@
 		      {
 			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)));
 		      }
 		  }
 
@@ -1491,11 +1516,11 @@
 		  {
 		    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)
@@ -1514,8 +1539,8 @@
 	    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;
 
@@ -1545,11 +1570,11 @@
 		  {
 		    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)
@@ -2021,6 +2046,9 @@
 	      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);
diff --git a/src/src/symbolhash.c b/src/src/symbolhash.c
index 670cf05..3fd9649 100644
--- a/src/src/symbolhash.c
+++ b/src/src/symbolhash.c
@@ -1,28 +1,20 @@
 /* Symbol hash table implementation.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/symbolhash.h b/src/src/symbolhash.h
index 54b9539..062dade 100644
--- a/src/src/symbolhash.h
+++ b/src/src/symbolhash.h
@@ -1,27 +1,19 @@
 /* Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef SYMBOLHASH_H
 #define SYMBOLHASH_H	1
diff --git a/src/src/unaligned.h b/src/src/unaligned.h
index ad7c55a..2916653 100644
--- a/src/src/unaligned.h
+++ b/src/src/unaligned.h
@@ -1,28 +1,20 @@
 /* Unaligned memory access functionality.
    Copyright (C) 2000, 2001, 2002, 2003, 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _UNALIGNED_H
 #define _UNALIGNED_H	1
diff --git a/src/src/unstrip.c b/src/src/unstrip.c
index f62010a..989ac5f 100644
--- a/src/src/unstrip.c
+++ b/src/src/unstrip.c
@@ -1,28 +1,20 @@
 /* Combine stripped files with separate symbols and debug information.
-   Copyright (C) 2007-2012 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   Copyright (C) 2007-2012, 2014 Red Hat, Inc.
+   This file is part of elfutils.
    Written by Roland McGrath <roland@redhat.com>, 2007.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* TODO:
 
@@ -90,6 +82,9 @@
     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 }
 };
 
@@ -105,6 +100,7 @@
   bool modnames;
   bool match_files;
   bool relocate;
+  bool force;
 };
 
 /* Handle program arguments.  */
@@ -155,6 +151,9 @@
     case 'R':
       info->relocate = true;
       break;
+    case 'F':
+      info->force = true;
+      break;
 
     case ARGP_KEY_ARGS:
     case ARGP_KEY_NO_ARGS:
@@ -242,7 +241,7 @@
 #define ELF_CHECK(call, msg)						      \
   do									      \
     {									      \
-      if (!(call)) 							      \
+      if (unlikely (!(call)))						      \
 	error (EXIT_FAILURE, 0, msg, elf_errmsg (-1));			      \
     } while (0)
 
@@ -258,13 +257,17 @@
   ELF_CHECK (gelf_update_ehdr (outelf, ehdr),
 	     _("cannot copy ELF header: %s"));
 
-  if (ehdr->e_phnum > 0)
+  size_t phnum;
+  ELF_CHECK (elf_getphdrnum (inelf, &phnum) == 0,
+	     _("cannot get number of program headers: %s"));
+
+  if (phnum > 0)
     {
-      ELF_CHECK (gelf_newphdr (outelf, ehdr->e_phnum),
+      ELF_CHECK (gelf_newphdr (outelf, phnum),
 		 _("cannot create program headers: %s"));
 
       GElf_Phdr phdr_mem;
-      for (uint_fast16_t i = 0; i < ehdr->e_phnum; ++i)
+      for (size_t i = 0; i < phnum; ++i)
 	ELF_CHECK (gelf_update_phdr (outelf, i,
 				     gelf_getphdr (inelf, i, &phdr_mem)),
 		   _("cannot copy program header: %s"));
@@ -1126,10 +1129,11 @@
 		      && (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;
@@ -1823,12 +1827,16 @@
     }
   while (skip_reloc);
 
-  if (stripped_ehdr->e_phnum > 0)
-    ELF_CHECK (gelf_newphdr (unstripped, stripped_ehdr->e_phnum),
+  size_t phnum;
+  ELF_CHECK (elf_getphdrnum (stripped, &phnum) == 0,
+	     _("cannot get number of program headers: %s"));
+
+  if (phnum > 0)
+    ELF_CHECK (gelf_newphdr (unstripped, phnum),
 	       _("cannot create program headers: %s"));
 
   /* Copy each program header from the stripped file.  */
-  for (uint_fast16_t i = 0; i < stripped_ehdr->e_phnum; ++i)
+  for (size_t i = 0; i < phnum; ++i)
     {
       GElf_Phdr phdr_mem;
       GElf_Phdr *phdr = gelf_getphdr (stripped, i, &phdr_mem);
@@ -1863,11 +1871,15 @@
 	     Elf *stripped, const GElf_Ehdr *stripped_ehdr,
 	     Elf *unstripped)
 {
+  size_t phnum;
+  ELF_CHECK (elf_getphdrnum (stripped, &phnum) == 0,
+	     _("cannot get number of program headers: %s"));
+
   /* Determine the address bias between the debuginfo file and the main
      file, which may have been modified by prelinking.  */
   GElf_Addr bias = 0;
   if (unstripped != NULL)
-    for (uint_fast16_t i = 0; i < stripped_ehdr->e_phnum; ++i)
+    for (size_t i = 0; i < phnum; ++i)
       {
 	GElf_Phdr phdr_mem;
 	GElf_Phdr *phdr = gelf_getphdr (stripped, i, &phdr_mem);
@@ -1943,9 +1955,20 @@
 
 /* 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;
@@ -1964,12 +1987,18 @@
       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);
@@ -1984,7 +2013,7 @@
 
 /* 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;
@@ -2056,7 +2085,7 @@
 	  (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;
 	}
@@ -2076,7 +2105,7 @@
 
 /* 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)
@@ -2097,7 +2126,7 @@
   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);
 }
 
 
@@ -2209,12 +2238,12 @@
     {
       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);
@@ -2304,11 +2333,12 @@
 	  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
diff --git a/src/src/versionhash.c b/src/src/versionhash.c
index 6126eb9..cc4d283 100644
--- a/src/src/versionhash.c
+++ b/src/src/versionhash.c
@@ -1,28 +1,20 @@
 /* Version symbol hash table implementation.
    Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/versionhash.h b/src/src/versionhash.h
index 63ca114..4434e05 100644
--- a/src/src/versionhash.h
+++ b/src/src/versionhash.h
@@ -1,27 +1,19 @@
 /* Copyright (C) 2001, 2002 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef VERSIONHASH_H
 #define VERSIONHASH_H	1
diff --git a/src/src/xelf.h b/src/src/xelf.h
index 21c7193..f292327 100644
--- a/src/src/xelf.h
+++ b/src/src/xelf.h
@@ -1,28 +1,20 @@
 /* Macros to enable writing native and generic ELF access code.
    Copyright (C) 2003 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
+   This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
-   Red Hat elfutils 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; version 2 of the License.
+   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.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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.
+   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 Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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>
diff --git a/src/src/ylwrap b/src/src/ylwrap
deleted file mode 100644
index b77a9eb..0000000
--- a/src/src/ylwrap
+++ /dev/null
@@ -1,154 +0,0 @@
-#! /bin/sh
-# ylwrap - wrapper for lex/yacc invocations.
-# Copyright 1996, 1997, 1998, 1999, 2001  Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
-
-# 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.
-
-# Usage:
-#     ylwrap INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
-# * INPUT is the input file
-# * OUTPUT is file PROG generates
-# * DESIRED is file we actually want
-# * PROGRAM is program to run
-# * ARGS are passed to PROG
-# Any number of OUTPUT,DESIRED pairs may be used.
-
-# The input.
-input="$1"
-shift
-case "$input" in
- [\\/]* | ?:[\\/]*)
-    # Absolute path; do nothing.
-    ;;
- *)
-    # Relative path.  Make it absolute.
-    input="`pwd`/$input"
-    ;;
-esac
-
-pairlist=
-while test "$#" -ne 0; do
-   if test "$1" = "--"; then
-      shift
-      break
-   fi
-   pairlist="$pairlist $1"
-   shift
-done
-
-# The program to run.
-prog="$1"
-shift
-# Make any relative path in $prog absolute.
-case "$prog" in
- [\\/]* | ?:[\\/]*) ;;
- *[\\/]*) prog="`pwd`/$prog" ;;
-esac
-
-# FIXME: add hostname here for parallel makes that run commands on
-# other machines.  But that might take us over the 14-char limit.
-dirname=ylwrap$$
-trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
-mkdir $dirname || exit 1
-
-cd $dirname
-
-$prog ${1+"$@"} "$input"
-status=$?
-
-if test $status -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
-      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";;
-	 esac
-
-	 # 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 "/^#/{s,$input_rx,,;s,$from,$2,;s,$FORM,$TO,;}" "$from" >"$target" ||
-            status=$?
-      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
-	    status=1
-	 fi
-      fi
-      shift
-      shift
-      first=no
-   done
-else
-   status=$?
-fi
-
-# Remove the directory.
-cd ..
-rm -rf $dirname
-
-exit $status
diff --git a/src/stamp-h1 b/src/stamp-h1
new file mode 100644
index 0000000..4547fe1
--- /dev/null
+++ b/src/stamp-h1
@@ -0,0 +1 @@
+timestamp for config.h
diff --git a/src/tests/ChangeLog b/src/tests/ChangeLog
new file mode 100644
index 0000000..59048f6
--- /dev/null
+++ b/src/tests/ChangeLog
@@ -0,0 +1,2114 @@
+2014-12-19  Mark Wielaard  <mjw@redhat.com>
+
+	* run-deleted.sh: Don't check libfunc on ppc64.
+
+2014-12-19  Mark Wielaard  <mjw@redhat.com>
+
+	* vdsosyms.c (vdso_seen): Removed.
+	(vdso_syms): New global.
+	(module_callback): Set and check vdso_syms.
+	(main): Return value depends on vdso_syms.
+
+2014-12-19  Mark Wielaard  <mjw@redhat.com>
+
+	* backtrace-subr.sh (check_native_unsupported): Relax special ARM
+	grep a little.
+	* run-deleted.sh: Call check_native_unsupported.
+
+2014-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Add testfile-macros-0xff.bz2.
+
+2014-12-12  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (deleted_lib_so_CFLAGS): Add
+	-fasynchronous-unwind-tables.
+
+2014-12-11  Josh Stone  <jistone@redhat.com>
+
+	* run-addr2line-i-lex-test.sh: New test.
+	* testfile-lex-inlines.bz2: New testfile.
+	* Makefile.am (EXTRA_DIST): Add run-addr2line-i-lex-test.sh and
+	testfile-lex-inlines.bz2.
+	(TESTS): Add run-addr2line-i-lex-test.sh.
+
+2014-12-10  Josh Stone  <jistone@redhat.com>
+
+	* run-addr2line-i-test.sh: Test 0x5f0 to make sure linkage_name is
+	preferred over the plain die name.
+
+2014-12-02  Petr Machata  <pmachata@redhat.com>
+
+	* dwarf-getmacros.c (mac): Skip over DW_MACINFO_undef,
+	DW_MACRO_GNU_undef_indirect opcodes.  Add a default branch.
+	(main): Initialize off to DWARF_GETMACROS_START when an extra
+	command line argument is passed.
+	* testfile-macros-0xff.bz2: New test case.
+	* testfile-macros-0xff.s: New file (source for the above).
+	* run-dwarf-getmacros.sh: Add two tests.
+
+2014-11-27  Mark Wielaard  <mjw@redhat.com>
+
+	* vdsosyms.c (main): Call dwfl_linux_proc_attach.
+
+2014-11-21  Mark Wielaard  <mjw@redhat.com>
+
+	* run-readelf-A.sh: New test.
+	* testfileppc32attrs.o.bz2: New test file.
+	* Makefile.am (TESTS): Add run-readelf-A.sh.
+	(EXTRA_DIST): Add run-readelf-A.sh and testfileppc32attrs.o.bz2.
+
+2014-11-10  Mark Wielaard  <mjw@redhat.com>
+
+	* vdsosyms.c: New test.
+	* Makefile.am (check_PROGRAMS): Add vdsosyms.
+	(TESTS): Likewise.
+	(vdsosyms_LDADD): New variable.
+
+2014-09-10  Petr Machata  <pmachata@redhat.com>
+
+	* dwarf-getmacros.c: Update to use the new macro iteration
+	interfaces.
+	* run-dwarf-getmacros.sh: Adjust, add a test that uses
+	testfile-macros.
+
+2014-10-06  Mark Wielaard  <mjw@redhat.com>
+
+	* run-aggregate-size.sh: Add testfile-sizes3.o test case.
+	* testfile-sizes3.o.bz2: New test file.
+	* Makefile.am (EXTRA_DIST): Add testfile-sizes3.o.bz2.
+
+2014-10-02  Mark Wielaard  <mjw@redhat.com>
+
+	* run-deleted.sh: Unset VALGRIND_CMD before running deleted.
+
+2014-10-02  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (check_PROGRAMS): Add aggregate_size.c.
+	(TESTS): Add run-aggregate-size.sh.
+	(EXTRA_DIST): Add run-aggregate-size.sh, testfile-sizes1.o.bz2
+	and testfile-sizes2.o.bz2.
+	(aggregate_size_LDADD): New variable.
+	* aggregate_size.c: New file.
+	* run-aggregate-size.sh: New test.
+	* testfile-sizes1.o.bz2: New test file.
+	* testfile-sizes2.o.bz2: Likewise.
+
+2014-09-26  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Support NT_FILE for locating files.
+	* Makefile.am (TESTS): Add run-linkmap-cut.sh.
+	(EXTRA_DIST): Add run-linkmap-cut.sh, linkmap-cut-lib.so.bz2,
+	linkmap-cut.bz2 and linkmap-cut.core.bz2 .
+	* linkmap-cut-lib.so.bz2: New file.
+	* linkmap-cut.bz2: New file.
+	* linkmap-cut.core.bz2: New file.
+	* run-linkmap-cut.sh: New file.
+	* run-unstrip-n.sh: Update its expected output.
+
+2014-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* Makefile.am (check_PROGRAMS): Add deleted and deleted-lib.so.
+	(TESTS, EXTRA_DIST): Add run-deleted.sh.
+	(deleted_LDADD, deleted_lib_so_LDFLAGS, deleted_lib_so_CFLAGS): New.
+	* deleted-lib.c: New file.
+	* deleted.c: New file.
+	* run-deleted.sh: New file.
+
+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.
+
+2012-08-22  Jeff Kenton  <jkenton@tilera.com>
+
+	* testfile60.bz2: New testfile.
+	* run-allregs.sh: Run reg_test testfile60.
+
+2012-08-24  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (TESTS): Only add run-readelf-dwz-multi.sh if
+	ENABLE_DWZ.
+
+2012-08-16  Mark Wielaard  <mjw@redhat.com>
+
+	* allregs.c (dwarf_encoding_string): Rewritten using known-dwarf
+	macros.
+	* show-die-info.c (tagnames): Removed.
+	(attrs): Removed.
+	(dwarf_tag_string): New function using known-dwarf macros.
+	(dwarf_attr_string): Likewise.
+	(handle): Call dwarf_tag_string and dwarf_attr_string instead.
+	* run-readelf-dwz-multi.sh: Expect language C89, not ISO C89.
+
+2012-06-27  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (TESTS): Add run-readelf-dwz-multi.sh.
+	(EXTRA_DIST): Add run-readelf-dwz-multi.sh,
+	libtestfile_multi_shared.so.bz2, testfile_multi.dwz.bz2 and
+	testfile_multi_main.bz2.
+	* run-readelf-dwz-multi.sh: New test.
+	* libtestfile_multi_shared.so.bz2: New testfile.
+	* testfile_multi.dwz.bz2: New testifle.
+	* testfile_multi_main.bz2: New testifle.
+
+2012-08-01  Petr Machata  <pmachata@redhat.com>
+
+	* run-test-archive64.sh: New test.
+	* testarchive64.a.bz2: New testfile.
+	* Makefile.am (TESTS): Add run-test-archive64.sh.
+	(EXTRA_DIST): Likewise.
+
+2012-08-01  Mark Wielaard  <mjw@redhat.com>
+
+	* run-nm-self.sh: New test.
+	* run-readelf-self.sh: Likewise.
+	* test-subr.sh (testrun_on_self_quiet): New function.
+	* Makefile.am (TESTS): Add run-nm-self.sh and run-readelf-self.sh.
+	(EXTRA_DIST): Likewise.
+
+2012-08-01  Mark Wielaard  <mjw@redhat.com>
+
+	* test-subr.sh (self_test_files): New list of files.
+	(testrun_on_self): New function.
+	* run-elflint-self.sh: Use testrun_on_self.
+
+2012-07-19  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (check_PROGRAMS): Add test-elf_cntl_gelf_getshdr.
+	(TESTS): Add run-elf_cntl_gelf_getshdr.sh.
+	(EXTRA_DIST): Likewise.
+	(test_elf_cntl_gelf_getshdr_LDADD): New.
+	test-elf_cntl_gelf_getshdr.c: New test program.
+	run-elf_cntl_gelf_getshdr.sh: New test script.
+
+2012-07-19  Mark Wielaard  <mjw@redhat.com>
+
+	* run-elflint-self.sh: runtests on ../backends/*so files.
+
+2012-07-19  Mark Wielaard  <mjw@redhat.com>
+
+	* run-unstrip-n.sh: test_cleanup.
+	* Makefile.am (EXTRA_DIST): Add testcore-rtlib-ppc.bz2.
+
+2012-07-11  Mark Wielaard  <mjw@redhat.com>
+
+	* run-readelf-macro.sh: New test.
+	* testfilemacro.bz2: New testfile.
+	* Makefile.am (TESTS): Add run-readelf-macro.sh.
+	(EXTRA_DIST): Add run-readelf-macro.sh and testfilemacro.bz2.
+
+2012-06-27  Mark Wielaard  <mjw@redhat.com>
+
+	* run-readelf-gdb-index.sh: New test.
+	* testfilegdbindex5.bz2: New testfile.
+	* testfilegdbindex7.bz2: Likewise.
+	* Makefile.am (TESTS): Add run-readelf-gdb-index.sh.
+	(EXTRA_DIST): run-readelf-gdb_index.sh, testfilegdbindex5.bz2 and
+	testfilegdbindex7.bz2.
+
+2012-07-17  Mark Wielaard  <mjw@redhat.com>
+
+	* testcore-rtlib-ppc.bz2: New testfile.
+	* run-unstrip-n.sh: Check new ppc core testfile.
+
+2012-06-26  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.am (check_PROGRAMS): Rename from noinst_PROGRAMS.
+
+2012-06-26  Mark Wielaard  <mjw@redhat.com>
+
+	* run-macro-test.sh: New test.
+	* testfile-macinfo.bz2: New testfile.
+	* testfile-macros.bz2: Likewise.
+
+2012-05-07  Mark Wielaard  <mjw@redhat.com>
+
+	* low_high_pc.c: Use proper inttypes in printf formats.
+
+2012-05-11  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (TESTS_ENVIRONMENT): Set LC_ALL and LANG to C.
+
+2012-05-07  Mark Wielaard  <mjw@redhat.com>
+
+	* low_high_pc.c: Allow highpc == lowpc for CU DIEs for buggy GCC.
+
+2012-04-27  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (TESTS): Add run-low_high_pc.sh
+	(EXTRA_DIST): Add run-low_high_pc.sh and testfile_low_high_pc.bz2
+	(noinst_PROGRAMS): Add low_high_pc.
+	(low_high_pc_LDADD): New variable.
+	* low_high_pc.c: New test.
+
+2012-04-26  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Remove run-show-ciefde.sh.
+	* run-show-ciefde.sh: Removed old libdwarf test.
+	* show-ciefde.c: Likewise.
+
+2012-04-02  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (TESTS): Add run-unstrip-n.sh.
+	(EXTRA_DIST): Add testcore-rtlib.bz2 and run-unstrip-n.sh.
+	* run-unstrip-n.sh: New test.
+	* testcore-rtlib.bz2: New testfile.
+
+2012-04-02  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (TESTS): Add run-readelf-d.sh.
+	(EXTRA_DIST): Add testlib_dynseg.so.bz2 and run-readelf-d.sh.
+	* run-readelf-d.sh: New test.
+	* run-elflint-test.sh: Check new testfile.
+
+2012-03-21  Tom Tromey  <tromey@redhat.com>
+
+	* typeiter.c: New file.
+	* run-typeiter.sh: New file.
+	* testfile59.bz2: New file.
+	* Makefile.am (noinst_PROGRAMS): Add typeiter.
+	(TESTS): Add run-typeiter.sh.
+	(EXTRA_DIST): Add run-typeiter.sh, testfile59.bz2.
+	(typeiter_LDADD): New variable.
+
+2012-02-21  Kurt Roeckx  <kurt@roeckx.be>
+
+	* run-alldts.sh: testrun ./alldts.
+
+2012-02-21  Roland McGrath  <roland@hack.frob.com>
+
+	* test-wrapper.sh: Add ${libdir}/elfutils to LD_LIBRARY_PATH.
+	* test-subr.sh (installed_testrun): Likewise.
+
+2012-01-18  Roland McGrath  <roland@hack.frob.com>
+
+	* asm-tst4.c (main): Don't set LD_LIBRARY_PATH in system invocation;
+	it will have been inherited correctly from the test harness.
+	* asm-tst5.c (main): Likewise.
+	* asm-tst6.c (main): Likewise.
+	Reported by Serge Pavlov <serge.pavlov.at.gnu@gmail.com>.
+
+2011-07-09  Roland McGrath  <roland@hack.frob.com>
+
+	* sha1-tst.c: File removed.
+	* Makefile.am (noinst_PROGRAMS, TESTS): Remove it.
+	(sha1_tst_LDADD): Variable removed.
+
+	* md5-sha1-test.c: New file.
+	* Makefile.am [!STANDALONE] (noinst_PROGRAMS, TESTS): Add it.
+	(md5_sha1_test_LDADD): New variable.
+
+2011-05-30  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Add run-readelf-twofiles.sh and
+	run-rerequest_tag.sh
+
+2011-05-24  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Add hello_s390.ko.bz2.
+	* run-strip-reloc.sh: Add hello_s390.ko testcase.
+	* hello_s390.ko.bz2: New test file.
+
+2011-05-23  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (TESTS): Add run-strip-reloc.sh.
+	(EXTRA_DIST): Add run-strip-reloc.sh, hello_i386.ko.bz2
+	hello_x86_64.ko.bz2 and hello_ppc64.ko.bz2
+	* run-strip-reloc.sh: New test.
+	* hello_i386.ko.bz2: New test file.
+	* hello_x86_64.ko.bz2: Likewise.
+	* hello_ppc64.ko.bz2: Likewise.
+
+2011-05-18  Mark Wielaard  <mjw@redhat.com>
+
+	* run-strip-groups.sh: New test.
+	* testfile58.bz2: New test file.
+	* Makefile.am (EXTRA_DIST): Add testfile58.bz2.
+	(TESTS): Add run-strip-groups.sh.
+	(EXTRA_DIST): Likewise.
+
+2011-03-28  Marek Polacek  <mpolacek@redhat.com>
+
+	* alldts.c: New file.
+	* run-alldts.sh: Use it.
+	* Makefile.am (TESTS, EXTRA_DIST, noinst_PROGRAMS): Add them.
+	(alldts_LDADD): New variable.
+
+2011-03-02  Marek Polacek  <mpolacek@redhat.com>
+
+	* dwarf-getstring.c: New test.
+	* run-dwarf-getstring.sh: And its wrapper.
+	* Makefile.am (EXTRA_DIST): Add and update all.
+
+2011-02-27  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* Makefile.am (TESTS): Add run-readelf-twofiles.sh.
+	* run-readelf-twofiles.sh: New file.
+
+2011-02-25  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (BUILD_RPATH): Be consistent in naming.
+
+2011-02-02  Josh Stone  <jistone@redhat.com>
+
+	* run-prelink-addr-test.sh: Add testfile55, 32 and 64-bit.
+	* testfile55-64.bz2, testfile55-64.debug.bz2,
+	testfile55-64.prelink.bz2, testfile55-32.bz2,
+	testfile55-32.debug.bz2, testfile55-32.prelink.bz2: New.
+	* Makefile.am (EXTRA_DIST): Add and update all.
+
+2011-01-12  Roland McGrath  <roland@redhat.com>
+
+	* run-prelink-addr-test.sh: Make symlinks to find .debug files
+	corresponding to .noshdrs files.
+
+2011-01-11  Josh Stone  <jistone@redhat.com>
+
+	* run-prelink-addr-test.sh: Add testfile54, 32 and 64-bit.
+	* testfile54-32.so.bz2, testfile54-32.so.debug.bz2,
+	testfile54-32.prelink.so.bz2, testfile54-32.noshdrs.so.bz2,
+	testfile54-64.so.bz2, testfile54-64.so.debug.bz2,
+	testfile54-64.prelink.so.bz2, testfile54-64.noshdrs.so.bz2: New.
+	* Makefile.am (EXTRA_DIST): Add and update all.
+
+	* run-prelink-addr-test.sh: Run 32 and 64-bit testfile53 tests.
+	* testfile53.bz2, testfile53.debug.bz2,
+	testfile53.prelink.bz2: Deleted, so...
+	* testfile53-64.bz2, testfile53-64.debug.bz2,
+	testfile53-64.prelink.bz2: Recreated with 64-bit names.
+	* testfile53-32.bz2, testfile53-32.debug.bz2,
+	testfile53-32.prelink.bz2: New in 32-bit.
+	* Makefile.am (EXTRA_DIST): Add and update all.
+
+	* run-prelink-addr-test.sh: Run 32 and 64-bit testfile52 tests.
+	* testfile52.so.bz2, testfile52.so.debug.bz2,
+	testfile52.prelink.so.bz2: Deleted, so...
+	* testfile52-32.so.bz2, testfile52-32.so.debug.bz2,
+	testfile52-32.prelink.so.bz2: Recreated with 32-bit names.
+	* testfile52-32.noshdrs.so.bz2: New data file, stripped of headers.
+	* testfile52-64.so.bz2, testfile52-64.so.debug.bz2,
+	testfile52-64.prelink.so.bz2, testfile52-64.noshdrs.so.bz2: New files.
+	* Makefile.am (EXTRA_DIST): Add and update all.
+
+2011-01-10  Josh Stone  <jistone@redhat.com>
+
+	* run-prelink-addr-test.sh: New test for prelinked addrs.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+	* testfile52.so.bz2, testfile52.so.debug.bz2: New data files.
+	* testfile52.prelink.so.bz2: New data file, shows REL->RELA.
+	* testfile53.bz2, testfile53.debug.bz2: New data files.
+	* testfile53.prelink.bz2: New data file, shows ET_EXEC remap.
+	* Makefile.am (EXTRA_DIST): Add them.
+
+2010-06-04  Roland McGrath  <roland@redhat.com>
+
+	* run-unstrip-test.sh: Also test modifying the file in place.
+
+2010-04-22  Roland McGrath  <roland@redhat.com>
+
+	* addrcfi.c (handle_cfi): Fix function name in error message.
+	Use dwarf_errmsg, not dwfl_errmsg, after dwarf_cfi_addrframe.
+
+2010-04-14  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Add run-test-flag-nobits.sh here too.
+
+2010-04-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* msg_tst.c: Adjust expected error message.
+
+2010-04-01  Petr Machata  <pmachata@redhat.com>
+
+	* test-flag-nobits.c: New test.
+	* run-test-flag-nobits.sh: And its wrapper.
+	* Makefile.am (noinst_PROGRAMS, TESTS): Add them.
+	(test_flag_nobits_LDADD): New variable.
+
+2010-02-15  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am: Use config/eu.am for common stuff.
+
+	* asm-tst9.c (main): Rename local to avoid shadowing another local.
+
+2009-07-22  Roland McGrath  <roland@redhat.com>
+
+	* addrcfi.c: Update dwarf_frame_{cfa,register} calling convention.
+
+2009-07-08  Roland McGrath  <roland@redhat.com>
+
+	* addrcfi.c: New file.
+	* Makefile.am (noinst_PROGRAMS): Add it.
+	(addrcfi_LDADD): New variable.
+
+2009-05-07  Petr Machata  <pmachata@redhat.com>
+
+	* testfile51.bz2: New data file.
+	* dwarf-getmacros.c: New test core.
+	* run-dwarf-getmacros.sh: New test wrapper.
+	* Makefile.am (TESTS, EXTRA_DIST, noinst_PROGRAMS): Add them.
+	(dwarf_getmacros_LDADD): New variable.
+
+2009-04-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile [BUILD_STATIC] (libdw): Add $(zip_LIBS).
+	(rdwrmmap_LDADD): Add $(libmudflap).
+
+2009-04-21  Roland McGrath  <roland@redhat.com>
+
+	* testfile50.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* run-dwfl-addr-sect.sh: Add a case using it.
+
+2008-12-31  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: Add tests for dppd, dpps, insertps, movntdqa,
+	mpsadbw, packusdw, pblendvb, pblendw, pcmpeqq, pcmpestri, pcmpestrm,
+	pcmpistri, pcmpistrm, pcmpgtq, phminposuw, pinsrb, pinsrd, pmaxsb,
+	pmaxsd, pmaxud, pmaxuw, pminsb, pminsd, pminud, pminuw, pmovsxbw,
+	pmovsxbd, pmovsxbq, pmovsxwd, pmovsxwq, pmovsxdq, pmovsxbw, pmovsxbd,
+	pmovsxbq, pmovsxwd, pmovsxwq, pmovsxdq, pmuldq, pmulld, popcnt, ptest,
+	roundss, roundps, roundpd, and roundsd.
+	* testfile45.S.bz2: Likewise.
+	* testfile44.expect.bz2: Adjust accordingly.
+	* testfile45.expect.bz2: Likewise.
+
+	* testfile44.S.bz2: Add tests for blendvpd and blendvps.
+	* testfile45.S.bz2: Likewise.
+	* testfile44.expect.bz2: Adjust accordingly.
+	* testfile45.expect.bz2: Likewise.
+
+2008-12-30  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: Add tests for blendpd and blendps.
+	* testfile45.S.bz2: Likewise.
+	* testfile44.expect.bz2: Adjust accordingly.
+	* testfile45.expect.bz2: Likewise.
+
+2008-12-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: Add tests for AMD 3DNOW.
+	* testfile45.S.bz2: Likewise.
+	* testfile44.expect.bz2: Adjust accordingly.
+	* testfile45.expect.bz2: Likewise.
+
+2008-11-26  Roland McGrath  <roland@redhat.com>
+
+	* dwfl-bug-getmodules.c: New file.
+	* Makefile.am (noinst_PROGRAMS): Add it.
+	(dwfl_bug_getmodules_LDADD): New variable.
+
+2008-09-10  Roland McGrath  <roland@redhat.com>
+
+	* test-subr.sh (LC_ALL): Export it set to "C".
+	* run-dwfl-addr-sect.sh: Don't do it here.
+	* run-strings-test.sh: Likewise.
+
+2008-08-21  Denys Vlasenko  <dvlasenk@redhat.com>
+
+	* run-addrname-test.sh: Add a new case.
+	* testfile49.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+
+2008-04-10  Roland McGrath  <roland@redhat.com>
+
+	* testfile48.bz2, testfile48.bz2.debug: New data files.
+	* Makefile.am (EXTRA_DIST): Add them.
+	* run-strip-test8.sh: Use them.
+
+	* testfile16.bz2, testfile16.debug.bz2: Replace data files.
+
+	* run-strip-test.sh: Fail if stripped output has ".debug_*" sections.
+	* run-strip-test8.sh: New file.
+	* testfile47.bz2: New data file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add them.
+
+2008-03-31  Roland McGrath  <roland@redhat.com>
+
+	* run-early-offscn.sh: New file.
+	* early-offscn.c: New file.
+	* Makefile.am (noinst_PROGRAMS, TESTS, EXTRA_DIST): Add them.
+	(early_offscn_LDADD): New variable.
+
+2008-03-19  Roland McGrath  <roland@redhat.com>
+
+	* run-addrname-test.sh: Add a new case.
+
+2008-02-22  Roland McGrath  <roland@redhat.com>
+
+	* run-elflint-test.sh: Typo fix.
+
+2008-02-21  Roland McGrath  <roland@redhat.com>
+
+	* run-disasm-x86.sh: Use uname instead of arch, keep tools required
+	for the build down to minimum.
+	* run-disasm-x86-64.sh: Likewise.
+
+2008-02-20  Roland McGrath  <roland@redhat.com>
+
+	* testfile46.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* run-elflint-test.sh: Test on it.
+
+2008-02-01  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am: Hook up sha1-tst.c.
+	* sha1-tst.c: New file.
+
+2008-01-21  Roland McGrath  <roland@redhat.com>
+
+	* testfile45.S.bz2: Add tests for cltq, cqto.
+	* testfile45.expect.bz2: Adjust.
+
+2008-01-14  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile45.S.bz2: Add more tests.
+	* testfile45.expect.bz2: Adjust.
+
+2008-01-11  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile45.expect.bz2: Adjust for adding of address for %rip based
+	address mode.
+
+2008-01-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile45.S.bz2: Add more tests.
+	* testfile45.expect.bz2: Adjust.
+
+2008-01-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am (TESTS): Add run-disasm-x86-64.sh.
+	(EXTRA): Add testfile45.S.bz2, testfile45.expect.bz2,
+	run-disasm-x86-64.sh.
+	* run-disasm-x86-64.sh: New file.
+	* testfile45.S.bz2: New file.
+	* testfile45.expect.bz2: New file.
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2008-01-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2008-01-04  Roland McGrath  <roland@redhat.com>
+
+	* dwfl-bug-fd-leak.c (main): Add a cast.
+
+2008-01-03  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2008-01-01  Ulrich Drepper  <drepper@redhat.com>
+
+	* line2addr.c: Use %m modifier instead of %a to appease gcc.
+
+2008-01-01  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2007-12-31  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2007-12-30  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2007-12-29  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.s.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2007-12-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2007-12-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust.
+
+2007-12-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: New tests.
+	* testfile44.expect.bz2: Adjust
+
+2007-12-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile44.S.bz2: More tests.
+	* testfile44.expect.bz2: Adjust appropriately.
+
+2007-12-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am (TESTS): Add run-disasm.sh.
+	(EXTRA_DIST): Add run-disasm.sh, testfile44.S.bz2, and
+	testfile44.expect.bz2.
+	* run-disasm.sh: New file.
+	* testfile44.S.bz2: New file.
+	* testfile44.expect.bz2: New file.
+
+2007-12-15  Roland McGrath  <roland@redhat.com>
+
+	* run-allregs.sh: Change expected output for powerpc spefscr.
+
+2007-10-20  Roland McGrath  <roland@redhat.com>
+
+	* run-dwfl-addr-sect.sh: Change expected output, no errors.
+
+2007-10-19  Roland McGrath  <roland@redhat.com>
+
+	* dwfl-addr-sect.c (handle_address): Return int.
+	Don't exit on error, just return nonzero.
+	(main): Collect results.
+	* run-dwfl-addr-sect.sh: New file.
+	* testfile43.bz2: New data file.
+	* Makefile.am (EXTRA_DIST, TESTS): Add them.
+
+2007-10-18  Roland McGrath  <roland@redhat.com>
+
+	* run-allregs.sh: Update expected ppc output for vrsave/vscr.
+
+2007-10-16  Roland McGrath  <roland@redhat.com>
+
+	* test-subr.sh (remove_files): Don't pass -Bb to diff.
+
+2007-10-09  Roland McGrath  <roland@redhat.com>
+
+	* dwflmodtest.c (print_module): Don't use %p in output.
+	* run-dwfl-bug-offline-rel.sh: Updated expected output.
+
+2007-10-08  Roland McGrath  <roland@redhat.com>
+
+	* testfile42.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* run-elflint-test.sh: New test on that file.
+
+2007-10-04  Roland McGrath  <roland@redhat.com>
+
+	* run-readelf-test4.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+
+2007-10-03  Roland McGrath  <roland@redhat.com>
+
+	* run-readelf-test3.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+
+2007-10-01  Roland McGrath  <roland@redhat.com>
+
+	* run-readelf-test2.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+
+2007-09-11  Roland McGrath  <roland@redhat.com>
+
+	* run-addrname-test.sh: Add a new case.
+	* testfile41.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+
+2007-08-23  Roland McGrath  <roland@redhat.com>
+
+	* run-allregs.sh: Update expected x86-64 output for %rflags.
+
+2007-08-12  Roland McGrath  <roland@redhat.com>
+
+	* run-strip-test7.sh: New file.
+	* testfile39.bz2: New data file.
+	* testfile40.bz2: New data file.
+	* testfile40.debug.bz2: New data file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add them.
+
+2007-08-09  Roland McGrath  <roland@redhat.com>
+
+	* dwfl-bug-report.c: Fix header inclusion.
+
+2007-08-08  Roland McGrath  <roland@redhat.com>
+
+	* run-addrname-test.sh: Add a new case using addr2line -S.
+	* testfile38.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+
+2007-07-16  Roland McGrath  <roland@redhat.com>
+
+	* dwfl-bug-report.c: New file.
+	* Makefile.am (noinst_PROGRAMS, TESTS): Add it.
+	(dwfl_bug_report_LDADD): New variable.
+
+2007-06-06  Roland McGrath  <roland@redhat.com>
+
+	* run-unstrip-test.sh: Declare testfile.unstrip for removal.
+
+2007-06-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Add missing line continuation and
+	testfile37.bz and testfile37.debug.bz2.
+
+2007-05-23  Roland McGrath  <roland@redhat.com>
+
+	* run-allregs.sh: Update expected Alpha results.
+
+2007-05-18  Roland McGrath  <roland@redhat.com>
+
+	* run-strip-test4.sh (stripped, debugfile): Use new reference files.
+	* testfile37.bz2: New data file.
+	* testfile37.debug.bz2: New data file.
+	* run-unstrip-test2.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add them.
+
+2007-05-10  Roland McGrath  <roland@redhat.com>
+
+	* run-dwfl-bug-offline-rel.sh: New file.
+	* testfile36.bz2: New data file.
+	* testfile36.debug.bz2: New data file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add them.
+
+2007-04-28  Roland McGrath  <roland@redhat.com>
+
+	* run-strip-test6.sh (stripped, debugfile): Use new reference files.
+	* testfile35.bz2: New data file.
+	* testfile35.debug.bz2: New data file.
+	* run-unstrip-test.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add them.
+
+	* run-strip-test.sh: Do all elflint and cmp runs even when some fail.
+
+2007-04-26  Roland McGrath  <roland@redhat.com>
+
+	* run-elflint-self.sh: Run all tests even if one fails.
+
+	* run-allregs.sh: Add expected output for alpha.
+
+2007-04-24  Roland McGrath  <roland@redhat.com>
+
+	* run-strip-test.sh: When we saved the debug info, test unstrip too.
+
+2007-04-22  Roland McGrath  <roland@redhat.com>
+
+	* run-allregs.sh: Update expected register info.
+
+2007-04-16  Roland McGrath  <roland@redhat.com>
+
+	* dwfl-addr-sect.c: New file.
+	* Makefile.am (noinst_PROGRAMS): Add it.
+	(dwfl_addr_sect_LDADD): New variable.
+
+2007-04-05  Roland McGrath  <roland@redhat.com>
+
+	* get-files.c: Test dwarf_getsrcdirs.
+	* run-get-files.sh: Update expected output.
+
+2007-04-01  Roland McGrath  <roland@redhat.com>
+
+	* run-allregs.sh: Updated expected output for x86_64.
+
+2007-03-04  Roland McGrath  <roland@redhat.com>
+
+	* dwfl-bug-fd-leak.c: New file.
+	* Makefile.am (noinst_PROGRAMS, TESTS): Add it.
+	(dwfl_bug_fd_leak_LDADD): New variable.
+
+	* dwflmodtest.c: Test dwfl_getmodules before and after getdwarf,
+	show what files have been located.
+
+2007-02-02  Roland McGrath  <roland@redhat.com>
+
+	* run-addrname-test.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+	* testfile34.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+
+2007-01-20  Roland McGrath  <roland@redhat.com>
+
+	* testfile33.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* run-elflint-test.sh: Test on it too.
+
+2007-01-18  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (CFLAGS): Don't molest it.
+
+2007-01-11  Roland McGrath  <roland@redhat.com>
+
+	* testfile32.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* run-elflint-test.sh: Test on it too.
+
+2007-02-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* arls.c: New file.
+	* Makefile (noinst_PROGRAMS): Add arls.
+
+	* run-ranlib-test2.sh: Fix type in comment.
+
+2007-01-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-elflint-self.sh (runtest): Show which file has the problem.
+
+2007-01-10  Roland McGrath  <roland@redhat.com>
+
+	* dwfl-bug-addr-overflow.c: New file.
+	* Makefile.am (TESTS): Add it.
+	(dwfl_bug_addr_overflow_LDADD): New variable.
+
+2006-12-17  Roland McGrath  <roland@redhat.com>
+
+	* msg_tst.c (libelf_msgs): Fix ELF_E_INVALID_PHDR msg.
+
+2006-09-05  Roland McGrath  <roland@redhat.com>
+
+	* run-strings-test.sh: Export LC_ALL=C for the test.
+
+2006-08-29  Roland McGrath  <roland@redhat.com>
+
+	* run-arextract.sh: Use testrun, tempfiles functions from test-subr.sh.
+	* run-arsymtest.sh: Likewise.
+
+	* run-native-test.sh (native.c compilation): Add some braces.
+
+2006-08-22  Roland McGrath  <roland@redhat.com>
+
+	* allregs.c (dwarf_encoding_string): New function, swiped from readelf.
+	(struct reginfo): New members bits, type.
+	(one_register, match_register): Update to take new args,
+	record and display new info.
+	(main): Display new info.
+	* run-allregs.sh: Update expected results.
+
+2006-08-03  Roland McGrath  <roland@redhat.com>
+
+	* run-allregs.sh: Add sparc cases.
+	* testfile30.bz2: New data file.
+	* testfile31.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add them.
+
+2006-07-21  Roland McGrath  <roland@redhat.com>
+
+	* allregs.c (struct reginfo): Increase size of name.
+	(one_register): Assert that it's big enough.
+
+2006-04-04  Roland McGrath  <roland@redhat.com>
+
+	* run-bug1-test.sh: Test a second case, to cover both byte orders.
+	* testfile29.bz2: New file.
+	* testfile29.rdwr.bz2: New file.
+	* Makefile.am (EXTRA_DIST): Add them.
+
+2006-04-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am: Add rules to run run-bug1-test.sh.
+	* rdwrmmap.c: New file.
+	* run-bug1-test.sh: New file.
+	* testfile28.bz2: New file.
+	* testfile28.rdwr.bz2: New file.
+
+2006-03-09  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (AM_LDFLAGS): Define to pass -rpath-link.
+
+2006-03-01  Roland McGrath  <roland@redhat.com>
+
+	* show-die-info.c (tagnames, attrs): Update name tables for dwarf.h
+	changes matching 3.0 spec.
+
+2006-01-13  Roland McGrath  <roland@redhat.com>
+
+	* run-native-test.sh: Do kill -9 and reap explicitly at end, since
+	bash 3.1 whines when it's done in the trap 0 handler.
+
+2006-01-11  Roland McGrath  <roland@redhat.com>
+
+	* testfile26.bz2: New data file.
+	* testfile27.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add them.
+	* run-allregs.sh: Test s390 data.
+
+2005-12-14  Roland McGrath  <roland@redhat.com>
+
+	* run-native-test.sh: Redirect output from native test process.
+
+2005-12-13  Roland McGrath  <roland@redhat.com>
+
+	* allregs.c (main): Fail if we find no registers.
+
+	* run-native-test.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+
+2005-12-10  Ulrich Drepper  <drepper@redhat.com
+
+	* run-readelf-test1.sh: New file.
+	* Makefile.am (TESTS): Add run-readelf-test1.sh.
+	(EXTRA_DIST): Likewise.
+
+2005-12-07  Roland McGrath  <roland@redhat.com>
+
+	* ecp.c (main): Use elf_end to clean up.
+
+2005-11-25  Roland McGrath  <roland@redhat.com>
+
+	* coverage.sh: Given -v argument, print names of unused files.
+
+	* addrscopes.c (main): Use dwfl_end before return.
+	* allregs.c (main): Likewise.
+	* find-prologues.c (main): Likewise.
+	* funcretval.c (main): Likewise.
+	* funcscopes.c (main): Likewise.
+	* line2addr.c (main): Likewise.
+
+	* run-allregs.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+
+	* allregs.c: Use libdwfl wrapper instead of direct libebl calls.
+	* Makefile.am (allregs_LDADD): Updated.
+
+	* allregs.c: New file.
+	* Makefile.am (noinst_PROGRAMS): Add it.
+	(allregs_LDADD): New variable.
+
+2005-11-18  Roland McGrath  <roland@redhat.com>
+
+	* test-subr.sh (installed_testrun): Treat /usr/lib64 like /usr/lib.
+	* test-wrapper.sh: Likewise.
+
+2005-11-17  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (installed_TESTS_ENVIRONMENT): Set libdir, bindir in
+	environment for test-wrapper.sh.
+	* test-wrapper.sh: Set LD_LIBRARY_PATH from ${libdir} if not /usr/lib.
+	* test-subr.sh (installed_testrun): Likewise.
+	Use explicit path in ${bindir}.
+
+	* Makefile.am (installcheck-local): Fix typo in last change.
+
+2005-11-16  Roland McGrath  <roland@redhat.com>
+
+	* configure.ac: New file, for standalone build/dist of test suite.
+	* Makefile.am [!STANDALONE] (INCLUDES): Don't define it.
+	(asm_TESTS): New variable, broken out of ...
+	(TESTS): ... here.  Also remove msg_tst.
+	[!STANDALONE] (TESTS, noinst_PROGRAMS): Add in $(asm_TESTS), msg_tst.
+	(installed_TESTS_ENVIRONMENT): New variable.
+	[STANDALONE] (TESTS_ENVIRONMENT): Use that.
+	[!STANDALONE] (installcheck-local): Likewise.
+	[STANDALONE] (libdw, libelf, libasm, libebl): Define using -lfoo.
+	* addrscopes.c: Include <config.h>.
+	Use ELFUTILS_HEADER macro in #include of installed elfutils/ headers.
+	* allfcts.c: Likewise.
+	* asm-tst1.c: Likewise.
+	* asm-tst2.c: Likewise.
+	* asm-tst3.c: Likewise.
+	* asm-tst4.c: Likewise.
+	* asm-tst5.c: Likewise.
+	* asm-tst6.c: Likewise.
+	* asm-tst7.c: Likewise.
+	* asm-tst8.c: Likewise.
+	* asm-tst9.c: Likewise.
+	* dwflmodtest.c: Likewise.
+	* find-prologues.c: Likewise.
+	* funcscopes.c: Likewise.
+	* get-aranges.c: Likewise.
+	* get-files.c: Likewise.
+	* get-lines.c: Likewise.
+	* get-pubnames.c: Likewise.
+	* line2addr.c: Likewise.
+	* newscn.c: Likewise.
+	* show-abbrev.c: Likewise.
+	* show-die-info.c: Likewise.
+	* update3.c: Likewise.
+	* update4.c: Likewise.
+	* funcretval.c: Likewise.
+
+	* dwflmodtest.c (print_instance): Don't use INTUSE.
+	(options): Don't use N_ macro.
+
+2005-11-15  Roland McGrath  <roland@redhat.com>
+
+	* coverage.sh: Look in backends.
+	* Makefile.am (BUILD_RPATH): Search ../backends, not ../libebl.
+	(TESTS_ENVIRONMENT): Likewise.
+
+	* funcretval.c (handle_function): Don't take DW_AT_type of FUNCDIE,
+	pass FUNCDIE direclty to dwfl_module_return_value_location.
+
+	* Makefile.am (BUILD_RPATH): New variable.
+	[TESTS_RPATH] (AM_LDFLAGS): Pass -rpath option using that value.
+	(tests_rpath): New variable.
+	(installcheck-local): Pass it to test-wrapper.sh.
+	* test-wrapper.sh: In "installed" format, take yes/no value
+	for elfutils_tests_rpath, which export.  When running a test
+	binary for installcheck, exit 77.
+	* test-subr.sh (installed_testrun): When running a test binary
+	for installcheck, exit 77 if $elfutils_tests_rpath = yes.
+
+2005-11-14  Roland McGrath  <roland@redhat.com>
+
+	* test-subr.sh: New file.
+	* test-wrapper.sh: New file.
+	* Makefile.am (EXTRA_DIST): Add them.
+	(AM_LDFLAGS): Variable removed.
+	(TESTS_ENVIRONMENT): New variable.
+	(installcheck-local): New target.
+	* run-addrscopes.sh: Use test-subr.sh.
+	* run-allfcts.sh: Likewise.
+	* run-ecp-test.sh: Likewise.
+	* run-ecp-test2.sh: Likewise.
+	* run-elflint-self.sh: Likewise.
+	* run-elflint-test.sh: Likewise.
+	* run-find-prologues.sh: Likewise.
+	* run-funcscopes.sh: Likewise.
+	* run-get-aranges.sh: Likewise.
+	* run-get-files.sh: Likewise.
+	* run-get-lines.sh: Likewise.
+	* run-get-pubnames.sh: Likewise.
+	* run-line2addr.sh: Likewise.
+	* run-ranlib-test.sh: Likewise.
+	* run-ranlib-test2.sh: Likewise.
+	* run-show-abbrev.sh: Likewise.
+	* run-show-ciefde.sh: Likewise.
+	* run-show-die-info.sh: Likewise.
+	* run-strings-test.sh: Likewise.
+	* run-strip-test.sh: Likewise.
+
+2005-11-13  Roland McGrath  <roland@redhat.com>
+
+	* funcretval.c: New file.
+	* Makefile.am (noinst_PROGRAMS): Add it.
+	(funcretval_LDADD): New variable.
+
+2005-11-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* line2addr.c (handle_module): Add missing parameter to printf.
+
+2005-10-27  Roland McGrath  <roland@redhat.com>
+
+	* allfcts.c (cb): Update for dwarf_func_* -> dwarf_decl_* changes.
+	* funcscopes.c (handle_function): Likewise.
+	* dwflmodtest.c (print_inline, print_func): Likewise.
+	* find-prologues.c (handle_function): Likewise.
+
+2005-10-27  Roland McGrath  <roland@redhat.com>
+
+	* run-find-prologues.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+
+	* find-prologues.c (handle_function): Skip inlines.
+
+2005-10-25  Roland McGrath  <roland@redhat.com>
+
+	* find-prologues.c: New file.
+	* Makefile.am (noinst_PROGRAMS): Add it.
+	(find_prologues_LDADD): New variable.
+
+2005-09-02  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-strings-test.sh: Remove strings.out in the end.
+
+2005-08-31  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-addrscopes.sh: Use correct exit code if test cannot be performed.
+	* run-allfcts.sh: Likewise.
+	* run-ecp-test.sh: Likewise.
+	* run-ecp-test2.sh: Likewise.
+	* run-elflint-test.sh: Likewise.
+	* run-funcscopes.sh: Likewise.
+	* run-get-aranges.sh: Likewise.
+	* run-get-files.sh: Likewise.
+	* run-get-lines.sh: Likewise.
+	* run-get-pubnames.sh: Likewise.
+	* run-line2addr.sh: Likewise.
+	* run-ranlib-test2.sh: Likewise.
+	* run-show-abbrev.sh: Likewise.
+	* run-show-ciefde.sh: Likewise.
+	* run-show-die-info.sh: Likewise.
+	* run-strings-test.sh: Likewise.
+	* run-strip-test.sh: Likewise.
+
+2005-08-30  Ulrich Drepper  <drepper@redhat.com>
+
+	* coverage.sh: Handle case where there is no .gcno file at all.
+
+2005-08-29  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Add coverage.
+	[GCOV]: Generate coverage summary after the tests ran
+	* coverage.sh: New file.
+
+2005-08-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.an [BUILD_STATIC] (libdw): Add -ldl.
+	(CLEANFILES): Add *.gcno *.gcda *.gconv.
+
+2005-08-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-strings-test.sh: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add it.
+
+2005-08-27  Roland McGrath  <roland@redhat.com>
+
+	* addrscopes.c (handle_address): Apply bias to PC addresses.
+
+	* run-funcscopes.sh: New file.
+	* testfile25.bz2: New data file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add them.
+
+2005-08-26  Roland McGrath  <roland@redhat.com>
+
+	* addrscopes.c (dwarf_diename_integrate): Removed.
+	(print_vars, handle_address): Use plain dwarf_diename.
+
+2005-08-25  Roland McGrath  <roland@redhat.com>
+
+	* funcscopes.c: New file.
+	* Makefile.am (noinst_PROGRAMS): Add it.
+	(funcscopes_LDADD): New variable.
+
+	* run-addrscopes.sh: Add another case.
+	* testfile24.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+
+	* addrscopes.c (handle_address): Take new argument IGNORE_INLINES,
+	pass it to dwarf_getscopes.
+	(main): Pass it, true when '=' follows an address.
+
+2005-08-24  Roland McGrath  <roland@redhat.com>
+
+	* line2addr.c (print_address): Omit () for DSOs.
+
+2005-08-24  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-line2addr.sh: Remove testfile23 in the end.
+
+	* Makefile.am [BUILD_STATIC] (libdw): Add $(libelf) and $(libebl).
+	[MUDFLAP] (AM_LDFLAGS): Define to find libebl modules.
+
+2005-08-22  Roland McGrath  <roland@redhat.com>
+
+	* run-line2addr.sh: Add a case.
+	* testfile23.bz2: New data file.
+	* Makefile.am (EXTRA_DIST): Add it.
+
+2005-08-18  Roland McGrath  <roland@redhat.com>
+
+	* run-addrscopes.sh: New file.
+	* testfile22.bz2: New data file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add them.
+
+	* addrscopes.c: New file.
+	* Makefile.am (noinst_PROGRAMS): Add it.
+	(addrscopes_LDADD): New variable.
+
+2005-08-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-elflint-self.sh: Don't run test if the file doesn't exist.
+
+2005-08-15  Roland McGrath  <roland@redhat.com>
+
+	* dwflmodtest.c (print_instance, print_inline): New functions.
+	(print_func): Call print_inline.
+	(options, parse_opt): Grok -i/--inlines.
+
+2005-08-07  Roland McGrath  <roland@redhat.com>
+
+	* dwflmodtest.c: Print function details only if -f flag is given.
+
+2005-08-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-elflint-self.sh: New file.
+	* Makefile.am (TESTS): Add run-elflint-self.sh.
+	(EXTRA_DIST): Likewise.
+
+	* Makefile.am: Link with statis libs if BUILD_STATIC.
+	(dwflmodtest_LDADD): Also link with -ldl.
+
+2005-08-02  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am: Add -ldl to asm_tst[1-9]_LDASS.
+	* asm-tst1.c: Adjust for new asm_begin interface.  Open backend
+	library first.
+	* asm-tst2.c: Likewise.
+	* asm-tst3.c: Likewise.
+	* asm-tst4.c: Likewise.
+	* asm-tst5.c: Likewise.
+	* asm-tst6.c: Likewise.
+	* asm-tst7.c: Likewise.
+	* asm-tst8.c: Likewise.
+	* asm-tst9.c: Likewise.
+
+	* msg_tst.c: Add new error message.
+
+2005-07-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am (dwflmodtest_LDADD): Add $(libebl).
+
+2005-06-01  Roland McGrath  <roland@redhat.com>
+
+	* line2addr.c: Rewritten using libdwfl.
+	* run-line2addr.sh: Update test for changed arguments.
+	* Makefile.am (INCLUDES): Add libdwfl source directory to path.
+	(libdwfl): New variable.
+	(line2addr_LDADD): Use it.
+
+2005-07-28  Roland McGrath  <roland@redhat.com>
+
+	* dwflmodtest.c: New file, moved from ../libdwfl/ptest.c to here.
+	* Makefile.am (noinst_PROGRAMS): Add dwflmodtest.
+	(dwflmodtest_LDADD): New variable.
+	(INCLUDES): Add -I$(top_srcdir)/libdwfl here.
+
+2005-07-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* testfile18.bz2: New file.
+	* run-elflint-test.sh: New file.
+	* Makefile.am (TESTS): Add run-elflint-test.sh.
+	(EXTRA_DIST): Add run-elflint-test.sh and testfile18.bz2.
+
+2005-05-24  Ulrich Drepper  <drepper@redhat.com>
+
+	* get-files.c (main): Use correct format specifier.
+
+2005-05-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am: Add -Wextra to CFLAGS.
+	* get-files.c: Remove warning this produced.
+	* get-pubnames.c: Likewise.
+	* newfile.c: Likewise.
+	* newscn.c: Likewise.
+	* scnnames.c: Likewise.
+	* showptable.c: Likewise.
+	* test-nlist.c: Likewise.
+	* update1.c: Likewise.
+	* update2.c: Likewise.
+	* update3.c: Likewise.
+	* update4.c: Likewise.
+
+2005-05-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-line2addr.sh: Remove testfile14 at the end.
+
+	* run-strip-test.sh: Remove debuginfo test input file as well.
+
+	* Makefile.am (EXTRA_DIST): Newly added files incorrectly used
+	.bz, not .bz2.
+
+2005-05-03  Roland McGrath  <roland@redhat.com>
+
+	* run-strip-test.sh: Use variables for test file names.
+	Optionally produce separate debug file and check it.
+	* run-strip-test2.sh: Use run-strip-test.sh via ., no duplication.
+	* run-strip-test3.sh: Likewise.
+	* run-strip-test4.sh: New file.
+	* run-strip-test5.sh: New file.
+	* run-strip-test6.sh: New file.
+	* testfile15.bz: New file.
+	* testfile15.debug.bz: New file.
+	* testfile16.bz: New file.
+	* testfile16.debug.bz: New file.
+	* testfile17.bz: New file.
+	* testfile17.debug.bz: New file.
+	* Makefile.am (TESTS, EXTRA_DIST): Add them.
+
+2005-04-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* run-line2addr.sh: Also use testfile14.  Adjust for correct
+	return of multiple matches.
+	* testfile14.bz2: New file.
+	* Makefile.am (EXTRA_DIST): Add testfile14.bz2.
+
+	* show-abbrev.c (main): Adjust for dwarf_getabbrev interface change.
+
+2005-04-04  Roland McGrath  <roland@redhat.com>
+
+	* line2addr.c (main): Initialize LINES and NLINES before calling
+	dwarf_getsrc_file, and free LINES afterwards.
+
+	* allfcts.c (main): Use size_t for CUHL.
+
+2005-04-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* line2addr.c: New file.
+	* run-line2addr.sh: New file.
+	* Makefile.am: Add rules to build, run, and distribute new code.
+
+2005-04-02  Ulrich Drepper  <drepper@redhat.com>
+
+	* allfcts.c: New file.
+	* run-allfcts.sh: New file.
+	* Makefile.am: Add rules to build, run, and distribute new code.
+
+2005-02-05  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am [MUDFLAP] (AM_CFLAGS): Add -fmudflap.  Link all test
+	programs with -lmudflap.
+
+2004-09-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* asm-tst4.c (main): Add LD_LIBRARY_PATH to elflint invocation.
+	* asm-tst5.c (main): Likewise.
+	* asm-tst6.c (main): Likewise.
+
+2004-01-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.am: Support building with mudflap.
+
+2004-01-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* get-aranges.c: Rewrite to use libdw.
+	* Makefile.am: Reenable get-aranges test.
+
+2004-01-11  Ulrich Drepper  <drepper@redhat.com>
+
+	* get-lines.c: New file.
+	* get-files.c: Adjust for libdw.
+	* run-get-files.sh: Adjust expected result.
+	* run-get-lines.sh: Likewise.
+	* Makefile.am: Run get-lines test.  Don't run get-aranges and
+	get-ciefde test for now.
+
+	* show-abbrev.c: Adjust call to dwarf_getabbrevattr after interface
+	change.  Print attribute offset information.
+	* run-show-abbrev.sh: Adjust expected output.
+
+2004-01-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* show-abbrev.c: Adjust call to dwarf_nextcu after interface change.
+	* show-die-info.c: Likewise.
+	* run-show-die-info.sh: Adjust expected output.
+
+2003-08-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.in: Depend on libebl.a, not libebl.so.
+
+2003-08-11  Ulrich Drepper  <drepper@redhat.com>
+
+	* Moved to CVS archive.
diff --git a/src/tests/Makefile b/src/tests/Makefile
new file mode 100644
index 0000000..b810dd0
--- /dev/null
+++ b/src/tests/Makefile
@@ -0,0 +1,2932 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# tests/Makefile.  Generated from Makefile.in by configure.
+
+# 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.
+
+
+
+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)/elfutils
+pkgincludedir = $(includedir)/elfutils
+pkglibdir = $(libdir)/elfutils
+pkglibexecdir = $(libexecdir)/elfutils
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+	$(top_srcdir)/config/test-driver ChangeLog
+am__append_1 = -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__append_2 = -Wl,-rpath-link,../libasm:../libdw:../libelf
+#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) \
+	update2$(EXEEXT) update3$(EXEEXT) update4$(EXEEXT) \
+	test-nlist$(EXEEXT) show-die-info$(EXEEXT) get-files$(EXEEXT) \
+	get-lines$(EXEEXT) get-pubnames$(EXEEXT) get-aranges$(EXEEXT) \
+	allfcts$(EXEEXT) line2addr$(EXEEXT) addrscopes$(EXEEXT) \
+	funcscopes$(EXEEXT) show-abbrev$(EXEEXT) hash$(EXEEXT) \
+	newscn$(EXEEXT) ecp$(EXEEXT) dwflmodtest$(EXEEXT) \
+	find-prologues$(EXEEXT) funcretval$(EXEEXT) allregs$(EXEEXT) \
+	rdwrmmap$(EXEEXT) dwfl-bug-addr-overflow$(EXEEXT) \
+	arls$(EXEEXT) dwfl-bug-fd-leak$(EXEEXT) \
+	dwfl-addr-sect$(EXEEXT) dwfl-bug-report$(EXEEXT) \
+	early-offscn$(EXEEXT) dwfl-bug-getmodules$(EXEEXT) \
+	dwarf-getmacros$(EXEEXT) addrcfi$(EXEEXT) \
+	test-flag-nobits$(EXEEXT) dwarf-getstring$(EXEEXT) \
+	rerequest_tag$(EXEEXT) alldts$(EXEEXT) md5-sha1-test$(EXEEXT) \
+	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) \
+	deleted$(EXEEXT) deleted-lib.so$(EXEEXT) \
+	aggregate_size$(EXEEXT) vdsosyms$(EXEEXT) $(am__EXEEXT_1) \
+	$(am__EXEEXT_2) $(am__EXEEXT_4)
+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-get-files.sh run-get-lines.sh run-get-pubnames.sh \
+	run-get-aranges.sh run-allfcts.sh run-show-abbrev.sh \
+	run-line2addr.sh hash$(EXEEXT) newscn$(EXEEXT) \
+	run-strip-test.sh run-strip-test2.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-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-disasm-x86.sh run-disasm-x86-64.sh run-early-offscn.sh \
+	run-dwarf-getmacros.sh run-test-flag-nobits.sh \
+	run-prelink-addr-test.sh run-dwarf-getstring.sh \
+	run-rerequest_tag.sh run-typeiter.sh run-readelf-d.sh \
+	run-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-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-addr2line-i-lex-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 run-deleted.sh run-linkmap-cut.sh \
+	run-aggregate-size.sh vdsosyms$(EXEEXT) run-readelf-A.sh \
+	$(am__EXEEXT_2) $(am__append_7) $(am__append_8) \
+	$(am__EXEEXT_4)
+am__append_5 = msg_tst md5-sha1-test
+am__append_6 = msg_tst md5-sha1-test
+#am__append_7 = run-readelf-s.sh run-dwflsyms.sh
+am__append_8 = run-readelf-zdebug.sh
+am__append_9 = $(asm_TESTS)
+am__append_10 = $(asm_TESTS)
+subdir = tests
+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 =
+am__EXEEXT_1 = backtrace-child-biarch$(EXEEXT)
+am__EXEEXT_2 = msg_tst$(EXEEXT) \
+	md5-sha1-test$(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)
+am__EXEEXT_4 = $(am__EXEEXT_3)
+addrcfi_SOURCES = addrcfi.c
+addrcfi_OBJECTS = addrcfi.$(OBJEXT)
+am__DEPENDENCIES_1 =
+am__DEPENDENCIES_2 =  \
+	../libelf/libelf.so
+#am__DEPENDENCIES_2 =  \
+#	../libelf/libelf.a
+am__DEPENDENCIES_3 = ../libebl/libebl.a
+am__DEPENDENCIES_4 =  \
+	../libdw/libdw.so
+#am__DEPENDENCIES_4 =  \
+#	../libdw/libdw.a \
+#	$(am__DEPENDENCIES_1) \
+#	$(am__DEPENDENCIES_2) \
+#	$(am__DEPENDENCIES_3)
+addrcfi_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_3) \
+	$(am__DEPENDENCIES_2)
+addrscopes_SOURCES = addrscopes.c
+addrscopes_OBJECTS = addrscopes.$(OBJEXT)
+addrscopes_DEPENDENCIES = $(am__DEPENDENCIES_4)
+aggregate_size_SOURCES = aggregate_size.c
+aggregate_size_OBJECTS = aggregate_size.$(OBJEXT)
+aggregate_size_DEPENDENCIES = $(am__DEPENDENCIES_4) \
+	$(am__DEPENDENCIES_2)
+alldts_SOURCES = alldts.c
+alldts_OBJECTS = alldts.$(OBJEXT)
+alldts_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+allfcts_SOURCES = allfcts.c
+allfcts_OBJECTS = allfcts.$(OBJEXT)
+allfcts_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+allregs_SOURCES = allregs.c
+allregs_OBJECTS = allregs.$(OBJEXT)
+allregs_DEPENDENCIES = $(am__DEPENDENCIES_4)
+arextract_SOURCES = arextract.c
+arextract_OBJECTS = arextract.$(OBJEXT)
+arextract_DEPENDENCIES = $(am__DEPENDENCIES_2)
+arls_SOURCES = arls.c
+arls_OBJECTS = arls.$(OBJEXT)
+arls_DEPENDENCIES = $(am__DEPENDENCIES_2)
+arsymtest_SOURCES = arsymtest.c
+arsymtest_OBJECTS = arsymtest.$(OBJEXT)
+arsymtest_DEPENDENCIES = $(am__DEPENDENCIES_2)
+asm_tst1_SOURCES = asm-tst1.c
+asm_tst1_OBJECTS = asm-tst1.$(OBJEXT)
+am__DEPENDENCIES_5 =  \
+	../libasm/libasm.so
+#am__DEPENDENCIES_5 =  \
+#	../libasm/libasm.a
+asm_tst1_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+asm_tst3_SOURCES = asm-tst3.c
+asm_tst3_OBJECTS = asm-tst3.$(OBJEXT)
+asm_tst3_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+asm_tst5_SOURCES = asm-tst5.c
+asm_tst5_OBJECTS = asm-tst5.$(OBJEXT)
+asm_tst5_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+asm_tst7_SOURCES = asm-tst7.c
+asm_tst7_OBJECTS = asm-tst7.$(OBJEXT)
+asm_tst7_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+asm_tst9_SOURCES = asm-tst9.c
+asm_tst9_OBJECTS = asm-tst9.$(OBJEXT)
+asm_tst9_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+deleted_SOURCES = deleted.c
+deleted_OBJECTS = deleted.$(OBJEXT)
+deleted_DEPENDENCIES = ./deleted-lib.so
+deleted_lib_so_SOURCES = deleted-lib.c
+deleted_lib_so_OBJECTS = deleted_lib_so-deleted-lib.$(OBJEXT)
+deleted_lib_so_LDADD = $(LDADD)
+deleted_lib_so_LINK = $(CCLD) $(deleted_lib_so_CFLAGS) $(CFLAGS) \
+	$(deleted_lib_so_LDFLAGS) $(LDFLAGS) -o $@
+dwarf_getmacros_SOURCES = dwarf-getmacros.c
+dwarf_getmacros_OBJECTS = dwarf-getmacros.$(OBJEXT)
+dwarf_getmacros_DEPENDENCIES = $(am__DEPENDENCIES_4)
+dwarf_getstring_SOURCES = dwarf-getstring.c
+dwarf_getstring_OBJECTS = dwarf-getstring.$(OBJEXT)
+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)
+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)
+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)
+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)
+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)
+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)
+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)
+ecp_SOURCES = ecp.c
+ecp_OBJECTS = ecp.$(OBJEXT)
+ecp_DEPENDENCIES = $(am__DEPENDENCIES_2)
+find_prologues_SOURCES = find-prologues.c
+find_prologues_OBJECTS = find-prologues.$(OBJEXT)
+find_prologues_DEPENDENCIES = $(am__DEPENDENCIES_4)
+funcretval_SOURCES = funcretval.c
+funcretval_OBJECTS = funcretval.$(OBJEXT)
+funcretval_DEPENDENCIES = $(am__DEPENDENCIES_4)
+funcscopes_SOURCES = funcscopes.c
+funcscopes_OBJECTS = funcscopes.$(OBJEXT)
+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)
+get_files_SOURCES = get-files.c
+get_files_OBJECTS = get-files.$(OBJEXT)
+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)
+get_pubnames_SOURCES = get-pubnames.c
+get_pubnames_OBJECTS = get-pubnames.$(OBJEXT)
+get_pubnames_DEPENDENCIES = $(am__DEPENDENCIES_4) \
+	$(am__DEPENDENCIES_2)
+hash_SOURCES = hash.c
+hash_OBJECTS = hash.$(OBJEXT)
+hash_DEPENDENCIES = $(am__DEPENDENCIES_2)
+line2addr_SOURCES = line2addr.c
+line2addr_OBJECTS = line2addr.$(OBJEXT)
+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)
+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)
+newfile_SOURCES = newfile.c
+newfile_OBJECTS = newfile.$(OBJEXT)
+newfile_DEPENDENCIES = $(am__DEPENDENCIES_2)
+newscn_SOURCES = newscn.c
+newscn_OBJECTS = newscn.$(OBJEXT)
+newscn_DEPENDENCIES = $(am__DEPENDENCIES_2)
+rdwrmmap_SOURCES = rdwrmmap.c
+rdwrmmap_OBJECTS = rdwrmmap.$(OBJEXT)
+rdwrmmap_DEPENDENCIES = $(am__DEPENDENCIES_2)
+rerequest_tag_SOURCES = rerequest_tag.c
+rerequest_tag_OBJECTS = rerequest_tag.$(OBJEXT)
+rerequest_tag_DEPENDENCIES = $(am__DEPENDENCIES_4)
+saridx_SOURCES = saridx.c
+saridx_OBJECTS = saridx.$(OBJEXT)
+saridx_DEPENDENCIES = $(am__DEPENDENCIES_2)
+scnnames_SOURCES = scnnames.c
+scnnames_OBJECTS = scnnames.$(OBJEXT)
+scnnames_DEPENDENCIES = $(am__DEPENDENCIES_2)
+sectiondump_SOURCES = sectiondump.c
+sectiondump_OBJECTS = sectiondump.$(OBJEXT)
+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)
+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)
+showptable_SOURCES = showptable.c
+showptable_OBJECTS = showptable.$(OBJEXT)
+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)
+test_flag_nobits_SOURCES = test-flag-nobits.c
+test_flag_nobits_OBJECTS = test-flag-nobits.$(OBJEXT)
+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)
+typeiter_SOURCES = typeiter.c
+typeiter_OBJECTS = typeiter.$(OBJEXT)
+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)
+update2_SOURCES = update2.c
+update2_OBJECTS = update2.$(OBJEXT)
+update2_DEPENDENCIES = $(am__DEPENDENCIES_2)
+update3_SOURCES = update3.c
+update3_OBJECTS = update3.$(OBJEXT)
+update3_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+update4_SOURCES = update4.c
+update4_OBJECTS = update4.$(OBJEXT)
+update4_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+varlocs_SOURCES = varlocs.c
+varlocs_OBJECTS = varlocs.$(OBJEXT)
+varlocs_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+vdsosyms_SOURCES = vdsosyms.c
+vdsosyms_OBJECTS = vdsosyms.$(OBJEXT)
+vdsosyms_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = addrcfi.c addrscopes.c aggregate_size.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 backtrace.c backtrace-child.c \
+	$(backtrace_child_biarch_SOURCES) backtrace-data.c \
+	backtrace-dwarf.c buildid.c debugaltlink.c debuglink.c \
+	deleted.c deleted-lib.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 \
+	md5-sha1-test.c msg_tst.c newfile.c newscn.c rdwrmmap.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 typeiter2.c update1.c update2.c update3.c update4.c \
+	varlocs.c vdsosyms.c
+DIST_SOURCES = addrcfi.c addrscopes.c aggregate_size.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 backtrace.c backtrace-child.c \
+	$(backtrace_child_biarch_SOURCES) backtrace-data.c \
+	backtrace-dwarf.c buildid.c debugaltlink.c debuglink.c \
+	deleted.c deleted-lib.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 \
+	md5-sha1-test.c msg_tst.c newfile.c newscn.c rdwrmmap.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 typeiter2.c update1.c update2.c update3.c update4.c \
+	varlocs.c vdsosyms.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_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=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  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 =  .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:.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 = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = ar
+AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf
+AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader
+AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_BIARCH = gcc -m32
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CYGPATH_W = echo
+DEBUGPRED = 0
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GETTEXT_MACRO_VERSION = 0.18
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GREP = /bin/grep
+HAVE_VALGRIND = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LEX = flex
+LEXLIB = -lfl
+LEX_OUTPUT_ROOT = lex.yy
+LIBEBL_SUBDIR = elfutils
+LIBOBJS = 
+LIBS = 
+LTLIBOBJS = 
+MAINT = #
+MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo
+MKDIR_P = /bin/mkdir -p
+MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+OBJEXT = o
+PACKAGE = elfutils
+PACKAGE_BUGREPORT = https://bugzilla.redhat.com/
+PACKAGE_NAME = elfutils
+PACKAGE_STRING = elfutils 0.161
+PACKAGE_TARNAME = elfutils
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.161
+PATH_SEPARATOR = :
+RANLIB = ranlib
+READELF = readelf
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_NLS = yes
+VERSION = 0.161
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS = 
+YACC = bison -y
+YFLAGS = 
+abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/tests
+abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/tests
+abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src
+abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src
+ac_ct_AR = ar
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+base_cpu = none
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+eu_version = 161
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+zip_LIBS = -lz 
+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_msg = echo "WARNING: TEXTREL found in '$@'"
+#textrel_found = $(textrel_msg)
+textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
+BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
+AM_LDFLAGS = $(am__append_2) $(am__append_3)
+tests_rpath = no
+#tests_rpath = yes
+asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
+	    asm-tst6 asm-tst7 asm-tst8 asm-tst9
+
+EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
+	     run-show-die-info.sh run-get-files.sh run-get-lines.sh \
+	     run-get-pubnames.sh run-get-aranges.sh \
+	     run-show-abbrev.sh run-strip-test.sh \
+	     run-strip-test2.sh run-ecp-test.sh run-ecp-test2.sh \
+	     testfile.bz2 testfile2.bz2 testfile3.bz2 testfile4.bz2 \
+	     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 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-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-dwarf-getmacros.sh run-test-flag-nobits.sh \
+	     run-dwarf-getstring.sh run-rerequest_tag.sh run-alldts.sh \
+	     testfile15.bz2 testfile15.debug.bz2 \
+	     testfile16.bz2 testfile16.debug.bz2 \
+	     testfile17.bz2 testfile17.debug.bz2 \
+	     testfile18.bz2 testfile19.bz2 testfile19.index.bz2 \
+	     testfile20.bz2 testfile20.index.bz2 \
+	     testfile21.bz2 testfile21.index.bz2 \
+	     testfile22.bz2 testfile23.bz2 testfile24.bz2 testfile25.bz2 \
+	     testfile26.bz2 testfile27.bz2 \
+	     coverage.sh test-subr.sh test-wrapper.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 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 \
+	     testfile-macros-0xff.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 \
+	     testfile52-64.so.bz2 testfile52-64.so.debug.bz2 \
+	     testfile52-64.prelink.so.bz2 testfile52-64.noshdrs.so.bz2 \
+	     testfile53-32.bz2 testfile53-32.debug.bz2 \
+	     testfile53-32.prelink.bz2 testfile53-64.bz2 \
+	     testfile53-64.debug.bz2 testfile53-64.prelink.bz2 \
+	     testfile54-32.so.bz2 testfile54-32.so.debug.bz2 \
+	     testfile54-32.prelink.so.bz2 testfile54-32.noshdrs.so.bz2 \
+	     testfile54-64.so.bz2 testfile54-64.so.debug.bz2 \
+	     testfile54-64.prelink.so.bz2 testfile54-64.noshdrs.so.bz2 \
+	     testfile55-32.bz2 testfile55-32.debug.bz2 \
+	     testfile55-32.prelink.bz2 testfile55-64.bz2 \
+	     testfile55-64.debug.bz2 testfile55-64.prelink.bz2 \
+	     testfile56.bz2 testfile57.bz2 testfile58.bz2 \
+	     run-typeiter.sh testfile59.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 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 \
+	     run-addr2line-i-lex-test.sh testfile-lex-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 \
+	     run-deleted.sh run-linkmap-cut.sh linkmap-cut-lib.so.bz2 \
+	     linkmap-cut.bz2 linkmap-cut.core.bz2 \
+	     run-aggregate-size.sh testfile-sizes1.o.bz2 testfile-sizes2.o.bz2 \
+	     testfile-sizes3.o.bz2 \
+	     run-readelf-A.sh testfileppc32attrs.o.bz2
+
+#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)'
+
+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;
+
+#TESTS_ENVIRONMENT = $(installed_TESTS_ENVIRONMENT)
+LOG_COMPILER = $(abs_srcdir)/test-wrapper.sh \
+	       $(abs_top_builddir)/libdw:$(abs_top_builddir)/backends:$(abs_top_builddir)/libelf:$(abs_top_builddir)/libasm
+
+#LOG_COMPILER = $(installed_LOG_COMPILER)
+libdw = ../libdw/libdw.so
+#libdw = ../libdw/libdw.a $(zip_LIBS) $(libelf) $(libebl) -ldl
+#libdw = -ldw
+libelf = ../libelf/libelf.so
+#libelf = ../libelf/libelf.a
+#libelf = -lelf
+libasm = ../libasm/libasm.so
+#libasm = ../libasm/libasm.a
+#libasm = -lasm
+libebl = ../libebl/libebl.a
+#libebl = -lebl
+libeu = ../lib/libeu.a
+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)
+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)
+deleted_LDADD = ./deleted-lib.so
+deleted_lib_so_LDFLAGS = -shared -rdynamic
+deleted_lib_so_CFLAGS = -fPIC -fasynchronous-unwind-tables
+aggregate_size_LDADD = $(libdw) $(libelf)
+vdsosyms_LDADD = $(libdw) $(libelf)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: # $(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 tests/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits tests/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: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+	-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
+addrcfi$(EXEEXT): $(addrcfi_OBJECTS) $(addrcfi_DEPENDENCIES) $(EXTRA_addrcfi_DEPENDENCIES) 
+	@rm -f addrcfi$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(addrcfi_OBJECTS) $(addrcfi_LDADD) $(LIBS)
+
+addrscopes$(EXEEXT): $(addrscopes_OBJECTS) $(addrscopes_DEPENDENCIES) $(EXTRA_addrscopes_DEPENDENCIES) 
+	@rm -f addrscopes$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(addrscopes_OBJECTS) $(addrscopes_LDADD) $(LIBS)
+
+aggregate_size$(EXEEXT): $(aggregate_size_OBJECTS) $(aggregate_size_DEPENDENCIES) $(EXTRA_aggregate_size_DEPENDENCIES) 
+	@rm -f aggregate_size$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(aggregate_size_OBJECTS) $(aggregate_size_LDADD) $(LIBS)
+
+alldts$(EXEEXT): $(alldts_OBJECTS) $(alldts_DEPENDENCIES) $(EXTRA_alldts_DEPENDENCIES) 
+	@rm -f alldts$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(alldts_OBJECTS) $(alldts_LDADD) $(LIBS)
+
+allfcts$(EXEEXT): $(allfcts_OBJECTS) $(allfcts_DEPENDENCIES) $(EXTRA_allfcts_DEPENDENCIES) 
+	@rm -f allfcts$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(allfcts_OBJECTS) $(allfcts_LDADD) $(LIBS)
+
+allregs$(EXEEXT): $(allregs_OBJECTS) $(allregs_DEPENDENCIES) $(EXTRA_allregs_DEPENDENCIES) 
+	@rm -f allregs$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(allregs_OBJECTS) $(allregs_LDADD) $(LIBS)
+
+arextract$(EXEEXT): $(arextract_OBJECTS) $(arextract_DEPENDENCIES) $(EXTRA_arextract_DEPENDENCIES) 
+	@rm -f arextract$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(arextract_OBJECTS) $(arextract_LDADD) $(LIBS)
+
+arls$(EXEEXT): $(arls_OBJECTS) $(arls_DEPENDENCIES) $(EXTRA_arls_DEPENDENCIES) 
+	@rm -f arls$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(arls_OBJECTS) $(arls_LDADD) $(LIBS)
+
+arsymtest$(EXEEXT): $(arsymtest_OBJECTS) $(arsymtest_DEPENDENCIES) $(EXTRA_arsymtest_DEPENDENCIES) 
+	@rm -f arsymtest$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+
+deleted$(EXEEXT): $(deleted_OBJECTS) $(deleted_DEPENDENCIES) $(EXTRA_deleted_DEPENDENCIES) 
+	@rm -f deleted$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(deleted_OBJECTS) $(deleted_LDADD) $(LIBS)
+
+deleted-lib.so$(EXEEXT): $(deleted_lib_so_OBJECTS) $(deleted_lib_so_DEPENDENCIES) $(EXTRA_deleted_lib_so_DEPENDENCIES) 
+	@rm -f deleted-lib.so$(EXEEXT)
+	$(AM_V_CCLD)$(deleted_lib_so_LINK) $(deleted_lib_so_OBJECTS) $(deleted_lib_so_LDADD) $(LIBS)
+
+dwarf-getmacros$(EXEEXT): $(dwarf_getmacros_OBJECTS) $(dwarf_getmacros_DEPENDENCIES) $(EXTRA_dwarf_getmacros_DEPENDENCIES) 
+	@rm -f dwarf-getmacros$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(early_offscn_OBJECTS) $(early_offscn_LDADD) $(LIBS)
+
+ecp$(EXEEXT): $(ecp_OBJECTS) $(ecp_DEPENDENCIES) $(EXTRA_ecp_DEPENDENCIES) 
+	@rm -f ecp$(EXEEXT)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(find_prologues_OBJECTS) $(find_prologues_LDADD) $(LIBS)
+
+funcretval$(EXEEXT): $(funcretval_OBJECTS) $(funcretval_DEPENDENCIES) $(EXTRA_funcretval_DEPENDENCIES) 
+	@rm -f funcretval$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(funcretval_OBJECTS) $(funcretval_LDADD) $(LIBS)
+
+funcscopes$(EXEEXT): $(funcscopes_OBJECTS) $(funcscopes_DEPENDENCIES) $(EXTRA_funcscopes_DEPENDENCIES) 
+	@rm -f funcscopes$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(get_pubnames_OBJECTS) $(get_pubnames_LDADD) $(LIBS)
+
+hash$(EXEEXT): $(hash_OBJECTS) $(hash_DEPENDENCIES) $(EXTRA_hash_DEPENDENCIES) 
+	@rm -f hash$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(hash_OBJECTS) $(hash_LDADD) $(LIBS)
+
+line2addr$(EXEEXT): $(line2addr_OBJECTS) $(line2addr_DEPENDENCIES) $(EXTRA_line2addr_DEPENDENCIES) 
+	@rm -f line2addr$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(msg_tst_OBJECTS) $(msg_tst_LDADD) $(LIBS)
+
+newfile$(EXEEXT): $(newfile_OBJECTS) $(newfile_DEPENDENCIES) $(EXTRA_newfile_DEPENDENCIES) 
+	@rm -f newfile$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(newfile_OBJECTS) $(newfile_LDADD) $(LIBS)
+
+newscn$(EXEEXT): $(newscn_OBJECTS) $(newscn_DEPENDENCIES) $(EXTRA_newscn_DEPENDENCIES) 
+	@rm -f newscn$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(newscn_OBJECTS) $(newscn_LDADD) $(LIBS)
+
+rdwrmmap$(EXEEXT): $(rdwrmmap_OBJECTS) $(rdwrmmap_DEPENDENCIES) $(EXTRA_rdwrmmap_DEPENDENCIES) 
+	@rm -f rdwrmmap$(EXEEXT)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(rerequest_tag_OBJECTS) $(rerequest_tag_LDADD) $(LIBS)
+
+saridx$(EXEEXT): $(saridx_OBJECTS) $(saridx_DEPENDENCIES) $(EXTRA_saridx_DEPENDENCIES) 
+	@rm -f saridx$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(saridx_OBJECTS) $(saridx_LDADD) $(LIBS)
+
+scnnames$(EXEEXT): $(scnnames_OBJECTS) $(scnnames_DEPENDENCIES) $(EXTRA_scnnames_DEPENDENCIES) 
+	@rm -f scnnames$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(scnnames_OBJECTS) $(scnnames_LDADD) $(LIBS)
+
+sectiondump$(EXEEXT): $(sectiondump_OBJECTS) $(sectiondump_DEPENDENCIES) $(EXTRA_sectiondump_DEPENDENCIES) 
+	@rm -f sectiondump$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(test_nlist_OBJECTS) $(test_nlist_LDADD) $(LIBS)
+
+typeiter$(EXEEXT): $(typeiter_OBJECTS) $(typeiter_DEPENDENCIES) $(EXTRA_typeiter_DEPENDENCIES) 
+	@rm -f typeiter$(EXEEXT)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(update1_OBJECTS) $(update1_LDADD) $(LIBS)
+
+update2$(EXEEXT): $(update2_OBJECTS) $(update2_DEPENDENCIES) $(EXTRA_update2_DEPENDENCIES) 
+	@rm -f update2$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(update2_OBJECTS) $(update2_LDADD) $(LIBS)
+
+update3$(EXEEXT): $(update3_OBJECTS) $(update3_DEPENDENCIES) $(EXTRA_update3_DEPENDENCIES) 
+	@rm -f update3$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(update3_OBJECTS) $(update3_LDADD) $(LIBS)
+
+update4$(EXEEXT): $(update4_OBJECTS) $(update4_DEPENDENCIES) $(EXTRA_update4_DEPENDENCIES) 
+	@rm -f update4$(EXEEXT)
+	$(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)
+
+vdsosyms$(EXEEXT): $(vdsosyms_OBJECTS) $(vdsosyms_DEPENDENCIES) $(EXTRA_vdsosyms_DEPENDENCIES) 
+	@rm -f vdsosyms$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(vdsosyms_OBJECTS) $(vdsosyms_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/addrcfi.Po
+include ./$(DEPDIR)/addrscopes.Po
+include ./$(DEPDIR)/aggregate_size.Po
+include ./$(DEPDIR)/alldts.Po
+include ./$(DEPDIR)/allfcts.Po
+include ./$(DEPDIR)/allregs.Po
+include ./$(DEPDIR)/arextract.Po
+include ./$(DEPDIR)/arls.Po
+include ./$(DEPDIR)/arsymtest.Po
+include ./$(DEPDIR)/asm-tst1.Po
+include ./$(DEPDIR)/asm-tst2.Po
+include ./$(DEPDIR)/asm-tst3.Po
+include ./$(DEPDIR)/asm-tst4.Po
+include ./$(DEPDIR)/asm-tst5.Po
+include ./$(DEPDIR)/asm-tst6.Po
+include ./$(DEPDIR)/asm-tst7.Po
+include ./$(DEPDIR)/asm-tst8.Po
+include ./$(DEPDIR)/asm-tst9.Po
+include ./$(DEPDIR)/backtrace-child.Po
+include ./$(DEPDIR)/backtrace-data.Po
+include ./$(DEPDIR)/backtrace.Po
+include ./$(DEPDIR)/backtrace_child-backtrace-child.Po
+include ./$(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Po
+include ./$(DEPDIR)/buildid.Po
+include ./$(DEPDIR)/debugaltlink.Po
+include ./$(DEPDIR)/debuglink.Po
+include ./$(DEPDIR)/deleted.Po
+include ./$(DEPDIR)/deleted_lib_so-deleted-lib.Po
+include ./$(DEPDIR)/dwarf-getmacros.Po
+include ./$(DEPDIR)/dwarf-getstring.Po
+include ./$(DEPDIR)/dwfl-addr-sect.Po
+include ./$(DEPDIR)/dwfl-bug-addr-overflow.Po
+include ./$(DEPDIR)/dwfl-bug-fd-leak.Po
+include ./$(DEPDIR)/dwfl-bug-getmodules.Po
+include ./$(DEPDIR)/dwfl-bug-report.Po
+include ./$(DEPDIR)/dwfl-report-elf-align.Po
+include ./$(DEPDIR)/dwfllines.Po
+include ./$(DEPDIR)/dwflmodtest.Po
+include ./$(DEPDIR)/dwflsyms.Po
+include ./$(DEPDIR)/early-offscn.Po
+include ./$(DEPDIR)/ecp.Po
+include ./$(DEPDIR)/find-prologues.Po
+include ./$(DEPDIR)/funcretval.Po
+include ./$(DEPDIR)/funcscopes.Po
+include ./$(DEPDIR)/get-aranges.Po
+include ./$(DEPDIR)/get-files.Po
+include ./$(DEPDIR)/get-lines.Po
+include ./$(DEPDIR)/get-pubnames.Po
+include ./$(DEPDIR)/hash.Po
+include ./$(DEPDIR)/line2addr.Po
+include ./$(DEPDIR)/low_high_pc.Po
+include ./$(DEPDIR)/md5-sha1-test.Po
+include ./$(DEPDIR)/msg_tst.Po
+include ./$(DEPDIR)/newfile.Po
+include ./$(DEPDIR)/newscn.Po
+include ./$(DEPDIR)/rdwrmmap.Po
+include ./$(DEPDIR)/rerequest_tag.Po
+include ./$(DEPDIR)/saridx.Po
+include ./$(DEPDIR)/scnnames.Po
+include ./$(DEPDIR)/sectiondump.Po
+include ./$(DEPDIR)/show-abbrev.Po
+include ./$(DEPDIR)/show-die-info.Po
+include ./$(DEPDIR)/showptable.Po
+include ./$(DEPDIR)/test-elf_cntl_gelf_getshdr.Po
+include ./$(DEPDIR)/test-flag-nobits.Po
+include ./$(DEPDIR)/test-nlist.Po
+include ./$(DEPDIR)/typeiter.Po
+include ./$(DEPDIR)/typeiter2.Po
+include ./$(DEPDIR)/update1.Po
+include ./$(DEPDIR)/update2.Po
+include ./$(DEPDIR)/update3.Po
+include ./$(DEPDIR)/update4.Po
+include ./$(DEPDIR)/varlocs.Po
+include ./$(DEPDIR)/vdsosyms.Po
+
+.c.o:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CC)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+backtrace_child-backtrace-child.o: backtrace-child.c
+	$(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_V_at)$(am__mv) $(DEPDIR)/backtrace_child-backtrace-child.Tpo $(DEPDIR)/backtrace_child-backtrace-child.Po
+#	$(AM_V_CC)source='backtrace-child.c' object='backtrace_child-backtrace-child.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(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_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_V_at)$(am__mv) $(DEPDIR)/backtrace_child-backtrace-child.Tpo $(DEPDIR)/backtrace_child-backtrace-child.Po
+#	$(AM_V_CC)source='backtrace-child.c' object='backtrace_child-backtrace-child.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(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_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_V_at)$(am__mv) $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Tpo $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Po
+#	$(AM_V_CC)source='backtrace-dwarf.c' object='backtrace_dwarf-backtrace-dwarf.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(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_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_V_at)$(am__mv) $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Tpo $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Po
+#	$(AM_V_CC)source='backtrace-dwarf.c' object='backtrace_dwarf-backtrace-dwarf.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(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`
+
+deleted_lib_so-deleted-lib.o: deleted-lib.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(deleted_lib_so_CFLAGS) $(CFLAGS) -MT deleted_lib_so-deleted-lib.o -MD -MP -MF $(DEPDIR)/deleted_lib_so-deleted-lib.Tpo -c -o deleted_lib_so-deleted-lib.o `test -f 'deleted-lib.c' || echo '$(srcdir)/'`deleted-lib.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/deleted_lib_so-deleted-lib.Tpo $(DEPDIR)/deleted_lib_so-deleted-lib.Po
+#	$(AM_V_CC)source='deleted-lib.c' object='deleted_lib_so-deleted-lib.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(deleted_lib_so_CFLAGS) $(CFLAGS) -c -o deleted_lib_so-deleted-lib.o `test -f 'deleted-lib.c' || echo '$(srcdir)/'`deleted-lib.c
+
+deleted_lib_so-deleted-lib.obj: deleted-lib.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(deleted_lib_so_CFLAGS) $(CFLAGS) -MT deleted_lib_so-deleted-lib.obj -MD -MP -MF $(DEPDIR)/deleted_lib_so-deleted-lib.Tpo -c -o deleted_lib_so-deleted-lib.obj `if test -f 'deleted-lib.c'; then $(CYGPATH_W) 'deleted-lib.c'; else $(CYGPATH_W) '$(srcdir)/deleted-lib.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/deleted_lib_so-deleted-lib.Tpo $(DEPDIR)/deleted_lib_so-deleted-lib.Po
+#	$(AM_V_CC)source='deleted-lib.c' object='deleted_lib_so-deleted-lib.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(deleted_lib_so_CFLAGS) $(CFLAGS) -c -o deleted_lib_so-deleted-lib.obj `if test -f 'deleted-lib.c'; then $(CYGPATH_W) 'deleted-lib.c'; else $(CYGPATH_W) '$(srcdir)/deleted-lib.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`; \
+	$(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
+
+# 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; \
+	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 \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    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-addr2line-i-lex-test.sh.log: run-addr2line-i-lex-test.sh
+	@p='run-addr2line-i-lex-test.sh'; \
+	b='run-addr2line-i-lex-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)
+run-deleted.sh.log: run-deleted.sh
+	@p='run-deleted.sh'; \
+	b='run-deleted.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-linkmap-cut.sh.log: run-linkmap-cut.sh
+	@p='run-linkmap-cut.sh'; \
+	b='run-linkmap-cut.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-aggregate-size.sh.log: run-aggregate-size.sh
+	@p='run-aggregate-size.sh'; \
+	b='run-aggregate-size.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)
+vdsosyms.log: vdsosyms$(EXEEXT)
+	@p='vdsosyms$(EXEEXT)'; \
+	b='vdsosyms'; \
+	$(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-A.sh.log: run-readelf-A.sh
+	@p='run-readelf-A.sh'; \
+	b='run-readelf-A.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)
+#.test$(EXEEXT).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)
+
+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
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+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:
+	-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)
+
+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."
+#installcheck-local:
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic 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-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: installcheck-local
+
+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:
+
+.MAKE: check-am install-am install-strip
+
+.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
+	if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+	     rm -f "$(DEPDIR)/$*.Tpo"; \
+	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+	fi
+#	$(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 $@ $<
+
+#export ELFUTILS_DISABLE_BIARCH = 1
+
+#export ELFUTILS_DISABLE_DEMANGLE = 1
+
+installcheck-local:
+	$(MAKE) $(AM_MAKEFLAGS) \
+		TESTS_ENVIRONMENT="$(installed_TESTS_ENVIRONMENT)" \
+		LOG_COMPILER="$(installed_LOG_COMPILER)" check-TESTS
+
+#check: check-am coverage
+#.PHONY: coverage
+#coverage:
+#	-$(srcdir)/coverage.sh
+
+# 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:
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
new file mode 100644
index 0000000..303f783
--- /dev/null
+++ b/src/tests/Makefile.am
@@ -0,0 +1,429 @@
+## Process this file with automake to create Makefile.in
+##
+## 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
+## 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 $(top_srcdir)/config/eu.am
+BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
+
+AM_LDFLAGS =
+
+if !STANDALONE
+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
+endif
+
+if TESTS_RPATH
+AM_LDFLAGS += -Wl,-rpath,$(BUILD_RPATH)
+tests_rpath = yes
+else
+tests_rpath = no
+endif
+
+check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \
+		  showptable update1 update2 update3 update4 test-nlist \
+		  show-die-info get-files get-lines get-pubnames \
+		  get-aranges allfcts line2addr addrscopes funcscopes \
+		  show-abbrev hash newscn ecp dwflmodtest \
+		  find-prologues funcretval allregs rdwrmmap \
+		  dwfl-bug-addr-overflow arls dwfl-bug-fd-leak \
+		  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 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 deleted deleted-lib.so aggregate_size vdsosyms
+
+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-get-pubnames.sh run-get-aranges.sh run-allfcts.sh \
+	run-show-abbrev.sh run-line2addr.sh hash \
+	newscn run-strip-test.sh run-strip-test2.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-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 run-addrname-test.sh \
+	dwfl-bug-fd-leak dwfl-bug-report \
+	run-dwfl-bug-offline-rel.sh run-dwfl-addr-sect.sh \
+	run-disasm-x86.sh run-disasm-x86-64.sh \
+	run-early-offscn.sh run-dwarf-getmacros.sh \
+	run-test-flag-nobits.sh run-prelink-addr-test.sh \
+	run-dwarf-getstring.sh run-rerequest_tag.sh run-typeiter.sh \
+	run-readelf-d.sh run-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-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-addr2line-i-lex-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 run-deleted.sh \
+	run-linkmap-cut.sh run-aggregate-size.sh vdsosyms run-readelf-A.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 LZMA
+TESTS += run-readelf-s.sh run-dwflsyms.sh
+endif
+
+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 \
+	     run-get-pubnames.sh run-get-aranges.sh \
+	     run-show-abbrev.sh run-strip-test.sh \
+	     run-strip-test2.sh run-ecp-test.sh run-ecp-test2.sh \
+	     testfile.bz2 testfile2.bz2 testfile3.bz2 testfile4.bz2 \
+	     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 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-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-dwarf-getmacros.sh run-test-flag-nobits.sh \
+	     run-dwarf-getstring.sh run-rerequest_tag.sh run-alldts.sh \
+	     testfile15.bz2 testfile15.debug.bz2 \
+	     testfile16.bz2 testfile16.debug.bz2 \
+	     testfile17.bz2 testfile17.debug.bz2 \
+	     testfile18.bz2 testfile19.bz2 testfile19.index.bz2 \
+	     testfile20.bz2 testfile20.index.bz2 \
+	     testfile21.bz2 testfile21.index.bz2 \
+	     testfile22.bz2 testfile23.bz2 testfile24.bz2 testfile25.bz2 \
+	     testfile26.bz2 testfile27.bz2 \
+	     coverage.sh test-subr.sh test-wrapper.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 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 \
+	     testfile-macros-0xff.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 \
+	     testfile52-64.so.bz2 testfile52-64.so.debug.bz2 \
+	     testfile52-64.prelink.so.bz2 testfile52-64.noshdrs.so.bz2 \
+	     testfile53-32.bz2 testfile53-32.debug.bz2 \
+	     testfile53-32.prelink.bz2 testfile53-64.bz2 \
+	     testfile53-64.debug.bz2 testfile53-64.prelink.bz2 \
+	     testfile54-32.so.bz2 testfile54-32.so.debug.bz2 \
+	     testfile54-32.prelink.so.bz2 testfile54-32.noshdrs.so.bz2 \
+	     testfile54-64.so.bz2 testfile54-64.so.debug.bz2 \
+	     testfile54-64.prelink.so.bz2 testfile54-64.noshdrs.so.bz2 \
+	     testfile55-32.bz2 testfile55-32.debug.bz2 \
+	     testfile55-32.prelink.bz2 testfile55-64.bz2 \
+	     testfile55-64.debug.bz2 testfile55-64.prelink.bz2 \
+	     testfile56.bz2 testfile57.bz2 testfile58.bz2 \
+	     run-typeiter.sh testfile59.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 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 \
+	     run-addr2line-i-lex-test.sh testfile-lex-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 \
+	     run-deleted.sh run-linkmap-cut.sh linkmap-cut-lib.so.bz2 \
+	     linkmap-cut.bz2 linkmap-cut.core.bz2 \
+	     run-aggregate-size.sh testfile-sizes1.o.bz2 testfile-sizes2.o.bz2 \
+	     testfile-sizes3.o.bz2 \
+	     run-readelf-A.sh testfileppc32attrs.o.bz2
+
+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; 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)" \
+		LOG_COMPILER="$(installed_LOG_COMPILER)" check-TESTS
+endif !STANDALONE
+
+if STANDALONE
+libdw = -ldw
+libelf = -lelf
+libasm = -lasm
+libebl = -lebl
+else !STANDALONE
+if BUILD_STATIC
+libdw = ../libdw/libdw.a $(zip_LIBS) $(libelf) $(libebl) -ldl
+libelf = ../libelf/libelf.a
+libasm = ../libasm/libasm.a
+else
+libdw = ../libdw/libdw.so
+libelf = ../libelf/libelf.so
+libasm = ../libasm/libasm.so
+endif
+libebl = ../libebl/libebl.a
+libeu = ../lib/libeu.a
+endif !STANDALONE
+
+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)
+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)
+deleted_LDADD = ./deleted-lib.so
+deleted_lib_so_LDFLAGS = -shared -rdynamic
+deleted_lib_so_CFLAGS = -fPIC -fasynchronous-unwind-tables
+aggregate_size_LDADD = $(libdw) $(libelf)
+vdsosyms_LDADD = $(libdw) $(libelf)
+
+if GCOV
+check: check-am coverage
+.PHONY: coverage
+coverage:
+	-$(srcdir)/coverage.sh
+endif
diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in
new file mode 100644
index 0000000..e7ea922
--- /dev/null
+++ b/src/tests/Makefile.in
@@ -0,0 +1,2932 @@
+# Makefile.in generated by automake 1.14.1 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 \
+	$(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_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) \
+	update2$(EXEEXT) update3$(EXEEXT) update4$(EXEEXT) \
+	test-nlist$(EXEEXT) show-die-info$(EXEEXT) get-files$(EXEEXT) \
+	get-lines$(EXEEXT) get-pubnames$(EXEEXT) get-aranges$(EXEEXT) \
+	allfcts$(EXEEXT) line2addr$(EXEEXT) addrscopes$(EXEEXT) \
+	funcscopes$(EXEEXT) show-abbrev$(EXEEXT) hash$(EXEEXT) \
+	newscn$(EXEEXT) ecp$(EXEEXT) dwflmodtest$(EXEEXT) \
+	find-prologues$(EXEEXT) funcretval$(EXEEXT) allregs$(EXEEXT) \
+	rdwrmmap$(EXEEXT) dwfl-bug-addr-overflow$(EXEEXT) \
+	arls$(EXEEXT) dwfl-bug-fd-leak$(EXEEXT) \
+	dwfl-addr-sect$(EXEEXT) dwfl-bug-report$(EXEEXT) \
+	early-offscn$(EXEEXT) dwfl-bug-getmodules$(EXEEXT) \
+	dwarf-getmacros$(EXEEXT) addrcfi$(EXEEXT) \
+	test-flag-nobits$(EXEEXT) dwarf-getstring$(EXEEXT) \
+	rerequest_tag$(EXEEXT) alldts$(EXEEXT) md5-sha1-test$(EXEEXT) \
+	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) \
+	deleted$(EXEEXT) deleted-lib.so$(EXEEXT) \
+	aggregate_size$(EXEEXT) vdsosyms$(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-get-files.sh run-get-lines.sh run-get-pubnames.sh \
+	run-get-aranges.sh run-allfcts.sh run-show-abbrev.sh \
+	run-line2addr.sh hash$(EXEEXT) newscn$(EXEEXT) \
+	run-strip-test.sh run-strip-test2.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-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-disasm-x86.sh run-disasm-x86-64.sh run-early-offscn.sh \
+	run-dwarf-getmacros.sh run-test-flag-nobits.sh \
+	run-prelink-addr-test.sh run-dwarf-getstring.sh \
+	run-rerequest_tag.sh run-typeiter.sh run-readelf-d.sh \
+	run-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-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-addr2line-i-lex-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 run-deleted.sh run-linkmap-cut.sh \
+	run-aggregate-size.sh vdsosyms$(EXEEXT) run-readelf-A.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
+@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/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 =
+@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_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_4 = $(am__EXEEXT_3)
+addrcfi_SOURCES = addrcfi.c
+addrcfi_OBJECTS = addrcfi.$(OBJEXT)
+am__DEPENDENCIES_1 =
+@BUILD_STATIC_FALSE@@STANDALONE_FALSE@am__DEPENDENCIES_2 =  \
+@BUILD_STATIC_FALSE@@STANDALONE_FALSE@	../libelf/libelf.so
+@BUILD_STATIC_TRUE@@STANDALONE_FALSE@am__DEPENDENCIES_2 =  \
+@BUILD_STATIC_TRUE@@STANDALONE_FALSE@	../libelf/libelf.a
+@STANDALONE_FALSE@am__DEPENDENCIES_3 = ../libebl/libebl.a
+@BUILD_STATIC_FALSE@@STANDALONE_FALSE@am__DEPENDENCIES_4 =  \
+@BUILD_STATIC_FALSE@@STANDALONE_FALSE@	../libdw/libdw.so
+@BUILD_STATIC_TRUE@@STANDALONE_FALSE@am__DEPENDENCIES_4 =  \
+@BUILD_STATIC_TRUE@@STANDALONE_FALSE@	../libdw/libdw.a \
+@BUILD_STATIC_TRUE@@STANDALONE_FALSE@	$(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)
+addrscopes_SOURCES = addrscopes.c
+addrscopes_OBJECTS = addrscopes.$(OBJEXT)
+addrscopes_DEPENDENCIES = $(am__DEPENDENCIES_4)
+aggregate_size_SOURCES = aggregate_size.c
+aggregate_size_OBJECTS = aggregate_size.$(OBJEXT)
+aggregate_size_DEPENDENCIES = $(am__DEPENDENCIES_4) \
+	$(am__DEPENDENCIES_2)
+alldts_SOURCES = alldts.c
+alldts_OBJECTS = alldts.$(OBJEXT)
+alldts_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+allfcts_SOURCES = allfcts.c
+allfcts_OBJECTS = allfcts.$(OBJEXT)
+allfcts_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+allregs_SOURCES = allregs.c
+allregs_OBJECTS = allregs.$(OBJEXT)
+allregs_DEPENDENCIES = $(am__DEPENDENCIES_4)
+arextract_SOURCES = arextract.c
+arextract_OBJECTS = arextract.$(OBJEXT)
+arextract_DEPENDENCIES = $(am__DEPENDENCIES_2)
+arls_SOURCES = arls.c
+arls_OBJECTS = arls.$(OBJEXT)
+arls_DEPENDENCIES = $(am__DEPENDENCIES_2)
+arsymtest_SOURCES = arsymtest.c
+arsymtest_OBJECTS = arsymtest.$(OBJEXT)
+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_FALSE@@STANDALONE_FALSE@	../libasm/libasm.so
+@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)
+asm_tst2_SOURCES = asm-tst2.c
+asm_tst2_OBJECTS = asm-tst2.$(OBJEXT)
+asm_tst2_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+asm_tst4_SOURCES = asm-tst4.c
+asm_tst4_OBJECTS = asm-tst4.$(OBJEXT)
+asm_tst4_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+asm_tst6_SOURCES = asm-tst6.c
+asm_tst6_OBJECTS = asm-tst6.$(OBJEXT)
+asm_tst6_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+asm_tst8_SOURCES = asm-tst8.c
+asm_tst8_OBJECTS = asm-tst8.$(OBJEXT)
+asm_tst8_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
+	$(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)
+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)
+deleted_SOURCES = deleted.c
+deleted_OBJECTS = deleted.$(OBJEXT)
+deleted_DEPENDENCIES = ./deleted-lib.so
+deleted_lib_so_SOURCES = deleted-lib.c
+deleted_lib_so_OBJECTS = deleted_lib_so-deleted-lib.$(OBJEXT)
+deleted_lib_so_LDADD = $(LDADD)
+deleted_lib_so_LINK = $(CCLD) $(deleted_lib_so_CFLAGS) $(CFLAGS) \
+	$(deleted_lib_so_LDFLAGS) $(LDFLAGS) -o $@
+dwarf_getmacros_SOURCES = dwarf-getmacros.c
+dwarf_getmacros_OBJECTS = dwarf-getmacros.$(OBJEXT)
+dwarf_getmacros_DEPENDENCIES = $(am__DEPENDENCIES_4)
+dwarf_getstring_SOURCES = dwarf-getstring.c
+dwarf_getstring_OBJECTS = dwarf-getstring.$(OBJEXT)
+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)
+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)
+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)
+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)
+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)
+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)
+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)
+ecp_SOURCES = ecp.c
+ecp_OBJECTS = ecp.$(OBJEXT)
+ecp_DEPENDENCIES = $(am__DEPENDENCIES_2)
+find_prologues_SOURCES = find-prologues.c
+find_prologues_OBJECTS = find-prologues.$(OBJEXT)
+find_prologues_DEPENDENCIES = $(am__DEPENDENCIES_4)
+funcretval_SOURCES = funcretval.c
+funcretval_OBJECTS = funcretval.$(OBJEXT)
+funcretval_DEPENDENCIES = $(am__DEPENDENCIES_4)
+funcscopes_SOURCES = funcscopes.c
+funcscopes_OBJECTS = funcscopes.$(OBJEXT)
+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)
+get_files_SOURCES = get-files.c
+get_files_OBJECTS = get-files.$(OBJEXT)
+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)
+get_pubnames_SOURCES = get-pubnames.c
+get_pubnames_OBJECTS = get-pubnames.$(OBJEXT)
+get_pubnames_DEPENDENCIES = $(am__DEPENDENCIES_4) \
+	$(am__DEPENDENCIES_2)
+hash_SOURCES = hash.c
+hash_OBJECTS = hash.$(OBJEXT)
+hash_DEPENDENCIES = $(am__DEPENDENCIES_2)
+line2addr_SOURCES = line2addr.c
+line2addr_OBJECTS = line2addr.$(OBJEXT)
+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)
+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)
+newfile_SOURCES = newfile.c
+newfile_OBJECTS = newfile.$(OBJEXT)
+newfile_DEPENDENCIES = $(am__DEPENDENCIES_2)
+newscn_SOURCES = newscn.c
+newscn_OBJECTS = newscn.$(OBJEXT)
+newscn_DEPENDENCIES = $(am__DEPENDENCIES_2)
+rdwrmmap_SOURCES = rdwrmmap.c
+rdwrmmap_OBJECTS = rdwrmmap.$(OBJEXT)
+rdwrmmap_DEPENDENCIES = $(am__DEPENDENCIES_2)
+rerequest_tag_SOURCES = rerequest_tag.c
+rerequest_tag_OBJECTS = rerequest_tag.$(OBJEXT)
+rerequest_tag_DEPENDENCIES = $(am__DEPENDENCIES_4)
+saridx_SOURCES = saridx.c
+saridx_OBJECTS = saridx.$(OBJEXT)
+saridx_DEPENDENCIES = $(am__DEPENDENCIES_2)
+scnnames_SOURCES = scnnames.c
+scnnames_OBJECTS = scnnames.$(OBJEXT)
+scnnames_DEPENDENCIES = $(am__DEPENDENCIES_2)
+sectiondump_SOURCES = sectiondump.c
+sectiondump_OBJECTS = sectiondump.$(OBJEXT)
+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)
+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)
+showptable_SOURCES = showptable.c
+showptable_OBJECTS = showptable.$(OBJEXT)
+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)
+test_flag_nobits_SOURCES = test-flag-nobits.c
+test_flag_nobits_OBJECTS = test-flag-nobits.$(OBJEXT)
+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)
+typeiter_SOURCES = typeiter.c
+typeiter_OBJECTS = typeiter.$(OBJEXT)
+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)
+update2_SOURCES = update2.c
+update2_OBJECTS = update2.$(OBJEXT)
+update2_DEPENDENCIES = $(am__DEPENDENCIES_2)
+update3_SOURCES = update3.c
+update3_OBJECTS = update3.$(OBJEXT)
+update3_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+update4_SOURCES = update4.c
+update4_OBJECTS = update4.$(OBJEXT)
+update4_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+varlocs_SOURCES = varlocs.c
+varlocs_OBJECTS = varlocs.$(OBJEXT)
+varlocs_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+vdsosyms_SOURCES = vdsosyms.c
+vdsosyms_OBJECTS = vdsosyms.$(OBJEXT)
+vdsosyms_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 aggregate_size.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 backtrace.c backtrace-child.c \
+	$(backtrace_child_biarch_SOURCES) backtrace-data.c \
+	backtrace-dwarf.c buildid.c debugaltlink.c debuglink.c \
+	deleted.c deleted-lib.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 \
+	md5-sha1-test.c msg_tst.c newfile.c newscn.c rdwrmmap.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 typeiter2.c update1.c update2.c update3.c update4.c \
+	varlocs.c vdsosyms.c
+DIST_SOURCES = addrcfi.c addrscopes.c aggregate_size.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 backtrace.c backtrace-child.c \
+	$(backtrace_child_biarch_SOURCES) backtrace-data.c \
+	backtrace-dwarf.c buildid.c debugaltlink.c debuglink.c \
+	deleted.c deleted-lib.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 \
+	md5-sha1-test.c msg_tst.c newfile.c newscn.c rdwrmmap.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 typeiter2.c update1.c update2.c update3.c update4.c \
+	varlocs.c vdsosyms.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_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=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  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@
+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 = @VERSION@
+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.. $(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_msg = echo "WARNING: TEXTREL found in '$@'"
+@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg)
+@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); 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 \
+	    asm-tst6 asm-tst7 asm-tst8 asm-tst9
+
+EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
+	     run-show-die-info.sh run-get-files.sh run-get-lines.sh \
+	     run-get-pubnames.sh run-get-aranges.sh \
+	     run-show-abbrev.sh run-strip-test.sh \
+	     run-strip-test2.sh run-ecp-test.sh run-ecp-test2.sh \
+	     testfile.bz2 testfile2.bz2 testfile3.bz2 testfile4.bz2 \
+	     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 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-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-dwarf-getmacros.sh run-test-flag-nobits.sh \
+	     run-dwarf-getstring.sh run-rerequest_tag.sh run-alldts.sh \
+	     testfile15.bz2 testfile15.debug.bz2 \
+	     testfile16.bz2 testfile16.debug.bz2 \
+	     testfile17.bz2 testfile17.debug.bz2 \
+	     testfile18.bz2 testfile19.bz2 testfile19.index.bz2 \
+	     testfile20.bz2 testfile20.index.bz2 \
+	     testfile21.bz2 testfile21.index.bz2 \
+	     testfile22.bz2 testfile23.bz2 testfile24.bz2 testfile25.bz2 \
+	     testfile26.bz2 testfile27.bz2 \
+	     coverage.sh test-subr.sh test-wrapper.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 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 \
+	     testfile-macros-0xff.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 \
+	     testfile52-64.so.bz2 testfile52-64.so.debug.bz2 \
+	     testfile52-64.prelink.so.bz2 testfile52-64.noshdrs.so.bz2 \
+	     testfile53-32.bz2 testfile53-32.debug.bz2 \
+	     testfile53-32.prelink.bz2 testfile53-64.bz2 \
+	     testfile53-64.debug.bz2 testfile53-64.prelink.bz2 \
+	     testfile54-32.so.bz2 testfile54-32.so.debug.bz2 \
+	     testfile54-32.prelink.so.bz2 testfile54-32.noshdrs.so.bz2 \
+	     testfile54-64.so.bz2 testfile54-64.so.debug.bz2 \
+	     testfile54-64.prelink.so.bz2 testfile54-64.noshdrs.so.bz2 \
+	     testfile55-32.bz2 testfile55-32.debug.bz2 \
+	     testfile55-32.prelink.bz2 testfile55-64.bz2 \
+	     testfile55-64.debug.bz2 testfile55-64.prelink.bz2 \
+	     testfile56.bz2 testfile57.bz2 testfile58.bz2 \
+	     run-typeiter.sh testfile59.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 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 \
+	     run-addr2line-i-lex-test.sh testfile-lex-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 \
+	     run-deleted.sh run-linkmap-cut.sh linkmap-cut-lib.so.bz2 \
+	     linkmap-cut.bz2 linkmap-cut.core.bz2 \
+	     run-aggregate-size.sh testfile-sizes1.o.bz2 testfile-sizes2.o.bz2 \
+	     testfile-sizes3.o.bz2 \
+	     run-readelf-A.sh testfileppc32attrs.o.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)
+@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
+@BUILD_STATIC_FALSE@@STANDALONE_FALSE@libelf = ../libelf/libelf.so
+@BUILD_STATIC_TRUE@@STANDALONE_FALSE@libelf = ../libelf/libelf.a
+@STANDALONE_TRUE@libelf = -lelf
+@BUILD_STATIC_FALSE@@STANDALONE_FALSE@libasm = ../libasm/libasm.so
+@BUILD_STATIC_TRUE@@STANDALONE_FALSE@libasm = ../libasm/libasm.a
+@STANDALONE_TRUE@libasm = -lasm
+@STANDALONE_FALSE@libebl = ../libebl/libebl.a
+@STANDALONE_TRUE@libebl = -lebl
+@STANDALONE_FALSE@libeu = ../lib/libeu.a
+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)
+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)
+deleted_LDADD = ./deleted-lib.so
+deleted_lib_so_LDFLAGS = -shared -rdynamic
+deleted_lib_so_CFLAGS = -fPIC -fasynchronous-unwind-tables
+aggregate_size_LDADD = $(libdw) $(libelf)
+vdsosyms_LDADD = $(libdw) $(libelf)
+all: all-am
+
+.SUFFIXES:
+.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 \
+	    *$$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 tests/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnits tests/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-checkPROGRAMS:
+	-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
+addrcfi$(EXEEXT): $(addrcfi_OBJECTS) $(addrcfi_DEPENDENCIES) $(EXTRA_addrcfi_DEPENDENCIES) 
+	@rm -f addrcfi$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(addrcfi_OBJECTS) $(addrcfi_LDADD) $(LIBS)
+
+addrscopes$(EXEEXT): $(addrscopes_OBJECTS) $(addrscopes_DEPENDENCIES) $(EXTRA_addrscopes_DEPENDENCIES) 
+	@rm -f addrscopes$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(addrscopes_OBJECTS) $(addrscopes_LDADD) $(LIBS)
+
+aggregate_size$(EXEEXT): $(aggregate_size_OBJECTS) $(aggregate_size_DEPENDENCIES) $(EXTRA_aggregate_size_DEPENDENCIES) 
+	@rm -f aggregate_size$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(aggregate_size_OBJECTS) $(aggregate_size_LDADD) $(LIBS)
+
+alldts$(EXEEXT): $(alldts_OBJECTS) $(alldts_DEPENDENCIES) $(EXTRA_alldts_DEPENDENCIES) 
+	@rm -f alldts$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(alldts_OBJECTS) $(alldts_LDADD) $(LIBS)
+
+allfcts$(EXEEXT): $(allfcts_OBJECTS) $(allfcts_DEPENDENCIES) $(EXTRA_allfcts_DEPENDENCIES) 
+	@rm -f allfcts$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(allfcts_OBJECTS) $(allfcts_LDADD) $(LIBS)
+
+allregs$(EXEEXT): $(allregs_OBJECTS) $(allregs_DEPENDENCIES) $(EXTRA_allregs_DEPENDENCIES) 
+	@rm -f allregs$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(allregs_OBJECTS) $(allregs_LDADD) $(LIBS)
+
+arextract$(EXEEXT): $(arextract_OBJECTS) $(arextract_DEPENDENCIES) $(EXTRA_arextract_DEPENDENCIES) 
+	@rm -f arextract$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(arextract_OBJECTS) $(arextract_LDADD) $(LIBS)
+
+arls$(EXEEXT): $(arls_OBJECTS) $(arls_DEPENDENCIES) $(EXTRA_arls_DEPENDENCIES) 
+	@rm -f arls$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(arls_OBJECTS) $(arls_LDADD) $(LIBS)
+
+arsymtest$(EXEEXT): $(arsymtest_OBJECTS) $(arsymtest_DEPENDENCIES) $(EXTRA_arsymtest_DEPENDENCIES) 
+	@rm -f arsymtest$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+
+deleted$(EXEEXT): $(deleted_OBJECTS) $(deleted_DEPENDENCIES) $(EXTRA_deleted_DEPENDENCIES) 
+	@rm -f deleted$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(deleted_OBJECTS) $(deleted_LDADD) $(LIBS)
+
+deleted-lib.so$(EXEEXT): $(deleted_lib_so_OBJECTS) $(deleted_lib_so_DEPENDENCIES) $(EXTRA_deleted_lib_so_DEPENDENCIES) 
+	@rm -f deleted-lib.so$(EXEEXT)
+	$(AM_V_CCLD)$(deleted_lib_so_LINK) $(deleted_lib_so_OBJECTS) $(deleted_lib_so_LDADD) $(LIBS)
+
+dwarf-getmacros$(EXEEXT): $(dwarf_getmacros_OBJECTS) $(dwarf_getmacros_DEPENDENCIES) $(EXTRA_dwarf_getmacros_DEPENDENCIES) 
+	@rm -f dwarf-getmacros$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(early_offscn_OBJECTS) $(early_offscn_LDADD) $(LIBS)
+
+ecp$(EXEEXT): $(ecp_OBJECTS) $(ecp_DEPENDENCIES) $(EXTRA_ecp_DEPENDENCIES) 
+	@rm -f ecp$(EXEEXT)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(find_prologues_OBJECTS) $(find_prologues_LDADD) $(LIBS)
+
+funcretval$(EXEEXT): $(funcretval_OBJECTS) $(funcretval_DEPENDENCIES) $(EXTRA_funcretval_DEPENDENCIES) 
+	@rm -f funcretval$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(funcretval_OBJECTS) $(funcretval_LDADD) $(LIBS)
+
+funcscopes$(EXEEXT): $(funcscopes_OBJECTS) $(funcscopes_DEPENDENCIES) $(EXTRA_funcscopes_DEPENDENCIES) 
+	@rm -f funcscopes$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(get_pubnames_OBJECTS) $(get_pubnames_LDADD) $(LIBS)
+
+hash$(EXEEXT): $(hash_OBJECTS) $(hash_DEPENDENCIES) $(EXTRA_hash_DEPENDENCIES) 
+	@rm -f hash$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(hash_OBJECTS) $(hash_LDADD) $(LIBS)
+
+line2addr$(EXEEXT): $(line2addr_OBJECTS) $(line2addr_DEPENDENCIES) $(EXTRA_line2addr_DEPENDENCIES) 
+	@rm -f line2addr$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(msg_tst_OBJECTS) $(msg_tst_LDADD) $(LIBS)
+
+newfile$(EXEEXT): $(newfile_OBJECTS) $(newfile_DEPENDENCIES) $(EXTRA_newfile_DEPENDENCIES) 
+	@rm -f newfile$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(newfile_OBJECTS) $(newfile_LDADD) $(LIBS)
+
+newscn$(EXEEXT): $(newscn_OBJECTS) $(newscn_DEPENDENCIES) $(EXTRA_newscn_DEPENDENCIES) 
+	@rm -f newscn$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(newscn_OBJECTS) $(newscn_LDADD) $(LIBS)
+
+rdwrmmap$(EXEEXT): $(rdwrmmap_OBJECTS) $(rdwrmmap_DEPENDENCIES) $(EXTRA_rdwrmmap_DEPENDENCIES) 
+	@rm -f rdwrmmap$(EXEEXT)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(rerequest_tag_OBJECTS) $(rerequest_tag_LDADD) $(LIBS)
+
+saridx$(EXEEXT): $(saridx_OBJECTS) $(saridx_DEPENDENCIES) $(EXTRA_saridx_DEPENDENCIES) 
+	@rm -f saridx$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(saridx_OBJECTS) $(saridx_LDADD) $(LIBS)
+
+scnnames$(EXEEXT): $(scnnames_OBJECTS) $(scnnames_DEPENDENCIES) $(EXTRA_scnnames_DEPENDENCIES) 
+	@rm -f scnnames$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(scnnames_OBJECTS) $(scnnames_LDADD) $(LIBS)
+
+sectiondump$(EXEEXT): $(sectiondump_OBJECTS) $(sectiondump_DEPENDENCIES) $(EXTRA_sectiondump_DEPENDENCIES) 
+	@rm -f sectiondump$(EXEEXT)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(test_nlist_OBJECTS) $(test_nlist_LDADD) $(LIBS)
+
+typeiter$(EXEEXT): $(typeiter_OBJECTS) $(typeiter_DEPENDENCIES) $(EXTRA_typeiter_DEPENDENCIES) 
+	@rm -f typeiter$(EXEEXT)
+	$(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)
+	$(AM_V_CCLD)$(LINK) $(update1_OBJECTS) $(update1_LDADD) $(LIBS)
+
+update2$(EXEEXT): $(update2_OBJECTS) $(update2_DEPENDENCIES) $(EXTRA_update2_DEPENDENCIES) 
+	@rm -f update2$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(update2_OBJECTS) $(update2_LDADD) $(LIBS)
+
+update3$(EXEEXT): $(update3_OBJECTS) $(update3_DEPENDENCIES) $(EXTRA_update3_DEPENDENCIES) 
+	@rm -f update3$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(update3_OBJECTS) $(update3_LDADD) $(LIBS)
+
+update4$(EXEEXT): $(update4_OBJECTS) $(update4_DEPENDENCIES) $(EXTRA_update4_DEPENDENCIES) 
+	@rm -f update4$(EXEEXT)
+	$(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)
+
+vdsosyms$(EXEEXT): $(vdsosyms_OBJECTS) $(vdsosyms_DEPENDENCIES) $(EXTRA_vdsosyms_DEPENDENCIES) 
+	@rm -f vdsosyms$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(vdsosyms_OBJECTS) $(vdsosyms_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addrcfi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addrscopes.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aggregate_size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alldts.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allfcts.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allregs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arextract.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arsymtest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst5.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst6.Po@am__quote@
+@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)/deleted.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deleted_lib_so-deleted-lib.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-addr-overflow.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)/funcretval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcscopes.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-aranges.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-files.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-lines.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-pubnames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/line2addr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/low_high_pc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5-sha1-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg_tst.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newscn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdwrmmap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rerequest_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/saridx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scnnames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sectiondump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show-abbrev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show-die-info.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showptable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-elf_cntl_gelf_getshdr.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@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdsosyms.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 -o $@ $<
+
+.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 -o $@ `$(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@	$(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`
+
+deleted_lib_so-deleted-lib.o: deleted-lib.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(deleted_lib_so_CFLAGS) $(CFLAGS) -MT deleted_lib_so-deleted-lib.o -MD -MP -MF $(DEPDIR)/deleted_lib_so-deleted-lib.Tpo -c -o deleted_lib_so-deleted-lib.o `test -f 'deleted-lib.c' || echo '$(srcdir)/'`deleted-lib.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/deleted_lib_so-deleted-lib.Tpo $(DEPDIR)/deleted_lib_so-deleted-lib.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='deleted-lib.c' object='deleted_lib_so-deleted-lib.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) $(deleted_lib_so_CFLAGS) $(CFLAGS) -c -o deleted_lib_so-deleted-lib.o `test -f 'deleted-lib.c' || echo '$(srcdir)/'`deleted-lib.c
+
+deleted_lib_so-deleted-lib.obj: deleted-lib.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(deleted_lib_so_CFLAGS) $(CFLAGS) -MT deleted_lib_so-deleted-lib.obj -MD -MP -MF $(DEPDIR)/deleted_lib_so-deleted-lib.Tpo -c -o deleted_lib_so-deleted-lib.obj `if test -f 'deleted-lib.c'; then $(CYGPATH_W) 'deleted-lib.c'; else $(CYGPATH_W) '$(srcdir)/deleted-lib.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/deleted_lib_so-deleted-lib.Tpo $(DEPDIR)/deleted_lib_so-deleted-lib.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='deleted-lib.c' object='deleted_lib_so-deleted-lib.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) $(deleted_lib_so_CFLAGS) $(CFLAGS) -c -o deleted_lib_so-deleted-lib.obj `if test -f 'deleted-lib.c'; then $(CYGPATH_W) 'deleted-lib.c'; else $(CYGPATH_W) '$(srcdir)/deleted-lib.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`; \
+	$(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
+
+# 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; \
+	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 \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    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-addr2line-i-lex-test.sh.log: run-addr2line-i-lex-test.sh
+	@p='run-addr2line-i-lex-test.sh'; \
+	b='run-addr2line-i-lex-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)
+run-deleted.sh.log: run-deleted.sh
+	@p='run-deleted.sh'; \
+	b='run-deleted.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-linkmap-cut.sh.log: run-linkmap-cut.sh
+	@p='run-linkmap-cut.sh'; \
+	b='run-linkmap-cut.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-aggregate-size.sh.log: run-aggregate-size.sh
+	@p='run-aggregate-size.sh'; \
+	b='run-aggregate-size.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)
+vdsosyms.log: vdsosyms$(EXEEXT)
+	@p='vdsosyms$(EXEEXT)'; \
+	b='vdsosyms'; \
+	$(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-A.sh.log: run-readelf-A.sh
+	@p='run-readelf-A.sh'; \
+	b='run-readelf-A.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'`; \
+	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
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+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:
+	-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)
+
+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."
+@STANDALONE_TRUE@installcheck-local:
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic 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-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: installcheck-local
+
+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:
+
+.MAKE: check-am install-am install-strip
+
+.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@	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 $<
+
+# 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)" \
+@STANDALONE_FALSE@		LOG_COMPILER="$(installed_LOG_COMPILER)" check-TESTS
+
+@GCOV_TRUE@check: check-am coverage
+@GCOV_TRUE@.PHONY: coverage
+@GCOV_TRUE@coverage:
+@GCOV_TRUE@	-$(srcdir)/coverage.sh
+
+# 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:
diff --git a/src/tests/addrcfi.c b/src/tests/addrcfi.c
new file mode 100644
index 0000000..8a2d126
--- /dev/null
+++ b/src/tests/addrcfi.c
@@ -0,0 +1,226 @@
+/* Test program for CFI handling.
+   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
+   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 <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <stdlib.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", ops == NULL ? "same_value" : "undefined");
+  else
+    {
+      printf ("%s expression:", result == 0 ? "location" : "value");
+      for (size_t i = 0; i < nops; ++i)
+	{
+	  printf (" %s", op_name(ops[i].atom));
+	  if (ops[i].number2 == 0)
+	    {
+	      if (ops[i].atom == DW_OP_addr)
+		printf ("(%#" PRIx64 ")", ops[i].number + bias);
+	      else if (ops[i].number != 0)
+		printf ("(%" PRId64 ")", ops[i].number);
+	    }
+	  else
+	    printf ("(%" PRId64 ",%" PRId64 ")",
+		    ops[i].number, ops[i].number2);
+	}
+      puts ("");
+    }
+}
+
+struct stuff
+{
+  Dwarf_Frame *frame;
+  Dwarf_Addr bias;
+};
+
+static int
+print_register (void *arg,
+		int regno,
+		const char *setname,
+		const char *prefix,
+		const char *regname,
+		int bits __attribute__ ((unused)),
+		int type __attribute__ ((unused)))
+{
+  struct stuff *stuff = arg;
+
+  printf ("\t%s reg%u (%s%s): ", setname, regno, prefix, regname);
+
+  Dwarf_Op ops_mem[2];
+  Dwarf_Op *ops;
+  size_t nops;
+  int result = dwarf_frame_register (stuff->frame, regno, ops_mem, &ops, &nops);
+  print_detail (result, ops, nops, stuff->bias);
+
+  return DWARF_CB_OK;
+}
+
+static int
+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)
+    {
+      printf ("dwarf_cfi_addrframe (%s): %s\n", which, dwarf_errmsg (-1));
+      return 1;
+    }
+
+  Dwarf_Addr start = pc;
+  Dwarf_Addr end = pc;
+  bool signalp;
+  int ra_regno = dwarf_frame_info (stuff->frame, &start, &end, &signalp);
+  if (ra_regno >= 0)
+    {
+      start += stuff->bias;
+      end += stuff->bias;
+    }
+
+  printf ("%s has %#" PRIx64 " => [%#" PRIx64 ", %#" PRIx64 "):\n",
+	  which, pc, start, end);
+
+  if (ra_regno < 0)
+    printf ("\treturn address register unavailable (%s)\n",
+	    dwarf_errmsg (0));
+  else
+    printf ("\treturn address in reg%u%s\n",
+	    ra_regno, signalp ? " (signal frame)" : "");
+
+  // 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);
+
+  printf ("\tCFA ");
+  print_detail (result, cfa_ops, cfa_nops, stuff->bias);
+
+  (void) dwfl_module_register_names (dwfl_addrmodule (dwfl, pc),
+				     &print_register, stuff);
+
+  return 0;
+}
+
+static int
+handle_address (GElf_Addr pc, Dwfl *dwfl)
+{
+  Dwfl_Module *mod = dwfl_addrmodule (dwfl, pc);
+
+  struct stuff stuff;
+  return (handle_cfi (dwfl, ".eh_frame",
+		      dwfl_module_eh_cfi (mod, &stuff.bias), pc, &stuff)
+	  & handle_cfi (dwfl, ".debug_frame",
+			dwfl_module_dwarf_cfi (mod, &stuff.bias), pc, &stuff));
+}
+
+int
+main (int argc, char *argv[])
+{
+  int remaining;
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  Dwfl *dwfl = NULL;
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining, &dwfl);
+  assert (dwfl != NULL);
+
+  int result = 0;
+
+  /* Now handle the addresses.  In case none are given on the command
+     line, read from stdin.  */
+  if (remaining == argc)
+    {
+      /* We use no threads here which can interfere with handling a stream.  */
+      (void) __fsetlocking (stdin, FSETLOCKING_BYCALLER);
+
+      char *buf = NULL;
+      size_t len = 0;
+      while (!feof_unlocked (stdin))
+	{
+	  if (getline (&buf, &len, stdin) < 0)
+	    break;
+
+	  char *endp;
+	  uintmax_t addr = strtoumax (buf, &endp, 0);
+	  if (endp != buf)
+	    result |= handle_address (addr, dwfl);
+	  else
+	    result = 1;
+	}
+
+      free (buf);
+    }
+  else
+    {
+      do
+	{
+	  char *endp;
+	  uintmax_t addr = strtoumax (argv[remaining], &endp, 0);
+	  if (endp != argv[remaining])
+	    result |= handle_address (addr, dwfl);
+	  else
+	    result = 1;
+	}
+      while (++remaining < argc);
+    }
+
+  dwfl_end (dwfl);
+
+  return result;
+}
diff --git a/src/tests/addrscopes.c b/src/tests/addrscopes.c
new file mode 100644
index 0000000..fca61d3
--- /dev/null
+++ b/src/tests/addrscopes.c
@@ -0,0 +1,195 @@
+/* Test program for dwarf_getscopes.
+   Copyright (C) 2005 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 <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <error.h>
+#include <string.h>
+
+
+static void
+paddr (const char *prefix, Dwarf_Addr addr, Dwfl_Line *line)
+{
+  const char *src;
+  int lineno, linecol;
+  if (line != NULL
+      && (src = dwfl_lineinfo (line, &addr, &lineno, &linecol,
+			       NULL, NULL)) != NULL)
+    {
+      if (linecol != 0)
+	printf ("%s%#" PRIx64 " (%s:%d:%d)",
+		prefix, addr, src, lineno, linecol);
+      else
+	printf ("%s%#" PRIx64 " (%s:%d)",
+		prefix, addr, src, lineno);
+    }
+  else
+    printf ("%s%#" PRIx64, prefix, addr);
+}
+
+static void
+print_vars (unsigned int indent, Dwarf_Die *die)
+{
+  Dwarf_Die child;
+  if (dwarf_child (die, &child) == 0)
+    do
+      switch (dwarf_tag (&child))
+	{
+	case DW_TAG_variable:
+	case DW_TAG_formal_parameter:
+	  printf ("%*s%-30s[%6" PRIx64 "]\n", indent, "",
+		  dwarf_diename (&child),
+		  (uint64_t) dwarf_dieoffset (&child));
+	  break;
+	default:
+	  break;
+	}
+    while (dwarf_siblingof (&child, &child) == 0);
+
+  Dwarf_Attribute attr_mem;
+  Dwarf_Die origin;
+  if (dwarf_hasattr (die, DW_AT_abstract_origin)
+      && dwarf_formref_die (dwarf_attr (die, DW_AT_abstract_origin, &attr_mem),
+			    &origin) != NULL
+      && dwarf_child (&origin, &child) == 0)
+    do
+      switch (dwarf_tag (&child))
+	{
+	case DW_TAG_variable:
+	case DW_TAG_formal_parameter:
+	  printf ("%*s%s (abstract)\n", indent, "",
+		  dwarf_diename (&child));
+	  break;
+	default:
+	  break;
+	}
+    while (dwarf_siblingof (&child, &child) == 0);
+}
+
+
+#define INDENT 4
+
+static void
+handle_address (GElf_Addr pc, Dwfl *dwfl)
+{
+  Dwarf_Addr cubias;
+  Dwarf_Die *cudie = dwfl_addrdie (dwfl, pc, &cubias);
+  if (cudie == NULL)
+    error (EXIT_FAILURE, 0, "dwfl_addrdie: %s", dwfl_errmsg (-1));
+
+  Dwarf_Die *scopes;
+  int n = dwarf_getscopes (cudie, pc - cubias, &scopes);
+  if (n < 0)
+    error (EXIT_FAILURE, 0, "dwarf_getscopes: %s", dwarf_errmsg (-1));
+  else if (n == 0)
+    printf ("%#" PRIx64 ": not in any scope\n", pc);
+  else
+    {
+      printf ("%#" PRIx64 ":\n", pc);
+      unsigned int indent = 0;
+      while (n-- > 0)
+	{
+	  Dwarf_Die *const die = &scopes[n];
+
+	  indent += INDENT;
+	  printf ("%*s%s (%#x)", indent, "",
+		  dwarf_diename (die) ?: "<unnamed>",
+		  dwarf_tag (die));
+
+	  Dwarf_Addr lowpc, highpc;
+	  if (dwarf_lowpc (die, &lowpc) == 0
+	      && dwarf_highpc (die, &highpc) == 0)
+	    {
+	      lowpc += cubias;
+	      highpc += cubias;
+	      Dwfl_Line *loline = dwfl_getsrc (dwfl, lowpc);
+	      Dwfl_Line *hiline = dwfl_getsrc (dwfl, highpc);
+	      paddr (": ", lowpc, loline);
+	      if (highpc != lowpc)
+		paddr (" .. ", lowpc, hiline == loline ? NULL : hiline);
+	    }
+	  puts ("");
+
+	  print_vars (indent + INDENT, die);
+	}
+    }
+}
+
+int
+main (int argc, char *argv[])
+{
+  int remaining;
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  Dwfl *dwfl = NULL;
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining, &dwfl);
+  assert (dwfl != NULL);
+
+  int result = 0;
+
+  /* Now handle the addresses.  In case none are given on the command
+     line, read from stdin.  */
+  if (remaining == argc)
+    {
+      /* We use no threads here which can interfere with handling a stream.  */
+      (void) __fsetlocking (stdin, FSETLOCKING_BYCALLER);
+
+      char *buf = NULL;
+      size_t len = 0;
+      while (!feof_unlocked (stdin))
+	{
+	  if (getline (&buf, &len, stdin) < 0)
+	    break;
+
+	  char *endp;
+	  uintmax_t addr = strtoumax (buf, &endp, 0);
+	  if (endp != buf)
+	    handle_address (addr, dwfl);
+	  else
+	    result = 1;
+	}
+
+      free (buf);
+    }
+  else
+    {
+      do
+	{
+	  char *endp;
+	  uintmax_t addr = strtoumax (argv[remaining], &endp, 0);
+	  if (endp != argv[remaining])
+	    handle_address (addr, dwfl);
+	  else
+	    result = 1;
+	}
+      while (++remaining < argc);
+    }
+
+  dwfl_end (dwfl);
+
+  return result;
+}
diff --git a/src/tests/aggregate_size.c b/src/tests/aggregate_size.c
new file mode 100644
index 0000000..930eafa
--- /dev/null
+++ b/src/tests/aggregate_size.c
@@ -0,0 +1,83 @@
+/* Test program for dwarf_aggregate_size. Prints size of top-level vars.
+   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/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <assert.h>
+#include <argp.h>
+#include <inttypes.h>
+#include <fcntl.h>
+#include ELFUTILS_HEADER(dw)
+#include ELFUTILS_HEADER(dwfl)
+#include <stdio.h>
+#include <unistd.h>
+#include <dwarf.h>
+
+void
+print_var_type_size (Dwarf_Die *var)
+{
+  Dwarf_Attribute attr_mem;
+  Dwarf_Die type_mem;
+  Dwarf_Die *type;
+  const char *name = dwarf_diename (var);
+
+  type = dwarf_formref_die (dwarf_attr (var, DW_AT_type, &attr_mem),
+			    &type_mem);
+  if (type != NULL)
+    {
+      Dwarf_Word size;
+      if (dwarf_aggregate_size (type, &size) < 0)
+        printf ("%s no size: %s\n", name, dwarf_errmsg (-1));
+      else
+	printf ("%s size %" PRIu64 "\n", name, size);
+    }
+  else
+    printf ("%s has no type.\n", name);
+}
+
+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)
+    {
+      Dwarf_Die die_mem;
+      Dwarf_Die *die = &die_mem;
+      dwarf_child (cu, &die_mem);
+
+      while (1)
+	{
+	  if (dwarf_tag (die) == DW_TAG_variable)
+	    print_var_type_size (die);
+
+	  if (dwarf_siblingof (die, &die_mem) != 0)
+	    break;
+	}
+    }
+
+  dwfl_end (dwfl);
+}
diff --git a/src/tests/alldts.c b/src/tests/alldts.c
new file mode 100644
index 0000000..378aa41
--- /dev/null
+++ b/src/tests/alldts.c
@@ -0,0 +1,267 @@
+/* Create an ELF file with all the DT_* flags set.
+   Copyright (C) 2011 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Marek Polacek <mpolacek@redhat.com>, 2011.
+
+   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 ELFUTILS_HEADER(ebl)
+#include <elf.h>
+#include <gelf.h>
+#include <fcntl.h>
+#include <libelf.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+
+int
+main (void)
+{
+  static const char fname[] = "testfile-alldts";
+  struct Ebl_Strtab *shst;
+  struct Ebl_Strent *dynscn;
+  struct Ebl_Strent *shstrtabse;
+  const Elf32_Sword dtflags[] =
+    {
+      DT_NULL, DT_NEEDED, DT_PLTRELSZ, DT_PLTGOT,
+      DT_HASH, DT_STRTAB, DT_SYMTAB, DT_RELA,
+      DT_RELASZ, DT_RELAENT, DT_STRSZ, DT_SYMENT,
+      DT_INIT, DT_FINI, DT_SONAME, DT_RPATH,
+      DT_SYMBOLIC, DT_REL, DT_RELSZ, DT_RELENT,
+      DT_PLTREL, DT_DEBUG, DT_TEXTREL, DT_JMPREL,
+      DT_BIND_NOW, DT_INIT_ARRAY, DT_FINI_ARRAY,
+      DT_INIT_ARRAYSZ, DT_FINI_ARRAYSZ, DT_RUNPATH,
+      DT_FLAGS, DT_ENCODING, DT_PREINIT_ARRAY,
+      DT_PREINIT_ARRAYSZ, DT_VERSYM, DT_GNU_PRELINKED,
+      DT_GNU_CONFLICTSZ, DT_GNU_LIBLISTSZ, DT_CHECKSUM,
+      DT_PLTPADSZ, DT_MOVEENT, DT_MOVESZ, DT_FEATURE_1,
+      DT_POSFLAG_1, DT_SYMINSZ, DT_SYMINENT, DT_GNU_HASH,
+      DT_TLSDESC_PLT, DT_TLSDESC_GOT, DT_GNU_CONFLICT,
+      DT_GNU_LIBLIST, DT_CONFIG, DT_DEPAUDIT, DT_AUDIT,
+      DT_PLTPAD, DT_MOVETAB, DT_SYMINFO, DT_RELACOUNT,
+      DT_RELCOUNT, DT_FLAGS_1, DT_VERDEF, DT_VERDEFNUM,
+      DT_VERNEED, DT_VERNEEDNUM, DT_AUXILIARY, DT_FILTER
+    };
+  const int ndtflags = sizeof (dtflags) / sizeof (dtflags[0]);
+
+  /* We use no threads here which can interfere with handling a stream.  */
+  (void) __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+
+  /* Open the file.  */
+  int fd = open64 (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+  if (fd == -1)
+    {
+      printf ("cannot open `%s': %m\n", fname);
+      return 1;
+    }
+
+  /* Tell the library which version are we expecting.  */
+  elf_version (EV_CURRENT);
+
+  /* Create an ELF descriptor.  */
+  Elf *elf = elf_begin (fd, ELF_C_WRITE, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  /* Create an ELF header.  */
+  Elf32_Ehdr *ehdr = elf32_newehdr (elf);
+  if (ehdr == NULL)
+    {
+      printf ("cannot create ELF header: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  ehdr->e_ident[0] = 42;
+  ehdr->e_ident[5] = 1;
+  ehdr->e_ident[6] = 2;
+  ehdr->e_type = ET_EXEC;
+  ehdr->e_machine = EM_386;
+  ehdr->e_version = 1;
+  ehdr->e_ehsize = 1;
+  ehdr->e_shnum = 3;
+
+  elf_flagehdr (elf, ELF_C_SET, ELF_F_DIRTY);
+
+  /* Create the program headers.  */
+  Elf32_Phdr *phdr = elf32_newphdr (elf, 2);
+  if (phdr == NULL)
+    {
+      printf ("cannot create program headers: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  phdr[0].p_type = PT_PHDR;
+  phdr[1].p_type = PT_DYNAMIC;
+
+  elf_flagphdr (elf, ELF_C_SET, ELF_F_DIRTY);
+  shst = ebl_strtabinit (true);
+
+  /* Create the .dynamic section.  */
+  Elf_Scn *scn = elf_newscn (elf);
+  if (scn == NULL)
+    {
+      printf ("cannot create DYNAMIC section: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  Elf32_Shdr *shdr = elf32_getshdr (scn);
+  if (shdr == NULL)
+    {
+      printf ("cannot get header for DYNAMIC section: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  dynscn = ebl_strtabadd (shst, ".dynamic", 0);
+
+  /* We'll need to know the section offset.  But this will be set up
+     by elf_update later, so for now just store the address.  */
+  const Elf32_Off *const dynscn_offset = &shdr->sh_offset;
+  shdr->sh_type = SHT_DYNAMIC;
+  shdr->sh_flags = SHF_ALLOC | SHF_WRITE;
+  shdr->sh_link = SHN_UNDEF;
+  shdr->sh_info = SHN_UNDEF;
+  /* This section will start here.  */
+  shdr->sh_addr = 0x1a0;
+
+  /* Create new section data.  */
+  Elf_Data *data = elf_newdata (scn);
+  if (data == NULL)
+    {
+      printf ("cannot create data for DYNAMIC section: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  /* Allocate memory for all the .dynamic entries.  */
+  Elf32_Dyn *dyn = malloc (ndtflags * sizeof (Elf32_Dyn));
+  if (dyn == NULL)
+    {
+      printf ("malloc failed: %m\n");
+      return 1;
+    }
+
+  /* Now write all the DT_* flags.  */
+  for (int i = 0; i < ndtflags; ++i)
+    {
+      dyn[i].d_tag = dtflags[i];
+      dyn[i].d_un.d_val = 0xdeadbeef;
+    }
+
+  /* Set the pointer to allocated memory.  */
+  data->d_buf = dyn;
+  data->d_type = ELF_T_DYN;
+  data->d_version = EV_CURRENT;
+  data->d_size = ndtflags * sizeof (Elf32_Dyn);
+  data->d_align = 0x8;
+
+  /* Create .shstrtab section.  */
+  scn = elf_newscn (elf);
+  if (scn == NULL)
+    {
+      printf ("cannot create SHSTRTAB section: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  shdr = elf32_getshdr (scn);
+  if (shdr == NULL)
+    {
+      printf ("cannot get header for SHSTRTAB section: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  shstrtabse = ebl_strtabadd (shst, ".shstrtab", 0);
+
+  shdr->sh_type = SHT_STRTAB;
+  shdr->sh_flags = 0;
+  shdr->sh_addr = 0;
+  shdr->sh_link = SHN_UNDEF;
+  shdr->sh_info = SHN_UNDEF;
+  shdr->sh_entsize = 1;
+
+  /* We have to store the section index in the ELF header.  */
+  ehdr->e_shstrndx = elf_ndxscn (scn);
+
+  data = elf_newdata (scn);
+  if (data == NULL)
+    {
+      printf ("cannot create data SHSTRTAB section: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  /* No more sections, finalize the section header string table.  */
+  ebl_strtabfinalize (shst, data);
+
+  elf32_getshdr (elf_getscn (elf, 1))->sh_name = ebl_strtaboffset (dynscn);
+  shdr->sh_name = ebl_strtaboffset (shstrtabse);
+
+  /* Let the library compute the internal structure information.  */
+  if (elf_update (elf, ELF_C_NULL) < 0)
+    {
+      printf ("failure in elf_update(NULL): %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  ehdr = elf32_getehdr (elf);
+
+  phdr[0].p_offset = ehdr->e_phoff;
+  phdr[0].p_vaddr = ehdr->e_phoff;
+  phdr[0].p_paddr = ehdr->e_phoff;
+  phdr[0].p_flags = PF_R | PF_X;
+  phdr[0].p_filesz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT);
+  phdr[0].p_memsz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT);
+  phdr[0].p_align = sizeof (Elf32_Word);
+
+  phdr[1].p_flags = PF_W | PF_R;
+  phdr[1].p_offset = *dynscn_offset;
+  /* Set up the start of this segment to equal start address of the
+     .dynamic section.  */
+  phdr[1].p_vaddr = 0x1a0;
+  phdr[1].p_paddr = 0x1a0;
+  phdr[1].p_align = 2 * sizeof (Elf32_Word);
+  phdr[1].p_filesz = ndtflags * sizeof (Elf32_Dyn);
+  phdr[1].p_memsz = ndtflags * sizeof (Elf32_Dyn);
+
+  /* Write out the file.  */
+  if (elf_update (elf, ELF_C_WRITE) < 0)
+    {
+      printf ("failure in elf_update(WRITE): %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  /* We don't need the string table anymore.  */
+  ebl_strtabfree (shst);
+
+  /* And the data allocated in the .shstrtab section.  */
+  free (data->d_buf);
+
+  /* All done.  */
+  if (elf_end (elf) != 0)
+    {
+      printf ("failure in elf_end: %s\n", elf_errmsg (-1));
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/src/tests/allfcts.c b/src/tests/allfcts.c
new file mode 100644
index 0000000..d3c8d26
--- /dev/null
+++ b/src/tests/allfcts.c
@@ -0,0 +1,109 @@
+/* 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
+   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 <err.h>
+#include <fcntl.h>
+#include ELFUTILS_HEADER(dw)
+#include ELFUTILS_HEADER(dwelf)
+#include <stdio.h>
+#include <unistd.h>
+
+
+static int
+cb (Dwarf_Die *func, void *arg __attribute__ ((unused)))
+{
+  const char *file = dwarf_decl_file (func);
+  int line = -1;
+  dwarf_decl_line (func, &line);
+  const char *fct = dwarf_diename (func);
+
+  printf ("%s:%d:%s\n", file, line, fct);
+
+  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);
+
+	      /* 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);
+    }
+}
diff --git a/src/tests/allregs.c b/src/tests/allregs.c
new file mode 100644
index 0000000..b103ce1
--- /dev/null
+++ b/src/tests/allregs.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2005, 2006 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <error.h>
+#include <locale.h>
+#include <argp.h>
+#include <assert.h>
+#include ELFUTILS_HEADER(dwfl)
+#include <dwarf.h>
+
+#include "../libdw/known-dwarf.h"
+
+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;
+}
+
+
+static int
+first_module (Dwfl_Module *mod,
+	      void **userdatap __attribute__ ((unused)),
+	      const char *name __attribute__ ((unused)),
+	      Dwarf_Addr low_addr __attribute__ ((unused)),
+	      void *arg)
+{
+  Dwarf_Addr bias;
+  if (dwfl_module_getelf (mod, &bias) == NULL) /* Not really a module.  */
+    return DWARF_CB_OK;
+
+  *(Dwfl_Module **) arg = mod;
+  return DWARF_CB_ABORT;
+}
+
+
+struct state
+{
+  struct reginfo *info;
+  int nregs;
+};
+
+struct reginfo
+{
+  const char *set, *pfx;
+  int regno;
+  int bits;
+  int type;
+  char name[32];
+};
+
+static int
+compare (const void *r1, const void *r2)
+{
+  const struct reginfo *a = r1, *b = r2;
+  if (a->set == b->set)
+    return a->regno - b->regno;
+  if (a->set == NULL)
+    return 1;
+  if (b->set == NULL)
+    return -1;
+  if (!strcmp (a->set, "integer"))
+    return -1;
+  if (!strcmp (b->set, "integer"))
+    return 1;
+  return strcmp (a->set, b->set);
+}
+
+static int
+one_register (void *arg,
+	      int regno,
+	      const char *setname,
+	      const char *prefix,
+	      const char *regname,
+	      int bits, int type)
+{
+  struct state *state = arg;
+
+  if (regno >= state->nregs)
+    {
+      state->info = realloc (state->info, (regno + 1) * sizeof state->info[0]);
+      memset (&state->info[state->nregs], 0,
+	      ((void *) &state->info[regno + 1]
+	       - (void *) &state->info[state->nregs]));
+      state->nregs = regno + 1;
+    }
+
+  state->info[regno].regno = regno;
+  state->info[regno].set = setname;
+  state->info[regno].pfx = prefix;
+  state->info[regno].bits = bits;
+  state->info[regno].type = type;
+  assert (strlen (regname) < sizeof state->info[regno].name);
+  strcpy (state->info[regno].name, regname);
+
+  return DWARF_CB_OK;
+}
+
+
+static int
+match_register (void *arg,
+		int regno,
+		const char *setname,
+		const char *prefix,
+		const char *regname,
+		int bits, int type)
+{
+  if (regno == *(int *) arg)
+    printf ("%5d => %s register %s%s %s %d bits\n",
+	    regno, setname, prefix, regname,
+	    dwarf_encoding_string (type), bits);
+
+  return DWARF_CB_ABORT;
+}
+
+
+int
+main (int argc, char **argv)
+{
+  int remaining;
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  Dwfl *dwfl = NULL;
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining, &dwfl);
+  assert (dwfl != NULL);
+
+  Dwfl_Module *mod = NULL;
+  if (dwfl_getmodules (dwfl, &first_module, &mod, 0) < 0)
+    error (EXIT_FAILURE, 0, "dwfl_getmodules: %s", dwfl_errmsg (-1));
+
+  if (remaining == argc)
+    {
+      struct state state = { NULL, 0 };
+      int result = dwfl_module_register_names (mod, &one_register, &state);
+      if (result != 0 || state.nregs == 0)
+	error (EXIT_FAILURE, 0, "dwfl_module_register_names: %s",
+	       result ? dwfl_errmsg (-1) : "no backend registers known");
+
+      qsort (state.info, state.nregs, sizeof state.info[0], &compare);
+
+      const char *set = NULL;
+      for (int i = 0; i < state.nregs; ++i)
+	if (state.info[i].set != NULL)
+	  {
+	    if (set != state.info[i].set)
+	      printf ("%s registers:\n", state.info[i].set);
+	    set = state.info[i].set;
+
+	    printf ("\t%3d: %s%s (%s), %s %d bits\n",
+		    state.info[i].regno,
+		    state.info[i].pfx ?: "", state.info[i].name,
+		    state.info[i].name,
+		    dwarf_encoding_string (state.info[i].type),
+		    state.info[i].bits);
+	  }
+    }
+  else
+    do
+      {
+	const char *arg = argv[remaining++];
+	int regno = atoi (arg);
+	int result = dwfl_module_register_names (mod, &match_register, &regno);
+	if (result != DWARF_CB_ABORT)
+	  error (EXIT_FAILURE, 0, "dwfl_module_register_names: %s",
+		 result ? dwfl_errmsg (-1) : "no backend registers known");
+      }
+    while (remaining < argc);
+
+  dwfl_end (dwfl);
+
+  return 0;
+}
diff --git a/src/tests/arextract.c b/src/tests/arextract.c
new file mode 100644
index 0000000..21850b6
--- /dev/null
+++ b/src/tests/arextract.c
@@ -0,0 +1,159 @@
+/* Copyright (C) 1999, 2000, 2002 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+
+   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 <gelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/param.h>
+
+
+int
+main (int argc, char *argv[])
+{
+  int fd;
+  Elf *elf;
+  Elf *subelf;
+  Elf_Cmd cmd;
+  off_t offset;
+  size_t todo;
+
+  if (argc < 4)
+    exit (1);
+
+  /* Open the archive.  */
+  fd = open (argv[1], O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("Cannot open input file: %m");
+      exit (1);
+    }
+
+  /* Set the ELF version.  */
+  elf_version (EV_CURRENT);
+
+  /* Create an ELF descriptor.  */
+  cmd = ELF_C_READ;
+  elf = elf_begin (fd, cmd, NULL);
+  if (elf == NULL)
+    {
+      printf ("Cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* If it is no archive punt.  */
+  if (elf_kind (elf) != ELF_K_AR)
+    {
+      printf ("`%s' is no archive\n", argv[1]);
+      exit (1);
+    }
+
+  /* Get the elements of the archive one after the other.  */
+  while ((subelf = elf_begin (fd, cmd, elf)) != NULL)
+    {
+      /* The the header for this element.  */
+      Elf_Arhdr *arhdr = elf_getarhdr (subelf);
+
+      if (arhdr == NULL)
+	{
+	  printf ("cannot get arhdr: %s\n", elf_errmsg (-1));
+	  exit (1);
+	}
+
+      if (strcmp (arhdr->ar_name, argv[2]) == 0)
+	{
+	  int outfd;
+
+	  /* Get the offset of the file in the archive.  */
+	  offset = elf_getbase (subelf);
+	  if (offset == -1)
+	    {
+	      printf ("\
+Failed to get base address for the archive element: %s\n",
+		      elf_errmsg (-1));
+	      exit (1);
+	    }
+
+	  /* Open the output file.  */
+	  outfd = open (argv[3], O_CREAT | O_TRUNC | O_RDWR, 0666);
+	  if (outfd == -1)
+	    {
+	      printf ("cannot open output file: %m");
+	      exit (1);
+	    }
+
+	  /* Now write out the data.  */
+	  todo = arhdr->ar_size;
+	  while (todo > 0)
+	    {
+	      char buf[1024];
+	      ssize_t n = pread (fd, buf, MIN (sizeof buf, todo), offset);
+	      if (n == 0)
+		break;
+
+	      if (write (outfd, buf, n) != n)
+		{
+		  puts ("Writing output failed");
+		  exit (1);
+		}
+
+	      offset += n;
+	      todo -= n;
+	    }
+
+	  /* Check whether all the date was read and written out.  */
+	  if (todo != 0)
+	    {
+	      puts ("Reading archive member failed.");
+	      exit (1);
+	    }
+
+	  /* Close the descriptors.  */
+	  if (elf_end (subelf) != 0 || elf_end (elf) != 0)
+	    {
+	      printf ("Freeing ELF descriptors failed: %s", elf_errmsg (-1));
+	      exit (1);
+	    }
+
+	  close (outfd);
+	  close (fd);
+
+	  /* All went well.  */
+	  exit (0);
+	}
+
+      /* Get next archive element.  */
+      cmd = elf_next (subelf);
+      if (elf_end (subelf) != 0)
+	{
+	  printf ("error while freeing sub-ELF descriptor: %s\n",
+		  elf_errmsg (-1));
+	  exit (1);
+	}
+    }
+
+  /* When we reach this point we haven't found the given file in the
+     archive.  */
+  printf ("File `%s' not found in archive\n", argv[2]);
+  exit (1);
+}
diff --git a/src/tests/arls.c b/src/tests/arls.c
new file mode 100644
index 0000000..cd8e4b8
--- /dev/null
+++ b/src/tests/arls.c
@@ -0,0 +1,107 @@
+/* Copyright (C) 2007 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 <ar.h>
+#include <fcntl.h>
+#include <libelf.h>
+#include <stdio.h>
+#include <unistd.h>
+
+
+static int handle (const char *fname);
+
+
+int
+main (int argc, char *argv[])
+{
+  elf_version (EV_CURRENT);
+
+  int result = 0;
+  if (argc == 1)
+    result = handle ("a.out");
+  else
+    for (int i = 1; i < argc; ++i)
+      result |= handle (argv[1]);
+
+  return result;
+}
+
+
+static int
+handle (const char *fname)
+{
+  int fd = open (fname, O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open '%s': %m\n", fname);
+      return 1;
+    }
+
+  Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot get ELF handling for '%s': %s\n",
+	      fname, elf_errmsg (-1));
+      close (fd);
+      return 1;
+    }
+
+  if (elf_kind (elf) != ELF_K_AR)
+    {
+      printf ("'%s' is no archive\n", fname);
+      elf_end (elf);
+      close (fd);
+      return 1;
+    }
+
+  printf ("%s:\n", fname);
+  Elf *subelf = NULL;
+  Elf_Cmd cmd = ELF_C_READ_MMAP;
+  while ((subelf = elf_begin (fd, cmd, elf)) != NULL)
+    {
+      Elf_Arhdr *arhdr = elf_getarhdr (subelf);
+      if (arhdr == NULL)
+	{
+	  printf ("cannot get archive header in '%s': %s\n",
+		  fname, elf_errmsg (-1));
+	  elf_end (subelf);
+	  elf_end (elf);
+	  close (fd);
+	  return 1;
+	}
+
+      off_t off = elf_getaroff (subelf);
+
+      printf ("\nOffset    %llu\n"
+	      "  Name    %s\n"
+	      "  Date    %ld\n"
+	      "  UID     %d\n"
+	      "  GID     %d\n"
+	      "  Mode    %o\n"
+	      "  Size    %lld\n",
+	      (unsigned long long int) off,
+	      arhdr->ar_name, (long int) arhdr->ar_date, (int) arhdr->ar_uid,
+	      (int) arhdr->ar_gid,
+	      (int) arhdr->ar_mode, (long long int) arhdr->ar_size);
+
+      cmd = elf_next (subelf);
+      elf_end (subelf);
+    }
+
+  close (fd);
+
+  return 0;
+}
diff --git a/src/tests/arsymtest.c b/src/tests/arsymtest.c
new file mode 100644
index 0000000..c724863
--- /dev/null
+++ b/src/tests/arsymtest.c
@@ -0,0 +1,136 @@
+/* Copyright (C) 1999, 2000, 2002 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+
+   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 <fcntl.h>
+#include <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+
+int
+main (int argc, char *argv[])
+{
+  int fd;
+  FILE *fp;
+  Elf *elf;
+  Elf_Arsym *arsym;
+  size_t narsym;
+
+  if (argc < 3)
+    exit (1);
+
+  /* Open the archive.  */
+  fd = open (argv[1], O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("Cannot open input file: %m");
+      exit (1);
+    }
+
+  /* Open the output file.  */
+  fp = fopen (argv[2], "w");
+  if (fp == NULL)
+    {
+      printf ("Cannot open output file: %m");
+      exit (1);
+    }
+
+  /* Set the ELF version.  */
+  elf_version (EV_CURRENT);
+
+  /* Create an ELF descriptor.  */
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("Cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* If it is no archive punt.  */
+  if (elf_kind (elf) != ELF_K_AR)
+    {
+      printf ("`%s' is no archive\n", argv[1]);
+      exit (1);
+    }
+
+  /* Now get the index of the archive.  */
+  arsym = elf_getarsym (elf, &narsym);
+  if (arsym == NULL)
+    {
+      printf ("Cannot get archive index: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* If there is no element in the index do nothing.  There always is
+     an empty entry at the end which is included in the count and
+     which we want to skip.  */
+  if (narsym-- > 1)
+    while (narsym-- > 0)
+      {
+	Elf *subelf;
+	Elf_Arhdr *arhdr;
+
+	if (elf_rand (elf, arsym[narsym].as_off) != arsym[narsym].as_off)
+	  {
+	    printf ("random access for symbol `%s' fails: %s\n",
+		    arsym[narsym].as_name, elf_errmsg (-1));
+	    exit (1);
+	  }
+
+	subelf = elf_begin (fd, ELF_C_READ, elf);
+	if (subelf == NULL)
+	  {
+	    printf ("Cannot create ELF descriptor for archive member: %s\n",
+		    elf_errmsg (-1));
+	    exit (1);
+	  }
+
+	arhdr = elf_getarhdr (subelf);
+	if (arhdr == NULL)
+	  {
+	    printf ("Cannot get archive header for element `%s': %s\n",
+		    arsym[narsym].as_name, elf_errmsg (-1));
+	    exit (1);
+	  }
+
+	/* Now print what we actually want.  */
+	fprintf (fp, "%s in %s\n", arsym[narsym].as_name, arhdr->ar_name);
+
+	/* Free the ELF descriptor.  */
+	if (elf_end (subelf) != 0)
+	  {
+	    printf ("Error while freeing subELF descriptor: %s\n",
+		    elf_errmsg (-1));
+	    exit (1);
+	  }
+      }
+
+  /* Free the ELF descriptor.  */
+  if (elf_end (elf) != 0)
+    {
+      printf ("Error while freeing ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  close (fd);
+  fclose (fp);
+
+  return 0;
+}
diff --git a/src/tests/asm-tst1.c b/src/tests/asm-tst1.c
new file mode 100644
index 0000000..f611d66
--- /dev/null
+++ b/src/tests/asm-tst1.c
@@ -0,0 +1,256 @@
+/* Copyright (C) 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+
+static const char fname[] = "asm-tst1-out.o";
+
+
+static const GElf_Ehdr expected_ehdr =
+  {
+    .e_ident = { [EI_MAG0] = ELFMAG0,
+		 [EI_MAG1] = ELFMAG1,
+		 [EI_MAG2] = ELFMAG2,
+		 [EI_MAG3] = ELFMAG3,
+		 [EI_CLASS] = ELFCLASS32,
+		 [EI_DATA] = ELFDATA2LSB,
+		 [EI_VERSION] = EV_CURRENT },
+    .e_type = ET_REL,
+    .e_machine = EM_386,
+    .e_version = EV_CURRENT,
+    .e_shoff = 88,
+    .e_ehsize = sizeof (Elf32_Ehdr),
+    .e_shentsize = sizeof (Elf32_Shdr),
+    .e_shnum = 4,
+    .e_shstrndx = 3
+  };
+
+
+static const char *scnnames[4] =
+  {
+    [0] = "",
+    [1] = ".text",
+    [2] = ".data",
+    [3] = ".shstrtab"
+  };
+
+
+int
+main (void)
+{
+  AsmCtx_t *ctx;
+  AsmScn_t *scn1;
+  AsmScn_t *scn2;
+  int fd;
+  Elf *elf;
+  GElf_Ehdr ehdr_mem;
+  GElf_Ehdr *ehdr;
+  int result = 0;
+  size_t cnt;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  /* Create two sections.  */
+  scn1 = asm_newscn (ctx, ".text", SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR);
+  scn2 = asm_newscn (ctx, ".data", SHT_PROGBITS, SHF_ALLOC | SHF_WRITE);
+  if (scn1 == NULL || scn2 == NULL)
+    {
+      printf ("cannot create section in output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Special alignment for the .text section.  */
+  if (asm_align (scn1, 32) != 0)
+    {
+      printf ("cannot align .text section: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Check the file.  */
+  fd = open (fname, O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open generated file: %m\n");
+      result = 1;
+      goto out;
+    }
+
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close;
+    }
+  if (elf_kind (elf) != ELF_K_ELF)
+    {
+      puts ("not a valid ELF file");
+      result = 1;
+      goto out_close2;
+    }
+
+  ehdr = gelf_getehdr (elf, &ehdr_mem);
+  if (ehdr == NULL)
+    {
+      printf ("cannot get ELF header: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close2;
+    }
+
+  if (memcmp (ehdr, &expected_ehdr, sizeof (GElf_Ehdr)) != 0)
+    {
+      puts ("ELF header does not match");
+      result = 1;
+      goto out_close2;
+    }
+
+  for (cnt = 1; cnt < 4; ++cnt)
+    {
+      Elf_Scn *scn;
+      GElf_Shdr shdr_mem;
+      GElf_Shdr *shdr;
+
+      scn = elf_getscn (elf, cnt);
+      if (scn == NULL)
+	{
+	  printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      shdr = gelf_getshdr (scn, &shdr_mem);
+      if (shdr == NULL)
+	{
+	  printf ("cannot get section header for section %Zd: %s\n",
+		  cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      if (strcmp (elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+		  scnnames[cnt]) != 0)
+	{
+	  printf ("section %Zd's name differs: %s vs %s\n", cnt,
+		  elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+		  scnnames[cnt]);
+	  result = 1;
+	}
+
+      if (shdr->sh_type != (cnt == 3 ? SHT_STRTAB : SHT_PROGBITS))
+	{
+	  printf ("section %Zd's type differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_flags != (SHF_ALLOC | SHF_EXECINSTR))
+	  || (cnt == 2 && shdr->sh_flags != (SHF_ALLOC | SHF_WRITE))
+	  || (cnt == 3 && shdr->sh_flags != 0))
+	{
+	  printf ("section %Zd's flags differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_addr != 0)
+	{
+	  printf ("section %Zd's address differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_offset != ((sizeof (Elf32_Ehdr) + 31) & ~31))
+	{
+	  printf ("section %Zd's offset differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt != 3 && shdr->sh_size != 0)
+	  || (cnt == 3 && shdr->sh_size != 23))
+	{
+	  printf ("section %Zd's size differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_link != 0)
+	{
+	  printf ("section %Zd's link differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_info != 0)
+	{
+	  printf ("section %Zd's info differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_addralign != 32)
+	  || (cnt != 1 && shdr->sh_addralign != 1))
+	{
+	  printf ("section %Zd's addralign differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_entsize != 0)
+	{
+	  printf ("section %Zd's entsize differs\n", cnt);
+	  result = 1;
+	}
+    }
+
+ out_close2:
+  elf_end (elf);
+ out_close:
+  close (fd);
+ out:
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/asm-tst2.c b/src/tests/asm-tst2.c
new file mode 100644
index 0000000..41bf13a
--- /dev/null
+++ b/src/tests/asm-tst2.c
@@ -0,0 +1,278 @@
+/* Copyright (C) 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+
+static const char fname[] = "asm-tst2-out.o";
+
+
+static const GElf_Ehdr expected_ehdr =
+  {
+    .e_ident = { [EI_MAG0] = ELFMAG0,
+		 [EI_MAG1] = ELFMAG1,
+		 [EI_MAG2] = ELFMAG2,
+		 [EI_MAG3] = ELFMAG3,
+		 [EI_CLASS] = ELFCLASS32,
+		 [EI_DATA] = ELFDATA2LSB,
+		 [EI_VERSION] = EV_CURRENT },
+    .e_type = ET_REL,
+    .e_machine = EM_386,
+    .e_version = EV_CURRENT,
+    .e_shoff = 96,
+    .e_ehsize = sizeof (Elf32_Ehdr),
+    .e_shentsize = sizeof (Elf32_Shdr),
+    .e_shnum = 3,
+    .e_shstrndx = 2
+  };
+
+
+static const char *scnnames[3] =
+  {
+    [0] = "",
+    [1] = ".data",
+    [2] = ".shstrtab"
+  };
+
+
+int
+main (void)
+{
+  AsmCtx_t *ctx;
+  AsmScn_t *scn1;
+  AsmScn_t *scn2;
+  int result = 0;
+  int fd;
+  Elf *elf;
+  GElf_Ehdr ehdr_mem;
+  GElf_Ehdr *ehdr;
+  size_t cnt;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  /* Create two sections.  */
+  scn1 = asm_newscn (ctx, ".data", SHT_PROGBITS, SHF_ALLOC | SHF_WRITE);
+  scn2 = asm_newsubscn (scn1, 1);
+  if (scn1 == NULL || scn2 == NULL)
+    {
+      printf ("cannot create section in output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Special alignment for the .text section.  */
+  if (asm_align (scn1, 16) != 0)
+    {
+      printf ("cannot align .text section: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+
+  /* Add a few strings.  */
+  if (asm_addstrz (scn1, "one", 4) != 0)
+    {
+      printf ("cannot insert first string: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+  if (asm_addstrz (scn2, "three", 0) != 0)
+    {
+      printf ("cannot insert second string: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+  if (asm_addstrz (scn1, "two", 4) != 0)
+    {
+      printf ("cannot insert third string: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Check the file.  */
+  fd = open (fname, O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open generated file: %m\n");
+      result = 1;
+      goto out;
+    }
+
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close;
+    }
+  if (elf_kind (elf) != ELF_K_ELF)
+    {
+      puts ("not a valid ELF file");
+      result = 1;
+      goto out_close2;
+    }
+
+  ehdr = gelf_getehdr (elf, &ehdr_mem);
+  if (ehdr == NULL)
+    {
+      printf ("cannot get ELF header: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close2;
+    }
+
+  if (memcmp (ehdr, &expected_ehdr, sizeof (GElf_Ehdr)) != 0)
+    {
+      puts ("ELF header does not match");
+      result = 1;
+      goto out_close2;
+    }
+
+  for (cnt = 1; cnt < 3; ++cnt)
+    {
+      Elf_Scn *scn;
+      GElf_Shdr shdr_mem;
+      GElf_Shdr *shdr;
+
+      scn = elf_getscn (elf, cnt);
+      if (scn == NULL)
+	{
+	  printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      shdr = gelf_getshdr (scn, &shdr_mem);
+      if (shdr == NULL)
+	{
+	  printf ("cannot get section header for section %Zd: %s\n",
+		  cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      if (strcmp (elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+		  scnnames[cnt]) != 0)
+	{
+	  printf ("section %Zd's name differs: %s vs %s\n", cnt,
+		  elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+		  scnnames[cnt]);
+	  result = 1;
+	}
+
+      if (shdr->sh_type != (cnt == 2 ? SHT_STRTAB : SHT_PROGBITS))
+	{
+	  printf ("section %Zd's type differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_flags != (SHF_ALLOC | SHF_WRITE))
+	  || (cnt == 2 && shdr->sh_flags != 0))
+	{
+	  printf ("section %Zd's flags differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_addr != 0)
+	{
+	  printf ("section %Zd's address differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_offset != ((sizeof (Elf32_Ehdr) + 15) & ~15))
+	  || (cnt == 2
+	      && shdr->sh_offset != (((sizeof (Elf32_Ehdr) + 15) & ~15)
+				     + strlen ("one") + 1
+				     + strlen ("two") + 1
+				     + strlen ("three") + 1)))
+	{
+	  printf ("section %Zd's offset differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_size != (strlen ("one") + 1
+					 + strlen ("two") + 1
+					 + strlen ("three") + 1))
+	  || (cnt == 2 && shdr->sh_size != 17))
+	{
+	  printf ("section %Zd's size differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_link != 0)
+	{
+	  printf ("section %Zd's link differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_info != 0)
+	{
+	  printf ("section %Zd's info differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_addralign != 16)
+	  || (cnt != 1 && shdr->sh_addralign != 1))
+	{
+	  printf ("section %Zd's addralign differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_entsize != 0)
+	{
+	  printf ("section %Zd's entsize differs\n", cnt);
+	  result = 1;
+	}
+    }
+
+ out_close2:
+  elf_end (elf);
+ out_close:
+  close (fd);
+ out:
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/asm-tst3.c b/src/tests/asm-tst3.c
new file mode 100644
index 0000000..acec1a4
--- /dev/null
+++ b/src/tests/asm-tst3.c
@@ -0,0 +1,339 @@
+/* Copyright (C) 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+
+static const char fname[] = "asm-tst3-out.o";
+
+
+static const char *scnnames[5] =
+  {
+    [0] = "",
+    [1] = ".data",
+    [2] = ".strtab",
+    [3] = ".symtab",
+    [4] = ".shstrtab"
+  };
+
+
+static unsigned int scntypes[5] =
+  {
+    [0] = SHT_NULL,
+    [1] = SHT_PROGBITS,
+    [2] = SHT_STRTAB,
+    [3] = SHT_SYMTAB,
+    [4] = SHT_STRTAB
+  };
+
+
+int
+main (void)
+{
+  AsmCtx_t *ctx;
+  AsmScn_t *scn1;
+  AsmScn_t *scn2;
+  int result = 0;
+  int fd;
+  Elf *elf;
+  GElf_Ehdr ehdr_mem;
+  GElf_Ehdr *ehdr;
+  size_t cnt;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  /* Create two sections.  */
+  scn1 = asm_newscn (ctx, ".data", SHT_PROGBITS, SHF_ALLOC | SHF_WRITE);
+  scn2 = asm_newsubscn (scn1, 1);
+  if (scn1 == NULL || scn2 == NULL)
+    {
+      printf ("cannot create section in output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Special alignment for the .text section.  */
+  if (asm_align (scn1, 16) != 0)
+    {
+      printf ("cannot align .text section: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+
+  /* Add a few strings with names.  */
+  if (asm_newsym (scn1, "one", 4, STT_OBJECT, STB_GLOBAL) == NULL)
+    {
+      printf ("cannot create first name: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+  if (asm_addstrz (scn1, "one", 4) != 0)
+    {
+      printf ("cannot insert first string: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+  if (asm_newsym (scn2, "three", 6, STT_OBJECT, STB_WEAK) == NULL)
+    {
+      printf ("cannot create second name: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+  if (asm_addstrz (scn2, "three", 0) != 0)
+    {
+      printf ("cannot insert second string: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+  if (asm_newsym (scn1, "two", 4, STT_OBJECT, STB_LOCAL) == NULL)
+    {
+      printf ("cannot create third name: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+  if (asm_addstrz (scn1, "two", 4) != 0)
+    {
+      printf ("cannot insert third string: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Check the file.  */
+  fd = open (fname, O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open generated file: %m\n");
+      result = 1;
+      goto out;
+    }
+
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close;
+    }
+  if (elf_kind (elf) != ELF_K_ELF)
+    {
+      puts ("not a valid ELF file");
+      result = 1;
+      goto out_close2;
+    }
+
+  ehdr = gelf_getehdr (elf, &ehdr_mem);
+  if (ehdr == NULL)
+    {
+      printf ("cannot get ELF header: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close2;
+    }
+
+  for (cnt = 1; cnt < 5; ++cnt)
+    {
+      Elf_Scn *scn;
+      GElf_Shdr shdr_mem;
+      GElf_Shdr *shdr;
+
+      scn = elf_getscn (elf, cnt);
+      if (scn == NULL)
+	{
+	  printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      shdr = gelf_getshdr (scn, &shdr_mem);
+      if (shdr == NULL)
+	{
+	  printf ("cannot get section header for section %Zd: %s\n",
+		  cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      if (strcmp (elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+		  scnnames[cnt]) != 0)
+	{
+	  printf ("section %Zd's name differs: %s vs %s\n", cnt,
+		  elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+		  scnnames[cnt]);
+	  result = 1;
+	}
+
+      if (shdr->sh_type != scntypes[cnt])
+	{
+	  printf ("section %Zd's type differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_flags != (SHF_ALLOC | SHF_WRITE))
+	  || (cnt != 1 && shdr->sh_flags != 0))
+	{
+	  printf ("section %Zd's flags differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_addr != 0)
+	{
+	  printf ("section %Zd's address differs\n", cnt);
+	  result = 1;
+	}
+
+      if (cnt == 3)
+	{
+	  Elf_Data *data;
+
+	  if (shdr->sh_link != 2)
+	    {
+	      puts ("symbol table has incorrect link");
+	      result = 1;
+	    }
+
+	  data = elf_getdata (scn, NULL);
+	  if (data == NULL)
+	    {
+	      puts ("cannot get data of symbol table");
+	      result = 1;
+	    }
+	  else
+	    {
+	      size_t inner;
+
+	      for (inner = 1;
+		   inner < (shdr->sh_size
+			    / gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT));
+		   ++inner)
+		{
+		  GElf_Sym sym_mem;
+		  GElf_Sym *sym;
+
+		  sym = gelf_getsym (data, inner, &sym_mem);
+		  if (sym == NULL)
+		    {
+		      printf ("cannot get symbol %zu: %s\n",
+			      inner, elf_errmsg (-1));
+		      result = 1;
+		    }
+		  else
+		    {
+		      /* The order of the third and fourth entry depends
+			 on how the hash table is organized.  */
+		      static const char *names[4] =
+			{
+			  [0] = "",
+			  [1] = "two",
+			  [2] = "one",
+			  [3] = "three"
+			};
+		      static const int info[4] =
+			{
+			  [0] = GELF_ST_INFO (STB_LOCAL, STT_NOTYPE),
+			  [1] = GELF_ST_INFO (STB_LOCAL, STT_OBJECT),
+			  [2] = GELF_ST_INFO (STB_GLOBAL, STT_OBJECT),
+			  [3] = GELF_ST_INFO (STB_WEAK, STT_OBJECT)
+			};
+		      static const unsigned value[4] =
+			{
+			  [0] = 0,
+			  [1] = 4,
+			  [2] = 0,
+			  [3] = 8
+			};
+
+		      if (strcmp (names[inner],
+				  elf_strptr (elf, shdr->sh_link,
+					      sym->st_name)) != 0)
+			{
+			  printf ("symbol %zu has different name\n", inner);
+			  result = 1;
+			}
+
+		      if (sym->st_value != value[inner])
+			{
+			  printf ("symbol %zu has wrong value\n", inner);
+			  result = 1;
+			}
+
+		      if (sym->st_other != 0)
+			{
+			  printf ("symbol %zu has wrong other info\n", inner);
+			  result = 1;
+			}
+
+		      if (sym->st_shndx != 1)
+			{
+			  printf ("symbol %zu has wrong section reference\n",
+				  inner);
+			  result = 1;
+			}
+
+		      if (sym->st_info != info[inner])
+			{
+			  printf ("symbol %zu has wrong type or binding\n",
+				  inner);
+			  result = 1;
+			}
+
+		      if ((inner != 3 && sym->st_size != 4)
+			  || (inner == 3 && sym->st_size != 6))
+			{
+			  printf ("symbol %zu has wrong size\n", inner);
+			  result = 1;
+			}
+		    }
+		}
+	    }
+	}
+    }
+
+ out_close2:
+  elf_end (elf);
+ out_close:
+  close (fd);
+ out:
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/asm-tst4.c b/src/tests/asm-tst4.c
new file mode 100644
index 0000000..4788b79
--- /dev/null
+++ b/src/tests/asm-tst4.c
@@ -0,0 +1,104 @@
+/* Copyright (C) 2002-2012 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+
+static const char fname[] = "asm-tst4-out.o";
+
+
+int
+main (void)
+{
+  AsmCtx_t *ctx;
+  int result = 0;
+  size_t cnt;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  /* Create 66000 sections.  */
+  for (cnt = 0; cnt < 66000; ++cnt)
+    {
+      char buf[20];
+      AsmScn_t *scn;
+
+      /* Create a unique name.  */
+      snprintf (buf, sizeof (buf), ".data.%Zu", cnt);
+
+      /* Create the section.  */
+      scn = asm_newscn (ctx, buf, SHT_PROGBITS, SHF_ALLOC | SHF_WRITE);
+      if (scn == NULL)
+	{
+	  printf ("cannot create section \"%s\" in output file: %s\n",
+		  buf, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      /* Add some content.  */
+      if (asm_adduint32 (scn, cnt) != 0)
+	{
+	  printf ("cannot create content of section \"%s\": %s\n",
+		  buf, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  if (result == 0)
+    result = WEXITSTATUS (system ("../src/elflint -q asm-tst4-out.o"));
+
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/asm-tst5.c b/src/tests/asm-tst5.c
new file mode 100644
index 0000000..d97d4be
--- /dev/null
+++ b/src/tests/asm-tst5.c
@@ -0,0 +1,116 @@
+/* Copyright (C) 2002-2012 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#include "system.h"
+
+
+static const char fname[] = "asm-tst5-out.o";
+
+
+int
+main (void)
+{
+  AsmCtx_t *ctx;
+  int result = 0;
+  size_t cnt;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  /* Create 66000 sections.  */
+  for (cnt = 0; cnt < 66000; ++cnt)
+    {
+      char buf[20];
+      AsmScn_t *scn;
+
+      /* Create a unique name.  */
+      snprintf (buf, sizeof (buf), ".data.%Zu", cnt);
+
+      /* Create the section.  */
+      scn = asm_newscn (ctx, buf, SHT_PROGBITS, SHF_ALLOC | SHF_WRITE);
+      if (scn == NULL)
+	{
+	  printf ("cannot create section \"%s\" in output file: %s\n",
+		  buf, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      /* Add a name.  */
+      snprintf (buf, sizeof (buf), "%Zu", cnt);
+      if (asm_newsym (scn, buf, sizeof (uint32_t), STT_OBJECT,
+		      STB_GLOBAL) == NULL)
+	{
+	  printf ("cannot create symbol \"%s\": %s\n", buf, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      /* Add some content.  */
+      if (asm_adduint32 (scn, cnt) != 0)
+	{
+	  printf ("cannot create content of section \"%s\": %s\n",
+		  buf, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  if (result == 0)
+    result = WEXITSTATUS (system ("../src/elflint -q asm-tst5-out.o"));
+
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/asm-tst6.c b/src/tests/asm-tst6.c
new file mode 100644
index 0000000..35854d5
--- /dev/null
+++ b/src/tests/asm-tst6.c
@@ -0,0 +1,150 @@
+/* Copyright (C) 2002-2012 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 ELFUTILS_HEADER(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#include <system.h>
+
+
+static const char fname[] = "asm-tst6-out.o";
+
+
+int
+main (void)
+{
+  AsmCtx_t *ctx;
+  int result = 0;
+  size_t cnt;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  for (cnt = 0; cnt < 22000; ++cnt)
+    {
+      char buf[512];
+      AsmScnGrp_t *grp;
+      AsmScn_t *scn;
+      AsmSym_t *sym;
+
+      snprintf (buf, sizeof (buf), ".grp%Zu", cnt);
+      grp = asm_newscngrp (ctx, buf, NULL, 0);
+      if (grp == NULL)
+	{
+	  printf ("cannot section group %Zu: %s\n", cnt, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      scn = asm_newscn_ingrp (ctx, ".data", SHT_PROGBITS,
+			      SHF_ALLOC | SHF_WRITE, grp);
+      if (scn == NULL)
+	{
+	  printf ("cannot data section for group %Zu: %s\n",
+		  cnt, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      /* Add a name.  */
+      snprintf (buf, sizeof (buf), "%Zu", cnt);
+      sym = asm_newsym (scn, buf, sizeof (uint32_t), STT_OBJECT,
+			STB_GLOBAL);
+      if (sym == NULL)
+	{
+	  printf ("cannot create symbol \"%s\": %s\n", buf, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      /* Add some content.  */
+      if (asm_adduint32 (scn, cnt) != 0)
+	{
+	  printf ("cannot create content of section \"%s\": %s\n",
+		  buf, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      /* Now we have a symbol, use it as the signature.  */
+      if (asm_scngrp_newsignature (grp, sym) != 0)
+	{
+	  printf ("cannot set signature for section group %Zu: %s\n",
+		  cnt, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      /* Create a phony debug info section.  */
+      scn = asm_newscn_ingrp (ctx, ".stab", SHT_PROGBITS, 0, grp);
+      if (scn == NULL)
+	{
+	  printf ("cannot stab section for group %Zu: %s\n",
+		  cnt, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+
+      /* Add some content.  */
+      if (asm_adduint32 (scn, cnt) != 0)
+	{
+	  printf ("cannot create content of section \"%s\": %s\n",
+		  buf, asm_errmsg (-1));
+	  asm_abort (ctx);
+	  return 1;
+	}
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  if (result == 0)
+    result = WEXITSTATUS (system ("../src/elflint -q asm-tst6-out.o"));
+
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/asm-tst7.c b/src/tests/asm-tst7.c
new file mode 100644
index 0000000..a875eb4
--- /dev/null
+++ b/src/tests/asm-tst7.c
@@ -0,0 +1,181 @@
+/* Copyright (C) 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <inttypes.h>
+#include ELFUTILS_HEADER(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <unistd.h>
+
+
+static const char fname[] = "asm-tst7-out.o";
+
+
+int
+main (void)
+{
+  int result = 0;
+  size_t cnt;
+  AsmCtx_t *ctx;
+  Elf *elf;
+  int fd;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  if (asm_newcomsym (ctx, "commsym", 4, 16) == NULL)
+    {
+      printf ("cannot create common symbol: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Check the file.  */
+  fd = open (fname, O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open generated file: %m\n");
+      result = 1;
+      goto out;
+    }
+
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close;
+    }
+  if (elf_kind (elf) != ELF_K_ELF)
+    {
+      puts ("not a valid ELF file");
+      result = 1;
+      goto out_close2;
+    }
+
+  for (cnt = 1; 1; ++cnt)
+    {
+      Elf_Scn *scn;
+      GElf_Shdr shdr_mem;
+      GElf_Shdr *shdr;
+
+      scn = elf_getscn (elf, cnt);
+      if (scn == NULL)
+	{
+	  printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      shdr = gelf_getshdr (scn, &shdr_mem);
+      if (shdr == NULL)
+	{
+	  printf ("cannot get section header for section %Zd: %s\n",
+		  cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+      /* We are looking for the symbol table.  */
+      if (shdr->sh_type != SHT_SYMTAB)
+	continue;
+
+      for (cnt = 1; cnt< (shdr->sh_size
+			  / gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT));
+	   ++cnt)
+	{
+	  GElf_Sym sym_mem;
+	  GElf_Sym *sym;
+
+	  if (cnt > 1)
+	    {
+	      puts ("too many symbol");
+	      result = 1;
+	      break;
+	    }
+
+	  sym = gelf_getsym (elf_getdata (scn, NULL), cnt, &sym_mem);
+	  if (sym == NULL)
+	    {
+	      printf ("cannot get symbol %zu: %s\n", cnt, elf_errmsg (-1));
+	      result = 1;
+	    }
+	  else
+	    {
+	      if (sym->st_shndx != SHN_COMMON)
+		{
+		  printf ("expected common symbol, got section %u\n",
+			  (unsigned int) sym->st_shndx);
+		  result = 1;
+		}
+
+	      if (sym->st_value != 16)
+		{
+		  printf ("requested alignment 16, is %" PRIuMAX "\n",
+			  (uintmax_t) sym->st_value);
+		  result = 1;
+		}
+
+	      if (sym->st_size != 4)
+		{
+		  printf ("requested size 4, is %" PRIuMAX "\n",
+			  (uintmax_t) sym->st_value);
+		  result = 1;
+		}
+	    }
+	}
+
+      break;
+    }
+
+ out_close2:
+  elf_end (elf);
+ out_close:
+  close (fd);
+ out:
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/asm-tst8.c b/src/tests/asm-tst8.c
new file mode 100644
index 0000000..597c5cb
--- /dev/null
+++ b/src/tests/asm-tst8.c
@@ -0,0 +1,189 @@
+/* Copyright (C) 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <inttypes.h>
+#include ELFUTILS_HEADER(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <unistd.h>
+
+
+static const char fname[] = "asm-tst8-out.o";
+
+
+int
+main (void)
+{
+  int result = 0;
+  size_t cnt;
+  AsmCtx_t *ctx;
+  Elf *elf;
+  int fd;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  if (asm_newabssym (ctx, "tst8-out.s", 4, 0xfeedbeef, STT_FILE, STB_LOCAL)
+      == NULL)
+    {
+      printf ("cannot create absolute symbol: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Check the file.  */
+  fd = open (fname, O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open generated file: %m\n");
+      result = 1;
+      goto out;
+    }
+
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close;
+    }
+  if (elf_kind (elf) != ELF_K_ELF)
+    {
+      puts ("not a valid ELF file");
+      result = 1;
+      goto out_close2;
+    }
+
+  for (cnt = 1; 1; ++cnt)
+    {
+      Elf_Scn *scn;
+      GElf_Shdr shdr_mem;
+      GElf_Shdr *shdr;
+
+      scn = elf_getscn (elf, cnt);
+      if (scn == NULL)
+	{
+	  printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      shdr = gelf_getshdr (scn, &shdr_mem);
+      if (shdr == NULL)
+	{
+	  printf ("cannot get section header for section %Zd: %s\n",
+		  cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+      /* We are looking for the symbol table.  */
+      if (shdr->sh_type != SHT_SYMTAB)
+	continue;
+
+      for (cnt = 1; cnt< (shdr->sh_size
+			  / gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT));
+	   ++cnt)
+	{
+	  GElf_Sym sym_mem;
+	  GElf_Sym *sym;
+
+	  if (cnt > 1)
+	    {
+	      puts ("too many symbol");
+	      result = 1;
+	      break;
+	    }
+
+	  sym = gelf_getsym (elf_getdata (scn, NULL), cnt, &sym_mem);
+	  if (sym == NULL)
+	    {
+	      printf ("cannot get symbol %zu: %s\n", cnt, elf_errmsg (-1));
+	      result = 1;
+	    }
+	  else
+	    {
+	      if (sym->st_shndx != SHN_ABS)
+		{
+		  printf ("expected common symbol, got section %u\n",
+			  (unsigned int) sym->st_shndx);
+		  result = 1;
+		}
+
+	      if (sym->st_value != 0xfeedbeef)
+		{
+		  printf ("requested value 0xfeedbeef, is %#" PRIxMAX "\n",
+			  (uintmax_t) sym->st_value);
+		  result = 1;
+		}
+
+	      if (sym->st_size != 4)
+		{
+		  printf ("requested size 4, is %" PRIuMAX "\n",
+			  (uintmax_t) sym->st_value);
+		  result = 1;
+		}
+
+	      if (GELF_ST_TYPE (sym->st_info) != STT_FILE)
+		{
+		  printf ("requested type FILE, is %u\n",
+			  (unsigned int) GELF_ST_TYPE (sym->st_info));
+		  result = 1;
+		}
+	    }
+	}
+
+      break;
+    }
+
+ out_close2:
+  elf_end (elf);
+ out_close:
+  close (fd);
+ out:
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/asm-tst9.c b/src/tests/asm-tst9.c
new file mode 100644
index 0000000..b9fcdd4
--- /dev/null
+++ b/src/tests/asm-tst9.c
@@ -0,0 +1,335 @@
+/* Copyright (C) 2002-2010 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <inttypes.h>
+#include ELFUTILS_HEADER(asm)
+#include <libelf.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+
+static const char fname[] = "asm-tst9-out.o";
+
+
+static int32_t input[] =
+  {
+    0, 1, 129, 510, 2000, 33000, 0x7ffffff, 0x7fffffff
+  };
+#define ninput (sizeof (input) / sizeof (input[0]))
+
+
+static const GElf_Ehdr expected_ehdr =
+  {
+    .e_ident = { [EI_MAG0] = ELFMAG0,
+		 [EI_MAG1] = ELFMAG1,
+		 [EI_MAG2] = ELFMAG2,
+		 [EI_MAG3] = ELFMAG3,
+		 [EI_CLASS] = ELFCLASS32,
+		 [EI_DATA] = ELFDATA2LSB,
+		 [EI_VERSION] = EV_CURRENT },
+    .e_type = ET_REL,
+    .e_machine = EM_386,
+    .e_version = EV_CURRENT,
+    .e_shoff = 180,
+    .e_ehsize = sizeof (Elf32_Ehdr),
+    .e_shentsize = sizeof (Elf32_Shdr),
+    .e_shnum = 3,
+    .e_shstrndx = 2
+  };
+
+
+static const char *scnnames[3] =
+  {
+    [0] = "",
+    [1] = ".data",
+    [2] = ".shstrtab"
+  };
+
+
+static const char expecteddata[] =
+  {
+    0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x7f,
+    0x81, 0x01, 0x81, 0x01, 0xff, 0xfe, 0xff, 0xff, 0x0f, 0xff, 0x7e, 0xfe,
+    0x03, 0xfe, 0x03, 0x82, 0xfc, 0xff, 0xff, 0x0f, 0x82, 0x7c, 0xd0, 0x0f,
+    0xd0, 0x0f, 0xb0, 0xf0, 0xff, 0xff, 0x0f, 0xb0, 0x70, 0xe8, 0x81, 0x02,
+    0xe8, 0x81, 0x02, 0x98, 0xfe, 0xfd, 0xff, 0x0f, 0x98, 0xfe, 0x7d, 0xff,
+    0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x81, 0x80, 0x80, 0xc0, 0x0f,
+    0x81, 0x80, 0x80, 0x40, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,
+    0xff, 0x07, 0x81, 0x80, 0x80, 0x80, 0x08, 0x81, 0x80, 0x80, 0x80, 0x78
+  };
+
+
+int
+main (void)
+{
+  AsmCtx_t *ctx;
+  AsmScn_t *scn;
+  int result = 0;
+  int fd;
+  Elf *elf;
+  GElf_Ehdr ehdr_mem;
+  GElf_Ehdr *ehdr;
+  size_t cnt;
+
+  elf_version (EV_CURRENT);
+
+  Ebl *ebl = ebl_openbackend_machine (EM_386);
+  if (ebl == NULL)
+    {
+      puts ("cannot open backend library");
+      return 1;
+    }
+
+  ctx = asm_begin (fname, ebl, false);
+  if (ctx == NULL)
+    {
+      printf ("cannot create assembler context: %s\n", asm_errmsg (-1));
+      return 1;
+    }
+
+  /* Create two sections.  */
+  scn = asm_newscn (ctx, ".data", SHT_PROGBITS, SHF_ALLOC | SHF_WRITE);
+  if (scn == NULL)
+    {
+      printf ("cannot create section in output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Special alignment for the .text section.  */
+  if (asm_align (scn, 16) != 0)
+    {
+      printf ("cannot align .text section: %s\n", asm_errmsg (-1));
+      result = 1;
+    }
+
+  /* Add a few ULEB128 and SLEB128 numbers.  */
+  for (cnt = 0; cnt < ninput; ++cnt)
+    {
+      if (asm_adduleb128 (scn, input[cnt]) != 0)
+	{
+	  printf ("cannot insert uleb %" PRIu32 ": %s\n",
+		  (uint32_t) input[cnt], asm_errmsg (-1));
+	  result = 1;
+	}
+
+      if (asm_addsleb128 (scn, input[cnt]) != 0)
+	{
+	  printf ("cannot insert sleb %" PRId32 ": %s\n",
+		  input[cnt], asm_errmsg (-1));
+	  result = 1;
+	}
+
+      if (asm_adduleb128 (scn, -input[cnt]) != 0)
+	{
+	  printf ("cannot insert uleb %" PRIu32 ": %s\n",
+		  (uint32_t) -input[cnt], asm_errmsg (-1));
+	  result = 1;
+	}
+
+      if (asm_addsleb128 (scn, -input[cnt]) != 0)
+	{
+	  printf ("cannot insert sleb %" PRId32 ": %s\n",
+		  -input[cnt], asm_errmsg (-1));
+	  result = 1;
+	}
+    }
+
+  /* Create the output file.  */
+  if (asm_end (ctx) != 0)
+    {
+      printf ("cannot create output file: %s\n", asm_errmsg (-1));
+      asm_abort (ctx);
+      return 1;
+    }
+
+  /* Check the file.  */
+  fd = open (fname, O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open generated file: %m\n");
+      result = 1;
+      goto out;
+    }
+
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close;
+    }
+  if (elf_kind (elf) != ELF_K_ELF)
+    {
+      puts ("not a valid ELF file");
+      result = 1;
+      goto out_close2;
+    }
+
+  ehdr = gelf_getehdr (elf, &ehdr_mem);
+  if (ehdr == NULL)
+    {
+      printf ("cannot get ELF header: %s\n", elf_errmsg (-1));
+      result = 1;
+      goto out_close2;
+    }
+
+  if (memcmp (ehdr, &expected_ehdr, sizeof (GElf_Ehdr)) != 0)
+    {
+      puts ("ELF header does not match");
+      result = 1;
+      goto out_close2;
+    }
+
+  for (cnt = 1; cnt < 3; ++cnt)
+    {
+      Elf_Scn *escn;
+      GElf_Shdr shdr_mem;
+      GElf_Shdr *shdr;
+
+      escn = elf_getscn (elf, cnt);
+      if (escn == NULL)
+	{
+	  printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      shdr = gelf_getshdr (escn, &shdr_mem);
+      if (shdr == NULL)
+	{
+	  printf ("cannot get section header for section %Zd: %s\n",
+		  cnt, elf_errmsg (-1));
+	  result = 1;
+	  continue;
+	}
+
+      if (strcmp (elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+		  scnnames[cnt]) != 0)
+	{
+	  printf ("section %Zd's name differs: %s vs %s\n", cnt,
+		  elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+		  scnnames[cnt]);
+	  result = 1;
+	}
+
+      if (shdr->sh_type != (cnt == 2 ? SHT_STRTAB : SHT_PROGBITS))
+	{
+	  printf ("section %Zd's type differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_flags != (SHF_ALLOC | SHF_WRITE))
+	  || (cnt == 2 && shdr->sh_flags != 0))
+	{
+	  printf ("section %Zd's flags differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_addr != 0)
+	{
+	  printf ("section %Zd's address differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_offset != ((sizeof (Elf32_Ehdr) + 15) & ~15))
+	  || (cnt == 2
+	      && shdr->sh_offset != (((sizeof (Elf32_Ehdr) + 15) & ~15)
+				     + sizeof (expecteddata))))
+	{
+	  printf ("section %Zd's offset differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_size != sizeof (expecteddata))
+	  || (cnt == 2 && shdr->sh_size != 17))
+	{
+	  printf ("section %Zd's size differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_link != 0)
+	{
+	  printf ("section %Zd's link differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_info != 0)
+	{
+	  printf ("section %Zd's info differs\n", cnt);
+	  result = 1;
+	}
+
+      if ((cnt == 1 && shdr->sh_addralign != 16)
+	  || (cnt != 1 && shdr->sh_addralign != 1))
+	{
+	  printf ("section %Zd's addralign differs\n", cnt);
+	  result = 1;
+	}
+
+      if (shdr->sh_entsize != 0)
+	{
+	  printf ("section %Zd's entsize differs\n", cnt);
+	  result = 1;
+	}
+
+      if (cnt == 1)
+	{
+	  Elf_Data *data = elf_getdata (escn, NULL);
+
+	  if (data == NULL)
+	    {
+	      printf ("cannot get data of section %Zd\n", cnt);
+	      result = 1;
+	    }
+	  else
+	    {
+	      if (data->d_size != sizeof (expecteddata))
+		{
+		  printf ("data block size of section %Zd wrong: got %Zd, "
+			  "expected 96\n", cnt, data->d_size);
+		  result = 1;
+		}
+
+	      if (memcmp (data->d_buf, expecteddata, sizeof (expecteddata))
+		  != 0)
+		{
+		  printf ("data block content of section %Zd wrong\n", cnt);
+		  result = 1;
+		}
+	    }
+	}
+    }
+
+ out_close2:
+  elf_end (elf);
+ out_close:
+  close (fd);
+ out:
+  /* We don't need the file anymore.  */
+  unlink (fname);
+
+  ebl_closebackend (ebl);
+
+  return result;
+}
diff --git a/src/tests/backtrace-child.c b/src/tests/backtrace-child.c
new file mode 100644
index 0000000..788801c
--- /dev/null
+++ b/src/tests/backtrace-child.c
@@ -0,0 +1,240 @@
+/* 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__ */
+
diff --git a/src/tests/backtrace-data.c b/src/tests/backtrace-data.c
new file mode 100644
index 0000000..01c1c00
--- /dev/null
+++ b/src/tests/backtrace-data.c
@@ -0,0 +1,328 @@
+/* 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 */
diff --git a/src/tests/backtrace-dwarf.c b/src/tests/backtrace-dwarf.c
new file mode 100644
index 0000000..87d088a
--- /dev/null
+++ b/src/tests/backtrace-dwarf.c
@@ -0,0 +1,165 @@
+/* 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__ */
+
diff --git a/src/tests/backtrace-subr.sh b/src/tests/backtrace-subr.sh
new file mode 100644
index 0000000..f04721c
--- /dev/null
+++ b/src/tests/backtrace-subr.sh
@@ -0,0 +1,152 @@
+# 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 egrep '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
+}
diff --git a/src/tests/backtrace.aarch64.core.bz2 b/src/tests/backtrace.aarch64.core.bz2
new file mode 100644
index 0000000..3082a5a
--- /dev/null
+++ b/src/tests/backtrace.aarch64.core.bz2
Binary files differ
diff --git a/src/tests/backtrace.aarch64.exec.bz2 b/src/tests/backtrace.aarch64.exec.bz2
new file mode 100755
index 0000000..66216b5
--- /dev/null
+++ b/src/tests/backtrace.aarch64.exec.bz2
Binary files differ
diff --git a/src/tests/backtrace.c b/src/tests/backtrace.c
new file mode 100644
index 0000000..331ba0f
--- /dev/null
+++ b/src/tests/backtrace.c
@@ -0,0 +1,479 @@
+/* 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__ */
+
diff --git a/src/tests/backtrace.i386.core.bz2 b/src/tests/backtrace.i386.core.bz2
new file mode 100644
index 0000000..e120d9b
--- /dev/null
+++ b/src/tests/backtrace.i386.core.bz2
Binary files differ
diff --git a/src/tests/backtrace.i386.exec.bz2 b/src/tests/backtrace.i386.exec.bz2
new file mode 100644
index 0000000..1b0f001
--- /dev/null
+++ b/src/tests/backtrace.i386.exec.bz2
Binary files differ
diff --git a/src/tests/backtrace.ppc.core.bz2 b/src/tests/backtrace.ppc.core.bz2
new file mode 100644
index 0000000..f20cd9f
--- /dev/null
+++ b/src/tests/backtrace.ppc.core.bz2
Binary files differ
diff --git a/src/tests/backtrace.ppc.exec.bz2 b/src/tests/backtrace.ppc.exec.bz2
new file mode 100644
index 0000000..057c25a
--- /dev/null
+++ b/src/tests/backtrace.ppc.exec.bz2
Binary files differ
diff --git a/src/tests/backtrace.s390.core.bz2 b/src/tests/backtrace.s390.core.bz2
new file mode 100644
index 0000000..db34694
--- /dev/null
+++ b/src/tests/backtrace.s390.core.bz2
Binary files differ
diff --git a/src/tests/backtrace.s390.exec.bz2 b/src/tests/backtrace.s390.exec.bz2
new file mode 100644
index 0000000..4c1b4ae
--- /dev/null
+++ b/src/tests/backtrace.s390.exec.bz2
Binary files differ
diff --git a/src/tests/backtrace.s390x.core.bz2 b/src/tests/backtrace.s390x.core.bz2
new file mode 100644
index 0000000..61c23ec
--- /dev/null
+++ b/src/tests/backtrace.s390x.core.bz2
Binary files differ
diff --git a/src/tests/backtrace.s390x.exec.bz2 b/src/tests/backtrace.s390x.exec.bz2
new file mode 100644
index 0000000..8009239
--- /dev/null
+++ b/src/tests/backtrace.s390x.exec.bz2
Binary files differ
diff --git a/src/tests/backtrace.x86_64.core.bz2 b/src/tests/backtrace.x86_64.core.bz2
new file mode 100644
index 0000000..1f34e20
--- /dev/null
+++ b/src/tests/backtrace.x86_64.core.bz2
Binary files differ
diff --git a/src/tests/backtrace.x86_64.exec.bz2 b/src/tests/backtrace.x86_64.exec.bz2
new file mode 100644
index 0000000..70a151b
--- /dev/null
+++ b/src/tests/backtrace.x86_64.exec.bz2
Binary files differ
diff --git a/src/tests/buildid.c b/src/tests/buildid.c
new file mode 100644
index 0000000..87c1877
--- /dev/null
+++ b/src/tests/buildid.c
@@ -0,0 +1,81 @@
+/* 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;
+}
diff --git a/src/tests/cleanup-13.c b/src/tests/cleanup-13.c
new file mode 100644
index 0000000..3919b91
--- /dev/null
+++ b/src/tests/cleanup-13.c
@@ -0,0 +1,316 @@
+// 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 ();
+}
diff --git a/src/tests/coverage.sh b/src/tests/coverage.sh
new file mode 100755
index 0000000..5cc353c
--- /dev/null
+++ b/src/tests/coverage.sh
@@ -0,0 +1,40 @@
+#! /bin/bash
+
+if [ "x$1" = "x-v" ]; then
+  verbose=yes
+else
+  verbose=no
+fi
+
+cd ..
+
+for d in lib libasm libdw libdwfl libebl libelf backends src; do
+  tmp=$d-data
+  cd $d
+  unused=0
+  unused_files=
+  for f in *.gcno; do
+    base="$(basename $f .gcno)"
+    fc="$base.c"
+    gcda="$base.gcda"
+    if [ -f "$gcda" ]; then
+      gcov -n -a "$fc" |
+      gawk "/$d.$fc/ { getline; co=gensub(/.*:(.*)% .*/, \"\\\\1\", \"g\"); co=co+0.0; li=\$4+0; printf \"%-35s  %6.2f %5d\n\", \"$d/$fc\", co, li } " >> $tmp
+    else
+      unused=$(($unused + 1))
+      unused_files="$unused_files $fc"
+    fi
+  done
+  if [ -f $tmp ]; then
+    gawk "{ copct=\$2; co=(\$3*copct)/100; toco+=(co+0); toli += (\$3+0); } END { printf \"%-12s %6.2f%% covered       unused files: %3d\n\", \"$d\", (toco*100)/toli, \"$unused\" }" $tmp
+    rm -f $tmp
+  else
+    printf "%-12s   0.00%% covered       unused files: %3d\n" "$d" $unused
+  fi
+  if [ $verbose = yes ]; then
+    for f in $unused_files; do
+      printf '%-42s%s\n' '' $f
+    done
+  fi
+  cd ..
+done
diff --git a/src/tests/debugaltlink.c b/src/tests/debugaltlink.c
new file mode 100644
index 0000000..6d97d50
--- /dev/null
+++ b/src/tests/debugaltlink.c
@@ -0,0 +1,83 @@
+/* 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;
+}
diff --git a/src/tests/debuglink.c b/src/tests/debuglink.c
new file mode 100644
index 0000000..935d102
--- /dev/null
+++ b/src/tests/debuglink.c
@@ -0,0 +1,64 @@
+/* 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;
+}
diff --git a/src/tests/deleted-lib.c b/src/tests/deleted-lib.c
new file mode 100644
index 0000000..1ff411b
--- /dev/null
+++ b/src/tests/deleted-lib.c
@@ -0,0 +1,27 @@
+/* Test program for opening already deleted running binaries.
+   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 <unistd.h>
+
+void
+libfunc (void)
+{
+  sleep (60000);
+  /* Avoid tail call optimization for the sleep call.  */
+  asm volatile ("");
+}
diff --git a/src/tests/deleted.c b/src/tests/deleted.c
new file mode 100644
index 0000000..32a310b
--- /dev/null
+++ b/src/tests/deleted.c
@@ -0,0 +1,50 @@
+/* Test program for opening already deleted running binaries.
+   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 <locale.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <assert.h>
+#include <stdio.h>
+#include <error.h>
+#include <errno.h>
+
+extern void libfunc (void);
+
+int
+main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
+{
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  pid_t pid = fork ();
+  assert (pid != -1);
+  if (pid == 0)
+    {
+      int err = close (0);
+      assert (!err);
+      err = close (1);
+      assert (!err);
+      err = close (2);
+      assert (!err);
+      libfunc ();
+      abort ();
+    }
+  printf ("%d\n", pid);
+  return EXIT_SUCCESS;
+}
diff --git a/src/tests/dwarf-getmacros.c b/src/tests/dwarf-getmacros.c
new file mode 100644
index 0000000..92e093c
--- /dev/null
+++ b/src/tests/dwarf-getmacros.c
@@ -0,0 +1,144 @@
+/* Test program for dwarf_getmacros and related
+   Copyright (C) 2009, 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 ELFUTILS_HEADER(dw)
+#include <dwarf.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <inttypes.h>
+
+static void include (Dwarf *dbg, Dwarf_Off macoff, ptrdiff_t token);
+
+static int
+mac (Dwarf_Macro *macro, void *dbg)
+{
+  static int level = 0;
+
+  unsigned int opcode;
+  dwarf_macro_opcode (macro, &opcode);
+  switch (opcode)
+    {
+    case DW_MACRO_GNU_transparent_include:
+      {
+	Dwarf_Attribute at;
+	int r = dwarf_macro_param (macro, 0, &at);
+	assert (r == 0);
+
+	Dwarf_Word w;
+	r = dwarf_formudata (&at, &w);
+	assert (r == 0);
+
+	printf ("%*sinclude %#" PRIx64 "\n", level, "", w);
+	++level;
+	include (dbg, w, DWARF_GETMACROS_START);
+	--level;
+	printf ("%*s/include\n", level, "");
+	break;
+      }
+
+    case DW_MACRO_GNU_start_file:
+      {
+	Dwarf_Files *files;
+	size_t nfiles;
+	if (dwarf_macro_getsrcfiles (dbg, macro, &files, &nfiles) < 0)
+	  printf ("dwarf_macro_getsrcfiles: %s\n",
+		  dwarf_errmsg (dwarf_errno ()));
+
+	Dwarf_Word w = 0;
+	dwarf_macro_param2 (macro, &w, NULL);
+
+	const char *name = dwarf_filesrc (files, (size_t) w, NULL, NULL);
+	printf ("%*sfile %s\n", level, "", name);
+	++level;
+	break;
+      }
+
+    case DW_MACRO_GNU_end_file:
+      {
+	--level;
+	printf ("%*s/file\n", level, "");
+	break;
+      }
+
+    case DW_MACINFO_define:
+    case DW_MACRO_GNU_define_indirect:
+      {
+	const char *value;
+	dwarf_macro_param2 (macro, NULL, &value);
+	printf ("%*s%s\n", level, "", value);
+	break;
+      }
+
+    case DW_MACINFO_undef:
+    case DW_MACRO_GNU_undef_indirect:
+      break;
+
+    default:
+      {
+	size_t paramcnt;
+	dwarf_macro_getparamcnt (macro, &paramcnt);
+	printf ("%*sopcode %u with %zd arguments\n",
+		level, "", opcode, paramcnt);
+	break;
+      }
+    }
+
+  return DWARF_CB_ABORT;
+}
+
+static void
+include (Dwarf *dbg, Dwarf_Off macoff, ptrdiff_t token)
+{
+  while ((token = dwarf_getmacros_off (dbg, macoff, mac, dbg, token)) != 0)
+    if (token == -1)
+      {
+	puts (dwarf_errmsg (dwarf_errno ()));
+	break;
+      }
+}
+
+int
+main (int argc, char *argv[])
+{
+  assert (argc >= 3);
+  const char *name = argv[1];
+  ptrdiff_t cuoff = strtol (argv[2], NULL, 0);
+  bool new_style = argc > 3;
+
+  int fd = open (name, O_RDONLY);
+  Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
+
+  Dwarf_Die cudie_mem, *cudie = dwarf_offdie (dbg, cuoff, &cudie_mem);
+
+  for (ptrdiff_t off = new_style ? DWARF_GETMACROS_START : 0;
+       (off = dwarf_getmacros (cudie, mac, dbg, off)); )
+    if (off == -1)
+      {
+	puts (dwarf_errmsg (dwarf_errno ()));
+	break;
+      }
+
+  dwarf_end (dbg);
+
+  return 0;
+}
diff --git a/src/tests/dwarf-getstring.c b/src/tests/dwarf-getstring.c
new file mode 100644
index 0000000..b70c2a7
--- /dev/null
+++ b/src/tests/dwarf-getstring.c
@@ -0,0 +1,77 @@
+/* Copyright (C) 2011 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Marek Polacek <mpolacek@redhat.com>, 2011.
+
+   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 ELFUTILS_HEADER(dwfl)
+#include <assert.h>
+#include <dwarf.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+
+
+int
+main (int argc, char *argv[])
+{
+  int cnt;
+
+  for (cnt = 1; cnt < argc; ++cnt)
+    {
+      Dwarf_Off offset = 0;
+      size_t len;
+
+      int fd = open64 (argv[cnt], O_RDONLY);
+      if (fd == -1)
+	{
+	  printf ("cannot open '%s': %m\n", argv[cnt]);
+	  return 1;
+	}
+
+      Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
+      if (dbg == NULL)
+	{
+	  printf ("%s not usable: %s\n", argv[cnt], dwarf_errmsg (-1));
+	  close (fd);
+	  return 1;
+	}
+
+      /* Try to use NULL Dwarf object.  */
+      const char *str = dwarf_getstring (NULL, offset, &len);
+      assert (str == NULL);
+
+      /* Use insane offset.  */
+      str = dwarf_getstring (dbg, ~0UL, &len);
+      assert (str == NULL);
+
+      /* Now do some real work.  */
+      for (int i = 0; i < 100; ++i)
+	{
+	  str = dwarf_getstring (dbg, offset, &len);
+	  puts (str);
+
+	  /* Advance.  */
+	  offset += len + 1;
+	}
+
+      close (fd);
+    }
+
+  return 0;
+}
diff --git a/src/tests/dwfl-addr-sect.c b/src/tests/dwfl-addr-sect.c
new file mode 100644
index 0000000..21e470a
--- /dev/null
+++ b/src/tests/dwfl-addr-sect.c
@@ -0,0 +1,80 @@
+/* Test program for libdwfl ... foo
+   Copyright (C) 2007 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 <sys/types.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <stdlib.h>
+#include <string.h>
+#include <error.h>
+#include <locale.h>
+#include <argp.h>
+#include ELFUTILS_HEADER(dwfl)
+#include <dwarf.h>
+
+static int
+handle_address (Dwfl *dwfl, Dwarf_Addr address)
+{
+  Dwfl_Module *mod = dwfl_addrmodule (dwfl, address);
+  Dwarf_Addr adjusted = address;
+  Dwarf_Addr bias;
+  Elf_Scn *scn = dwfl_module_address_section (mod, &adjusted, &bias);
+  if (scn == NULL)
+    {
+      error (0, 0, "%#" PRIx64 ": dwfl_module_address_section: %s",
+	     address, dwfl_errmsg (-1));
+      return 1;
+    }
+  printf ("address %#" PRIx64 " => module \"%s\" section %zu + %#" PRIx64 "\n",
+	  address,
+	  dwfl_module_info (mod, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	  elf_ndxscn (scn), adjusted);
+  return 0;
+}
+
+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, "");
+
+  int remaining;
+  Dwfl *dwfl = NULL;
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining, &dwfl);
+  assert (dwfl != NULL);
+
+  int result = 0;
+  for (; remaining < argc; ++remaining)
+    {
+      char *endp;
+      uintmax_t addr = strtoumax (argv[remaining], &endp, 0);
+      if (endp != argv[remaining])
+	result |= handle_address (dwfl, addr);
+      else
+	result = 1;
+    }
+
+  dwfl_end (dwfl);
+
+  return result;
+}
diff --git a/src/tests/dwfl-bug-addr-overflow.c b/src/tests/dwfl-bug-addr-overflow.c
new file mode 100644
index 0000000..aa8030e
--- /dev/null
+++ b/src/tests/dwfl-bug-addr-overflow.c
@@ -0,0 +1,73 @@
+/* Test program for libdwfl basic module tracking, relocation.
+   Copyright (C) 2007 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 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 (void)
+{
+  /* We use no threads here which can interfere with handling a stream.  */
+  (void) __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  Dwfl *dwfl = dwfl_begin (&offline_callbacks);
+  assert (dwfl != NULL);
+
+  Dwfl_Module *high = dwfl_report_module (dwfl, "high",
+					  UINT64_C (0xffffffff00010000),
+					  UINT64_C (0xffffffff00020000));
+  assert (high);
+  Dwfl_Module *low = dwfl_report_module (dwfl, "low",
+					 UINT64_C (0x00010000),
+					 UINT64_C (0x00020000));
+  assert (low);
+  Dwfl_Module *middle = dwfl_report_module (dwfl, "middle",
+					    UINT64_C (0xffff00010000),
+					    UINT64_C (0xffff00020000));
+  assert (middle);
+
+  int ret = dwfl_report_end (dwfl, NULL, NULL);
+  assert (ret == 0);
+
+  Dwfl_Module *mod = dwfl_addrmodule (dwfl, UINT64_C (0xffffffff00010123));
+  assert (mod == high);
+  mod = dwfl_addrmodule (dwfl, UINT64_C (0x00010123));
+  assert (mod == low);
+  mod = dwfl_addrmodule (dwfl, UINT64_C (0xffff00010123));
+  assert (mod == middle);
+
+  dwfl_end (dwfl);
+
+  return 0;
+}
diff --git a/src/tests/dwfl-bug-fd-leak.c b/src/tests/dwfl-bug-fd-leak.c
new file mode 100644
index 0000000..170a61a
--- /dev/null
+++ b/src/tests/dwfl-bug-fd-leak.c
@@ -0,0 +1,102 @@
+/* Test program for libdwfl file decriptors leakage.
+   Copyright (C) 2007, 2008 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 ELFUTILS_HEADER(dwfl)
+
+
+static Dwfl *
+elfutils_open (pid_t pid, Dwarf_Addr address)
+{
+  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));
+
+  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));
+
+  Dwarf_Addr bias;
+  Dwarf *dbg = dwfl_addrdwarf (dwfl, address, &bias);
+  if (dbg != NULL)
+    {
+      Elf *elf = dwarf_getelf (dbg);
+      if (elf == NULL)
+	error (2, 0, "dwarf_getelf: %s", dwarf_errmsg (-1));
+    }
+  else
+    {
+      Elf *elf = dwfl_module_getelf (dwfl_addrmodule (dwfl, address), &bias);
+      if (elf == NULL)
+	error (2, 0, "dwfl_module_getelf: %s", dwfl_errmsg (-1));
+    }
+
+  return dwfl;
+}
+
+static void
+elfutils_close (Dwfl *dwfl)
+{
+  dwfl_end (dwfl);
+}
+
+int
+main (void)
+{
+  /* We use no threads here which can interfere with handling a stream.  */
+  (void) __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  struct rlimit fd_limit = { .rlim_cur = 32, .rlim_max = 32 };
+  if (setrlimit (RLIMIT_NOFILE, &fd_limit) < 0)
+    error (2, errno, "setrlimit");
+
+  for (int i = 0; i < 5000; ++i)
+    {
+      Dwfl *dwfl = elfutils_open (getpid (), (Dwarf_Addr) (uintptr_t) &main);
+      elfutils_close (dwfl);
+    }
+
+  return 0;
+}
diff --git a/src/tests/dwfl-bug-getmodules.c b/src/tests/dwfl-bug-getmodules.c
new file mode 100644
index 0000000..1ee989f
--- /dev/null
+++ b/src/tests/dwfl-bug-getmodules.c
@@ -0,0 +1,66 @@
+/* Test program for dwfl_getmodules bug.
+   Copyright (C) 2008 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 ELFUTILS_HEADER(dwfl)
+
+#include <error.h>
+
+static const Dwfl_Callbacks callbacks =
+  {
+    .find_elf = dwfl_linux_proc_find_elf,
+    .find_debuginfo = dwfl_standard_find_debuginfo,
+  };
+
+static int
+iterate (Dwfl_Module *mod __attribute__ ((unused)),
+	 void **userdata __attribute__ ((unused)),
+	 const char *name __attribute__ ((unused)),
+	 Dwarf_Addr base, void *arg)
+{
+  if (base != 0x2000)
+    return DWARF_CB_OK;
+
+  if (dwfl_addrmodule (arg, 0x2100) == NULL)
+    error (1, 0, "dwfl_addrmodule: %s", dwfl_errmsg (-1));
+
+  return DWARF_CB_ABORT;
+}
+
+int
+main (void)
+{
+  Dwfl *dwfl = dwfl_begin (&callbacks);
+
+  dwfl_report_module (dwfl, "m1", 0, 0x1000);
+  dwfl_report_module (dwfl, "m2", 0x2000, 0x3000);
+  dwfl_report_module (dwfl, "m3", 0x4000, 0x5000);
+
+  dwfl_report_end (dwfl, NULL, NULL);
+
+  ptrdiff_t offset = dwfl_getmodules (dwfl, &iterate, dwfl, 0);
+  if (offset <= 0)
+    error (1, 0, "dwfl_getmodules: %s", dwfl_errmsg (-1));
+
+  offset = dwfl_getmodules (dwfl, &iterate, NULL, offset);
+  if (offset != 0)
+    error (1, 0, "dwfl_getmodules (%d): %s", (int) offset, dwfl_errmsg (-1));
+
+  dwfl_end (dwfl);
+
+  return 0;
+}
diff --git a/src/tests/dwfl-bug-report.c b/src/tests/dwfl-bug-report.c
new file mode 100644
index 0000000..80ff806
--- /dev/null
+++ b/src/tests/dwfl-bug-report.c
@@ -0,0 +1,48 @@
+/* Test program for dwfl_report_end bug.
+   Copyright (C) 2007 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 ELFUTILS_HEADER(dwfl)
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+
+static const Dwfl_Callbacks callbacks =
+  {
+    .find_elf = dwfl_linux_proc_find_elf,
+    .find_debuginfo = dwfl_standard_find_debuginfo,
+  };
+
+int
+main (void)
+{
+  Dwfl *dwfl = dwfl_begin (&callbacks);
+
+  for (int i = 0; i < 5; ++i)
+    {
+      dwfl_report_begin (dwfl);
+      dwfl_report_module (dwfl, "module1", 0, 10);
+      dwfl_report_end (dwfl, NULL, NULL);
+    }
+
+  dwfl_end (dwfl);
+
+  return 0;
+}
diff --git a/src/tests/dwfl-report-elf-align.c b/src/tests/dwfl-report-elf-align.c
new file mode 100644
index 0000000..a4e97d3
--- /dev/null
+++ b/src/tests/dwfl-report-elf-align.c
@@ -0,0 +1,72 @@
+/* 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;
+}
diff --git a/src/tests/dwfllines.c b/src/tests/dwfllines.c
new file mode 100644
index 0000000..90379dd
--- /dev/null
+++ b/src/tests/dwfllines.c
@@ -0,0 +1,164 @@
+/* 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;
+}
diff --git a/src/tests/dwflmodtest.c b/src/tests/dwflmodtest.c
new file mode 100644
index 0000000..0027f96
--- /dev/null
+++ b/src/tests/dwflmodtest.c
@@ -0,0 +1,287 @@
+/* Test program for libdwfl basic module tracking, relocation.
+   Copyright (C) 2005, 2007 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 <sys/types.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <stdlib.h>
+#include <string.h>
+#include <error.h>
+#include <locale.h>
+#include <argp.h>
+#include ELFUTILS_HEADER(dwfl)
+#include <dwarf.h>
+
+static bool show_inlines;
+
+struct info
+{
+  Dwarf_Die *cudie;
+  Dwarf_Addr dwbias;
+};
+
+static int
+print_instance (Dwarf_Die *instance, void *arg)
+{
+  const struct info *info = arg;
+
+  printf ("    inlined");
+
+  Dwarf_Files *files;
+  if (dwarf_getsrcfiles (info->cudie, &files, NULL) == 0)
+    {
+      Dwarf_Attribute attr_mem;
+      Dwarf_Word val;
+      if (dwarf_formudata (dwarf_attr (instance, DW_AT_call_file,
+				       &attr_mem), &val) == 0)
+	{
+	  const char *file = dwarf_filesrc (files, val, NULL, NULL);
+	  int lineno = 0, colno = 0;
+	  if (dwarf_formudata (dwarf_attr (instance, DW_AT_call_line,
+					   &attr_mem), &val) == 0)
+	    lineno = val;
+	  if (dwarf_formudata (dwarf_attr (instance, DW_AT_call_column,
+					   &attr_mem), &val) == 0)
+	    colno = val;
+	  if (lineno == 0)
+	    {
+	      if (file != NULL)
+		printf (" from %s", file);
+	    }
+	  else if (colno == 0)
+	    printf (" at %s:%u", file, lineno);
+	  else
+	    printf (" at %s:%u:%u", file, lineno, colno);
+	}
+    }
+
+  Dwarf_Addr lo = -1, hi = -1, entry = -1;
+  if (dwarf_lowpc (instance, &lo) == 0)
+    lo += info->dwbias;
+  else
+    printf (" (lowpc => %s)", dwarf_errmsg (-1));
+  if (dwarf_highpc (instance, &hi) == 0)
+    hi += info->dwbias;
+  else
+    printf (" (highpc => %s)", dwarf_errmsg (-1));
+
+  Dwarf_Attribute attr_mem;
+  Dwarf_Attribute *attr = dwarf_attr (instance, DW_AT_entry_pc, &attr_mem);
+  if (attr != NULL)
+    {
+      if (dwarf_formaddr (attr, &entry) == 0)
+	entry += info->dwbias;
+      else
+	printf (" (entrypc => %s)", dwarf_errmsg (-1));
+    }
+
+  if (lo != (Dwarf_Addr) -1 || hi != (Dwarf_Addr) -1)
+    printf (" %#" PRIx64 "..%#" PRIx64, lo, hi);
+  if (entry != (Dwarf_Addr) -1)
+    printf (" => %#" PRIx64 "\n", entry);
+  else
+    puts ("");
+
+  return DWARF_CB_OK;
+}
+
+static void
+print_inline (Dwarf_Die *func, void *arg)
+{
+  if (dwarf_func_inline_instances (func, &print_instance, arg) != 0)
+    printf ("  error finding instances: %s\n", dwarf_errmsg (-1));
+}
+
+static int
+print_func (Dwarf_Die *func, void *arg)
+{
+  const struct info *info = arg;
+
+  const char *file = dwarf_decl_file (func);
+  int line = -1;
+  dwarf_decl_line (func, &line);
+  const char *fct = dwarf_diename (func);
+
+  printf ("  %s:%d: %s:", file, line, fct);
+
+  if (dwarf_func_inline (func))
+    {
+      puts (" inline function");
+      if (show_inlines)
+	print_inline (func, arg);
+    }
+  else
+    {
+      Dwarf_Addr lo = -1, hi = -1, entry = -1;
+      if (dwarf_lowpc (func, &lo) == 0)
+	lo += info->dwbias;
+      else
+	printf (" (lowpc => %s)", dwarf_errmsg (-1));
+      if (dwarf_highpc (func, &hi) == 0)
+	hi += info->dwbias;
+      else
+	printf (" (highpc => %s)", dwarf_errmsg (-1));
+      if (dwarf_entrypc (func, &entry) == 0)
+	entry += info->dwbias;
+      else
+	printf (" (entrypc => %s)", dwarf_errmsg (-1));
+
+      if (lo != (Dwarf_Addr) -1 || hi != (Dwarf_Addr) -1
+	  || entry != (Dwarf_Addr) -1)
+	printf (" %#" PRIx64 "..%#" PRIx64 " => %#" PRIx64 "\n",
+		lo, hi, entry);
+      else
+	puts ("");
+    }
+
+  return DWARF_CB_OK;
+}
+
+static int
+list_module (Dwfl_Module *mod __attribute__ ((unused)),
+	     void **userdata __attribute__ ((unused)),
+	     const char *name, Dwarf_Addr base,
+	     void *arg __attribute__ ((unused)))
+{
+  Dwarf_Addr start;
+  Dwarf_Addr end;
+  const char *file;
+  const char *debug;
+  if (dwfl_module_info (mod, NULL, &start, &end,
+			NULL, NULL, &file, &debug) != name
+      || start != base)
+    abort ();
+  printf ("module: %30s %08" PRIx64 "..%08" PRIx64 " %s %s\n",
+	  name, start, end, file, debug);
+  return DWARF_CB_OK;
+}
+
+static int
+print_module (Dwfl_Module *mod __attribute__ ((unused)),
+	      void **userdata __attribute__ ((unused)),
+	      const char *name, Dwarf_Addr base,
+	      Dwarf *dw, Dwarf_Addr bias,
+	      void *arg)
+{
+  printf ("module: %30s %08" PRIx64 " %s %" PRIx64 " (%s)\n",
+	  name, base, dw == NULL ? "no" : "DWARF", bias, dwfl_errmsg (-1));
+
+  if (dw != NULL && *(const bool *) arg)
+    {
+      Dwarf_Off off = 0;
+      size_t cuhl;
+      Dwarf_Off noff;
+
+      while (dwarf_nextcu (dw, off, &noff, &cuhl, NULL, NULL, NULL) == 0)
+	{
+	  Dwarf_Die die_mem;
+	  struct info info = { dwarf_offdie (dw, off + cuhl, &die_mem), bias };
+	  (void) dwarf_getfuncs (info.cudie, print_func, &info, 0);
+
+	  off = noff;
+	}
+    }
+
+  return DWARF_CB_OK;
+}
+
+static bool show_functions;
+
+/* gettext helper macro.  */
+#undef	N_
+#define N_(Str) Str
+
+static const struct argp_option options[] =
+  {
+    { "functions", 'f', NULL, 0, N_("Additionally show function names"), 0 },
+    { "inlines", 'i', NULL, 0, N_("Show instances of inlined functions"), 0 },
+    { NULL, 0, NULL, 0, NULL, 0 }
+  };
+
+static error_t
+parse_opt (int key, char *arg __attribute__ ((unused)),
+	   struct argp_state *state __attribute__ ((unused)))
+{
+  switch (key)
+    {
+    case ARGP_KEY_INIT:
+      state->child_inputs[0] = state->input;
+      break;
+
+    case 'f':
+      show_functions = true;
+      break;
+
+    case 'i':
+      show_inlines = show_functions = true;
+      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.  */
+  (void) __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  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);
+
+  ptrdiff_t p = 0;
+  do
+    p = dwfl_getmodules (dwfl, &list_module, NULL, p);
+  while (p > 0);
+  if (p < 0)
+    error (2, 0, "dwfl_getmodules: %s", dwfl_errmsg (-1));
+
+  do
+    p = dwfl_getdwarf (dwfl, &print_module, &show_functions, p);
+  while (p > 0);
+  if (p < 0)
+    error (2, 0, "dwfl_getdwarf: %s", dwfl_errmsg (-1));
+
+  p = 0;
+  do
+    p = dwfl_getmodules (dwfl, &list_module, NULL, p);
+  while (p > 0);
+  if (p < 0)
+    error (2, 0, "dwfl_getmodules: %s", dwfl_errmsg (-1));
+
+  dwfl_end (dwfl);
+
+  return 0;
+}
diff --git a/src/tests/dwflsyms.c b/src/tests/dwflsyms.c
new file mode 100644
index 0000000..49ac334
--- /dev/null
+++ b/src/tests/dwflsyms.c
@@ -0,0 +1,226 @@
+/* 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;
+}
diff --git a/src/tests/early-offscn.c b/src/tests/early-offscn.c
new file mode 100644
index 0000000..924cb9e
--- /dev/null
+++ b/src/tests/early-offscn.c
@@ -0,0 +1,52 @@
+/* Copyright (C) 2008 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 <errno.h>
+#include <error.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main (int argc, char *argv[])
+{
+  if (argc < 2)
+    error (1, 0, "Usage: %s FILE OFFSET", argv[0]);
+
+  /* Set the ELF version.  */
+  elf_version (EV_CURRENT);
+
+  /* Open the archive.  */
+  int fd = open (argv[1], O_RDONLY);
+  if (fd < 0)
+    error (1, errno, "cannot open '%s'", argv[1]);
+
+  Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    error (2, 0, "elf_begin: %s", elf_errmsg (-1));
+
+  Elf_Scn *scn = gelf_offscn (elf, strtoull (argv[2], NULL, 0));
+  if (scn == NULL)
+    error (3, 0, "gelf_offscn: %s", elf_errmsg (-1));
+
+  elf_end (elf);
+  return 0;
+}
diff --git a/src/tests/ecp.c b/src/tests/ecp.c
new file mode 100644
index 0000000..39a4851
--- /dev/null
+++ b/src/tests/ecp.c
@@ -0,0 +1,95 @@
+/* Copyright (C) 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <errno.h>
+#include <error.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main (int argc, char *argv[])
+{
+  if (argc < 3)
+    error (EXIT_FAILURE, 0, "usage: %s FROMNAME TONAME", argv[0]);
+
+  elf_version (EV_CURRENT);
+
+  int infd = open (argv[1], O_RDONLY);
+  if (infd == -1)
+    error (EXIT_FAILURE, errno, "cannot open input file '%s'", argv[1]);
+
+  Elf *inelf = elf_begin (infd, ELF_C_READ, NULL);
+  if (inelf == NULL)
+    error (EXIT_FAILURE, 0, "problems opening '%s' as ELF file: %s",
+	   argv[1], elf_errmsg (-1));
+
+  int outfd = creat (argv[2], 0666);
+  if (outfd == -1)
+    error (EXIT_FAILURE, errno, "cannot open output file '%s'", argv[2]);
+
+  Elf *outelf = elf_begin (outfd, ELF_C_WRITE, NULL);
+  if (outelf == NULL)
+    error (EXIT_FAILURE, 0, "problems opening '%s' as ELF file: %s",
+	   argv[2], elf_errmsg (-1));
+
+  gelf_newehdr (outelf, gelf_getclass (inelf));
+
+  GElf_Ehdr ehdr_mem;
+  GElf_Ehdr *ehdr;
+  gelf_update_ehdr (outelf, (ehdr = gelf_getehdr (inelf, &ehdr_mem)));
+
+  if (ehdr->e_phnum > 0)
+    {
+      int cnt;
+
+      if (gelf_newphdr (outelf, ehdr->e_phnum) == 0)
+	error (EXIT_FAILURE, 0, "cannot create program header: %s",
+	       elf_errmsg (-1));
+
+      for (cnt = 0; cnt < ehdr->e_phnum; ++cnt)
+	{
+	  GElf_Phdr phdr_mem;
+
+	  gelf_update_phdr (outelf, cnt, gelf_getphdr (inelf, cnt, &phdr_mem));
+	}
+    }
+
+  Elf_Scn *scn = NULL;
+  while ((scn = elf_nextscn (inelf, scn)) != NULL)
+    {
+      Elf_Scn *newscn = elf_newscn (outelf);
+
+      GElf_Shdr shdr_mem;
+      gelf_update_shdr (newscn, gelf_getshdr (scn, &shdr_mem));
+
+      *elf_newdata (newscn) = *elf_getdata (scn, NULL);
+    }
+
+  elf_flagelf (outelf, ELF_C_SET, ELF_F_LAYOUT);
+
+  if (elf_update (outelf, ELF_C_WRITE) == -1)
+    error (EXIT_FAILURE, 0, "elf_update failed: %s", elf_errmsg (-1));
+
+  elf_end (outelf);
+  close (outfd);
+
+  elf_end (inelf);
+
+  return 0;
+}
diff --git a/src/tests/find-prologues.c b/src/tests/find-prologues.c
new file mode 100644
index 0000000..ba8ae37
--- /dev/null
+++ b/src/tests/find-prologues.c
@@ -0,0 +1,108 @@
+/* Test program for dwarf_entry_breakpoints.
+   Copyright (C) 2005 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 <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <error.h>
+#include <string.h>
+#include <fnmatch.h>
+
+
+struct args
+{
+  Dwfl *dwfl;
+  Dwarf_Die *cu;
+  Dwarf_Addr dwbias;
+  char **argv;
+};
+
+static int
+handle_function (Dwarf_Die *func, void *arg)
+{
+  struct args *a = arg;
+
+  const char *name = dwarf_diename (func);
+  char **argv = a->argv;
+  if (argv[0] != NULL)
+    {
+      bool match;
+      do
+	match = fnmatch (*argv, name, 0) == 0;
+      while (!match && *++argv);
+      if (!match)
+	return 0;
+    }
+
+  if (dwarf_func_inline (func))
+    return 0;
+
+  Dwarf_Addr entrypc;
+  if (dwarf_entrypc (func, &entrypc) != 0)
+    error (EXIT_FAILURE, 0, "dwarf_entrypc: %s: %s",
+	   dwarf_diename (func), dwarf_errmsg (-1));
+  entrypc += a->dwbias;
+
+  printf ("%-16s %#.16" PRIx64, dwarf_diename (func), entrypc);
+
+  Dwarf_Addr *bkpts = NULL;
+  int result = dwarf_entry_breakpoints (func, &bkpts);
+  if (result <= 0)
+    printf ("\t%s\n", dwarf_errmsg (-1));
+  else
+    {
+      for (int i = 0; i < result; ++i)
+	printf (" %#.16" PRIx64 "%s", bkpts[i] + a->dwbias,
+		i == result - 1 ? "\n" : "");
+      free (bkpts);
+    }
+
+  return 0;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  int remaining;
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  struct args a = { .dwfl = NULL, .cu = NULL };
+
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining,
+		     &a.dwfl);
+  assert (a.dwfl != NULL);
+  a.argv = &argv[remaining];
+
+  int result = 0;
+
+  while ((a.cu = dwfl_nextcu (a.dwfl, a.cu, &a.dwbias)) != NULL)
+    dwarf_getfuncs (a.cu, &handle_function, &a, 0);
+
+  dwfl_end (a.dwfl);
+
+  return result;
+}
diff --git a/src/tests/funcretval.c b/src/tests/funcretval.c
new file mode 100644
index 0000000..8d19d11
--- /dev/null
+++ b/src/tests/funcretval.c
@@ -0,0 +1,106 @@
+/* Test program for dwfl_module_return_value_location.
+   Copyright (C) 2005 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 <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <error.h>
+#include <string.h>
+#include <fnmatch.h>
+
+
+struct args
+{
+  Dwfl *dwfl;
+  Dwarf_Die *cu;
+  Dwarf_Addr dwbias;
+  char **argv;
+};
+
+static int
+handle_function (Dwarf_Die *funcdie, void *arg)
+{
+  struct args *a = arg;
+
+  const char *name = dwarf_diename (funcdie);
+  char **argv = a->argv;
+  if (argv[0] != NULL)
+    {
+      bool match;
+      do
+	match = fnmatch (*argv, name, 0) == 0;
+      while (!match && *++argv);
+      if (!match)
+	return 0;
+    }
+
+  printf ("(%s) %s: ", dwfl_module_info (dwfl_cumodule (a->cu), NULL,
+					 NULL, NULL,
+					 NULL, NULL,
+					 NULL, NULL), name);
+
+  const Dwarf_Op *locops;
+  int nlocops = dwfl_module_return_value_location (dwfl_cumodule (a->cu),
+						   funcdie, &locops);
+  if (nlocops < 0)
+    error (EXIT_FAILURE, 0, "dwfl_module_return_value_location: %s",
+	   dwfl_errmsg (-1));
+  else if (nlocops == 0)
+    puts ("returns no value");
+  else
+    {
+      printf ("return value location:");
+      for (int i = 0; i < nlocops; ++i)
+	printf (" {%#x, %#" PRIx64 "}", locops[i].atom, locops[i].number);
+      puts ("");
+    }
+
+  return 0;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  int remaining;
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  struct args a = { .dwfl = NULL, .cu = NULL };
+
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining,
+		     &a.dwfl);
+  assert (a.dwfl != NULL);
+  a.argv = &argv[remaining];
+
+  int result = 0;
+
+  while ((a.cu = dwfl_nextcu (a.dwfl, a.cu, &a.dwbias)) != NULL)
+    dwarf_getfuncs (a.cu, &handle_function, &a, 0);
+
+  dwfl_end (a.dwfl);
+
+  return result;
+}
diff --git a/src/tests/funcretval_test.c b/src/tests/funcretval_test.c
new file mode 100644
index 0000000..7e20f52
--- /dev/null
+++ b/src/tests/funcretval_test.c
@@ -0,0 +1,828 @@
+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;
+}
diff --git a/src/tests/funcretval_test_aarch64.bz2 b/src/tests/funcretval_test_aarch64.bz2
new file mode 100755
index 0000000..5494e10
--- /dev/null
+++ b/src/tests/funcretval_test_aarch64.bz2
Binary files differ
diff --git a/src/tests/funcscopes.c b/src/tests/funcscopes.c
new file mode 100644
index 0000000..720ff3b
--- /dev/null
+++ b/src/tests/funcscopes.c
@@ -0,0 +1,194 @@
+/* Test program for dwarf_getscopes.
+   Copyright (C) 2005 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 <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <error.h>
+#include <string.h>
+#include <fnmatch.h>
+
+
+static void
+paddr (const char *prefix, Dwarf_Addr addr, Dwfl_Line *line)
+{
+  const char *src;
+  int lineno, linecol;
+  if (line != NULL
+      && (src = dwfl_lineinfo (line, &addr, &lineno, &linecol,
+			       NULL, NULL)) != NULL)
+    {
+      if (linecol != 0)
+	printf ("%s%#" PRIx64 " (%s:%d:%d)",
+		prefix, addr, src, lineno, linecol);
+      else
+	printf ("%s%#" PRIx64 " (%s:%d)",
+		prefix, addr, src, lineno);
+    }
+  else
+    printf ("%s%#" PRIx64, prefix, addr);
+}
+
+
+static void
+print_vars (unsigned int indent, Dwarf_Die *die)
+{
+  Dwarf_Die child;
+  if (dwarf_child (die, &child) == 0)
+    do
+      switch (dwarf_tag (&child))
+	{
+	case DW_TAG_variable:
+	case DW_TAG_formal_parameter:
+	  printf ("%*s%-30s[%6" PRIx64 "]\n", indent, "",
+		  dwarf_diename (&child),
+		  (uint64_t) dwarf_dieoffset (&child));
+	  break;
+	default:
+	  break;
+	}
+    while (dwarf_siblingof (&child, &child) == 0);
+
+  Dwarf_Attribute attr_mem;
+  Dwarf_Die origin;
+  if (dwarf_hasattr (die, DW_AT_abstract_origin)
+      && dwarf_formref_die (dwarf_attr (die, DW_AT_abstract_origin, &attr_mem),
+			    &origin) != NULL
+      && dwarf_child (&origin, &child) == 0)
+    do
+      switch (dwarf_tag (&child))
+	{
+	case DW_TAG_variable:
+	case DW_TAG_formal_parameter:
+	  printf ("%*s%s (abstract)\n", indent, "",
+		  dwarf_diename (&child));
+	  break;
+	default:
+	  break;
+	}
+    while (dwarf_siblingof (&child, &child) == 0);
+}
+
+
+#define INDENT 4
+
+struct args
+{
+  Dwfl *dwfl;
+  Dwarf_Die *cu;
+  Dwarf_Addr dwbias;
+  char **argv;
+};
+
+static int
+handle_function (Dwarf_Die *funcdie, void *arg)
+{
+  struct args *a = arg;
+
+  const char *name = dwarf_diename (funcdie);
+  char **argv = a->argv;
+  if (argv[0] != NULL)
+    {
+      bool match;
+      do
+	match = fnmatch (*argv, name, 0) == 0;
+      while (!match && *++argv);
+      if (!match)
+	return 0;
+    }
+
+  Dwarf_Die *scopes;
+  int n = dwarf_getscopes_die (funcdie, &scopes);
+  if (n <= 0)
+    error (EXIT_FAILURE, 0, "dwarf_getscopes_die: %s", dwarf_errmsg (-1));
+  else
+    {
+      Dwarf_Addr start, end;
+      const char *fname;
+      const char *modname = dwfl_module_info (dwfl_cumodule (a->cu), NULL,
+					      &start, &end,
+					      NULL, NULL,
+					      &fname, NULL);
+      if (modname == NULL)
+	error (EXIT_FAILURE, 0, "dwfl_module_info: %s", dwarf_errmsg (-1));
+      if (modname[0] == '\0')
+	modname = fname;
+      printf ("%s: %#" PRIx64 " .. %#" PRIx64 "\n", modname, start, end);
+
+      unsigned int indent = 0;
+      while (n-- > 0)
+	{
+	  Dwarf_Die *const die = &scopes[n];
+
+	  indent += INDENT;
+	  printf ("%*s%s (%#x)", indent, "",
+		  dwarf_diename (die) ?: "<unnamed>",
+		  dwarf_tag (die));
+
+	  Dwarf_Addr lowpc, highpc;
+	  if (dwarf_lowpc (die, &lowpc) == 0
+	      && dwarf_highpc (die, &highpc) == 0)
+	    {
+	      lowpc += a->dwbias;
+	      highpc += a->dwbias;
+	      Dwfl_Line *loline = dwfl_getsrc (a->dwfl, lowpc);
+	      Dwfl_Line *hiline = dwfl_getsrc (a->dwfl, highpc);
+	      paddr (": ", lowpc, loline);
+	      if (highpc != lowpc)
+		paddr (" .. ", lowpc, hiline == loline ? NULL : hiline);
+	    }
+	  puts ("");
+
+	  print_vars (indent + INDENT, die);
+	}
+    }
+
+  return 0;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  int remaining;
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  struct args a = { .dwfl = NULL, .cu = NULL };
+
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining,
+		     &a.dwfl);
+  assert (a.dwfl != NULL);
+  a.argv = &argv[remaining];
+
+  int result = 0;
+
+  while ((a.cu = dwfl_nextcu (a.dwfl, a.cu, &a.dwbias)) != NULL)
+    dwarf_getfuncs (a.cu, &handle_function, &a, 0);
+
+  dwfl_end (a.dwfl);
+
+  return result;
+}
diff --git a/src/tests/get-aranges.c b/src/tests/get-aranges.c
new file mode 100644
index 0000000..7f85cda
--- /dev/null
+++ b/src/tests/get-aranges.c
@@ -0,0 +1,142 @@
+/* Copyright (C) 2002, 2004 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <libelf.h>
+#include ELFUTILS_HEADER(dw)
+#include <stdio.h>
+#include <unistd.h>
+
+
+static const Dwarf_Addr testaddr[] =
+{
+  0x804842b, 0x804842c, 0x804843c, 0x8048459, 0x804845a,
+  0x804845b, 0x804845c, 0x8048460, 0x8048465, 0x8048466,
+  0x8048467, 0x8048468, 0x8048470, 0x8048471, 0x8048472
+};
+#define ntestaddr (sizeof (testaddr) / sizeof (testaddr[0]))
+
+
+int
+main (int argc, char *argv[])
+{
+  int result = 0;
+  int cnt;
+
+  for (cnt = 1; cnt < argc; ++cnt)
+    {
+      int fd = open (argv[cnt], O_RDONLY);
+
+      Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
+      if (dbg == NULL)
+	{
+	  printf ("%s not usable\n", argv[cnt]);
+	  result = 1;
+	  close (fd);
+	  continue;
+	}
+
+      Dwarf_Aranges *aranges;
+      size_t naranges;
+      if (dwarf_getaranges (dbg, &aranges, &naranges) != 0)
+	printf ("%s: cannot get aranges\n", argv[cnt]);
+      else
+	{
+	  for (size_t i = 0; i < ntestaddr; ++i)
+	    {
+	      Dwarf_Arange *found;
+
+	      found = dwarf_getarange_addr (aranges, testaddr[i]);
+	      if (found != NULL)
+		{
+		  Dwarf_Off cu_offset;
+
+		  if (dwarf_getarangeinfo (found, NULL, NULL, &cu_offset) != 0)
+		    {
+		      puts ("failed to get CU die offset");
+		      result = 1;
+		    }
+		  else
+		    {
+		      const char *cuname;
+		      Dwarf_Die cu_die;
+
+		      if (dwarf_offdie (dbg, cu_offset, &cu_die) == NULL
+			  || (cuname = dwarf_diename (&cu_die)) == NULL)
+			{
+			  puts ("failed to get CU die");
+			  result = 1;
+			}
+		      else
+			printf ("CU name: \"%s\"\n", cuname);
+		    }
+		}
+	      else
+		printf ("%#llx: not in range\n",
+			(unsigned long long int) testaddr[i]);
+	    }
+
+	  for (size_t i = 0; i < naranges; ++i)
+	    {
+	      Dwarf_Arange *arange = dwarf_onearange (aranges, i);
+	      if (arange == NULL)
+		{
+		  printf ("cannot get arange %zu: %s\n", i, dwarf_errmsg (-1));
+		  break;
+		}
+
+	      Dwarf_Addr start;
+	      Dwarf_Word length;
+	      Dwarf_Off cu_offset;
+
+	      if (dwarf_getarangeinfo (arange, &start, &length, &cu_offset)
+		  != 0)
+		{
+		  printf ("cannot get info from aranges[%zu]\n", i);
+		  result = 1;
+		}
+	      else
+		{
+		  printf (" [%2zu] start: %#llx, length: %llu, cu: %llu\n",
+			  i, (unsigned long long int) start,
+			  (unsigned long long int) length,
+			  (unsigned long long int) cu_offset);
+
+		  const char *cuname;
+		  Dwarf_Die cu_die;
+		  if (dwarf_offdie (dbg, cu_offset, &cu_die) == NULL
+		      || (cuname = dwarf_diename (&cu_die)) == NULL)
+		    {
+		      puts ("failed to get CU die");
+		      result = 1;
+		    }
+		  else
+		    printf ("CU name: \"%s\"\n", cuname);
+		}
+	    }
+	}
+
+      dwarf_end (dbg);
+      close (fd);
+    }
+
+  return result;
+}
diff --git a/src/tests/get-files.c b/src/tests/get-files.c
new file mode 100644
index 0000000..0409173
--- /dev/null
+++ b/src/tests/get-files.c
@@ -0,0 +1,107 @@
+/* Copyright (C) 2002, 2004, 2005, 2007 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <libelf.h>
+#include ELFUTILS_HEADER(dw)
+#include <stdio.h>
+#include <unistd.h>
+
+
+int
+main (int argc, char *argv[])
+{
+  int result = 0;
+  int cnt;
+
+  for (cnt = 1; cnt < argc; ++cnt)
+    {
+      int fd = open (argv[cnt], O_RDONLY);
+
+      Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
+      if (dbg == NULL)
+	{
+	  printf ("%s not usable\n", argv[cnt]);
+	  result = 1;
+	  if (fd != -1)
+	    close (fd);
+	  continue;
+	}
+
+      Dwarf_Off o = 0;
+      Dwarf_Off ncu;
+      Dwarf_Off ao;
+      size_t cuhl;
+      uint8_t asz;
+      uint8_t osz;
+      while (dwarf_nextcu (dbg, o, &ncu, &cuhl, &ao, &asz, &osz) == 0)
+	{
+	  printf ("cuhl = %zu, o = %llu, asz = %hhu, osz = %hhu, ncu = %llu\n",
+		  cuhl, (unsigned long long int) ao,
+		  asz, osz, (unsigned long long int) ncu);
+
+	  Dwarf_Die die_mem;
+	  Dwarf_Die *die = dwarf_offdie (dbg, o + cuhl, &die_mem);
+	  if (die == NULL)
+	    {
+	      printf ("%s: cannot get CU die\n", argv[cnt]);
+	      result = 1;
+	      break;
+	    }
+
+	  Dwarf_Files *files;
+	  size_t nfiles;
+	  if (dwarf_getsrcfiles (die, &files, &nfiles) != 0)
+	    {
+	      printf ("%s: cannot get files\n", argv[cnt]);
+	      result = 1;
+	      break;
+	    }
+
+	  const char *const *dirs;
+	  size_t ndirs;
+	  if (dwarf_getsrcdirs (files, &dirs, &ndirs) != 0)
+	    {
+	      printf ("%s: cannot get include directories\n", argv[cnt]);
+	      result = 1;
+	      break;
+	    }
+
+	  if (dirs[0] == NULL)
+	    puts (" dirs[0] = (null)");
+	  else
+	    printf (" dirs[0] = \"%s\"\n", dirs[0]);
+	  for (size_t i = 1; i < ndirs; ++i)
+	    printf (" dirs[%zu] = \"%s\"\n", i, dirs[i]);
+
+	  for (size_t i = 0; i < nfiles; ++i)
+	    printf (" file[%zu] = \"%s\"\n", i,
+		    dwarf_filesrc (files, i, NULL, NULL));
+
+	  o = ncu;
+	}
+
+      dwarf_end (dbg);
+      close (fd);
+    }
+
+  return result;
+}
diff --git a/src/tests/get-lines.c b/src/tests/get-lines.c
new file mode 100644
index 0000000..c361a2c
--- /dev/null
+++ b/src/tests/get-lines.c
@@ -0,0 +1,137 @@
+/* Copyright (C) 2002, 2004 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <inttypes.h>
+#include <libelf.h>
+#include ELFUTILS_HEADER(dw)
+#include <stdio.h>
+#include <unistd.h>
+
+
+int
+main (int argc, char *argv[])
+{
+  int result = 0;
+  int cnt;
+
+  for (cnt = 1; cnt < argc; ++cnt)
+    {
+      int fd = open (argv[cnt], O_RDONLY);
+
+      Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
+      if  (dbg == NULL)
+	{
+	  printf ("%s not usable: %s\n", argv[cnt], dwarf_errmsg (-1));
+	  close  (fd);
+	  continue;
+	}
+
+      Dwarf_Off cuoff = 0;
+      Dwarf_Off old_cuoff = 0;
+      size_t hsize;
+      Dwarf_Off ao;
+      uint8_t asz;
+      uint8_t osz;
+      while (dwarf_nextcu (dbg, cuoff, &cuoff, &hsize, &ao, &asz, &osz) == 0)
+	{
+	  printf ("cuhl = %zu, o = %llu, asz = %hhu, osz = %hhu, ncu = %llu\n",
+		  hsize, (unsigned long long int) ao,
+		  asz, osz, (unsigned long long int) cuoff);
+
+	  /* Get the DIE for the CU.  */
+	  Dwarf_Die die;
+ 	  if (dwarf_offdie (dbg, old_cuoff + hsize, &die) == NULL)
+	    {
+	      /* Something went wrong.  */
+	      printf ("%s: cannot get CU die\n", argv[cnt]);
+	      result = 1;
+	      break;
+	    }
+	  old_cuoff = cuoff;
+
+	  Dwarf_Lines *lb;
+	  size_t nlb;
+	  if (dwarf_getsrclines (&die, &lb, &nlb) != 0)
+	    {
+	      printf ("%s: cannot get lines\n", argv[cnt]);
+	      result = 1;
+	      break;
+	    }
+
+	  printf (" %zu lines\n", nlb);
+
+	  for (size_t i = 0; i < nlb; ++i)
+	    {
+	      Dwarf_Line *l = dwarf_onesrcline (lb, i);
+	      if (l == NULL)
+		{
+		  printf ("%s: cannot get individual line\n", argv[cnt]);
+		  result = 1;
+		  break;
+		}
+
+	      Dwarf_Addr addr;
+	      if (dwarf_lineaddr (l, &addr) != 0)
+		addr = 0;
+	      const char *file = dwarf_linesrc (l, NULL, NULL);
+	      int line;
+	      if (dwarf_lineno (l, &line) != 0)
+		line = 0;
+
+	      printf ("%" PRIx64 ": %s:%d:", (uint64_t) addr,
+		      file ?: "???", line);
+
+	      int column;
+	      if (dwarf_linecol (l, &column) != 0)
+		column = 0;
+	      if (column >= 0)
+		printf ("%d:", column);
+
+	      bool is_stmt;
+	      if (dwarf_linebeginstatement (l, &is_stmt) != 0)
+		is_stmt = false;
+	      bool end_sequence;
+	      if (dwarf_lineendsequence (l, &end_sequence) != 0)
+		end_sequence = false;
+	      bool basic_block;
+	      if (dwarf_lineblock (l, &basic_block) != 0)
+		basic_block = false;
+	      bool prologue_end;
+	      if (dwarf_lineprologueend (l, &prologue_end) != 0)
+		prologue_end = false;
+	      bool epilogue_begin;
+	      if (dwarf_lineepiloguebegin (l, &epilogue_begin) != 0)
+		epilogue_begin = false;
+
+	      printf (" is_stmt:%s, end_seq:%s, bb:%s, prologue:%s, epilogue:%s\n",
+		      is_stmt ? "yes" : "no", end_sequence ? "yes" : "no",
+		      basic_block ? "yes" : "no", prologue_end  ? "yes" : "no",
+		      epilogue_begin ? "yes" : "no");
+	    }
+	}
+
+      dwarf_end (dbg);
+      close (fd);
+    }
+
+  return result;
+}
diff --git a/src/tests/get-pubnames.c b/src/tests/get-pubnames.c
new file mode 100644
index 0000000..4777f49
--- /dev/null
+++ b/src/tests/get-pubnames.c
@@ -0,0 +1,98 @@
+/* Copyright (C) 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <libelf.h>
+#include ELFUTILS_HEADER(dw)
+#include <stdio.h>
+#include <unistd.h>
+
+
+static int globcnt;
+
+static int
+callback (Dwarf *dbg, Dwarf_Global *gl, void *arg __attribute__ ((unused)))
+{
+  int result = DWARF_CB_OK;
+
+  printf (" [%2d] \"%s\", die: %llu, cu: %llu\n",
+	  globcnt++, gl->name, (unsigned long long int) gl->die_offset,
+	  (unsigned long long int) gl->cu_offset);
+
+  Dwarf_Die cu_die;
+  const char *cuname;
+  if (dwarf_offdie (dbg, gl->cu_offset, &cu_die) == NULL
+      || (cuname = dwarf_diename (&cu_die)) == NULL)
+    {
+      puts ("failed to get CU die");
+      result = DWARF_CB_ABORT;
+    }
+  else
+    printf ("CU name: \"%s\"\n", cuname);
+
+  const char *diename;
+  Dwarf_Die die;
+  if (dwarf_offdie (dbg, gl->die_offset, &die) == NULL
+      || (diename = dwarf_diename (&die)) == NULL)
+    {
+      puts ("failed to get object die");
+      result = DWARF_CB_ABORT;
+    }
+  else
+    printf ("object name: \"%s\"\n", diename);
+
+  return result;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  int result = 0;
+  int cnt;
+
+  for (cnt = 1; cnt < argc; ++cnt)
+    {
+      int fd = open (argv[cnt], O_RDONLY);
+      Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
+      if (dbg == NULL)
+	{
+	  printf ("%s not usable: %s\n", argv[cnt], dwarf_errmsg (-1));
+	  result = 1;
+	  close (fd);
+	  continue;
+	}
+
+      globcnt = 0;
+
+      if (dwarf_getpubnames (dbg, callback, NULL, 0) != 0)
+	{
+	  printf ("dwarf_get_pubnames didn't return zero: %s\n",
+		  dwarf_errmsg (-1));
+	  result = 1;
+	}
+
+      dwarf_end (dbg);
+      close (fd);
+    }
+
+  return result;
+}
diff --git a/src/tests/hash.c b/src/tests/hash.c
new file mode 100644
index 0000000..86b6ad8
--- /dev/null
+++ b/src/tests/hash.c
@@ -0,0 +1,45 @@
+/* Copyright (C) 2002 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <libelf.h>
+#include <stdio.h>
+
+
+static int
+check (const char *name, unsigned long int expected)
+{
+  unsigned long int actual = elf_hash (name);
+
+  return actual != expected;
+}
+
+
+int
+main (void)
+{
+  int status;
+
+  /* Check some names.  We know what the expected result is.  */
+  status = check ("_DYNAMIC", 165832675);
+  status |= check ("_GLOBAL_OFFSET_TABLE_", 102264335);
+
+  return status;
+}
diff --git a/src/tests/hello_aarch64.ko.bz2 b/src/tests/hello_aarch64.ko.bz2
new file mode 100644
index 0000000..431d89f
--- /dev/null
+++ b/src/tests/hello_aarch64.ko.bz2
Binary files differ
diff --git a/src/tests/hello_i386.ko.bz2 b/src/tests/hello_i386.ko.bz2
new file mode 100644
index 0000000..f89b292
--- /dev/null
+++ b/src/tests/hello_i386.ko.bz2
Binary files differ
diff --git a/src/tests/hello_ppc64.ko.bz2 b/src/tests/hello_ppc64.ko.bz2
new file mode 100644
index 0000000..f4d3ff2
--- /dev/null
+++ b/src/tests/hello_ppc64.ko.bz2
Binary files differ
diff --git a/src/tests/hello_s390.ko.bz2 b/src/tests/hello_s390.ko.bz2
new file mode 100644
index 0000000..41525bf
--- /dev/null
+++ b/src/tests/hello_s390.ko.bz2
Binary files differ
diff --git a/src/tests/hello_x86_64.ko.bz2 b/src/tests/hello_x86_64.ko.bz2
new file mode 100644
index 0000000..ba06f91
--- /dev/null
+++ b/src/tests/hello_x86_64.ko.bz2
Binary files differ
diff --git a/src/tests/libtestfile_multi_shared.so.bz2 b/src/tests/libtestfile_multi_shared.so.bz2
new file mode 100755
index 0000000..e9eb6a7
--- /dev/null
+++ b/src/tests/libtestfile_multi_shared.so.bz2
Binary files differ
diff --git a/src/tests/line2addr.c b/src/tests/line2addr.c
new file mode 100644
index 0000000..e0d65d3
--- /dev/null
+++ b/src/tests/line2addr.c
@@ -0,0 +1,148 @@
+/* Copyright (C) 2005 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(dwfl)
+#include <argp.h>
+#include <stdio.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <error.h>
+
+
+static void
+print_address (Dwfl_Module *mod, Dwarf_Addr address)
+{
+  int n = dwfl_module_relocations (mod);
+  if (n < 0)
+    error (0, 0, "dwfl_module_relocations: %s", dwfl_errmsg (-1));
+  else if (n > 0)
+    {
+      int i = dwfl_module_relocate_address (mod, &address);
+      if (i < 0)
+	error (0, 0, "dwfl_module_relocate_address: %s", dwfl_errmsg (-1));
+      else
+	{
+	  const char *modname = dwfl_module_info (mod, NULL, NULL, NULL,
+						  NULL, NULL, NULL, NULL);
+	  const char *secname = dwfl_module_relocation_info (mod, i, NULL);
+	  if (n > 1 || secname[0] != '\0')
+	    printf ("%s(%s)+%#" PRIx64, modname, secname, address);
+	  else
+	    printf ("%s+%#" PRIx64, modname, address);
+	  return;
+	}
+    }
+
+  printf ("%#" PRIx64, address);
+}
+
+
+struct args
+{
+  const char *arg;
+  char *file;
+  int line;
+};
+
+static int
+handle_module (Dwfl_Module *mod __attribute__ ((unused)),
+	       void **udata __attribute__ ((unused)),
+	       const char *modname, Dwarf_Addr base __attribute__ ((unused)),
+	       Dwarf *dbg __attribute__ ((unused)),
+	       Dwarf_Addr bias __attribute__ ((unused)), void *arg)
+{
+  const struct args *const a = arg;
+
+  Dwfl_Line **lines = NULL;
+  size_t nlines = 0;
+
+  if (dwfl_module_getsrc_file (mod, a->file, a->line, 0, &lines, &nlines) == 0)
+    {
+      for (size_t inner = 0; inner < nlines; ++inner)
+	{
+	  Dwarf_Addr addr;
+	  int line = a->line, col = 0;
+	  const char *file = dwfl_lineinfo (lines[inner], &addr, &line, &col,
+					    NULL, NULL);
+	  if (file != NULL)
+	    {
+	      printf ("%s -> ", a->arg);
+	      print_address (mod, addr);
+	      if (modname[0] != '\0')
+		printf (" (%s:", modname);
+	      if (strcmp (file, a->file) || line != a->line || col != 0)
+		printf (" %s%s:%d", modname[0] != '\0' ? "" : "(",
+			file, line);
+	      if (col != 0)
+		printf (":%d", col);
+	      if (modname[0] != '\0'
+		  || strcmp (file, a->file) || line != a->line || col != 0)
+		puts (")");
+	      else
+		puts ("");
+	    }
+	}
+      free (lines);
+    }
+
+  return DWARF_CB_OK;
+}
+
+int
+main (int argc, char *argv[])
+{
+  int cnt;
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  Dwfl *dwfl = NULL;
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &cnt, &dwfl);
+  assert (dwfl != NULL);
+
+  for (; cnt < argc; ++cnt)
+    {
+      struct args a = { .arg = argv[cnt] };
+
+      switch (sscanf (a.arg, "%m[^:]:%d", &a.file, &a.line))
+	{
+	default:
+	case 0:
+	  printf ("ignored %s\n", argv[cnt]);
+	  continue;
+	case 1:
+	  a.line = 0;
+	  break;
+	case 2:
+	  break;
+	}
+
+      (void) dwfl_getdwarf (dwfl, &handle_module, &a, 0);
+
+      free (a.file);
+    }
+
+  dwfl_end (dwfl);
+
+  return 0;
+}
diff --git a/src/tests/linkmap-cut-lib.so.bz2 b/src/tests/linkmap-cut-lib.so.bz2
new file mode 100644
index 0000000..a1bda5c
--- /dev/null
+++ b/src/tests/linkmap-cut-lib.so.bz2
Binary files differ
diff --git a/src/tests/linkmap-cut.bz2 b/src/tests/linkmap-cut.bz2
new file mode 100644
index 0000000..f2ccd7c
--- /dev/null
+++ b/src/tests/linkmap-cut.bz2
Binary files differ
diff --git a/src/tests/linkmap-cut.core.bz2 b/src/tests/linkmap-cut.core.bz2
new file mode 100644
index 0000000..b55b2f2
--- /dev/null
+++ b/src/tests/linkmap-cut.core.bz2
Binary files differ
diff --git a/src/tests/low_high_pc.c b/src/tests/low_high_pc.c
new file mode 100644
index 0000000..d0f4302
--- /dev/null
+++ b/src/tests/low_high_pc.c
@@ -0,0 +1,109 @@
+/* Test program for dwarf_lowpc and dwarf_highpc
+   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/>.  */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include ELFUTILS_HEADER(dwfl)
+#include <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <error.h>
+#include <string.h>
+#include <fnmatch.h>
+
+struct args
+{
+  Dwfl *dwfl;
+  Dwarf_Die *cu;
+  Dwarf_Addr dwbias;
+  char **argv;
+  const char *file;
+};
+
+static struct args *args;
+
+static void
+fail(Dwarf_Off off, const char *name, const char *msg)
+{
+  printf("%s: [%" PRIx64 "] '%s' %s\n", args->file, off, name, msg);
+  exit(-1);
+}
+
+static int
+handle_die (Dwarf_Die *die, void *arg)
+{
+  args = arg;
+  Dwarf_Off off = dwarf_dieoffset (die);
+
+  const char *name = dwarf_diename (die);
+  if (name == NULL)
+    fail (off, "<no name>", "die without a name");
+
+  Dwarf_Addr lowpc = 0;
+  Dwarf_Addr highpc = 0;
+  if (dwarf_lowpc (die, &lowpc) != 0 && dwarf_hasattr (die, DW_AT_low_pc))
+    fail (off, name, "has DW_AT_low_pc but dwarf_lowpc fails");
+  if (dwarf_highpc (die, &highpc) != 0 && dwarf_hasattr (die, DW_AT_high_pc))
+    fail (off, name, "has DW_AT_high_pc but dwarf_highpc fails");
+
+  /* GCC < 4.7 had a bug where no code CUs got a highpc == lowpc.
+     Allow that, because it is not the main purpose of this test.  */
+  if (dwarf_hasattr (die, DW_AT_low_pc)
+      && dwarf_hasattr (die, DW_AT_high_pc)
+      && highpc <= lowpc
+      && ! (dwarf_tag (die) == DW_TAG_compile_unit && highpc == lowpc))
+    {
+      printf("lowpc: %" PRIx64 ", highpc: %" PRIx64 "lx\n", lowpc, highpc);
+      fail (off, name, "highpc <= lowpc");
+    }
+
+  return 0;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  int remaining;
+
+  /* Set locale.  */
+  (void) setlocale (LC_ALL, "");
+
+  struct args a = { .dwfl = NULL, .cu = NULL };
+
+  (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining,
+		     &a.dwfl);
+  assert (a.dwfl != NULL);
+  a.argv = &argv[remaining];
+
+  int result = 0;
+
+  while ((a.cu = dwfl_nextcu (a.dwfl, a.cu, &a.dwbias)) != NULL)
+    {
+      a.file = dwarf_diename (a.cu);
+      handle_die (a.cu, &a);
+      dwarf_getfuncs (a.cu, &handle_die, &a, 0);
+    }
+
+  dwfl_end (a.dwfl);
+
+  return result;
+}
diff --git a/src/tests/md5-sha1-test.c b/src/tests/md5-sha1-test.c
new file mode 100644
index 0000000..49de078
--- /dev/null
+++ b/src/tests/md5-sha1-test.c
@@ -0,0 +1,101 @@
+/* Copyright (C) 2011 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 <string.h>
+#include <error.h>
+
+#include "md5.h"
+#include "sha1.h"
+
+static const struct expected
+{
+  const char *sample;
+  const char *md5_expected;
+  const char *sha1_expected;
+} tests[] =
+  {
+    {
+      "abc",
+      "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
+      "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
+      "\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d"
+    },
+    {
+      "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
+      "\x82\x15\xef\x07\x96\xa2\x0b\xca\xaa\xe1\x16\xd3\x87\x6c\x66\x4a",
+      "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
+      "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1"
+    },
+    {
+      "\0a",
+      "\x77\x07\xd6\xae\x4e\x02\x7c\x70\xee\xa2\xa9\x35\xc2\x29\x6f\x21",
+      "\x34\xaa\x97\x3c\xd4\xc4\xda\xa4\xf6\x1e"
+      "\xeb\x2b\xdb\xad\x27\x31\x65\x34\x01\x6f",
+    },
+    {
+      "When in the Course of human events it becomes necessary",
+      "\x62\x6b\x5e\x22\xcd\x3d\x02\xea\x07\xde\xd4\x50\x62\x3d\xb9\x96",
+      "\x66\xc3\xc6\x8d\x62\x91\xc5\x1e\x63\x0c"
+      "\x85\xc8\x6c\xc4\x4b\x3a\x79\x3e\x07\x28",
+    },
+  };
+#define NTESTS (sizeof tests / sizeof tests[0])
+
+#define md5_size	16
+#define sha1_size	20
+
+static const char md5_expected[] =
+  {
+  };
+
+static const char sha1_expected[] =
+  {
+  };
+
+#define TEST_HASH(ALGO, I)						      \
+  {									      \
+    struct ALGO##_ctx ctx;						      \
+    uint32_t result_buffer[(ALGO##_size + 3) / 4];			      \
+    ALGO##_init_ctx (&ctx);						      \
+    if (tests[I].sample[0] == '\0')					      \
+      {									      \
+	char input_buffer[1000];					      \
+	memset (input_buffer, tests[I].sample[1], sizeof input_buffer);	      \
+	for (int rept = 0; rept < 1000; ++rept)				      \
+	  ALGO##_process_bytes (input_buffer, sizeof input_buffer, &ctx);     \
+      }									      \
+    else								      \
+      ALGO##_process_bytes (tests[I].sample, strlen (tests[I].sample), &ctx); \
+    char *result = ALGO##_finish_ctx (&ctx, result_buffer);		      \
+    if (result != (void *) result_buffer				      \
+	|| memcmp (result, tests[I].ALGO##_expected, ALGO##_size) != 0)	      \
+      error (0, 0, #ALGO " test %zu failed", 1 + I);			      \
+  }
+
+int
+main (void)
+{
+  for (size_t i = 0; i < NTESTS; ++i)
+    {
+      TEST_HASH (md5, i);
+      TEST_HASH (sha1, i);
+    }
+  return error_message_count;
+}
diff --git a/src/tests/msg_tst.c b/src/tests/msg_tst.c
new file mode 100644
index 0000000..10ff0f7
--- /dev/null
+++ b/src/tests/msg_tst.c
@@ -0,0 +1,104 @@
+/* Copyright (C) 2002, 2005, 2006 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <libelfP.h>
+
+static struct
+{
+  int id;
+  const char *expected;
+} libelf_msgs[ELF_E_NUM] =
+  {
+    { ELF_E_NOERROR, "no error" },
+    { ELF_E_UNKNOWN_ERROR, "unknown error" },
+    { ELF_E_UNKNOWN_VERSION, "unknown version" },
+    { ELF_E_UNKNOWN_TYPE, "unknown type" },
+    { ELF_E_INVALID_HANDLE, "invalid `Elf' handle" },
+    { ELF_E_SOURCE_SIZE, "invalid size of source operand" },
+    { ELF_E_DEST_SIZE, "invalid size of destination operand" },
+    { ELF_E_INVALID_ENCODING, "invalid encoding" },
+    { ELF_E_NOMEM, "out of memory" },
+    { ELF_E_INVALID_FILE, "invalid file descriptor" },
+    { ELF_E_INVALID_OP, "invalid operation" },
+    { ELF_E_NO_VERSION, "ELF version not set" },
+    { ELF_E_INVALID_CMD, "invalid command" },
+    { ELF_E_RANGE, "offset out of range" },
+    { ELF_E_ARCHIVE_FMAG, "invalid fmag field in archive header" },
+    { ELF_E_INVALID_ARCHIVE, "invalid archive file" },
+    { ELF_E_NO_ARCHIVE, "descriptor is not for an archive" },
+    { ELF_E_NO_INDEX, "no index available" },
+    { ELF_E_READ_ERROR, "cannot read data from file" },
+    { ELF_E_WRITE_ERROR, "cannot write data to file" },
+    { ELF_E_INVALID_CLASS, "invalid binary class" },
+    { ELF_E_INVALID_INDEX, "invalid section index" },
+    { ELF_E_INVALID_OPERAND, "invalid operand" },
+    { ELF_E_INVALID_SECTION, "invalid section" },
+    { ELF_E_INVALID_COMMAND, "invalid command" },
+    { ELF_E_WRONG_ORDER_EHDR, "executable header not created first" },
+    { ELF_E_FD_DISABLED, "file descriptor disabled" },
+    { ELF_E_FD_MISMATCH, "archive/member file descriptor mismatch" },
+    { ELF_E_OFFSET_RANGE, "offset out of range" },
+    { ELF_E_NOT_NUL_SECTION, "cannot manipulate null section" },
+    { ELF_E_DATA_MISMATCH, "data/scn mismatch" },
+    { ELF_E_INVALID_SECTION_HEADER, "invalid section header" },
+    { ELF_E_INVALID_DATA, "invalid data" },
+    { ELF_E_DATA_ENCODING, "unknown data encoding" },
+    { ELF_E_SECTION_TOO_SMALL, "section `sh_size' too small for data" },
+    { ELF_E_INVALID_ALIGN, "invalid section alignment" },
+    { ELF_E_INVALID_SHENTSIZE, "invalid section entry size" },
+    { ELF_E_UPDATE_RO, "update() for write on read-only file" },
+    { ELF_E_NOFILE, "no such file" },
+    { ELF_E_GROUP_NOT_REL,
+      "only relocatable files can contain section groups" },
+    { ELF_E_INVALID_PHDR,
+      "program header only allowed in executables, shared objects, \
+and core files" },
+    { ELF_E_NO_PHDR, "file has no program header" },
+    { ELF_E_INVALID_OFFSET, "invalid offset" }
+  };
+
+
+int
+main (void)
+{
+  size_t cnt;
+  int result = EXIT_SUCCESS;
+
+  /* Clear the error state.  */
+  (void) elf_errno ();
+
+  /* Check all the messages of libelf.  */
+  for (cnt = 1; cnt < ELF_E_NUM; ++cnt)
+    {
+      const char *str = elf_errmsg (libelf_msgs[cnt].id);
+
+      if (strcmp (str, libelf_msgs[cnt].expected) != 0)
+	{
+	  printf ("libelf msg %zu: expected \"%s\", got \"%s\"\n",
+		  cnt, libelf_msgs[cnt].expected, str);
+	  result = EXIT_FAILURE;
+	}
+    }
+
+  return result;
+}
diff --git a/src/tests/newfile.c b/src/tests/newfile.c
new file mode 100644
index 0000000..5eabdcb
--- /dev/null
+++ b/src/tests/newfile.c
@@ -0,0 +1,170 @@
+/* Copyright (C) 1999, 2000, 2001, 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+
+   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 <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static void
+print_ehdr (Elf32_Ehdr *ehdr)
+{
+  int n;
+
+  for (n = 0; n < EI_NIDENT; ++n)
+    printf (" %02x", ehdr->e_ident[n]);
+
+  printf ("\ntype = %d\nmachine = %d\nversion = %d\nentry = %d\n"
+          "phoff = %d\nshoff = %d\nflags = %d\nehsize = %d\n"
+          "phentsize = %d\nphnum = %d\nshentsize = %d\nshnum = %d\n"
+          "shstrndx = %d\n",
+          ehdr->e_type,
+          ehdr->e_machine,
+          ehdr->e_version,
+          ehdr->e_entry,
+          ehdr->e_phoff,
+          ehdr->e_shoff,
+          ehdr->e_flags,
+          ehdr->e_ehsize,
+          ehdr->e_phentsize,
+          ehdr->e_phnum,
+          ehdr->e_shentsize,
+          ehdr->e_shnum,
+          ehdr->e_shstrndx);
+}
+
+int
+main (int argc, char *argv[] __attribute__ ((unused)))
+{
+  Elf *elf;
+  int result = 0;
+  int fd;
+  char fname[] = "newfile-XXXXXX";
+
+  fd = mkstemp (fname);
+  if (fd == -1)
+    {
+      printf ("cannot create temporary file: %m\n");
+      exit (1);
+    }
+  /* Remove the file when we exit.  */
+  unlink (fname);
+
+  elf_version (EV_CURRENT);
+  elf = elf_begin (fd, ELF_C_WRITE, NULL);
+  if (elf == NULL)
+    {
+      printf ("elf_begin: %s\n", elf_errmsg (-1));
+      result = 1;
+    }
+  else
+    {
+      if (elf32_newehdr (elf) == NULL)
+	{
+	  printf ("elf32_newehdr: %s\n", elf_errmsg (-1));
+	  result = 1;
+	}
+      else
+        {
+	  Elf32_Ehdr *ehdr = elf32_getehdr (elf);
+
+	  if (ehdr == NULL)
+	    {
+	      printf ("elf32_getehdr: %s\n", elf_errmsg (-1));
+	      result = 1;
+	    }
+	  else
+	    {
+	      int i;
+
+	      if (argc > 1)
+		/* Use argc as a debugging flag.  */
+		print_ehdr (ehdr);
+
+	      /* Some tests.  */
+	      for (i = 0; i < EI_NIDENT; ++i)
+		if (ehdr->e_ident[i] != 0)
+		  {
+		    printf ("ehdr->e_ident[%d] != 0\n", i);
+		    result = 1;
+		    break;
+		  }
+
+#define VALUE_TEST(name, val) \
+	      if (ehdr->name != val)					      \
+	        {							      \
+		  printf ("ehdr->%s != %d\n", #name, val);		      \
+		  result = 1;						      \
+		}
+#define ZERO_TEST(name) VALUE_TEST (name, 0)
+	      ZERO_TEST (e_type);
+	      ZERO_TEST (e_machine);
+	      ZERO_TEST (e_version);
+	      ZERO_TEST (e_entry);
+	      ZERO_TEST (e_phoff);
+	      ZERO_TEST (e_shoff);
+	      ZERO_TEST (e_flags);
+	      ZERO_TEST (e_ehsize);
+	      ZERO_TEST (e_phentsize);
+	      ZERO_TEST (e_phnum);
+	      ZERO_TEST (e_shentsize);
+	      ZERO_TEST (e_shnum);
+	      ZERO_TEST (e_shstrndx);
+
+	      if (elf32_newphdr (elf, 10) == NULL)
+		{
+		  printf ("elf32_newphdr: %s\n", elf_errmsg (-1));
+		  result = 1;
+		}
+	      else
+		{
+		  if (argc > 1)
+		    print_ehdr (ehdr);
+
+		  ehdr = elf32_getehdr (elf);
+		  if (ehdr == NULL)
+		    {
+		      printf ("elf32_getehdr (#2): %s\n", elf_errmsg (-1));
+		      result = 1;
+		    }
+		  else
+		    {
+		      ZERO_TEST (e_type);
+		      ZERO_TEST (e_machine);
+		      ZERO_TEST (e_version);
+		      ZERO_TEST (e_entry);
+		      ZERO_TEST (e_phoff);
+		      ZERO_TEST (e_shoff);
+		      ZERO_TEST (e_flags);
+		      ZERO_TEST (e_ehsize);
+		      VALUE_TEST (e_phentsize, (int) sizeof (Elf32_Phdr));
+		      VALUE_TEST (e_phnum, 10);
+		      ZERO_TEST (e_shentsize);
+		      ZERO_TEST (e_shnum);
+		      ZERO_TEST (e_shstrndx);
+		    }
+		}
+	    }
+        }
+
+      (void) elf_end (elf);
+    }
+
+  return result;
+}
diff --git a/src/tests/newscn.c b/src/tests/newscn.c
new file mode 100644
index 0000000..466f2f6
--- /dev/null
+++ b/src/tests/newscn.c
@@ -0,0 +1,66 @@
+/* Copyright (C) 1999, 2000, 2001, 2002, 2005 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 <assert.h>
+#include <fcntl.h>
+#include <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+
+int
+main (void)
+{
+  Elf *elf;
+  int fd;
+  Elf_Scn *section;
+
+  if (elf_version (EV_CURRENT) == EV_NONE)
+    {
+      fprintf (stderr, "library fd of date\n");
+      exit (1);
+    }
+
+  char name[] = "test.XXXXXX";
+  fd = mkstemp (name);
+  if (fd < 0)
+    {
+      fprintf (stderr, "Failed to open fdput file: %s\n", name);
+      exit (1);
+    }
+  unlink (name);
+
+  elf = elf_begin (fd, ELF_C_WRITE, NULL);
+  if (elf == NULL)
+    {
+      fprintf (stderr, "Failed to elf_begin fdput file: %s\n", name);
+      exit (1);
+    }
+
+  section = elf_newscn (elf);
+  section = elf_nextscn (elf, section);
+  assert (section == NULL);
+
+  elf_end (elf);
+  close (fd);
+
+  return 0;
+}
diff --git a/src/tests/rdwrmmap.c b/src/tests/rdwrmmap.c
new file mode 100644
index 0000000..95a4df3
--- /dev/null
+++ b/src/tests/rdwrmmap.c
@@ -0,0 +1,45 @@
+/* Copyright (C) 2006 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 <errno.h>
+#include <error.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <libelf.h>
+
+int
+main (int argc __attribute__ ((unused)), char *argv[])
+{
+  int fd = open (argv[1], O_RDWR);
+  if (fd < 0)
+    error (2, errno, "open: %s", argv[1]);
+
+  if (elf_version (EV_CURRENT) == EV_NONE)
+    error (1, 0, "libelf version mismatch");
+
+  Elf *elf = elf_begin (fd, ELF_C_RDWR_MMAP, NULL);
+  if (elf == NULL)
+    error (1, 0, "elf_begin: %s", elf_errmsg (-1));
+
+  if (elf_update (elf, ELF_C_WRITE) < 0)
+    error (1, 0, "elf_update: %s", elf_errmsg (-1));
+
+  elf_end (elf);
+  close (fd);
+
+  return 0;
+}
diff --git a/src/tests/rerequest_tag.c b/src/tests/rerequest_tag.c
new file mode 100644
index 0000000..d0bf5f2
--- /dev/null
+++ b/src/tests/rerequest_tag.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 2011 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 ELFUTILS_HEADER(dw)
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+int
+main (int argc, char **argv)
+{
+  assert (argc > 1);
+
+  int i = open (argv[1], O_RDONLY);
+  assert (i >= 0);
+
+  Dwarf *dw = dwarf_begin (i, DWARF_C_READ);
+  assert (dw != NULL);
+
+  Dwarf_Die die_mem, *die;
+  die = dwarf_offdie (dw, 11, &die_mem);
+  assert (die == &die_mem);
+  assert (dwarf_tag (die) == 0);
+
+  die = dwarf_offdie (dw, 11, &die_mem);
+  assert (die == &die_mem);
+  assert (dwarf_tag (die) == 0);
+
+  return 0;
+}
diff --git a/src/tests/run-addr2line-i-lex-test.sh b/src/tests/run-addr2line-i-lex-test.sh
new file mode 100755
index 0000000..c391fd9
--- /dev/null
+++ b/src/tests/run-addr2line-i-lex-test.sh
@@ -0,0 +1,71 @@
+#! /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++ x.cpp -g -fPIC -olibx.so -shared -O3 -fvisibility=hidden
+#
+# void foobar()
+# {
+#   __asm__ ( "nop" ::: );
+# }
+#
+# void foo()
+# {
+#   {
+#     void (*bar) () = foobar;
+#     bar();
+#   }
+# }
+
+testfiles testfile-lex-inlines
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-lex-inlines 0x0000000000000680 <<\EOF
+/tmp/x.cpp:5
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-lex-inlines 0x0000000000000681 <<\EOF
+/tmp/x.cpp:5
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-lex-inlines 0x0000000000000690 <<\EOF
+/tmp/x.cpp:5
+/tmp/x.cpp:12
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-lex-inlines 0x0000000000000691 <<\EOF
+/tmp/x.cpp:5
+/tmp/x.cpp:12
+EOF
+
+# All together now (plus function names).
+testrun_compare ${abs_top_builddir}/src/addr2line -f -i -e testfile-lex-inlines 0x0000000000000680 0x0000000000000681 0x0000000000000690 0x0000000000000691 <<\EOF
+_Z6foobarv
+/tmp/x.cpp:5
+_Z6foobarv
+/tmp/x.cpp:5
+foobar inlined at /tmp/x.cpp:12 in _Z3foov
+/tmp/x.cpp:5
+_Z3foov
+/tmp/x.cpp:12
+foobar inlined at /tmp/x.cpp:12 in _Z3foov
+/tmp/x.cpp:5
+_Z3foov
+/tmp/x.cpp:12
+EOF
+
+exit 0
diff --git a/src/tests/run-addr2line-i-test.sh b/src/tests/run-addr2line-i-test.sh
new file mode 100755
index 0000000..183916c
--- /dev/null
+++ b/src/tests/run-addr2line-i-test.sh
@@ -0,0 +1,147 @@
+#! /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 0x00000000000005f0 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
+_Z2fuv
+/tmp/x.cpp:31
+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
diff --git a/src/tests/run-addr2line-test.sh b/src/tests/run-addr2line-test.sh
new file mode 100755
index 0000000..768006b
--- /dev/null
+++ b/src/tests/run-addr2line-test.sh
@@ -0,0 +1,74 @@
+#! /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
diff --git a/src/tests/run-addrcfi.sh b/src/tests/run-addrcfi.sh
new file mode 100755
index 0000000..5d33246
--- /dev/null
+++ b/src/tests/run-addrcfi.sh
@@ -0,0 +1,2650 @@
+#! /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
diff --git a/src/tests/run-addrname-test.sh b/src/tests/run-addrname-test.sh
new file mode 100755
index 0000000..f954ee4
--- /dev/null
+++ b/src/tests/run-addrname-test.sh
@@ -0,0 +1,360 @@
+#! /bin/sh
+# Copyright (C) 2007, 2008 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 testfile34 testfile38 testfile41 testfile49
+
+testrun_compare ${abs_top_builddir}/src/addr2line -f -e testfile34 \
+				 0x08048074 0x08048075 0x08048076 \
+				 0x08049078 0x08048080 0x08049080 <<\EOF
+foo
+??:0
+bar
+??:0
+_etext
+??:0
+data1
+??:0
+??
+??:0
+_end
+??:0
+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
+t3_global_after_0+0x1
+??:0
+(.text)+0x31a
+??:0
+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
+??:0
+EOF
+
+testfiles testfile12 testfile14
+tempfiles testmaps
+
+cat > testmaps <<EOF
+00400000-00401000 r-xp 00000000 fd:01 4006812                            `pwd`/testfile14
+00500000-00501000 rw-p 00000000 fd:01 4006812                            `pwd`/testfile14
+01000000-01001000 r-xp 00000000 fd:01 1234567				 `pwd`/testfile12
+01100000-01011000 rw-p 00000000 fd:01 1234567				 `pwd`/testfile12
+2aaaaaaab000-2aaaaaaad000 rw-p 2aaaaaaab000 00:00 0 
+2aaaaaae2000-2aaaaaae3000 rw-p 2aaaaaae2000 00:00 0 
+7fff61068000-7fff6107d000 rw-p 7ffffffea000 00:00 0                      [stack]
+7fff611fe000-7fff61200000 r-xp 7fff611fe000 00:00 0                      [vdso]
+ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
+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
+/home/drepper/local/elfutils-build/20030710/u.c:5
+EOF
+
+#	.section .text
+#	nop #0
+#sizeless_foo:
+#	nop #1
+#	nop #2
+#sized_bar:
+#	nop #3
+#	nop #4
+#sizeless_baz:
+#	nop #5
+#	nop #6
+#	.size sized_bar, . - sized_bar
+#	nop #7
+#	nop #8
+#sizeless_x:
+#	nop #9
+#	.org 0x100
+#	nop #0
+#	.globl global_outer
+#global_outer:
+#	nop #1
+#	nop #2
+#	.globl global_in_global
+#global_in_global:
+#	nop #3
+#	nop #4
+#	.size global_in_global, . - global_in_global
+#local_in_global:
+#	nop #5 
+#	nop #6 
+#	.size local_in_global, . - local_in_global
+#	nop #7
+#	nop #8
+#.Lsizeless1:
+#	nop #9
+#	nop #10
+#	.size global_outer, . - global_outer
+#	nop #11
+#	.org 0x200
+#	nop #0
+#local_outer:
+#	nop #1
+#	nop #2
+#	.globl global_in_local
+#global_in_local:
+#	nop #3
+#	nop #4
+#	.size global_in_local, . - global_in_local
+#local_in_local:
+#	nop #5 
+#	nop #6 
+#	.size local_in_local, . - local_in_local
+#	nop #7
+#	nop #8
+#.Lsizeless2:
+#	nop #9
+#	nop #10
+#	.size local_outer, . - local_outer
+#	nop #11
+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 \
+		0x200 0x201 0x202 0x203 0x204 0x205 \
+		0x206 0x207 0x208 0x209 0x20a 0x20b <<\EOF
+(.text)+0
+??:0
+sizeless_foo
+??:0
+sizeless_foo+0x1
+??:0
+sized_bar
+??:0
+sized_bar+0x1
+??:0
+sized_bar+0x2
+??:0
+sized_bar+0x3
+??:0
+(.text)+0x7
+??:0
+(.text)+0x8
+??:0
+sizeless_x
+??:0
+sizeless_x+0xf7
+??:0
+global_outer
+??:0
+global_outer+0x1
+??:0
+global_in_global
+??:0
+global_in_global+0x1
+??:0
+global_outer+0x4
+??:0
+global_outer+0x5
+??:0
+global_outer+0x6
+??:0
+global_outer+0x7
+??:0
+global_outer+0x8
+??:0
+global_outer+0x9
+??:0
+(.text)+0x10b
+??:0
+(.text)+0x200
+??:0
+local_outer
+??:0
+local_outer+0x1
+??:0
+global_in_local
+??:0
+global_in_local+0x1
+??:0
+local_in_local
+??:0
+local_in_local+0x1
+??:0
+local_outer+0x6
+??:0
+local_outer+0x7
+??:0
+local_outer+0x8
+??:0
+local_outer+0x9
+??:0
+(.text)+0x20b
+??: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
diff --git a/src/tests/run-addrscopes.sh b/src/tests/run-addrscopes.sh
new file mode 100755
index 0000000..4f5c9d7
--- /dev/null
+++ b/src/tests/run-addrscopes.sh
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2005 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 testfile22
+
+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]
+        function (0x2e): 0x8048348 (tests/foo.c:5) .. 0x804835b (tests/foo.c:14)
+            local                         [    8f]
+EOF
+
+test_cleanup
+
+testfiles testfile24
+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)
+            y                             [    9d]
+            x                             [    a2]
+            x (abstract)
+            y (abstract)
+EOF
+
+exit 0
diff --git a/src/tests/run-aggregate-size.sh b/src/tests/run-aggregate-size.sh
new file mode 100755
index 0000000..42b0742
--- /dev/null
+++ b/src/tests/run-aggregate-size.sh
@@ -0,0 +1,105 @@
+#! /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
+
+# char c;
+# int i;
+# long l;
+#
+# void *v;
+#
+# struct s
+# {
+#   char *a;
+#   int i;
+# } s;
+#
+# char ca[16];
+# int ia[32];
+# void *va[64];
+# struct s sa[8];
+
+# On x86_64 (LP64):
+# gcc -g -c -o testfile-sizes1.o sizes.c
+# clang -g -c -o testfile-sizes2.o sizes.c
+
+# const char c;
+# volatile int i;
+# const volatile long l;
+#
+# void * restrict v;
+#
+# struct s
+# {
+#   const char *a;
+#   volatile int i;
+# } s;
+#
+# const char ca[16];
+# volatile int ia[32];
+# const volatile void * const volatile restrict va[64];
+# struct s sa[8];
+#
+# typedef const int foo;
+# typedef volatile foo bar;
+# foo f;
+# bar b;
+#
+# gcc -std=c99 -g -c -o testfile-sizes3.o sizes.c
+
+testfiles testfile-sizes1.o testfile-sizes2.o testfile-sizes3.o
+
+testrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes1.o <<\EOF
+c size 1
+i size 4
+l size 8
+v size 8
+s size 16
+ca size 16
+ia size 128
+va size 512
+sa size 128
+EOF
+
+testrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes2.o <<\EOF
+c size 1
+i size 4
+l size 8
+v size 8
+s size 16
+ca size 16
+ia size 128
+va size 512
+sa size 128
+EOF
+
+testrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes3.o <<\EOF
+c size 1
+i size 4
+l size 8
+v size 8
+s size 16
+ca size 16
+ia size 128
+va size 512
+sa size 128
+f size 4
+b size 4
+EOF
+
+exit 0
diff --git a/src/tests/run-alldts.sh b/src/tests/run-alldts.sh
new file mode 100755
index 0000000..6a9a9ec
--- /dev/null
+++ b/src/tests/run-alldts.sh
@@ -0,0 +1,98 @@
+#! /bin/sh
+# Copyright (C) 2011 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
+
+tempfiles testfile-alldts
+
+# This will produce "testfile-alldts" file
+testrun ${abs_builddir}/alldts
+
+testrun_compare ${abs_top_builddir}/src/readelf -d testfile-alldts <<\EOF
+
+Dynamic segment contains 66 entries:
+ Addr: 0x000001a0  Offset: 0x000078  Link to section: [ 0] ''
+  Type              Value
+  NULL              
+  NEEDED            Shared library: [(null)]
+  PLTRELSZ          3735928559 (bytes)
+  PLTGOT            0xdeadbeef
+  HASH              0xdeadbeef
+  STRTAB            0xdeadbeef
+  SYMTAB            0xdeadbeef
+  RELA              0xdeadbeef
+  RELASZ            3735928559 (bytes)
+  RELAENT           3735928559 (bytes)
+  STRSZ             3735928559 (bytes)
+  SYMENT            3735928559 (bytes)
+  INIT              0xdeadbeef
+  FINI              0xdeadbeef
+  SONAME            Library soname: [(null)]
+  RPATH             Library rpath: [(null)]
+  SYMBOLIC          0xdeadbeef
+  REL               0xdeadbeef
+  RELSZ             3735928559 (bytes)
+  RELENT            3735928559 (bytes)
+  PLTREL            ???
+  DEBUG             
+  TEXTREL           
+  JMPREL            0xdeadbeef
+  BIND_NOW          
+  INIT_ARRAY        0xdeadbeef
+  FINI_ARRAY        0xdeadbeef
+  INIT_ARRAYSZ      3735928559 (bytes)
+  FINI_ARRAYSZ      3735928559 (bytes)
+  RUNPATH           Library runpath: [(null)]
+  FLAGS             ORIGIN SYMBOLIC TEXTREL BIND_NOW 0xdeadbee0
+  PREINIT_ARRAY     0xdeadbeef
+  PREINIT_ARRAY     0xdeadbeef
+  PREINIT_ARRAYSZ   0xdeadbeef
+  VERSYM            0xdeadbeef
+  GNU_PRELINKED     0xdeadbeef
+  GNU_CONFLICTSZ    3735928559 (bytes)
+  GNU_LIBLISTSZ     3735928559 (bytes)
+  CHECKSUM          0xdeadbeef
+  PLTPADSZ          3735928559 (bytes)
+  MOVEENT           3735928559 (bytes)
+  MOVESZ            3735928559 (bytes)
+  FEATURE_1         PARINIT CONFEXP 0xdeadbeec
+  POSFLAG_1         LAZYLOAD GROUPPERM 0xdeadbeec
+  SYMINSZ           3735928559 (bytes)
+  SYMINENT          3735928559 (bytes)
+  GNU_HASH          0xdeadbeef
+  TLSDESC_PLT       0xdeadbeef
+  TLSDESC_GOT       0xdeadbeef
+  GNU_CONFLICT      0xdeadbeef
+  GNU_LIBLIST       0xdeadbeef
+  CONFIG            0xdeadbeef
+  DEPAUDIT          0xdeadbeef
+  AUDIT             0xdeadbeef
+  PLTPAD            0xdeadbeef
+  MOVETAB           0xdeadbeef
+  SYMINFO           0xdeadbeef
+  RELACOUNT         3735928559
+  RELCOUNT          3735928559
+  FLAGS_1           NOW GLOBAL GROUP NODELETE INITFIRST NOOPEN ORIGIN TRANS INTERPOSE NODEFLIB NODUMP CONFALT DISPRELDNE DISPRELPND 0xdeac0000
+  VERDEF            0xdeadbeef
+  VERDEFNUM         3735928559
+  VERNEED           0xdeadbeef
+  VERNEEDNUM        3735928559
+  AUXILIARY         0xdeadbeef
+  FILTER            0xdeadbeef
+EOF
+
+exit 0
diff --git a/src/tests/run-allfcts-multi.sh b/src/tests/run-allfcts-multi.sh
new file mode 100755
index 0000000..727b76e
--- /dev/null
+++ b/src/tests/run-allfcts-multi.sh
@@ -0,0 +1,56 @@
+#! /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
diff --git a/src/tests/run-allfcts.sh b/src/tests/run-allfcts.sh
new file mode 100755
index 0000000..6eaf13c
--- /dev/null
+++ b/src/tests/run-allfcts.sh
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2005, 2013 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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 testfile8
+
+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
+/shoggoth/drepper/b.c:4:bar
+/shoggoth/drepper/f.c:3:foo
+/shoggoth/drepper/m.c:5:main
+/home/drepper/gnu/elfutils/build/src/../../src/strip.c:107:main
+/home/drepper/gnu/elfutils/build/src/../../src/strip.c:159:print_version
+/home/drepper/gnu/elfutils/build/src/../../src/strip.c:173:parse_opt
+/home/drepper/gnu/elfutils/build/src/../../src/strip.c:201:more_help
+/home/drepper/gnu/elfutils/build/src/../../src/strip.c:217:process_file
+/usr/include/sys/stat.h:375:stat64
+/home/drepper/gnu/elfutils/build/src/../../src/strip.c:291:crc32_file
+/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
diff --git a/src/tests/run-allregs.sh b/src/tests/run-allregs.sh
new file mode 100755
index 0000000..6f3862e
--- /dev/null
+++ b/src/tests/run-allregs.sh
@@ -0,0 +1,2799 @@
+#! /bin/sh
+# 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
+# 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
+
+regs_test()
+{
+  tempfiles good.regs
+  cat > good.regs
+  testfiles "$@"
+  for f; do testrun_compare ${abs_builddir}/allregs -e $f < good.regs; done
+  test_cleanup
+}
+
+regs_test testfile11 <<\EOF
+integer registers:
+	  0: %eax (eax), signed 32 bits
+	  1: %ecx (ecx), signed 32 bits
+	  2: %edx (edx), signed 32 bits
+	  3: %ebx (ebx), signed 32 bits
+	  4: %esp (esp), address 32 bits
+	  5: %ebp (ebp), address 32 bits
+	  6: %esi (esi), signed 32 bits
+	  7: %edi (edi), signed 32 bits
+	  8: %eip (eip), address 32 bits
+	  9: %eflags (eflags), unsigned 32 bits
+	 10: %trapno (trapno), unsigned 32 bits
+FPU-control registers:
+	 37: %fctrl (fctrl), unsigned 16 bits
+	 38: %fstat (fstat), unsigned 16 bits
+	 39: %mxcsr (mxcsr), unsigned 32 bits
+MMX registers:
+	 29: %mm0 (mm0), unsigned 64 bits
+	 30: %mm1 (mm1), unsigned 64 bits
+	 31: %mm2 (mm2), unsigned 64 bits
+	 32: %mm3 (mm3), unsigned 64 bits
+	 33: %mm4 (mm4), unsigned 64 bits
+	 34: %mm5 (mm5), unsigned 64 bits
+	 35: %mm6 (mm6), unsigned 64 bits
+	 36: %mm7 (mm7), unsigned 64 bits
+SSE registers:
+	 21: %xmm0 (xmm0), unsigned 128 bits
+	 22: %xmm1 (xmm1), unsigned 128 bits
+	 23: %xmm2 (xmm2), unsigned 128 bits
+	 24: %xmm3 (xmm3), unsigned 128 bits
+	 25: %xmm4 (xmm4), unsigned 128 bits
+	 26: %xmm5 (xmm5), unsigned 128 bits
+	 27: %xmm6 (xmm6), unsigned 128 bits
+	 28: %xmm7 (xmm7), unsigned 128 bits
+segment registers:
+	 40: %es (es), unsigned 16 bits
+	 41: %cs (cs), unsigned 16 bits
+	 42: %ss (ss), unsigned 16 bits
+	 43: %ds (ds), unsigned 16 bits
+	 44: %fs (fs), unsigned 16 bits
+	 45: %gs (gs), unsigned 16 bits
+x87 registers:
+	 11: %st0 (st0), float 80 bits
+	 12: %st1 (st1), float 80 bits
+	 13: %st2 (st2), float 80 bits
+	 14: %st3 (st3), float 80 bits
+	 15: %st4 (st4), float 80 bits
+	 16: %st5 (st5), float 80 bits
+	 17: %st6 (st6), float 80 bits
+	 18: %st7 (st7), float 80 bits
+EOF
+
+regs_test testfile12 <<\EOF
+integer registers:
+	  0: %rax (rax), signed 64 bits
+	  1: %rdx (rdx), signed 64 bits
+	  2: %rcx (rcx), signed 64 bits
+	  3: %rbx (rbx), signed 64 bits
+	  4: %rsi (rsi), signed 64 bits
+	  5: %rdi (rdi), signed 64 bits
+	  6: %rbp (rbp), address 64 bits
+	  7: %rsp (rsp), address 64 bits
+	  8: %r8 (r8), signed 64 bits
+	  9: %r9 (r9), signed 64 bits
+	 10: %r10 (r10), signed 64 bits
+	 11: %r11 (r11), signed 64 bits
+	 12: %r12 (r12), signed 64 bits
+	 13: %r13 (r13), signed 64 bits
+	 14: %r14 (r14), signed 64 bits
+	 15: %r15 (r15), signed 64 bits
+	 16: %rip (rip), address 64 bits
+	 49: %rflags (rflags), unsigned 64 bits
+MMX registers:
+	 41: %mm0 (mm0), unsigned 64 bits
+	 42: %mm1 (mm1), unsigned 64 bits
+	 43: %mm2 (mm2), unsigned 64 bits
+	 44: %mm3 (mm3), unsigned 64 bits
+	 45: %mm4 (mm4), unsigned 64 bits
+	 46: %mm5 (mm5), unsigned 64 bits
+	 47: %mm6 (mm6), unsigned 64 bits
+	 48: %mm7 (mm7), unsigned 64 bits
+SSE registers:
+	 17: %xmm0 (xmm0), unsigned 128 bits
+	 18: %xmm1 (xmm1), unsigned 128 bits
+	 19: %xmm2 (xmm2), unsigned 128 bits
+	 20: %xmm3 (xmm3), unsigned 128 bits
+	 21: %xmm4 (xmm4), unsigned 128 bits
+	 22: %xmm5 (xmm5), unsigned 128 bits
+	 23: %xmm6 (xmm6), unsigned 128 bits
+	 24: %xmm7 (xmm7), unsigned 128 bits
+	 25: %xmm8 (xmm8), unsigned 128 bits
+	 26: %xmm9 (xmm9), unsigned 128 bits
+	 27: %xmm10 (xmm10), unsigned 128 bits
+	 28: %xmm11 (xmm11), unsigned 128 bits
+	 29: %xmm12 (xmm12), unsigned 128 bits
+	 30: %xmm13 (xmm13), unsigned 128 bits
+	 31: %xmm14 (xmm14), unsigned 128 bits
+	 32: %xmm15 (xmm15), unsigned 128 bits
+control registers:
+	 62: %tr (tr), unsigned 64 bits
+	 63: %ldtr (ldtr), unsigned 64 bits
+	 64: %mxcsr (mxcsr), unsigned 64 bits
+	 65: %fcw (fcw), unsigned 16 bits
+	 66: %fsw (fsw), unsigned 16 bits
+segment registers:
+	 50: %es (es), unsigned 16 bits
+	 51: %cs (cs), unsigned 16 bits
+	 52: %ss (ss), unsigned 16 bits
+	 53: %ds (ds), unsigned 16 bits
+	 54: %fs (fs), unsigned 16 bits
+	 55: %gs (gs), unsigned 16 bits
+	 58: %fs.base (fs.base), address 64 bits
+	 59: %gs.base (gs.base), address 64 bits
+x87 registers:
+	 33: %st0 (st0), float 80 bits
+	 34: %st1 (st1), float 80 bits
+	 35: %st2 (st2), float 80 bits
+	 36: %st3 (st3), float 80 bits
+	 37: %st4 (st4), float 80 bits
+	 38: %st5 (st5), float 80 bits
+	 39: %st6 (st6), float 80 bits
+	 40: %st7 (st7), float 80 bits
+EOF
+
+regs_test testfile2 <<\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: r13 (r13), signed 32 bits
+	 14: r14 (r14), signed 32 bits
+	 15: r15 (r15), signed 32 bits
+	 16: r16 (r16), signed 32 bits
+	 17: r17 (r17), signed 32 bits
+	 18: r18 (r18), signed 32 bits
+	 19: r19 (r19), signed 32 bits
+	 20: r20 (r20), signed 32 bits
+	 21: r21 (r21), signed 32 bits
+	 22: r22 (r22), signed 32 bits
+	 23: r23 (r23), signed 32 bits
+	 24: r24 (r24), signed 32 bits
+	 25: r25 (r25), signed 32 bits
+	 26: r26 (r26), signed 32 bits
+	 27: r27 (r27), signed 32 bits
+	 28: r28 (r28), signed 32 bits
+	 29: r29 (r29), signed 32 bits
+	 30: r30 (r30), signed 32 bits
+	 31: r31 (r31), signed 32 bits
+	 64: cr (cr), unsigned 32 bits
+	 66: msr (msr), unsigned 32 bits
+FPU registers:
+	 32: f0 (f0), float 64 bits
+	 33: f1 (f1), float 64 bits
+	 34: f2 (f2), float 64 bits
+	 35: f3 (f3), float 64 bits
+	 36: f4 (f4), float 64 bits
+	 37: f5 (f5), float 64 bits
+	 38: f6 (f6), float 64 bits
+	 39: f7 (f7), float 64 bits
+	 40: f8 (f8), float 64 bits
+	 41: f9 (f9), float 64 bits
+	 42: f10 (f10), float 64 bits
+	 43: f11 (f11), float 64 bits
+	 44: f12 (f12), float 64 bits
+	 45: f13 (f13), float 64 bits
+	 46: f14 (f14), float 64 bits
+	 47: f15 (f15), float 64 bits
+	 48: f16 (f16), float 64 bits
+	 49: f17 (f17), float 64 bits
+	 50: f18 (f18), float 64 bits
+	 51: f19 (f19), float 64 bits
+	 52: f20 (f20), float 64 bits
+	 53: f21 (f21), float 64 bits
+	 54: f22 (f22), float 64 bits
+	 55: f23 (f23), float 64 bits
+	 56: f24 (f24), float 64 bits
+	 57: f25 (f25), float 64 bits
+	 58: f26 (f26), float 64 bits
+	 59: f27 (f27), float 64 bits
+	 60: f28 (f28), float 64 bits
+	 61: f29 (f29), float 64 bits
+	 62: f30 (f30), float 64 bits
+	 63: f31 (f31), float 64 bits
+	 65: fpscr (fpscr), unsigned 32 bits
+privileged registers:
+	 70: sr0 (sr0), unsigned 32 bits
+	 71: sr1 (sr1), unsigned 32 bits
+	 72: sr2 (sr2), unsigned 32 bits
+	 73: sr3 (sr3), unsigned 32 bits
+	 74: sr4 (sr4), unsigned 32 bits
+	 75: sr5 (sr5), unsigned 32 bits
+	 76: sr6 (sr6), unsigned 32 bits
+	 77: sr7 (sr7), unsigned 32 bits
+	 78: sr8 (sr8), unsigned 32 bits
+	 79: sr9 (sr9), unsigned 32 bits
+	 80: sr10 (sr10), unsigned 32 bits
+	 81: sr11 (sr11), unsigned 32 bits
+	 82: sr12 (sr12), unsigned 32 bits
+	 83: sr13 (sr13), unsigned 32 bits
+	 84: sr14 (sr14), unsigned 32 bits
+	 85: sr15 (sr15), unsigned 32 bits
+	100: mq (mq), unsigned 32 bits
+	101: xer (xer), unsigned 32 bits
+	102: spr2 (spr2), unsigned 32 bits
+	103: spr3 (spr3), unsigned 32 bits
+	104: spr4 (spr4), unsigned 32 bits
+	105: spr5 (spr5), unsigned 32 bits
+	106: spr6 (spr6), unsigned 32 bits
+	107: spr7 (spr7), unsigned 32 bits
+	108: lr (lr), unsigned 32 bits
+	109: ctr (ctr), unsigned 32 bits
+	110: spr10 (spr10), unsigned 32 bits
+	111: spr11 (spr11), unsigned 32 bits
+	112: spr12 (spr12), unsigned 32 bits
+	113: spr13 (spr13), unsigned 32 bits
+	114: spr14 (spr14), unsigned 32 bits
+	115: spr15 (spr15), unsigned 32 bits
+	116: spr16 (spr16), unsigned 32 bits
+	117: spr17 (spr17), unsigned 32 bits
+	118: dsisr (dsisr), unsigned 32 bits
+	119: dar (dar), unsigned 32 bits
+	120: spr20 (spr20), unsigned 32 bits
+	121: spr21 (spr21), unsigned 32 bits
+	122: dec (dec), unsigned 32 bits
+	123: spr23 (spr23), unsigned 32 bits
+	124: spr24 (spr24), unsigned 32 bits
+	125: spr25 (spr25), unsigned 32 bits
+	126: spr26 (spr26), unsigned 32 bits
+	127: spr27 (spr27), unsigned 32 bits
+	128: spr28 (spr28), unsigned 32 bits
+	129: spr29 (spr29), unsigned 32 bits
+	130: spr30 (spr30), unsigned 32 bits
+	131: spr31 (spr31), unsigned 32 bits
+	132: spr32 (spr32), unsigned 32 bits
+	133: spr33 (spr33), unsigned 32 bits
+	134: spr34 (spr34), unsigned 32 bits
+	135: spr35 (spr35), unsigned 32 bits
+	136: spr36 (spr36), unsigned 32 bits
+	137: spr37 (spr37), unsigned 32 bits
+	138: spr38 (spr38), unsigned 32 bits
+	139: spr39 (spr39), unsigned 32 bits
+	140: spr40 (spr40), unsigned 32 bits
+	141: spr41 (spr41), unsigned 32 bits
+	142: spr42 (spr42), unsigned 32 bits
+	143: spr43 (spr43), unsigned 32 bits
+	144: spr44 (spr44), unsigned 32 bits
+	145: spr45 (spr45), unsigned 32 bits
+	146: spr46 (spr46), unsigned 32 bits
+	147: spr47 (spr47), unsigned 32 bits
+	148: spr48 (spr48), unsigned 32 bits
+	149: spr49 (spr49), unsigned 32 bits
+	150: spr50 (spr50), unsigned 32 bits
+	151: spr51 (spr51), unsigned 32 bits
+	152: spr52 (spr52), unsigned 32 bits
+	153: spr53 (spr53), unsigned 32 bits
+	154: spr54 (spr54), unsigned 32 bits
+	155: spr55 (spr55), unsigned 32 bits
+	156: spr56 (spr56), unsigned 32 bits
+	157: spr57 (spr57), unsigned 32 bits
+	158: spr58 (spr58), unsigned 32 bits
+	159: spr59 (spr59), unsigned 32 bits
+	160: spr60 (spr60), unsigned 32 bits
+	161: spr61 (spr61), unsigned 32 bits
+	162: spr62 (spr62), unsigned 32 bits
+	163: spr63 (spr63), unsigned 32 bits
+	164: spr64 (spr64), unsigned 32 bits
+	165: spr65 (spr65), unsigned 32 bits
+	166: spr66 (spr66), unsigned 32 bits
+	167: spr67 (spr67), unsigned 32 bits
+	168: spr68 (spr68), unsigned 32 bits
+	169: spr69 (spr69), unsigned 32 bits
+	170: spr70 (spr70), unsigned 32 bits
+	171: spr71 (spr71), unsigned 32 bits
+	172: spr72 (spr72), unsigned 32 bits
+	173: spr73 (spr73), unsigned 32 bits
+	174: spr74 (spr74), unsigned 32 bits
+	175: spr75 (spr75), unsigned 32 bits
+	176: spr76 (spr76), unsigned 32 bits
+	177: spr77 (spr77), unsigned 32 bits
+	178: spr78 (spr78), unsigned 32 bits
+	179: spr79 (spr79), unsigned 32 bits
+	180: spr80 (spr80), unsigned 32 bits
+	181: spr81 (spr81), unsigned 32 bits
+	182: spr82 (spr82), unsigned 32 bits
+	183: spr83 (spr83), unsigned 32 bits
+	184: spr84 (spr84), unsigned 32 bits
+	185: spr85 (spr85), unsigned 32 bits
+	186: spr86 (spr86), unsigned 32 bits
+	187: spr87 (spr87), unsigned 32 bits
+	188: spr88 (spr88), unsigned 32 bits
+	189: spr89 (spr89), unsigned 32 bits
+	190: spr90 (spr90), unsigned 32 bits
+	191: spr91 (spr91), unsigned 32 bits
+	192: spr92 (spr92), unsigned 32 bits
+	193: spr93 (spr93), unsigned 32 bits
+	194: spr94 (spr94), unsigned 32 bits
+	195: spr95 (spr95), unsigned 32 bits
+	196: spr96 (spr96), unsigned 32 bits
+	197: spr97 (spr97), unsigned 32 bits
+	198: spr98 (spr98), unsigned 32 bits
+	199: spr99 (spr99), unsigned 32 bits
+	200: spr100 (spr100), unsigned 32 bits
+	201: spr101 (spr101), unsigned 32 bits
+	202: spr102 (spr102), unsigned 32 bits
+	203: spr103 (spr103), unsigned 32 bits
+	204: spr104 (spr104), unsigned 32 bits
+	205: spr105 (spr105), unsigned 32 bits
+	206: spr106 (spr106), unsigned 32 bits
+	207: spr107 (spr107), unsigned 32 bits
+	208: spr108 (spr108), unsigned 32 bits
+	209: spr109 (spr109), unsigned 32 bits
+	210: spr110 (spr110), unsigned 32 bits
+	211: spr111 (spr111), unsigned 32 bits
+	212: spr112 (spr112), unsigned 32 bits
+	213: spr113 (spr113), unsigned 32 bits
+	214: spr114 (spr114), unsigned 32 bits
+	215: spr115 (spr115), unsigned 32 bits
+	216: spr116 (spr116), unsigned 32 bits
+	217: spr117 (spr117), unsigned 32 bits
+	218: spr118 (spr118), unsigned 32 bits
+	219: spr119 (spr119), unsigned 32 bits
+	220: spr120 (spr120), unsigned 32 bits
+	221: spr121 (spr121), unsigned 32 bits
+	222: spr122 (spr122), unsigned 32 bits
+	223: spr123 (spr123), unsigned 32 bits
+	224: spr124 (spr124), unsigned 32 bits
+	225: spr125 (spr125), unsigned 32 bits
+	226: spr126 (spr126), unsigned 32 bits
+	227: spr127 (spr127), unsigned 32 bits
+	228: spr128 (spr128), unsigned 32 bits
+	229: spr129 (spr129), unsigned 32 bits
+	230: spr130 (spr130), unsigned 32 bits
+	231: spr131 (spr131), unsigned 32 bits
+	232: spr132 (spr132), unsigned 32 bits
+	233: spr133 (spr133), unsigned 32 bits
+	234: spr134 (spr134), unsigned 32 bits
+	235: spr135 (spr135), unsigned 32 bits
+	236: spr136 (spr136), unsigned 32 bits
+	237: spr137 (spr137), unsigned 32 bits
+	238: spr138 (spr138), unsigned 32 bits
+	239: spr139 (spr139), unsigned 32 bits
+	240: spr140 (spr140), unsigned 32 bits
+	241: spr141 (spr141), unsigned 32 bits
+	242: spr142 (spr142), unsigned 32 bits
+	243: spr143 (spr143), unsigned 32 bits
+	244: spr144 (spr144), unsigned 32 bits
+	245: spr145 (spr145), unsigned 32 bits
+	246: spr146 (spr146), unsigned 32 bits
+	247: spr147 (spr147), unsigned 32 bits
+	248: spr148 (spr148), unsigned 32 bits
+	249: spr149 (spr149), unsigned 32 bits
+	250: spr150 (spr150), unsigned 32 bits
+	251: spr151 (spr151), unsigned 32 bits
+	252: spr152 (spr152), unsigned 32 bits
+	253: spr153 (spr153), unsigned 32 bits
+	254: spr154 (spr154), unsigned 32 bits
+	255: spr155 (spr155), unsigned 32 bits
+	256: spr156 (spr156), unsigned 32 bits
+	257: spr157 (spr157), unsigned 32 bits
+	258: spr158 (spr158), unsigned 32 bits
+	259: spr159 (spr159), unsigned 32 bits
+	260: spr160 (spr160), unsigned 32 bits
+	261: spr161 (spr161), unsigned 32 bits
+	262: spr162 (spr162), unsigned 32 bits
+	263: spr163 (spr163), unsigned 32 bits
+	264: spr164 (spr164), unsigned 32 bits
+	265: spr165 (spr165), unsigned 32 bits
+	266: spr166 (spr166), unsigned 32 bits
+	267: spr167 (spr167), unsigned 32 bits
+	268: spr168 (spr168), unsigned 32 bits
+	269: spr169 (spr169), unsigned 32 bits
+	270: spr170 (spr170), unsigned 32 bits
+	271: spr171 (spr171), unsigned 32 bits
+	272: spr172 (spr172), unsigned 32 bits
+	273: spr173 (spr173), unsigned 32 bits
+	274: spr174 (spr174), unsigned 32 bits
+	275: spr175 (spr175), unsigned 32 bits
+	276: spr176 (spr176), unsigned 32 bits
+	277: spr177 (spr177), unsigned 32 bits
+	278: spr178 (spr178), unsigned 32 bits
+	279: spr179 (spr179), unsigned 32 bits
+	280: spr180 (spr180), unsigned 32 bits
+	281: spr181 (spr181), unsigned 32 bits
+	282: spr182 (spr182), unsigned 32 bits
+	283: spr183 (spr183), unsigned 32 bits
+	284: spr184 (spr184), unsigned 32 bits
+	285: spr185 (spr185), unsigned 32 bits
+	286: spr186 (spr186), unsigned 32 bits
+	287: spr187 (spr187), unsigned 32 bits
+	288: spr188 (spr188), unsigned 32 bits
+	289: spr189 (spr189), unsigned 32 bits
+	290: spr190 (spr190), unsigned 32 bits
+	291: spr191 (spr191), unsigned 32 bits
+	292: spr192 (spr192), unsigned 32 bits
+	293: spr193 (spr193), unsigned 32 bits
+	294: spr194 (spr194), unsigned 32 bits
+	295: spr195 (spr195), unsigned 32 bits
+	296: spr196 (spr196), unsigned 32 bits
+	297: spr197 (spr197), unsigned 32 bits
+	298: spr198 (spr198), unsigned 32 bits
+	299: spr199 (spr199), unsigned 32 bits
+	300: spr200 (spr200), unsigned 32 bits
+	301: spr201 (spr201), unsigned 32 bits
+	302: spr202 (spr202), unsigned 32 bits
+	303: spr203 (spr203), unsigned 32 bits
+	304: spr204 (spr204), unsigned 32 bits
+	305: spr205 (spr205), unsigned 32 bits
+	306: spr206 (spr206), unsigned 32 bits
+	307: spr207 (spr207), unsigned 32 bits
+	308: spr208 (spr208), unsigned 32 bits
+	309: spr209 (spr209), unsigned 32 bits
+	310: spr210 (spr210), unsigned 32 bits
+	311: spr211 (spr211), unsigned 32 bits
+	312: spr212 (spr212), unsigned 32 bits
+	313: spr213 (spr213), unsigned 32 bits
+	314: spr214 (spr214), unsigned 32 bits
+	315: spr215 (spr215), unsigned 32 bits
+	316: spr216 (spr216), unsigned 32 bits
+	317: spr217 (spr217), unsigned 32 bits
+	318: spr218 (spr218), unsigned 32 bits
+	319: spr219 (spr219), unsigned 32 bits
+	320: spr220 (spr220), unsigned 32 bits
+	321: spr221 (spr221), unsigned 32 bits
+	322: spr222 (spr222), unsigned 32 bits
+	323: spr223 (spr223), unsigned 32 bits
+	324: spr224 (spr224), unsigned 32 bits
+	325: spr225 (spr225), unsigned 32 bits
+	326: spr226 (spr226), unsigned 32 bits
+	327: spr227 (spr227), unsigned 32 bits
+	328: spr228 (spr228), unsigned 32 bits
+	329: spr229 (spr229), unsigned 32 bits
+	330: spr230 (spr230), unsigned 32 bits
+	331: spr231 (spr231), unsigned 32 bits
+	332: spr232 (spr232), unsigned 32 bits
+	333: spr233 (spr233), unsigned 32 bits
+	334: spr234 (spr234), unsigned 32 bits
+	335: spr235 (spr235), unsigned 32 bits
+	336: spr236 (spr236), unsigned 32 bits
+	337: spr237 (spr237), unsigned 32 bits
+	338: spr238 (spr238), unsigned 32 bits
+	339: spr239 (spr239), unsigned 32 bits
+	340: spr240 (spr240), unsigned 32 bits
+	341: spr241 (spr241), unsigned 32 bits
+	342: spr242 (spr242), unsigned 32 bits
+	343: spr243 (spr243), unsigned 32 bits
+	344: spr244 (spr244), unsigned 32 bits
+	345: spr245 (spr245), unsigned 32 bits
+	346: spr246 (spr246), unsigned 32 bits
+	347: spr247 (spr247), unsigned 32 bits
+	348: spr248 (spr248), unsigned 32 bits
+	349: spr249 (spr249), unsigned 32 bits
+	350: spr250 (spr250), unsigned 32 bits
+	351: spr251 (spr251), unsigned 32 bits
+	352: spr252 (spr252), unsigned 32 bits
+	353: spr253 (spr253), unsigned 32 bits
+	354: spr254 (spr254), unsigned 32 bits
+	355: spr255 (spr255), unsigned 32 bits
+	357: spr257 (spr257), unsigned 32 bits
+	358: spr258 (spr258), unsigned 32 bits
+	359: spr259 (spr259), unsigned 32 bits
+	360: spr260 (spr260), unsigned 32 bits
+	361: spr261 (spr261), unsigned 32 bits
+	362: spr262 (spr262), unsigned 32 bits
+	363: spr263 (spr263), unsigned 32 bits
+	364: spr264 (spr264), unsigned 32 bits
+	365: spr265 (spr265), unsigned 32 bits
+	366: spr266 (spr266), unsigned 32 bits
+	367: spr267 (spr267), unsigned 32 bits
+	368: spr268 (spr268), unsigned 32 bits
+	369: spr269 (spr269), unsigned 32 bits
+	370: spr270 (spr270), unsigned 32 bits
+	371: spr271 (spr271), unsigned 32 bits
+	372: spr272 (spr272), unsigned 32 bits
+	373: spr273 (spr273), unsigned 32 bits
+	374: spr274 (spr274), unsigned 32 bits
+	375: spr275 (spr275), unsigned 32 bits
+	376: spr276 (spr276), unsigned 32 bits
+	377: spr277 (spr277), unsigned 32 bits
+	378: spr278 (spr278), unsigned 32 bits
+	379: spr279 (spr279), unsigned 32 bits
+	380: spr280 (spr280), unsigned 32 bits
+	381: spr281 (spr281), unsigned 32 bits
+	382: spr282 (spr282), unsigned 32 bits
+	383: spr283 (spr283), unsigned 32 bits
+	384: spr284 (spr284), unsigned 32 bits
+	385: spr285 (spr285), unsigned 32 bits
+	386: spr286 (spr286), unsigned 32 bits
+	387: spr287 (spr287), unsigned 32 bits
+	388: spr288 (spr288), unsigned 32 bits
+	389: spr289 (spr289), unsigned 32 bits
+	390: spr290 (spr290), unsigned 32 bits
+	391: spr291 (spr291), unsigned 32 bits
+	392: spr292 (spr292), unsigned 32 bits
+	393: spr293 (spr293), unsigned 32 bits
+	394: spr294 (spr294), unsigned 32 bits
+	395: spr295 (spr295), unsigned 32 bits
+	396: spr296 (spr296), unsigned 32 bits
+	397: spr297 (spr297), unsigned 32 bits
+	398: spr298 (spr298), unsigned 32 bits
+	399: spr299 (spr299), unsigned 32 bits
+	400: spr300 (spr300), unsigned 32 bits
+	401: spr301 (spr301), unsigned 32 bits
+	402: spr302 (spr302), unsigned 32 bits
+	403: spr303 (spr303), unsigned 32 bits
+	404: spr304 (spr304), unsigned 32 bits
+	405: spr305 (spr305), unsigned 32 bits
+	406: spr306 (spr306), unsigned 32 bits
+	407: spr307 (spr307), unsigned 32 bits
+	408: spr308 (spr308), unsigned 32 bits
+	409: spr309 (spr309), unsigned 32 bits
+	410: spr310 (spr310), unsigned 32 bits
+	411: spr311 (spr311), unsigned 32 bits
+	412: spr312 (spr312), unsigned 32 bits
+	413: spr313 (spr313), unsigned 32 bits
+	414: spr314 (spr314), unsigned 32 bits
+	415: spr315 (spr315), unsigned 32 bits
+	416: spr316 (spr316), unsigned 32 bits
+	417: spr317 (spr317), unsigned 32 bits
+	418: spr318 (spr318), unsigned 32 bits
+	419: spr319 (spr319), unsigned 32 bits
+	420: spr320 (spr320), unsigned 32 bits
+	421: spr321 (spr321), unsigned 32 bits
+	422: spr322 (spr322), unsigned 32 bits
+	423: spr323 (spr323), unsigned 32 bits
+	424: spr324 (spr324), unsigned 32 bits
+	425: spr325 (spr325), unsigned 32 bits
+	426: spr326 (spr326), unsigned 32 bits
+	427: spr327 (spr327), unsigned 32 bits
+	428: spr328 (spr328), unsigned 32 bits
+	429: spr329 (spr329), unsigned 32 bits
+	430: spr330 (spr330), unsigned 32 bits
+	431: spr331 (spr331), unsigned 32 bits
+	432: spr332 (spr332), unsigned 32 bits
+	433: spr333 (spr333), unsigned 32 bits
+	434: spr334 (spr334), unsigned 32 bits
+	435: spr335 (spr335), unsigned 32 bits
+	436: spr336 (spr336), unsigned 32 bits
+	437: spr337 (spr337), unsigned 32 bits
+	438: spr338 (spr338), unsigned 32 bits
+	439: spr339 (spr339), unsigned 32 bits
+	440: spr340 (spr340), unsigned 32 bits
+	441: spr341 (spr341), unsigned 32 bits
+	442: spr342 (spr342), unsigned 32 bits
+	443: spr343 (spr343), unsigned 32 bits
+	444: spr344 (spr344), unsigned 32 bits
+	445: spr345 (spr345), unsigned 32 bits
+	446: spr346 (spr346), unsigned 32 bits
+	447: spr347 (spr347), unsigned 32 bits
+	448: spr348 (spr348), unsigned 32 bits
+	449: spr349 (spr349), unsigned 32 bits
+	450: spr350 (spr350), unsigned 32 bits
+	451: spr351 (spr351), unsigned 32 bits
+	452: spr352 (spr352), unsigned 32 bits
+	453: spr353 (spr353), unsigned 32 bits
+	454: spr354 (spr354), unsigned 32 bits
+	455: spr355 (spr355), unsigned 32 bits
+	456: spr356 (spr356), unsigned 32 bits
+	457: spr357 (spr357), unsigned 32 bits
+	458: spr358 (spr358), unsigned 32 bits
+	459: spr359 (spr359), unsigned 32 bits
+	460: spr360 (spr360), unsigned 32 bits
+	461: spr361 (spr361), unsigned 32 bits
+	462: spr362 (spr362), unsigned 32 bits
+	463: spr363 (spr363), unsigned 32 bits
+	464: spr364 (spr364), unsigned 32 bits
+	465: spr365 (spr365), unsigned 32 bits
+	466: spr366 (spr366), unsigned 32 bits
+	467: spr367 (spr367), unsigned 32 bits
+	468: spr368 (spr368), unsigned 32 bits
+	469: spr369 (spr369), unsigned 32 bits
+	470: spr370 (spr370), unsigned 32 bits
+	471: spr371 (spr371), unsigned 32 bits
+	472: spr372 (spr372), unsigned 32 bits
+	473: spr373 (spr373), unsigned 32 bits
+	474: spr374 (spr374), unsigned 32 bits
+	475: spr375 (spr375), unsigned 32 bits
+	476: spr376 (spr376), unsigned 32 bits
+	477: spr377 (spr377), unsigned 32 bits
+	478: spr378 (spr378), unsigned 32 bits
+	479: spr379 (spr379), unsigned 32 bits
+	480: spr380 (spr380), unsigned 32 bits
+	481: spr381 (spr381), unsigned 32 bits
+	482: spr382 (spr382), unsigned 32 bits
+	483: spr383 (spr383), unsigned 32 bits
+	484: spr384 (spr384), unsigned 32 bits
+	485: spr385 (spr385), unsigned 32 bits
+	486: spr386 (spr386), unsigned 32 bits
+	487: spr387 (spr387), unsigned 32 bits
+	488: spr388 (spr388), unsigned 32 bits
+	489: spr389 (spr389), unsigned 32 bits
+	490: spr390 (spr390), unsigned 32 bits
+	491: spr391 (spr391), unsigned 32 bits
+	492: spr392 (spr392), unsigned 32 bits
+	493: spr393 (spr393), unsigned 32 bits
+	494: spr394 (spr394), unsigned 32 bits
+	495: spr395 (spr395), unsigned 32 bits
+	496: spr396 (spr396), unsigned 32 bits
+	497: spr397 (spr397), unsigned 32 bits
+	498: spr398 (spr398), unsigned 32 bits
+	499: spr399 (spr399), unsigned 32 bits
+	500: spr400 (spr400), unsigned 32 bits
+	501: spr401 (spr401), unsigned 32 bits
+	502: spr402 (spr402), unsigned 32 bits
+	503: spr403 (spr403), unsigned 32 bits
+	504: spr404 (spr404), unsigned 32 bits
+	505: spr405 (spr405), unsigned 32 bits
+	506: spr406 (spr406), unsigned 32 bits
+	507: spr407 (spr407), unsigned 32 bits
+	508: spr408 (spr408), unsigned 32 bits
+	509: spr409 (spr409), unsigned 32 bits
+	510: spr410 (spr410), unsigned 32 bits
+	511: spr411 (spr411), unsigned 32 bits
+	512: spr412 (spr412), unsigned 32 bits
+	513: spr413 (spr413), unsigned 32 bits
+	514: spr414 (spr414), unsigned 32 bits
+	515: spr415 (spr415), unsigned 32 bits
+	516: spr416 (spr416), unsigned 32 bits
+	517: spr417 (spr417), unsigned 32 bits
+	518: spr418 (spr418), unsigned 32 bits
+	519: spr419 (spr419), unsigned 32 bits
+	520: spr420 (spr420), unsigned 32 bits
+	521: spr421 (spr421), unsigned 32 bits
+	522: spr422 (spr422), unsigned 32 bits
+	523: spr423 (spr423), unsigned 32 bits
+	524: spr424 (spr424), unsigned 32 bits
+	525: spr425 (spr425), unsigned 32 bits
+	526: spr426 (spr426), unsigned 32 bits
+	527: spr427 (spr427), unsigned 32 bits
+	528: spr428 (spr428), unsigned 32 bits
+	529: spr429 (spr429), unsigned 32 bits
+	530: spr430 (spr430), unsigned 32 bits
+	531: spr431 (spr431), unsigned 32 bits
+	532: spr432 (spr432), unsigned 32 bits
+	533: spr433 (spr433), unsigned 32 bits
+	534: spr434 (spr434), unsigned 32 bits
+	535: spr435 (spr435), unsigned 32 bits
+	536: spr436 (spr436), unsigned 32 bits
+	537: spr437 (spr437), unsigned 32 bits
+	538: spr438 (spr438), unsigned 32 bits
+	539: spr439 (spr439), unsigned 32 bits
+	540: spr440 (spr440), unsigned 32 bits
+	541: spr441 (spr441), unsigned 32 bits
+	542: spr442 (spr442), unsigned 32 bits
+	543: spr443 (spr443), unsigned 32 bits
+	544: spr444 (spr444), unsigned 32 bits
+	545: spr445 (spr445), unsigned 32 bits
+	546: spr446 (spr446), unsigned 32 bits
+	547: spr447 (spr447), unsigned 32 bits
+	548: spr448 (spr448), unsigned 32 bits
+	549: spr449 (spr449), unsigned 32 bits
+	550: spr450 (spr450), unsigned 32 bits
+	551: spr451 (spr451), unsigned 32 bits
+	552: spr452 (spr452), unsigned 32 bits
+	553: spr453 (spr453), unsigned 32 bits
+	554: spr454 (spr454), unsigned 32 bits
+	555: spr455 (spr455), unsigned 32 bits
+	556: spr456 (spr456), unsigned 32 bits
+	557: spr457 (spr457), unsigned 32 bits
+	558: spr458 (spr458), unsigned 32 bits
+	559: spr459 (spr459), unsigned 32 bits
+	560: spr460 (spr460), unsigned 32 bits
+	561: spr461 (spr461), unsigned 32 bits
+	562: spr462 (spr462), unsigned 32 bits
+	563: spr463 (spr463), unsigned 32 bits
+	564: spr464 (spr464), unsigned 32 bits
+	565: spr465 (spr465), unsigned 32 bits
+	566: spr466 (spr466), unsigned 32 bits
+	567: spr467 (spr467), unsigned 32 bits
+	568: spr468 (spr468), unsigned 32 bits
+	569: spr469 (spr469), unsigned 32 bits
+	570: spr470 (spr470), unsigned 32 bits
+	571: spr471 (spr471), unsigned 32 bits
+	572: spr472 (spr472), unsigned 32 bits
+	573: spr473 (spr473), unsigned 32 bits
+	574: spr474 (spr474), unsigned 32 bits
+	575: spr475 (spr475), unsigned 32 bits
+	576: spr476 (spr476), unsigned 32 bits
+	577: spr477 (spr477), unsigned 32 bits
+	578: spr478 (spr478), unsigned 32 bits
+	579: spr479 (spr479), unsigned 32 bits
+	580: spr480 (spr480), unsigned 32 bits
+	581: spr481 (spr481), unsigned 32 bits
+	582: spr482 (spr482), unsigned 32 bits
+	583: spr483 (spr483), unsigned 32 bits
+	584: spr484 (spr484), unsigned 32 bits
+	585: spr485 (spr485), unsigned 32 bits
+	586: spr486 (spr486), unsigned 32 bits
+	587: spr487 (spr487), unsigned 32 bits
+	588: spr488 (spr488), unsigned 32 bits
+	589: spr489 (spr489), unsigned 32 bits
+	590: spr490 (spr490), unsigned 32 bits
+	591: spr491 (spr491), unsigned 32 bits
+	592: spr492 (spr492), unsigned 32 bits
+	593: spr493 (spr493), unsigned 32 bits
+	594: spr494 (spr494), unsigned 32 bits
+	595: spr495 (spr495), unsigned 32 bits
+	596: spr496 (spr496), unsigned 32 bits
+	597: spr497 (spr497), unsigned 32 bits
+	598: spr498 (spr498), unsigned 32 bits
+	599: spr499 (spr499), unsigned 32 bits
+	600: spr500 (spr500), unsigned 32 bits
+	601: spr501 (spr501), unsigned 32 bits
+	602: spr502 (spr502), unsigned 32 bits
+	603: spr503 (spr503), unsigned 32 bits
+	604: spr504 (spr504), unsigned 32 bits
+	605: spr505 (spr505), unsigned 32 bits
+	606: spr506 (spr506), unsigned 32 bits
+	607: spr507 (spr507), unsigned 32 bits
+	608: spr508 (spr508), unsigned 32 bits
+	609: spr509 (spr509), unsigned 32 bits
+	610: spr510 (spr510), unsigned 32 bits
+	611: spr511 (spr511), unsigned 32 bits
+	613: spr513 (spr513), unsigned 32 bits
+	614: spr514 (spr514), unsigned 32 bits
+	615: spr515 (spr515), unsigned 32 bits
+	616: spr516 (spr516), unsigned 32 bits
+	617: spr517 (spr517), unsigned 32 bits
+	618: spr518 (spr518), unsigned 32 bits
+	619: spr519 (spr519), unsigned 32 bits
+	620: spr520 (spr520), unsigned 32 bits
+	621: spr521 (spr521), unsigned 32 bits
+	622: spr522 (spr522), unsigned 32 bits
+	623: spr523 (spr523), unsigned 32 bits
+	624: spr524 (spr524), unsigned 32 bits
+	625: spr525 (spr525), unsigned 32 bits
+	626: spr526 (spr526), unsigned 32 bits
+	627: spr527 (spr527), unsigned 32 bits
+	628: spr528 (spr528), unsigned 32 bits
+	629: spr529 (spr529), unsigned 32 bits
+	630: spr530 (spr530), unsigned 32 bits
+	631: spr531 (spr531), unsigned 32 bits
+	632: spr532 (spr532), unsigned 32 bits
+	633: spr533 (spr533), unsigned 32 bits
+	634: spr534 (spr534), unsigned 32 bits
+	635: spr535 (spr535), unsigned 32 bits
+	636: spr536 (spr536), unsigned 32 bits
+	637: spr537 (spr537), unsigned 32 bits
+	638: spr538 (spr538), unsigned 32 bits
+	639: spr539 (spr539), unsigned 32 bits
+	640: spr540 (spr540), unsigned 32 bits
+	641: spr541 (spr541), unsigned 32 bits
+	642: spr542 (spr542), unsigned 32 bits
+	643: spr543 (spr543), unsigned 32 bits
+	644: spr544 (spr544), unsigned 32 bits
+	645: spr545 (spr545), unsigned 32 bits
+	646: spr546 (spr546), unsigned 32 bits
+	647: spr547 (spr547), unsigned 32 bits
+	648: spr548 (spr548), unsigned 32 bits
+	649: spr549 (spr549), unsigned 32 bits
+	650: spr550 (spr550), unsigned 32 bits
+	651: spr551 (spr551), unsigned 32 bits
+	652: spr552 (spr552), unsigned 32 bits
+	653: spr553 (spr553), unsigned 32 bits
+	654: spr554 (spr554), unsigned 32 bits
+	655: spr555 (spr555), unsigned 32 bits
+	656: spr556 (spr556), unsigned 32 bits
+	657: spr557 (spr557), unsigned 32 bits
+	658: spr558 (spr558), unsigned 32 bits
+	659: spr559 (spr559), unsigned 32 bits
+	660: spr560 (spr560), unsigned 32 bits
+	661: spr561 (spr561), unsigned 32 bits
+	662: spr562 (spr562), unsigned 32 bits
+	663: spr563 (spr563), unsigned 32 bits
+	664: spr564 (spr564), unsigned 32 bits
+	665: spr565 (spr565), unsigned 32 bits
+	666: spr566 (spr566), unsigned 32 bits
+	667: spr567 (spr567), unsigned 32 bits
+	668: spr568 (spr568), unsigned 32 bits
+	669: spr569 (spr569), unsigned 32 bits
+	670: spr570 (spr570), unsigned 32 bits
+	671: spr571 (spr571), unsigned 32 bits
+	672: spr572 (spr572), unsigned 32 bits
+	673: spr573 (spr573), unsigned 32 bits
+	674: spr574 (spr574), unsigned 32 bits
+	675: spr575 (spr575), unsigned 32 bits
+	676: spr576 (spr576), unsigned 32 bits
+	677: spr577 (spr577), unsigned 32 bits
+	678: spr578 (spr578), unsigned 32 bits
+	679: spr579 (spr579), unsigned 32 bits
+	680: spr580 (spr580), unsigned 32 bits
+	681: spr581 (spr581), unsigned 32 bits
+	682: spr582 (spr582), unsigned 32 bits
+	683: spr583 (spr583), unsigned 32 bits
+	684: spr584 (spr584), unsigned 32 bits
+	685: spr585 (spr585), unsigned 32 bits
+	686: spr586 (spr586), unsigned 32 bits
+	687: spr587 (spr587), unsigned 32 bits
+	688: spr588 (spr588), unsigned 32 bits
+	689: spr589 (spr589), unsigned 32 bits
+	690: spr590 (spr590), unsigned 32 bits
+	691: spr591 (spr591), unsigned 32 bits
+	692: spr592 (spr592), unsigned 32 bits
+	693: spr593 (spr593), unsigned 32 bits
+	694: spr594 (spr594), unsigned 32 bits
+	695: spr595 (spr595), unsigned 32 bits
+	696: spr596 (spr596), unsigned 32 bits
+	697: spr597 (spr597), unsigned 32 bits
+	698: spr598 (spr598), unsigned 32 bits
+	699: spr599 (spr599), unsigned 32 bits
+	700: spr600 (spr600), unsigned 32 bits
+	701: spr601 (spr601), unsigned 32 bits
+	702: spr602 (spr602), unsigned 32 bits
+	703: spr603 (spr603), unsigned 32 bits
+	704: spr604 (spr604), unsigned 32 bits
+	705: spr605 (spr605), unsigned 32 bits
+	706: spr606 (spr606), unsigned 32 bits
+	707: spr607 (spr607), unsigned 32 bits
+	708: spr608 (spr608), unsigned 32 bits
+	709: spr609 (spr609), unsigned 32 bits
+	710: spr610 (spr610), unsigned 32 bits
+	711: spr611 (spr611), unsigned 32 bits
+	712: spr612 (spr612), unsigned 32 bits
+	713: spr613 (spr613), unsigned 32 bits
+	714: spr614 (spr614), unsigned 32 bits
+	715: spr615 (spr615), unsigned 32 bits
+	716: spr616 (spr616), unsigned 32 bits
+	717: spr617 (spr617), unsigned 32 bits
+	718: spr618 (spr618), unsigned 32 bits
+	719: spr619 (spr619), unsigned 32 bits
+	720: spr620 (spr620), unsigned 32 bits
+	721: spr621 (spr621), unsigned 32 bits
+	722: spr622 (spr622), unsigned 32 bits
+	723: spr623 (spr623), unsigned 32 bits
+	724: spr624 (spr624), unsigned 32 bits
+	725: spr625 (spr625), unsigned 32 bits
+	726: spr626 (spr626), unsigned 32 bits
+	727: spr627 (spr627), unsigned 32 bits
+	728: spr628 (spr628), unsigned 32 bits
+	729: spr629 (spr629), unsigned 32 bits
+	730: spr630 (spr630), unsigned 32 bits
+	731: spr631 (spr631), unsigned 32 bits
+	732: spr632 (spr632), unsigned 32 bits
+	733: spr633 (spr633), unsigned 32 bits
+	734: spr634 (spr634), unsigned 32 bits
+	735: spr635 (spr635), unsigned 32 bits
+	736: spr636 (spr636), unsigned 32 bits
+	737: spr637 (spr637), unsigned 32 bits
+	738: spr638 (spr638), unsigned 32 bits
+	739: spr639 (spr639), unsigned 32 bits
+	740: spr640 (spr640), unsigned 32 bits
+	741: spr641 (spr641), unsigned 32 bits
+	742: spr642 (spr642), unsigned 32 bits
+	743: spr643 (spr643), unsigned 32 bits
+	744: spr644 (spr644), unsigned 32 bits
+	745: spr645 (spr645), unsigned 32 bits
+	746: spr646 (spr646), unsigned 32 bits
+	747: spr647 (spr647), unsigned 32 bits
+	748: spr648 (spr648), unsigned 32 bits
+	749: spr649 (spr649), unsigned 32 bits
+	750: spr650 (spr650), unsigned 32 bits
+	751: spr651 (spr651), unsigned 32 bits
+	752: spr652 (spr652), unsigned 32 bits
+	753: spr653 (spr653), unsigned 32 bits
+	754: spr654 (spr654), unsigned 32 bits
+	755: spr655 (spr655), unsigned 32 bits
+	756: spr656 (spr656), unsigned 32 bits
+	757: spr657 (spr657), unsigned 32 bits
+	758: spr658 (spr658), unsigned 32 bits
+	759: spr659 (spr659), unsigned 32 bits
+	760: spr660 (spr660), unsigned 32 bits
+	761: spr661 (spr661), unsigned 32 bits
+	762: spr662 (spr662), unsigned 32 bits
+	763: spr663 (spr663), unsigned 32 bits
+	764: spr664 (spr664), unsigned 32 bits
+	765: spr665 (spr665), unsigned 32 bits
+	766: spr666 (spr666), unsigned 32 bits
+	767: spr667 (spr667), unsigned 32 bits
+	768: spr668 (spr668), unsigned 32 bits
+	769: spr669 (spr669), unsigned 32 bits
+	770: spr670 (spr670), unsigned 32 bits
+	771: spr671 (spr671), unsigned 32 bits
+	772: spr672 (spr672), unsigned 32 bits
+	773: spr673 (spr673), unsigned 32 bits
+	774: spr674 (spr674), unsigned 32 bits
+	775: spr675 (spr675), unsigned 32 bits
+	776: spr676 (spr676), unsigned 32 bits
+	777: spr677 (spr677), unsigned 32 bits
+	778: spr678 (spr678), unsigned 32 bits
+	779: spr679 (spr679), unsigned 32 bits
+	780: spr680 (spr680), unsigned 32 bits
+	781: spr681 (spr681), unsigned 32 bits
+	782: spr682 (spr682), unsigned 32 bits
+	783: spr683 (spr683), unsigned 32 bits
+	784: spr684 (spr684), unsigned 32 bits
+	785: spr685 (spr685), unsigned 32 bits
+	786: spr686 (spr686), unsigned 32 bits
+	787: spr687 (spr687), unsigned 32 bits
+	788: spr688 (spr688), unsigned 32 bits
+	789: spr689 (spr689), unsigned 32 bits
+	790: spr690 (spr690), unsigned 32 bits
+	791: spr691 (spr691), unsigned 32 bits
+	792: spr692 (spr692), unsigned 32 bits
+	793: spr693 (spr693), unsigned 32 bits
+	794: spr694 (spr694), unsigned 32 bits
+	795: spr695 (spr695), unsigned 32 bits
+	796: spr696 (spr696), unsigned 32 bits
+	797: spr697 (spr697), unsigned 32 bits
+	798: spr698 (spr698), unsigned 32 bits
+	799: spr699 (spr699), unsigned 32 bits
+	800: spr700 (spr700), unsigned 32 bits
+	801: spr701 (spr701), unsigned 32 bits
+	802: spr702 (spr702), unsigned 32 bits
+	803: spr703 (spr703), unsigned 32 bits
+	804: spr704 (spr704), unsigned 32 bits
+	805: spr705 (spr705), unsigned 32 bits
+	806: spr706 (spr706), unsigned 32 bits
+	807: spr707 (spr707), unsigned 32 bits
+	808: spr708 (spr708), unsigned 32 bits
+	809: spr709 (spr709), unsigned 32 bits
+	810: spr710 (spr710), unsigned 32 bits
+	811: spr711 (spr711), unsigned 32 bits
+	812: spr712 (spr712), unsigned 32 bits
+	813: spr713 (spr713), unsigned 32 bits
+	814: spr714 (spr714), unsigned 32 bits
+	815: spr715 (spr715), unsigned 32 bits
+	816: spr716 (spr716), unsigned 32 bits
+	817: spr717 (spr717), unsigned 32 bits
+	818: spr718 (spr718), unsigned 32 bits
+	819: spr719 (spr719), unsigned 32 bits
+	820: spr720 (spr720), unsigned 32 bits
+	821: spr721 (spr721), unsigned 32 bits
+	822: spr722 (spr722), unsigned 32 bits
+	823: spr723 (spr723), unsigned 32 bits
+	824: spr724 (spr724), unsigned 32 bits
+	825: spr725 (spr725), unsigned 32 bits
+	826: spr726 (spr726), unsigned 32 bits
+	827: spr727 (spr727), unsigned 32 bits
+	828: spr728 (spr728), unsigned 32 bits
+	829: spr729 (spr729), unsigned 32 bits
+	830: spr730 (spr730), unsigned 32 bits
+	831: spr731 (spr731), unsigned 32 bits
+	832: spr732 (spr732), unsigned 32 bits
+	833: spr733 (spr733), unsigned 32 bits
+	834: spr734 (spr734), unsigned 32 bits
+	835: spr735 (spr735), unsigned 32 bits
+	836: spr736 (spr736), unsigned 32 bits
+	837: spr737 (spr737), unsigned 32 bits
+	838: spr738 (spr738), unsigned 32 bits
+	839: spr739 (spr739), unsigned 32 bits
+	840: spr740 (spr740), unsigned 32 bits
+	841: spr741 (spr741), unsigned 32 bits
+	842: spr742 (spr742), unsigned 32 bits
+	843: spr743 (spr743), unsigned 32 bits
+	844: spr744 (spr744), unsigned 32 bits
+	845: spr745 (spr745), unsigned 32 bits
+	846: spr746 (spr746), unsigned 32 bits
+	847: spr747 (spr747), unsigned 32 bits
+	848: spr748 (spr748), unsigned 32 bits
+	849: spr749 (spr749), unsigned 32 bits
+	850: spr750 (spr750), unsigned 32 bits
+	851: spr751 (spr751), unsigned 32 bits
+	852: spr752 (spr752), unsigned 32 bits
+	853: spr753 (spr753), unsigned 32 bits
+	854: spr754 (spr754), unsigned 32 bits
+	855: spr755 (spr755), unsigned 32 bits
+	856: spr756 (spr756), unsigned 32 bits
+	857: spr757 (spr757), unsigned 32 bits
+	858: spr758 (spr758), unsigned 32 bits
+	859: spr759 (spr759), unsigned 32 bits
+	860: spr760 (spr760), unsigned 32 bits
+	861: spr761 (spr761), unsigned 32 bits
+	862: spr762 (spr762), unsigned 32 bits
+	863: spr763 (spr763), unsigned 32 bits
+	864: spr764 (spr764), unsigned 32 bits
+	865: spr765 (spr765), unsigned 32 bits
+	866: spr766 (spr766), unsigned 32 bits
+	867: spr767 (spr767), unsigned 32 bits
+	868: spr768 (spr768), unsigned 32 bits
+	869: spr769 (spr769), unsigned 32 bits
+	870: spr770 (spr770), unsigned 32 bits
+	871: spr771 (spr771), unsigned 32 bits
+	872: spr772 (spr772), unsigned 32 bits
+	873: spr773 (spr773), unsigned 32 bits
+	874: spr774 (spr774), unsigned 32 bits
+	875: spr775 (spr775), unsigned 32 bits
+	876: spr776 (spr776), unsigned 32 bits
+	877: spr777 (spr777), unsigned 32 bits
+	878: spr778 (spr778), unsigned 32 bits
+	879: spr779 (spr779), unsigned 32 bits
+	880: spr780 (spr780), unsigned 32 bits
+	881: spr781 (spr781), unsigned 32 bits
+	882: spr782 (spr782), unsigned 32 bits
+	883: spr783 (spr783), unsigned 32 bits
+	884: spr784 (spr784), unsigned 32 bits
+	885: spr785 (spr785), unsigned 32 bits
+	886: spr786 (spr786), unsigned 32 bits
+	887: spr787 (spr787), unsigned 32 bits
+	888: spr788 (spr788), unsigned 32 bits
+	889: spr789 (spr789), unsigned 32 bits
+	890: spr790 (spr790), unsigned 32 bits
+	891: spr791 (spr791), unsigned 32 bits
+	892: spr792 (spr792), unsigned 32 bits
+	893: spr793 (spr793), unsigned 32 bits
+	894: spr794 (spr794), unsigned 32 bits
+	895: spr795 (spr795), unsigned 32 bits
+	896: spr796 (spr796), unsigned 32 bits
+	897: spr797 (spr797), unsigned 32 bits
+	898: spr798 (spr798), unsigned 32 bits
+	899: spr799 (spr799), unsigned 32 bits
+	900: spr800 (spr800), unsigned 32 bits
+	901: spr801 (spr801), unsigned 32 bits
+	902: spr802 (spr802), unsigned 32 bits
+	903: spr803 (spr803), unsigned 32 bits
+	904: spr804 (spr804), unsigned 32 bits
+	905: spr805 (spr805), unsigned 32 bits
+	906: spr806 (spr806), unsigned 32 bits
+	907: spr807 (spr807), unsigned 32 bits
+	908: spr808 (spr808), unsigned 32 bits
+	909: spr809 (spr809), unsigned 32 bits
+	910: spr810 (spr810), unsigned 32 bits
+	911: spr811 (spr811), unsigned 32 bits
+	912: spr812 (spr812), unsigned 32 bits
+	913: spr813 (spr813), unsigned 32 bits
+	914: spr814 (spr814), unsigned 32 bits
+	915: spr815 (spr815), unsigned 32 bits
+	916: spr816 (spr816), unsigned 32 bits
+	917: spr817 (spr817), unsigned 32 bits
+	918: spr818 (spr818), unsigned 32 bits
+	919: spr819 (spr819), unsigned 32 bits
+	920: spr820 (spr820), unsigned 32 bits
+	921: spr821 (spr821), unsigned 32 bits
+	922: spr822 (spr822), unsigned 32 bits
+	923: spr823 (spr823), unsigned 32 bits
+	924: spr824 (spr824), unsigned 32 bits
+	925: spr825 (spr825), unsigned 32 bits
+	926: spr826 (spr826), unsigned 32 bits
+	927: spr827 (spr827), unsigned 32 bits
+	928: spr828 (spr828), unsigned 32 bits
+	929: spr829 (spr829), unsigned 32 bits
+	930: spr830 (spr830), unsigned 32 bits
+	931: spr831 (spr831), unsigned 32 bits
+	932: spr832 (spr832), unsigned 32 bits
+	933: spr833 (spr833), unsigned 32 bits
+	934: spr834 (spr834), unsigned 32 bits
+	935: spr835 (spr835), unsigned 32 bits
+	936: spr836 (spr836), unsigned 32 bits
+	937: spr837 (spr837), unsigned 32 bits
+	938: spr838 (spr838), unsigned 32 bits
+	939: spr839 (spr839), unsigned 32 bits
+	940: spr840 (spr840), unsigned 32 bits
+	941: spr841 (spr841), unsigned 32 bits
+	942: spr842 (spr842), unsigned 32 bits
+	943: spr843 (spr843), unsigned 32 bits
+	944: spr844 (spr844), unsigned 32 bits
+	945: spr845 (spr845), unsigned 32 bits
+	946: spr846 (spr846), unsigned 32 bits
+	947: spr847 (spr847), unsigned 32 bits
+	948: spr848 (spr848), unsigned 32 bits
+	949: spr849 (spr849), unsigned 32 bits
+	950: spr850 (spr850), unsigned 32 bits
+	951: spr851 (spr851), unsigned 32 bits
+	952: spr852 (spr852), unsigned 32 bits
+	953: spr853 (spr853), unsigned 32 bits
+	954: spr854 (spr854), unsigned 32 bits
+	955: spr855 (spr855), unsigned 32 bits
+	956: spr856 (spr856), unsigned 32 bits
+	957: spr857 (spr857), unsigned 32 bits
+	958: spr858 (spr858), unsigned 32 bits
+	959: spr859 (spr859), unsigned 32 bits
+	960: spr860 (spr860), unsigned 32 bits
+	961: spr861 (spr861), unsigned 32 bits
+	962: spr862 (spr862), unsigned 32 bits
+	963: spr863 (spr863), unsigned 32 bits
+	964: spr864 (spr864), unsigned 32 bits
+	965: spr865 (spr865), unsigned 32 bits
+	966: spr866 (spr866), unsigned 32 bits
+	967: spr867 (spr867), unsigned 32 bits
+	968: spr868 (spr868), unsigned 32 bits
+	969: spr869 (spr869), unsigned 32 bits
+	970: spr870 (spr870), unsigned 32 bits
+	971: spr871 (spr871), unsigned 32 bits
+	972: spr872 (spr872), unsigned 32 bits
+	973: spr873 (spr873), unsigned 32 bits
+	974: spr874 (spr874), unsigned 32 bits
+	975: spr875 (spr875), unsigned 32 bits
+	976: spr876 (spr876), unsigned 32 bits
+	977: spr877 (spr877), unsigned 32 bits
+	978: spr878 (spr878), unsigned 32 bits
+	979: spr879 (spr879), unsigned 32 bits
+	980: spr880 (spr880), unsigned 32 bits
+	981: spr881 (spr881), unsigned 32 bits
+	982: spr882 (spr882), unsigned 32 bits
+	983: spr883 (spr883), unsigned 32 bits
+	984: spr884 (spr884), unsigned 32 bits
+	985: spr885 (spr885), unsigned 32 bits
+	986: spr886 (spr886), unsigned 32 bits
+	987: spr887 (spr887), unsigned 32 bits
+	988: spr888 (spr888), unsigned 32 bits
+	989: spr889 (spr889), unsigned 32 bits
+	990: spr890 (spr890), unsigned 32 bits
+	991: spr891 (spr891), unsigned 32 bits
+	992: spr892 (spr892), unsigned 32 bits
+	993: spr893 (spr893), unsigned 32 bits
+	994: spr894 (spr894), unsigned 32 bits
+	995: spr895 (spr895), unsigned 32 bits
+	996: spr896 (spr896), unsigned 32 bits
+	997: spr897 (spr897), unsigned 32 bits
+	998: spr898 (spr898), unsigned 32 bits
+	999: spr899 (spr899), unsigned 32 bits
+vector registers:
+	 67: vscr (vscr), unsigned 32 bits
+	356: vrsave (vrsave), unsigned 32 bits
+	612: spefscr (spefscr), unsigned 32 bits
+	1124: vr0 (vr0), unsigned 128 bits
+	1125: vr1 (vr1), unsigned 128 bits
+	1126: vr2 (vr2), unsigned 128 bits
+	1127: vr3 (vr3), unsigned 128 bits
+	1128: vr4 (vr4), unsigned 128 bits
+	1129: vr5 (vr5), unsigned 128 bits
+	1130: vr6 (vr6), unsigned 128 bits
+	1131: vr7 (vr7), unsigned 128 bits
+	1132: vr8 (vr8), unsigned 128 bits
+	1133: vr9 (vr9), unsigned 128 bits
+	1134: vr10 (vr10), unsigned 128 bits
+	1135: vr11 (vr11), unsigned 128 bits
+	1136: vr12 (vr12), unsigned 128 bits
+	1137: vr13 (vr13), unsigned 128 bits
+	1138: vr14 (vr14), unsigned 128 bits
+	1139: vr15 (vr15), unsigned 128 bits
+	1140: vr16 (vr16), unsigned 128 bits
+	1141: vr17 (vr17), unsigned 128 bits
+	1142: vr18 (vr18), unsigned 128 bits
+	1143: vr19 (vr19), unsigned 128 bits
+	1144: vr20 (vr20), unsigned 128 bits
+	1145: vr21 (vr21), unsigned 128 bits
+	1146: vr22 (vr22), unsigned 128 bits
+	1147: vr23 (vr23), unsigned 128 bits
+	1148: vr24 (vr24), unsigned 128 bits
+	1149: vr25 (vr25), unsigned 128 bits
+	1150: vr26 (vr26), unsigned 128 bits
+	1151: vr27 (vr27), unsigned 128 bits
+	1152: vr28 (vr28), unsigned 128 bits
+	1153: vr29 (vr29), unsigned 128 bits
+	1154: vr30 (vr30), unsigned 128 bits
+	1155: vr31 (vr31), unsigned 128 bits
+EOF
+
+regs_test testfile23 <<\EOF
+integer registers:
+	  0: r0 (r0), signed 64 bits
+	  1: r1 (r1), signed 64 bits
+	  2: r2 (r2), signed 64 bits
+	  3: r3 (r3), signed 64 bits
+	  4: r4 (r4), signed 64 bits
+	  5: r5 (r5), signed 64 bits
+	  6: r6 (r6), signed 64 bits
+	  7: r7 (r7), signed 64 bits
+	  8: r8 (r8), signed 64 bits
+	  9: r9 (r9), signed 64 bits
+	 10: r10 (r10), signed 64 bits
+	 11: r11 (r11), signed 64 bits
+	 12: r12 (r12), signed 64 bits
+	 13: r13 (r13), signed 64 bits
+	 14: r14 (r14), signed 64 bits
+	 15: r15 (r15), signed 64 bits
+	 16: r16 (r16), signed 64 bits
+	 17: r17 (r17), signed 64 bits
+	 18: r18 (r18), signed 64 bits
+	 19: r19 (r19), signed 64 bits
+	 20: r20 (r20), signed 64 bits
+	 21: r21 (r21), signed 64 bits
+	 22: r22 (r22), signed 64 bits
+	 23: r23 (r23), signed 64 bits
+	 24: r24 (r24), signed 64 bits
+	 25: r25 (r25), signed 64 bits
+	 26: r26 (r26), signed 64 bits
+	 27: r27 (r27), signed 64 bits
+	 28: r28 (r28), signed 64 bits
+	 29: r29 (r29), signed 64 bits
+	 30: r30 (r30), signed 64 bits
+	 31: r31 (r31), signed 64 bits
+	 64: cr (cr), unsigned 64 bits
+	 66: msr (msr), unsigned 64 bits
+FPU registers:
+	 32: f0 (f0), float 64 bits
+	 33: f1 (f1), float 64 bits
+	 34: f2 (f2), float 64 bits
+	 35: f3 (f3), float 64 bits
+	 36: f4 (f4), float 64 bits
+	 37: f5 (f5), float 64 bits
+	 38: f6 (f6), float 64 bits
+	 39: f7 (f7), float 64 bits
+	 40: f8 (f8), float 64 bits
+	 41: f9 (f9), float 64 bits
+	 42: f10 (f10), float 64 bits
+	 43: f11 (f11), float 64 bits
+	 44: f12 (f12), float 64 bits
+	 45: f13 (f13), float 64 bits
+	 46: f14 (f14), float 64 bits
+	 47: f15 (f15), float 64 bits
+	 48: f16 (f16), float 64 bits
+	 49: f17 (f17), float 64 bits
+	 50: f18 (f18), float 64 bits
+	 51: f19 (f19), float 64 bits
+	 52: f20 (f20), float 64 bits
+	 53: f21 (f21), float 64 bits
+	 54: f22 (f22), float 64 bits
+	 55: f23 (f23), float 64 bits
+	 56: f24 (f24), float 64 bits
+	 57: f25 (f25), float 64 bits
+	 58: f26 (f26), float 64 bits
+	 59: f27 (f27), float 64 bits
+	 60: f28 (f28), float 64 bits
+	 61: f29 (f29), float 64 bits
+	 62: f30 (f30), float 64 bits
+	 63: f31 (f31), float 64 bits
+	 65: fpscr (fpscr), unsigned 64 bits
+privileged registers:
+	 70: sr0 (sr0), unsigned 64 bits
+	 71: sr1 (sr1), unsigned 64 bits
+	 72: sr2 (sr2), unsigned 64 bits
+	 73: sr3 (sr3), unsigned 64 bits
+	 74: sr4 (sr4), unsigned 64 bits
+	 75: sr5 (sr5), unsigned 64 bits
+	 76: sr6 (sr6), unsigned 64 bits
+	 77: sr7 (sr7), unsigned 64 bits
+	 78: sr8 (sr8), unsigned 64 bits
+	 79: sr9 (sr9), unsigned 64 bits
+	 80: sr10 (sr10), unsigned 64 bits
+	 81: sr11 (sr11), unsigned 64 bits
+	 82: sr12 (sr12), unsigned 64 bits
+	 83: sr13 (sr13), unsigned 64 bits
+	 84: sr14 (sr14), unsigned 64 bits
+	 85: sr15 (sr15), unsigned 64 bits
+	100: spr0 (spr0), unsigned 64 bits
+	101: xer (xer), unsigned 64 bits
+	102: spr2 (spr2), unsigned 64 bits
+	103: spr3 (spr3), unsigned 64 bits
+	104: spr4 (spr4), unsigned 64 bits
+	105: spr5 (spr5), unsigned 64 bits
+	106: spr6 (spr6), unsigned 64 bits
+	107: spr7 (spr7), unsigned 64 bits
+	108: lr (lr), unsigned 64 bits
+	109: ctr (ctr), unsigned 64 bits
+	110: spr10 (spr10), unsigned 64 bits
+	111: spr11 (spr11), unsigned 64 bits
+	112: spr12 (spr12), unsigned 64 bits
+	113: spr13 (spr13), unsigned 64 bits
+	114: spr14 (spr14), unsigned 64 bits
+	115: spr15 (spr15), unsigned 64 bits
+	116: spr16 (spr16), unsigned 64 bits
+	117: spr17 (spr17), unsigned 64 bits
+	118: dsisr (dsisr), unsigned 64 bits
+	119: dar (dar), unsigned 64 bits
+	120: spr20 (spr20), unsigned 64 bits
+	121: spr21 (spr21), unsigned 64 bits
+	122: dec (dec), unsigned 64 bits
+	123: spr23 (spr23), unsigned 64 bits
+	124: spr24 (spr24), unsigned 64 bits
+	125: spr25 (spr25), unsigned 64 bits
+	126: spr26 (spr26), unsigned 64 bits
+	127: spr27 (spr27), unsigned 64 bits
+	128: spr28 (spr28), unsigned 64 bits
+	129: spr29 (spr29), unsigned 64 bits
+	130: spr30 (spr30), unsigned 64 bits
+	131: spr31 (spr31), unsigned 64 bits
+	132: spr32 (spr32), unsigned 64 bits
+	133: spr33 (spr33), unsigned 64 bits
+	134: spr34 (spr34), unsigned 64 bits
+	135: spr35 (spr35), unsigned 64 bits
+	136: spr36 (spr36), unsigned 64 bits
+	137: spr37 (spr37), unsigned 64 bits
+	138: spr38 (spr38), unsigned 64 bits
+	139: spr39 (spr39), unsigned 64 bits
+	140: spr40 (spr40), unsigned 64 bits
+	141: spr41 (spr41), unsigned 64 bits
+	142: spr42 (spr42), unsigned 64 bits
+	143: spr43 (spr43), unsigned 64 bits
+	144: spr44 (spr44), unsigned 64 bits
+	145: spr45 (spr45), unsigned 64 bits
+	146: spr46 (spr46), unsigned 64 bits
+	147: spr47 (spr47), unsigned 64 bits
+	148: spr48 (spr48), unsigned 64 bits
+	149: spr49 (spr49), unsigned 64 bits
+	150: spr50 (spr50), unsigned 64 bits
+	151: spr51 (spr51), unsigned 64 bits
+	152: spr52 (spr52), unsigned 64 bits
+	153: spr53 (spr53), unsigned 64 bits
+	154: spr54 (spr54), unsigned 64 bits
+	155: spr55 (spr55), unsigned 64 bits
+	156: spr56 (spr56), unsigned 64 bits
+	157: spr57 (spr57), unsigned 64 bits
+	158: spr58 (spr58), unsigned 64 bits
+	159: spr59 (spr59), unsigned 64 bits
+	160: spr60 (spr60), unsigned 64 bits
+	161: spr61 (spr61), unsigned 64 bits
+	162: spr62 (spr62), unsigned 64 bits
+	163: spr63 (spr63), unsigned 64 bits
+	164: spr64 (spr64), unsigned 64 bits
+	165: spr65 (spr65), unsigned 64 bits
+	166: spr66 (spr66), unsigned 64 bits
+	167: spr67 (spr67), unsigned 64 bits
+	168: spr68 (spr68), unsigned 64 bits
+	169: spr69 (spr69), unsigned 64 bits
+	170: spr70 (spr70), unsigned 64 bits
+	171: spr71 (spr71), unsigned 64 bits
+	172: spr72 (spr72), unsigned 64 bits
+	173: spr73 (spr73), unsigned 64 bits
+	174: spr74 (spr74), unsigned 64 bits
+	175: spr75 (spr75), unsigned 64 bits
+	176: spr76 (spr76), unsigned 64 bits
+	177: spr77 (spr77), unsigned 64 bits
+	178: spr78 (spr78), unsigned 64 bits
+	179: spr79 (spr79), unsigned 64 bits
+	180: spr80 (spr80), unsigned 64 bits
+	181: spr81 (spr81), unsigned 64 bits
+	182: spr82 (spr82), unsigned 64 bits
+	183: spr83 (spr83), unsigned 64 bits
+	184: spr84 (spr84), unsigned 64 bits
+	185: spr85 (spr85), unsigned 64 bits
+	186: spr86 (spr86), unsigned 64 bits
+	187: spr87 (spr87), unsigned 64 bits
+	188: spr88 (spr88), unsigned 64 bits
+	189: spr89 (spr89), unsigned 64 bits
+	190: spr90 (spr90), unsigned 64 bits
+	191: spr91 (spr91), unsigned 64 bits
+	192: spr92 (spr92), unsigned 64 bits
+	193: spr93 (spr93), unsigned 64 bits
+	194: spr94 (spr94), unsigned 64 bits
+	195: spr95 (spr95), unsigned 64 bits
+	196: spr96 (spr96), unsigned 64 bits
+	197: spr97 (spr97), unsigned 64 bits
+	198: spr98 (spr98), unsigned 64 bits
+	199: spr99 (spr99), unsigned 64 bits
+	200: spr100 (spr100), unsigned 64 bits
+	201: spr101 (spr101), unsigned 64 bits
+	202: spr102 (spr102), unsigned 64 bits
+	203: spr103 (spr103), unsigned 64 bits
+	204: spr104 (spr104), unsigned 64 bits
+	205: spr105 (spr105), unsigned 64 bits
+	206: spr106 (spr106), unsigned 64 bits
+	207: spr107 (spr107), unsigned 64 bits
+	208: spr108 (spr108), unsigned 64 bits
+	209: spr109 (spr109), unsigned 64 bits
+	210: spr110 (spr110), unsigned 64 bits
+	211: spr111 (spr111), unsigned 64 bits
+	212: spr112 (spr112), unsigned 64 bits
+	213: spr113 (spr113), unsigned 64 bits
+	214: spr114 (spr114), unsigned 64 bits
+	215: spr115 (spr115), unsigned 64 bits
+	216: spr116 (spr116), unsigned 64 bits
+	217: spr117 (spr117), unsigned 64 bits
+	218: spr118 (spr118), unsigned 64 bits
+	219: spr119 (spr119), unsigned 64 bits
+	220: spr120 (spr120), unsigned 64 bits
+	221: spr121 (spr121), unsigned 64 bits
+	222: spr122 (spr122), unsigned 64 bits
+	223: spr123 (spr123), unsigned 64 bits
+	224: spr124 (spr124), unsigned 64 bits
+	225: spr125 (spr125), unsigned 64 bits
+	226: spr126 (spr126), unsigned 64 bits
+	227: spr127 (spr127), unsigned 64 bits
+	228: spr128 (spr128), unsigned 64 bits
+	229: spr129 (spr129), unsigned 64 bits
+	230: spr130 (spr130), unsigned 64 bits
+	231: spr131 (spr131), unsigned 64 bits
+	232: spr132 (spr132), unsigned 64 bits
+	233: spr133 (spr133), unsigned 64 bits
+	234: spr134 (spr134), unsigned 64 bits
+	235: spr135 (spr135), unsigned 64 bits
+	236: spr136 (spr136), unsigned 64 bits
+	237: spr137 (spr137), unsigned 64 bits
+	238: spr138 (spr138), unsigned 64 bits
+	239: spr139 (spr139), unsigned 64 bits
+	240: spr140 (spr140), unsigned 64 bits
+	241: spr141 (spr141), unsigned 64 bits
+	242: spr142 (spr142), unsigned 64 bits
+	243: spr143 (spr143), unsigned 64 bits
+	244: spr144 (spr144), unsigned 64 bits
+	245: spr145 (spr145), unsigned 64 bits
+	246: spr146 (spr146), unsigned 64 bits
+	247: spr147 (spr147), unsigned 64 bits
+	248: spr148 (spr148), unsigned 64 bits
+	249: spr149 (spr149), unsigned 64 bits
+	250: spr150 (spr150), unsigned 64 bits
+	251: spr151 (spr151), unsigned 64 bits
+	252: spr152 (spr152), unsigned 64 bits
+	253: spr153 (spr153), unsigned 64 bits
+	254: spr154 (spr154), unsigned 64 bits
+	255: spr155 (spr155), unsigned 64 bits
+	256: spr156 (spr156), unsigned 64 bits
+	257: spr157 (spr157), unsigned 64 bits
+	258: spr158 (spr158), unsigned 64 bits
+	259: spr159 (spr159), unsigned 64 bits
+	260: spr160 (spr160), unsigned 64 bits
+	261: spr161 (spr161), unsigned 64 bits
+	262: spr162 (spr162), unsigned 64 bits
+	263: spr163 (spr163), unsigned 64 bits
+	264: spr164 (spr164), unsigned 64 bits
+	265: spr165 (spr165), unsigned 64 bits
+	266: spr166 (spr166), unsigned 64 bits
+	267: spr167 (spr167), unsigned 64 bits
+	268: spr168 (spr168), unsigned 64 bits
+	269: spr169 (spr169), unsigned 64 bits
+	270: spr170 (spr170), unsigned 64 bits
+	271: spr171 (spr171), unsigned 64 bits
+	272: spr172 (spr172), unsigned 64 bits
+	273: spr173 (spr173), unsigned 64 bits
+	274: spr174 (spr174), unsigned 64 bits
+	275: spr175 (spr175), unsigned 64 bits
+	276: spr176 (spr176), unsigned 64 bits
+	277: spr177 (spr177), unsigned 64 bits
+	278: spr178 (spr178), unsigned 64 bits
+	279: spr179 (spr179), unsigned 64 bits
+	280: spr180 (spr180), unsigned 64 bits
+	281: spr181 (spr181), unsigned 64 bits
+	282: spr182 (spr182), unsigned 64 bits
+	283: spr183 (spr183), unsigned 64 bits
+	284: spr184 (spr184), unsigned 64 bits
+	285: spr185 (spr185), unsigned 64 bits
+	286: spr186 (spr186), unsigned 64 bits
+	287: spr187 (spr187), unsigned 64 bits
+	288: spr188 (spr188), unsigned 64 bits
+	289: spr189 (spr189), unsigned 64 bits
+	290: spr190 (spr190), unsigned 64 bits
+	291: spr191 (spr191), unsigned 64 bits
+	292: spr192 (spr192), unsigned 64 bits
+	293: spr193 (spr193), unsigned 64 bits
+	294: spr194 (spr194), unsigned 64 bits
+	295: spr195 (spr195), unsigned 64 bits
+	296: spr196 (spr196), unsigned 64 bits
+	297: spr197 (spr197), unsigned 64 bits
+	298: spr198 (spr198), unsigned 64 bits
+	299: spr199 (spr199), unsigned 64 bits
+	300: spr200 (spr200), unsigned 64 bits
+	301: spr201 (spr201), unsigned 64 bits
+	302: spr202 (spr202), unsigned 64 bits
+	303: spr203 (spr203), unsigned 64 bits
+	304: spr204 (spr204), unsigned 64 bits
+	305: spr205 (spr205), unsigned 64 bits
+	306: spr206 (spr206), unsigned 64 bits
+	307: spr207 (spr207), unsigned 64 bits
+	308: spr208 (spr208), unsigned 64 bits
+	309: spr209 (spr209), unsigned 64 bits
+	310: spr210 (spr210), unsigned 64 bits
+	311: spr211 (spr211), unsigned 64 bits
+	312: spr212 (spr212), unsigned 64 bits
+	313: spr213 (spr213), unsigned 64 bits
+	314: spr214 (spr214), unsigned 64 bits
+	315: spr215 (spr215), unsigned 64 bits
+	316: spr216 (spr216), unsigned 64 bits
+	317: spr217 (spr217), unsigned 64 bits
+	318: spr218 (spr218), unsigned 64 bits
+	319: spr219 (spr219), unsigned 64 bits
+	320: spr220 (spr220), unsigned 64 bits
+	321: spr221 (spr221), unsigned 64 bits
+	322: spr222 (spr222), unsigned 64 bits
+	323: spr223 (spr223), unsigned 64 bits
+	324: spr224 (spr224), unsigned 64 bits
+	325: spr225 (spr225), unsigned 64 bits
+	326: spr226 (spr226), unsigned 64 bits
+	327: spr227 (spr227), unsigned 64 bits
+	328: spr228 (spr228), unsigned 64 bits
+	329: spr229 (spr229), unsigned 64 bits
+	330: spr230 (spr230), unsigned 64 bits
+	331: spr231 (spr231), unsigned 64 bits
+	332: spr232 (spr232), unsigned 64 bits
+	333: spr233 (spr233), unsigned 64 bits
+	334: spr234 (spr234), unsigned 64 bits
+	335: spr235 (spr235), unsigned 64 bits
+	336: spr236 (spr236), unsigned 64 bits
+	337: spr237 (spr237), unsigned 64 bits
+	338: spr238 (spr238), unsigned 64 bits
+	339: spr239 (spr239), unsigned 64 bits
+	340: spr240 (spr240), unsigned 64 bits
+	341: spr241 (spr241), unsigned 64 bits
+	342: spr242 (spr242), unsigned 64 bits
+	343: spr243 (spr243), unsigned 64 bits
+	344: spr244 (spr244), unsigned 64 bits
+	345: spr245 (spr245), unsigned 64 bits
+	346: spr246 (spr246), unsigned 64 bits
+	347: spr247 (spr247), unsigned 64 bits
+	348: spr248 (spr248), unsigned 64 bits
+	349: spr249 (spr249), unsigned 64 bits
+	350: spr250 (spr250), unsigned 64 bits
+	351: spr251 (spr251), unsigned 64 bits
+	352: spr252 (spr252), unsigned 64 bits
+	353: spr253 (spr253), unsigned 64 bits
+	354: spr254 (spr254), unsigned 64 bits
+	355: spr255 (spr255), unsigned 64 bits
+	357: spr257 (spr257), unsigned 64 bits
+	358: spr258 (spr258), unsigned 64 bits
+	359: spr259 (spr259), unsigned 64 bits
+	360: spr260 (spr260), unsigned 64 bits
+	361: spr261 (spr261), unsigned 64 bits
+	362: spr262 (spr262), unsigned 64 bits
+	363: spr263 (spr263), unsigned 64 bits
+	364: spr264 (spr264), unsigned 64 bits
+	365: spr265 (spr265), unsigned 64 bits
+	366: spr266 (spr266), unsigned 64 bits
+	367: spr267 (spr267), unsigned 64 bits
+	368: spr268 (spr268), unsigned 64 bits
+	369: spr269 (spr269), unsigned 64 bits
+	370: spr270 (spr270), unsigned 64 bits
+	371: spr271 (spr271), unsigned 64 bits
+	372: spr272 (spr272), unsigned 64 bits
+	373: spr273 (spr273), unsigned 64 bits
+	374: spr274 (spr274), unsigned 64 bits
+	375: spr275 (spr275), unsigned 64 bits
+	376: spr276 (spr276), unsigned 64 bits
+	377: spr277 (spr277), unsigned 64 bits
+	378: spr278 (spr278), unsigned 64 bits
+	379: spr279 (spr279), unsigned 64 bits
+	380: spr280 (spr280), unsigned 64 bits
+	381: spr281 (spr281), unsigned 64 bits
+	382: spr282 (spr282), unsigned 64 bits
+	383: spr283 (spr283), unsigned 64 bits
+	384: spr284 (spr284), unsigned 64 bits
+	385: spr285 (spr285), unsigned 64 bits
+	386: spr286 (spr286), unsigned 64 bits
+	387: spr287 (spr287), unsigned 64 bits
+	388: spr288 (spr288), unsigned 64 bits
+	389: spr289 (spr289), unsigned 64 bits
+	390: spr290 (spr290), unsigned 64 bits
+	391: spr291 (spr291), unsigned 64 bits
+	392: spr292 (spr292), unsigned 64 bits
+	393: spr293 (spr293), unsigned 64 bits
+	394: spr294 (spr294), unsigned 64 bits
+	395: spr295 (spr295), unsigned 64 bits
+	396: spr296 (spr296), unsigned 64 bits
+	397: spr297 (spr297), unsigned 64 bits
+	398: spr298 (spr298), unsigned 64 bits
+	399: spr299 (spr299), unsigned 64 bits
+	400: spr300 (spr300), unsigned 64 bits
+	401: spr301 (spr301), unsigned 64 bits
+	402: spr302 (spr302), unsigned 64 bits
+	403: spr303 (spr303), unsigned 64 bits
+	404: spr304 (spr304), unsigned 64 bits
+	405: spr305 (spr305), unsigned 64 bits
+	406: spr306 (spr306), unsigned 64 bits
+	407: spr307 (spr307), unsigned 64 bits
+	408: spr308 (spr308), unsigned 64 bits
+	409: spr309 (spr309), unsigned 64 bits
+	410: spr310 (spr310), unsigned 64 bits
+	411: spr311 (spr311), unsigned 64 bits
+	412: spr312 (spr312), unsigned 64 bits
+	413: spr313 (spr313), unsigned 64 bits
+	414: spr314 (spr314), unsigned 64 bits
+	415: spr315 (spr315), unsigned 64 bits
+	416: spr316 (spr316), unsigned 64 bits
+	417: spr317 (spr317), unsigned 64 bits
+	418: spr318 (spr318), unsigned 64 bits
+	419: spr319 (spr319), unsigned 64 bits
+	420: spr320 (spr320), unsigned 64 bits
+	421: spr321 (spr321), unsigned 64 bits
+	422: spr322 (spr322), unsigned 64 bits
+	423: spr323 (spr323), unsigned 64 bits
+	424: spr324 (spr324), unsigned 64 bits
+	425: spr325 (spr325), unsigned 64 bits
+	426: spr326 (spr326), unsigned 64 bits
+	427: spr327 (spr327), unsigned 64 bits
+	428: spr328 (spr328), unsigned 64 bits
+	429: spr329 (spr329), unsigned 64 bits
+	430: spr330 (spr330), unsigned 64 bits
+	431: spr331 (spr331), unsigned 64 bits
+	432: spr332 (spr332), unsigned 64 bits
+	433: spr333 (spr333), unsigned 64 bits
+	434: spr334 (spr334), unsigned 64 bits
+	435: spr335 (spr335), unsigned 64 bits
+	436: spr336 (spr336), unsigned 64 bits
+	437: spr337 (spr337), unsigned 64 bits
+	438: spr338 (spr338), unsigned 64 bits
+	439: spr339 (spr339), unsigned 64 bits
+	440: spr340 (spr340), unsigned 64 bits
+	441: spr341 (spr341), unsigned 64 bits
+	442: spr342 (spr342), unsigned 64 bits
+	443: spr343 (spr343), unsigned 64 bits
+	444: spr344 (spr344), unsigned 64 bits
+	445: spr345 (spr345), unsigned 64 bits
+	446: spr346 (spr346), unsigned 64 bits
+	447: spr347 (spr347), unsigned 64 bits
+	448: spr348 (spr348), unsigned 64 bits
+	449: spr349 (spr349), unsigned 64 bits
+	450: spr350 (spr350), unsigned 64 bits
+	451: spr351 (spr351), unsigned 64 bits
+	452: spr352 (spr352), unsigned 64 bits
+	453: spr353 (spr353), unsigned 64 bits
+	454: spr354 (spr354), unsigned 64 bits
+	455: spr355 (spr355), unsigned 64 bits
+	456: spr356 (spr356), unsigned 64 bits
+	457: spr357 (spr357), unsigned 64 bits
+	458: spr358 (spr358), unsigned 64 bits
+	459: spr359 (spr359), unsigned 64 bits
+	460: spr360 (spr360), unsigned 64 bits
+	461: spr361 (spr361), unsigned 64 bits
+	462: spr362 (spr362), unsigned 64 bits
+	463: spr363 (spr363), unsigned 64 bits
+	464: spr364 (spr364), unsigned 64 bits
+	465: spr365 (spr365), unsigned 64 bits
+	466: spr366 (spr366), unsigned 64 bits
+	467: spr367 (spr367), unsigned 64 bits
+	468: spr368 (spr368), unsigned 64 bits
+	469: spr369 (spr369), unsigned 64 bits
+	470: spr370 (spr370), unsigned 64 bits
+	471: spr371 (spr371), unsigned 64 bits
+	472: spr372 (spr372), unsigned 64 bits
+	473: spr373 (spr373), unsigned 64 bits
+	474: spr374 (spr374), unsigned 64 bits
+	475: spr375 (spr375), unsigned 64 bits
+	476: spr376 (spr376), unsigned 64 bits
+	477: spr377 (spr377), unsigned 64 bits
+	478: spr378 (spr378), unsigned 64 bits
+	479: spr379 (spr379), unsigned 64 bits
+	480: spr380 (spr380), unsigned 64 bits
+	481: spr381 (spr381), unsigned 64 bits
+	482: spr382 (spr382), unsigned 64 bits
+	483: spr383 (spr383), unsigned 64 bits
+	484: spr384 (spr384), unsigned 64 bits
+	485: spr385 (spr385), unsigned 64 bits
+	486: spr386 (spr386), unsigned 64 bits
+	487: spr387 (spr387), unsigned 64 bits
+	488: spr388 (spr388), unsigned 64 bits
+	489: spr389 (spr389), unsigned 64 bits
+	490: spr390 (spr390), unsigned 64 bits
+	491: spr391 (spr391), unsigned 64 bits
+	492: spr392 (spr392), unsigned 64 bits
+	493: spr393 (spr393), unsigned 64 bits
+	494: spr394 (spr394), unsigned 64 bits
+	495: spr395 (spr395), unsigned 64 bits
+	496: spr396 (spr396), unsigned 64 bits
+	497: spr397 (spr397), unsigned 64 bits
+	498: spr398 (spr398), unsigned 64 bits
+	499: spr399 (spr399), unsigned 64 bits
+	500: spr400 (spr400), unsigned 64 bits
+	501: spr401 (spr401), unsigned 64 bits
+	502: spr402 (spr402), unsigned 64 bits
+	503: spr403 (spr403), unsigned 64 bits
+	504: spr404 (spr404), unsigned 64 bits
+	505: spr405 (spr405), unsigned 64 bits
+	506: spr406 (spr406), unsigned 64 bits
+	507: spr407 (spr407), unsigned 64 bits
+	508: spr408 (spr408), unsigned 64 bits
+	509: spr409 (spr409), unsigned 64 bits
+	510: spr410 (spr410), unsigned 64 bits
+	511: spr411 (spr411), unsigned 64 bits
+	512: spr412 (spr412), unsigned 64 bits
+	513: spr413 (spr413), unsigned 64 bits
+	514: spr414 (spr414), unsigned 64 bits
+	515: spr415 (spr415), unsigned 64 bits
+	516: spr416 (spr416), unsigned 64 bits
+	517: spr417 (spr417), unsigned 64 bits
+	518: spr418 (spr418), unsigned 64 bits
+	519: spr419 (spr419), unsigned 64 bits
+	520: spr420 (spr420), unsigned 64 bits
+	521: spr421 (spr421), unsigned 64 bits
+	522: spr422 (spr422), unsigned 64 bits
+	523: spr423 (spr423), unsigned 64 bits
+	524: spr424 (spr424), unsigned 64 bits
+	525: spr425 (spr425), unsigned 64 bits
+	526: spr426 (spr426), unsigned 64 bits
+	527: spr427 (spr427), unsigned 64 bits
+	528: spr428 (spr428), unsigned 64 bits
+	529: spr429 (spr429), unsigned 64 bits
+	530: spr430 (spr430), unsigned 64 bits
+	531: spr431 (spr431), unsigned 64 bits
+	532: spr432 (spr432), unsigned 64 bits
+	533: spr433 (spr433), unsigned 64 bits
+	534: spr434 (spr434), unsigned 64 bits
+	535: spr435 (spr435), unsigned 64 bits
+	536: spr436 (spr436), unsigned 64 bits
+	537: spr437 (spr437), unsigned 64 bits
+	538: spr438 (spr438), unsigned 64 bits
+	539: spr439 (spr439), unsigned 64 bits
+	540: spr440 (spr440), unsigned 64 bits
+	541: spr441 (spr441), unsigned 64 bits
+	542: spr442 (spr442), unsigned 64 bits
+	543: spr443 (spr443), unsigned 64 bits
+	544: spr444 (spr444), unsigned 64 bits
+	545: spr445 (spr445), unsigned 64 bits
+	546: spr446 (spr446), unsigned 64 bits
+	547: spr447 (spr447), unsigned 64 bits
+	548: spr448 (spr448), unsigned 64 bits
+	549: spr449 (spr449), unsigned 64 bits
+	550: spr450 (spr450), unsigned 64 bits
+	551: spr451 (spr451), unsigned 64 bits
+	552: spr452 (spr452), unsigned 64 bits
+	553: spr453 (spr453), unsigned 64 bits
+	554: spr454 (spr454), unsigned 64 bits
+	555: spr455 (spr455), unsigned 64 bits
+	556: spr456 (spr456), unsigned 64 bits
+	557: spr457 (spr457), unsigned 64 bits
+	558: spr458 (spr458), unsigned 64 bits
+	559: spr459 (spr459), unsigned 64 bits
+	560: spr460 (spr460), unsigned 64 bits
+	561: spr461 (spr461), unsigned 64 bits
+	562: spr462 (spr462), unsigned 64 bits
+	563: spr463 (spr463), unsigned 64 bits
+	564: spr464 (spr464), unsigned 64 bits
+	565: spr465 (spr465), unsigned 64 bits
+	566: spr466 (spr466), unsigned 64 bits
+	567: spr467 (spr467), unsigned 64 bits
+	568: spr468 (spr468), unsigned 64 bits
+	569: spr469 (spr469), unsigned 64 bits
+	570: spr470 (spr470), unsigned 64 bits
+	571: spr471 (spr471), unsigned 64 bits
+	572: spr472 (spr472), unsigned 64 bits
+	573: spr473 (spr473), unsigned 64 bits
+	574: spr474 (spr474), unsigned 64 bits
+	575: spr475 (spr475), unsigned 64 bits
+	576: spr476 (spr476), unsigned 64 bits
+	577: spr477 (spr477), unsigned 64 bits
+	578: spr478 (spr478), unsigned 64 bits
+	579: spr479 (spr479), unsigned 64 bits
+	580: spr480 (spr480), unsigned 64 bits
+	581: spr481 (spr481), unsigned 64 bits
+	582: spr482 (spr482), unsigned 64 bits
+	583: spr483 (spr483), unsigned 64 bits
+	584: spr484 (spr484), unsigned 64 bits
+	585: spr485 (spr485), unsigned 64 bits
+	586: spr486 (spr486), unsigned 64 bits
+	587: spr487 (spr487), unsigned 64 bits
+	588: spr488 (spr488), unsigned 64 bits
+	589: spr489 (spr489), unsigned 64 bits
+	590: spr490 (spr490), unsigned 64 bits
+	591: spr491 (spr491), unsigned 64 bits
+	592: spr492 (spr492), unsigned 64 bits
+	593: spr493 (spr493), unsigned 64 bits
+	594: spr494 (spr494), unsigned 64 bits
+	595: spr495 (spr495), unsigned 64 bits
+	596: spr496 (spr496), unsigned 64 bits
+	597: spr497 (spr497), unsigned 64 bits
+	598: spr498 (spr498), unsigned 64 bits
+	599: spr499 (spr499), unsigned 64 bits
+	600: spr500 (spr500), unsigned 64 bits
+	601: spr501 (spr501), unsigned 64 bits
+	602: spr502 (spr502), unsigned 64 bits
+	603: spr503 (spr503), unsigned 64 bits
+	604: spr504 (spr504), unsigned 64 bits
+	605: spr505 (spr505), unsigned 64 bits
+	606: spr506 (spr506), unsigned 64 bits
+	607: spr507 (spr507), unsigned 64 bits
+	608: spr508 (spr508), unsigned 64 bits
+	609: spr509 (spr509), unsigned 64 bits
+	610: spr510 (spr510), unsigned 64 bits
+	611: spr511 (spr511), unsigned 64 bits
+	613: spr513 (spr513), unsigned 64 bits
+	614: spr514 (spr514), unsigned 64 bits
+	615: spr515 (spr515), unsigned 64 bits
+	616: spr516 (spr516), unsigned 64 bits
+	617: spr517 (spr517), unsigned 64 bits
+	618: spr518 (spr518), unsigned 64 bits
+	619: spr519 (spr519), unsigned 64 bits
+	620: spr520 (spr520), unsigned 64 bits
+	621: spr521 (spr521), unsigned 64 bits
+	622: spr522 (spr522), unsigned 64 bits
+	623: spr523 (spr523), unsigned 64 bits
+	624: spr524 (spr524), unsigned 64 bits
+	625: spr525 (spr525), unsigned 64 bits
+	626: spr526 (spr526), unsigned 64 bits
+	627: spr527 (spr527), unsigned 64 bits
+	628: spr528 (spr528), unsigned 64 bits
+	629: spr529 (spr529), unsigned 64 bits
+	630: spr530 (spr530), unsigned 64 bits
+	631: spr531 (spr531), unsigned 64 bits
+	632: spr532 (spr532), unsigned 64 bits
+	633: spr533 (spr533), unsigned 64 bits
+	634: spr534 (spr534), unsigned 64 bits
+	635: spr535 (spr535), unsigned 64 bits
+	636: spr536 (spr536), unsigned 64 bits
+	637: spr537 (spr537), unsigned 64 bits
+	638: spr538 (spr538), unsigned 64 bits
+	639: spr539 (spr539), unsigned 64 bits
+	640: spr540 (spr540), unsigned 64 bits
+	641: spr541 (spr541), unsigned 64 bits
+	642: spr542 (spr542), unsigned 64 bits
+	643: spr543 (spr543), unsigned 64 bits
+	644: spr544 (spr544), unsigned 64 bits
+	645: spr545 (spr545), unsigned 64 bits
+	646: spr546 (spr546), unsigned 64 bits
+	647: spr547 (spr547), unsigned 64 bits
+	648: spr548 (spr548), unsigned 64 bits
+	649: spr549 (spr549), unsigned 64 bits
+	650: spr550 (spr550), unsigned 64 bits
+	651: spr551 (spr551), unsigned 64 bits
+	652: spr552 (spr552), unsigned 64 bits
+	653: spr553 (spr553), unsigned 64 bits
+	654: spr554 (spr554), unsigned 64 bits
+	655: spr555 (spr555), unsigned 64 bits
+	656: spr556 (spr556), unsigned 64 bits
+	657: spr557 (spr557), unsigned 64 bits
+	658: spr558 (spr558), unsigned 64 bits
+	659: spr559 (spr559), unsigned 64 bits
+	660: spr560 (spr560), unsigned 64 bits
+	661: spr561 (spr561), unsigned 64 bits
+	662: spr562 (spr562), unsigned 64 bits
+	663: spr563 (spr563), unsigned 64 bits
+	664: spr564 (spr564), unsigned 64 bits
+	665: spr565 (spr565), unsigned 64 bits
+	666: spr566 (spr566), unsigned 64 bits
+	667: spr567 (spr567), unsigned 64 bits
+	668: spr568 (spr568), unsigned 64 bits
+	669: spr569 (spr569), unsigned 64 bits
+	670: spr570 (spr570), unsigned 64 bits
+	671: spr571 (spr571), unsigned 64 bits
+	672: spr572 (spr572), unsigned 64 bits
+	673: spr573 (spr573), unsigned 64 bits
+	674: spr574 (spr574), unsigned 64 bits
+	675: spr575 (spr575), unsigned 64 bits
+	676: spr576 (spr576), unsigned 64 bits
+	677: spr577 (spr577), unsigned 64 bits
+	678: spr578 (spr578), unsigned 64 bits
+	679: spr579 (spr579), unsigned 64 bits
+	680: spr580 (spr580), unsigned 64 bits
+	681: spr581 (spr581), unsigned 64 bits
+	682: spr582 (spr582), unsigned 64 bits
+	683: spr583 (spr583), unsigned 64 bits
+	684: spr584 (spr584), unsigned 64 bits
+	685: spr585 (spr585), unsigned 64 bits
+	686: spr586 (spr586), unsigned 64 bits
+	687: spr587 (spr587), unsigned 64 bits
+	688: spr588 (spr588), unsigned 64 bits
+	689: spr589 (spr589), unsigned 64 bits
+	690: spr590 (spr590), unsigned 64 bits
+	691: spr591 (spr591), unsigned 64 bits
+	692: spr592 (spr592), unsigned 64 bits
+	693: spr593 (spr593), unsigned 64 bits
+	694: spr594 (spr594), unsigned 64 bits
+	695: spr595 (spr595), unsigned 64 bits
+	696: spr596 (spr596), unsigned 64 bits
+	697: spr597 (spr597), unsigned 64 bits
+	698: spr598 (spr598), unsigned 64 bits
+	699: spr599 (spr599), unsigned 64 bits
+	700: spr600 (spr600), unsigned 64 bits
+	701: spr601 (spr601), unsigned 64 bits
+	702: spr602 (spr602), unsigned 64 bits
+	703: spr603 (spr603), unsigned 64 bits
+	704: spr604 (spr604), unsigned 64 bits
+	705: spr605 (spr605), unsigned 64 bits
+	706: spr606 (spr606), unsigned 64 bits
+	707: spr607 (spr607), unsigned 64 bits
+	708: spr608 (spr608), unsigned 64 bits
+	709: spr609 (spr609), unsigned 64 bits
+	710: spr610 (spr610), unsigned 64 bits
+	711: spr611 (spr611), unsigned 64 bits
+	712: spr612 (spr612), unsigned 64 bits
+	713: spr613 (spr613), unsigned 64 bits
+	714: spr614 (spr614), unsigned 64 bits
+	715: spr615 (spr615), unsigned 64 bits
+	716: spr616 (spr616), unsigned 64 bits
+	717: spr617 (spr617), unsigned 64 bits
+	718: spr618 (spr618), unsigned 64 bits
+	719: spr619 (spr619), unsigned 64 bits
+	720: spr620 (spr620), unsigned 64 bits
+	721: spr621 (spr621), unsigned 64 bits
+	722: spr622 (spr622), unsigned 64 bits
+	723: spr623 (spr623), unsigned 64 bits
+	724: spr624 (spr624), unsigned 64 bits
+	725: spr625 (spr625), unsigned 64 bits
+	726: spr626 (spr626), unsigned 64 bits
+	727: spr627 (spr627), unsigned 64 bits
+	728: spr628 (spr628), unsigned 64 bits
+	729: spr629 (spr629), unsigned 64 bits
+	730: spr630 (spr630), unsigned 64 bits
+	731: spr631 (spr631), unsigned 64 bits
+	732: spr632 (spr632), unsigned 64 bits
+	733: spr633 (spr633), unsigned 64 bits
+	734: spr634 (spr634), unsigned 64 bits
+	735: spr635 (spr635), unsigned 64 bits
+	736: spr636 (spr636), unsigned 64 bits
+	737: spr637 (spr637), unsigned 64 bits
+	738: spr638 (spr638), unsigned 64 bits
+	739: spr639 (spr639), unsigned 64 bits
+	740: spr640 (spr640), unsigned 64 bits
+	741: spr641 (spr641), unsigned 64 bits
+	742: spr642 (spr642), unsigned 64 bits
+	743: spr643 (spr643), unsigned 64 bits
+	744: spr644 (spr644), unsigned 64 bits
+	745: spr645 (spr645), unsigned 64 bits
+	746: spr646 (spr646), unsigned 64 bits
+	747: spr647 (spr647), unsigned 64 bits
+	748: spr648 (spr648), unsigned 64 bits
+	749: spr649 (spr649), unsigned 64 bits
+	750: spr650 (spr650), unsigned 64 bits
+	751: spr651 (spr651), unsigned 64 bits
+	752: spr652 (spr652), unsigned 64 bits
+	753: spr653 (spr653), unsigned 64 bits
+	754: spr654 (spr654), unsigned 64 bits
+	755: spr655 (spr655), unsigned 64 bits
+	756: spr656 (spr656), unsigned 64 bits
+	757: spr657 (spr657), unsigned 64 bits
+	758: spr658 (spr658), unsigned 64 bits
+	759: spr659 (spr659), unsigned 64 bits
+	760: spr660 (spr660), unsigned 64 bits
+	761: spr661 (spr661), unsigned 64 bits
+	762: spr662 (spr662), unsigned 64 bits
+	763: spr663 (spr663), unsigned 64 bits
+	764: spr664 (spr664), unsigned 64 bits
+	765: spr665 (spr665), unsigned 64 bits
+	766: spr666 (spr666), unsigned 64 bits
+	767: spr667 (spr667), unsigned 64 bits
+	768: spr668 (spr668), unsigned 64 bits
+	769: spr669 (spr669), unsigned 64 bits
+	770: spr670 (spr670), unsigned 64 bits
+	771: spr671 (spr671), unsigned 64 bits
+	772: spr672 (spr672), unsigned 64 bits
+	773: spr673 (spr673), unsigned 64 bits
+	774: spr674 (spr674), unsigned 64 bits
+	775: spr675 (spr675), unsigned 64 bits
+	776: spr676 (spr676), unsigned 64 bits
+	777: spr677 (spr677), unsigned 64 bits
+	778: spr678 (spr678), unsigned 64 bits
+	779: spr679 (spr679), unsigned 64 bits
+	780: spr680 (spr680), unsigned 64 bits
+	781: spr681 (spr681), unsigned 64 bits
+	782: spr682 (spr682), unsigned 64 bits
+	783: spr683 (spr683), unsigned 64 bits
+	784: spr684 (spr684), unsigned 64 bits
+	785: spr685 (spr685), unsigned 64 bits
+	786: spr686 (spr686), unsigned 64 bits
+	787: spr687 (spr687), unsigned 64 bits
+	788: spr688 (spr688), unsigned 64 bits
+	789: spr689 (spr689), unsigned 64 bits
+	790: spr690 (spr690), unsigned 64 bits
+	791: spr691 (spr691), unsigned 64 bits
+	792: spr692 (spr692), unsigned 64 bits
+	793: spr693 (spr693), unsigned 64 bits
+	794: spr694 (spr694), unsigned 64 bits
+	795: spr695 (spr695), unsigned 64 bits
+	796: spr696 (spr696), unsigned 64 bits
+	797: spr697 (spr697), unsigned 64 bits
+	798: spr698 (spr698), unsigned 64 bits
+	799: spr699 (spr699), unsigned 64 bits
+	800: spr700 (spr700), unsigned 64 bits
+	801: spr701 (spr701), unsigned 64 bits
+	802: spr702 (spr702), unsigned 64 bits
+	803: spr703 (spr703), unsigned 64 bits
+	804: spr704 (spr704), unsigned 64 bits
+	805: spr705 (spr705), unsigned 64 bits
+	806: spr706 (spr706), unsigned 64 bits
+	807: spr707 (spr707), unsigned 64 bits
+	808: spr708 (spr708), unsigned 64 bits
+	809: spr709 (spr709), unsigned 64 bits
+	810: spr710 (spr710), unsigned 64 bits
+	811: spr711 (spr711), unsigned 64 bits
+	812: spr712 (spr712), unsigned 64 bits
+	813: spr713 (spr713), unsigned 64 bits
+	814: spr714 (spr714), unsigned 64 bits
+	815: spr715 (spr715), unsigned 64 bits
+	816: spr716 (spr716), unsigned 64 bits
+	817: spr717 (spr717), unsigned 64 bits
+	818: spr718 (spr718), unsigned 64 bits
+	819: spr719 (spr719), unsigned 64 bits
+	820: spr720 (spr720), unsigned 64 bits
+	821: spr721 (spr721), unsigned 64 bits
+	822: spr722 (spr722), unsigned 64 bits
+	823: spr723 (spr723), unsigned 64 bits
+	824: spr724 (spr724), unsigned 64 bits
+	825: spr725 (spr725), unsigned 64 bits
+	826: spr726 (spr726), unsigned 64 bits
+	827: spr727 (spr727), unsigned 64 bits
+	828: spr728 (spr728), unsigned 64 bits
+	829: spr729 (spr729), unsigned 64 bits
+	830: spr730 (spr730), unsigned 64 bits
+	831: spr731 (spr731), unsigned 64 bits
+	832: spr732 (spr732), unsigned 64 bits
+	833: spr733 (spr733), unsigned 64 bits
+	834: spr734 (spr734), unsigned 64 bits
+	835: spr735 (spr735), unsigned 64 bits
+	836: spr736 (spr736), unsigned 64 bits
+	837: spr737 (spr737), unsigned 64 bits
+	838: spr738 (spr738), unsigned 64 bits
+	839: spr739 (spr739), unsigned 64 bits
+	840: spr740 (spr740), unsigned 64 bits
+	841: spr741 (spr741), unsigned 64 bits
+	842: spr742 (spr742), unsigned 64 bits
+	843: spr743 (spr743), unsigned 64 bits
+	844: spr744 (spr744), unsigned 64 bits
+	845: spr745 (spr745), unsigned 64 bits
+	846: spr746 (spr746), unsigned 64 bits
+	847: spr747 (spr747), unsigned 64 bits
+	848: spr748 (spr748), unsigned 64 bits
+	849: spr749 (spr749), unsigned 64 bits
+	850: spr750 (spr750), unsigned 64 bits
+	851: spr751 (spr751), unsigned 64 bits
+	852: spr752 (spr752), unsigned 64 bits
+	853: spr753 (spr753), unsigned 64 bits
+	854: spr754 (spr754), unsigned 64 bits
+	855: spr755 (spr755), unsigned 64 bits
+	856: spr756 (spr756), unsigned 64 bits
+	857: spr757 (spr757), unsigned 64 bits
+	858: spr758 (spr758), unsigned 64 bits
+	859: spr759 (spr759), unsigned 64 bits
+	860: spr760 (spr760), unsigned 64 bits
+	861: spr761 (spr761), unsigned 64 bits
+	862: spr762 (spr762), unsigned 64 bits
+	863: spr763 (spr763), unsigned 64 bits
+	864: spr764 (spr764), unsigned 64 bits
+	865: spr765 (spr765), unsigned 64 bits
+	866: spr766 (spr766), unsigned 64 bits
+	867: spr767 (spr767), unsigned 64 bits
+	868: spr768 (spr768), unsigned 64 bits
+	869: spr769 (spr769), unsigned 64 bits
+	870: spr770 (spr770), unsigned 64 bits
+	871: spr771 (spr771), unsigned 64 bits
+	872: spr772 (spr772), unsigned 64 bits
+	873: spr773 (spr773), unsigned 64 bits
+	874: spr774 (spr774), unsigned 64 bits
+	875: spr775 (spr775), unsigned 64 bits
+	876: spr776 (spr776), unsigned 64 bits
+	877: spr777 (spr777), unsigned 64 bits
+	878: spr778 (spr778), unsigned 64 bits
+	879: spr779 (spr779), unsigned 64 bits
+	880: spr780 (spr780), unsigned 64 bits
+	881: spr781 (spr781), unsigned 64 bits
+	882: spr782 (spr782), unsigned 64 bits
+	883: spr783 (spr783), unsigned 64 bits
+	884: spr784 (spr784), unsigned 64 bits
+	885: spr785 (spr785), unsigned 64 bits
+	886: spr786 (spr786), unsigned 64 bits
+	887: spr787 (spr787), unsigned 64 bits
+	888: spr788 (spr788), unsigned 64 bits
+	889: spr789 (spr789), unsigned 64 bits
+	890: spr790 (spr790), unsigned 64 bits
+	891: spr791 (spr791), unsigned 64 bits
+	892: spr792 (spr792), unsigned 64 bits
+	893: spr793 (spr793), unsigned 64 bits
+	894: spr794 (spr794), unsigned 64 bits
+	895: spr795 (spr795), unsigned 64 bits
+	896: spr796 (spr796), unsigned 64 bits
+	897: spr797 (spr797), unsigned 64 bits
+	898: spr798 (spr798), unsigned 64 bits
+	899: spr799 (spr799), unsigned 64 bits
+	900: spr800 (spr800), unsigned 64 bits
+	901: spr801 (spr801), unsigned 64 bits
+	902: spr802 (spr802), unsigned 64 bits
+	903: spr803 (spr803), unsigned 64 bits
+	904: spr804 (spr804), unsigned 64 bits
+	905: spr805 (spr805), unsigned 64 bits
+	906: spr806 (spr806), unsigned 64 bits
+	907: spr807 (spr807), unsigned 64 bits
+	908: spr808 (spr808), unsigned 64 bits
+	909: spr809 (spr809), unsigned 64 bits
+	910: spr810 (spr810), unsigned 64 bits
+	911: spr811 (spr811), unsigned 64 bits
+	912: spr812 (spr812), unsigned 64 bits
+	913: spr813 (spr813), unsigned 64 bits
+	914: spr814 (spr814), unsigned 64 bits
+	915: spr815 (spr815), unsigned 64 bits
+	916: spr816 (spr816), unsigned 64 bits
+	917: spr817 (spr817), unsigned 64 bits
+	918: spr818 (spr818), unsigned 64 bits
+	919: spr819 (spr819), unsigned 64 bits
+	920: spr820 (spr820), unsigned 64 bits
+	921: spr821 (spr821), unsigned 64 bits
+	922: spr822 (spr822), unsigned 64 bits
+	923: spr823 (spr823), unsigned 64 bits
+	924: spr824 (spr824), unsigned 64 bits
+	925: spr825 (spr825), unsigned 64 bits
+	926: spr826 (spr826), unsigned 64 bits
+	927: spr827 (spr827), unsigned 64 bits
+	928: spr828 (spr828), unsigned 64 bits
+	929: spr829 (spr829), unsigned 64 bits
+	930: spr830 (spr830), unsigned 64 bits
+	931: spr831 (spr831), unsigned 64 bits
+	932: spr832 (spr832), unsigned 64 bits
+	933: spr833 (spr833), unsigned 64 bits
+	934: spr834 (spr834), unsigned 64 bits
+	935: spr835 (spr835), unsigned 64 bits
+	936: spr836 (spr836), unsigned 64 bits
+	937: spr837 (spr837), unsigned 64 bits
+	938: spr838 (spr838), unsigned 64 bits
+	939: spr839 (spr839), unsigned 64 bits
+	940: spr840 (spr840), unsigned 64 bits
+	941: spr841 (spr841), unsigned 64 bits
+	942: spr842 (spr842), unsigned 64 bits
+	943: spr843 (spr843), unsigned 64 bits
+	944: spr844 (spr844), unsigned 64 bits
+	945: spr845 (spr845), unsigned 64 bits
+	946: spr846 (spr846), unsigned 64 bits
+	947: spr847 (spr847), unsigned 64 bits
+	948: spr848 (spr848), unsigned 64 bits
+	949: spr849 (spr849), unsigned 64 bits
+	950: spr850 (spr850), unsigned 64 bits
+	951: spr851 (spr851), unsigned 64 bits
+	952: spr852 (spr852), unsigned 64 bits
+	953: spr853 (spr853), unsigned 64 bits
+	954: spr854 (spr854), unsigned 64 bits
+	955: spr855 (spr855), unsigned 64 bits
+	956: spr856 (spr856), unsigned 64 bits
+	957: spr857 (spr857), unsigned 64 bits
+	958: spr858 (spr858), unsigned 64 bits
+	959: spr859 (spr859), unsigned 64 bits
+	960: spr860 (spr860), unsigned 64 bits
+	961: spr861 (spr861), unsigned 64 bits
+	962: spr862 (spr862), unsigned 64 bits
+	963: spr863 (spr863), unsigned 64 bits
+	964: spr864 (spr864), unsigned 64 bits
+	965: spr865 (spr865), unsigned 64 bits
+	966: spr866 (spr866), unsigned 64 bits
+	967: spr867 (spr867), unsigned 64 bits
+	968: spr868 (spr868), unsigned 64 bits
+	969: spr869 (spr869), unsigned 64 bits
+	970: spr870 (spr870), unsigned 64 bits
+	971: spr871 (spr871), unsigned 64 bits
+	972: spr872 (spr872), unsigned 64 bits
+	973: spr873 (spr873), unsigned 64 bits
+	974: spr874 (spr874), unsigned 64 bits
+	975: spr875 (spr875), unsigned 64 bits
+	976: spr876 (spr876), unsigned 64 bits
+	977: spr877 (spr877), unsigned 64 bits
+	978: spr878 (spr878), unsigned 64 bits
+	979: spr879 (spr879), unsigned 64 bits
+	980: spr880 (spr880), unsigned 64 bits
+	981: spr881 (spr881), unsigned 64 bits
+	982: spr882 (spr882), unsigned 64 bits
+	983: spr883 (spr883), unsigned 64 bits
+	984: spr884 (spr884), unsigned 64 bits
+	985: spr885 (spr885), unsigned 64 bits
+	986: spr886 (spr886), unsigned 64 bits
+	987: spr887 (spr887), unsigned 64 bits
+	988: spr888 (spr888), unsigned 64 bits
+	989: spr889 (spr889), unsigned 64 bits
+	990: spr890 (spr890), unsigned 64 bits
+	991: spr891 (spr891), unsigned 64 bits
+	992: spr892 (spr892), unsigned 64 bits
+	993: spr893 (spr893), unsigned 64 bits
+	994: spr894 (spr894), unsigned 64 bits
+	995: spr895 (spr895), unsigned 64 bits
+	996: spr896 (spr896), unsigned 64 bits
+	997: spr897 (spr897), unsigned 64 bits
+	998: spr898 (spr898), unsigned 64 bits
+	999: spr899 (spr899), unsigned 64 bits
+vector registers:
+	 67: vscr (vscr), unsigned 32 bits
+	356: vrsave (vrsave), unsigned 32 bits
+	612: spefscr (spefscr), unsigned 32 bits
+	1124: vr0 (vr0), unsigned 128 bits
+	1125: vr1 (vr1), unsigned 128 bits
+	1126: vr2 (vr2), unsigned 128 bits
+	1127: vr3 (vr3), unsigned 128 bits
+	1128: vr4 (vr4), unsigned 128 bits
+	1129: vr5 (vr5), unsigned 128 bits
+	1130: vr6 (vr6), unsigned 128 bits
+	1131: vr7 (vr7), unsigned 128 bits
+	1132: vr8 (vr8), unsigned 128 bits
+	1133: vr9 (vr9), unsigned 128 bits
+	1134: vr10 (vr10), unsigned 128 bits
+	1135: vr11 (vr11), unsigned 128 bits
+	1136: vr12 (vr12), unsigned 128 bits
+	1137: vr13 (vr13), unsigned 128 bits
+	1138: vr14 (vr14), unsigned 128 bits
+	1139: vr15 (vr15), unsigned 128 bits
+	1140: vr16 (vr16), unsigned 128 bits
+	1141: vr17 (vr17), unsigned 128 bits
+	1142: vr18 (vr18), unsigned 128 bits
+	1143: vr19 (vr19), unsigned 128 bits
+	1144: vr20 (vr20), unsigned 128 bits
+	1145: vr21 (vr21), unsigned 128 bits
+	1146: vr22 (vr22), unsigned 128 bits
+	1147: vr23 (vr23), unsigned 128 bits
+	1148: vr24 (vr24), unsigned 128 bits
+	1149: vr25 (vr25), unsigned 128 bits
+	1150: vr26 (vr26), unsigned 128 bits
+	1151: vr27 (vr27), unsigned 128 bits
+	1152: vr28 (vr28), unsigned 128 bits
+	1153: vr29 (vr29), unsigned 128 bits
+	1154: vr30 (vr30), unsigned 128 bits
+	1155: vr31 (vr31), unsigned 128 bits
+EOF
+
+regs_test testfile26 <<\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: %r13 (r13), signed 32 bits
+	 14: %r14 (r14), signed 32 bits
+	 15: %r15 (r15), signed 32 bits
+FPU registers:
+	 16: %f0 (f0), float 64 bits
+	 17: %f2 (f2), float 64 bits
+	 18: %f4 (f4), float 64 bits
+	 19: %f6 (f6), float 64 bits
+	 20: %f1 (f1), float 64 bits
+	 21: %f3 (f3), float 64 bits
+	 22: %f5 (f5), float 64 bits
+	 23: %f7 (f7), float 64 bits
+	 24: %f8 (f8), float 64 bits
+	 25: %f10 (f10), float 64 bits
+	 26: %f12 (f12), float 64 bits
+	 27: %f14 (f14), float 64 bits
+	 28: %f9 (f9), float 64 bits
+	 29: %f11 (f11), float 64 bits
+	 30: %f13 (f13), float 64 bits
+	 31: %f15 (f15), float 64 bits
+access registers:
+	 48: %a0 (a0), unsigned 32 bits
+	 49: %a1 (a1), unsigned 32 bits
+	 50: %a2 (a2), unsigned 32 bits
+	 51: %a3 (a3), unsigned 32 bits
+	 52: %a4 (a4), unsigned 32 bits
+	 53: %a5 (a5), unsigned 32 bits
+	 54: %a6 (a6), unsigned 32 bits
+	 55: %a7 (a7), unsigned 32 bits
+	 56: %a8 (a8), unsigned 32 bits
+	 57: %a9 (a9), unsigned 32 bits
+	 58: %a10 (a10), unsigned 32 bits
+	 59: %a11 (a11), unsigned 32 bits
+	 60: %a12 (a12), unsigned 32 bits
+	 61: %a13 (a13), unsigned 32 bits
+	 62: %a14 (a14), unsigned 32 bits
+	 63: %a15 (a15), unsigned 32 bits
+control registers:
+	 32: %c0 (c0), unsigned 32 bits
+	 33: %c1 (c1), unsigned 32 bits
+	 34: %c2 (c2), unsigned 32 bits
+	 35: %c3 (c3), unsigned 32 bits
+	 36: %c4 (c4), unsigned 32 bits
+	 37: %c5 (c5), unsigned 32 bits
+	 38: %c6 (c6), unsigned 32 bits
+	 39: %c7 (c7), unsigned 32 bits
+	 40: %c8 (c8), unsigned 32 bits
+	 41: %c9 (c9), unsigned 32 bits
+	 42: %c10 (c10), unsigned 32 bits
+	 43: %c11 (c11), unsigned 32 bits
+	 44: %c12 (c12), unsigned 32 bits
+	 45: %c13 (c13), unsigned 32 bits
+	 46: %c14 (c14), unsigned 32 bits
+	 47: %c15 (c15), unsigned 32 bits
+	 64: %pswm (pswm), unsigned 32 bits
+	 65: %pswa (pswa), address 32 bits
+EOF
+
+regs_test testfile27 <<\EOF
+integer registers:
+	  0: %r0 (r0), signed 64 bits
+	  1: %r1 (r1), signed 64 bits
+	  2: %r2 (r2), signed 64 bits
+	  3: %r3 (r3), signed 64 bits
+	  4: %r4 (r4), signed 64 bits
+	  5: %r5 (r5), signed 64 bits
+	  6: %r6 (r6), signed 64 bits
+	  7: %r7 (r7), signed 64 bits
+	  8: %r8 (r8), signed 64 bits
+	  9: %r9 (r9), signed 64 bits
+	 10: %r10 (r10), signed 64 bits
+	 11: %r11 (r11), signed 64 bits
+	 12: %r12 (r12), signed 64 bits
+	 13: %r13 (r13), signed 64 bits
+	 14: %r14 (r14), signed 64 bits
+	 15: %r15 (r15), signed 64 bits
+FPU registers:
+	 16: %f0 (f0), float 64 bits
+	 17: %f2 (f2), float 64 bits
+	 18: %f4 (f4), float 64 bits
+	 19: %f6 (f6), float 64 bits
+	 20: %f1 (f1), float 64 bits
+	 21: %f3 (f3), float 64 bits
+	 22: %f5 (f5), float 64 bits
+	 23: %f7 (f7), float 64 bits
+	 24: %f8 (f8), float 64 bits
+	 25: %f10 (f10), float 64 bits
+	 26: %f12 (f12), float 64 bits
+	 27: %f14 (f14), float 64 bits
+	 28: %f9 (f9), float 64 bits
+	 29: %f11 (f11), float 64 bits
+	 30: %f13 (f13), float 64 bits
+	 31: %f15 (f15), float 64 bits
+access registers:
+	 48: %a0 (a0), unsigned 32 bits
+	 49: %a1 (a1), unsigned 32 bits
+	 50: %a2 (a2), unsigned 32 bits
+	 51: %a3 (a3), unsigned 32 bits
+	 52: %a4 (a4), unsigned 32 bits
+	 53: %a5 (a5), unsigned 32 bits
+	 54: %a6 (a6), unsigned 32 bits
+	 55: %a7 (a7), unsigned 32 bits
+	 56: %a8 (a8), unsigned 32 bits
+	 57: %a9 (a9), unsigned 32 bits
+	 58: %a10 (a10), unsigned 32 bits
+	 59: %a11 (a11), unsigned 32 bits
+	 60: %a12 (a12), unsigned 32 bits
+	 61: %a13 (a13), unsigned 32 bits
+	 62: %a14 (a14), unsigned 32 bits
+	 63: %a15 (a15), unsigned 32 bits
+control registers:
+	 32: %c0 (c0), unsigned 64 bits
+	 33: %c1 (c1), unsigned 64 bits
+	 34: %c2 (c2), unsigned 64 bits
+	 35: %c3 (c3), unsigned 64 bits
+	 36: %c4 (c4), unsigned 64 bits
+	 37: %c5 (c5), unsigned 64 bits
+	 38: %c6 (c6), unsigned 64 bits
+	 39: %c7 (c7), unsigned 64 bits
+	 40: %c8 (c8), unsigned 64 bits
+	 41: %c9 (c9), unsigned 64 bits
+	 42: %c10 (c10), unsigned 64 bits
+	 43: %c11 (c11), unsigned 64 bits
+	 44: %c12 (c12), unsigned 64 bits
+	 45: %c13 (c13), unsigned 64 bits
+	 46: %c14 (c14), unsigned 64 bits
+	 47: %c15 (c15), unsigned 64 bits
+	 64: %pswm (pswm), unsigned 64 bits
+	 65: %pswa (pswa), address 64 bits
+EOF
+
+regs_test testfile30 <<\EOF
+integer registers:
+	  0: %g0 (g0), signed 32 bits
+	  1: %g1 (g1), signed 32 bits
+	  2: %g2 (g2), signed 32 bits
+	  3: %g3 (g3), signed 32 bits
+	  4: %g4 (g4), signed 32 bits
+	  5: %g5 (g5), signed 32 bits
+	  6: %g6 (g6), signed 32 bits
+	  7: %g7 (g7), signed 32 bits
+	  8: %o0 (o0), signed 32 bits
+	  9: %o1 (o1), signed 32 bits
+	 10: %o2 (o2), signed 32 bits
+	 11: %o3 (o3), signed 32 bits
+	 12: %o4 (o4), signed 32 bits
+	 13: %o5 (o5), signed 32 bits
+	 14: %o6 (o6), address 32 bits
+	 15: %o7 (o7), signed 32 bits
+	 16: %l0 (l0), signed 32 bits
+	 17: %l1 (l1), signed 32 bits
+	 18: %l2 (l2), signed 32 bits
+	 19: %l3 (l3), signed 32 bits
+	 20: %l4 (l4), signed 32 bits
+	 21: %l5 (l5), signed 32 bits
+	 22: %l6 (l6), signed 32 bits
+	 23: %l7 (l7), signed 32 bits
+	 24: %i0 (i0), signed 32 bits
+	 25: %i1 (i1), signed 32 bits
+	 26: %i2 (i2), signed 32 bits
+	 27: %i3 (i3), signed 32 bits
+	 28: %i4 (i4), signed 32 bits
+	 29: %i5 (i5), signed 32 bits
+	 30: %i6 (i6), address 32 bits
+	 31: %i7 (i7), signed 32 bits
+FPU registers:
+	 32: %f0 (f0), float 32 bits
+	 33: %f1 (f1), float 32 bits
+	 34: %f2 (f2), float 32 bits
+	 35: %f3 (f3), float 32 bits
+	 36: %f4 (f4), float 32 bits
+	 37: %f5 (f5), float 32 bits
+	 38: %f6 (f6), float 32 bits
+	 39: %f7 (f7), float 32 bits
+	 40: %f8 (f8), float 32 bits
+	 41: %f9 (f9), float 32 bits
+	 42: %f10 (f10), float 32 bits
+	 43: %f11 (f11), float 32 bits
+	 44: %f12 (f12), float 32 bits
+	 45: %f13 (f13), float 32 bits
+	 46: %f14 (f14), float 32 bits
+	 47: %f15 (f15), float 32 bits
+	 48: %f16 (f16), float 32 bits
+	 49: %f17 (f17), float 32 bits
+	 50: %f18 (f18), float 32 bits
+	 51: %f19 (f19), float 32 bits
+	 52: %f20 (f20), float 32 bits
+	 53: %f21 (f21), float 32 bits
+	 54: %f22 (f22), float 32 bits
+	 55: %f23 (f23), float 32 bits
+	 56: %f24 (f24), float 32 bits
+	 57: %f25 (f25), float 32 bits
+	 58: %f26 (f26), float 32 bits
+	 59: %f27 (f27), float 32 bits
+	 60: %f28 (f28), float 32 bits
+	 61: %f29 (f29), float 32 bits
+	 62: %f30 (f30), float 32 bits
+	 63: %f31 (f31), float 32 bits
+control registers:
+	 64: %y (y), unsigned 32 bits
+	 65: %psr (psr), unsigned 32 bits
+	 66: %wim (wim), unsigned 32 bits
+	 67: %tbr (tbr), unsigned 32 bits
+	 68: %pc (pc), address 32 bits
+	 69: %npc (npc), address 32 bits
+	 70: %fsr (fsr), unsigned 32 bits
+	 71: %csr (csr), unsigned 32 bits
+EOF
+
+regs_test testfile31 <<\EOF
+integer registers:
+	  0: %g0 (g0), signed 64 bits
+	  1: %g1 (g1), signed 64 bits
+	  2: %g2 (g2), signed 64 bits
+	  3: %g3 (g3), signed 64 bits
+	  4: %g4 (g4), signed 64 bits
+	  5: %g5 (g5), signed 64 bits
+	  6: %g6 (g6), signed 64 bits
+	  7: %g7 (g7), signed 64 bits
+	  8: %o0 (o0), signed 64 bits
+	  9: %o1 (o1), signed 64 bits
+	 10: %o2 (o2), signed 64 bits
+	 11: %o3 (o3), signed 64 bits
+	 12: %o4 (o4), signed 64 bits
+	 13: %o5 (o5), signed 64 bits
+	 14: %o6 (o6), address 64 bits
+	 15: %o7 (o7), signed 64 bits
+	 16: %l0 (l0), signed 64 bits
+	 17: %l1 (l1), signed 64 bits
+	 18: %l2 (l2), signed 64 bits
+	 19: %l3 (l3), signed 64 bits
+	 20: %l4 (l4), signed 64 bits
+	 21: %l5 (l5), signed 64 bits
+	 22: %l6 (l6), signed 64 bits
+	 23: %l7 (l7), signed 64 bits
+	 24: %i0 (i0), signed 64 bits
+	 25: %i1 (i1), signed 64 bits
+	 26: %i2 (i2), signed 64 bits
+	 27: %i3 (i3), signed 64 bits
+	 28: %i4 (i4), signed 64 bits
+	 29: %i5 (i5), signed 64 bits
+	 30: %i6 (i6), address 64 bits
+	 31: %i7 (i7), signed 64 bits
+FPU registers:
+	 32: %f0 (f0), float 32 bits
+	 33: %f1 (f1), float 32 bits
+	 34: %f2 (f2), float 32 bits
+	 35: %f3 (f3), float 32 bits
+	 36: %f4 (f4), float 32 bits
+	 37: %f5 (f5), float 32 bits
+	 38: %f6 (f6), float 32 bits
+	 39: %f7 (f7), float 32 bits
+	 40: %f8 (f8), float 32 bits
+	 41: %f9 (f9), float 32 bits
+	 42: %f10 (f10), float 32 bits
+	 43: %f11 (f11), float 32 bits
+	 44: %f12 (f12), float 32 bits
+	 45: %f13 (f13), float 32 bits
+	 46: %f14 (f14), float 32 bits
+	 47: %f15 (f15), float 32 bits
+	 48: %f16 (f16), float 32 bits
+	 49: %f17 (f17), float 32 bits
+	 50: %f18 (f18), float 32 bits
+	 51: %f19 (f19), float 32 bits
+	 52: %f20 (f20), float 32 bits
+	 53: %f21 (f21), float 32 bits
+	 54: %f22 (f22), float 32 bits
+	 55: %f23 (f23), float 32 bits
+	 56: %f24 (f24), float 32 bits
+	 57: %f25 (f25), float 32 bits
+	 58: %f26 (f26), float 32 bits
+	 59: %f27 (f27), float 32 bits
+	 60: %f28 (f28), float 32 bits
+	 61: %f29 (f29), float 32 bits
+	 62: %f30 (f30), float 32 bits
+	 63: %f31 (f31), float 32 bits
+	 64: %f32 (f32), float 64 bits
+	 65: %f34 (f34), float 64 bits
+	 66: %f36 (f36), float 64 bits
+	 67: %f38 (f38), float 64 bits
+	 68: %f40 (f40), float 64 bits
+	 69: %f42 (f42), float 64 bits
+	 70: %f44 (f44), float 64 bits
+	 71: %f46 (f46), float 64 bits
+	 72: %f48 (f48), float 64 bits
+	 73: %f50 (f50), float 64 bits
+	 74: %f52 (f52), float 64 bits
+	 75: %f54 (f54), float 64 bits
+	 76: %f56 (f56), float 64 bits
+	 77: %f58 (f58), float 64 bits
+	 78: %f60 (f60), float 64 bits
+	 79: %f62 (f62), float 64 bits
+control registers:
+	 80: %pc (pc), address 64 bits
+	 81: %npc (npc), address 64 bits
+	 82: %state (state), unsigned 64 bits
+	 83: %fsr (fsr), unsigned 64 bits
+	 84: %fprs (fprs), unsigned 64 bits
+	 85: %y (y), unsigned 64 bits
+EOF
+
+regs_test testfile10 <<\EOF
+integer registers:
+	  0: $v0 (v0), signed 64 bits
+	  1: $t0 (t0), signed 64 bits
+	  2: $t1 (t1), signed 64 bits
+	  3: $t2 (t2), signed 64 bits
+	  4: $t3 (t3), signed 64 bits
+	  5: $t4 (t4), signed 64 bits
+	  6: $t5 (t5), signed 64 bits
+	  7: $t6 (t6), signed 64 bits
+	  8: $t7 (t7), signed 64 bits
+	  9: $s0 (s0), signed 64 bits
+	 10: $s1 (s1), signed 64 bits
+	 11: $s2 (s2), signed 64 bits
+	 12: $s3 (s3), signed 64 bits
+	 13: $s4 (s4), signed 64 bits
+	 14: $s5 (s5), signed 64 bits
+	 15: $s6 (s6), signed 64 bits
+	 16: $a0 (a0), signed 64 bits
+	 17: $a1 (a1), signed 64 bits
+	 18: $a2 (a2), signed 64 bits
+	 19: $a3 (a3), signed 64 bits
+	 20: $a4 (a4), signed 64 bits
+	 21: $a5 (a5), signed 64 bits
+	 22: $t8 (t8), signed 64 bits
+	 23: $t9 (t9), signed 64 bits
+	 24: $t10 (t10), signed 64 bits
+	 25: $t11 (t11), signed 64 bits
+	 26: $ra (ra), address 64 bits
+	 27: $t12 (t12), signed 64 bits
+	 28: $at (at), signed 64 bits
+	 29: $gp (gp), address 64 bits
+	 30: $sp (sp), address 64 bits
+	 31: $zero (zero), signed 64 bits
+	 64: $pc (pc), address 64 bits
+	 66: $unique (unique), address 64 bits
+FPU registers:
+	 32: $f0 (f0), float 64 bits
+	 33: $f1 (f1), float 64 bits
+	 34: $f2 (f2), float 64 bits
+	 35: $f3 (f3), float 64 bits
+	 36: $f4 (f4), float 64 bits
+	 37: $f5 (f5), float 64 bits
+	 38: $f6 (f6), float 64 bits
+	 39: $f7 (f7), float 64 bits
+	 40: $f8 (f8), float 64 bits
+	 41: $f9 (f9), float 64 bits
+	 42: $f10 (f10), float 64 bits
+	 43: $f11 (f11), float 64 bits
+	 44: $f12 (f12), float 64 bits
+	 45: $f13 (f13), float 64 bits
+	 46: $f14 (f14), float 64 bits
+	 47: $f15 (f15), float 64 bits
+	 48: $f16 (f16), float 64 bits
+	 49: $f17 (f17), float 64 bits
+	 50: $f18 (f18), float 64 bits
+	 51: $f19 (f19), float 64 bits
+	 52: $f20 (f20), float 64 bits
+	 53: $f21 (f21), float 64 bits
+	 54: $f22 (f22), float 64 bits
+	 55: $f23 (f23), float 64 bits
+	 56: $f24 (f24), float 64 bits
+	 57: $f25 (f25), float 64 bits
+	 58: $f26 (f26), float 64 bits
+	 59: $f27 (f27), float 64 bits
+	 60: $f28 (f28), float 64 bits
+	 61: $f29 (f29), float 64 bits
+	 62: $f30 (f30), float 64 bits
+	 63: $fpcr (fpcr), unsigned 64 bits
+EOF
+
+regs_test testfile60 <<\EOF
+integer registers:
+	  0: r0 (r0), signed 64 bits
+	  1: r1 (r1), signed 64 bits
+	  2: r2 (r2), signed 64 bits
+	  3: r3 (r3), signed 64 bits
+	  4: r4 (r4), signed 64 bits
+	  5: r5 (r5), signed 64 bits
+	  6: r6 (r6), signed 64 bits
+	  7: r7 (r7), signed 64 bits
+	  8: r8 (r8), signed 64 bits
+	  9: r9 (r9), signed 64 bits
+	 10: r10 (r10), signed 64 bits
+	 11: r11 (r11), signed 64 bits
+	 12: r12 (r12), signed 64 bits
+	 13: r13 (r13), signed 64 bits
+	 14: r14 (r14), signed 64 bits
+	 15: r15 (r15), signed 64 bits
+	 16: r16 (r16), signed 64 bits
+	 17: r17 (r17), signed 64 bits
+	 18: r18 (r18), signed 64 bits
+	 19: r19 (r19), signed 64 bits
+	 20: r20 (r20), signed 64 bits
+	 21: r21 (r21), signed 64 bits
+	 22: r22 (r22), signed 64 bits
+	 23: r23 (r23), signed 64 bits
+	 24: r24 (r24), signed 64 bits
+	 25: r25 (r25), signed 64 bits
+	 26: r26 (r26), signed 64 bits
+	 27: r27 (r27), signed 64 bits
+	 28: r28 (r28), signed 64 bits
+	 29: r29 (r29), signed 64 bits
+	 30: r30 (r30), signed 64 bits
+	 31: r31 (r31), signed 64 bits
+	 32: r32 (r32), signed 64 bits
+	 33: r33 (r33), signed 64 bits
+	 34: r34 (r34), signed 64 bits
+	 35: r35 (r35), signed 64 bits
+	 36: r36 (r36), signed 64 bits
+	 37: r37 (r37), signed 64 bits
+	 38: r38 (r38), signed 64 bits
+	 39: r39 (r39), signed 64 bits
+	 40: r40 (r40), signed 64 bits
+	 41: r41 (r41), signed 64 bits
+	 42: r42 (r42), signed 64 bits
+	 43: r43 (r43), signed 64 bits
+	 44: r44 (r44), signed 64 bits
+	 45: r45 (r45), signed 64 bits
+	 46: r46 (r46), signed 64 bits
+	 47: r47 (r47), signed 64 bits
+	 48: r48 (r48), signed 64 bits
+	 49: r49 (r49), signed 64 bits
+	 50: r50 (r50), signed 64 bits
+	 51: r51 (r51), signed 64 bits
+	 52: r52 (r52), signed 64 bits
+	 53: tp (tp), address 64 bits
+	 54: sp (sp), address 64 bits
+	 55: lr (lr), address 64 bits
+	 56: sn (sn), unsigned 64 bits
+	 57: idn0 (idn0), unsigned 64 bits
+	 58: idn1 (idn1), unsigned 64 bits
+	 59: udn0 (udn0), unsigned 64 bits
+	 60: udn1 (udn1), unsigned 64 bits
+	 61: udn2 (udn2), unsigned 64 bits
+	 62: udn3 (udn3), unsigned 64 bits
+	 63: zero (zero), unsigned 64 bits
+	 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
diff --git a/src/tests/run-arextract.sh b/src/tests/run-arextract.sh
new file mode 100755
index 0000000..44f4a52
--- /dev/null
+++ b/src/tests/run-arextract.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2005, 2006 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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
+
+tempfiles arextract.test
+
+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 ${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
+	}
+    done
+
+    echo "done"
+fi
+
+exit 0
diff --git a/src/tests/run-arsymtest.sh b/src/tests/run-arsymtest.sh
new file mode 100755
index 0000000..b0fdfcd
--- /dev/null
+++ b/src/tests/run-arsymtest.sh
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2006 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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
+
+lib=${abs_top_builddir}/libelf/libelf.a
+okfile=arsymtest.ok
+tmpfile=arsymtest.tmp
+testfile=arsymtest.test
+
+tempfiles $okfile $tmpfile $testfile
+
+result=77
+if test -f $lib; then
+    # Generate list using `nm' we check against.
+    ${NM} -s $lib |
+    sed -e '1,/^Arch/d' -e '/^$/,$d' |
+    sort > $okfile
+
+    # Now run our program using libelf.
+    testrun ${abs_builddir}/arsymtest $lib $tmpfile || exit 1
+    sort $tmpfile > $testfile
+
+    # Compare the outputs.
+    if cmp $okfile $testfile; then
+	result=0
+    else
+	result=1
+    fi
+fi
+
+exit $result
diff --git a/src/tests/run-backtrace-core-aarch64.sh b/src/tests/run-backtrace-core-aarch64.sh
new file mode 100755
index 0000000..a29a661
--- /dev/null
+++ b/src/tests/run-backtrace-core-aarch64.sh
@@ -0,0 +1,23 @@
+#! /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
diff --git a/src/tests/run-backtrace-core-i386.sh b/src/tests/run-backtrace-core-i386.sh
new file mode 100755
index 0000000..7294ec3
--- /dev/null
+++ b/src/tests/run-backtrace-core-i386.sh
@@ -0,0 +1,20 @@
+#! /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
diff --git a/src/tests/run-backtrace-core-ppc.sh b/src/tests/run-backtrace-core-ppc.sh
new file mode 100755
index 0000000..65c9279
--- /dev/null
+++ b/src/tests/run-backtrace-core-ppc.sh
@@ -0,0 +1,20 @@
+#! /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
diff --git a/src/tests/run-backtrace-core-s390.sh b/src/tests/run-backtrace-core-s390.sh
new file mode 100755
index 0000000..d3b6dc9
--- /dev/null
+++ b/src/tests/run-backtrace-core-s390.sh
@@ -0,0 +1,20 @@
+#! /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
diff --git a/src/tests/run-backtrace-core-s390x.sh b/src/tests/run-backtrace-core-s390x.sh
new file mode 100755
index 0000000..c3e236d
--- /dev/null
+++ b/src/tests/run-backtrace-core-s390x.sh
@@ -0,0 +1,20 @@
+#! /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
diff --git a/src/tests/run-backtrace-core-x86_64.sh b/src/tests/run-backtrace-core-x86_64.sh
new file mode 100755
index 0000000..d00cd6d
--- /dev/null
+++ b/src/tests/run-backtrace-core-x86_64.sh
@@ -0,0 +1,20 @@
+#! /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
diff --git a/src/tests/run-backtrace-data.sh b/src/tests/run-backtrace-data.sh
new file mode 100755
index 0000000..34a4f01
--- /dev/null
+++ b/src/tests/run-backtrace-data.sh
@@ -0,0 +1,28 @@
+#! /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
diff --git a/src/tests/run-backtrace-demangle.sh b/src/tests/run-backtrace-demangle.sh
new file mode 100755
index 0000000..6e18e77
--- /dev/null
+++ b/src/tests/run-backtrace-demangle.sh
@@ -0,0 +1,46 @@
+#! /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
diff --git a/src/tests/run-backtrace-dwarf.sh b/src/tests/run-backtrace-dwarf.sh
new file mode 100755
index 0000000..8834048
--- /dev/null
+++ b/src/tests/run-backtrace-dwarf.sh
@@ -0,0 +1,30 @@
+#! /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
diff --git a/src/tests/run-backtrace-native-biarch.sh b/src/tests/run-backtrace-native-biarch.sh
new file mode 100755
index 0000000..3a407c8
--- /dev/null
+++ b/src/tests/run-backtrace-native-biarch.sh
@@ -0,0 +1,24 @@
+#! /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
diff --git a/src/tests/run-backtrace-native-core-biarch.sh b/src/tests/run-backtrace-native-core-biarch.sh
new file mode 100755
index 0000000..fbd8025
--- /dev/null
+++ b/src/tests/run-backtrace-native-core-biarch.sh
@@ -0,0 +1,24 @@
+#! /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
diff --git a/src/tests/run-backtrace-native-core.sh b/src/tests/run-backtrace-native-core.sh
new file mode 100755
index 0000000..cb025a5
--- /dev/null
+++ b/src/tests/run-backtrace-native-core.sh
@@ -0,0 +1,20 @@
+#! /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
diff --git a/src/tests/run-backtrace-native.sh b/src/tests/run-backtrace-native.sh
new file mode 100755
index 0000000..ddae345
--- /dev/null
+++ b/src/tests/run-backtrace-native.sh
@@ -0,0 +1,20 @@
+#! /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
diff --git a/src/tests/run-bug1-test.sh b/src/tests/run-bug1-test.sh
new file mode 100755
index 0000000..1e78a18
--- /dev/null
+++ b/src/tests/run-bug1-test.sh
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2006 Red Hat, Inc.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2006.
+#
+# 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 testfile28 testfile28.rdwr
+
+testrun ${abs_builddir}/rdwrmmap testfile28
+
+cmp testfile28 testfile28.rdwr
+
+test_cleanup
+
+testfiles testfile29 testfile29.rdwr
+
+testrun ${abs_builddir}/rdwrmmap testfile29
+
+cmp testfile29 testfile29.rdwr
+
+exit 0
diff --git a/src/tests/run-buildid.sh b/src/tests/run-buildid.sh
new file mode 100755
index 0000000..31cec24
--- /dev/null
+++ b/src/tests/run-buildid.sh
@@ -0,0 +1,38 @@
+#! /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
diff --git a/src/tests/run-debugaltlink.sh b/src/tests/run-debugaltlink.sh
new file mode 100755
index 0000000..fa7dd26
--- /dev/null
+++ b/src/tests/run-debugaltlink.sh
@@ -0,0 +1,34 @@
+#! /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
diff --git a/src/tests/run-debuglink.sh b/src/tests/run-debuglink.sh
new file mode 100755
index 0000000..42a816c
--- /dev/null
+++ b/src/tests/run-debuglink.sh
@@ -0,0 +1,29 @@
+#! /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
diff --git a/src/tests/run-deleted.sh b/src/tests/run-deleted.sh
new file mode 100755
index 0000000..2b5a9a8
--- /dev/null
+++ b/src/tests/run-deleted.sh
@@ -0,0 +1,48 @@
+#! /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/>.
+
+. $srcdir/backtrace-subr.sh
+
+tempfiles deleted deleted-lib.so
+cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so .
+
+# We don't want to run the deleted process under valgrind then
+# stack will see the valgrind process backtrace.
+OLD_VALGRIND_CMD="$VALGRIND_CMD"
+unset VALGRIND_CMD
+
+pid=$(testrun ${abs_builddir}/deleted)
+sleep 1
+rm -f deleted deleted-lib.so
+tempfiles bt bt.err
+
+set VALGRIND_CMD="$OLD_VALGRIND_CMD"
+# It may have non-zero exit code with:
+# .../elfutils/src/stack: dwfl_thread_getframes tid 26376 at 0x4006c8 in .../elfutils/tests/deleted: no matching address range
+testrun ${abs_top_builddir}/src/stack -p $pid 1>bt 2>bt.err || true
+cat bt bt.err
+kill -9 $pid
+wait
+check_native_unsupported bt.err deleted
+# For PPC64 we need access to the OPD table which we get through the shdrs
+# (see backends/ppc64_init.c) but for the deleted-lib we only have phdrs.
+# So we don't have the name of the function. But since we should find
+# the EH_FRAME through phdrs just fine, we can unwind into main.
+if test "`uname -m`" != "ppc64"; then
+  grep -qw libfunc bt
+fi
+grep -qw main bt
diff --git a/src/tests/run-disasm-x86-64.sh b/src/tests/run-disasm-x86-64.sh
new file mode 100755
index 0000000..a6be62b
--- /dev/null
+++ b/src/tests/run-disasm-x86-64.sh
@@ -0,0 +1,28 @@
+#! /bin/sh
+# Copyright (C) 2007, 2008 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
+
+# Run x86-64 test.
+case "`uname -m`" in
+  x86_64)
+    tempfiles testfile45.o
+    testfiles testfile45.S testfile45.expect
+    gcc -m64 -c -o testfile45.o testfile45.S
+    testrun_compare ${abs_top_builddir}/src/objdump -d testfile45.o < testfile45.expect
+    ;;
+esac
diff --git a/src/tests/run-disasm-x86.sh b/src/tests/run-disasm-x86.sh
new file mode 100755
index 0000000..28a3df7
--- /dev/null
+++ b/src/tests/run-disasm-x86.sh
@@ -0,0 +1,28 @@
+#! /bin/sh
+# Copyright (C) 2007, 2008 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
+
+# Run x86 test.
+case "`uname -m`" in
+  x86_64 | i?86 )
+    tempfiles testfile44.o
+    testfiles testfile44.S testfile44.expect
+    gcc -m32 -c -o testfile44.o testfile44.S
+    testrun_compare ${abs_top_builddir}/src/objdump -d testfile44.o < testfile44.expect
+    ;;
+esac
diff --git a/src/tests/run-dwarf-getmacros.sh b/src/tests/run-dwarf-getmacros.sh
new file mode 100755
index 0000000..0a488fa
--- /dev/null
+++ b/src/tests/run-dwarf-getmacros.sh
@@ -0,0 +1,710 @@
+#! /bin/sh
+# Copyright (C) 2009, 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 testfile51
+
+testrun_compare ${abs_builddir}/dwarf-getmacros testfile51 0xb <<\EOF
+file /home/petr/proj/elfutils/pending/elfutils/tests/decom/x.c
+ __STDC__ 1
+ __STDC_HOSTED__ 1
+ __GNUC__ 4
+ __GNUC_MINOR__ 3
+ __GNUC_PATCHLEVEL__ 2
+ __GNUC_RH_RELEASE__ 7
+ __SIZE_TYPE__ long unsigned int
+ __PTRDIFF_TYPE__ long int
+ __WCHAR_TYPE__ int
+ __WINT_TYPE__ unsigned int
+ __INTMAX_TYPE__ long int
+ __UINTMAX_TYPE__ long unsigned int
+ __GXX_ABI_VERSION 1002
+ __SCHAR_MAX__ 127
+ __SHRT_MAX__ 32767
+ __INT_MAX__ 2147483647
+ __LONG_MAX__ 9223372036854775807L
+ __LONG_LONG_MAX__ 9223372036854775807LL
+ __WCHAR_MAX__ 2147483647
+ __CHAR_BIT__ 8
+ __INTMAX_MAX__ 9223372036854775807L
+ __FLT_EVAL_METHOD__ 0
+ __DEC_EVAL_METHOD__ 2
+ __FLT_RADIX__ 2
+ __FLT_MANT_DIG__ 24
+ __FLT_DIG__ 6
+ __FLT_MIN_EXP__ (-125)
+ __FLT_MIN_10_EXP__ (-37)
+ __FLT_MAX_EXP__ 128
+ __FLT_MAX_10_EXP__ 38
+ __FLT_MAX__ 3.40282347e+38F
+ __FLT_MIN__ 1.17549435e-38F
+ __FLT_EPSILON__ 1.19209290e-7F
+ __FLT_DENORM_MIN__ 1.40129846e-45F
+ __FLT_HAS_DENORM__ 1
+ __FLT_HAS_INFINITY__ 1
+ __FLT_HAS_QUIET_NAN__ 1
+ __DBL_MANT_DIG__ 53
+ __DBL_DIG__ 15
+ __DBL_MIN_EXP__ (-1021)
+ __DBL_MIN_10_EXP__ (-307)
+ __DBL_MAX_EXP__ 1024
+ __DBL_MAX_10_EXP__ 308
+ __DBL_MAX__ 1.7976931348623157e+308
+ __DBL_MIN__ 2.2250738585072014e-308
+ __DBL_EPSILON__ 2.2204460492503131e-16
+ __DBL_DENORM_MIN__ 4.9406564584124654e-324
+ __DBL_HAS_DENORM__ 1
+ __DBL_HAS_INFINITY__ 1
+ __DBL_HAS_QUIET_NAN__ 1
+ __LDBL_MANT_DIG__ 64
+ __LDBL_DIG__ 18
+ __LDBL_MIN_EXP__ (-16381)
+ __LDBL_MIN_10_EXP__ (-4931)
+ __LDBL_MAX_EXP__ 16384
+ __LDBL_MAX_10_EXP__ 4932
+ __DECIMAL_DIG__ 21
+ __LDBL_MAX__ 1.18973149535723176502e+4932L
+ __LDBL_MIN__ 3.36210314311209350626e-4932L
+ __LDBL_EPSILON__ 1.08420217248550443401e-19L
+ __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
+ __LDBL_HAS_DENORM__ 1
+ __LDBL_HAS_INFINITY__ 1
+ __LDBL_HAS_QUIET_NAN__ 1
+ __DEC32_MANT_DIG__ 7
+ __DEC32_MIN_EXP__ (-95)
+ __DEC32_MAX_EXP__ 96
+ __DEC32_MIN__ 1E-95DF
+ __DEC32_MAX__ 9.999999E96DF
+ __DEC32_EPSILON__ 1E-6DF
+ __DEC32_DEN__ 0.000001E-95DF
+ __DEC64_MANT_DIG__ 16
+ __DEC64_MIN_EXP__ (-383)
+ __DEC64_MAX_EXP__ 384
+ __DEC64_MIN__ 1E-383DD
+ __DEC64_MAX__ 9.999999999999999E384DD
+ __DEC64_EPSILON__ 1E-15DD
+ __DEC64_DEN__ 0.000000000000001E-383DD
+ __DEC128_MANT_DIG__ 34
+ __DEC128_MIN_EXP__ (-6143)
+ __DEC128_MAX_EXP__ 6144
+ __DEC128_MIN__ 1E-6143DL
+ __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+ __DEC128_EPSILON__ 1E-33DL
+ __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL
+ __REGISTER_PREFIX__ 
+ __USER_LABEL_PREFIX__ 
+ __VERSION__ "4.3.2 20081105 (Red Hat 4.3.2-7)"
+ __GNUC_GNU_INLINE__ 1
+ _LP64 1
+ __LP64__ 1
+ __NO_INLINE__ 1
+ __FINITE_MATH_ONLY__ 0
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
+ __SIZEOF_INT__ 4
+ __SIZEOF_LONG__ 8
+ __SIZEOF_LONG_LONG__ 8
+ __SIZEOF_SHORT__ 2
+ __SIZEOF_FLOAT__ 4
+ __SIZEOF_DOUBLE__ 8
+ __SIZEOF_LONG_DOUBLE__ 16
+ __SIZEOF_SIZE_T__ 8
+ __SIZEOF_WCHAR_T__ 4
+ __SIZEOF_WINT_T__ 4
+ __SIZEOF_PTRDIFF_T__ 8
+ __SIZEOF_POINTER__ 8
+ __amd64 1
+ __amd64__ 1
+ __x86_64 1
+ __x86_64__ 1
+ __k8 1
+ __k8__ 1
+ __MMX__ 1
+ __SSE__ 1
+ __SSE2__ 1
+ __SSE_MATH__ 1
+ __SSE2_MATH__ 1
+ __gnu_linux__ 1
+ __linux 1
+ __linux__ 1
+ linux 1
+ __unix 1
+ __unix__ 1
+ unix 1
+ __ELF__ 1
+ __DECIMAL_BID_FORMAT__ 1
+ macro1 ble
+/file
+EOF
+
+testrun_compare ${abs_builddir}/dwarf-getmacros testfile51 0x84 <<\EOF
+file /home/petr/proj/elfutils/pending/elfutils/tests/decom/y.c
+ __STDC__ 1
+ __STDC_HOSTED__ 1
+ __GNUC__ 4
+ __GNUC_MINOR__ 3
+ __GNUC_PATCHLEVEL__ 2
+ __GNUC_RH_RELEASE__ 7
+ __SIZE_TYPE__ long unsigned int
+ __PTRDIFF_TYPE__ long int
+ __WCHAR_TYPE__ int
+ __WINT_TYPE__ unsigned int
+ __INTMAX_TYPE__ long int
+ __UINTMAX_TYPE__ long unsigned int
+ __GXX_ABI_VERSION 1002
+ __SCHAR_MAX__ 127
+ __SHRT_MAX__ 32767
+ __INT_MAX__ 2147483647
+ __LONG_MAX__ 9223372036854775807L
+ __LONG_LONG_MAX__ 9223372036854775807LL
+ __WCHAR_MAX__ 2147483647
+ __CHAR_BIT__ 8
+ __INTMAX_MAX__ 9223372036854775807L
+ __FLT_EVAL_METHOD__ 0
+ __DEC_EVAL_METHOD__ 2
+ __FLT_RADIX__ 2
+ __FLT_MANT_DIG__ 24
+ __FLT_DIG__ 6
+ __FLT_MIN_EXP__ (-125)
+ __FLT_MIN_10_EXP__ (-37)
+ __FLT_MAX_EXP__ 128
+ __FLT_MAX_10_EXP__ 38
+ __FLT_MAX__ 3.40282347e+38F
+ __FLT_MIN__ 1.17549435e-38F
+ __FLT_EPSILON__ 1.19209290e-7F
+ __FLT_DENORM_MIN__ 1.40129846e-45F
+ __FLT_HAS_DENORM__ 1
+ __FLT_HAS_INFINITY__ 1
+ __FLT_HAS_QUIET_NAN__ 1
+ __DBL_MANT_DIG__ 53
+ __DBL_DIG__ 15
+ __DBL_MIN_EXP__ (-1021)
+ __DBL_MIN_10_EXP__ (-307)
+ __DBL_MAX_EXP__ 1024
+ __DBL_MAX_10_EXP__ 308
+ __DBL_MAX__ 1.7976931348623157e+308
+ __DBL_MIN__ 2.2250738585072014e-308
+ __DBL_EPSILON__ 2.2204460492503131e-16
+ __DBL_DENORM_MIN__ 4.9406564584124654e-324
+ __DBL_HAS_DENORM__ 1
+ __DBL_HAS_INFINITY__ 1
+ __DBL_HAS_QUIET_NAN__ 1
+ __LDBL_MANT_DIG__ 64
+ __LDBL_DIG__ 18
+ __LDBL_MIN_EXP__ (-16381)
+ __LDBL_MIN_10_EXP__ (-4931)
+ __LDBL_MAX_EXP__ 16384
+ __LDBL_MAX_10_EXP__ 4932
+ __DECIMAL_DIG__ 21
+ __LDBL_MAX__ 1.18973149535723176502e+4932L
+ __LDBL_MIN__ 3.36210314311209350626e-4932L
+ __LDBL_EPSILON__ 1.08420217248550443401e-19L
+ __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
+ __LDBL_HAS_DENORM__ 1
+ __LDBL_HAS_INFINITY__ 1
+ __LDBL_HAS_QUIET_NAN__ 1
+ __DEC32_MANT_DIG__ 7
+ __DEC32_MIN_EXP__ (-95)
+ __DEC32_MAX_EXP__ 96
+ __DEC32_MIN__ 1E-95DF
+ __DEC32_MAX__ 9.999999E96DF
+ __DEC32_EPSILON__ 1E-6DF
+ __DEC32_DEN__ 0.000001E-95DF
+ __DEC64_MANT_DIG__ 16
+ __DEC64_MIN_EXP__ (-383)
+ __DEC64_MAX_EXP__ 384
+ __DEC64_MIN__ 1E-383DD
+ __DEC64_MAX__ 9.999999999999999E384DD
+ __DEC64_EPSILON__ 1E-15DD
+ __DEC64_DEN__ 0.000000000000001E-383DD
+ __DEC128_MANT_DIG__ 34
+ __DEC128_MIN_EXP__ (-6143)
+ __DEC128_MAX_EXP__ 6144
+ __DEC128_MIN__ 1E-6143DL
+ __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+ __DEC128_EPSILON__ 1E-33DL
+ __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL
+ __REGISTER_PREFIX__ 
+ __USER_LABEL_PREFIX__ 
+ __VERSION__ "4.3.2 20081105 (Red Hat 4.3.2-7)"
+ __GNUC_GNU_INLINE__ 1
+ _LP64 1
+ __LP64__ 1
+ __NO_INLINE__ 1
+ __FINITE_MATH_ONLY__ 0
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
+ __SIZEOF_INT__ 4
+ __SIZEOF_LONG__ 8
+ __SIZEOF_LONG_LONG__ 8
+ __SIZEOF_SHORT__ 2
+ __SIZEOF_FLOAT__ 4
+ __SIZEOF_DOUBLE__ 8
+ __SIZEOF_LONG_DOUBLE__ 16
+ __SIZEOF_SIZE_T__ 8
+ __SIZEOF_WCHAR_T__ 4
+ __SIZEOF_WINT_T__ 4
+ __SIZEOF_PTRDIFF_T__ 8
+ __SIZEOF_POINTER__ 8
+ __amd64 1
+ __amd64__ 1
+ __x86_64 1
+ __x86_64__ 1
+ __k8 1
+ __k8__ 1
+ __MMX__ 1
+ __SSE__ 1
+ __SSE2__ 1
+ __SSE_MATH__ 1
+ __SSE2_MATH__ 1
+ __gnu_linux__ 1
+ __linux 1
+ __linux__ 1
+ linux 1
+ __unix 1
+ __unix__ 1
+ unix 1
+ __ELF__ 1
+ __DECIMAL_BID_FORMAT__ 1
+ macro2 ble
+/file
+EOF
+
+testfiles testfile-macros
+
+testrun_compare ${abs_builddir}/dwarf-getmacros testfile-macros 0xb <<\EOF
+__STDC__ 1
+__STDC_HOSTED__ 1
+__GNUC__ 4
+__GNUC_MINOR__ 7
+__GNUC_PATCHLEVEL__ 0
+__VERSION__ "4.7.0 20120507 (Red Hat 4.7.0-5)"
+__GNUC_RH_RELEASE__ 5
+__ATOMIC_RELAXED 0
+__ATOMIC_SEQ_CST 5
+__ATOMIC_ACQUIRE 2
+__ATOMIC_RELEASE 3
+__ATOMIC_ACQ_REL 4
+__ATOMIC_CONSUME 1
+__FINITE_MATH_ONLY__ 0
+_LP64 1
+__LP64__ 1
+__SIZEOF_INT__ 4
+__SIZEOF_LONG__ 8
+__SIZEOF_LONG_LONG__ 8
+__SIZEOF_SHORT__ 2
+__SIZEOF_FLOAT__ 4
+__SIZEOF_DOUBLE__ 8
+__SIZEOF_LONG_DOUBLE__ 16
+__SIZEOF_SIZE_T__ 8
+__CHAR_BIT__ 8
+__BIGGEST_ALIGNMENT__ 16
+__ORDER_LITTLE_ENDIAN__ 1234
+__ORDER_BIG_ENDIAN__ 4321
+__ORDER_PDP_ENDIAN__ 3412
+__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
+__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
+__SIZEOF_POINTER__ 8
+__SIZE_TYPE__ long unsigned int
+__PTRDIFF_TYPE__ long int
+__WCHAR_TYPE__ int
+__WINT_TYPE__ unsigned int
+__INTMAX_TYPE__ long int
+__UINTMAX_TYPE__ long unsigned int
+__CHAR16_TYPE__ short unsigned int
+__CHAR32_TYPE__ unsigned int
+__SIG_ATOMIC_TYPE__ int
+__INT8_TYPE__ signed char
+__INT16_TYPE__ short int
+__INT32_TYPE__ int
+__INT64_TYPE__ long int
+__UINT8_TYPE__ unsigned char
+__UINT16_TYPE__ short unsigned int
+__UINT32_TYPE__ unsigned int
+__UINT64_TYPE__ long unsigned int
+__INT_LEAST8_TYPE__ signed char
+__INT_LEAST16_TYPE__ short int
+__INT_LEAST32_TYPE__ int
+__INT_LEAST64_TYPE__ long int
+__UINT_LEAST8_TYPE__ unsigned char
+__UINT_LEAST16_TYPE__ short unsigned int
+__UINT_LEAST32_TYPE__ unsigned int
+__UINT_LEAST64_TYPE__ long unsigned int
+__INT_FAST8_TYPE__ signed char
+__INT_FAST16_TYPE__ long int
+__INT_FAST32_TYPE__ long int
+__INT_FAST64_TYPE__ long int
+__UINT_FAST8_TYPE__ unsigned char
+__UINT_FAST16_TYPE__ long unsigned int
+__UINT_FAST32_TYPE__ long unsigned int
+__UINT_FAST64_TYPE__ long unsigned int
+__INTPTR_TYPE__ long int
+__UINTPTR_TYPE__ long unsigned int
+__GXX_ABI_VERSION 1002
+__SCHAR_MAX__ 127
+__SHRT_MAX__ 32767
+__INT_MAX__ 2147483647
+__LONG_MAX__ 9223372036854775807L
+__LONG_LONG_MAX__ 9223372036854775807LL
+__WCHAR_MAX__ 2147483647
+__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
+__WINT_MAX__ 4294967295U
+__WINT_MIN__ 0U
+__PTRDIFF_MAX__ 9223372036854775807L
+__SIZE_MAX__ 18446744073709551615UL
+__INTMAX_MAX__ 9223372036854775807L
+__INTMAX_C(c) c ## L
+__UINTMAX_MAX__ 18446744073709551615UL
+__UINTMAX_C(c) c ## UL
+__SIG_ATOMIC_MAX__ 2147483647
+__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+__INT8_MAX__ 127
+__INT16_MAX__ 32767
+__INT32_MAX__ 2147483647
+__INT64_MAX__ 9223372036854775807L
+__UINT8_MAX__ 255
+__UINT16_MAX__ 65535
+__UINT32_MAX__ 4294967295U
+__UINT64_MAX__ 18446744073709551615UL
+__INT_LEAST8_MAX__ 127
+__INT8_C(c) c
+__INT_LEAST16_MAX__ 32767
+__INT16_C(c) c
+__INT_LEAST32_MAX__ 2147483647
+__INT32_C(c) c
+__INT_LEAST64_MAX__ 9223372036854775807L
+__INT64_C(c) c ## L
+__UINT_LEAST8_MAX__ 255
+__UINT8_C(c) c
+__UINT_LEAST16_MAX__ 65535
+__UINT16_C(c) c
+__UINT_LEAST32_MAX__ 4294967295U
+__UINT32_C(c) c ## U
+__UINT_LEAST64_MAX__ 18446744073709551615UL
+__UINT64_C(c) c ## UL
+__INT_FAST8_MAX__ 127
+__INT_FAST16_MAX__ 9223372036854775807L
+__INT_FAST32_MAX__ 9223372036854775807L
+__INT_FAST64_MAX__ 9223372036854775807L
+__UINT_FAST8_MAX__ 255
+__UINT_FAST16_MAX__ 18446744073709551615UL
+__UINT_FAST32_MAX__ 18446744073709551615UL
+__UINT_FAST64_MAX__ 18446744073709551615UL
+__INTPTR_MAX__ 9223372036854775807L
+__UINTPTR_MAX__ 18446744073709551615UL
+__FLT_EVAL_METHOD__ 0
+__DEC_EVAL_METHOD__ 2
+__FLT_RADIX__ 2
+__FLT_MANT_DIG__ 24
+__FLT_DIG__ 6
+__FLT_MIN_EXP__ (-125)
+__FLT_MIN_10_EXP__ (-37)
+__FLT_MAX_EXP__ 128
+__FLT_MAX_10_EXP__ 38
+__FLT_DECIMAL_DIG__ 9
+__FLT_MAX__ 3.40282346638528859812e+38F
+__FLT_MIN__ 1.17549435082228750797e-38F
+__FLT_EPSILON__ 1.19209289550781250000e-7F
+__FLT_DENORM_MIN__ 1.40129846432481707092e-45F
+__FLT_HAS_DENORM__ 1
+__FLT_HAS_INFINITY__ 1
+__FLT_HAS_QUIET_NAN__ 1
+__DBL_MANT_DIG__ 53
+__DBL_DIG__ 15
+__DBL_MIN_EXP__ (-1021)
+__DBL_MIN_10_EXP__ (-307)
+__DBL_MAX_EXP__ 1024
+__DBL_MAX_10_EXP__ 308
+__DBL_DECIMAL_DIG__ 17
+__DBL_MAX__ ((double)1.79769313486231570815e+308L)
+__DBL_MIN__ ((double)2.22507385850720138309e-308L)
+__DBL_EPSILON__ ((double)2.22044604925031308085e-16L)
+__DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L)
+__DBL_HAS_DENORM__ 1
+__DBL_HAS_INFINITY__ 1
+__DBL_HAS_QUIET_NAN__ 1
+__LDBL_MANT_DIG__ 64
+__LDBL_DIG__ 18
+__LDBL_MIN_EXP__ (-16381)
+__LDBL_MIN_10_EXP__ (-4931)
+__LDBL_MAX_EXP__ 16384
+__LDBL_MAX_10_EXP__ 4932
+__DECIMAL_DIG__ 21
+__LDBL_MAX__ 1.18973149535723176502e+4932L
+__LDBL_MIN__ 3.36210314311209350626e-4932L
+__LDBL_EPSILON__ 1.08420217248550443401e-19L
+__LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
+__LDBL_HAS_DENORM__ 1
+__LDBL_HAS_INFINITY__ 1
+__LDBL_HAS_QUIET_NAN__ 1
+__DEC32_MANT_DIG__ 7
+__DEC32_MIN_EXP__ (-94)
+__DEC32_MAX_EXP__ 97
+__DEC32_MIN__ 1E-95DF
+__DEC32_MAX__ 9.999999E96DF
+__DEC32_EPSILON__ 1E-6DF
+__DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
+__DEC64_MANT_DIG__ 16
+__DEC64_MIN_EXP__ (-382)
+__DEC64_MAX_EXP__ 385
+__DEC64_MIN__ 1E-383DD
+__DEC64_MAX__ 9.999999999999999E384DD
+__DEC64_EPSILON__ 1E-15DD
+__DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
+__DEC128_MANT_DIG__ 34
+__DEC128_MIN_EXP__ (-6142)
+__DEC128_MAX_EXP__ 6145
+__DEC128_MIN__ 1E-6143DL
+__DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+__DEC128_EPSILON__ 1E-33DL
+__DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
+__REGISTER_PREFIX__ 
+__USER_LABEL_PREFIX__ 
+__GNUC_GNU_INLINE__ 1
+__NO_INLINE__ 1
+__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
+__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
+__GCC_ATOMIC_BOOL_LOCK_FREE 2
+__GCC_ATOMIC_CHAR_LOCK_FREE 2
+__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
+__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
+__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
+__GCC_ATOMIC_SHORT_LOCK_FREE 2
+__GCC_ATOMIC_INT_LOCK_FREE 2
+__GCC_ATOMIC_LONG_LOCK_FREE 2
+__GCC_ATOMIC_LLONG_LOCK_FREE 2
+__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
+__GCC_ATOMIC_POINTER_LOCK_FREE 2
+__GCC_HAVE_DWARF2_CFI_ASM 1
+__PRAGMA_REDEFINE_EXTNAME 1
+__SIZEOF_INT128__ 16
+__SIZEOF_WCHAR_T__ 4
+__SIZEOF_WINT_T__ 4
+__SIZEOF_PTRDIFF_T__ 8
+__amd64 1
+__amd64__ 1
+__x86_64 1
+__x86_64__ 1
+__k8 1
+__k8__ 1
+__MMX__ 1
+__SSE__ 1
+__SSE2__ 1
+__SSE_MATH__ 1
+__SSE2_MATH__ 1
+__gnu_linux__ 1
+__linux 1
+__linux__ 1
+linux 1
+__unix 1
+__unix__ 1
+unix 1
+__ELF__ 1
+__DECIMAL_BID_FORMAT__ 1
+file /home/mark/src/tests/macro.c
+ file /usr/include/string.h
+  _STRING_H 1
+  file /usr/include/features.h
+   include 0x5d8
+    _FEATURES_H 1
+    __KERNEL_STRICT_NAMES 
+    __USE_ANSI 1
+    __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+    _BSD_SOURCE 1
+    _SVID_SOURCE 1
+    _POSIX_SOURCE 1
+    _POSIX_C_SOURCE 200809L
+    __USE_POSIX_IMPLICITLY 1
+    __USE_POSIX 1
+    __USE_POSIX2 1
+    __USE_POSIX199309 1
+    __USE_POSIX199506 1
+    __USE_XOPEN2K 1
+    __USE_ISOC95 1
+    __USE_ISOC99 1
+    __USE_XOPEN2K8 1
+    _ATFILE_SOURCE 1
+    __USE_MISC 1
+    __USE_BSD 1
+    __USE_SVID 1
+    __USE_ATFILE 1
+    __USE_FORTIFY_LEVEL 0
+   /include
+   file /usr/include/stdc-predef.h
+    include 0x733
+     _STDC_PREDEF_H 1
+     __STDC_IEC_559__ 1
+     __STDC_IEC_559_COMPLEX__ 1
+     __STDC_ISO_10646__ 201103L
+     __STDC_NO_THREADS__ 1
+    /include
+   /file
+   include 0x755
+    __GNU_LIBRARY__ 6
+    __GLIBC__ 2
+    __GLIBC_MINOR__ 15
+    __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
+    __GLIBC_HAVE_LONG_LONG 1
+   /include
+   file /usr/include/sys/cdefs.h
+    include 0x783
+     _SYS_CDEFS_H 1
+     __LEAF , __leaf__
+     __LEAF_ATTR __attribute__ ((__leaf__))
+     __THROW __attribute__ ((__nothrow__ __LEAF))
+     __THROWNL __attribute__ ((__nothrow__))
+     __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
+     __P(args) args
+     __PMT(args) args
+     __CONCAT(x,y) x ## y
+     __STRING(x) #x
+     __ptr_t void *
+     __long_double_t long double
+     __BEGIN_DECLS 
+     __END_DECLS 
+     __BEGIN_NAMESPACE_STD 
+     __END_NAMESPACE_STD 
+     __USING_NAMESPACE_STD(name) 
+     __BEGIN_NAMESPACE_C99 
+     __END_NAMESPACE_C99 
+     __USING_NAMESPACE_C99(name) 
+     __bounded 
+     __unbounded 
+     __ptrvalue 
+     __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
+     __bos0(ptr) __builtin_object_size (ptr, 0)
+     __fortify_function __extern_always_inline __attribute_artificial__
+     __warndecl(name,msg) extern void name (void) __attribute__((__warning__ (msg)))
+     __warnattr(msg) __attribute__((__warning__ (msg)))
+     __errordecl(name,msg) extern void name (void) __attribute__((__error__ (msg)))
+     __flexarr []
+     __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))
+     __REDIRECT_NTH(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROW
+     __REDIRECT_NTHNL(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROWNL
+     __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+     __ASMNAME2(prefix,cname) __STRING (prefix) cname
+     __attribute_malloc__ __attribute__ ((__malloc__))
+     __attribute_pure__ __attribute__ ((__pure__))
+     __attribute_const__ __attribute__ ((__const__))
+     __attribute_used__ __attribute__ ((__used__))
+     __attribute_noinline__ __attribute__ ((__noinline__))
+     __attribute_deprecated__ __attribute__ ((__deprecated__))
+     __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
+     __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
+     __nonnull(params) __attribute__ ((__nonnull__ params))
+     __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))
+     __wur 
+     __always_inline __inline __attribute__ ((__always_inline__))
+     __attribute_artificial__ __attribute__ ((__artificial__))
+     __extern_inline extern __inline
+     __extern_always_inline extern __always_inline
+     __va_arg_pack() __builtin_va_arg_pack ()
+     __va_arg_pack_len() __builtin_va_arg_pack_len ()
+     __restrict_arr __restrict
+     __glibc_unlikely(cond) __builtin_expect((cond), 0)
+    /include
+    file /usr/include/bits/wordsize.h
+     include 0x8fa
+      __WORDSIZE 64
+      __WORDSIZE_TIME64_COMPAT32 1
+      __SYSCALL_WORDSIZE 64
+     /include
+    /file
+    include 0x910
+     __LDBL_REDIR1(name,proto,alias) name proto
+     __LDBL_REDIR(name,proto) name proto
+     __LDBL_REDIR1_NTH(name,proto,alias) name proto __THROW
+     __LDBL_REDIR_NTH(name,proto) name proto __THROW
+     __LDBL_REDIR_DECL(name) 
+     __REDIRECT_LDBL(name,proto,alias) __REDIRECT (name, proto, alias)
+     __REDIRECT_NTH_LDBL(name,proto,alias) __REDIRECT_NTH (name, proto, alias)
+    /include
+   /file
+   file /usr/include/gnu/stubs.h
+    file /usr/include/gnu/stubs-64.h
+     include 0x945
+      __stub_bdflush 
+      __stub_chflags 
+      __stub_fattach 
+      __stub_fchflags 
+      __stub_fdetach 
+      __stub_getmsg 
+      __stub_gtty 
+      __stub_lchmod 
+      __stub_putmsg 
+      __stub_revoke 
+      __stub_setlogin 
+      __stub_sigreturn 
+      __stub_sstk 
+      __stub_stty 
+     /include
+    /file
+   /file
+  /file
+  include 0x99d
+   __need_size_t 
+   __need_NULL 
+  /include
+  file /usr/lib/gcc/x86_64-redhat-linux/4.7.0/include/stddef.h
+   include 0x9ad
+    __size_t__ 
+    __SIZE_T__ 
+    _SIZE_T 
+    _SYS_SIZE_T_H 
+    _T_SIZE_ 
+    _T_SIZE 
+    __SIZE_T 
+    _SIZE_T_ 
+    _BSD_SIZE_T_ 
+    _SIZE_T_DEFINED_ 
+    _SIZE_T_DEFINED 
+    _BSD_SIZE_T_DEFINED_ 
+    _SIZE_T_DECLARED 
+    ___int_size_t_h 
+    _GCC_SIZE_T 
+    _SIZET_ 
+    __size_t 
+    NULL ((void *)0)
+   /include
+  /file
+  file /usr/include/xlocale.h
+   _XLOCALE_H 1
+  /file
+ /file
+ HELLO "world"
+/file
+EOF
+
+testfiles testfile-macros-0xff
+testrun_compare ${abs_builddir}/dwarf-getmacros testfile-macros-0xff 0xb <<\EOF
+invalid opcode
+EOF
+testrun_compare ${abs_builddir}/dwarf-getmacros testfile-macros-0xff 0xb '' <<\EOF
+opcode 255 with 0 arguments
+file /home/petr/proj/elfutils/master/elfutils/x.c
+ FOO 0
+/file
+EOF
+
+exit 0
diff --git a/src/tests/run-dwarf-getstring.sh b/src/tests/run-dwarf-getstring.sh
new file mode 100755
index 0000000..f18f628
--- /dev/null
+++ b/src/tests/run-dwarf-getstring.sh
@@ -0,0 +1,125 @@
+#! /bin/sh
+# Copyright (C) 2011 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 testfile11
+
+testrun_compare ${abs_builddir}/dwarf-getstring testfile11 <<\EOF
+_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_
+itimerspec
+_G_int32_t
+_IO_last_state
+antiquities
+_ZNSbIwSt11char_traitsIwESaIwEEpLEw
+insert
+_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv
+__lockkind
+_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv
+_ZNSs7_M_leakEv
+_M_ref_count
+_ZNSt11char_traitsIwE6assignEPwjw
+_ZNKSs13find_first_ofEPKcj
+._14
+._15
+._16
+._17
+_ZNKSs16find_last_not_ofEPKcj
+_G_iconv_t
+_ZN10__gnu_test9gnu_obj_2IlEaSERKS1_
+_ZN11random_dataaSERKS_
+_ZNSt11char_traitsIcE7not_eofERKi
+__class_type_info
+tm_sec
+_ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv
+__rlim64_t
+seek
+pthread_mutex_t
+_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE
+_ZNSsaSEc
+__not_va_list__
+_ZNKSs12find_last_ofEPKcj
+_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_
+__gconv_info
+_ZNSt11__ios_flags12_S_showpointE
+output_iterator_tag
+gnu_obj_2<long int>
+_ZNSs6insertEjRKSsjj
+_ZN13__type_traitsIbEaSERKS0_
+_ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj
+_ZNSs9_M_mutateEjjj
+__ios_flags
+short unsigned int
+_ZNKSs4findEPKcj
+compare
+_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_
+tm_yday
+unsigned char
+__stacksize
+__gconv_init_fct
+_IO_FILE
+__counter
+._26
+._27
+bidirectional_iterator_tag
+._29
+it_value
+const_iterator
+_ZNSt11__ios_flags6_S_outE
+_M_set_leaked
+_Is_integer<unsigned int>
+__value
+timeval
+_IO_jump_t
+_ZN11sched_paramaSERKS_
+__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+_ZNSs4_Rep7_M_grabERKSaIcES2_
+_wide_vtable
+__codecvt_destr
+_STL_mutex_lock
+_ZNSt24__default_alloc_templateILb1ELi0EE17_S_freelist_indexEj
+_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw
+_ZN17__gconv_step_dataaSERKS_
+__w_stopval
+__int64_t
+__type_traits<double>
+~_Lock
+_ZNKSbIwSt11char_traitsIwESaIwEE5beginEv
+ptrdiff_t
+test
+_Integral
+cookie_seek_function_t
+__vmi_class_type_info
+_ZNSs7replaceEjjjc
+__int32_t
+register_t
+~_STL_auto_lock
+_ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj
+__arg
+_ZNSs7replaceEjjPKcj
+_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj
+_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj
+_ZN11_Is_integerImEaSERKS0_
+__default_alloc_template
+_S_hex
+__statep
+_ZNSt11char_traitsIwE2ltERKwS2_
+_M_p
+_ZNKSs4sizeEv
+EOF
+
+exit 0
diff --git a/src/tests/run-dwfl-addr-sect.sh b/src/tests/run-dwfl-addr-sect.sh
new file mode 100755
index 0000000..80da008
--- /dev/null
+++ b/src/tests/run-dwfl-addr-sect.sh
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2007-2009 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 testfile43 testfile50
+
+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 ${abs_builddir}/dwfl-addr-sect -e testfile50 0x1 <<\EOF
+address 0x1 => module "" section 1 + 0x1
+EOF
+
+exit 0
diff --git a/src/tests/run-dwfl-bug-offline-rel.sh b/src/tests/run-dwfl-bug-offline-rel.sh
new file mode 100755
index 0000000..fa476c4
--- /dev/null
+++ b/src/tests/run-dwfl-bug-offline-rel.sh
@@ -0,0 +1,28 @@
+#! /bin/sh
+# Copyright (C) 2007 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 testfile36 testfile36.debug
+
+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
+EOF
+
+exit 0
diff --git a/src/tests/run-dwfl-report-elf-align.sh b/src/tests/run-dwfl-report-elf-align.sh
new file mode 100755
index 0000000..3849753
--- /dev/null
+++ b/src/tests/run-dwfl-report-elf-align.sh
@@ -0,0 +1,44 @@
+#! /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
diff --git a/src/tests/run-dwfllines.sh b/src/tests/run-dwfllines.sh
new file mode 100755
index 0000000..b384de0
--- /dev/null
+++ b/src/tests/run-dwfllines.sh
@@ -0,0 +1,88 @@
+#! /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
diff --git a/src/tests/run-dwflsyms.sh b/src/tests/run-dwflsyms.sh
new file mode 100755
index 0000000..9726bcf
--- /dev/null
+++ b/src/tests/run-dwflsyms.sh
@@ -0,0 +1,826 @@
+#! /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
diff --git a/src/tests/run-early-offscn.sh b/src/tests/run-early-offscn.sh
new file mode 100755
index 0000000..3757bcf
--- /dev/null
+++ b/src/tests/run-early-offscn.sh
@@ -0,0 +1,24 @@
+#! /bin/sh
+# Copyright (C) 2008 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
+
+testrun ${abs_builddir}/early-offscn testfile 0x500
+
+exit 0
diff --git a/src/tests/run-ecp-test.sh b/src/tests/run-ecp-test.sh
new file mode 100755
index 0000000..d5e376a
--- /dev/null
+++ b/src/tests/run-ecp-test.sh
@@ -0,0 +1,28 @@
+#! /bin/sh
+# Copyright (C) 2002, 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Jakub Jelinek <jakub@redhat.com>, 2002.
+#
+# 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 testfile10
+tempfiles testfile10.tmp
+
+testrun ${abs_builddir}/ecp testfile10 testfile10.tmp
+
+cmp testfile10 testfile10.tmp
+
+exit 0
diff --git a/src/tests/run-ecp-test2.sh b/src/tests/run-ecp-test2.sh
new file mode 100755
index 0000000..864e0a5
--- /dev/null
+++ b/src/tests/run-ecp-test2.sh
@@ -0,0 +1,26 @@
+#! /bin/sh
+# Copyright (C) 2002, 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Jakub Jelinek <jakub@redhat.com>, 2002.
+#
+# 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 testfile2
+tempfiles testfile2.tmp
+
+testrun ${abs_builddir}/ecp testfile2 testfile2.tmp
+
+exit 0
diff --git a/src/tests/run-elf_cntl_gelf_getshdr.sh b/src/tests/run-elf_cntl_gelf_getshdr.sh
new file mode 100755
index 0000000..94b477c
--- /dev/null
+++ b/src/tests/run-elf_cntl_gelf_getshdr.sh
@@ -0,0 +1,30 @@
+#! /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
+
+tempfiles test_shdr.out
+
+# However we open the elf file, the shdrs should be the same.
+testrun ${abs_builddir}/test-elf_cntl_gelf_getshdr READ ${abs_builddir}/test-elf_cntl_gelf_getshdr \
+  > test_shdr.out
+
+testrun_compare ${abs_builddir}/test-elf_cntl_gelf_getshdr MMAP ${abs_builddir}/test-elf_cntl_gelf_getshdr \
+  < test_shdr.out
+
+testrun_compare ${abs_builddir}/test-elf_cntl_gelf_getshdr FDREAD ${abs_builddir}/test-elf_cntl_gelf_getshdr \
+  < test_shdr.out
diff --git a/src/tests/run-elflint-self.sh b/src/tests/run-elflint-self.sh
new file mode 100755
index 0000000..013109d
--- /dev/null
+++ b/src/tests/run-elflint-self.sh
@@ -0,0 +1,21 @@
+#! /bin/sh
+# Copyright (C) 2005, 2007 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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
+
+testrun_on_self ${abs_top_builddir}/src/elflint --quiet --gnu-ld
diff --git a/src/tests/run-elflint-test.sh b/src/tests/run-elflint-test.sh
new file mode 100755
index 0000000..68615b9
--- /dev/null
+++ b/src/tests/run-elflint-test.sh
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2005, 2007, 2008 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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 testfile18
+
+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 ${abs_top_builddir}/src/elflint -q testfile32
+
+testfiles testfile33
+testrun ${abs_top_builddir}/src/elflint -q testfile33
+
+testfiles testfile42
+testrun ${abs_top_builddir}/src/elflint -q --gnu-ld testfile42
+
+testfiles testfile46
+testrun ${abs_top_builddir}/src/elflint -q testfile46
+
+# see also run-readelf-d.sh
+testfiles testlib_dynseg.so
+testrun ${abs_top_builddir}/src/elflint -q --gnu-ld testlib_dynseg.so
+
+exit 0
diff --git a/src/tests/run-find-prologues.sh b/src/tests/run-find-prologues.sh
new file mode 100755
index 0000000..160f07d
--- /dev/null
+++ b/src/tests/run-find-prologues.sh
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2005 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 testfile11 testfile22 testfile24 \
+	  testfile25 testfile3 testfile4 testfile5 testfile6
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile <<\EOF
+main             0x000000000804842c 0x0000000008048432
+bar              0x000000000804845c 0x000000000804845f
+foo              0x0000000008048468 0x000000000804846b
+EOF
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile11 <<\EOF
+main             0x00000000080489b8 0x00000000080489cd
+gnu_obj_2        0x0000000008048c9e 0x0000000008048ca4
+gnu_obj_3        0x0000000008048cd8 0x0000000008048cde
+gnu_obj_2        0x0000000008048cf4 0x0000000008048cfa
+~invalid_argument 0x0000000008048d2e 0x0000000008048d34
+gnu_obj_1        0x0000000008048d62 0x0000000008048d65
+gnu_obj_1        0x0000000008048d8a 0x0000000008048d8d
+~invalid_argument 0x0000000008048db2 0x0000000008048db8
+EOF
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile22 <<\EOF
+function         0x0000000008048348 0x000000000804834e
+main             0x000000000804835b 0x0000000008048377
+EOF
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile24 <<\EOF
+incr             0x0000000008048348 0x000000000804834e
+main             0x0000000008048354 0x0000000008048360
+EOF
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile25 <<\EOF
+incr             0x0000000008048348 0x000000000804834c
+EOF
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile3 <<\EOF
+main             0x000000000804842c 0x0000000008048433
+bar              0x0000000008048458 0x000000000804845b
+foo              0x0000000008048464 0x0000000008048467
+EOF
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile4 <<\EOF
+get              0x00000000080493fc 0x0000000008049402
+main             0x0000000008049498 0x000000000804949e
+a                0x000000000804d85c 0x000000000804d85c
+__tfPCc          0x000000000804d86c 0x000000000804d872
+__tfCc           0x000000000804d8a4 0x000000000804d8a4
+EOF
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile5 <<\EOF
+bar              0x000000000804842c 0x000000000804842f
+foo              0x0000000008048438 0x000000000804843b
+main             0x0000000008048444 0x000000000804844a
+EOF
+
+testrun_compare ${abs_builddir}/find-prologues -e testfile6 <<\EOF
+main             0x00000000080489b8 0x00000000080489cd
+gnu_obj_2        0x0000000008048c9e 0x0000000008048ca4
+gnu_obj_3        0x0000000008048cd8 0x0000000008048cde
+gnu_obj_2        0x0000000008048cf4 0x0000000008048cfa
+~invalid_argument 0x0000000008048d2e 0x0000000008048d34
+gnu_obj_1        0x0000000008048d62 0x0000000008048d65
+gnu_obj_1        0x0000000008048d8a 0x0000000008048d8d
+~invalid_argument 0x0000000008048db2 0x0000000008048db8
+EOF
+
+exit 0
diff --git a/src/tests/run-funcretval.sh b/src/tests/run-funcretval.sh
new file mode 100755
index 0000000..779bd47
--- /dev/null
+++ b/src/tests/run-funcretval.sh
@@ -0,0 +1,153 @@
+#! /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
diff --git a/src/tests/run-funcscopes.sh b/src/tests/run-funcscopes.sh
new file mode 100755
index 0000000..d236f5c
--- /dev/null
+++ b/src/tests/run-funcscopes.sh
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 2005 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 testfile25
+
+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)
+            x                             [    66]
+EOF
+
+exit 0
diff --git a/src/tests/run-get-aranges.sh b/src/tests/run-get-aranges.sh
new file mode 100755
index 0000000..62cae5f
--- /dev/null
+++ b/src/tests/run-get-aranges.sh
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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}/get-aranges testfile testfile2 <<\EOF
+0x804842b: not in range
+CU name: "m.c"
+CU name: "m.c"
+CU name: "m.c"
+0x804845a: not in range
+0x804845b: not in range
+CU name: "b.c"
+CU name: "b.c"
+CU name: "b.c"
+0x8048466: not in range
+0x8048467: not in range
+CU name: "f.c"
+CU name: "f.c"
+CU name: "f.c"
+0x8048472: not in range
+ [ 0] start: 0x804842c, length: 46, cu: 11
+CU name: "m.c"
+ [ 1] start: 0x804845c, length: 10, cu: 202
+CU name: "b.c"
+ [ 2] start: 0x8048468, length: 10, cu: 5628
+CU name: "f.c"
+0x804842b: not in range
+0x804842c: not in range
+0x804843c: not in range
+0x8048459: not in range
+0x804845a: not in range
+0x804845b: not in range
+0x804845c: not in range
+0x8048460: not in range
+0x8048465: not in range
+0x8048466: not in range
+0x8048467: not in range
+0x8048468: not in range
+0x8048470: not in range
+0x8048471: not in range
+0x8048472: not in range
+ [ 0] start: 0x10000470, length: 32, cu: 11
+CU name: "b.c"
+ [ 1] start: 0x10000490, length: 32, cu: 2429
+CU name: "f.c"
+ [ 2] start: 0x100004b0, length: 100, cu: 2532
+CU name: "m.c"
+EOF
+
+exit 0
diff --git a/src/tests/run-get-files.sh b/src/tests/run-get-files.sh
new file mode 100755
index 0000000..a2f2373
--- /dev/null
+++ b/src/tests/run-get-files.sh
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2004, 2005, 2007 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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}/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] = "???"
+ file[1] = "/home/drepper/gnu/new-bu/build/ttt/m.c"
+cuhl = 11, o = 114, asz = 4, osz = 4, ncu = 5617
+ dirs[0] = "/home/drepper/gnu/new-bu/build/ttt"
+ file[0] = "???"
+ file[1] = "/home/drepper/gnu/new-bu/build/ttt/b.c"
+ file[2] = "/usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h"
+ file[3] = "/usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h"
+ file[4] = "/usr/include/bits/types.h"
+ file[5] = "/usr/include/bits/sched.h"
+ file[6] = "/usr/include/bits/pthreadtypes.h"
+ file[7] = "/usr/include/stdio.h"
+ file[8] = "/usr/include/libio.h"
+ file[9] = "/usr/include/wchar.h"
+ file[10] = "/usr/include/_G_config.h"
+ file[11] = "/usr/include/gconv.h"
+cuhl = 11, o = 412, asz = 4, osz = 4, ncu = 5752
+ dirs[0] = "/home/drepper/gnu/new-bu/build/ttt"
+ file[0] = "???"
+ file[1] = "/home/drepper/gnu/new-bu/build/ttt/f.c"
+cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 2418
+ dirs[0] = "/shoggoth/drepper"
+ file[0] = "???"
+ file[1] = "/shoggoth/drepper/b.c"
+ file[2] = "/home/geoffk/objs/laurel-000912-branch/lib/gcc-lib/powerpc-unknown-linux-gnu/2.96-laurel-000912/include/stddef.h"
+ file[3] = "/home/geoffk/objs/laurel-000912-branch/lib/gcc-lib/powerpc-unknown-linux-gnu/2.96-laurel-000912/include/stdarg.h"
+ file[4] = "/shoggoth/drepper/<built-in>"
+ file[5] = "/usr/include/bits/types.h"
+ file[6] = "/usr/include/stdio.h"
+ file[7] = "/usr/include/libio.h"
+ file[8] = "/usr/include/_G_config.h"
+cuhl = 11, o = 213, asz = 4, osz = 4, ncu = 2521
+ dirs[0] = "/shoggoth/drepper"
+ file[0] = "???"
+ file[1] = "/shoggoth/drepper/f.c"
+cuhl = 11, o = 267, asz = 4, osz = 4, ncu = 2680
+ dirs[0] = "/shoggoth/drepper"
+ file[0] = "???"
+ file[1] = "/shoggoth/drepper/m.c"
+EOF
+
+exit 0
diff --git a/src/tests/run-get-lines.sh b/src/tests/run-get-lines.sh
new file mode 100755
index 0000000..fb48c77
--- /dev/null
+++ b/src/tests/run-get-lines.sh
@@ -0,0 +1,91 @@
+#! /bin/sh
+# 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.
+#
+# 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 testfilenolines
+
+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
+8048432: /home/drepper/gnu/new-bu/build/ttt/m.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+804844d: /home/drepper/gnu/new-bu/build/ttt/m.c:7:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+8048458: /home/drepper/gnu/new-bu/build/ttt/m.c:8:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+804845a: /home/drepper/gnu/new-bu/build/ttt/m.c:8:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
+cuhl = 11, o = 114, asz = 4, osz = 4, ncu = 5617
+ 4 lines
+804845c: /home/drepper/gnu/new-bu/build/ttt/b.c:4:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+804845f: /home/drepper/gnu/new-bu/build/ttt/b.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+8048464: /home/drepper/gnu/new-bu/build/ttt/b.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+8048466: /home/drepper/gnu/new-bu/build/ttt/b.c:6:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
+cuhl = 11, o = 412, asz = 4, osz = 4, ncu = 5752
+ 4 lines
+8048468: /home/drepper/gnu/new-bu/build/ttt/f.c:3:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+804846b: /home/drepper/gnu/new-bu/build/ttt/f.c:4:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+8048470: /home/drepper/gnu/new-bu/build/ttt/f.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+8048472: /home/drepper/gnu/new-bu/build/ttt/f.c:5:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
+cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 2418
+ 4 lines
+10000470: /shoggoth/drepper/b.c:4:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+1000047c: /shoggoth/drepper/b.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+10000480: /shoggoth/drepper/b.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+10000490: /shoggoth/drepper/b.c:6:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
+cuhl = 11, o = 213, asz = 4, osz = 4, ncu = 2521
+ 4 lines
+10000490: /shoggoth/drepper/f.c:3:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+1000049c: /shoggoth/drepper/f.c:4:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+100004a0: /shoggoth/drepper/f.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+100004b0: /shoggoth/drepper/f.c:5:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
+cuhl = 11, o = 267, asz = 4, osz = 4, ncu = 2680
+ 5 lines
+100004b0: /shoggoth/drepper/m.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+100004cc: /shoggoth/drepper/m.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+100004e8: /shoggoth/drepper/m.c:7:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+100004f4: /shoggoth/drepper/m.c:8: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
diff --git a/src/tests/run-get-pubnames.sh b/src/tests/run-get-pubnames.sh
new file mode 100755
index 0000000..912793e
--- /dev/null
+++ b/src/tests/run-get-pubnames.sh
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2003, 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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}/get-pubnames testfile testfile2 <<\EOF
+ [ 0] "main", die: 104, cu: 11
+CU name: "m.c"
+object name: "main"
+ [ 1] "a", die: 174, cu: 11
+CU name: "m.c"
+object name: "a"
+ [ 2] "bar", die: 295, cu: 202
+CU name: "b.c"
+object name: "bar"
+ [ 3] "foo", die: 5721, cu: 5628
+CU name: "f.c"
+object name: "foo"
+ [ 0] "bar", die: 72, cu: 11
+CU name: "b.c"
+object name: "bar"
+ [ 1] "foo", die: 2490, cu: 2429
+CU name: "f.c"
+object name: "foo"
+ [ 2] "main", die: 2593, cu: 2532
+CU name: "m.c"
+object name: "main"
+ [ 3] "a", die: 2663, cu: 2532
+CU name: "m.c"
+object name: "a"
+EOF
+
+exit 0
diff --git a/src/tests/run-line2addr.sh b/src/tests/run-line2addr.sh
new file mode 100755
index 0000000..3b6c445
--- /dev/null
+++ b/src/tests/run-line2addr.sh
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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 testfile8 testfile14 testfile23
+
+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 ${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 ${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 ${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 ${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
+
+exit 0
diff --git a/src/tests/run-linkmap-cut.sh b/src/tests/run-linkmap-cut.sh
new file mode 100755
index 0000000..de2bc7c
--- /dev/null
+++ b/src/tests/run-linkmap-cut.sh
@@ -0,0 +1,32 @@
+#! /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/>.
+
+. $srcdir/test-subr.sh
+
+# The core file has patched:
+# * _r_debug.r_map.l_next.l_next (vma 0x3fdf621718, offset 0x7718) = NULL,
+#   therefore all libraries after the main executable and vDSO are removed.
+# * NT_FILE absolute filenames are relativized to: ./////basename
+
+testfiles linkmap-cut-lib.so linkmap-cut linkmap-cut.core
+tempfiles bt
+# It may have non-zero exit code with:
+# .../elfutils/src/stack: dwfl_thread_getframes tid 3130 at 0x3fdf821d64 in /usr/lib64/libc-2.18.so: no matching address range
+testrun ${abs_top_builddir}/src/stack --core=linkmap-cut.core -e linkmap-cut -m >bt || true
+cat bt
+grep -q '^#0  0x00007f08bc24d681 libfunc - .////////////////////////////////////linkmap-cut-lib\.so$' bt
+grep -q '^#1  0x00000000004006b4 main - linkmap-cut$' bt
diff --git a/src/tests/run-low_high_pc.sh b/src/tests/run-low_high_pc.sh
new file mode 100755
index 0000000..ab5f2c3
--- /dev/null
+++ b/src/tests/run-low_high_pc.sh
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2005 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
+
+# int
+# main (int argc, char **argv)
+# {
+#   return 0;
+# }
+# gcc -g -o main main.c
+testfiles testfile_low_high_pc
+
+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
diff --git a/src/tests/run-macro-test.sh b/src/tests/run-macro-test.sh
new file mode 100755
index 0000000..79b0d88
--- /dev/null
+++ b/src/tests/run-macro-test.sh
@@ -0,0 +1,52 @@
+#! /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
+
+# #include <string.h>
+#
+# #define HELLO "world"
+#
+# int
+# main(int argc, char ** argv)
+# {
+#   return strlen (HELLO);
+# }
+#
+# gcc -gdwarf-4 -g3 -o testfile-macros macro.c
+# gcc -gstrict-dwarf -gdwarf-4 -g3 -o testfile-macinfo macro.c
+
+testfiles testfile-macinfo testfile-macros
+tempfiles readelf.macros.out
+
+status=0
+
+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 ${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
+
+exit $status
diff --git a/src/tests/run-native-test.sh b/src/tests/run-native-test.sh
new file mode 100755
index 0000000..d19007f
--- /dev/null
+++ b/src/tests/run-native-test.sh
@@ -0,0 +1,88 @@
+#! /bin/sh
+# 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
+# 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
+
+# This tests all the miscellaneous components of backend support
+# against whatever this build is running on.  A platform will fail
+# this test if it is missing parts of the backend implementation.
+#
+# As new backend code is added to satisfy the test, be sure to update
+# the fixed test cases (run-allregs.sh et al) to test that backend
+# in all builds.
+
+tempfiles native.c native
+echo 'main () { while (1) pause (); }' > native.c
+
+native=0
+kill_native()
+{
+  test $native -eq 0 || {
+    kill -9 $native 2> /dev/null || :
+    wait $native 2> /dev/null || :
+  }
+  native=0
+}
+
+native_cleanup()
+{
+  kill_native
+  test_cleanup
+}
+
+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
+  $cc -o native -g native.c > /dev/null 2>&1 &&
+  # Some shell versions don't do this right without the braces.
+  { ./native > /dev/null 2>&1 & native=$! ; } &&
+  sleep 1 && kill -0 $native 2> /dev/null &&
+  break ||
+  native=0
+done
+
+native_test()
+{
+  # Try the build against itself, i.e. $config_host.
+  testrun "$@" -e $1 > /dev/null
+
+  # Try the build against a presumed native process, running this sh.
+  # For tests requiring debug information, this may not test anything.
+  testrun "$@" -p $$ > /dev/null
+
+  # Try the build against the trivial native program we just built with -g.
+  test $native -eq 0 || testrun "$@" -p $native > /dev/null
+}
+
+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
+# $native when we do the kill inside the exit handler.
+native_cleanup
+
+exit 0
diff --git a/src/tests/run-nm-self.sh b/src/tests/run-nm-self.sh
new file mode 100755
index 0000000..6a31afc
--- /dev/null
+++ b/src/tests/run-nm-self.sh
@@ -0,0 +1,36 @@
+#! /bin/sh
+# 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
+# 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
+
+# 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
+      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
diff --git a/src/tests/run-prelink-addr-test.sh b/src/tests/run-prelink-addr-test.sh
new file mode 100755
index 0000000..3398c0d
--- /dev/null
+++ b/src/tests/run-prelink-addr-test.sh
@@ -0,0 +1,252 @@
+#! /bin/sh
+# 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
+# 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
+
+
+# testfile52.c:
+#   #include <stdlib.h>
+#   int foo() { exit(0); }
+#
+# gcc -m32 -g -shared testfile52-32.c -o testfile52-32.so
+# eu-strip -f testfile52-32.so.debug testfile52-32.so
+# cp testfile52-32.so testfile52-32.prelink.so
+# prelink -N testfile52-32.prelink.so
+# cp testfile52-32.so testfile52-32.noshdrs.so
+# prelink -r 0x42000000 testfile52-32.noshdrs.so
+# eu-strip --remove-comment --strip-sections testfile52-32.noshdrs.so
+
+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 -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
+00112000-00113000 rw-p 00000000 fd:01 1 `pwd`/testfile52-32.so
+41000000-41001000 r-xp 00000000 fd:01 2 `pwd`/testfile52-32.prelink.so
+41001000-41002000 rw-p 00000000 fd:01 2 `pwd`/testfile52-32.prelink.so
+42000000-42001000 r-xp 00000000 fd:01 3 `pwd`/testfile52-32.noshdrs.so
+42001000-42002000 rw-p 00000000 fd:01 3 `pwd`/testfile52-32.noshdrs.so
+EOF
+
+# 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 ${abs_top_builddir}/src/addr2line -S -M testmaps52-32 \
+    0x11140c 0x4100042d 0x4200040e <<\EOF
+foo
+/home/jistone/src/elfutils/tests/testfile52-32.c:2
+foo+0x1
+/home/jistone/src/elfutils/tests/testfile52-32.c:2
+foo+0x2
+/home/jistone/src/elfutils/tests/testfile52-32.c:2
+EOF
+
+# Repeat testfile52 for -m64.  The particular REL>RELA issue doesn't exist, but
+# we'll make sure the rest works anyway.
+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 -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
+1000001000-1000200000 ---p 00001000 fd:11 1 `pwd`/testfile52-64.so
+1000200000-1000201000 rw-p 00000000 fd:11 1 `pwd`/testfile52-64.so
+3000000000-3000001000 r-xp 00000000 fd:11 2 `pwd`/testfile52-64.prelink.so
+3000001000-3000200000 ---p 00001000 fd:11 2 `pwd`/testfile52-64.prelink.so
+3000200000-3000201000 rw-p 00000000 fd:11 2 `pwd`/testfile52-64.prelink.so
+3800000000-3800001000 r-xp 00000000 fd:11 3 `pwd`/testfile52-64.noshdrs.so
+3800001000-3800200000 ---p 00001000 fd:11 3 `pwd`/testfile52-64.noshdrs.so
+3800200000-3800201000 rw-p 00000000 fd:11 3 `pwd`/testfile52-64.noshdrs.so
+EOF
+
+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
+foo+0x1
+/home/jistone/src/elfutils/tests/testfile52-64.c:2
+foo+0x2
+/home/jistone/src/elfutils/tests/testfile52-64.c:2
+EOF
+
+
+# testfile53.c:
+#   char foo[0x1000];
+#   int main() { return 0; }
+#
+# gcc -m32 -g testfile53-32.c -o testfile53-32
+# eu-strip -f testfile53-32.debug testfile53-32
+# cp testfile53-32 testfile53-32.prelink
+# prelink -N testfile53-32.prelink
+testfiles testfile53-32 testfile53-32.debug testfile53-32.prelink
+
+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
+/home/jistone/src/elfutils/tests/testfile53-32.c:2
+EOF
+
+# prelink shuffled some of the sections, but .text is in the same place.
+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
+/home/jistone/src/elfutils/tests/testfile53-32.c:2
+EOF
+
+# Repeat testfile53 in 64-bit, except use foo[0x800] to achieve the same
+# prelink section shuffling.
+testfiles testfile53-64 testfile53-64.debug testfile53-64.prelink
+
+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 ${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
+/home/jistone/src/elfutils/tests/testfile53-64.c:2
+EOF
+
+
+# testfile54.c:
+#   extern void * stdin;
+#   static void * pstdin = &stdin;
+#   void * const foo = &pstdin;
+#
+# gcc -m32 -g -shared -nostartfiles testfile54-32.c -o testfile54-32.so
+# eu-strip -f testfile54-32.so.debug testfile54-32.so
+# cp testfile54-32.so testfile54-32.prelink.so
+# prelink -N testfile54-32.prelink.so
+# cp testfile54-32.so testfile54-32.noshdrs.so
+# prelink -r 0x42000000 testfile54-32.noshdrs.so
+# eu-strip --remove-comment --strip-sections testfile54-32.noshdrs.so
+testfiles testfile54-32.so testfile54-32.so.debug
+testfiles testfile54-32.prelink.so testfile54-32.noshdrs.so
+tempfiles testmaps54-32
+
+# Note we have no testfile54-32.noshdrs.so.debug link here, so
+# this is testing finding the symbols in .dynsym via PT_DYNAMIC.
+
+cat > testmaps54-32 <<EOF
+00111000-00112000 r--p 00000000 fd:01 1 `pwd`/testfile54-32.so
+00112000-00113000 rw-p 00000000 fd:01 1 `pwd`/testfile54-32.so
+41000000-41001000 r--p 00000000 fd:01 2 `pwd`/testfile54-32.prelink.so
+41001000-41002000 rw-p 00000000 fd:01 2 `pwd`/testfile54-32.prelink.so
+42000000-42001000 r--p 00000000 fd:01 3 `pwd`/testfile54-32.noshdrs.so
+42001000-42002000 rw-p 00000000 fd:01 3 `pwd`/testfile54-32.noshdrs.so
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -S -M testmaps54-32 \
+    0x1111fc 0x1122a4 0x410001fd 0x410012a5 0x420001fe <<\EOF
+foo
+??:0
+pstdin
+??:0
+foo+0x1
+??:0
+pstdin+0x1
+??:0
+foo+0x2
+??:0
+EOF
+
+# Repeat testfile64 in 64-bit
+testfiles testfile54-64.so testfile54-64.so.debug
+testfiles testfile54-64.prelink.so testfile54-64.noshdrs.so
+tempfiles testmaps54-64
+
+# Note we have no testfile54-64.noshdrs.so.debug link here, so
+# this is testing finding the symbols in .dynsym via PT_DYNAMIC.
+
+cat > testmaps54-64 <<EOF
+1000000000-1000001000 r--p 00000000 fd:11 1 `pwd`/testfile54-64.so
+1000001000-1000200000 ---p 00001000 fd:11 1 `pwd`/testfile54-64.so
+1000200000-1000201000 rw-p 00000000 fd:11 1 `pwd`/testfile54-64.so
+3000000000-3000001000 r--p 00000000 fd:11 2 `pwd`/testfile54-64.prelink.so
+3000001000-3000200000 ---p 00001000 fd:11 2 `pwd`/testfile54-64.prelink.so
+3000200000-3000201000 rw-p 00000000 fd:11 2 `pwd`/testfile54-64.prelink.so
+3800000000-3800001000 r--p 00000000 fd:11 3 `pwd`/testfile54-64.noshdrs.so
+3800001000-3800200000 ---p 00001000 fd:11 3 `pwd`/testfile54-64.noshdrs.so
+3800200000-3800201000 rw-p 00000000 fd:11 3 `pwd`/testfile54-64.noshdrs.so
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -S -M testmaps54-64 \
+    0x10000002f8 0x1000200448 0x30000002f9 0x3000200449 0x38000002fa <<\EOF
+foo
+??:0
+pstdin
+??:0
+foo+0x1
+??:0
+pstdin+0x1
+??:0
+foo+0x2
+??:0
+EOF
+
+
+# testfile55.c:
+#   extern void *stdin;
+#   int main() { return !stdin; }
+#
+# gcc -m32 -g testfile55-32.c -o testfile55-32
+# eu-strip -f testfile55-32.debug testfile55-32
+# cp testfile55-32 testfile55-32.prelink
+# prelink -N testfile55-32.prelink
+testfiles testfile55-32 testfile55-32.debug testfile55-32.prelink
+
+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
+/home/jistone/src/elfutils/tests/testfile55-32.c:2
+EOF
+
+# 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 ${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
+/home/jistone/src/elfutils/tests/testfile55-32.c:2
+EOF
+
+# Repeat testfile55 in 64-bit
+testfiles testfile55-64 testfile55-64.debug testfile55-64.prelink
+
+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 ${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
+/home/jistone/src/elfutils/tests/testfile55-64.c:2
+EOF
diff --git a/src/tests/run-ranlib-test.sh b/src/tests/run-ranlib-test.sh
new file mode 100755
index 0000000..0b34cbb
--- /dev/null
+++ b/src/tests/run-ranlib-test.sh
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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
+
+tempfiles ranlib-test.a ranlib-test.a-copy
+
+cat > ranlib-test.a <<"EOF"
+!<arch>
+foo/            1124128960  500   500   100664  4         `
+foo
+bar/            1124128965  500   500   100664  4         `
+bar
+EOF
+
+cp ranlib-test.a ranlib-test.a-copy
+
+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
+
+exit 0
diff --git a/src/tests/run-ranlib-test2.sh b/src/tests/run-ranlib-test2.sh
new file mode 100755
index 0000000..dbc57ec
--- /dev/null
+++ b/src/tests/run-ranlib-test2.sh
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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
+
+original=${original:-testfile19}
+indexed=${indexed:-testfile19.index}
+
+testfiles $original $indexed
+
+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
+  # out, we do the same here.
+  echo "            " |
+  dd of=$original seek=24 bs=1 count=12 conv=notrunc 2>/dev/null
+fi
+
+cmp $original $indexed
+
+exit 0
diff --git a/src/tests/run-ranlib-test3.sh b/src/tests/run-ranlib-test3.sh
new file mode 100755
index 0000000..1fc21cd
--- /dev/null
+++ b/src/tests/run-ranlib-test3.sh
@@ -0,0 +1,22 @@
+#! /bin/sh
+# Copyright (C) 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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/>.
+
+
+original=testfile20
+indexed=testfile20.index
+. $srcdir/run-ranlib-test2.sh
diff --git a/src/tests/run-ranlib-test4.sh b/src/tests/run-ranlib-test4.sh
new file mode 100755
index 0000000..8070415
--- /dev/null
+++ b/src/tests/run-ranlib-test4.sh
@@ -0,0 +1,23 @@
+#! /bin/sh
+# Copyright (C) 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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/>.
+
+
+original=testfile21
+indexed=testfile21.index
+noindex=1
+. $srcdir/run-ranlib-test2.sh
diff --git a/src/tests/run-readelf-A.sh b/src/tests/run-readelf-A.sh
new file mode 100755
index 0000000..6ca9be8
--- /dev/null
+++ b/src/tests/run-readelf-A.sh
@@ -0,0 +1,65 @@
+#! /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-addrcfi.sh for testfilearm.
+
+# = testfileppc32attrs.s =
+# .gnu_attribute 8,1
+# .gnu_attribute 12,1
+#
+# gcc -m32 -c testfileppc32attrs.s
+
+testfiles testfilearm testfileppc32attrs.o
+
+testrun_compare ${abs_top_builddir}/src/readelf -A testfilearm <<\EOF
+
+Object attributes section [27] '.ARM.attributes' of 53 bytes at offset 0x718:
+  Owner          Size
+  aeabi            52
+    File:          42
+      CPU_name: 7-A
+      CPU_arch: v7
+      CPU_arch_profile: Application
+      ARM_ISA_use: Yes
+      THUMB_ISA_use: Thumb-2
+      VFP_arch: VFPv3-D16
+      ABI_PCS_wchar_t: 4
+      ABI_FP_rounding: Needed
+      ABI_FP_denormal: Needed
+      ABI_FP_exceptions: Needed
+      ABI_FP_number_model: IEEE 754
+      ABI_align8_needed: Yes
+      ABI_align8_preserved: Yes, except leaf SP
+      ABI_enum_size: int
+      ABI_HardFP_use: SP and DP
+      ABI_VFP_args: VFP registers
+      CPU_unaligned_access: v6
+EOF
+
+testrun_compare ${abs_top_builddir}/src/readelf -A testfileppc32attrs.o <<\EOF
+
+Object attributes section [ 4] '.gnu.attributes' of 18 bytes at offset 0x34:
+  Owner          Size
+  gnu              17
+    File:           9
+      GNU_Power_ABI_Vector: Generic
+      GNU_Power_ABI_Struct_Return: r3/r4
+EOF
+
+exit 0
diff --git a/src/tests/run-readelf-aranges.sh b/src/tests/run-readelf-aranges.sh
new file mode 100755
index 0000000..3fc3c54
--- /dev/null
+++ b/src/tests/run-readelf-aranges.sh
@@ -0,0 +1,161 @@
+#! /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
diff --git a/src/tests/run-readelf-d.sh b/src/tests/run-readelf-d.sh
new file mode 100755
index 0000000..d0b6ed2
--- /dev/null
+++ b/src/tests/run-readelf-d.sh
@@ -0,0 +1,70 @@
+#! /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
+
+# #include <stdio.h>
+# 
+# __thread int i;
+# 
+# void print_i ()
+# {
+#   printf("%d\n", i);
+# }
+#
+# gcc -fPIC -shared -o testlib_dynseg.so testlib_dynseg.c
+# With ld --version
+# GNU gold (GNU Binutils 2.22.52.20120402) 1.11
+
+testfiles testlib_dynseg.so
+
+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'
+  Type              Value
+  PLTGOT            0x00000000000019c8
+  PLTRELSZ          72 (bytes)
+  JMPREL            0x0000000000000568
+  PLTREL            RELA
+  RELA              0x00000000000004d8
+  RELASZ            144 (bytes)
+  RELAENT           24 (bytes)
+  RELACOUNT         1
+  SYMTAB            0x0000000000000228
+  SYMENT            24 (bytes)
+  STRTAB            0x0000000000000360
+  STRSZ             190 (bytes)
+  GNU_HASH          0x0000000000000420
+  NEEDED            Shared library: [libc.so.6]
+  NEEDED            Shared library: [ld-linux-x86-64.so.2]
+  INIT              0x00000000000005b0
+  FINI              0x0000000000000748
+  VERSYM            0x0000000000000460
+  VERDEF            0x000000000000047c
+  VERDEFNUM         1
+  VERNEED           0x0000000000000498
+  VERNEEDNUM        2
+  NULL              
+  NULL              
+  NULL              
+  NULL              
+  NULL              
+  NULL              
+EOF
+
+exit 0
diff --git a/src/tests/run-readelf-dwz-multi.sh b/src/tests/run-readelf-dwz-multi.sh
new file mode 100755
index 0000000..27e0f38
--- /dev/null
+++ b/src/tests/run-readelf-dwz-multi.sh
@@ -0,0 +1,332 @@
+#! /bin/sh
+# 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/>.
+
+. $srcdir/test-subr.sh
+
+# common.h
+#
+# #include <stdio.h>
+#
+# struct foobar
+# {
+#   int foo;
+#   struct foobar *bar;
+# };
+#
+# extern int call_foo(struct foobar *foobar_struct_ptr);
+
+# main.c
+#
+# #include "common.h"
+#
+# int main(int argc, char ** argv)
+# {
+#   struct foobar b;
+#   b.foo = 42;
+#   b.bar = &b;
+#
+#   return call_foo(b.bar);
+# }
+
+# shared.c
+#
+# #include "common.h"
+#
+# int call_foo(struct foobar *fb)
+# {
+#   return fb->bar->foo - 42;
+# }
+
+# gcc -fPIC -g -c -Wall shared.c
+# gcc -shared -o libtestfile_multi_shared.so shared.o
+# 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
+
+# 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]
+ 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
+mv .dwz/testfile_multi.dwz .
+rmdir .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
+
+# 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
diff --git a/src/tests/run-readelf-gdb_index.sh b/src/tests/run-readelf-gdb_index.sh
new file mode 100755
index 0000000..fcbc3c5
--- /dev/null
+++ b/src/tests/run-readelf-gdb_index.sh
@@ -0,0 +1,130 @@
+#! /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
+
+# common.h
+# struct foo
+# {
+#   const char *bar;
+# };
+#
+# extern char *global;
+# int say (struct foo *prefix);
+
+# hello.c
+# #include "common.h"
+#
+# static char *hello = "Hello";
+#
+# int
+# main (int argc, char **argv)
+# {
+#   struct foo baz;
+#   global = hello;
+#   baz.bar = global;
+#   return say(&baz);
+# }
+
+# world.c
+# #include "common.h"
+#
+# char *global;
+#
+# static int hello (const char *bar)
+# {
+#   return bar == global;
+# }
+#
+# int
+# say (struct foo *prefix)
+# {
+#   return hello (prefix->bar);
+# }
+
+# gcc -g -fdebug-types-section -c hello.c
+# gcc -g -fdebug-types-section -c world.c
+# gcc -g -fdebug-types-section -o testfilegdbindex7 hello.o world.o
+# gdb testfilegdbindex7
+# (gdb) save gdb-index .
+# objcopy --add-section .gdb_index=testfilegdbindex7.gdb-index --set-section-flags .gdb_index=readonly testfilegdbindex7 testfilegdbindex7
+
+testfiles testfilegdbindex5 testfilegdbindex7
+
+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
+ CU offset:       0x18
+ TU offset:       0x38
+ address offset:  0x50
+ symbol offset:   0x78
+ constant offset: 0x2078
+
+ CU list at offset 0x18 contains 2 entries:
+ [   0] start: 00000000, length:   184
+ [   1] start: 0x0000b8, length:   204
+
+ TU list at offset 0x38 contains 1 entries:
+ [   0] CU offset:     0, type offset:    29, signature: 0x87e03f92cc37cdf0
+
+ Address list at offset 0x50 contains 2 entries:
+ [   0] 0x000000000040049c <main>..0x00000000004004d1 <main+0x35>, CU index:     0
+ [   1] 0x00000000004004d4 <hello>..0x000000000040050b <say+0x1c>, CU index:     1
+
+ Symbol table at offset 0x50 contains 1024 slots:
+ [ 123] symbol: global, CUs: 1
+ [ 489] symbol: main, CUs: 0
+ [ 518] symbol: char, CUs: 0
+ [ 661] symbol: foo, CUs: 0T
+ [ 741] symbol: hello, CUs: 0, 1
+ [ 746] symbol: say, CUs: 1
+ [ 754] symbol: int, CUs: 0
+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
+ CU offset:       0x18
+ TU offset:       0x38
+ address offset:  0x50
+ symbol offset:   0x78
+ constant offset: 0x2078
+
+ CU list at offset 0x18 contains 2 entries:
+ [   0] start: 00000000, length:   184
+ [   1] start: 0x0000b8, length:   204
+
+ TU list at offset 0x38 contains 1 entries:
+ [   0] CU offset:     0, type offset:    29, signature: 0x87e03f92cc37cdf0
+
+ Address list at offset 0x50 contains 2 entries:
+ [   0] 0x000000000040049c <main>..0x00000000004004d1 <main+0x35>, CU index:     0
+ [   1] 0x00000000004004d4 <hello>..0x000000000040050b <say+0x1c>, CU index:     1
+
+ Symbol table at offset 0x50 contains 1024 slots:
+ [ 123] symbol: global, CUs: 1 (var:G)
+ [ 489] symbol: main, CUs: 0 (func:G)
+ [ 518] symbol: char, CUs: 0 (type:S)
+ [ 661] symbol: foo, CUs: 0T (type:S)
+ [ 741] symbol: hello, CUs: 0 (var:S), 1 (func:S)
+ [ 746] symbol: say, CUs: 1 (func:G)
+ [ 754] symbol: int, CUs: 0 (type:S)
+EOF
+
+exit 0
diff --git a/src/tests/run-readelf-line.sh b/src/tests/run-readelf-line.sh
new file mode 100755
index 0000000..32bcf9d
--- /dev/null
+++ b/src/tests/run-readelf-line.sh
@@ -0,0 +1,259 @@
+#! /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
diff --git a/src/tests/run-readelf-loc.sh b/src/tests/run-readelf-loc.sh
new file mode 100755
index 0000000..98870fc
--- /dev/null
+++ b/src/tests/run-readelf-loc.sh
@@ -0,0 +1,109 @@
+#! /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
diff --git a/src/tests/run-readelf-macro.sh b/src/tests/run-readelf-macro.sh
new file mode 100755
index 0000000..8693203
--- /dev/null
+++ b/src/tests/run-readelf-macro.sh
@@ -0,0 +1,345 @@
+#! /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
+
+# common.h
+# #define ONE 1
+# #define TWO 2
+# #define THREE 3
+#
+# #define WORLD "World"
+#
+# int say (const char *prefix);
+#
+# #define A 'a'
+# #define B b
+# #define C "C"
+#
+# #ifdef THREE
+# #undef THREE
+# #define THREE(ARG1,ARG2,ARG3) ARG3
+# #endif
+
+# hello.c
+# #include "common.h"
+#
+# int
+# main (int argc, char **argv)
+# {
+#   return say (WORLD);
+# }
+
+# world.c
+# #include "common.h"
+#
+# int
+# say (const char *prefix)
+# {
+#   return prefix ? ONE : TWO;
+# }
+
+# gcc -g3 -c hello.c
+# gcc -g3 -c world.c
+# gcc -g3 -o testfilemacro hello.o world.o
+
+testfiles testfilemacro
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=macro testfilemacro <<\EOF
+
+DWARF section [32] '.debug_macro' at offset 0x2480:
+
+ Offset:             0x0
+ Version:            4
+ Flag:               0x2
+ Offset length:      4
+ .debug_line offset: 0x0
+
+ #include offset 0x1a
+ start_file 0, [1] /home/mark/src/tests/hello.c
+  start_file 1, [2] /home/mark/src/tests/common.h
+   #include offset 0x582
+  end_file
+ end_file
+
+ Offset:             0x1a
+ 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__ 7, line 1 (indirect)
+ #define __GNUC_PATCHLEVEL__ 1, line 1 (indirect)
+ #define __VERSION__ "4.7.1 20120629 (Red Hat 4.7.1-1)", line 1 (indirect)
+ #define __GNUC_RH_RELEASE__ 1, 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 __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 __NO_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 __k8 1, line 1 (indirect)
+ #define __k8__ 1, line 1 (indirect)
+ #define __MMX__ 1, line 1 (indirect)
+ #define __SSE__ 1, line 1 (indirect)
+ #define __SSE2__ 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)
+
+ Offset:             0x582
+ Version:            4
+ Flag:               0x0
+ Offset length:      4
+
+ #define ONE 1, line 1 (indirect)
+ #define TWO 2, line 2 (indirect)
+ #define THREE 3, line 3 (indirect)
+ #define WORLD "World", line 5 (indirect)
+ #define A 'a', line 9 (indirect)
+ #define B b, line 10
+ #define C "C", line 11 (indirect)
+ #undef THREE, line 14 (indirect)
+ #define THREE(ARG1,ARG2,ARG3) ARG3, line 15 (indirect)
+
+ Offset:             0x5bc
+ Version:            4
+ Flag:               0x2
+ Offset length:      4
+ .debug_line offset: 0x47
+
+ #include offset 0x1a
+ start_file 0, [1] /home/mark/src/tests/world.c
+  start_file 1, [2] /home/mark/src/tests/common.h
+   #include offset 0x582
+  end_file
+ end_file
+
+EOF
+
+exit 0
diff --git a/src/tests/run-readelf-mixed-corenote.sh b/src/tests/run-readelf-mixed-corenote.sh
new file mode 100755
index 0000000..01e4594
--- /dev/null
+++ b/src/tests/run-readelf-mixed-corenote.sh
@@ -0,0 +1,493 @@
+#! /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
diff --git a/src/tests/run-readelf-s.sh b/src/tests/run-readelf-s.sh
new file mode 100755
index 0000000..59407d1
--- /dev/null
+++ b/src/tests/run-readelf-s.sh
@@ -0,0 +1,378 @@
+#! /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
diff --git a/src/tests/run-readelf-self.sh b/src/tests/run-readelf-self.sh
new file mode 100755
index 0000000..7ffb357
--- /dev/null
+++ b/src/tests/run-readelf-self.sh
@@ -0,0 +1,21 @@
+#! /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
+
+# Just makes sure readelf doesn't crash
+testrun_on_self_quiet ${abs_top_builddir}/src/readelf -a -w
diff --git a/src/tests/run-readelf-test1.sh b/src/tests/run-readelf-test1.sh
new file mode 100755
index 0000000..4725049
--- /dev/null
+++ b/src/tests/run-readelf-test1.sh
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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
+
+original=${original:-testfile11}
+stripped=${stripped:-testfile7}
+debugout=${debugfile:+-f testfile.debug.temp -F $debugfile}
+
+testfiles testfile3
+
+tempfiles testfile.temp
+
+testrun ${abs_top_builddir}/src/readelf -r testfile3 > testfile.temp
+
+diff -u - testfile.temp <<EOF
+
+Relocation section [ 8] '.rel.got' for section [19] '.got' at offset 0x294 contains 1 entry:
+  Offset      Type                 Value       Name
+  0x08049544  386_GLOB_DAT         0000000000  __gmon_start__
+
+Relocation section [ 9] '.rel.plt' for section [11] '.plt' at offset 0x29c contains 4 entries:
+  Offset      Type                 Value       Name
+  0x08049534  386_JMP_SLOT         0x080482e4  __register_frame_info
+  0x08049538  386_JMP_SLOT         0x080482f4  __deregister_frame_info
+  0x0804953c  386_JMP_SLOT         0x08048304  __libc_start_main
+  0x08049540  386_JMP_SLOT         0x08048314  __cxa_finalize
+EOF
+
+exit 0
diff --git a/src/tests/run-readelf-test2.sh b/src/tests/run-readelf-test2.sh
new file mode 100755
index 0000000..9030624
--- /dev/null
+++ b/src/tests/run-readelf-test2.sh
@@ -0,0 +1,28 @@
+#! /bin/sh
+# Copyright (C) 2007 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 testfile28
+
+testrun_compare ${abs_top_builddir}/src/readelf -x .strtab testfile28 <<\EOF
+
+Hex dump of section [6] '.strtab', 1 bytes at offset 0x290:
+  0x00000000 00                                  .
+EOF
+
+exit 0
diff --git a/src/tests/run-readelf-test3.sh b/src/tests/run-readelf-test3.sh
new file mode 100755
index 0000000..cc0a191
--- /dev/null
+++ b/src/tests/run-readelf-test3.sh
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 2007 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 testfile40.debug
+
+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
+  GNU                   20  GNU_BUILD_ID
+    Build ID: 34072edcd87ef6728f4b4a7956167b2fcfc3f1d3
+  Linux                  4  <unknown>: 0
+EOF
+
+exit 0
diff --git a/src/tests/run-readelf-test4.sh b/src/tests/run-readelf-test4.sh
new file mode 100755
index 0000000..ca0526a
--- /dev/null
+++ b/src/tests/run-readelf-test4.sh
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 2007 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 testfile19.index
+
+testrun_compare ${abs_top_builddir}/src/readelf -c testfile19.index <<\EOF
+
+Index of archive 'testfile19.index' has 4 entries:
+Archive member 'u1.o' contains:
+	a
+Archive member 'u2.o' contains:
+	aa
+Archive member 'u3.o' contains:
+	a
+EOF
+
+exit 0
diff --git a/src/tests/run-readelf-twofiles.sh b/src/tests/run-readelf-twofiles.sh
new file mode 100755
index 0000000..46eec7b
--- /dev/null
+++ b/src/tests/run-readelf-twofiles.sh
@@ -0,0 +1,24 @@
+#! /bin/sh
+# Copyright (C) 2011 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 testfile14
+
+testrun >/dev/null ${abs_top_builddir}/src/readelf -w testfile14 testfile14
+
+exit 0
diff --git a/src/tests/run-readelf-vmcoreinfo.sh b/src/tests/run-readelf-vmcoreinfo.sh
new file mode 100755
index 0000000..b1732fc
--- /dev/null
+++ b/src/tests/run-readelf-vmcoreinfo.sh
@@ -0,0 +1,114 @@
+#! /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
diff --git a/src/tests/run-readelf-zdebug.sh b/src/tests/run-readelf-zdebug.sh
new file mode 100755
index 0000000..37cf7ea
--- /dev/null
+++ b/src/tests/run-readelf-zdebug.sh
@@ -0,0 +1,539 @@
+#! /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
+
+
diff --git a/src/tests/run-rerequest_tag.sh b/src/tests/run-rerequest_tag.sh
new file mode 100755
index 0000000..f437284
--- /dev/null
+++ b/src/tests/run-rerequest_tag.sh
@@ -0,0 +1,25 @@
+#! /bin/sh
+# Copyright (C) 2011 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 testfile56 testfile57
+
+testrun ${abs_builddir}/rerequest_tag testfile56
+testrun ${abs_builddir}/rerequest_tag testfile57
+
+exit 0
diff --git a/src/tests/run-show-abbrev.sh b/src/tests/run-show-abbrev.sh
new file mode 100755
index 0000000..40d0e36
--- /dev/null
+++ b/src/tests/run-show-abbrev.sh
@@ -0,0 +1,352 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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}/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
+abbrev[0]: attr[2]: code = 17, form = 1, offset = 4
+abbrev[0]: attr[3]: code = 3, form = 8, offset = 6
+abbrev[0]: attr[4]: code = 27, form = 8, offset = 8
+abbrev[0]: attr[5]: code = 37, form = 8, offset = 10
+abbrev[0]: attr[6]: code = 19, form = 11, offset = 12
+abbrev[19]: code = 2, tag = 46, children = 1
+abbrev[19]: attr[0]: code = 1, form = 19, offset = 19
+abbrev[19]: attr[1]: code = 63, form = 12, offset = 21
+abbrev[19]: attr[2]: code = 3, form = 8, offset = 23
+abbrev[19]: attr[3]: code = 58, form = 11, offset = 25
+abbrev[19]: attr[4]: code = 59, form = 11, offset = 27
+abbrev[19]: attr[5]: code = 39, form = 12, offset = 29
+abbrev[19]: attr[6]: code = 73, form = 19, offset = 31
+abbrev[19]: attr[7]: code = 17, form = 1, offset = 33
+abbrev[19]: attr[8]: code = 18, form = 1, offset = 35
+abbrev[19]: attr[9]: code = 64, form = 10, offset = 37
+abbrev[44]: code = 3, tag = 46, children = 1
+abbrev[44]: attr[0]: code = 1, form = 19, offset = 44
+abbrev[44]: attr[1]: code = 63, form = 12, offset = 46
+abbrev[44]: attr[2]: code = 3, form = 8, offset = 48
+abbrev[44]: attr[3]: code = 58, form = 11, offset = 50
+abbrev[44]: attr[4]: code = 59, form = 11, offset = 52
+abbrev[44]: attr[5]: code = 73, form = 19, offset = 54
+abbrev[44]: attr[6]: code = 60, form = 12, offset = 56
+abbrev[63]: code = 4, tag = 24, children = 0
+abbrev[68]: code = 5, tag = 46, children = 1
+abbrev[68]: attr[0]: code = 63, form = 12, offset = 68
+abbrev[68]: attr[1]: code = 3, form = 8, offset = 70
+abbrev[68]: attr[2]: code = 58, form = 11, offset = 72
+abbrev[68]: attr[3]: code = 59, form = 11, offset = 74
+abbrev[68]: attr[4]: code = 73, form = 19, offset = 76
+abbrev[68]: attr[5]: code = 60, form = 12, offset = 78
+abbrev[85]: code = 6, tag = 36, children = 0
+abbrev[85]: attr[0]: code = 3, form = 8, offset = 85
+abbrev[85]: attr[1]: code = 11, form = 11, offset = 87
+abbrev[85]: attr[2]: code = 62, form = 11, offset = 89
+abbrev[96]: code = 7, tag = 52, children = 0
+abbrev[96]: attr[0]: code = 3, form = 8, offset = 96
+abbrev[96]: attr[1]: code = 58, form = 11, offset = 98
+abbrev[96]: attr[2]: code = 59, form = 11, offset = 100
+abbrev[96]: attr[3]: code = 73, form = 19, offset = 102
+abbrev[96]: attr[4]: code = 63, form = 12, offset = 104
+abbrev[96]: attr[5]: code = 2, form = 10, offset = 106
+abbrev[0]: code = 1, tag = 17, children = 1
+abbrev[0]: attr[0]: code = 16, form = 6, offset = 114
+abbrev[0]: attr[1]: code = 18, form = 1, offset = 116
+abbrev[0]: attr[2]: code = 17, form = 1, offset = 118
+abbrev[0]: attr[3]: code = 3, form = 8, offset = 120
+abbrev[0]: attr[4]: code = 27, form = 8, offset = 122
+abbrev[0]: attr[5]: code = 37, form = 8, offset = 124
+abbrev[0]: attr[6]: code = 19, form = 11, offset = 126
+abbrev[19]: code = 2, tag = 46, children = 0
+abbrev[19]: attr[0]: code = 63, form = 12, offset = 133
+abbrev[19]: attr[1]: code = 3, form = 8, offset = 135
+abbrev[19]: attr[2]: code = 58, form = 11, offset = 137
+abbrev[19]: attr[3]: code = 59, form = 11, offset = 139
+abbrev[19]: attr[4]: code = 39, form = 12, offset = 141
+abbrev[19]: attr[5]: code = 73, form = 19, offset = 143
+abbrev[19]: attr[6]: code = 17, form = 1, offset = 145
+abbrev[19]: attr[7]: code = 18, form = 1, offset = 147
+abbrev[19]: attr[8]: code = 64, form = 10, offset = 149
+abbrev[42]: code = 3, tag = 36, children = 0
+abbrev[42]: attr[0]: code = 3, form = 8, offset = 156
+abbrev[42]: attr[1]: code = 11, form = 11, offset = 158
+abbrev[42]: attr[2]: code = 62, form = 11, offset = 160
+abbrev[53]: code = 4, tag = 22, children = 0
+abbrev[53]: attr[0]: code = 3, form = 8, offset = 167
+abbrev[53]: attr[1]: code = 58, form = 11, offset = 169
+abbrev[53]: attr[2]: code = 59, form = 11, offset = 171
+abbrev[53]: attr[3]: code = 73, form = 19, offset = 173
+abbrev[66]: code = 5, tag = 15, children = 0
+abbrev[66]: attr[0]: code = 11, form = 11, offset = 180
+abbrev[73]: code = 6, tag = 15, children = 0
+abbrev[73]: attr[0]: code = 11, form = 11, offset = 187
+abbrev[73]: attr[1]: code = 73, form = 19, offset = 189
+abbrev[82]: code = 7, tag = 19, children = 1
+abbrev[82]: attr[0]: code = 1, form = 19, offset = 196
+abbrev[82]: attr[1]: code = 11, form = 11, offset = 198
+abbrev[82]: attr[2]: code = 58, form = 11, offset = 200
+abbrev[82]: attr[3]: code = 59, form = 11, offset = 202
+abbrev[95]: code = 8, tag = 13, children = 0
+abbrev[95]: attr[0]: code = 3, form = 8, offset = 209
+abbrev[95]: attr[1]: code = 58, form = 11, offset = 211
+abbrev[95]: attr[2]: code = 59, form = 11, offset = 213
+abbrev[95]: attr[3]: code = 73, form = 19, offset = 215
+abbrev[95]: attr[4]: code = 56, form = 10, offset = 217
+abbrev[110]: code = 9, tag = 1, children = 1
+abbrev[110]: attr[0]: code = 1, form = 19, offset = 224
+abbrev[110]: attr[1]: code = 73, form = 19, offset = 226
+abbrev[119]: code = 10, tag = 33, children = 0
+abbrev[119]: attr[0]: code = 73, form = 19, offset = 233
+abbrev[119]: attr[1]: code = 47, form = 11, offset = 235
+abbrev[128]: code = 11, tag = 19, children = 1
+abbrev[128]: attr[0]: code = 1, form = 19, offset = 242
+abbrev[128]: attr[1]: code = 3, form = 8, offset = 244
+abbrev[128]: attr[2]: code = 11, form = 11, offset = 246
+abbrev[128]: attr[3]: code = 58, form = 11, offset = 248
+abbrev[128]: attr[4]: code = 59, form = 11, offset = 250
+abbrev[143]: code = 12, tag = 19, children = 0
+abbrev[143]: attr[0]: code = 3, form = 8, offset = 257
+abbrev[143]: attr[1]: code = 60, form = 12, offset = 259
+abbrev[152]: code = 13, tag = 13, children = 0
+abbrev[152]: attr[0]: code = 3, form = 8, offset = 266
+abbrev[152]: attr[1]: code = 58, form = 11, offset = 268
+abbrev[152]: attr[2]: code = 59, form = 5, offset = 270
+abbrev[152]: attr[3]: code = 73, form = 19, offset = 272
+abbrev[152]: attr[4]: code = 56, form = 10, offset = 274
+abbrev[167]: code = 14, tag = 22, children = 0
+abbrev[167]: attr[0]: code = 3, form = 8, offset = 281
+abbrev[167]: attr[1]: code = 58, form = 11, offset = 283
+abbrev[167]: attr[2]: code = 59, form = 5, offset = 285
+abbrev[167]: attr[3]: code = 73, form = 19, offset = 287
+abbrev[180]: code = 15, tag = 23, children = 1
+abbrev[180]: attr[0]: code = 1, form = 19, offset = 294
+abbrev[180]: attr[1]: code = 11, form = 11, offset = 296
+abbrev[180]: attr[2]: code = 58, form = 11, offset = 298
+abbrev[180]: attr[3]: code = 59, form = 11, offset = 300
+abbrev[193]: code = 16, tag = 13, children = 0
+abbrev[193]: attr[0]: code = 3, form = 8, offset = 307
+abbrev[193]: attr[1]: code = 58, form = 11, offset = 309
+abbrev[193]: attr[2]: code = 59, form = 11, offset = 311
+abbrev[193]: attr[3]: code = 73, form = 19, offset = 313
+abbrev[206]: code = 17, tag = 4, children = 1
+abbrev[206]: attr[0]: code = 1, form = 19, offset = 320
+abbrev[206]: attr[1]: code = 11, form = 11, offset = 322
+abbrev[206]: attr[2]: code = 58, form = 11, offset = 324
+abbrev[206]: attr[3]: code = 59, form = 11, offset = 326
+abbrev[219]: code = 18, tag = 40, children = 0
+abbrev[219]: attr[0]: code = 3, form = 8, offset = 333
+abbrev[219]: attr[1]: code = 28, form = 11, offset = 335
+abbrev[228]: code = 19, tag = 38, children = 0
+abbrev[228]: attr[0]: code = 73, form = 19, offset = 342
+abbrev[235]: code = 20, tag = 21, children = 1
+abbrev[235]: attr[0]: code = 1, form = 19, offset = 349
+abbrev[235]: attr[1]: code = 39, form = 12, offset = 351
+abbrev[235]: attr[2]: code = 73, form = 19, offset = 353
+abbrev[246]: code = 21, tag = 5, children = 0
+abbrev[246]: attr[0]: code = 73, form = 19, offset = 360
+abbrev[253]: code = 22, tag = 21, children = 1
+abbrev[253]: attr[0]: code = 1, form = 19, offset = 367
+abbrev[253]: attr[1]: code = 39, form = 12, offset = 369
+abbrev[262]: code = 23, tag = 33, children = 0
+abbrev[262]: attr[0]: code = 73, form = 19, offset = 376
+abbrev[262]: attr[1]: code = 47, form = 6, offset = 378
+abbrev[271]: code = 24, tag = 22, children = 0
+abbrev[271]: attr[0]: code = 3, form = 8, offset = 385
+abbrev[271]: attr[1]: code = 58, form = 11, offset = 387
+abbrev[271]: attr[2]: code = 59, form = 11, offset = 389
+abbrev[282]: code = 25, tag = 4, children = 1
+abbrev[282]: attr[0]: code = 1, form = 19, offset = 396
+abbrev[282]: attr[1]: code = 3, form = 8, offset = 398
+abbrev[282]: attr[2]: code = 11, form = 11, offset = 400
+abbrev[282]: attr[3]: code = 58, form = 11, offset = 402
+abbrev[282]: attr[4]: code = 59, form = 11, offset = 404
+abbrev[0]: code = 1, tag = 17, children = 1
+abbrev[0]: attr[0]: code = 16, form = 6, offset = 412
+abbrev[0]: attr[1]: code = 18, form = 1, offset = 414
+abbrev[0]: attr[2]: code = 17, form = 1, offset = 416
+abbrev[0]: attr[3]: code = 3, form = 8, offset = 418
+abbrev[0]: attr[4]: code = 27, form = 8, offset = 420
+abbrev[0]: attr[5]: code = 37, form = 8, offset = 422
+abbrev[0]: attr[6]: code = 19, form = 11, offset = 424
+abbrev[19]: code = 2, tag = 46, children = 0
+abbrev[19]: attr[0]: code = 63, form = 12, offset = 431
+abbrev[19]: attr[1]: code = 3, form = 8, offset = 433
+abbrev[19]: attr[2]: code = 58, form = 11, offset = 435
+abbrev[19]: attr[3]: code = 59, form = 11, offset = 437
+abbrev[19]: attr[4]: code = 39, form = 12, offset = 439
+abbrev[19]: attr[5]: code = 73, form = 19, offset = 441
+abbrev[19]: attr[6]: code = 17, form = 1, offset = 443
+abbrev[19]: attr[7]: code = 18, form = 1, offset = 445
+abbrev[19]: attr[8]: code = 64, form = 10, offset = 447
+abbrev[42]: code = 3, tag = 36, children = 0
+abbrev[42]: attr[0]: code = 3, form = 8, offset = 454
+abbrev[42]: attr[1]: code = 11, form = 11, offset = 456
+abbrev[42]: attr[2]: code = 62, form = 11, offset = 458
+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
+abbrev[0]: attr[2]: code = 17, form = 1, offset = 4
+abbrev[0]: attr[3]: code = 3, form = 8, offset = 6
+abbrev[0]: attr[4]: code = 27, form = 8, offset = 8
+abbrev[0]: attr[5]: code = 37, form = 8, offset = 10
+abbrev[0]: attr[6]: code = 19, form = 11, offset = 12
+abbrev[19]: code = 2, tag = 46, children = 0
+abbrev[19]: attr[0]: code = 63, form = 12, offset = 19
+abbrev[19]: attr[1]: code = 3, form = 8, offset = 21
+abbrev[19]: attr[2]: code = 58, form = 11, offset = 23
+abbrev[19]: attr[3]: code = 59, form = 11, offset = 25
+abbrev[19]: attr[4]: code = 39, form = 12, offset = 27
+abbrev[19]: attr[5]: code = 73, form = 19, offset = 29
+abbrev[19]: attr[6]: code = 17, form = 1, offset = 31
+abbrev[19]: attr[7]: code = 18, form = 1, offset = 33
+abbrev[19]: attr[8]: code = 64, form = 10, offset = 35
+abbrev[42]: code = 3, tag = 36, children = 0
+abbrev[42]: attr[0]: code = 3, form = 8, offset = 42
+abbrev[42]: attr[1]: code = 11, form = 11, offset = 44
+abbrev[42]: attr[2]: code = 62, form = 11, offset = 46
+abbrev[53]: code = 4, tag = 22, children = 0
+abbrev[53]: attr[0]: code = 3, form = 8, offset = 53
+abbrev[53]: attr[1]: code = 58, form = 11, offset = 55
+abbrev[53]: attr[2]: code = 59, form = 11, offset = 57
+abbrev[53]: attr[3]: code = 73, form = 19, offset = 59
+abbrev[66]: code = 5, tag = 1, children = 1
+abbrev[66]: attr[0]: code = 1, form = 19, offset = 66
+abbrev[66]: attr[1]: code = 3, form = 8, offset = 68
+abbrev[66]: attr[2]: code = 73, form = 19, offset = 70
+abbrev[77]: code = 6, tag = 33, children = 0
+abbrev[77]: attr[0]: code = 73, form = 19, offset = 77
+abbrev[77]: attr[1]: code = 47, form = 11, offset = 79
+abbrev[86]: code = 7, tag = 19, children = 1
+abbrev[86]: attr[0]: code = 1, form = 19, offset = 86
+abbrev[86]: attr[1]: code = 3, form = 8, offset = 88
+abbrev[86]: attr[2]: code = 11, form = 11, offset = 90
+abbrev[86]: attr[3]: code = 58, form = 11, offset = 92
+abbrev[86]: attr[4]: code = 59, form = 11, offset = 94
+abbrev[101]: code = 8, tag = 13, children = 0
+abbrev[101]: attr[0]: code = 3, form = 8, offset = 101
+abbrev[101]: attr[1]: code = 58, form = 11, offset = 103
+abbrev[101]: attr[2]: code = 59, form = 11, offset = 105
+abbrev[101]: attr[3]: code = 73, form = 19, offset = 107
+abbrev[101]: attr[4]: code = 56, form = 10, offset = 109
+abbrev[116]: code = 9, tag = 15, children = 0
+abbrev[116]: attr[0]: code = 11, form = 11, offset = 116
+abbrev[123]: code = 10, tag = 15, children = 0
+abbrev[123]: attr[0]: code = 11, form = 11, offset = 123
+abbrev[123]: attr[1]: code = 73, form = 19, offset = 125
+abbrev[132]: code = 11, tag = 19, children = 1
+abbrev[132]: attr[0]: code = 1, form = 19, offset = 132
+abbrev[132]: attr[1]: code = 11, form = 11, offset = 134
+abbrev[132]: attr[2]: code = 58, form = 11, offset = 136
+abbrev[132]: attr[3]: code = 59, form = 11, offset = 138
+abbrev[145]: code = 12, tag = 1, children = 1
+abbrev[145]: attr[0]: code = 1, form = 19, offset = 145
+abbrev[145]: attr[1]: code = 73, form = 19, offset = 147
+abbrev[154]: code = 13, tag = 22, children = 0
+abbrev[154]: attr[0]: code = 3, form = 8, offset = 154
+abbrev[154]: attr[1]: code = 58, form = 11, offset = 156
+abbrev[154]: attr[2]: code = 59, form = 5, offset = 158
+abbrev[154]: attr[3]: code = 73, form = 19, offset = 160
+abbrev[167]: code = 14, tag = 19, children = 0
+abbrev[167]: attr[0]: code = 3, form = 8, offset = 167
+abbrev[167]: attr[1]: code = 60, form = 12, offset = 169
+abbrev[176]: code = 15, tag = 22, children = 0
+abbrev[176]: attr[0]: code = 3, form = 8, offset = 176
+abbrev[176]: attr[1]: code = 58, form = 11, offset = 178
+abbrev[176]: attr[2]: code = 59, form = 11, offset = 180
+abbrev[187]: code = 16, tag = 21, children = 1
+abbrev[187]: attr[0]: code = 1, form = 19, offset = 187
+abbrev[187]: attr[1]: code = 39, form = 12, offset = 189
+abbrev[187]: attr[2]: code = 73, form = 19, offset = 191
+abbrev[198]: code = 17, tag = 5, children = 0
+abbrev[198]: attr[0]: code = 73, form = 19, offset = 198
+abbrev[205]: code = 18, tag = 38, children = 0
+abbrev[205]: attr[0]: code = 73, form = 19, offset = 205
+abbrev[0]: code = 1, tag = 17, children = 1
+abbrev[0]: attr[0]: code = 16, form = 6, offset = 213
+abbrev[0]: attr[1]: code = 18, form = 1, offset = 215
+abbrev[0]: attr[2]: code = 17, form = 1, offset = 217
+abbrev[0]: attr[3]: code = 3, form = 8, offset = 219
+abbrev[0]: attr[4]: code = 27, form = 8, offset = 221
+abbrev[0]: attr[5]: code = 37, form = 8, offset = 223
+abbrev[0]: attr[6]: code = 19, form = 11, offset = 225
+abbrev[19]: code = 2, tag = 46, children = 0
+abbrev[19]: attr[0]: code = 63, form = 12, offset = 232
+abbrev[19]: attr[1]: code = 3, form = 8, offset = 234
+abbrev[19]: attr[2]: code = 58, form = 11, offset = 236
+abbrev[19]: attr[3]: code = 59, form = 11, offset = 238
+abbrev[19]: attr[4]: code = 39, form = 12, offset = 240
+abbrev[19]: attr[5]: code = 73, form = 19, offset = 242
+abbrev[19]: attr[6]: code = 17, form = 1, offset = 244
+abbrev[19]: attr[7]: code = 18, form = 1, offset = 246
+abbrev[19]: attr[8]: code = 64, form = 10, offset = 248
+abbrev[42]: code = 3, tag = 36, children = 0
+abbrev[42]: attr[0]: code = 3, form = 8, offset = 255
+abbrev[42]: attr[1]: code = 11, form = 11, offset = 257
+abbrev[42]: attr[2]: code = 62, form = 11, offset = 259
+abbrev[0]: code = 1, tag = 17, children = 1
+abbrev[0]: attr[0]: code = 16, form = 6, offset = 267
+abbrev[0]: attr[1]: code = 18, form = 1, offset = 269
+abbrev[0]: attr[2]: code = 17, form = 1, offset = 271
+abbrev[0]: attr[3]: code = 3, form = 8, offset = 273
+abbrev[0]: attr[4]: code = 27, form = 8, offset = 275
+abbrev[0]: attr[5]: code = 37, form = 8, offset = 277
+abbrev[0]: attr[6]: code = 19, form = 11, offset = 279
+abbrev[19]: code = 2, tag = 46, children = 1
+abbrev[19]: attr[0]: code = 1, form = 19, offset = 286
+abbrev[19]: attr[1]: code = 63, form = 12, offset = 288
+abbrev[19]: attr[2]: code = 3, form = 8, offset = 290
+abbrev[19]: attr[3]: code = 58, form = 11, offset = 292
+abbrev[19]: attr[4]: code = 59, form = 11, offset = 294
+abbrev[19]: attr[5]: code = 39, form = 12, offset = 296
+abbrev[19]: attr[6]: code = 73, form = 19, offset = 298
+abbrev[19]: attr[7]: code = 17, form = 1, offset = 300
+abbrev[19]: attr[8]: code = 18, form = 1, offset = 302
+abbrev[19]: attr[9]: code = 64, form = 10, offset = 304
+abbrev[44]: code = 3, tag = 46, children = 1
+abbrev[44]: attr[0]: code = 1, form = 19, offset = 311
+abbrev[44]: attr[1]: code = 63, form = 12, offset = 313
+abbrev[44]: attr[2]: code = 3, form = 8, offset = 315
+abbrev[44]: attr[3]: code = 58, form = 11, offset = 317
+abbrev[44]: attr[4]: code = 59, form = 11, offset = 319
+abbrev[44]: attr[5]: code = 73, form = 19, offset = 321
+abbrev[44]: attr[6]: code = 60, form = 12, offset = 323
+abbrev[63]: code = 4, tag = 24, children = 0
+abbrev[68]: code = 5, tag = 46, children = 1
+abbrev[68]: attr[0]: code = 63, form = 12, offset = 335
+abbrev[68]: attr[1]: code = 3, form = 8, offset = 337
+abbrev[68]: attr[2]: code = 58, form = 11, offset = 339
+abbrev[68]: attr[3]: code = 59, form = 11, offset = 341
+abbrev[68]: attr[4]: code = 73, form = 19, offset = 343
+abbrev[68]: attr[5]: code = 60, form = 12, offset = 345
+abbrev[85]: code = 6, tag = 36, children = 0
+abbrev[85]: attr[0]: code = 3, form = 8, offset = 352
+abbrev[85]: attr[1]: code = 11, form = 11, offset = 354
+abbrev[85]: attr[2]: code = 62, form = 11, offset = 356
+abbrev[96]: code = 7, tag = 52, children = 0
+abbrev[96]: attr[0]: code = 3, form = 8, offset = 363
+abbrev[96]: attr[1]: code = 58, form = 11, offset = 365
+abbrev[96]: attr[2]: code = 59, form = 11, offset = 367
+abbrev[96]: attr[3]: code = 73, form = 19, offset = 369
+abbrev[96]: attr[4]: code = 63, form = 12, offset = 371
+abbrev[96]: attr[5]: code = 2, form = 10, offset = 373
+EOF
+
+exit 0
diff --git a/src/tests/run-show-die-info.sh b/src/tests/run-show-die-info.sh
new file mode 100755
index 0000000..f92ee48
--- /dev/null
+++ b/src/tests/run-show-die-info.sh
@@ -0,0 +1,985 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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 testfile5 testfile2
+
+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
+      Name      : b.c
+      Offset    : 11
+      CU offset : 11
+      Attrs     : name stmt_list low_pc high_pc language comp_dir producer
+      low PC    : 0x804842c
+      high PC   : 0x8048436
+      language  : 1
+      directory : /home/drepper/gnu/new-bu/build/ttt
+      producer  : GNU C 2.96 20000731 (Red Hat Linux 7.0)
+          DW_TAG_subprogram
+           Name      : bar
+           Offset    : 104
+           CU offset : 104
+           Attrs     : name low_pc high_pc prototyped decl_file decl_line external frame_base type
+           low PC    : 0x804842c
+           high PC   : 0x8048436
+          DW_TAG_base_type
+           Name      : int
+           Offset    : 127
+           CU offset : 127
+           Attrs     : name byte_size encoding
+           byte size : 4
+New CU: off = 135, hsize = 11, ab = 54, as = 4, os = 4
+     DW_TAG_compile_unit
+      Name      : f.c
+      Offset    : 146
+      CU offset : 11
+      Attrs     : name stmt_list low_pc high_pc language comp_dir producer
+      low PC    : 0x8048438
+      high PC   : 0x8048442
+      language  : 1
+      directory : /home/drepper/gnu/new-bu/build/ttt
+      producer  : GNU C 2.96 20000731 (Red Hat Linux 7.0)
+          DW_TAG_subprogram
+           Name      : foo
+           Offset    : 239
+           CU offset : 104
+           Attrs     : name low_pc high_pc prototyped decl_file decl_line external frame_base type
+           low PC    : 0x8048438
+           high PC   : 0x8048442
+          DW_TAG_base_type
+           Name      : int
+           Offset    : 262
+           CU offset : 127
+           Attrs     : name byte_size encoding
+           byte size : 4
+New CU: off = 270, hsize = 11, ab = 108, as = 4, os = 4
+     DW_TAG_compile_unit
+      Name      : m.c
+      Offset    : 281
+      CU offset : 11
+      Attrs     : name stmt_list low_pc high_pc language comp_dir producer
+      low PC    : 0x8048444
+      high PC   : 0x8048472
+      language  : 1
+      directory : /home/drepper/gnu/new-bu/build/ttt
+      producer  : GNU C 2.96 20000731 (Red Hat Linux 7.0)
+          DW_TAG_subprogram
+           Name      : main
+           Offset    : 374
+           CU offset : 104
+           Attrs     : sibling name low_pc high_pc prototyped decl_file decl_line external frame_base type
+           low PC    : 0x8048444
+           high PC   : 0x8048472
+               DW_TAG_subprogram
+                Name      : bar
+                Offset    : 402
+                CU offset : 132
+                Attrs     : sibling name decl_file decl_line declaration external type
+                    DW_TAG_unspecified_parameters
+                     Name      : * NO NAME *
+                     Offset    : 419
+                     CU offset : 149
+                     Attrs     :
+               DW_TAG_subprogram
+                Name      : foo
+                Offset    : 421
+                CU offset : 151
+                Attrs     : name decl_file decl_line declaration external type
+                    DW_TAG_unspecified_parameters
+                     Name      : * NO NAME *
+                     Offset    : 434
+                     CU offset : 164
+                     Attrs     :
+          DW_TAG_base_type
+           Name      : int
+           Offset    : 437
+           CU offset : 167
+           Attrs     : name byte_size encoding
+           byte size : 4
+          DW_TAG_variable
+           Name      : a
+           Offset    : 444
+           CU offset : 174
+           Attrs     : location name decl_file decl_line external type
+file: testfile2
+New CU: off = 0, hsize = 11, ab = 0, as = 4, os = 4
+     DW_TAG_compile_unit
+      Name      : b.c
+      Offset    : 11
+      CU offset : 11
+      Attrs     : name stmt_list low_pc high_pc language comp_dir producer
+      low PC    : 0x10000470
+      high PC   : 0x10000490
+      language  : 1
+      directory : /shoggoth/drepper
+      producer  : GNU C 2.96-laurel-000912
+          DW_TAG_subprogram
+           Name      : bar
+           Offset    : 72
+           CU offset : 72
+           Attrs     : name low_pc high_pc prototyped decl_file decl_line external frame_base type
+           low PC    : 0x10000470
+           high PC   : 0x10000490
+          DW_TAG_base_type
+           Name      : int
+           Offset    : 95
+           CU offset : 95
+           Attrs     : name byte_size encoding
+           byte size : 4
+          DW_TAG_typedef
+           Name      : size_t
+           Offset    : 102
+           CU offset : 102
+           Attrs     : name decl_file decl_line type
+          DW_TAG_base_type
+           Name      : unsigned int
+           Offset    : 116
+           CU offset : 116
+           Attrs     : name byte_size encoding
+           byte size : 4
+          DW_TAG_typedef
+           Name      : __gnuc_va_list
+           Offset    : 132
+           CU offset : 132
+           Attrs     : name decl_file decl_line type
+          DW_TAG_array_type
+           Name      : __builtin_va_list
+           Offset    : 154
+           CU offset : 154
+           Attrs     : sibling name type
+               DW_TAG_subrange_type
+                Name      : * NO NAME *
+                Offset    : 181
+                CU offset : 181
+                Attrs     : upper_bound type
+          DW_TAG_base_type
+           Name      : unsigned int
+           Offset    : 188
+           CU offset : 188
+           Attrs     : name byte_size encoding
+           byte size : 4
+          DW_TAG_structure_type
+           Name      : __va_list_tag
+           Offset    : 204
+           CU offset : 204
+           Attrs     : sibling name byte_size decl_file decl_line
+           byte size : 12
+               DW_TAG_member
+                Name      : gpr
+                Offset    : 226
+                CU offset : 226
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : fpr
+                Offset    : 240
+                CU offset : 240
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : overflow_arg_area
+                Offset    : 254
+                CU offset : 254
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : reg_save_area
+                Offset    : 282
+                CU offset : 282
+                Attrs     : name data_member_location decl_file decl_line type
+          DW_TAG_base_type
+           Name      : unsigned char
+           Offset    : 307
+           CU offset : 307
+           Attrs     : name byte_size encoding
+           byte size : 1
+          DW_TAG_pointer_type
+           Name      : * NO NAME *
+           Offset    : 324
+           CU offset : 324
+           Attrs     : byte_size
+           byte size : 4
+          DW_TAG_typedef
+           Name      : __u_char
+           Offset    : 326
+           CU offset : 326
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __u_short
+           Offset    : 342
+           CU offset : 342
+           Attrs     : name decl_file decl_line type
+          DW_TAG_base_type
+           Name      : short unsigned int
+           Offset    : 359
+           CU offset : 359
+           Attrs     : name byte_size encoding
+           byte size : 2
+          DW_TAG_typedef
+           Name      : __u_int
+           Offset    : 381
+           CU offset : 381
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __u_long
+           Offset    : 396
+           CU offset : 396
+           Attrs     : name decl_file decl_line type
+          DW_TAG_base_type
+           Name      : long unsigned int
+           Offset    : 412
+           CU offset : 412
+           Attrs     : name byte_size encoding
+           byte size : 4
+          DW_TAG_typedef
+           Name      : __u_quad_t
+           Offset    : 433
+           CU offset : 433
+           Attrs     : name decl_file decl_line type
+          DW_TAG_base_type
+           Name      : long long unsigned int
+           Offset    : 451
+           CU offset : 451
+           Attrs     : name byte_size encoding
+           byte size : 8
+          DW_TAG_typedef
+           Name      : __quad_t
+           Offset    : 477
+           CU offset : 477
+           Attrs     : name decl_file decl_line type
+          DW_TAG_base_type
+           Name      : long long int
+           Offset    : 493
+           CU offset : 493
+           Attrs     : name byte_size encoding
+           byte size : 8
+          DW_TAG_typedef
+           Name      : __int8_t
+           Offset    : 510
+           CU offset : 510
+           Attrs     : name decl_file decl_line type
+          DW_TAG_base_type
+           Name      : signed char
+           Offset    : 526
+           CU offset : 526
+           Attrs     : name byte_size encoding
+           byte size : 1
+          DW_TAG_typedef
+           Name      : __uint8_t
+           Offset    : 541
+           CU offset : 541
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __int16_t
+           Offset    : 558
+           CU offset : 558
+           Attrs     : name decl_file decl_line type
+          DW_TAG_base_type
+           Name      : short int
+           Offset    : 575
+           CU offset : 575
+           Attrs     : name byte_size encoding
+           byte size : 2
+          DW_TAG_typedef
+           Name      : __uint16_t
+           Offset    : 588
+           CU offset : 588
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __int32_t
+           Offset    : 606
+           CU offset : 606
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __uint32_t
+           Offset    : 623
+           CU offset : 623
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __int64_t
+           Offset    : 641
+           CU offset : 641
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __uint64_t
+           Offset    : 658
+           CU offset : 658
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __qaddr_t
+           Offset    : 676
+           CU offset : 676
+           Attrs     : name decl_file decl_line type
+          DW_TAG_pointer_type
+           Name      : * NO NAME *
+           Offset    : 693
+           CU offset : 693
+           Attrs     : byte_size type
+           byte size : 4
+          DW_TAG_typedef
+           Name      : __dev_t
+           Offset    : 699
+           CU offset : 699
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __uid_t
+           Offset    : 714
+           CU offset : 714
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __gid_t
+           Offset    : 729
+           CU offset : 729
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __ino_t
+           Offset    : 744
+           CU offset : 744
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __mode_t
+           Offset    : 759
+           CU offset : 759
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __nlink_t
+           Offset    : 775
+           CU offset : 775
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __off_t
+           Offset    : 792
+           CU offset : 792
+           Attrs     : name decl_file decl_line type
+          DW_TAG_base_type
+           Name      : long int
+           Offset    : 807
+           CU offset : 807
+           Attrs     : name byte_size encoding
+           byte size : 4
+          DW_TAG_typedef
+           Name      : __loff_t
+           Offset    : 819
+           CU offset : 819
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __pid_t
+           Offset    : 835
+           CU offset : 835
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __ssize_t
+           Offset    : 850
+           CU offset : 850
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __rlim_t
+           Offset    : 867
+           CU offset : 867
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __rlim64_t
+           Offset    : 883
+           CU offset : 883
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __id_t
+           Offset    : 901
+           CU offset : 901
+           Attrs     : name decl_file decl_line type
+          DW_TAG_structure_type
+           Name      : * NO NAME *
+           Offset    : 915
+           CU offset : 915
+           Attrs     : sibling byte_size decl_file decl_line
+           byte size : 8
+               DW_TAG_member
+                Name      : __val
+                Offset    : 923
+                CU offset : 923
+                Attrs     : name data_member_location decl_file decl_line type
+          DW_TAG_array_type
+           Name      : * NO NAME *
+           Offset    : 940
+           CU offset : 940
+           Attrs     : sibling type
+               DW_TAG_subrange_type
+                Name      : * NO NAME *
+                Offset    : 949
+                CU offset : 949
+                Attrs     : upper_bound type
+          DW_TAG_typedef
+           Name      : __fsid_t
+           Offset    : 956
+           CU offset : 956
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __daddr_t
+           Offset    : 972
+           CU offset : 972
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __caddr_t
+           Offset    : 989
+           CU offset : 989
+           Attrs     : name decl_file decl_line type
+          DW_TAG_pointer_type
+           Name      : * NO NAME *
+           Offset    : 1006
+           CU offset : 1006
+           Attrs     : byte_size type
+           byte size : 4
+          DW_TAG_base_type
+           Name      : char
+           Offset    : 1012
+           CU offset : 1012
+           Attrs     : name byte_size encoding
+           byte size : 1
+          DW_TAG_typedef
+           Name      : __time_t
+           Offset    : 1020
+           CU offset : 1020
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __swblk_t
+           Offset    : 1036
+           CU offset : 1036
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __clock_t
+           Offset    : 1053
+           CU offset : 1053
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __fd_mask
+           Offset    : 1070
+           CU offset : 1070
+           Attrs     : name decl_file decl_line type
+          DW_TAG_structure_type
+           Name      : * NO NAME *
+           Offset    : 1087
+           CU offset : 1087
+           Attrs     : sibling byte_size decl_file decl_line
+           byte size : 128
+               DW_TAG_member
+                Name      : __fds_bits
+                Offset    : 1095
+                CU offset : 1095
+                Attrs     : name data_member_location decl_file decl_line type
+          DW_TAG_array_type
+           Name      : * NO NAME *
+           Offset    : 1117
+           CU offset : 1117
+           Attrs     : sibling type
+               DW_TAG_subrange_type
+                Name      : * NO NAME *
+                Offset    : 1126
+                CU offset : 1126
+                Attrs     : upper_bound type
+          DW_TAG_typedef
+           Name      : __fd_set
+           Offset    : 1133
+           CU offset : 1133
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __key_t
+           Offset    : 1149
+           CU offset : 1149
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __ipc_pid_t
+           Offset    : 1164
+           CU offset : 1164
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __blkcnt_t
+           Offset    : 1183
+           CU offset : 1183
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __blkcnt64_t
+           Offset    : 1201
+           CU offset : 1201
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __fsblkcnt_t
+           Offset    : 1221
+           CU offset : 1221
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __fsblkcnt64_t
+           Offset    : 1241
+           CU offset : 1241
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __fsfilcnt_t
+           Offset    : 1263
+           CU offset : 1263
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __fsfilcnt64_t
+           Offset    : 1283
+           CU offset : 1283
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __ino64_t
+           Offset    : 1305
+           CU offset : 1305
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __off64_t
+           Offset    : 1322
+           CU offset : 1322
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __t_scalar_t
+           Offset    : 1339
+           CU offset : 1339
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __t_uscalar_t
+           Offset    : 1359
+           CU offset : 1359
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : __intptr_t
+           Offset    : 1380
+           CU offset : 1380
+           Attrs     : name decl_file decl_line type
+          DW_TAG_structure_type
+           Name      : _IO_FILE
+           Offset    : 1398
+           CU offset : 1398
+           Attrs     : sibling name byte_size decl_file decl_line
+           byte size : 152
+               DW_TAG_member
+                Name      : _flags
+                Offset    : 1415
+                CU offset : 1415
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_read_ptr
+                Offset    : 1432
+                CU offset : 1432
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_read_end
+                Offset    : 1455
+                CU offset : 1455
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_read_base
+                Offset    : 1478
+                CU offset : 1478
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_write_base
+                Offset    : 1502
+                CU offset : 1502
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_write_ptr
+                Offset    : 1527
+                CU offset : 1527
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_write_end
+                Offset    : 1551
+                CU offset : 1551
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_buf_base
+                Offset    : 1575
+                CU offset : 1575
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_buf_end
+                Offset    : 1598
+                CU offset : 1598
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_save_base
+                Offset    : 1620
+                CU offset : 1620
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_backup_base
+                Offset    : 1644
+                CU offset : 1644
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _IO_save_end
+                Offset    : 1670
+                CU offset : 1670
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _markers
+                Offset    : 1693
+                CU offset : 1693
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _chain
+                Offset    : 1712
+                CU offset : 1712
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _fileno
+                Offset    : 1729
+                CU offset : 1729
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _blksize
+                Offset    : 1747
+                CU offset : 1747
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _old_offset
+                Offset    : 1766
+                CU offset : 1766
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _cur_column
+                Offset    : 1788
+                CU offset : 1788
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _vtable_offset
+                Offset    : 1810
+                CU offset : 1810
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _shortbuf
+                Offset    : 1835
+                CU offset : 1835
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _lock
+                Offset    : 1855
+                CU offset : 1855
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _offset
+                Offset    : 1871
+                CU offset : 1871
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _unused2
+                Offset    : 1889
+                CU offset : 1889
+                Attrs     : name data_member_location decl_file decl_line type
+          DW_TAG_structure_type
+           Name      : _IO_marker
+           Offset    : 1909
+           CU offset : 1909
+           Attrs     : sibling name byte_size decl_file decl_line
+           byte size : 12
+               DW_TAG_member
+                Name      : _next
+                Offset    : 1928
+                CU offset : 1928
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _sbuf
+                Offset    : 1944
+                CU offset : 1944
+                Attrs     : name data_member_location decl_file decl_line type
+               DW_TAG_member
+                Name      : _pos
+                Offset    : 1960
+                CU offset : 1960
+                Attrs     : name data_member_location decl_file decl_line type
+          DW_TAG_pointer_type
+           Name      : * NO NAME *
+           Offset    : 1976
+           CU offset : 1976
+           Attrs     : byte_size type
+           byte size : 4
+          DW_TAG_pointer_type
+           Name      : * NO NAME *
+           Offset    : 1982
+           CU offset : 1982
+           Attrs     : byte_size type
+           byte size : 4
+          DW_TAG_array_type
+           Name      : * NO NAME *
+           Offset    : 1988
+           CU offset : 1988
+           Attrs     : sibling type
+               DW_TAG_subrange_type
+                Name      : * NO NAME *
+                Offset    : 1997
+                CU offset : 1997
+                Attrs     : upper_bound type
+          DW_TAG_pointer_type
+           Name      : * NO NAME *
+           Offset    : 2004
+           CU offset : 2004
+           Attrs     : byte_size
+           byte size : 4
+          DW_TAG_array_type
+           Name      : * NO NAME *
+           Offset    : 2006
+           CU offset : 2006
+           Attrs     : sibling type
+               DW_TAG_subrange_type
+                Name      : * NO NAME *
+                Offset    : 2015
+                CU offset : 2015
+                Attrs     : upper_bound type
+          DW_TAG_typedef
+           Name      : FILE
+           Offset    : 2022
+           CU offset : 2022
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : wchar_t
+           Offset    : 2034
+           CU offset : 2034
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : wint_t
+           Offset    : 2050
+           CU offset : 2050
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : _G_int16_t
+           Offset    : 2065
+           CU offset : 2065
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : _G_int32_t
+           Offset    : 2083
+           CU offset : 2083
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : _G_uint16_t
+           Offset    : 2101
+           CU offset : 2101
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : _G_uint32_t
+           Offset    : 2120
+           CU offset : 2120
+           Attrs     : name decl_file decl_line type
+          DW_TAG_structure_type
+           Name      : _IO_jump_t
+           Offset    : 2139
+           CU offset : 2139
+           Attrs     : name declaration
+          DW_TAG_typedef
+           Name      : _IO_lock_t
+           Offset    : 2152
+           CU offset : 2152
+           Attrs     : name decl_file decl_line
+          DW_TAG_typedef
+           Name      : _IO_FILE
+           Offset    : 2166
+           CU offset : 2166
+           Attrs     : name decl_file decl_line type
+          DW_TAG_structure_type
+           Name      : _IO_FILE_plus
+           Offset    : 2182
+           CU offset : 2182
+           Attrs     : name declaration
+          DW_TAG_typedef
+           Name      : __io_read_fn
+           Offset    : 2198
+           CU offset : 2198
+           Attrs     : name decl_file decl_line type
+          DW_TAG_subroutine_type
+           Name      : * NO NAME *
+           Offset    : 2219
+           CU offset : 2219
+           Attrs     : sibling prototyped type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2229
+                CU offset : 2229
+                Attrs     : type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2234
+                CU offset : 2234
+                Attrs     : type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2239
+                CU offset : 2239
+                Attrs     : type
+          DW_TAG_typedef
+           Name      : __io_write_fn
+           Offset    : 2245
+           CU offset : 2245
+           Attrs     : name decl_file decl_line type
+          DW_TAG_subroutine_type
+           Name      : * NO NAME *
+           Offset    : 2267
+           CU offset : 2267
+           Attrs     : sibling prototyped type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2277
+                CU offset : 2277
+                Attrs     : type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2282
+                CU offset : 2282
+                Attrs     : type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2287
+                CU offset : 2287
+                Attrs     : type
+          DW_TAG_pointer_type
+           Name      : * NO NAME *
+           Offset    : 2293
+           CU offset : 2293
+           Attrs     : byte_size type
+           byte size : 4
+          DW_TAG_const_type
+           Name      : * NO NAME *
+           Offset    : 2299
+           CU offset : 2299
+           Attrs     : type
+          DW_TAG_typedef
+           Name      : __io_seek_fn
+           Offset    : 2304
+           CU offset : 2304
+           Attrs     : name decl_file decl_line type
+          DW_TAG_subroutine_type
+           Name      : * NO NAME *
+           Offset    : 2325
+           CU offset : 2325
+           Attrs     : sibling prototyped type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2335
+                CU offset : 2335
+                Attrs     : type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2340
+                CU offset : 2340
+                Attrs     : type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2345
+                CU offset : 2345
+                Attrs     : type
+          DW_TAG_typedef
+           Name      : __io_close_fn
+           Offset    : 2351
+           CU offset : 2351
+           Attrs     : name decl_file decl_line type
+          DW_TAG_subroutine_type
+           Name      : * NO NAME *
+           Offset    : 2373
+           CU offset : 2373
+           Attrs     : sibling prototyped type
+               DW_TAG_formal_parameter
+                Name      : * NO NAME *
+                Offset    : 2383
+                CU offset : 2383
+                Attrs     : type
+          DW_TAG_typedef
+           Name      : fpos_t
+           Offset    : 2389
+           CU offset : 2389
+           Attrs     : name decl_file decl_line type
+          DW_TAG_typedef
+           Name      : off_t
+           Offset    : 2403
+           CU offset : 2403
+           Attrs     : name decl_file decl_line type
+New CU: off = 2418, hsize = 11, ab = 213, as = 4, os = 4
+     DW_TAG_compile_unit
+      Name      : f.c
+      Offset    : 2429
+      CU offset : 11
+      Attrs     : name stmt_list low_pc high_pc language comp_dir producer
+      low PC    : 0x10000490
+      high PC   : 0x100004b0
+      language  : 1
+      directory : /shoggoth/drepper
+      producer  : GNU C 2.96-laurel-000912
+          DW_TAG_subprogram
+           Name      : foo
+           Offset    : 2490
+           CU offset : 72
+           Attrs     : name low_pc high_pc prototyped decl_file decl_line external frame_base type
+           low PC    : 0x10000490
+           high PC   : 0x100004b0
+          DW_TAG_base_type
+           Name      : int
+           Offset    : 2513
+           CU offset : 95
+           Attrs     : name byte_size encoding
+           byte size : 4
+New CU: off = 2521, hsize = 11, ab = 267, as = 4, os = 4
+     DW_TAG_compile_unit
+      Name      : m.c
+      Offset    : 2532
+      CU offset : 11
+      Attrs     : name stmt_list low_pc high_pc language comp_dir producer
+      low PC    : 0x100004b0
+      high PC   : 0x10000514
+      language  : 1
+      directory : /shoggoth/drepper
+      producer  : GNU C 2.96-laurel-000912
+          DW_TAG_subprogram
+           Name      : main
+           Offset    : 2593
+           CU offset : 72
+           Attrs     : sibling name low_pc high_pc prototyped decl_file decl_line external frame_base type
+           low PC    : 0x100004b0
+           high PC   : 0x10000514
+               DW_TAG_subprogram
+                Name      : bar
+                Offset    : 2621
+                CU offset : 100
+                Attrs     : sibling name decl_file decl_line declaration external type
+                    DW_TAG_unspecified_parameters
+                     Name      : * NO NAME *
+                     Offset    : 2638
+                     CU offset : 117
+                     Attrs     :
+               DW_TAG_subprogram
+                Name      : foo
+                Offset    : 2640
+                CU offset : 119
+                Attrs     : name decl_file decl_line declaration external type
+                    DW_TAG_unspecified_parameters
+                     Name      : * NO NAME *
+                     Offset    : 2653
+                     CU offset : 132
+                     Attrs     :
+          DW_TAG_base_type
+           Name      : int
+           Offset    : 2656
+           CU offset : 135
+           Attrs     : name byte_size encoding
+           byte size : 4
+          DW_TAG_variable
+           Name      : a
+           Offset    : 2663
+           CU offset : 142
+           Attrs     : location name decl_file decl_line external type
+EOF
+
+exit 0
diff --git a/src/tests/run-stack-d-test.sh b/src/tests/run-stack-d-test.sh
new file mode 100755
index 0000000..040c2fa
--- /dev/null
+++ b/src/tests/run-stack-d-test.sh
@@ -0,0 +1,112 @@
+#! /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
diff --git a/src/tests/run-stack-i-test.sh b/src/tests/run-stack-i-test.sh
new file mode 100755
index 0000000..2d09ec0
--- /dev/null
+++ b/src/tests/run-stack-i-test.sh
@@ -0,0 +1,70 @@
+#! /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
diff --git a/src/tests/run-strings-test.sh b/src/tests/run-strings-test.sh
new file mode 100755
index 0000000..33f2d64
--- /dev/null
+++ b/src/tests/run-strings-test.sh
@@ -0,0 +1,470 @@
+#! /bin/sh
+# Copyright (C) 2005, 2006, 2008 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
+#
+# 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
+
+files="testfile `seq 2 9 | while read n; do echo testfile$n; done`"
+testfiles $files
+
+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
+testfile:     1e2 __cxa_finalize
+testfile:     1f1 __deregister_frame_info
+testfile:     209 _IO_stdin_used
+testfile:     218 __libc_start_main
+testfile:     22a __register_frame_info
+testfile:     240 GLIBC_2.1.3
+testfile:     24c GLIBC_2.0
+testfile:     338 PTRh
+testfile:     345 QVh,
+testfile2:     114 /lib/ld.so.1
+testfile2:     1f1 __gmon_start__
+testfile2:     200 __deregister_frame_info
+testfile2:     218 __register_frame_info
+testfile2:     22e libc.so.6
+testfile2:     238 __cxa_finalize
+testfile2:     247 _IO_stdin_used
+testfile2:     256 __libc_start_main
+testfile2:     268 GLIBC_2.1.3
+testfile2:     274 GLIBC_2.0
+testfile2:     488 }a[xN
+testfile2:     4a8 }a[xN
+testfile2:     50c }a[xN
+testfile2:     540 }?Kx
+testfile3:      f4 /lib/ld-linux.so.2
+testfile3:     1c9 __gmon_start__
+testfile3:     1d8 libc.so.6
+testfile3:     1e2 __cxa_finalize
+testfile3:     1f1 __deregister_frame_info
+testfile3:     209 _IO_stdin_used
+testfile3:     218 __libc_start_main
+testfile3:     22a __register_frame_info
+testfile3:     240 GLIBC_2.1.3
+testfile3:     24c GLIBC_2.0
+testfile3:     338 PTRh
+testfile3:     345 QVh,
+testfile4:      f4 /lib/ld-linux.so.2
+testfile4:     8e1 __gmon_start__
+testfile4:     8f0 __terminate_func
+testfile4:     901 stderr
+testfile4:     908 __tf9type_info
+testfile4:     917 __tf16__user_type_info
+testfile4:     92e __tf19__pointer_type_info
+testfile4:     948 __tf16__attr_type_info
+testfile4:     95f __tf16__func_type_info
+testfile4:     976 __vt_9type_info
+testfile4:     986 __vt_19__pointer_type_info
+testfile4:     9a1 __vt_16__attr_type_info
+testfile4:     9b9 __vt_16__func_type_info
+testfile4:     9d1 __vt_16__ptmf_type_info
+testfile4:     9e9 __vt_16__ptmd_type_info
+testfile4:     a01 __vt_17__array_type_info
+testfile4:     a1a __tiv
+testfile4:     a20 __vt_19__builtin_type_info
+testfile4:     a3b __tix
+testfile4:     a41 __til
+testfile4:     a47 __tii
+testfile4:     a4d __tis
+testfile4:     a53 __tib
+testfile4:     a59 __tic
+testfile4:     a5f __tiw
+testfile4:     a65 __tir
+testfile4:     a6b __tid
+testfile4:     a71 __tif
+testfile4:     a77 __tiUi
+testfile4:     a7e __tiUl
+testfile4:     a85 __tiUx
+testfile4:     a8c __tiUs
+testfile4:     a93 __tiUc
+testfile4:     a9a __tiSc
+testfile4:     aa1 __ti19__pointer_type_info
+testfile4:     abb __ti9type_info
+testfile4:     aca __ti16__attr_type_info
+testfile4:     ae1 __ti19__builtin_type_info
+testfile4:     afb __ti16__func_type_info
+testfile4:     b12 __ti16__ptmf_type_info
+testfile4:     b29 __ti16__ptmd_type_info
+testfile4:     b40 __ti17__array_type_info
+testfile4:     b58 __cplus_type_matcher
+testfile4:     b6d __vt_13bad_exception
+testfile4:     b82 __vt_9exception
+testfile4:     b92 _._13bad_exception
+testfile4:     ba5 __vt_8bad_cast
+testfile4:     bb4 _._8bad_cast
+testfile4:     bc1 __vt_10bad_typeid
+testfile4:     bd3 _._10bad_typeid
+testfile4:     be3 __ti9exception
+testfile4:     bf2 __ti13bad_exception
+testfile4:     c06 __vt_16__user_type_info
+testfile4:     c1e __vt_17__class_type_info
+testfile4:     c37 __vt_14__si_type_info
+testfile4:     c4d __ti8bad_cast
+testfile4:     c5b __ti10bad_typeid
+testfile4:     c6c __ti16__user_type_info
+testfile4:     c83 __ti14__si_type_info
+testfile4:     c98 __ti17__class_type_info
+testfile4:     cb0 libc.so.6
+testfile4:     cba __register_frame
+testfile4:     ccb pthread_create
+testfile4:     cda pthread_getspecific
+testfile4:     cee pthread_key_delete
+testfile4:     d01 __cxa_finalize
+testfile4:     d10 malloc
+testfile4:     d17 __frame_state_for
+testfile4:     d29 abort
+testfile4:     d2f __register_frame_table
+testfile4:     d46 fprintf
+testfile4:     d4e pthread_once
+testfile4:     d5b __deregister_frame_info
+testfile4:     d73 pthread_key_create
+testfile4:     d86 memset
+testfile4:     d8d strcmp
+testfile4:     d94 pthread_mutex_unlock
+testfile4:     da9 __deregister_frame
+testfile4:     dbc pthread_mutex_lock
+testfile4:     dcf _IO_stdin_used
+testfile4:     dde __libc_start_main
+testfile4:     df0 strlen
+testfile4:     df7 __register_frame_info_table
+testfile4:     e13 __register_frame_info
+testfile4:     e29 pthread_setspecific
+testfile4:     e3d free
+testfile4:     e42 GLIBC_2.1.3
+testfile4:     e4e GLIBC_2.0
+testfile4:    1308 PTRh<
+testfile4:    194b [^_]
+testfile4:    19bf [^_]
+testfile4:    1dd9 wT9L>
+testfile4:    1f3b [^_]
+testfile4:    1fae [^_]
+testfile4:    21c1 BZQRP
+testfile4:    237f [^_]
+testfile4:    2431 JWRV
+testfile4:    2454 [^_]
+testfile4:    2506 JWRV
+testfile4:    2529 [^_]
+testfile4:    2b6c [^_]
+testfile4:    2b9d ZYPV
+testfile4:    2c28 [^_]
+testfile4:    2c4d ZYPV
+testfile4:    2ce2 [^_]
+testfile4:    2dfb X^_]
+testfile4:    2fc8 [^_]
+testfile4:    307d tq;F
+testfile4:    315a [^_]
+testfile4:    31a5 :zt	1
+testfile4:    3238 [^_]
+testfile4:    32f8 AXY_VR
+testfile4:    334a [^_]
+testfile4:    37ab [^_]
+testfile4:    38b8 sU;E
+testfile4:    38f2 QRPV
+testfile4:    3926 [^_]
+testfile4:    3bfe QRWP
+testfile4:    3e65 [^_]
+testfile4:    4136 [^_]
+testfile4:    472d [^_]
+testfile4:    47a5 0[^_]
+testfile4:    48ab [^_]
+testfile4:    4ab1 _ZPV
+testfile4:    4b53 _ZPV
+testfile4:    4bd3 _ZPV
+testfile4:    4e05 PQWj
+testfile4:    4f75 [^_]
+testfile4:    4f9b u$;E u
+testfile4:    4feb [^_]
+testfile4:    5080 [^_]
+testfile4:    50a8 }$9u
+testfile4:    5149 [^_]
+testfile4:    51b0 [^_]
+testfile4:    539b [^_]
+testfile4:    53b5 E 9E
+testfile4:    540d x!)E 
+testfile4:    5598 U$	B
+testfile4:    571c [^_]
+testfile4:    5819 [^_]
+testfile4:    5922 [^_]
+testfile4:    59c2 [^_]
+testfile4:    5a62 [^_]
+testfile4:    5b02 [^_]
+testfile4:    5ba2 [^_]
+testfile4:    5c42 [^_]
+testfile4:    5ce2 [^_]
+testfile4:    6112 [^_]
+testfile4:    62bb [^_]
+testfile4:    639b [^_]
+testfile4:    6436 [^_]
+testfile4:    6468 val is zero
+testfile4:    6480 Internal Compiler Bug: No runtime type matcher.
+testfile4:    64dc 19__pointer_type_info
+testfile4:    64f2 16__attr_type_info
+testfile4:    6505 19__builtin_type_info
+testfile4:    651b 16__func_type_info
+testfile4:    652e 16__ptmf_type_info
+testfile4:    6541 16__ptmd_type_info
+testfile4:    6554 17__array_type_info
+testfile4:    6568 9exception
+testfile4:    6573 13bad_exception
+testfile4:    6583 9type_info
+testfile4:    658e 8bad_cast
+testfile4:    6598 10bad_typeid
+testfile4:    65a5 16__user_type_info
+testfile4:    65b8 14__si_type_info
+testfile4:    65c9 17__class_type_info
+testfile4:    6fc1 H. $
+testfile5:      f4 /lib/ld-linux.so.2
+testfile5:     1c9 __gmon_start__
+testfile5:     1d8 libc.so.6
+testfile5:     1e2 __cxa_finalize
+testfile5:     1f1 __deregister_frame_info
+testfile5:     209 _IO_stdin_used
+testfile5:     218 __libc_start_main
+testfile5:     22a __register_frame_info
+testfile5:     240 GLIBC_2.1.3
+testfile5:     24c GLIBC_2.0
+testfile5:     338 PTRh
+testfile5:     345 QVhD
+testfile6:     114 /lib/ld-linux.so.2
+testfile6:     3d9 libstdc++.so.5
+testfile6:     3e8 _ZTVSt16invalid_argument
+testfile6:     401 _ZNSaIcEC1Ev
+testfile6:     40e _ZTSSt16invalid_argument
+testfile6:     427 _ZTVN10__cxxabiv120__si_class_type_infoE
+testfile6:     450 _ZNSsD1Ev
+testfile6:     45a _ZdlPv
+testfile6:     461 __cxa_end_catch
+testfile6:     471 __gxx_personality_v0
+testfile6:     486 _ZTISt9exception
+testfile6:     497 _ZNSaIcED1Ev
+testfile6:     4a4 _ZTISt11logic_error
+testfile6:     4b8 _ZNSt16invalid_argumentD1Ev
+testfile6:     4d4 _ZTVN10__cxxabiv117__class_type_infoE
+testfile6:     4fa __cxa_throw
+testfile6:     506 _ZNSt16invalid_argumentC1ERKSs
+testfile6:     525 _ZNSsC1EPKcRKSaIcE
+testfile6:     538 _ZNSt11logic_errorD2Ev
+testfile6:     54f _ZTVN10__cxxabiv121__vmi_class_type_infoE
+testfile6:     579 _ZNSt16invalid_argumentD0Ev
+testfile6:     595 __cxa_begin_catch
+testfile6:     5a7 __cxa_allocate_exception
+testfile6:     5c0 _ZNKSt11logic_error4whatEv
+testfile6:     5db _Jv_RegisterClasses
+testfile6:     5ef _ZTISt16invalid_argument
+testfile6:     608 __gmon_start__
+testfile6:     617 libm.so.6
+testfile6:     621 _IO_stdin_used
+testfile6:     630 libgcc_s.so.1
+testfile6:     63e _Unwind_Resume
+testfile6:     64d libc.so.6
+testfile6:     657 __libc_start_main
+testfile6:     669 GCC_3.0
+testfile6:     671 GLIBC_2.0
+testfile6:     67b GLIBCPP_3.2
+testfile6:     687 CXXABI_1.2
+testfile6:     908 PTRh 
+testfile6:     e48 gdb.1
+testfile6:     ec8 N10__gnu_test9gnu_obj_1E
+testfile6:     ee1 N10__gnu_test9gnu_obj_2IiEE
+testfile6:     efd N10__gnu_test9gnu_obj_2IlEE
+testfile6:     f19 St16invalid_argument
+testfile7:     114 /lib/ld-linux.so.2
+testfile7:     3d9 libstdc++.so.5
+testfile7:     3e8 _ZTVSt16invalid_argument
+testfile7:     401 _ZNSaIcEC1Ev
+testfile7:     40e _ZTSSt16invalid_argument
+testfile7:     427 _ZTVN10__cxxabiv120__si_class_type_infoE
+testfile7:     450 _ZNSsD1Ev
+testfile7:     45a _ZdlPv
+testfile7:     461 __cxa_end_catch
+testfile7:     471 __gxx_personality_v0
+testfile7:     486 _ZTISt9exception
+testfile7:     497 _ZNSaIcED1Ev
+testfile7:     4a4 _ZTISt11logic_error
+testfile7:     4b8 _ZNSt16invalid_argumentD1Ev
+testfile7:     4d4 _ZTVN10__cxxabiv117__class_type_infoE
+testfile7:     4fa __cxa_throw
+testfile7:     506 _ZNSt16invalid_argumentC1ERKSs
+testfile7:     525 _ZNSsC1EPKcRKSaIcE
+testfile7:     538 _ZNSt11logic_errorD2Ev
+testfile7:     54f _ZTVN10__cxxabiv121__vmi_class_type_infoE
+testfile7:     579 _ZNSt16invalid_argumentD0Ev
+testfile7:     595 __cxa_begin_catch
+testfile7:     5a7 __cxa_allocate_exception
+testfile7:     5c0 _ZNKSt11logic_error4whatEv
+testfile7:     5db _Jv_RegisterClasses
+testfile7:     5ef _ZTISt16invalid_argument
+testfile7:     608 __gmon_start__
+testfile7:     617 libm.so.6
+testfile7:     621 _IO_stdin_used
+testfile7:     630 libgcc_s.so.1
+testfile7:     63e _Unwind_Resume
+testfile7:     64d libc.so.6
+testfile7:     657 __libc_start_main
+testfile7:     669 GCC_3.0
+testfile7:     671 GLIBC_2.0
+testfile7:     67b GLIBCPP_3.2
+testfile7:     687 CXXABI_1.2
+testfile7:     908 PTRh 
+testfile7:     e48 gdb.1
+testfile7:     ec8 N10__gnu_test9gnu_obj_1E
+testfile7:     ee1 N10__gnu_test9gnu_obj_2IiEE
+testfile7:     efd N10__gnu_test9gnu_obj_2IlEE
+testfile7:     f19 St16invalid_argument
+testfile8:      79 XZh;
+testfile8:      87 YXh<
+testfile8:     14f SQh[
+testfile8:     259 t5Wj
+testfile8:     502 WRVQ
+testfile8:    1fe7 ZYPj
+testfile8:    2115 u'Pj
+testfile8:    7bba FILE
+testfile8:    7bbf preserve-dates
+testfile8:    7bce remove-comment
+testfile8:    7bdd Remove .comment section
+testfile8:    7bf6 ${prefix}/share
+testfile8:    7c06 elfutils
+testfile8:    7c0f a.out
+testfile8:    7c15 0.58
+testfile8:    7c1a strip (Red Hat %s) %s
+testfile8:    7c31 2002
+testfile8:    7c36 Ulrich Drepper
+testfile8:    7c45 Written by %s.
+testfile8:    7c55 cannot stat input file "%s"
+testfile8:    7c71 %s: INTERNAL ERROR: %s
+testfile8:    7c88 while opening "%s"
+testfile8:    7c9b handle_elf
+testfile8:    7ca6 ../../src/strip.c
+testfile8:    7cb8 shdr_info[cnt].group_idx != 0
+testfile8:    7cd6 illformed file `%s'
+testfile8:    7cea elf_ndxscn (scn) == cnt
+testfile8:    7d02 .shstrtab
+testfile8:    7d0c while writing `%s': %s
+testfile8:    7d23 ((sym->st_info) & 0xf) == 3
+testfile8:    7d3f shndxdata != ((void *)0)
+testfile8:    7d58 scn != ((void *)0)
+testfile8:    7d6b .gnu_debuglink
+testfile8:    7d7a .comment
+testfile8:    7d83 cannot open `%s'
+testfile8:    7da0 Place stripped output into FILE
+testfile8:    7dc0 Extract the removed sections into FILE
+testfile8:    7e00 Copy modified/access timestamps to the output
+testfile8:    7e40 Only one input file allowed together with '-o' and '-f'
+testfile8:    7e80 Copyright (C) %s Red Hat, Inc.
+testfile8:    7e9f This is free software; see the source for copying conditions.  There is NO
+testfile8:    7eea warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+testfile8:    7f40 Report bugs to <drepper@redhat.com>.
+testfile8:    7f80 %s: File format not recognized
+testfile8:    7fa0 cannot set access and modification date of "%s"
+testfile8:    7fe0 cannot create new file `%s': %s
+testfile8:    8000 error while finishing `%s': %s
+testfile8:    8020 shdr_info[shdr_info[cnt].shdr.sh_link].version_idx == 0
+testfile8:    8060 shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx == 0
+testfile8:    80a0 %s: error while creating ELF header: %s
+testfile8:    80e0 %s: error while reading the file: %s
+testfile8:    8120 sec < 0xff00 || shndxdata != ((void *)0)
+testfile8:    8160 (versiondata->d_size / sizeof (GElf_Versym)) >= shdr_info[cnt].data->d_size / elsize
+testfile8:    81c0 shdr_info[cnt].shdr.sh_type == 11
+testfile8:    8200 (versiondata->d_size / sizeof (Elf32_Word)) >= shdr_info[cnt].data->d_size / elsize
+testfile8:    8260 shdr_info[cnt].shdr.sh_type == 18
+testfile8:    82a0 shdr_info[cnt].data != ((void *)0)
+testfile8:    82e0 elf_ndxscn (shdr_info[cnt].newscn) == idx
+testfile8:    8320 while create section header section: %s
+testfile8:    8360 cannot allocate section data: %s
+testfile8:    83a0 elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx
+testfile8:    83e0 while generating output file: %s
+testfile8:    8420 while preparing output for `%s'
+testfile8:    8440 shdr_info[cnt].shdr.sh_type == 2
+testfile8:    8480 shdr_info[idx].data != ((void *)0)
+testfile8:    84c0 cannot determine number of sections: %s
+testfile8:    8500 cannot get section header string table index
+testfile8:    85c0 Discard symbols from object files.
+testfile8:    85e3 [FILE...]
+testfile9:      79 XZh;
+testfile9:      87 YXh<
+testfile9:     14f SQh[
+testfile9:     259 t5Wj
+testfile9:     502 WRVQ
+testfile9:    1fe7 ZYPj
+testfile9:    2115 u'Pj
+testfile9:    3414 FILE
+testfile9:    3419 preserve-dates
+testfile9:    3428 remove-comment
+testfile9:    3437 Remove .comment section
+testfile9:    3450 ${prefix}/share
+testfile9:    3460 elfutils
+testfile9:    3469 a.out
+testfile9:    346f 0.58
+testfile9:    3474 strip (Red Hat %s) %s
+testfile9:    348b 2002
+testfile9:    3490 Ulrich Drepper
+testfile9:    349f Written by %s.
+testfile9:    34af cannot stat input file "%s"
+testfile9:    34cb %s: INTERNAL ERROR: %s
+testfile9:    34e2 while opening "%s"
+testfile9:    34f5 handle_elf
+testfile9:    3500 ../../src/strip.c
+testfile9:    3512 shdr_info[cnt].group_idx != 0
+testfile9:    3530 illformed file `%s'
+testfile9:    3544 elf_ndxscn (scn) == cnt
+testfile9:    355c .shstrtab
+testfile9:    3566 while writing `%s': %s
+testfile9:    357d ((sym->st_info) & 0xf) == 3
+testfile9:    3599 shndxdata != ((void *)0)
+testfile9:    35b2 scn != ((void *)0)
+testfile9:    35c5 .gnu_debuglink
+testfile9:    35d4 .comment
+testfile9:    35dd cannot open `%s'
+testfile9:    3600 Place stripped output into FILE
+testfile9:    3620 Extract the removed sections into FILE
+testfile9:    3660 Copy modified/access timestamps to the output
+testfile9:    36a0 Only one input file allowed together with '-o' and '-f'
+testfile9:    36e0 Copyright (C) %s Red Hat, Inc.
+testfile9:    36ff This is free software; see the source for copying conditions.  There is NO
+testfile9:    374a warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+testfile9:    37a0 Report bugs to <drepper@redhat.com>.
+testfile9:    37e0 %s: File format not recognized
+testfile9:    3800 cannot set access and modification date of "%s"
+testfile9:    3840 cannot create new file `%s': %s
+testfile9:    3860 error while finishing `%s': %s
+testfile9:    3880 shdr_info[shdr_info[cnt].shdr.sh_link].version_idx == 0
+testfile9:    38c0 shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx == 0
+testfile9:    3900 %s: error while creating ELF header: %s
+testfile9:    3940 %s: error while reading the file: %s
+testfile9:    3980 sec < 0xff00 || shndxdata != ((void *)0)
+testfile9:    39c0 (versiondata->d_size / sizeof (GElf_Versym)) >= shdr_info[cnt].data->d_size / elsize
+testfile9:    3a20 shdr_info[cnt].shdr.sh_type == 11
+testfile9:    3a60 (versiondata->d_size / sizeof (Elf32_Word)) >= shdr_info[cnt].data->d_size / elsize
+testfile9:    3ac0 shdr_info[cnt].shdr.sh_type == 18
+testfile9:    3b00 shdr_info[cnt].data != ((void *)0)
+testfile9:    3b40 elf_ndxscn (shdr_info[cnt].newscn) == idx
+testfile9:    3b80 while create section header section: %s
+testfile9:    3bc0 cannot allocate section data: %s
+testfile9:    3c00 elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx
+testfile9:    3c40 while generating output file: %s
+testfile9:    3c80 while preparing output for `%s'
+testfile9:    3ca0 shdr_info[cnt].shdr.sh_type == 2
+testfile9:    3ce0 shdr_info[idx].data != ((void *)0)
+testfile9:    3d20 cannot determine number of sections: %s
+testfile9:    3d60 cannot get section header string table index
+testfile9:    3e20 Discard symbols from object files.
+testfile9:    3e43 [FILE...]
+EOF
+
+exit 0
diff --git a/src/tests/run-strip-groups.sh b/src/tests/run-strip-groups.sh
new file mode 100755
index 0000000..1c836a4
--- /dev/null
+++ b/src/tests/run-strip-groups.sh
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2011 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/>.
+#
+# g++ -gdwarf-4 -c testfile58.cxx
+# class ct
+# {
+#   private:
+#   int i;
+#
+#   public:
+#   void foo ()
+#   {
+#     i = 1;
+#   }
+#
+#   int bar ()
+#   {
+#     return i;
+#   }
+# };
+#
+# int baz ()
+# {
+#   class ct c;
+#   c.foo ();
+#   return c.bar ();
+# }
+
+. $srcdir/test-subr.sh
+
+infile=testfile58
+outfile=$infile.stripped
+dbgfile=$infile.debug
+
+testfiles $infile
+tempfiles $outfile $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
diff --git a/src/tests/run-strip-reloc.sh b/src/tests/run-strip-reloc.sh
new file mode 100755
index 0000000..a3245fd
--- /dev/null
+++ b/src/tests/run-strip-reloc.sh
@@ -0,0 +1,110 @@
+#! /bin/sh
+# 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
+# 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 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() {
+  infile=$1
+  is_ET_REL=$2
+  outfile1=out.stripped1
+  debugfile1=out.debug1
+  outfile2=out.stripped2
+  debugfile2=out.debug2
+
+  testrun ${abs_top_builddir}/src/strip -o $outfile1 -f $debugfile1 $infile ||
+  { echo "*** failure strip $infile"; status=1; }
+
+  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 ${abs_top_builddir}/src/readelf -a $outfile1 > readelf.out ||
+  { echo "*** failure readelf -a outfile1 $infile"; status=1; }
+
+  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.
+  SIZE1=$(stat -c%s $debugfile1)
+  SIZE2=$(stat -c%s $debugfile2)
+  test \( \( $is_ET_REL -eq 1 \) -a \( $SIZE1 -gt $SIZE2 \) \) \
+	-o \( \( $is_ET_REL -eq 0 \) -a \( $SIZE1 -eq $SIZE2 \) \) ||
+  { echo "*** failure --reloc-debug-sections not smaller $infile"; status=1; }
+
+  # Strip of DWARF section lines, offset will not match.
+  # Everything else should match.
+  testrun ${abs_top_builddir}/src/readelf -w $debugfile1 \
+	| grep -v ^DWARF\ section > readelf.out1 ||
+  { echo "*** failure readelf -w debugfile1 $infile"; status=1; }
+
+  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; }
+}
+
+# Most simple hello world kernel module for various architectures.
+# ::::::::::::::
+# Makefile
+# ::::::::::::::
+# obj-m	:= hello.o
+# hello-y := init.o exit.o
+# 
+# all:
+# 	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
+# ::::::::::::::
+# init.c
+# ::::::::::::::
+# #include <linux/kernel.h>
+# #include <linux/module.h>
+# 
+# int init_module(void)
+# {
+#   printk(KERN_INFO "Hello, world!\n");
+#   return 0;
+# }
+# ::::::::::::::
+# exit.c
+# ::::::::::::::
+# #include <linux/kernel.h>
+# #include <linux/module.h>
+# 
+# void cleanup_module()
+# {
+#   printk(KERN_INFO "Goodbye, World!\n");
+# }
+runtest hello_i386.ko 1
+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 ${abs_top_builddir}/src/strip 0
+runtest ${abs_top_builddir}/src/strip.o 1
+
+exit $status
diff --git a/src/tests/run-strip-test.sh b/src/tests/run-strip-test.sh
new file mode 100755
index 0000000..c558e90
--- /dev/null
+++ b/src/tests/run-strip-test.sh
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2003, 2005, 2007, 2008 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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
+
+original=${original:-testfile11}
+stripped=${stripped:-testfile7}
+debugout=${debugfile:+-f testfile.debug.temp -F $debugfile}
+
+testfiles $original
+test x$stripped = xtestfile.temp || testfiles $stripped $debugfile
+
+tempfiles testfile.temp testfile.debug.temp testfile.unstrip
+
+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 ${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 ${abs_top_builddir}/src/elflint -q -d testfile.debug.temp || status=$?
+
+# Now test unstrip recombining those files.
+testrun ${abs_top_builddir}/src/unstrip -o testfile.unstrip testfile.temp testfile.debug.temp
+
+# Check that it came back whole.
+testrun ${abs_top_builddir}/src/elfcmp --hash-inexact $original testfile.unstrip
+}
+
+tempfiles testfile.sections
+testrun ${abs_top_builddir}/src/readelf -S testfile.temp > testfile.sections || status=$?
+fgrep ' .debug_' testfile.sections && status=1
+
+exit $status
diff --git a/src/tests/run-strip-test2.sh b/src/tests/run-strip-test2.sh
new file mode 100755
index 0000000..9217196
--- /dev/null
+++ b/src/tests/run-strip-test2.sh
@@ -0,0 +1,22 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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/>.
+
+
+original=testfile8
+stripped=testfile9
+. $srcdir/run-strip-test.sh
diff --git a/src/tests/run-strip-test3.sh b/src/tests/run-strip-test3.sh
new file mode 100755
index 0000000..fb37a76
--- /dev/null
+++ b/src/tests/run-strip-test3.sh
@@ -0,0 +1,22 @@
+#! /bin/sh
+# Copyright (C) 1999, 2000, 2002, 2003, 2005 Red Hat, Inc.
+# This file is part of elfutils.
+# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
+#
+# 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/>.
+
+
+original=testfile12
+stripped=testfile13
+. $srcdir/run-strip-test.sh
diff --git a/src/tests/run-strip-test4.sh b/src/tests/run-strip-test4.sh
new file mode 100755
index 0000000..64924a9
--- /dev/null
+++ b/src/tests/run-strip-test4.sh
@@ -0,0 +1,5 @@
+original=testfile11
+stripped=testfile37
+debugfile=testfile37.debug
+
+. $srcdir/run-strip-test.sh
diff --git a/src/tests/run-strip-test5.sh b/src/tests/run-strip-test5.sh
new file mode 100755
index 0000000..9fa9ebe
--- /dev/null
+++ b/src/tests/run-strip-test5.sh
@@ -0,0 +1,5 @@
+original=testfile8
+stripped=testfile16
+debugfile=testfile16.debug
+
+. $srcdir/run-strip-test.sh
diff --git a/src/tests/run-strip-test6.sh b/src/tests/run-strip-test6.sh
new file mode 100755
index 0000000..c59bf5e
--- /dev/null
+++ b/src/tests/run-strip-test6.sh
@@ -0,0 +1,5 @@
+original=testfile12
+stripped=testfile35
+debugfile=testfile35.debug
+
+. $srcdir/run-strip-test.sh
diff --git a/src/tests/run-strip-test7.sh b/src/tests/run-strip-test7.sh
new file mode 100755
index 0000000..c65cd05
--- /dev/null
+++ b/src/tests/run-strip-test7.sh
@@ -0,0 +1,5 @@
+original=testfile39
+stripped=testfile40
+debugfile=testfile40.debug
+
+. $srcdir/run-strip-test.sh
diff --git a/src/tests/run-strip-test8.sh b/src/tests/run-strip-test8.sh
new file mode 100755
index 0000000..fb9fa08
--- /dev/null
+++ b/src/tests/run-strip-test8.sh
@@ -0,0 +1,5 @@
+original=testfile47
+stripped=testfile48
+debugfile=testfile48.debug
+
+. $srcdir/run-strip-test.sh
diff --git a/src/tests/run-test-archive64.sh b/src/tests/run-test-archive64.sh
new file mode 100755
index 0000000..43df16e
--- /dev/null
+++ b/src/tests/run-test-archive64.sh
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2012 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# The test archive was produced on an s390x machine using the
+# following command sequence:
+#  echo 'int aaa(void){}' | gcc -x c /dev/stdin -c -o aaa.o
+#  echo 'int bbb(void){} int bbb2(void){}' | gcc -x c /dev/stdin -c -o bbb.o
+#  echo 'int ccc(void){} int ccc2(void){} int ccc3(void){}' \
+#    | gcc -x c /dev/stdin -c -o ccc.o
+#  ar cru testarchive64.a aaa.o bbb.o ccc.o
+testfiles testarchive64.a
+
+testrun_compare ${abs_top_builddir}/src/readelf -c testarchive64.a <<\EOF
+
+Index of archive 'testarchive64.a' has 7 entries:
+Archive member 'aaa.o' contains:
+	aaa
+Archive member 'bbb.o' contains:
+	bbb
+	bbb2
+Archive member 'ccc.o' contains:
+	ccc
+	ccc2
+	ccc3
+EOF
+
+exit 0
diff --git a/src/tests/run-test-flag-nobits.sh b/src/tests/run-test-flag-nobits.sh
new file mode 100755
index 0000000..9bedf17
--- /dev/null
+++ b/src/tests/run-test-flag-nobits.sh
@@ -0,0 +1,22 @@
+#! /bin/sh
+# Copyright (C) 2010 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
+
+testrun ${abs_builddir}/test-flag-nobits testfile
diff --git a/src/tests/run-typeiter.sh b/src/tests/run-typeiter.sh
new file mode 100755
index 0000000..605ee2a
--- /dev/null
+++ b/src/tests/run-typeiter.sh
@@ -0,0 +1,54 @@
+#! /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
+
+# struct s1
+# {
+#   char c;
+#   short s;
+#   int i;
+#   long l;
+#   float f;
+#   double d;
+# };
+# 
+# s1 S1;
+# 
+# int func (s1 *p)
+# {
+#   return p->i;
+# }
+# 
+# int main()
+# {
+#   return func (&S1);
+# }
+#
+# g++ -gdwarf-4 -g -fdebug-types-section
+
+testfiles testfile59
+
+testrun_compare ${abs_builddir}/typeiter testfile59 <<\EOF
+ok
+EOF
+
+testrun_compare ${abs_builddir}/typeiter2 testfile59 <<\EOF
+ok
+EOF
+
+exit 0
diff --git a/src/tests/run-unstrip-M.sh b/src/tests/run-unstrip-M.sh
new file mode 100755
index 0000000..614a8aa
--- /dev/null
+++ b/src/tests/run-unstrip-M.sh
@@ -0,0 +1,51 @@
+#! /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
diff --git a/src/tests/run-unstrip-n.sh b/src/tests/run-unstrip-n.sh
new file mode 100755
index 0000000..37cbd60
--- /dev/null
+++ b/src/tests/run-unstrip-n.sh
@@ -0,0 +1,76 @@
+#! /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
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=805447
+# eu-unstrip emits garbage for librt.so.1
+#
+# #include <stdio.h>
+# #include <sys/mman.h>
+# 
+# int main(int argc, char **argv)
+# {
+#  // Yes, this crashes... That is the point.
+#  return shm_open(argv[1], 0, 0);
+# }
+# 
+# gcc -m32 -o rt_crash -lrt rt_crash.c
+
+testfiles testcore-rtlib testcore-rtlib-ppc
+
+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
+0xf77d7000+0x21000 6d2cb32650054f1c176d01d48713a4a5e5e84c1a@0xf77d7124 - - ld-linux.so.2
+EOF
+
+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 . - 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 - . - /home/jkratoch/redhat/elfutils-libregr/test-core-lib.so
+0x7fff1596c000+0x1000 a9cf37f53897b5468ee018655760be61b8633d3c@0x7fff1596c340 . - linux-vdso.so.1
+EOF
+
+test_cleanup
+
+exit 0
diff --git a/src/tests/run-unstrip-test.sh b/src/tests/run-unstrip-test.sh
new file mode 100755
index 0000000..dc7d3a4
--- /dev/null
+++ b/src/tests/run-unstrip-test.sh
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2007-2010 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
+
+original=${original:-testfile12}
+stripped=${stripped:-testfile17}
+debugfile=${debugfile:-${stripped}.debug}
+
+testfiles $original $stripped $debugfile
+tempfiles testfile.unstrip testfile.inplace
+
+# These are old reference output from run-test-strip6.sh, when
+# strip left the .debug file with unchanged sh_size in
+# stripped sections that shrank in the stripped file.  strip
+# no longer does that, but unstrip must still handle it.
+
+testrun ${abs_top_builddir}/src/unstrip -o testfile.unstrip $stripped $debugfile
+
+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 ${abs_top_builddir}/src/unstrip $stripped testfile.inplace
+
+testrun ${abs_top_builddir}/src/elfcmp --hash-inexact $original testfile.inplace
diff --git a/src/tests/run-unstrip-test2.sh b/src/tests/run-unstrip-test2.sh
new file mode 100755
index 0000000..44074c1
--- /dev/null
+++ b/src/tests/run-unstrip-test2.sh
@@ -0,0 +1,5 @@
+original=testfile11
+stripped=testfile15
+debugfile=testfile15.debug
+
+. $srcdir/run-unstrip-test.sh
diff --git a/src/tests/run-varlocs.sh b/src/tests/run-varlocs.sh
new file mode 100755
index 0000000..9c4b313
--- /dev/null
+++ b/src/tests/run-varlocs.sh
@@ -0,0 +1,128 @@
+#! /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
diff --git a/src/tests/saridx.c b/src/tests/saridx.c
new file mode 100644
index 0000000..8a450d8
--- /dev/null
+++ b/src/tests/saridx.c
@@ -0,0 +1,257 @@
+/* Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1998.
+
+   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 <error.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+
+static const char *machines[] =
+{
+#define MACHINE(name) [name] = #name
+  MACHINE (EM_NONE),
+  MACHINE (EM_M32),
+  MACHINE (EM_SPARC),
+  MACHINE (EM_386),
+  MACHINE (EM_68K),
+  MACHINE (EM_88K),
+  MACHINE (EM_860),
+  MACHINE (EM_MIPS),
+  MACHINE (EM_MIPS_RS3_LE),
+  MACHINE (EM_PARISC),
+  MACHINE (EM_VPP500),
+  MACHINE (EM_SPARC32PLUS),
+  MACHINE (EM_960),
+  MACHINE (EM_PPC),
+  MACHINE (EM_PPC64),
+  MACHINE (EM_V800),
+  MACHINE (EM_FR20),
+  MACHINE (EM_RH32),
+  MACHINE (EM_RCE),
+  MACHINE (EM_ARM),
+  MACHINE (EM_FAKE_ALPHA),
+  MACHINE (EM_SH),
+  MACHINE (EM_SPARCV9),
+  MACHINE (EM_TRICORE),
+  MACHINE (EM_ARC),
+  MACHINE (EM_H8_300),
+  MACHINE (EM_H8_300H),
+  MACHINE (EM_H8S),
+  MACHINE (EM_H8_500),
+  MACHINE (EM_IA_64),
+  MACHINE (EM_MIPS_X),
+  MACHINE (EM_COLDFIRE),
+  MACHINE (EM_68HC12),
+  MACHINE (EM_MMA),
+  MACHINE (EM_PCP),
+  MACHINE (EM_NCPU),
+  MACHINE (EM_NDR1),
+  MACHINE (EM_STARCORE),
+  MACHINE (EM_ME16),
+  MACHINE (EM_ST100),
+  MACHINE (EM_TINYJ),
+  MACHINE (EM_FX66),
+  MACHINE (EM_ST9PLUS),
+  MACHINE (EM_ST7),
+  MACHINE (EM_68HC16),
+  MACHINE (EM_68HC11),
+  MACHINE (EM_68HC08),
+  MACHINE (EM_68HC05),
+  MACHINE (EM_SVX),
+  MACHINE (EM_ST19),
+  MACHINE (EM_VAX)
+};
+
+
+int
+main (int argc, char *argv[])
+{
+  int fd;
+  Elf *elf;
+  Elf_Cmd cmd;
+  size_t n;
+  int arg = 1;
+  int verbose = 0;
+
+  /* Recognize optional verbosity flag.  */
+  if (arg < argc && strcmp (argv[arg], "-v") == 0)
+    {
+      verbose = 1;
+      ++arg;
+    }
+
+  /* Any more arguments available.  */
+  if (arg >= argc)
+    error (EXIT_FAILURE, 0, "No input file given");
+
+  /* Open the input file.  */
+  fd = open (argv[arg], O_RDONLY);
+  if (fd == -1)
+    {
+      perror ("cannot open input file");
+      exit (1);
+    }
+
+  /* Set the ELF version we are using here.  */
+  if (elf_version (EV_CURRENT) == EV_NONE)
+    {
+      puts ("ELF library too old");
+      exit (1);
+    }
+
+  /* Start reading the file.  */
+  cmd = ELF_C_READ;
+  elf = elf_begin (fd, cmd, NULL);
+  if (elf == NULL)
+    {
+      printf ("elf_begin: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* If it is no archive punt.  */
+  if (elf_kind (elf) != ELF_K_AR)
+    {
+      printf ("%s is not an archive\n", argv[1]);
+      exit (1);
+    }
+
+  if (verbose)
+    {
+      /* The verbose variant.  We print a lot of information.  */
+      Elf *subelf;
+      char buf[100];
+      time_t t;
+
+      /* Get the elements of the archive one after the other.  */
+      while ((subelf = elf_begin (fd, cmd, elf)) != NULL)
+	{
+	  /* The the header for this element.  */
+	  Elf_Arhdr *arhdr = elf_getarhdr (subelf);
+
+	  if (arhdr == NULL)
+	    {
+	      printf ("cannot get arhdr: %s\n", elf_errmsg (-1));
+	      break;
+	    }
+
+	  switch (elf_kind (subelf))
+	    {
+	    case ELF_K_ELF:
+	      fputs ("ELF file:\n", stdout);
+	      break;
+
+	    case ELF_K_AR:
+	      fputs ("archive:\n", stdout);
+	      break;
+
+	    default:
+	      fputs ("unknown file:\n", stdout);
+	      break;
+	    }
+
+	  /* Print general information.  */
+	  t = arhdr->ar_date;
+	  strftime (buf, sizeof buf, "%Y-%m-%dT%H:%M:%S%z", gmtime (&t));
+	  printf ("  name         : \"%s\"\n"
+		  "  time         : %s\n"
+		  "  uid          : %ld\n"
+		  "  gid          : %ld\n"
+		  "  mode         : %o\n"
+		  "  size         : %ld\n"
+		  "  rawname      : \"%s\"\n",
+		  arhdr->ar_name,
+		  buf,
+		  (long int) arhdr->ar_uid,
+		  (long int) arhdr->ar_gid,
+		  arhdr->ar_mode,
+		  (long int) arhdr->ar_size,
+		  arhdr->ar_rawname);
+
+	  /* For ELF files we can provide some more information.  */
+	  if (elf_kind (subelf) == ELF_K_ELF)
+	    {
+	      GElf_Ehdr ehdr;
+
+	      /* Get the ELF header.  */
+	      if (gelf_getehdr (subelf, &ehdr) == NULL)
+		printf ("  *** cannot get ELF header: %s\n", elf_errmsg (-1));
+	      else
+		{
+		  printf ("  binary class : %s\n",
+			  ehdr.e_ident[EI_CLASS] == ELFCLASS32
+			  ? "ELFCLASS32" : "ELFCLASS64");
+		  printf ("  data encoding: %s\n",
+			  ehdr.e_ident[EI_DATA] == ELFDATA2LSB
+			  ? "ELFDATA2LSB" : "ELFDATA2MSB");
+		  printf ("  binary type  : %s\n",
+			  ehdr.e_type == ET_REL
+			  ? "relocatable"
+			  : (ehdr.e_type == ET_EXEC
+			     ? "executable"
+			     : (ehdr.e_type == ET_DYN
+				? "dynamic"
+				: "core file")));
+		  printf ("  machine      : %s\n",
+			  (ehdr.e_machine >= (sizeof (machines)
+					      / sizeof (machines[0]))
+			   || machines[ehdr.e_machine] == NULL)
+			  ? "???"
+			  : machines[ehdr.e_machine]);
+		}
+	    }
+
+	  /* Get next archive element.  */
+	  cmd = elf_next (subelf);
+	  if (elf_end (subelf) != 0)
+	    printf ("error while freeing sub-ELF descriptor: %s\n",
+		    elf_errmsg (-1));
+	}
+    }
+  else
+    {
+      /* The simple version.  Only print a bit of information.  */
+      Elf_Arsym *arsym = elf_getarsym (elf, &n);
+
+      if (n == 0)
+	printf ("no symbol table in archive: %s\n", elf_errmsg (-1));
+      else
+	{
+	  --n;
+
+	  while (n-- > 0)
+	    printf ("name = \"%s\", offset = %ld, hash = %lx\n",
+		    arsym[n].as_name, (long int) arsym[n].as_off,
+		    arsym[n].as_hash);
+	}
+    }
+
+  /* Free the ELF handle.  */
+  if (elf_end (elf) != 0)
+    printf ("error while freeing ELF descriptor: %s\n", elf_errmsg (-1));
+
+  /* Close the underlying file.  */
+  close (fd);
+
+  return 0;
+}
diff --git a/src/tests/scnnames.c b/src/tests/scnnames.c
new file mode 100644
index 0000000..7f26825
--- /dev/null
+++ b/src/tests/scnnames.c
@@ -0,0 +1,91 @@
+/* Copyright (C) 1998, 1999, 2000, 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1998.
+
+   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 <errno.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+int
+main (int argc, char *argv[])
+{
+  Elf *elf;
+  int fd;
+  GElf_Ehdr ehdr;
+  size_t strndx;
+  Elf_Scn *scn;
+
+  if (argc < 2)
+    {
+      puts ("missing parameter");
+      exit (1);
+    }
+
+  fd = open (argv[1], O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open \"%s\": %s\n", argv[1], strerror (errno));
+      exit (1);
+    }
+
+  elf_version (EV_CURRENT);
+
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot open ELF file: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  if (elf_kind (elf) != ELF_K_ELF)
+    {
+      printf ("\"%s\" is not an ELF file\n", argv[1]);
+      exit (1);
+    }
+
+  if (gelf_getehdr (elf, &ehdr) == NULL)
+    {
+      printf ("cannot get the ELF header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  strndx = ehdr.e_shstrndx;
+
+  scn = NULL;
+  while ((scn = elf_nextscn (elf, scn)) != NULL)
+    {
+      char *name = NULL;
+      GElf_Shdr shdr;
+
+      if (gelf_getshdr (scn, &shdr) != NULL)
+	name = elf_strptr (elf, strndx, (size_t) shdr.sh_name);
+
+      printf ("section: `%s'\n", name);
+    }
+
+  if (elf_end (elf) != 0)
+    {
+      printf ("error while freeing ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  return 0;
+}
diff --git a/src/tests/sectiondump.c b/src/tests/sectiondump.c
new file mode 100644
index 0000000..f865954
--- /dev/null
+++ b/src/tests/sectiondump.c
@@ -0,0 +1,182 @@
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1998.
+
+   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 <errno.h>
+#include <error.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+
+/* Prototypes for local functions.  */
+static int handle_section (Elf *elf, Elf_Scn *scn);
+static void print_bytes (Elf_Data *data);
+static void print_symtab (Elf *elf, Elf_Data *data);
+
+
+int
+main (int argc, char *argv[])
+{
+  Elf *elf;
+  int fd;
+  int cnt;
+
+  if (argc <= 1)
+    exit (1);
+
+  /* Open the test file.  This is given as the first parameter to the
+     program.  */
+  fd = open (argv[1], O_RDONLY);
+  if (fd == -1)
+    error (EXIT_FAILURE, errno, "cannot open input file `%s'", argv[1]);
+
+  /* Set the library versio we expect.  */
+  elf_version (EV_CURRENT);
+
+  /* Create the ELF descriptor.  */
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    error (EXIT_FAILURE, 0, "cannot create ELF descriptor: %s",
+	   elf_errmsg (0));
+
+  /* Now proces all the sections mentioned in the rest of the command line.  */
+  for (cnt = 2; cnt < argc; ++cnt)
+    if (handle_section (elf, elf_getscn (elf, atoi (argv[cnt]))) != 0)
+      /* When we encounter an error stop immediately.  */
+      error (EXIT_FAILURE, 0, "while processing section %d: %s", cnt,
+	   elf_errmsg (0));
+
+  /* Close the descriptor.  */
+  if (elf_end (elf) != 0)
+    error (EXIT_FAILURE, 0, "failure while closing ELF descriptor: %s",
+	   elf_errmsg (0));
+
+  return 0;
+}
+
+
+static int
+handle_section (Elf *elf, Elf_Scn *scn)
+{
+  GElf_Ehdr *ehdr;
+  GElf_Ehdr ehdr_mem;
+  GElf_Shdr *shdr;
+  GElf_Shdr shdr_mem;
+  Elf_Data *data;
+
+  /* First get the ELF and section header.  */
+  ehdr = gelf_getehdr (elf, &ehdr_mem);
+  shdr = gelf_getshdr (scn, &shdr_mem);
+  if (ehdr == NULL || shdr == NULL)
+    return 1;
+
+  /* Print the information from the ELF section header.   */
+  printf ("name      = %s\n"
+	  "type      = %" PRId32 "\n"
+	  "flags     = %" PRIx64 "\n"
+	  "addr      = %" PRIx64 "\n"
+	  "offset    = %" PRIx64 "\n"
+	  "size      = %" PRId64 "\n"
+	  "link      = %" PRId32 "\n"
+	  "info      = %" PRIx32 "\n"
+	  "addralign = %" PRIx64 "\n"
+	  "entsize   = %" PRId64 "\n",
+	  elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name),
+	  shdr->sh_type,
+	  shdr->sh_flags,
+	  shdr->sh_addr,
+	  shdr->sh_offset,
+	  shdr->sh_size,
+	  shdr->sh_link,
+	  shdr->sh_info,
+	  shdr->sh_addralign,
+	  shdr->sh_entsize);
+
+  /* Get the section data now.  */
+  data = elf_getdata (scn, NULL);
+  if (data == NULL)
+    return 1;
+
+  /* Now proces the different section types accordingly.  */
+  switch (shdr->sh_type)
+    {
+    case SHT_SYMTAB:
+      print_symtab (elf, data);
+      break;
+
+    case SHT_PROGBITS:
+    default:
+      print_bytes (data);
+      break;
+    }
+
+  /* Separate form the next section.  */
+  puts ("");
+
+  /* All done correctly.  */
+  return 0;
+}
+
+
+static void
+print_bytes (Elf_Data *data)
+{
+  size_t size = data->d_size;
+  off_t offset = data->d_off;
+  unsigned char *buf = (unsigned char *) data->d_buf;
+  size_t cnt;
+
+  for (cnt = 0; cnt < size; cnt += 16)
+    {
+      size_t inner;
+
+      printf ("%*Zx: ", sizeof (size_t) == 4 ? 8 : 16, (size_t) offset + cnt);
+
+      for (inner = 0; inner < 16 && cnt + inner < size; ++inner)
+	printf (" %02hhx", buf[cnt + inner]);
+
+      puts ("");
+    }
+}
+
+
+static void
+print_symtab (Elf *elf, Elf_Data *data)
+{
+  int class = gelf_getclass (elf);
+  size_t nsym = data->d_size / (class == ELFCLASS32
+				? sizeof (Elf32_Sym) : sizeof (Elf64_Sym));
+  size_t cnt;
+
+  for (cnt = 0; cnt < nsym; ++cnt)
+    {
+      GElf_Sym sym_mem;
+      GElf_Sym *sym = gelf_getsym (data, cnt, &sym_mem);
+
+      printf ("%5Zu: %*" PRIx64 " %6" PRIx64 " %4d\n",
+	      cnt,
+	      class == ELFCLASS32 ? 8 : 16,
+	      sym->st_value,
+	      sym->st_size,
+	      GELF_ST_TYPE (sym->st_info));
+    }
+}
diff --git a/src/tests/show-abbrev.c b/src/tests/show-abbrev.c
new file mode 100644
index 0000000..b0af029
--- /dev/null
+++ b/src/tests/show-abbrev.c
@@ -0,0 +1,131 @@
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1998.
+
+   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 <fcntl.h>
+#include <inttypes.h>
+#include ELFUTILS_HEADER(dw)
+#include <stdio.h>
+#include <unistd.h>
+
+
+int
+main (int argc, char *argv[])
+{
+  int cnt;
+
+  for (cnt = 1; cnt < argc; ++cnt)
+    {
+      int fd = open (argv[cnt], O_RDONLY);
+      Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
+      if  (dbg == NULL)
+	{
+	  printf ("%s not usable: %s\n", argv[cnt], dwarf_errmsg (-1));
+	  close  (fd);
+	  continue;
+	}
+
+      Dwarf_Off cuoff = 0;
+      Dwarf_Off old_cuoff = 0;
+      size_t hsize;
+      while (dwarf_nextcu (dbg, cuoff, &cuoff, &hsize, NULL, NULL, NULL) == 0)
+	{
+	  /* Get the DIE for the CU.  */
+	  Dwarf_Die die;
+ 	  if (dwarf_offdie (dbg, old_cuoff + hsize, &die) == NULL)
+	    /* Something went wrong.  */
+	    break;
+
+	  Dwarf_Off offset = 0;
+
+	  while (1)
+	    {
+	      size_t length;
+	      Dwarf_Abbrev *abbrev = dwarf_getabbrev (&die, offset, &length);
+	      if (abbrev == NULL || abbrev == DWARF_END_ABBREV)
+		/* End of the list.  */
+		break;
+
+	      unsigned tag = dwarf_getabbrevtag (abbrev);
+	      if (tag == 0)
+		{
+		  printf ("dwarf_getabbrevtag at offset %llu returned error: %s\n",
+			  (unsigned long long int) offset,
+			  dwarf_errmsg (-1));
+		  break;
+		}
+
+	      unsigned code = dwarf_getabbrevcode (abbrev);
+	      if (code == 0)
+		{
+		  printf ("dwarf_getabbrevcode at offset %llu returned error: %s\n",
+			  (unsigned long long int) offset,
+			  dwarf_errmsg (-1));
+		  break;
+		}
+
+	      int children = dwarf_abbrevhaschildren (abbrev);
+	      if (children < 0)
+		{
+		  printf ("dwarf_abbrevhaschildren at offset %llu returned error: %s\n",
+			  (unsigned long long int) offset,
+			  dwarf_errmsg (-1));
+		  break;
+		}
+
+	      printf ("abbrev[%llu]: code = %u, tag = %u, children = %d\n",
+		      (unsigned long long int) offset, code, tag, children);
+
+	      size_t attrcnt;
+	      if (dwarf_getattrcnt (abbrev, &attrcnt) != 0)
+		{
+		  printf ("dwarf_getattrcnt at offset %llu returned error: %s\n",
+			  (unsigned long long int) offset,
+			  dwarf_errmsg (-1));
+		  break;
+		}
+
+	      unsigned int attr_num;
+	      unsigned int attr_form;
+	      Dwarf_Off aboffset;
+	      size_t j;
+	      for (j = 0; j < attrcnt; ++j)
+		if (dwarf_getabbrevattr (abbrev, j, &attr_num, &attr_form,
+					 &aboffset))
+		  printf ("dwarf_getabbrevattr for abbrev[%llu] and index %zu failed\n",
+			  (unsigned long long int) offset, j);
+		else
+		  printf ("abbrev[%llu]: attr[%zu]: code = %u, form = %u, offset = %" PRIu64 "\n",
+			  (unsigned long long int) offset, j, attr_num,
+			  attr_form, (uint64_t) aboffset);
+
+	      offset += length;
+	    }
+
+	  old_cuoff = cuoff;
+	}
+
+      if (dwarf_end (dbg) != 0)
+	printf ("dwarf_end failed for %s: %s\n", argv[cnt],
+		dwarf_errmsg (-1));
+
+      close (fd);
+    }
+
+  return 0;
+}
diff --git a/src/tests/show-die-info.c b/src/tests/show-die-info.c
new file mode 100644
index 0000000..0c298ac
--- /dev/null
+++ b/src/tests/show-die-info.c
@@ -0,0 +1,358 @@
+/* Copyright (C) 1998-2002, 2004, 2006, 2012 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1998.
+
+   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 <dwarf.h>
+#include <inttypes.h>
+#include <libelf.h>
+#include ELFUTILS_HEADER(dw)
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "../libdw/known-dwarf.h"
+
+static const char *
+dwarf_tag_string (unsigned int tag)
+{
+  switch (tag)
+    {
+#define ONE_KNOWN_DW_TAG(NAME, CODE) case CODE: return #NAME;
+      ALL_KNOWN_DW_TAG
+#undef ONE_KNOWN_DW_TAG
+    default:
+      return NULL;
+    }
+}
+
+static const char *
+dwarf_attr_string (unsigned int attrnum)
+{
+  switch (attrnum)
+    {
+#define ONE_KNOWN_DW_AT(NAME, CODE) case CODE: return #NAME;
+      ALL_KNOWN_DW_AT
+#undef ONE_KNOWN_DW_AT
+    default:
+      return NULL;
+    }
+}
+
+
+void
+handle (Dwarf *dbg, Dwarf_Die *die, int n)
+{
+  Dwarf_Die child;
+  unsigned int tag;
+  const char *str;
+  char buf[30];
+  const char *name;
+  Dwarf_Off off;
+  Dwarf_Off cuoff;
+  size_t cnt;
+  Dwarf_Addr addr;
+  int i;
+
+  tag = dwarf_tag (die);
+  if (tag != DW_TAG_invalid)
+    {
+      str = dwarf_tag_string (tag);
+      if (str == NULL)
+	{
+	  snprintf (buf, sizeof buf, "%#x", tag);
+	  str = buf;
+	}
+    }
+  else
+    str = "* NO TAG *";
+
+  name = dwarf_diename (die);
+  if (name == 0)
+    name = "* NO NAME *";
+
+  off = dwarf_dieoffset (die);
+  cuoff = dwarf_cuoffset (die);
+
+  printf ("%*sDW_TAG_%s\n", n * 5, "", str);
+  printf ("%*s Name      : %s\n", n * 5, "", name);
+  printf ("%*s Offset    : %lld\n", n * 5, "", (long long int) off);
+  printf ("%*s CU offset : %lld\n", n * 5, "", (long long int) cuoff);
+
+  printf ("%*s Attrs     :", n * 5, "");
+  for (cnt = 0; cnt < 0xffff; ++cnt)
+    if (dwarf_hasattr (die, cnt))
+      printf (" %s", dwarf_attr_string (cnt));
+  puts ("");
+
+  if (dwarf_hasattr (die, DW_AT_low_pc) && dwarf_lowpc (die, &addr) == 0)
+    {
+      Dwarf_Attribute attr;
+      Dwarf_Addr addr2;
+      printf ("%*s low PC    : %#llx\n",
+	      n * 5, "", (unsigned long long int) addr);
+
+      if (dwarf_attr (die, DW_AT_low_pc, &attr) == NULL
+	  || dwarf_formaddr (&attr, &addr2) != 0
+	  || addr != addr2)
+	puts ("************* DW_AT_low_pc verify failed ************");
+      else if (! dwarf_hasform (&attr, DW_FORM_addr))
+	puts ("************* DW_AT_low_pc form failed ************");
+      else if (dwarf_whatform (&attr) != DW_FORM_addr)
+	puts ("************* DW_AT_low_pc form (2) failed ************");
+      else if (dwarf_whatattr (&attr) != DW_AT_low_pc)
+	puts ("************* DW_AT_low_pc attr failed ************");
+    }
+  if (dwarf_hasattr (die, DW_AT_high_pc) && dwarf_highpc (die, &addr) == 0)
+    {
+      Dwarf_Attribute attr;
+      Dwarf_Addr addr2;
+      printf ("%*s high PC   : %#llx\n",
+	      n * 5, "", (unsigned long long int) addr);
+      if (dwarf_attr (die, DW_AT_high_pc, &attr) == NULL
+	  || dwarf_formaddr (&attr, &addr2) != 0
+	  || addr != addr2)
+	puts ("************* DW_AT_high_pc verify failed ************");
+      else if (! dwarf_hasform (&attr, DW_FORM_addr))
+	puts ("************* DW_AT_high_pc form failed ************");
+      else if (dwarf_whatform (&attr) != DW_FORM_addr)
+	puts ("************* DW_AT_high_pc form (2) failed ************");
+      else if (dwarf_whatattr (&attr) != DW_AT_high_pc)
+	puts ("************* DW_AT_high_pc attr failed ************");
+    }
+
+  if (dwarf_hasattr (die, DW_AT_byte_size) && (i = dwarf_bytesize (die)) != -1)
+    {
+      Dwarf_Attribute attr;
+      Dwarf_Word u2;
+      unsigned int u;
+      printf ("%*s byte size : %d\n", n * 5, "", i);
+      if (dwarf_attr (die, DW_AT_byte_size, &attr) == NULL
+	  || dwarf_formudata (&attr, &u2) != 0
+	  || i != (int) u2)
+	puts ("************* DW_AT_byte_size verify failed ************");
+      else if (! dwarf_hasform (&attr, DW_FORM_data1)
+	       && ! dwarf_hasform (&attr, DW_FORM_data2)
+	       && ! dwarf_hasform (&attr, DW_FORM_data4)
+	       && ! dwarf_hasform (&attr, DW_FORM_data8)
+	       && ! dwarf_hasform (&attr, DW_FORM_sdata)
+	       && ! dwarf_hasform (&attr, DW_FORM_udata))
+	puts ("************* DW_AT_byte_size form failed ************");
+      else if ((u = dwarf_whatform (&attr)) == 0
+	       || (u != DW_FORM_data1
+		   && u != DW_FORM_data2
+		   && u != DW_FORM_data4
+		   && u != DW_FORM_data8
+		   && u != DW_FORM_sdata
+		   && u != DW_FORM_udata))
+	puts ("************* DW_AT_byte_size form (2) failed ************");
+      else if (dwarf_whatattr (&attr) != DW_AT_byte_size)
+	puts ("************* DW_AT_byte_size attr failed ************");
+    }
+  if (dwarf_hasattr (die, DW_AT_bit_size) && (i = dwarf_bitsize (die)) != -1)
+    {
+      Dwarf_Attribute attr;
+      Dwarf_Word u2;
+      unsigned int u;
+      printf ("%*s bit size  : %d\n", n * 5, "", i);
+      if (dwarf_attr (die, DW_AT_bit_size, &attr) == NULL
+	  || dwarf_formudata (&attr, &u2) != 0
+	  || i != (int) u2)
+	puts ("************* DW_AT_bit_size test failed ************");
+      else if (! dwarf_hasform (&attr, DW_FORM_data1)
+	       && ! dwarf_hasform (&attr, DW_FORM_data2)
+	       && ! dwarf_hasform (&attr, DW_FORM_data4)
+	       && ! dwarf_hasform (&attr, DW_FORM_data8)
+	       && ! dwarf_hasform (&attr, DW_FORM_sdata)
+	       && ! dwarf_hasform (&attr, DW_FORM_udata))
+	puts ("************* DW_AT_bit_size form failed ************");
+      else if ((u = dwarf_whatform (&attr)) == 0
+	       || (u != DW_FORM_data1
+		   && u != DW_FORM_data2
+		   && u != DW_FORM_data4
+		   && u != DW_FORM_data8
+		   && u != DW_FORM_sdata
+		   && u != DW_FORM_udata))
+	puts ("************* DW_AT_bit_size form (2) failed ************");
+      else if (dwarf_whatattr (&attr) != DW_AT_bit_size)
+	puts ("************* DW_AT_bit_size attr failed ************");
+    }
+  if (dwarf_hasattr (die, DW_AT_bit_offset)
+      && (i = dwarf_bitoffset (die)) != -1)
+    {
+      Dwarf_Attribute attr;
+      Dwarf_Word u2;
+      unsigned int u;
+      printf ("%*s bit offset: %d\n", n * 5, "", i);
+      if (dwarf_attr (die, DW_AT_bit_offset, &attr) == NULL
+	  || dwarf_formudata (&attr, &u2) != 0
+	  || i != (int) u2)
+	puts ("************* DW_AT_bit_offset test failed ************");
+      else if (! dwarf_hasform (&attr, DW_FORM_data1)
+	       && ! dwarf_hasform (&attr, DW_FORM_data2)
+	       && ! dwarf_hasform (&attr, DW_FORM_data4)
+	       && ! dwarf_hasform (&attr, DW_FORM_data8)
+	       && ! dwarf_hasform (&attr, DW_FORM_sdata)
+	       && ! dwarf_hasform (&attr, DW_FORM_udata))
+	puts ("************* DW_AT_bit_offset form failed ************");
+      else if ((u = dwarf_whatform (&attr)) == 0
+	       || (u != DW_FORM_data1
+		   && u != DW_FORM_data2
+		   && u != DW_FORM_data4
+		   && u != DW_FORM_data8
+		   && u != DW_FORM_sdata
+		   && u != DW_FORM_udata))
+	puts ("************* DW_AT_bit_offset form (2) failed ************");
+      else if (dwarf_whatattr (&attr) != DW_AT_bit_offset)
+	puts ("************* DW_AT_bit_offset attr failed ************");
+    }
+
+  if (dwarf_hasattr (die, DW_AT_language) && (i = dwarf_srclang (die)) != -1)
+    {
+      Dwarf_Attribute attr;
+      Dwarf_Word u2;
+      unsigned int u;
+      printf ("%*s language  : %d\n", n * 5, "", i);
+      if (dwarf_attr (die, DW_AT_language, &attr) == NULL
+	  || dwarf_formudata (&attr, &u2) != 0
+	  || i != (int) u2)
+	puts ("************* DW_AT_language test failed ************");
+      else if (! dwarf_hasform (&attr, DW_FORM_data1)
+	       && ! dwarf_hasform (&attr, DW_FORM_data2)
+	       && ! dwarf_hasform (&attr, DW_FORM_data4)
+	       && ! dwarf_hasform (&attr, DW_FORM_data8)
+	       && ! dwarf_hasform (&attr, DW_FORM_sdata)
+	       && ! dwarf_hasform (&attr, DW_FORM_udata))
+	puts ("************* DW_AT_language form failed ************");
+      else if ((u = dwarf_whatform (&attr)) == 0
+	       || (u != DW_FORM_data1
+		   && u != DW_FORM_data2
+		   && u != DW_FORM_data4
+		   && u != DW_FORM_data8
+		   && u != DW_FORM_sdata
+		   && u != DW_FORM_udata))
+	puts ("************* DW_AT_language form (2) failed ************");
+      else if (dwarf_whatattr (&attr) != DW_AT_language)
+	puts ("************* DW_AT_language attr failed ************");
+    }
+
+  if (dwarf_hasattr (die, DW_AT_ordering)
+      && (i = dwarf_arrayorder (die)) != -1)
+    {
+      Dwarf_Attribute attr;
+      Dwarf_Word u2;
+      unsigned int u;
+      printf ("%*s ordering  : %d\n", n * 5, "", i);
+      if (dwarf_attr (die, DW_AT_ordering, &attr) == NULL
+	  || dwarf_formudata (&attr, &u2) != 0
+	  || i != (int) u2)
+	puts ("************* DW_AT_ordering test failed ************");
+      else if (! dwarf_hasform (&attr, DW_FORM_data1)
+	       && ! dwarf_hasform (&attr, DW_FORM_data2)
+	       && ! dwarf_hasform (&attr, DW_FORM_data4)
+	       && ! dwarf_hasform (&attr, DW_FORM_data8)
+	       && ! dwarf_hasform (&attr, DW_FORM_sdata)
+	       && ! dwarf_hasform (&attr, DW_FORM_udata))
+	puts ("************* DW_AT_ordering failed ************");
+      else if ((u = dwarf_whatform (&attr)) == 0
+	       || (u != DW_FORM_data1
+		   && u != DW_FORM_data2
+		   && u != DW_FORM_data4
+		   && u != DW_FORM_data8
+		   && u != DW_FORM_sdata
+		   && u != DW_FORM_udata))
+	puts ("************* DW_AT_ordering form (2) failed ************");
+      else if (dwarf_whatattr (&attr) != DW_AT_ordering)
+	puts ("************* DW_AT_ordering attr failed ************");
+    }
+
+  if (dwarf_hasattr (die, DW_AT_comp_dir))
+    {
+      Dwarf_Attribute attr;
+      if (dwarf_attr (die, DW_AT_comp_dir, &attr) == NULL
+	  || (name = dwarf_formstring (&attr)) == NULL)
+	puts ("************* DW_AT_comp_dir attr failed ************");
+      else
+	printf ("%*s directory : %s\n", n * 5, "", name);
+    }
+
+  if (dwarf_hasattr (die, DW_AT_producer))
+    {
+      Dwarf_Attribute attr;
+      if (dwarf_attr (die, DW_AT_producer, &attr) == NULL
+	  || (name = dwarf_formstring (&attr)) == NULL)
+	puts ("************* DW_AT_comp_dir attr failed ************");
+      else
+	printf ("%*s producer  : %s\n", n * 5, "", name);
+    }
+
+  if (dwarf_haschildren (die) != 0 && dwarf_child (die, &child) == 0)
+    handle (dbg, &child, n + 1);
+  if (dwarf_siblingof (die, die) == 0)
+    handle (dbg, die, n);
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ int cnt;
+
+  for (cnt = 1; cnt < argc; ++cnt)
+    {
+      int fd = open (argv[cnt], O_RDONLY);
+      Dwarf *dbg;
+
+      printf ("file: %s\n", basename (argv[cnt]));
+
+      dbg = dwarf_begin (fd, DWARF_C_READ);
+      if (dbg == NULL)
+	{
+	  printf ("%s not usable\n", argv[cnt]);
+	  close (fd);
+	  continue;
+	}
+
+      Dwarf_Off off = 0;
+      Dwarf_Off old_off = 0;
+      size_t hsize;
+      Dwarf_Off abbrev;
+      uint8_t addresssize;
+      uint8_t offsetsize;
+      while (dwarf_nextcu (dbg, off, &off, &hsize, &abbrev, &addresssize,
+			   &offsetsize) == 0)
+	{
+	  printf ("New CU: off = %llu, hsize = %zu, ab = %llu, as = %" PRIu8
+		  ", os = %" PRIu8 "\n",
+		  (unsigned long long int) old_off, hsize,
+		  (unsigned long long int) abbrev, addresssize,
+		  offsetsize);
+
+	  Dwarf_Die die;
+	  if (dwarf_offdie (dbg, old_off + hsize, &die) != NULL)
+	    handle (dbg, &die, 1);
+
+	  old_off = off;
+	}
+
+      dwarf_end (dbg);
+      close (fd);
+    }
+
+  return 0;
+}
diff --git a/src/tests/showptable.c b/src/tests/showptable.c
new file mode 100644
index 0000000..a794b0e
--- /dev/null
+++ b/src/tests/showptable.c
@@ -0,0 +1,139 @@
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 1998.
+
+   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 <errno.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main (int argc, char *argv[])
+{
+  Elf *elf;
+  int fd;
+  GElf_Ehdr ehdr;
+  int cnt;
+
+  if (argc < 2)
+    {
+      puts ("missing parameter");
+      exit (1);
+    }
+
+  fd = open (argv[1], O_RDONLY);
+  if (fd == -1)
+    {
+      printf ("cannot open \"%s\": %s\n", argv[1], strerror (errno));
+      exit (1);
+    }
+
+  elf_version (EV_CURRENT);
+
+  elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot open ELF file: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  if (elf_kind (elf) != ELF_K_ELF)
+    {
+      printf ("\"%s\" is not an ELF file\n", argv[1]);
+      exit (1);
+    }
+
+  if (gelf_getehdr (elf, &ehdr) == NULL)
+    {
+      printf ("cannot get the ELF header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  printf ("idx type    %*s %*s %*s %*s %*s  align flags\n",
+	  gelf_getclass (elf) == ELFCLASS32 ? 9 : 17, "offset",
+	  gelf_getclass (elf) == ELFCLASS32 ? 10 : 18, "vaddr",
+	  gelf_getclass (elf) == ELFCLASS32 ? 10 : 18, "paddr",
+	  gelf_getclass (elf) == ELFCLASS32 ? 9 : 12, "filesz",
+	  gelf_getclass (elf) == ELFCLASS32 ? 9 : 12, "memsz");
+
+  for (cnt = 0; cnt < ehdr.e_phnum; ++cnt)
+    {
+      static const char *typenames[] =
+      {
+	[PT_NULL] = "NULL",
+	[PT_LOAD] = "LOAD",
+	[PT_DYNAMIC] = "DYNAMIC",
+	[PT_INTERP] = "INTERP",
+	[PT_NOTE] = "NOTE",
+	[PT_SHLIB] = "SHLIB",
+	[PT_PHDR] = "PHDR"
+      };
+      GElf_Phdr mem;
+      GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &mem);
+      char buf[19];
+      const char *p_type = typenames[phdr->p_type];
+
+      /* If we don't know the name of the type we use the number value.  */
+      if (phdr->p_type >= PT_NUM)
+	{
+	  snprintf (buf, sizeof (buf), "%x", phdr->p_type);
+	  p_type = buf;
+	}
+
+      printf ("%3d %-7s %#0*llx %#0*llx %#0*llx %#0*llx %#0*llx %#6llx ",
+	      cnt, p_type,
+	      gelf_getclass (elf) == ELFCLASS32 ? 9 : 17,
+	      (unsigned long long int) phdr->p_offset,
+	      gelf_getclass (elf) == ELFCLASS32 ? 10 : 18,
+	      (unsigned long long int) phdr->p_vaddr,
+	      gelf_getclass (elf) == ELFCLASS32 ? 10 : 18,
+	      (unsigned long long int) phdr->p_paddr,
+	      gelf_getclass (elf) == ELFCLASS32 ? 9 : 12,
+	      (unsigned long long int) phdr->p_filesz,
+	      gelf_getclass (elf) == ELFCLASS32 ? 9 : 12,
+	      (unsigned long long int) phdr->p_memsz,
+	      (unsigned long long int) phdr->p_align);
+
+      putc_unlocked ((phdr->p_flags & PF_X) ? 'X' : ' ', stdout);
+      putc_unlocked ((phdr->p_flags & PF_W) ? 'W' : ' ', stdout);
+      putc_unlocked ((phdr->p_flags & PF_R) ? 'R' : ' ', stdout);
+
+      putc_unlocked ('\n', stdout);
+
+      if (phdr->p_type == PT_INTERP)
+	{
+	  /* We can show the user the name of the interpreter.  */
+	  size_t maxsize;
+	  char *filedata = elf_rawfile (elf, &maxsize);
+
+	  if (filedata != NULL && phdr->p_offset < maxsize)
+	    printf ("\t[Requesting program interpreter: %s]\n",
+		    filedata + phdr->p_offset);
+	}
+    }
+
+  if (elf_end (elf) != 0)
+    {
+      printf ("error while freeing ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  return 0;
+}
diff --git a/src/tests/test-core-lib.so.bz2 b/src/tests/test-core-lib.so.bz2
new file mode 100755
index 0000000..bb2da88
--- /dev/null
+++ b/src/tests/test-core-lib.so.bz2
Binary files differ
diff --git a/src/tests/test-core.core.bz2 b/src/tests/test-core.core.bz2
new file mode 100644
index 0000000..4d4346b
--- /dev/null
+++ b/src/tests/test-core.core.bz2
Binary files differ
diff --git a/src/tests/test-core.exec.bz2 b/src/tests/test-core.exec.bz2
new file mode 100755
index 0000000..49ce551
--- /dev/null
+++ b/src/tests/test-core.exec.bz2
Binary files differ
diff --git a/src/tests/test-elf_cntl_gelf_getshdr.c b/src/tests/test-elf_cntl_gelf_getshdr.c
new file mode 100644
index 0000000..b561b53
--- /dev/null
+++ b/src/tests/test-elf_cntl_gelf_getshdr.c
@@ -0,0 +1,103 @@
+/* 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/>.  */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <libelf.h>
+#include <stdbool.h>
+#include <inttypes.h>
+
+int
+main (int argc, char *argv[])
+{
+  if (argc != 3)
+    {
+      fprintf (stderr, "Needs two arguments.\n");
+      fprintf (stderr, "First needs to be 'READ', 'MMAP' or 'FDREAD'\n");
+      fprintf (stderr, "Second is the ELF file to read.\n");
+      exit (2); /* user error */
+    }
+
+  bool do_mmap = false;
+  bool close_fd = false;
+  if (strcmp (argv[1], "READ") == 0)
+    {
+      do_mmap = false;
+      close_fd = false;
+    }
+  else if (strcmp (argv[1], "MMAP") == 0)
+    {
+      do_mmap = true;
+      close_fd = false;
+    }
+  else if  (strcmp (argv[1], "FDREAD") == 0)
+    {
+      do_mmap = false;
+      close_fd = true;
+    }
+  else
+    {
+      fprintf (stderr, "First arg needs to be 'READ', 'MMAP' or 'FDREAD'\n");
+      exit (2); /* user error */
+    }
+
+  elf_version (EV_CURRENT);
+
+  int fd = open (argv[2], O_RDONLY);
+  if (fd < 0)
+    {
+      fprintf (stderr, "Cannot open input file %s: %s\n", argv[2],
+	       strerror (errno));
+      exit (2);
+    }
+
+  Elf *elf = elf_begin (fd, do_mmap ? ELF_C_READ_MMAP : ELF_C_READ, NULL);
+  if (elf == NULL)
+    {
+      fprintf (stderr, "elf_begin failed for %s: %s\n", argv[2],
+	       elf_errmsg (-1));
+      exit (2);
+    }
+
+  if (! do_mmap && close_fd)
+    {
+      if (elf_cntl (elf, ELF_C_FDREAD) < 0)
+	{
+	  fprintf (stderr, "elf_cntl failed for %s: %s\n", argv[2],
+		   elf_errmsg (-1));
+	  exit (1);
+	}
+      close (fd);
+    }
+
+  Elf_Scn *scn = NULL;
+  while ((scn = elf_nextscn (elf, scn)) != NULL)
+    {
+      GElf_Shdr shdr_mem;
+      GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+      printf ("Section at offset %#0" PRIx64 "\n", shdr->sh_offset);
+    }
+
+  elf_end (elf);
+  exit (0);
+}
diff --git a/src/tests/test-flag-nobits.c b/src/tests/test-flag-nobits.c
new file mode 100644
index 0000000..e58d8c3
--- /dev/null
+++ b/src/tests/test-flag-nobits.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2010 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 <fcntl.h>
+#include <stdlib.h>
+#include <gelf.h>
+
+int
+main (int argc, char **argv)
+{
+  if (argc != 2)
+    abort ();
+
+  elf_version (EV_CURRENT);
+
+  int fd = open64 (argv[1], O_RDONLY);
+  Elf *stripped = elf_begin (fd, ELF_C_READ, NULL);
+
+  Elf_Scn *scn = NULL;
+  while ((scn = elf_nextscn (stripped, scn)) != NULL)
+    elf_flagdata (elf_getdata (scn, NULL), ELF_C_SET, ELF_F_DIRTY);
+}
diff --git a/src/tests/test-nlist.c b/src/tests/test-nlist.c
new file mode 100644
index 0000000..679c911
--- /dev/null
+++ b/src/tests/test-nlist.c
@@ -0,0 +1,83 @@
+/* Copyright (C) 2000, 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+   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 <nlist.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int var = 1;
+
+int bss;
+
+
+int
+foo (int a)
+{
+  return a;
+}
+
+int
+main (int argc, char *argv[] __attribute__ ((unused)))
+{
+  struct nlist nl[6] =
+  {
+    [0] = { .n_name = "var" },
+    [1] = { .n_name = "bss" },
+    [2] = { .n_name = "main" },
+    [3] = { .n_name = "foo" },
+    [4] = { .n_name = "not-there" },
+    [5] = { .n_name = NULL },
+  };
+  int cnt;
+  int result = 0;
+
+  if (nlist (".libs/test-nlist", nl) != 0
+      && nlist ("./test-nlist", nl) != 0)
+    {
+      puts ("nlist failed");
+      exit (1);
+    }
+
+  for (cnt = 0; nl[cnt].n_name != NULL; ++cnt)
+    {
+      if (argc > 1)
+	/* For debugging.  */
+	printf ("nl[%d].n_name = \"%s\"\n"
+		"nl[%d].n_value = %ld\n"
+		"nl[%d].n_scnum = %d\n"
+		"nl[%d].n_type = %u\n"
+		"nl[%d].n_sclass = %d\n"
+		"nl[%d].n_numaux = %d\n\n",
+		cnt, nl[cnt].n_name,
+		cnt, nl[cnt].n_value,
+		cnt, nl[cnt].n_scnum,
+		cnt, nl[cnt].n_type,
+		cnt, nl[cnt].n_sclass,
+		cnt, nl[cnt].n_numaux);
+
+      if ((cnt != 4 && nl[cnt].n_value == 0 && nl[cnt].n_scnum == 0
+	   && nl[cnt].n_type == 0 && nl[cnt].n_sclass == 0
+	   && nl[cnt].n_numaux == 0)
+	  || (cnt == 4 && (nl[cnt].n_value != 0 || nl[cnt].n_scnum != 0
+			   || nl[cnt].n_type != 0 || nl[cnt].n_sclass != 0
+			   || nl[cnt].n_numaux != 0)))
+	result = 1;
+    }
+
+  return foo (result);
+}
diff --git a/src/tests/test-offset-loop.alt.bz2 b/src/tests/test-offset-loop.alt.bz2
new file mode 100644
index 0000000..c1906b6
--- /dev/null
+++ b/src/tests/test-offset-loop.alt.bz2
Binary files differ
diff --git a/src/tests/test-offset-loop.bz2 b/src/tests/test-offset-loop.bz2
new file mode 100755
index 0000000..62185c0
--- /dev/null
+++ b/src/tests/test-offset-loop.bz2
Binary files differ
diff --git a/src/tests/test-subr.sh b/src/tests/test-subr.sh
new file mode 100644
index 0000000..5e796b4
--- /dev/null
+++ b/src/tests/test-subr.sh
@@ -0,0 +1,154 @@
+#! /bin/sh
+# 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
+# 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/>.
+
+
+# This file is sourced by ". $srcdir/test-subr.sh" at the start of
+# each test script.  It defines some functions they use and sets up
+# canonical sh state for test runs.
+
+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=
+
+# 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()
+{
+  remove_files="$remove_files $*"
+}
+
+testfiles()
+{
+  for file; do
+    bunzip2 -c ${abs_srcdir}/${file}.bz2 > ${file} 2>/dev/null || exit 77
+    remove_files="$remove_files $file"
+  done
+}
+
+testrun_out()
+{
+  outfile="$1"
+  shift
+  remove_files="$remove_files $outfile"
+  testrun "$@" > $outfile 2>&1 || :
+}
+
+testrun_compare()
+{
+  outfile="${1##*/}.out"
+  testrun_out $outfile "$@"
+  diff -u $outfile -
+  # diff's exit status will kill the script.
+}
+
+test_cleanup()
+{
+  rm -f $remove_files
+  remove_files=
+}
+
+# See test-wrapper.sh, which sets the environment for this.
+testrun()
+{
+  ${elfutils_testrun}_testrun "$@"
+}
+
+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" \
+    $VALGRIND_CMD $program ${1+"$@"}
+  else
+    $VALGRIND_CMD $program ${1+"$@"}
+  fi
+}
+
+program_transform()
+{
+  echo "$*" | sed "${program_transform_name}"
+}
+
+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()
+{
+  exit_status=0
+
+  for file in $self_test_files; do
+      testrun $* $file \
+	  || { echo "*** failure in $* $file"; exit_status=1; }
+  done
+
+  # Only exit if something failed
+  if test $exit_status != 0; then exit $exit_status; fi
+}
+
+# Same as above, but redirects stdout to /dev/null
+testrun_on_self_quiet()
+{
+  exit_status=0
+
+  for file in $self_test_files; do
+      testrun $* $file > /dev/null \
+	  || { echo "*** failure in $* $file"; exit_status=1; }
+  done
+
+  # Only exit if something failed
+  if test $exit_status != 0; then exit $exit_status; fi
+}
diff --git a/src/tests/test-wrapper.sh b/src/tests/test-wrapper.sh
new file mode 100755
index 0000000..09b4d49
--- /dev/null
+++ b/src/tests/test-wrapper.sh
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2005-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/>.
+
+
+# We don't compile in an rpath because we want "make installcheck" to
+# use the installed libraries.  So for local test runs we need to point
+# the library path at this build.
+
+# This wrapper script is called by the makefile, in one of two ways:
+#	$(srcdir)/test-wrapper.sh ../libelf:... run-test.sh ...
+# or:
+#	$(srcdir)/test-wrapper.sh installed s,^,eu-, run-test.sh ...
+
+if [ "$1" = installed ]; then
+  shift
+  elfutils_tests_rpath=$1
+  shift
+  program_transform_name="$1"
+  shift
+  elfutils_testrun=installed
+else
+  built_library_path="$1"
+  shift
+  elfutils_testrun=built
+fi
+
+old_path="${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
+
+case "$1" in
+*.sh)
+  export built_library_path program_transform_name elfutils_testrun
+  export elfutils_tests_rpath
+  ;;
+*)
+  if [ $elfutils_testrun = built ]; then
+    LD_LIBRARY_PATH="$built_library_path$old_path"
+  elif [ $elfutils_tests_rpath = yes ]; then
+    echo >&2 installcheck not possible with --enable-tests-rpath
+    exit 77
+  elif [ "x$libdir" != x/usr/lib ] && [ "x$libdir" != x/usr/lib64 ]; then
+    LD_LIBRARY_PATH="${libdir}:${libdir}/elfutils$old_path"
+  fi
+  export LD_LIBRARY_PATH
+  ;;
+esac
+
+if [ "x$VALGRIND_CMD" != "x" ]; then
+  export VALGRIND_CMD
+fi
+
+exec "$@"
diff --git a/src/tests/testarchive64.a.bz2 b/src/tests/testarchive64.a.bz2
new file mode 100644
index 0000000..4b54603
--- /dev/null
+++ b/src/tests/testarchive64.a.bz2
Binary files differ
diff --git a/src/tests/testcore-rtlib-ppc.bz2 b/src/tests/testcore-rtlib-ppc.bz2
new file mode 100644
index 0000000..a3cec60
--- /dev/null
+++ b/src/tests/testcore-rtlib-ppc.bz2
Binary files differ
diff --git a/src/tests/testcore-rtlib.bz2 b/src/tests/testcore-rtlib.bz2
new file mode 100644
index 0000000..1dc0f1a
--- /dev/null
+++ b/src/tests/testcore-rtlib.bz2
Binary files differ
diff --git a/src/tests/testfile-backtrace-demangle.bz2 b/src/tests/testfile-backtrace-demangle.bz2
new file mode 100755
index 0000000..f0294df
--- /dev/null
+++ b/src/tests/testfile-backtrace-demangle.bz2
Binary files differ
diff --git a/src/tests/testfile-backtrace-demangle.cc b/src/tests/testfile-backtrace-demangle.cc
new file mode 100644
index 0000000..27fff68
--- /dev/null
+++ b/src/tests/testfile-backtrace-demangle.cc
@@ -0,0 +1,47 @@
+/* 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();
+}
diff --git a/src/tests/testfile-backtrace-demangle.core.bz2 b/src/tests/testfile-backtrace-demangle.core.bz2
new file mode 100644
index 0000000..263c304
--- /dev/null
+++ b/src/tests/testfile-backtrace-demangle.core.bz2
Binary files differ
diff --git a/src/tests/testfile-debug.bz2 b/src/tests/testfile-debug.bz2
new file mode 100755
index 0000000..88e59de
--- /dev/null
+++ b/src/tests/testfile-debug.bz2
Binary files differ
diff --git a/src/tests/testfile-dwfl-report-elf-align-shlib.so.bz2 b/src/tests/testfile-dwfl-report-elf-align-shlib.so.bz2
new file mode 100755
index 0000000..1f35df9
--- /dev/null
+++ b/src/tests/testfile-dwfl-report-elf-align-shlib.so.bz2
Binary files differ
diff --git a/src/tests/testfile-dwzstr.bz2 b/src/tests/testfile-dwzstr.bz2
new file mode 100755
index 0000000..8d2d326
--- /dev/null
+++ b/src/tests/testfile-dwzstr.bz2
Binary files differ
diff --git a/src/tests/testfile-dwzstr.multi.bz2 b/src/tests/testfile-dwzstr.multi.bz2
new file mode 100644
index 0000000..5e84991
--- /dev/null
+++ b/src/tests/testfile-dwzstr.multi.bz2
Binary files differ
diff --git a/src/tests/testfile-inlines.bz2 b/src/tests/testfile-inlines.bz2
new file mode 100755
index 0000000..6a0c7c5
--- /dev/null
+++ b/src/tests/testfile-inlines.bz2
Binary files differ
diff --git a/src/tests/testfile-lex-inlines.bz2 b/src/tests/testfile-lex-inlines.bz2
new file mode 100755
index 0000000..716e792
--- /dev/null
+++ b/src/tests/testfile-lex-inlines.bz2
Binary files differ
diff --git a/src/tests/testfile-macinfo.bz2 b/src/tests/testfile-macinfo.bz2
new file mode 100755
index 0000000..e6cc5f1
--- /dev/null
+++ b/src/tests/testfile-macinfo.bz2
Binary files differ
diff --git a/src/tests/testfile-macros-0xff.bz2 b/src/tests/testfile-macros-0xff.bz2
new file mode 100755
index 0000000..a19662a
--- /dev/null
+++ b/src/tests/testfile-macros-0xff.bz2
Binary files differ
diff --git a/src/tests/testfile-macros.bz2 b/src/tests/testfile-macros.bz2
new file mode 100755
index 0000000..d74df94
--- /dev/null
+++ b/src/tests/testfile-macros.bz2
Binary files differ
diff --git a/src/tests/testfile-sizes1.o.bz2 b/src/tests/testfile-sizes1.o.bz2
new file mode 100644
index 0000000..479ecb2
--- /dev/null
+++ b/src/tests/testfile-sizes1.o.bz2
Binary files differ
diff --git a/src/tests/testfile-sizes2.o.bz2 b/src/tests/testfile-sizes2.o.bz2
new file mode 100644
index 0000000..7bd7b47
--- /dev/null
+++ b/src/tests/testfile-sizes2.o.bz2
Binary files differ
diff --git a/src/tests/testfile-sizes3.o.bz2 b/src/tests/testfile-sizes3.o.bz2
new file mode 100644
index 0000000..7fa6a8a
--- /dev/null
+++ b/src/tests/testfile-sizes3.o.bz2
Binary files differ
diff --git a/src/tests/testfile-zdebug.bz2 b/src/tests/testfile-zdebug.bz2
new file mode 100755
index 0000000..784041c
--- /dev/null
+++ b/src/tests/testfile-zdebug.bz2
Binary files differ
diff --git a/src/tests/testfile.bz2 b/src/tests/testfile.bz2
new file mode 100644
index 0000000..bde9b12
--- /dev/null
+++ b/src/tests/testfile.bz2
Binary files differ
diff --git a/src/tests/testfile10.bz2 b/src/tests/testfile10.bz2
new file mode 100644
index 0000000..e9dd504
--- /dev/null
+++ b/src/tests/testfile10.bz2
Binary files differ
diff --git a/src/tests/testfile11.bz2 b/src/tests/testfile11.bz2
new file mode 100644
index 0000000..d094b84
--- /dev/null
+++ b/src/tests/testfile11.bz2
Binary files differ
diff --git a/src/tests/testfile12.bz2 b/src/tests/testfile12.bz2
new file mode 100644
index 0000000..8bb5ad3
--- /dev/null
+++ b/src/tests/testfile12.bz2
Binary files differ
diff --git a/src/tests/testfile13.bz2 b/src/tests/testfile13.bz2
new file mode 100644
index 0000000..3b0bcb9
--- /dev/null
+++ b/src/tests/testfile13.bz2
Binary files differ
diff --git a/src/tests/testfile14.bz2 b/src/tests/testfile14.bz2
new file mode 100644
index 0000000..ac7c69e
--- /dev/null
+++ b/src/tests/testfile14.bz2
Binary files differ
diff --git a/src/tests/testfile15.bz2 b/src/tests/testfile15.bz2
new file mode 100644
index 0000000..e75f457
--- /dev/null
+++ b/src/tests/testfile15.bz2
Binary files differ
diff --git a/src/tests/testfile15.debug.bz2 b/src/tests/testfile15.debug.bz2
new file mode 100644
index 0000000..5c86900
--- /dev/null
+++ b/src/tests/testfile15.debug.bz2
Binary files differ
diff --git a/src/tests/testfile16.bz2 b/src/tests/testfile16.bz2
new file mode 100644
index 0000000..4d7160c
--- /dev/null
+++ b/src/tests/testfile16.bz2
Binary files differ
diff --git a/src/tests/testfile16.debug.bz2 b/src/tests/testfile16.debug.bz2
new file mode 100644
index 0000000..f02a972
--- /dev/null
+++ b/src/tests/testfile16.debug.bz2
Binary files differ
diff --git a/src/tests/testfile17.bz2 b/src/tests/testfile17.bz2
new file mode 100644
index 0000000..5a12320
--- /dev/null
+++ b/src/tests/testfile17.bz2
Binary files differ
diff --git a/src/tests/testfile17.debug.bz2 b/src/tests/testfile17.debug.bz2
new file mode 100644
index 0000000..86a76ab
--- /dev/null
+++ b/src/tests/testfile17.debug.bz2
Binary files differ
diff --git a/src/tests/testfile18.bz2 b/src/tests/testfile18.bz2
new file mode 100644
index 0000000..8b5326c
--- /dev/null
+++ b/src/tests/testfile18.bz2
Binary files differ
diff --git a/src/tests/testfile19.bz2 b/src/tests/testfile19.bz2
new file mode 100644
index 0000000..f3e6512
--- /dev/null
+++ b/src/tests/testfile19.bz2
Binary files differ
diff --git a/src/tests/testfile19.index.bz2 b/src/tests/testfile19.index.bz2
new file mode 100644
index 0000000..c0a0a7a
--- /dev/null
+++ b/src/tests/testfile19.index.bz2
Binary files differ
diff --git a/src/tests/testfile2.bz2 b/src/tests/testfile2.bz2
new file mode 100644
index 0000000..0771311
--- /dev/null
+++ b/src/tests/testfile2.bz2
Binary files differ
diff --git a/src/tests/testfile20.bz2 b/src/tests/testfile20.bz2
new file mode 100644
index 0000000..a379f6b
--- /dev/null
+++ b/src/tests/testfile20.bz2
Binary files differ
diff --git a/src/tests/testfile20.index.bz2 b/src/tests/testfile20.index.bz2
new file mode 100644
index 0000000..08dedaf
--- /dev/null
+++ b/src/tests/testfile20.index.bz2
Binary files differ
diff --git a/src/tests/testfile21.bz2 b/src/tests/testfile21.bz2
new file mode 100644
index 0000000..bab7e6d
--- /dev/null
+++ b/src/tests/testfile21.bz2
Binary files differ
diff --git a/src/tests/testfile21.index.bz2 b/src/tests/testfile21.index.bz2
new file mode 100644
index 0000000..5192219
--- /dev/null
+++ b/src/tests/testfile21.index.bz2
Binary files differ
diff --git a/src/tests/testfile22.bz2 b/src/tests/testfile22.bz2
new file mode 100644
index 0000000..8c26270
--- /dev/null
+++ b/src/tests/testfile22.bz2
Binary files differ
diff --git a/src/tests/testfile23.bz2 b/src/tests/testfile23.bz2
new file mode 100644
index 0000000..cf0ce55
--- /dev/null
+++ b/src/tests/testfile23.bz2
Binary files differ
diff --git a/src/tests/testfile24.bz2 b/src/tests/testfile24.bz2
new file mode 100644
index 0000000..2320acb
--- /dev/null
+++ b/src/tests/testfile24.bz2
Binary files differ
diff --git a/src/tests/testfile25.bz2 b/src/tests/testfile25.bz2
new file mode 100644
index 0000000..51e0421
--- /dev/null
+++ b/src/tests/testfile25.bz2
Binary files differ
diff --git a/src/tests/testfile26.bz2 b/src/tests/testfile26.bz2
new file mode 100644
index 0000000..1f86285
--- /dev/null
+++ b/src/tests/testfile26.bz2
Binary files differ
diff --git a/src/tests/testfile27.bz2 b/src/tests/testfile27.bz2
new file mode 100644
index 0000000..9d06cd9
--- /dev/null
+++ b/src/tests/testfile27.bz2
Binary files differ
diff --git a/src/tests/testfile28.bz2 b/src/tests/testfile28.bz2
new file mode 100644
index 0000000..ca0dff3
--- /dev/null
+++ b/src/tests/testfile28.bz2
Binary files differ
diff --git a/src/tests/testfile28.rdwr.bz2 b/src/tests/testfile28.rdwr.bz2
new file mode 100644
index 0000000..4c65848
--- /dev/null
+++ b/src/tests/testfile28.rdwr.bz2
Binary files differ
diff --git a/src/tests/testfile29.bz2 b/src/tests/testfile29.bz2
new file mode 100644
index 0000000..b46451b
--- /dev/null
+++ b/src/tests/testfile29.bz2
Binary files differ
diff --git a/src/tests/testfile29.rdwr.bz2 b/src/tests/testfile29.rdwr.bz2
new file mode 100644
index 0000000..42eadc7
--- /dev/null
+++ b/src/tests/testfile29.rdwr.bz2
Binary files differ
diff --git a/src/tests/testfile3.bz2 b/src/tests/testfile3.bz2
new file mode 100644
index 0000000..30a456c
--- /dev/null
+++ b/src/tests/testfile3.bz2
Binary files differ
diff --git a/src/tests/testfile30.bz2 b/src/tests/testfile30.bz2
new file mode 100644
index 0000000..9ee93c0
--- /dev/null
+++ b/src/tests/testfile30.bz2
Binary files differ
diff --git a/src/tests/testfile31.bz2 b/src/tests/testfile31.bz2
new file mode 100644
index 0000000..73451d2
--- /dev/null
+++ b/src/tests/testfile31.bz2
Binary files differ
diff --git a/src/tests/testfile32.bz2 b/src/tests/testfile32.bz2
new file mode 100644
index 0000000..7e3c73e
--- /dev/null
+++ b/src/tests/testfile32.bz2
Binary files differ
diff --git a/src/tests/testfile33.bz2 b/src/tests/testfile33.bz2
new file mode 100644
index 0000000..f3dbc73
--- /dev/null
+++ b/src/tests/testfile33.bz2
Binary files differ
diff --git a/src/tests/testfile34.bz2 b/src/tests/testfile34.bz2
new file mode 100644
index 0000000..a417fcb
--- /dev/null
+++ b/src/tests/testfile34.bz2
Binary files differ
diff --git a/src/tests/testfile35.bz2 b/src/tests/testfile35.bz2
new file mode 100644
index 0000000..b591301
--- /dev/null
+++ b/src/tests/testfile35.bz2
Binary files differ
diff --git a/src/tests/testfile35.debug.bz2 b/src/tests/testfile35.debug.bz2
new file mode 100644
index 0000000..f191862
--- /dev/null
+++ b/src/tests/testfile35.debug.bz2
Binary files differ
diff --git a/src/tests/testfile36.bz2 b/src/tests/testfile36.bz2
new file mode 100644
index 0000000..e912a19
--- /dev/null
+++ b/src/tests/testfile36.bz2
Binary files differ
diff --git a/src/tests/testfile36.debug.bz2 b/src/tests/testfile36.debug.bz2
new file mode 100644
index 0000000..76aca42
--- /dev/null
+++ b/src/tests/testfile36.debug.bz2
Binary files differ
diff --git a/src/tests/testfile37.bz2 b/src/tests/testfile37.bz2
new file mode 100644
index 0000000..254ce32
--- /dev/null
+++ b/src/tests/testfile37.bz2
Binary files differ
diff --git a/src/tests/testfile37.debug.bz2 b/src/tests/testfile37.debug.bz2
new file mode 100644
index 0000000..74e46a8
--- /dev/null
+++ b/src/tests/testfile37.debug.bz2
Binary files differ
diff --git a/src/tests/testfile38.bz2 b/src/tests/testfile38.bz2
new file mode 100644
index 0000000..42adb77
--- /dev/null
+++ b/src/tests/testfile38.bz2
Binary files differ
diff --git a/src/tests/testfile39.bz2 b/src/tests/testfile39.bz2
new file mode 100644
index 0000000..42d0fbc
--- /dev/null
+++ b/src/tests/testfile39.bz2
Binary files differ
diff --git a/src/tests/testfile4.bz2 b/src/tests/testfile4.bz2
new file mode 100644
index 0000000..25b25df
--- /dev/null
+++ b/src/tests/testfile4.bz2
Binary files differ
diff --git a/src/tests/testfile40.bz2 b/src/tests/testfile40.bz2
new file mode 100644
index 0000000..ad41985
--- /dev/null
+++ b/src/tests/testfile40.bz2
Binary files differ
diff --git a/src/tests/testfile40.debug.bz2 b/src/tests/testfile40.debug.bz2
new file mode 100644
index 0000000..2eec4d7
--- /dev/null
+++ b/src/tests/testfile40.debug.bz2
Binary files differ
diff --git a/src/tests/testfile41.bz2 b/src/tests/testfile41.bz2
new file mode 100644
index 0000000..f9bf5a4
--- /dev/null
+++ b/src/tests/testfile41.bz2
Binary files differ
diff --git a/src/tests/testfile42.bz2 b/src/tests/testfile42.bz2
new file mode 100644
index 0000000..2530aba
--- /dev/null
+++ b/src/tests/testfile42.bz2
Binary files differ
diff --git a/src/tests/testfile42_noshdrs.bz2 b/src/tests/testfile42_noshdrs.bz2
new file mode 100644
index 0000000..e50f750
--- /dev/null
+++ b/src/tests/testfile42_noshdrs.bz2
Binary files differ
diff --git a/src/tests/testfile43.bz2 b/src/tests/testfile43.bz2
new file mode 100644
index 0000000..c99db24
--- /dev/null
+++ b/src/tests/testfile43.bz2
Binary files differ
diff --git a/src/tests/testfile44.S.bz2 b/src/tests/testfile44.S.bz2
new file mode 100644
index 0000000..4e87434
--- /dev/null
+++ b/src/tests/testfile44.S.bz2
Binary files differ
diff --git a/src/tests/testfile44.expect.bz2 b/src/tests/testfile44.expect.bz2
new file mode 100644
index 0000000..b3937b9
--- /dev/null
+++ b/src/tests/testfile44.expect.bz2
Binary files differ
diff --git a/src/tests/testfile45.S.bz2 b/src/tests/testfile45.S.bz2
new file mode 100644
index 0000000..00e819e
--- /dev/null
+++ b/src/tests/testfile45.S.bz2
Binary files differ
diff --git a/src/tests/testfile45.expect.bz2 b/src/tests/testfile45.expect.bz2
new file mode 100644
index 0000000..b8b33e9
--- /dev/null
+++ b/src/tests/testfile45.expect.bz2
Binary files differ
diff --git a/src/tests/testfile46.bz2 b/src/tests/testfile46.bz2
new file mode 100644
index 0000000..db83b27
--- /dev/null
+++ b/src/tests/testfile46.bz2
Binary files differ
diff --git a/src/tests/testfile47.bz2 b/src/tests/testfile47.bz2
new file mode 100644
index 0000000..334bd6c
--- /dev/null
+++ b/src/tests/testfile47.bz2
Binary files differ
diff --git a/src/tests/testfile48.bz2 b/src/tests/testfile48.bz2
new file mode 100644
index 0000000..da0d9da
--- /dev/null
+++ b/src/tests/testfile48.bz2
Binary files differ
diff --git a/src/tests/testfile48.debug.bz2 b/src/tests/testfile48.debug.bz2
new file mode 100644
index 0000000..7b84c4c
--- /dev/null
+++ b/src/tests/testfile48.debug.bz2
Binary files differ
diff --git a/src/tests/testfile49.bz2 b/src/tests/testfile49.bz2
new file mode 100644
index 0000000..8741a6b
--- /dev/null
+++ b/src/tests/testfile49.bz2
Binary files differ
diff --git a/src/tests/testfile5.bz2 b/src/tests/testfile5.bz2
new file mode 100644
index 0000000..247313e
--- /dev/null
+++ b/src/tests/testfile5.bz2
Binary files differ
diff --git a/src/tests/testfile50.bz2 b/src/tests/testfile50.bz2
new file mode 100644
index 0000000..fce4332
--- /dev/null
+++ b/src/tests/testfile50.bz2
Binary files differ
diff --git a/src/tests/testfile51.bz2 b/src/tests/testfile51.bz2
new file mode 100755
index 0000000..5ff45c6
--- /dev/null
+++ b/src/tests/testfile51.bz2
Binary files differ
diff --git a/src/tests/testfile52-32.noshdrs.so.bz2 b/src/tests/testfile52-32.noshdrs.so.bz2
new file mode 100755
index 0000000..01d2742
--- /dev/null
+++ b/src/tests/testfile52-32.noshdrs.so.bz2
Binary files differ
diff --git a/src/tests/testfile52-32.prelink.so.bz2 b/src/tests/testfile52-32.prelink.so.bz2
new file mode 100755
index 0000000..ccb9ae3
--- /dev/null
+++ b/src/tests/testfile52-32.prelink.so.bz2
Binary files differ
diff --git a/src/tests/testfile52-32.so.bz2 b/src/tests/testfile52-32.so.bz2
new file mode 100755
index 0000000..2a5b56e
--- /dev/null
+++ b/src/tests/testfile52-32.so.bz2
Binary files differ
diff --git a/src/tests/testfile52-32.so.debug.bz2 b/src/tests/testfile52-32.so.debug.bz2
new file mode 100755
index 0000000..818b36d
--- /dev/null
+++ b/src/tests/testfile52-32.so.debug.bz2
Binary files differ
diff --git a/src/tests/testfile52-64.noshdrs.so.bz2 b/src/tests/testfile52-64.noshdrs.so.bz2
new file mode 100755
index 0000000..5ca310f
--- /dev/null
+++ b/src/tests/testfile52-64.noshdrs.so.bz2
Binary files differ
diff --git a/src/tests/testfile52-64.prelink.so.bz2 b/src/tests/testfile52-64.prelink.so.bz2
new file mode 100755
index 0000000..8cb8f48
--- /dev/null
+++ b/src/tests/testfile52-64.prelink.so.bz2
Binary files differ
diff --git a/src/tests/testfile52-64.so.bz2 b/src/tests/testfile52-64.so.bz2
new file mode 100755
index 0000000..8009f07
--- /dev/null
+++ b/src/tests/testfile52-64.so.bz2
Binary files differ
diff --git a/src/tests/testfile52-64.so.debug.bz2 b/src/tests/testfile52-64.so.debug.bz2
new file mode 100755
index 0000000..4397788
--- /dev/null
+++ b/src/tests/testfile52-64.so.debug.bz2
Binary files differ
diff --git a/src/tests/testfile53-32.bz2 b/src/tests/testfile53-32.bz2
new file mode 100755
index 0000000..7bf48d9
--- /dev/null
+++ b/src/tests/testfile53-32.bz2
Binary files differ
diff --git a/src/tests/testfile53-32.debug.bz2 b/src/tests/testfile53-32.debug.bz2
new file mode 100755
index 0000000..79ea566
--- /dev/null
+++ b/src/tests/testfile53-32.debug.bz2
Binary files differ
diff --git a/src/tests/testfile53-32.prelink.bz2 b/src/tests/testfile53-32.prelink.bz2
new file mode 100755
index 0000000..8e05abf
--- /dev/null
+++ b/src/tests/testfile53-32.prelink.bz2
Binary files differ
diff --git a/src/tests/testfile53-64.bz2 b/src/tests/testfile53-64.bz2
new file mode 100755
index 0000000..235a763
--- /dev/null
+++ b/src/tests/testfile53-64.bz2
Binary files differ
diff --git a/src/tests/testfile53-64.debug.bz2 b/src/tests/testfile53-64.debug.bz2
new file mode 100755
index 0000000..675c6ea
--- /dev/null
+++ b/src/tests/testfile53-64.debug.bz2
Binary files differ
diff --git a/src/tests/testfile53-64.prelink.bz2 b/src/tests/testfile53-64.prelink.bz2
new file mode 100755
index 0000000..853aba7
--- /dev/null
+++ b/src/tests/testfile53-64.prelink.bz2
Binary files differ
diff --git a/src/tests/testfile54-32.noshdrs.so.bz2 b/src/tests/testfile54-32.noshdrs.so.bz2
new file mode 100755
index 0000000..846bc91
--- /dev/null
+++ b/src/tests/testfile54-32.noshdrs.so.bz2
Binary files differ
diff --git a/src/tests/testfile54-32.prelink.so.bz2 b/src/tests/testfile54-32.prelink.so.bz2
new file mode 100755
index 0000000..85c8526
--- /dev/null
+++ b/src/tests/testfile54-32.prelink.so.bz2
Binary files differ
diff --git a/src/tests/testfile54-32.so.bz2 b/src/tests/testfile54-32.so.bz2
new file mode 100755
index 0000000..4bc4fa3
--- /dev/null
+++ b/src/tests/testfile54-32.so.bz2
Binary files differ
diff --git a/src/tests/testfile54-32.so.debug.bz2 b/src/tests/testfile54-32.so.debug.bz2
new file mode 100755
index 0000000..79dd614
--- /dev/null
+++ b/src/tests/testfile54-32.so.debug.bz2
Binary files differ
diff --git a/src/tests/testfile54-64.noshdrs.so.bz2 b/src/tests/testfile54-64.noshdrs.so.bz2
new file mode 100755
index 0000000..3da726a
--- /dev/null
+++ b/src/tests/testfile54-64.noshdrs.so.bz2
Binary files differ
diff --git a/src/tests/testfile54-64.prelink.so.bz2 b/src/tests/testfile54-64.prelink.so.bz2
new file mode 100755
index 0000000..e296a1d
--- /dev/null
+++ b/src/tests/testfile54-64.prelink.so.bz2
Binary files differ
diff --git a/src/tests/testfile54-64.so.bz2 b/src/tests/testfile54-64.so.bz2
new file mode 100755
index 0000000..6072bf1
--- /dev/null
+++ b/src/tests/testfile54-64.so.bz2
Binary files differ
diff --git a/src/tests/testfile54-64.so.debug.bz2 b/src/tests/testfile54-64.so.debug.bz2
new file mode 100755
index 0000000..6b45390
--- /dev/null
+++ b/src/tests/testfile54-64.so.debug.bz2
Binary files differ
diff --git a/src/tests/testfile55-32.bz2 b/src/tests/testfile55-32.bz2
new file mode 100755
index 0000000..d4cc986
--- /dev/null
+++ b/src/tests/testfile55-32.bz2
Binary files differ
diff --git a/src/tests/testfile55-32.debug.bz2 b/src/tests/testfile55-32.debug.bz2
new file mode 100755
index 0000000..c5aa3f6
--- /dev/null
+++ b/src/tests/testfile55-32.debug.bz2
Binary files differ
diff --git a/src/tests/testfile55-32.prelink.bz2 b/src/tests/testfile55-32.prelink.bz2
new file mode 100755
index 0000000..4fc171a
--- /dev/null
+++ b/src/tests/testfile55-32.prelink.bz2
Binary files differ
diff --git a/src/tests/testfile55-64.bz2 b/src/tests/testfile55-64.bz2
new file mode 100755
index 0000000..27341fa
--- /dev/null
+++ b/src/tests/testfile55-64.bz2
Binary files differ
diff --git a/src/tests/testfile55-64.debug.bz2 b/src/tests/testfile55-64.debug.bz2
new file mode 100755
index 0000000..d975c70
--- /dev/null
+++ b/src/tests/testfile55-64.debug.bz2
Binary files differ
diff --git a/src/tests/testfile55-64.prelink.bz2 b/src/tests/testfile55-64.prelink.bz2
new file mode 100755
index 0000000..a4338fe
--- /dev/null
+++ b/src/tests/testfile55-64.prelink.bz2
Binary files differ
diff --git a/src/tests/testfile56.bz2 b/src/tests/testfile56.bz2
new file mode 100644
index 0000000..0e2257c
--- /dev/null
+++ b/src/tests/testfile56.bz2
Binary files differ
diff --git a/src/tests/testfile57.bz2 b/src/tests/testfile57.bz2
new file mode 100644
index 0000000..59dbde1
--- /dev/null
+++ b/src/tests/testfile57.bz2
Binary files differ
diff --git a/src/tests/testfile58.bz2 b/src/tests/testfile58.bz2
new file mode 100644
index 0000000..839efd9
--- /dev/null
+++ b/src/tests/testfile58.bz2
Binary files differ
diff --git a/src/tests/testfile59.bz2 b/src/tests/testfile59.bz2
new file mode 100755
index 0000000..bcee648
--- /dev/null
+++ b/src/tests/testfile59.bz2
Binary files differ
diff --git a/src/tests/testfile6.bz2 b/src/tests/testfile6.bz2
new file mode 100644
index 0000000..fd376b2
--- /dev/null
+++ b/src/tests/testfile6.bz2
Binary files differ
diff --git a/src/tests/testfile60.bz2 b/src/tests/testfile60.bz2
new file mode 100755
index 0000000..6a0cd7b
--- /dev/null
+++ b/src/tests/testfile60.bz2
Binary files differ
diff --git a/src/tests/testfile61.bz2 b/src/tests/testfile61.bz2
new file mode 100644
index 0000000..d139389
--- /dev/null
+++ b/src/tests/testfile61.bz2
Binary files differ
diff --git a/src/tests/testfile62.bz2 b/src/tests/testfile62.bz2
new file mode 100644
index 0000000..8a42cf6
--- /dev/null
+++ b/src/tests/testfile62.bz2
Binary files differ
diff --git a/src/tests/testfile63.bz2 b/src/tests/testfile63.bz2
new file mode 100644
index 0000000..4be87cd
--- /dev/null
+++ b/src/tests/testfile63.bz2
Binary files differ
diff --git a/src/tests/testfile64.bz2 b/src/tests/testfile64.bz2
new file mode 100644
index 0000000..674bd53
--- /dev/null
+++ b/src/tests/testfile64.bz2
Binary files differ
diff --git a/src/tests/testfile65.bz2 b/src/tests/testfile65.bz2
new file mode 100644
index 0000000..5e925f8
--- /dev/null
+++ b/src/tests/testfile65.bz2
Binary files differ
diff --git a/src/tests/testfile66.bz2 b/src/tests/testfile66.bz2
new file mode 100755
index 0000000..4797590
--- /dev/null
+++ b/src/tests/testfile66.bz2
Binary files differ
diff --git a/src/tests/testfile66.core.bz2 b/src/tests/testfile66.core.bz2
new file mode 100644
index 0000000..12e2d44
--- /dev/null
+++ b/src/tests/testfile66.core.bz2
Binary files differ
diff --git a/src/tests/testfile67.bz2 b/src/tests/testfile67.bz2
new file mode 100644
index 0000000..bb64745
--- /dev/null
+++ b/src/tests/testfile67.bz2
Binary files differ
diff --git a/src/tests/testfile68.bz2 b/src/tests/testfile68.bz2
new file mode 100644
index 0000000..3fe6792
--- /dev/null
+++ b/src/tests/testfile68.bz2
Binary files differ
diff --git a/src/tests/testfile69.core.bz2 b/src/tests/testfile69.core.bz2
new file mode 100644
index 0000000..9955318
--- /dev/null
+++ b/src/tests/testfile69.core.bz2
Binary files differ
diff --git a/src/tests/testfile69.so.bz2 b/src/tests/testfile69.so.bz2
new file mode 100755
index 0000000..fdddab9
--- /dev/null
+++ b/src/tests/testfile69.so.bz2
Binary files differ
diff --git a/src/tests/testfile7.bz2 b/src/tests/testfile7.bz2
new file mode 100644
index 0000000..73452bb
--- /dev/null
+++ b/src/tests/testfile7.bz2
Binary files differ
diff --git a/src/tests/testfile70.core.bz2 b/src/tests/testfile70.core.bz2
new file mode 100644
index 0000000..6c47c6d
--- /dev/null
+++ b/src/tests/testfile70.core.bz2
Binary files differ
diff --git a/src/tests/testfile70.exec.bz2 b/src/tests/testfile70.exec.bz2
new file mode 100644
index 0000000..f1b969a
--- /dev/null
+++ b/src/tests/testfile70.exec.bz2
Binary files differ
diff --git a/src/tests/testfile71.bz2 b/src/tests/testfile71.bz2
new file mode 100644
index 0000000..ce5b08f
--- /dev/null
+++ b/src/tests/testfile71.bz2
Binary files differ
diff --git a/src/tests/testfile8.bz2 b/src/tests/testfile8.bz2
new file mode 100644
index 0000000..1ff4994
--- /dev/null
+++ b/src/tests/testfile8.bz2
Binary files differ
diff --git a/src/tests/testfile9.bz2 b/src/tests/testfile9.bz2
new file mode 100644
index 0000000..40454bc
--- /dev/null
+++ b/src/tests/testfile9.bz2
Binary files differ
diff --git a/src/tests/testfile_aarch64_core.bz2 b/src/tests/testfile_aarch64_core.bz2
new file mode 100644
index 0000000..9d56268
--- /dev/null
+++ b/src/tests/testfile_aarch64_core.bz2
Binary files differ
diff --git a/src/tests/testfile_class_func.bz2 b/src/tests/testfile_class_func.bz2
new file mode 100755
index 0000000..e40dcf2
--- /dev/null
+++ b/src/tests/testfile_class_func.bz2
Binary files differ
diff --git a/src/tests/testfile_const_type.bz2 b/src/tests/testfile_const_type.bz2
new file mode 100755
index 0000000..fea4a9c
--- /dev/null
+++ b/src/tests/testfile_const_type.bz2
Binary files differ
diff --git a/src/tests/testfile_const_type.c b/src/tests/testfile_const_type.c
new file mode 100644
index 0000000..259007d
--- /dev/null
+++ b/src/tests/testfile_const_type.c
@@ -0,0 +1,14 @@
+// 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);
+}
diff --git a/src/tests/testfile_entry_value.bz2 b/src/tests/testfile_entry_value.bz2
new file mode 100755
index 0000000..fde86c6
--- /dev/null
+++ b/src/tests/testfile_entry_value.bz2
Binary files differ
diff --git a/src/tests/testfile_entry_value.c b/src/tests/testfile_entry_value.c
new file mode 100644
index 0000000..d2f232b
--- /dev/null
+++ b/src/tests/testfile_entry_value.c
@@ -0,0 +1,19 @@
+// 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);
+}
diff --git a/src/tests/testfile_i686_core.bz2 b/src/tests/testfile_i686_core.bz2
new file mode 100644
index 0000000..8412776
--- /dev/null
+++ b/src/tests/testfile_i686_core.bz2
Binary files differ
diff --git a/src/tests/testfile_implicit_pointer.bz2 b/src/tests/testfile_implicit_pointer.bz2
new file mode 100755
index 0000000..72f6a69
--- /dev/null
+++ b/src/tests/testfile_implicit_pointer.bz2
Binary files differ
diff --git a/src/tests/testfile_implicit_pointer.c b/src/tests/testfile_implicit_pointer.c
new file mode 100644
index 0000000..d7e28a0
--- /dev/null
+++ b/src/tests/testfile_implicit_pointer.c
@@ -0,0 +1,12 @@
+// 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;
+}
diff --git a/src/tests/testfile_implicit_value.bz2 b/src/tests/testfile_implicit_value.bz2
new file mode 100755
index 0000000..c365a99
--- /dev/null
+++ b/src/tests/testfile_implicit_value.bz2
Binary files differ
diff --git a/src/tests/testfile_implicit_value.c b/src/tests/testfile_implicit_value.c
new file mode 100644
index 0000000..8885bbf
--- /dev/null
+++ b/src/tests/testfile_implicit_value.c
@@ -0,0 +1,12 @@
+// 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;
+}
diff --git a/src/tests/testfile_low_high_pc.bz2 b/src/tests/testfile_low_high_pc.bz2
new file mode 100755
index 0000000..f20814a
--- /dev/null
+++ b/src/tests/testfile_low_high_pc.bz2
Binary files differ
diff --git a/src/tests/testfile_multi.dwz.bz2 b/src/tests/testfile_multi.dwz.bz2
new file mode 100644
index 0000000..1f52fb6
--- /dev/null
+++ b/src/tests/testfile_multi.dwz.bz2
Binary files differ
diff --git a/src/tests/testfile_multi_main.bz2 b/src/tests/testfile_multi_main.bz2
new file mode 100755
index 0000000..bc6ca5f
--- /dev/null
+++ b/src/tests/testfile_multi_main.bz2
Binary files differ
diff --git a/src/tests/testfile_nested_funcs.bz2 b/src/tests/testfile_nested_funcs.bz2
new file mode 100755
index 0000000..d36b603
--- /dev/null
+++ b/src/tests/testfile_nested_funcs.bz2
Binary files differ
diff --git a/src/tests/testfile_parameter_ref.bz2 b/src/tests/testfile_parameter_ref.bz2
new file mode 100755
index 0000000..8ff900d
--- /dev/null
+++ b/src/tests/testfile_parameter_ref.bz2
Binary files differ
diff --git a/src/tests/testfile_parameter_ref.c b/src/tests/testfile_parameter_ref.c
new file mode 100644
index 0000000..7fe985f
--- /dev/null
+++ b/src/tests/testfile_parameter_ref.c
@@ -0,0 +1,20 @@
+// 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;
+}
diff --git a/src/tests/testfileaarch64.bz2 b/src/tests/testfileaarch64.bz2
new file mode 100755
index 0000000..72e5ef0
--- /dev/null
+++ b/src/tests/testfileaarch64.bz2
Binary files differ
diff --git a/src/tests/testfilearm.bz2 b/src/tests/testfilearm.bz2
new file mode 100755
index 0000000..d6cd090
--- /dev/null
+++ b/src/tests/testfilearm.bz2
Binary files differ
diff --git a/src/tests/testfilebasmin.bz2 b/src/tests/testfilebasmin.bz2
new file mode 100755
index 0000000..3843972
--- /dev/null
+++ b/src/tests/testfilebasmin.bz2
Binary files differ
diff --git a/src/tests/testfilebaxmin.bz2 b/src/tests/testfilebaxmin.bz2
new file mode 100755
index 0000000..c450cc8
--- /dev/null
+++ b/src/tests/testfilebaxmin.bz2
Binary files differ
diff --git a/src/tests/testfilebazdbg.bz2 b/src/tests/testfilebazdbg.bz2
new file mode 100755
index 0000000..8e58636
--- /dev/null
+++ b/src/tests/testfilebazdbg.bz2
Binary files differ
diff --git a/src/tests/testfilebazdbg.debug.bz2 b/src/tests/testfilebazdbg.debug.bz2
new file mode 100755
index 0000000..3b01176
--- /dev/null
+++ b/src/tests/testfilebazdbg.debug.bz2
Binary files differ
diff --git a/src/tests/testfilebazdbg_pl.bz2 b/src/tests/testfilebazdbg_pl.bz2
new file mode 100755
index 0000000..9e06a80
--- /dev/null
+++ b/src/tests/testfilebazdbg_pl.bz2
Binary files differ
diff --git a/src/tests/testfilebazdbg_plr.bz2 b/src/tests/testfilebazdbg_plr.bz2
new file mode 100755
index 0000000..1bc43dd
--- /dev/null
+++ b/src/tests/testfilebazdbg_plr.bz2
Binary files differ
diff --git a/src/tests/testfilebazdbgppc64.bz2 b/src/tests/testfilebazdbgppc64.bz2
new file mode 100755
index 0000000..17e77d6
--- /dev/null
+++ b/src/tests/testfilebazdbgppc64.bz2
Binary files differ
diff --git a/src/tests/testfilebazdbgppc64.debug.bz2 b/src/tests/testfilebazdbgppc64.debug.bz2
new file mode 100755
index 0000000..8faa17a
--- /dev/null
+++ b/src/tests/testfilebazdbgppc64.debug.bz2
Binary files differ
diff --git a/src/tests/testfilebazdbgppc64_pl.bz2 b/src/tests/testfilebazdbgppc64_pl.bz2
new file mode 100755
index 0000000..9f372fb
--- /dev/null
+++ b/src/tests/testfilebazdbgppc64_pl.bz2
Binary files differ
diff --git a/src/tests/testfilebazdbgppc64_plr.bz2 b/src/tests/testfilebazdbgppc64_plr.bz2
new file mode 100755
index 0000000..70f8e00
--- /dev/null
+++ b/src/tests/testfilebazdbgppc64_plr.bz2
Binary files differ
diff --git a/src/tests/testfilebazdyn.bz2 b/src/tests/testfilebazdyn.bz2
new file mode 100755
index 0000000..bb623bb
--- /dev/null
+++ b/src/tests/testfilebazdyn.bz2
Binary files differ
diff --git a/src/tests/testfilebazdynppc64.bz2 b/src/tests/testfilebazdynppc64.bz2
new file mode 100755
index 0000000..2e01699
--- /dev/null
+++ b/src/tests/testfilebazdynppc64.bz2
Binary files differ
diff --git a/src/tests/testfilebazmdb.bz2 b/src/tests/testfilebazmdb.bz2
new file mode 100755
index 0000000..561eca1
--- /dev/null
+++ b/src/tests/testfilebazmdb.bz2
Binary files differ
diff --git a/src/tests/testfilebazmdbppc64.bz2 b/src/tests/testfilebazmdbppc64.bz2
new file mode 100755
index 0000000..16c2dd0
--- /dev/null
+++ b/src/tests/testfilebazmdbppc64.bz2
Binary files differ
diff --git a/src/tests/testfilebazmin.bz2 b/src/tests/testfilebazmin.bz2
new file mode 100755
index 0000000..12bcc6b
--- /dev/null
+++ b/src/tests/testfilebazmin.bz2
Binary files differ
diff --git a/src/tests/testfilebazmin_pl.bz2 b/src/tests/testfilebazmin_pl.bz2
new file mode 100755
index 0000000..73cef4a
--- /dev/null
+++ b/src/tests/testfilebazmin_pl.bz2
Binary files differ
diff --git a/src/tests/testfilebazmin_plr.bz2 b/src/tests/testfilebazmin_plr.bz2
new file mode 100755
index 0000000..e4fcf85
--- /dev/null
+++ b/src/tests/testfilebazmin_plr.bz2
Binary files differ
diff --git a/src/tests/testfilebazminppc64.bz2 b/src/tests/testfilebazminppc64.bz2
new file mode 100755
index 0000000..364d84c
--- /dev/null
+++ b/src/tests/testfilebazminppc64.bz2
Binary files differ
diff --git a/src/tests/testfilebazminppc64_pl.bz2 b/src/tests/testfilebazminppc64_pl.bz2
new file mode 100755
index 0000000..6686340
--- /dev/null
+++ b/src/tests/testfilebazminppc64_pl.bz2
Binary files differ
diff --git a/src/tests/testfilebazminppc64_plr.bz2 b/src/tests/testfilebazminppc64_plr.bz2
new file mode 100755
index 0000000..4610285
--- /dev/null
+++ b/src/tests/testfilebazminppc64_plr.bz2
Binary files differ
diff --git a/src/tests/testfilebaztab.bz2 b/src/tests/testfilebaztab.bz2
new file mode 100755
index 0000000..a99b739
--- /dev/null
+++ b/src/tests/testfilebaztab.bz2
Binary files differ
diff --git a/src/tests/testfilebaztabppc64.bz2 b/src/tests/testfilebaztabppc64.bz2
new file mode 100755
index 0000000..03afb8c
--- /dev/null
+++ b/src/tests/testfilebaztabppc64.bz2
Binary files differ
diff --git a/src/tests/testfiledwarfinlines.bz2 b/src/tests/testfiledwarfinlines.bz2
new file mode 100755
index 0000000..db14f81
--- /dev/null
+++ b/src/tests/testfiledwarfinlines.bz2
Binary files differ
diff --git a/src/tests/testfiledwarfinlines.core.bz2 b/src/tests/testfiledwarfinlines.core.bz2
new file mode 100644
index 0000000..2299e1e
--- /dev/null
+++ b/src/tests/testfiledwarfinlines.core.bz2
Binary files differ
diff --git a/src/tests/testfilefoobarbaz.bz2 b/src/tests/testfilefoobarbaz.bz2
new file mode 100755
index 0000000..0e721ff
--- /dev/null
+++ b/src/tests/testfilefoobarbaz.bz2
Binary files differ
diff --git a/src/tests/testfilegdbindex5.bz2 b/src/tests/testfilegdbindex5.bz2
new file mode 100755
index 0000000..45ee945
--- /dev/null
+++ b/src/tests/testfilegdbindex5.bz2
Binary files differ
diff --git a/src/tests/testfilegdbindex7.bz2 b/src/tests/testfilegdbindex7.bz2
new file mode 100755
index 0000000..2a7c6c2
--- /dev/null
+++ b/src/tests/testfilegdbindex7.bz2
Binary files differ
diff --git a/src/tests/testfileloc.bz2 b/src/tests/testfileloc.bz2
new file mode 100755
index 0000000..a436965
--- /dev/null
+++ b/src/tests/testfileloc.bz2
Binary files differ
diff --git a/src/tests/testfilemacro.bz2 b/src/tests/testfilemacro.bz2
new file mode 100755
index 0000000..7db51ff
--- /dev/null
+++ b/src/tests/testfilemacro.bz2
Binary files differ
diff --git a/src/tests/testfilenolines.bz2 b/src/tests/testfilenolines.bz2
new file mode 100755
index 0000000..23cd722
--- /dev/null
+++ b/src/tests/testfilenolines.bz2
Binary files differ
diff --git a/src/tests/testfileppc32.bz2 b/src/tests/testfileppc32.bz2
new file mode 100755
index 0000000..f57763a
--- /dev/null
+++ b/src/tests/testfileppc32.bz2
Binary files differ
diff --git a/src/tests/testfileppc32attrs.o.bz2 b/src/tests/testfileppc32attrs.o.bz2
new file mode 100644
index 0000000..c8d80a9
--- /dev/null
+++ b/src/tests/testfileppc32attrs.o.bz2
Binary files differ
diff --git a/src/tests/testfileppc64.bz2 b/src/tests/testfileppc64.bz2
new file mode 100755
index 0000000..870046b
--- /dev/null
+++ b/src/tests/testfileppc64.bz2
Binary files differ
diff --git a/src/tests/testfiles390.bz2 b/src/tests/testfiles390.bz2
new file mode 100755
index 0000000..14ebf6c
--- /dev/null
+++ b/src/tests/testfiles390.bz2
Binary files differ
diff --git a/src/tests/testfiles390x.bz2 b/src/tests/testfiles390x.bz2
new file mode 100755
index 0000000..eb63ed8
--- /dev/null
+++ b/src/tests/testfiles390x.bz2
Binary files differ
diff --git a/src/tests/testlib_dynseg.so.bz2 b/src/tests/testlib_dynseg.so.bz2
new file mode 100755
index 0000000..94296a4
--- /dev/null
+++ b/src/tests/testlib_dynseg.so.bz2
Binary files differ
diff --git a/src/tests/typeiter.c b/src/tests/typeiter.c
new file mode 100644
index 0000000..dff4526
--- /dev/null
+++ b/src/tests/typeiter.c
@@ -0,0 +1,90 @@
+/* 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/>.  */
+
+#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;
+
+	  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;
+		      dwarf_formref_die (dwarf_attr (iter, DW_AT_type,
+						     &attr_mem),
+					 &form_mem);
+		    }
+
+		  if (dwarf_siblingof (iter, &iter_mem) != 0)
+		    break;
+		}
+
+	      off = noff;
+	    }
+
+	  off = 0;
+	  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_Die *die = dwarf_offdie_types (dbg, off + cuhl, &die_mem);
+
+	      if (die == NULL)
+		printf ("fail\n");
+	      else
+		printf ("ok\n");
+
+	      off = noff;
+	    }
+
+	  dwarf_end (dbg);
+	}
+
+      close (fd);
+    }
+}
diff --git a/src/tests/typeiter2.c b/src/tests/typeiter2.c
new file mode 100644
index 0000000..6ddfa38
--- /dev/null
+++ b/src/tests/typeiter2.c
@@ -0,0 +1,89 @@
+/* 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);
+    }
+}
diff --git a/src/tests/update1.c b/src/tests/update1.c
new file mode 100644
index 0000000..f4c1475
--- /dev/null
+++ b/src/tests/update1.c
@@ -0,0 +1,127 @@
+/* Test program for elf_update function.
+   Copyright (C) 2000, 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+   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 <errno.h>
+#include <fcntl.h>
+#include <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+
+int
+main (int argc, char *argv[] __attribute__ ((unused)))
+{
+  const char *fname = "xxx_update1";
+  int fd;
+  Elf *elf;
+  Elf32_Ehdr *ehdr;
+  int i;
+
+  fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+  if (fd == -1)
+    {
+      printf ("cannot open `%s': %s\n", fname, strerror (errno));
+      exit (1);
+    }
+
+  elf_version (EV_CURRENT);
+
+  elf = elf_begin (fd, ELF_C_WRITE, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Create an ELF header.  */
+  ehdr = elf32_newehdr (elf);
+  if (ehdr == NULL)
+    {
+      printf ("cannot create ELF header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Print the ELF header values.  */
+  if (argc > 1)
+    {
+      for (i = 0; i < EI_NIDENT; ++i)
+	printf (" %02x", ehdr->e_ident[i]);
+      printf ("\
+\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n"
+	      "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n"
+	      "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n",
+	      ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry,
+	      ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize,
+	      ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize,
+	      ehdr->e_shnum, ehdr->e_shstrndx);
+    }
+
+  ehdr->e_ident[0] = 42;
+  ehdr->e_ident[4] = 1;
+  ehdr->e_ident[5] = 1;
+  ehdr->e_ident[6] = 2;
+  ehdr->e_ident[9] = 2;
+  ehdr->e_version = 1;
+  ehdr->e_ehsize = 1;
+
+  /* Write out the file.  */
+  if (elf_update (elf, ELF_C_WRITE) < 0)
+    {
+      printf ("failure in elf_update: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Create an ELF header.  */
+  ehdr = elf32_newehdr (elf);
+  if (ehdr == NULL)
+    {
+      printf ("cannot create ELF header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Print the ELF header values.  */
+  if (argc > 1)
+    {
+      for (i = 0; i < EI_NIDENT; ++i)
+	printf (" %02x", ehdr->e_ident[i]);
+      printf ("\
+\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n"
+	      "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n"
+	      "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n",
+	      ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry,
+	      ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize,
+	      ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize,
+	      ehdr->e_shnum, ehdr->e_shstrndx);
+    }
+
+  if (elf_end (elf) != 0)
+    {
+      printf ("failure in elf_end: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  unlink (fname);
+
+  return 0;
+}
diff --git a/src/tests/update2.c b/src/tests/update2.c
new file mode 100644
index 0000000..5805163
--- /dev/null
+++ b/src/tests/update2.c
@@ -0,0 +1,150 @@
+/* Test program for elf_update function.
+   Copyright (C) 2000, 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+   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 <errno.h>
+#include <fcntl.h>
+#include <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+
+int
+main (int argc, char *argv[] __attribute__ ((unused)))
+{
+  const char *fname = "xxx_update2";
+  int fd;
+  Elf *elf;
+  Elf32_Ehdr *ehdr;
+  Elf32_Phdr *phdr;
+  int i;
+
+  fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+  if (fd == -1)
+    {
+      printf ("cannot open `%s': %s\n", fname, strerror (errno));
+      exit (1);
+    }
+
+  elf_version (EV_CURRENT);
+
+  elf = elf_begin (fd, ELF_C_WRITE, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Create an ELF header.  */
+  ehdr = elf32_newehdr (elf);
+  if (ehdr == NULL)
+    {
+      printf ("cannot create ELF header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Print the ELF header values.  */
+  if (argc > 1)
+    {
+      for (i = 0; i < EI_NIDENT; ++i)
+	printf (" %02x", ehdr->e_ident[i]);
+      printf ("\
+\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n"
+	      "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n"
+	      "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n",
+	      ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry,
+	      ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize,
+	      ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize,
+	      ehdr->e_shnum, ehdr->e_shstrndx);
+    }
+
+  ehdr->e_ident[0] = 42;
+  ehdr->e_ident[4] = 1;
+  ehdr->e_ident[5] = 1;
+  ehdr->e_ident[6] = 2;
+  ehdr->e_type = ET_EXEC;
+  ehdr->e_version = 1;
+  ehdr->e_ehsize = 1;
+  elf_flagehdr (elf, ELF_C_SET, ELF_F_DIRTY);
+
+  /* Create the program header.  */
+  phdr = elf32_newphdr (elf, 1);
+  if (phdr == NULL)
+    {
+      printf ("cannot create program header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  phdr[0].p_type = PT_PHDR;
+  elf_flagphdr (elf, ELF_C_SET, ELF_F_DIRTY);
+
+  /* Let the library compute the internal structure information.  */
+  if (elf_update (elf, ELF_C_NULL) < 0)
+    {
+      printf ("failure in elf_update(NULL): %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  ehdr = elf32_getehdr (elf);
+
+  phdr[0].p_offset = ehdr->e_phoff;
+  phdr[0].p_offset = ehdr->e_phoff;
+  phdr[0].p_vaddr = ehdr->e_phoff;
+  phdr[0].p_paddr = ehdr->e_phoff;
+  phdr[0].p_flags = PF_R | PF_X;
+  phdr[0].p_filesz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT);
+  phdr[0].p_memsz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT);
+  phdr[0].p_align = sizeof (Elf32_Word);
+
+  /* Write out the file.  */
+  if (elf_update (elf, ELF_C_WRITE) < 0)
+    {
+      printf ("failure in elf_update(WRITE): %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Print the ELF header values.  */
+  if (argc > 1)
+    {
+      for (i = 0; i < EI_NIDENT; ++i)
+	printf (" %02x", ehdr->e_ident[i]);
+      printf ("\
+\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n"
+	      "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n"
+	      "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n",
+	      ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry,
+	      ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize,
+	      ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize,
+	      ehdr->e_shnum, ehdr->e_shstrndx);
+    }
+
+  if (elf_end (elf) != 0)
+    {
+      printf ("failure in elf_end: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  unlink (fname);
+
+  return 0;
+}
diff --git a/src/tests/update3.c b/src/tests/update3.c
new file mode 100644
index 0000000..d760687
--- /dev/null
+++ b/src/tests/update3.c
@@ -0,0 +1,205 @@
+/* Test program for elf_update function.
+   Copyright (C) 2000, 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+   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 <errno.h>
+#include <fcntl.h>
+#include <libelf.h>
+#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_update3";
+  int fd;
+  Elf *elf;
+  Elf32_Ehdr *ehdr;
+  Elf32_Phdr *phdr;
+  Elf_Scn *scn;
+  Elf32_Shdr *shdr;
+  Elf_Data *data;
+  struct Ebl_Strtab *shst;
+  struct Ebl_Strent *shstrtabse;
+  int i;
+
+  fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+  if (fd == -1)
+    {
+      printf ("cannot open `%s': %s\n", fname, strerror (errno));
+      exit (1);
+    }
+
+  elf_version (EV_CURRENT);
+
+  elf_fill (0x42);
+
+  elf = elf_begin (fd, ELF_C_WRITE, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Create an ELF header.  */
+  ehdr = elf32_newehdr (elf);
+  if (ehdr == NULL)
+    {
+      printf ("cannot create ELF header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Print the ELF header values.  */
+  if (argc > 1)
+    {
+      for (i = 0; i < EI_NIDENT; ++i)
+	printf (" %02x", ehdr->e_ident[i]);
+      printf ("\
+\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n"
+	      "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n"
+	      "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n",
+	      ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry,
+	      ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize,
+	      ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize,
+	      ehdr->e_shnum, ehdr->e_shstrndx);
+    }
+
+  ehdr->e_ident[0] = 42;
+  ehdr->e_ident[4] = 1;
+  ehdr->e_ident[5] = 1;
+  ehdr->e_ident[6] = 2;
+  ehdr->e_type = ET_EXEC;
+  ehdr->e_version = 1;
+  ehdr->e_ehsize = 1;
+  elf_flagehdr (elf, ELF_C_SET, ELF_F_DIRTY);
+
+  /* Create the program header.  */
+  phdr = elf32_newphdr (elf, 1);
+  if (phdr == NULL)
+    {
+      printf ("cannot create program header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  phdr[0].p_type = PT_PHDR;
+  elf_flagphdr (elf, ELF_C_SET, ELF_F_DIRTY);
+
+  shst = ebl_strtabinit (true);
+
+  scn = elf_newscn (elf);
+  if (scn == NULL)
+    {
+      printf ("cannot create SHSTRTAB section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+  shdr = elf32_getshdr (scn);
+  if (shdr == NULL)
+    {
+      printf ("cannot get header for SHSTRTAB section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  shstrtabse = ebl_strtabadd (shst, ".shstrtab", 0);
+
+  shdr->sh_type = SHT_STRTAB;
+  shdr->sh_flags = 0;
+  shdr->sh_addr = 0;
+  shdr->sh_link = SHN_UNDEF;
+  shdr->sh_info = SHN_UNDEF;
+  shdr->sh_addralign = 1;
+  shdr->sh_entsize = 0;
+
+  /* We have to store the section index in the ELF header.  */
+  ehdr->e_shstrndx = elf_ndxscn (scn);
+
+  data = elf_newdata (scn);
+  if (data == NULL)
+    {
+      printf ("cannot create data SHSTRTAB section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* No more sections, finalize the section header string table.  */
+  ebl_strtabfinalize (shst, data);
+
+  shdr->sh_name = ebl_strtaboffset (shstrtabse);
+
+  /* Let the library compute the internal structure information.  */
+  if (elf_update (elf, ELF_C_NULL) < 0)
+    {
+      printf ("failure in elf_update(NULL): %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  ehdr = elf32_getehdr (elf);
+
+  phdr[0].p_offset = ehdr->e_phoff;
+  phdr[0].p_offset = ehdr->e_phoff;
+  phdr[0].p_vaddr = ehdr->e_phoff;
+  phdr[0].p_paddr = ehdr->e_phoff;
+  phdr[0].p_flags = PF_R | PF_X;
+  phdr[0].p_filesz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT);
+  phdr[0].p_memsz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT);
+  phdr[0].p_align = sizeof (Elf32_Word);
+
+  /* Write out the file.  */
+  if (elf_update (elf, ELF_C_WRITE) < 0)
+    {
+      printf ("failure in elf_update(WRITE): %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* We don't need the string table anymore.  */
+  ebl_strtabfree (shst);
+
+  /* And the data allocated in the .shstrtab section.  */
+  free (data->d_buf);
+
+  /* Print the ELF header values.  */
+  if (argc > 1)
+    {
+      for (i = 0; i < EI_NIDENT; ++i)
+	printf (" %02x", ehdr->e_ident[i]);
+      printf ("\
+\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n"
+	      "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n"
+	      "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n",
+	      ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry,
+	      ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize,
+	      ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize,
+	      ehdr->e_shnum, ehdr->e_shstrndx);
+    }
+
+  if (elf_end (elf) != 0)
+    {
+      printf ("failure in elf_end: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  unlink (fname);
+
+  return 0;
+}
diff --git a/src/tests/update4.c b/src/tests/update4.c
new file mode 100644
index 0000000..85de6c3
--- /dev/null
+++ b/src/tests/update4.c
@@ -0,0 +1,357 @@
+/* Test program for elf_update function.
+   Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+   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 <errno.h>
+#include <fcntl.h>
+#include <libelf.h>
+#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_update4";
+  int fd;
+  Elf *elf;
+  Elf32_Ehdr *ehdr;
+  Elf32_Phdr *phdr;
+  Elf_Scn *scn;
+  Elf32_Shdr *shdr;
+  Elf_Data *data;
+  struct Ebl_Strtab *shst;
+  struct Ebl_Strent *firstse;
+  struct Ebl_Strent *secondse;
+  struct Ebl_Strent *thirdse;
+  struct Ebl_Strent *fourthse;
+  struct Ebl_Strent *shstrtabse;
+  int i;
+
+  fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+  if (fd == -1)
+    {
+      printf ("cannot open `%s': %s\n", fname, strerror (errno));
+      exit (1);
+    }
+
+  elf_version (EV_CURRENT);
+
+  elf_fill (0x42);
+
+  elf = elf_begin (fd, ELF_C_WRITE, NULL);
+  if (elf == NULL)
+    {
+      printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Create an ELF header.  */
+  ehdr = elf32_newehdr (elf);
+  if (ehdr == NULL)
+    {
+      printf ("cannot create ELF header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* Print the ELF header values.  */
+  if (argc > 1)
+    {
+      for (i = 0; i < EI_NIDENT; ++i)
+	printf (" %02x", ehdr->e_ident[i]);
+      printf ("\
+\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n"
+	      "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n"
+	      "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n",
+	      ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry,
+	      ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize,
+	      ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize,
+	      ehdr->e_shnum, ehdr->e_shstrndx);
+    }
+
+  ehdr->e_ident[0] = 42;
+  ehdr->e_ident[4] = 1;
+  ehdr->e_ident[5] = 1;
+  ehdr->e_ident[6] = 2;
+  ehdr->e_type = ET_EXEC;
+  ehdr->e_version = 1;
+  ehdr->e_ehsize = 1;
+  elf_flagehdr (elf, ELF_C_SET, ELF_F_DIRTY);
+
+  /* Create the program header.  */
+  phdr = elf32_newphdr (elf, 1);
+  if (phdr == NULL)
+    {
+      printf ("cannot create program header: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  phdr[0].p_type = PT_PHDR;
+  elf_flagphdr (elf, ELF_C_SET, ELF_F_DIRTY);
+
+  shst = ebl_strtabinit (true);
+
+  scn = elf_newscn (elf);
+  if (scn == NULL)
+    {
+      printf ("cannot create first section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+  shdr = elf32_getshdr (scn);
+  if (shdr == NULL)
+    {
+      printf ("cannot get header for first section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  firstse = ebl_strtabadd (shst, ".first", 0);
+
+  shdr->sh_type = SHT_PROGBITS;
+  shdr->sh_flags = SHF_ALLOC | SHF_EXECINSTR;
+  shdr->sh_addr = 0;
+  shdr->sh_link = 0;
+  shdr->sh_info = 0;
+  shdr->sh_entsize = 1;
+
+  data = elf_newdata (scn);
+  if (data == NULL)
+    {
+      printf ("cannot create data first section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  data->d_buf = "hello";
+  data->d_type = ELF_T_BYTE;
+  data->d_version = EV_CURRENT;
+  data->d_size = 5;
+  data->d_align = 16;
+
+
+  scn = elf_newscn (elf);
+  if (scn == NULL)
+    {
+      printf ("cannot create second section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+  shdr = elf32_getshdr (scn);
+  if (shdr == NULL)
+    {
+      printf ("cannot get header for second section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  secondse = ebl_strtabadd (shst, ".second", 0);
+
+  shdr->sh_type = SHT_PROGBITS;
+  shdr->sh_flags = SHF_ALLOC | SHF_WRITE;
+  shdr->sh_addr = 0;
+  shdr->sh_link = 0;
+  shdr->sh_info = 0;
+  shdr->sh_entsize = 1;
+
+  data = elf_newdata (scn);
+  if (data == NULL)
+    {
+      printf ("cannot create data second section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  data->d_buf = "world";
+  data->d_type = ELF_T_BYTE;
+  data->d_version = EV_CURRENT;
+  data->d_size = 5;
+  data->d_align = 16;
+
+
+  scn = elf_newscn (elf);
+  if (scn == NULL)
+    {
+      printf ("cannot create third section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+  shdr = elf32_getshdr (scn);
+  if (shdr == NULL)
+    {
+      printf ("cannot get header for third section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  thirdse = ebl_strtabadd (shst, ".third", 0);
+
+  shdr->sh_type = SHT_PROGBITS;
+  shdr->sh_flags = SHF_ALLOC | SHF_EXECINSTR;
+  shdr->sh_addr = 0;
+  shdr->sh_link = 0;
+  shdr->sh_info = 0;
+  shdr->sh_entsize = 1;
+
+  data = elf_newdata (scn);
+  if (data == NULL)
+    {
+      printf ("cannot create data third section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  data->d_buf = "!!!!!";
+  data->d_type = ELF_T_BYTE;
+  data->d_version = EV_CURRENT;
+  data->d_size = 5;
+  data->d_align = 16;
+
+
+  scn = elf_newscn (elf);
+  if (scn == NULL)
+    {
+      printf ("cannot create fourth section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+  shdr = elf32_getshdr (scn);
+  if (shdr == NULL)
+    {
+      printf ("cannot get header for fourth section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  fourthse = ebl_strtabadd (shst, ".fourth", 0);
+
+  shdr->sh_type = SHT_NOBITS;
+  shdr->sh_flags = SHF_ALLOC | SHF_EXECINSTR;
+  shdr->sh_addr = 0;
+  shdr->sh_link = 0;
+  shdr->sh_info = 0;
+  shdr->sh_entsize = 1;
+  shdr->sh_size = 100;
+
+  data = elf_newdata (scn);
+  if (data == NULL)
+    {
+      printf ("cannot create data fourth section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  data->d_buf = NULL;
+  data->d_type = ELF_T_BYTE;
+  data->d_version = EV_CURRENT;
+  data->d_size = 100;
+  data->d_align = 16;
+
+
+  scn = elf_newscn (elf);
+  if (scn == NULL)
+    {
+      printf ("cannot create SHSTRTAB section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+  shdr = elf32_getshdr (scn);
+  if (shdr == NULL)
+    {
+      printf ("cannot get header for SHSTRTAB section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  shstrtabse = ebl_strtabadd (shst, ".shstrtab", 0);
+
+  shdr->sh_type = SHT_STRTAB;
+  shdr->sh_flags = 0;
+  shdr->sh_addr = 0;
+  shdr->sh_link = SHN_UNDEF;
+  shdr->sh_info = SHN_UNDEF;
+  shdr->sh_entsize = 1;
+
+  /* We have to store the section index in the ELF header.  */
+  ehdr->e_shstrndx = elf_ndxscn (scn);
+
+  data = elf_newdata (scn);
+  if (data == NULL)
+    {
+      printf ("cannot create data SHSTRTAB section: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* No more sections, finalize the section header string table.  */
+  ebl_strtabfinalize (shst, data);
+
+  elf32_getshdr (elf_getscn (elf, 1))->sh_name = ebl_strtaboffset (firstse);
+  elf32_getshdr (elf_getscn (elf, 2))->sh_name = ebl_strtaboffset (secondse);
+  elf32_getshdr (elf_getscn (elf, 3))->sh_name = ebl_strtaboffset (thirdse);
+  elf32_getshdr (elf_getscn (elf, 4))->sh_name = ebl_strtaboffset (fourthse);
+  shdr->sh_name = ebl_strtaboffset (shstrtabse);
+
+  /* Let the library compute the internal structure information.  */
+  if (elf_update (elf, ELF_C_NULL) < 0)
+    {
+      printf ("failure in elf_update(NULL): %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  ehdr = elf32_getehdr (elf);
+
+  phdr[0].p_offset = ehdr->e_phoff;
+  phdr[0].p_offset = ehdr->e_phoff;
+  phdr[0].p_vaddr = ehdr->e_phoff;
+  phdr[0].p_paddr = ehdr->e_phoff;
+  phdr[0].p_flags = PF_R | PF_X;
+  phdr[0].p_filesz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT);
+  phdr[0].p_memsz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT);
+  phdr[0].p_align = sizeof (Elf32_Word);
+
+  /* Write out the file.  */
+  if (elf_update (elf, ELF_C_WRITE) < 0)
+    {
+      printf ("failure in elf_update(WRITE): %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  /* We don't need the string table anymore.  */
+  ebl_strtabfree (shst);
+
+  /* And the data allocated in the .shstrtab section.  */
+  free (data->d_buf);
+
+  /* Print the ELF header values.  */
+  if (argc > 1)
+    {
+      for (i = 0; i < EI_NIDENT; ++i)
+	printf (" %02x", ehdr->e_ident[i]);
+      printf ("\
+\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n"
+	      "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n"
+	      "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n",
+	      ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry,
+	      ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize,
+	      ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize,
+	      ehdr->e_shnum, ehdr->e_shstrndx);
+    }
+
+  if (elf_end (elf) != 0)
+    {
+      printf ("failure in elf_end: %s\n", elf_errmsg (-1));
+      exit (1);
+    }
+
+  unlink (fname);
+
+  return 0;
+}
diff --git a/src/tests/varlocs.c b/src/tests/varlocs.c
new file mode 100644
index 0000000..04f17ff
--- /dev/null
+++ b/src/tests/varlocs.c
@@ -0,0 +1,826 @@
+/* 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, &param) != 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 (&param));
+	assert (expr->number == dwarf_cuoffset (&param));
+	assert (dwarf_tag (&param) == 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;
+}
diff --git a/src/tests/vdsosyms.c b/src/tests/vdsosyms.c
new file mode 100644
index 0000000..c1f8d89
--- /dev/null
+++ b/src/tests/vdsosyms.c
@@ -0,0 +1,109 @@
+/* Test program for getting symbol table from vdso module.
+   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 <errno.h>
+#include <error.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include ELFUTILS_HEADER(dwfl)
+
+#ifndef __linux__
+int
+main (int argc __attribute__ ((unused)), char **argv)
+{
+  printf ("Getting the vdso is unsupported.\n");
+  return 77;
+}
+#else /* __linux__ */
+static int vdso_syms = 0;
+
+static int
+module_callback (Dwfl_Module *mod, void **userdata __attribute__((unused)),
+		 const char *name, Dwarf_Addr start __attribute__((unused)),
+		 void *arg __attribute__((unused)))
+{
+  /* We can only recognize the vdso by inspecting the "magic name".  */
+  printf ("module name: %s\n", name);
+  if (strncmp ("[vdso: ", name, 7) == 0)
+    {
+      vdso_syms = dwfl_module_getsymtab (mod);
+      printf ("vdso syms: %d\n", vdso_syms);
+      if (vdso_syms < 0)
+	error (2, 0, "dwfl_module_getsymtab: %s", dwfl_errmsg (-1));
+
+      for (int i = 0; i < vdso_syms; i++)
+	{
+	  GElf_Sym sym;
+	  GElf_Addr addr;
+	  const char *sname = dwfl_module_getsym_info (mod, i, &sym, &addr,
+						       NULL, NULL, NULL);
+	  assert (sname != NULL);
+	  printf ("%d: '%s' %" PRIx64 " (%" PRIx64 ")\n",
+		  i, sname, sym.st_value, addr);
+	}
+    }
+
+  return DWARF_CB_OK;
+}
+
+int
+main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
+{
+  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));
+
+  /* Take our parent as "arbitrary" process to inspect.  */
+  pid_t pid = getppid();
+
+  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");
+
+  /* Also explicitly attach for older kernels (cannot read vdso otherwise).  */
+  result = dwfl_linux_proc_attach (dwfl, pid, false);
+  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");
+
+  if (dwfl_report_end (dwfl, NULL, NULL) != 0)
+    error (2, 0, "dwfl_report_end: %s", dwfl_errmsg (-1));
+
+  if (dwfl_getmodules (dwfl, module_callback, NULL, 0) != 0)
+    error (1, 0, "dwfl_getmodules: %s", dwfl_errmsg (-1));
+
+  /* No symbols is ok, then we haven't seen the vdso at all on this arch.  */
+  return vdso_syms >= 0 ? 0 : -1;
+}
+
+#endif /* ! __linux__ */
diff --git a/src/version.h b/src/version.h
index 684c0dd..7139c45 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,56 +1,36 @@
 /* Version information about elfutils development libraries.
    Copyright (C) 2008 Red Hat, Inc.
-   This file is part of Red Hat elfutils.
 
-   Red Hat elfutils 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; version 2 of the License.
+   This file is part of elfutils.
 
-   Red Hat elfutils is distributed in the hope that it will be useful, but
+   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 a copy of the GNU General Public License along
-   with Red Hat elfutils; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
-
-   In addition, as a special exception, Red Hat, Inc. gives You the
-   additional right to link the code of Red Hat elfutils with code licensed
-   under any Open Source Initiative certified open source license
-   (http://www.opensource.org/licenses/index.php) which requires the
-   distribution of source code with any binary distribution and to
-   distribute linked combinations of the two.  Non-GPL Code permitted under
-   this exception must only link to the code of Red Hat elfutils through
-   those well defined interfaces identified in the file named EXCEPTION
-   found in the source code files (the "Approved Interfaces").  The files
-   of Non-GPL Code may instantiate templates or use macros or inline
-   functions from the Approved Interfaces without causing the resulting
-   work to be covered by the GNU General Public License.  Only Red Hat,
-   Inc. may make changes or additions to the list of Approved Interfaces.
-   Red Hat's grant of this exception is conditioned upon your not adding
-   any new exceptions.  If you wish to add a new Approved Interface or
-   exception, please contact Red Hat.  You must obey the GNU General Public
-   License in all respects for all of the Red Hat elfutils code and other
-   code used in conjunction with Red Hat elfutils except the Non-GPL Code
-   covered by this exception.  If you modify this file, you may extend this
-   exception to your version of the file, but you are not obligated to do
-   so.  If you do not wish to provide this exception without modification,
-   you must delete this exception statement from your version and license
-   this file solely under the GPL without exception.
-
-   Red Hat elfutils is an included package of the Open Invention Network.
-   An included package of the Open Invention Network is a package for which
-   Open Invention Network licensees cross-license their patents.  No patent
-   license is granted, either expressly or impliedly, by designation as an
-   included package.  Should you wish to participate in the Open Invention
-   Network licensing program, please visit www.openinventionnetwork.com
-   <http://www.openinventionnetwork.com>.  */
+   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 _ELFUTILS_VERSION_H
 #define _ELFUTILS_VERSION_H	1
 
-#define _ELFUTILS_VERSION	153
+#define _ELFUTILS_VERSION	161
 
 #define _ELFUTILS_PREREQ(major, minor) \
   (_ELFUTILS_VERSION >= ((major) * 1000 + (minor)))