summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland McGrath <[email protected]>2009-04-19 17:42:18 -0700
committerRoland McGrath <[email protected]>2009-04-19 17:42:18 -0700
commit01be23b45e23777773c8305807c27a7e1a5c3add (patch)
treed3feeb6bbbb2a921474564ee590d10c2c351a6b5
parent7fc2793d0663e49a0454da85ff48a621007bd181 (diff)
parent105e3984c2dc5f8f60875dc80e9e06480e186900 (diff)
Merge branch 'master' of ssh://git.fedorahosted.org/git/elfutils into roland/unwind
Conflicts: backends/ChangeLog libdw/ChangeLog libdwfl/ChangeLog
-rw-r--r--ChangeLog9
-rw-r--r--NEWS9
-rw-r--r--backends/ChangeLog25
-rw-r--r--backends/Makefile.am5
-rw-r--r--backends/arm_attrs.c242
-rw-r--r--backends/arm_auxv.c46
-rw-r--r--backends/arm_corenote.c73
-rw-r--r--backends/arm_init.c10
-rw-r--r--backends/arm_regs.c117
-rw-r--r--backends/arm_retval.c138
-rw-r--r--backends/arm_symbol.c73
-rw-r--r--backends/i386_corenote.c4
-rw-r--r--backends/ia64_symbol.c6
-rw-r--r--config/ChangeLog9
-rw-r--r--configure.ac42
-rw-r--r--libcpu/ChangeLog5
-rw-r--r--libcpu/Makefile.am1
-rw-r--r--libdw/ChangeLog5
-rw-r--r--libdw/dwarf.h3
-rw-r--r--libdwfl/ChangeLog20
-rw-r--r--libdwfl/core-file.c14
-rw-r--r--libdwfl/dwfl_module_getsym.c24
-rw-r--r--libdwfl/dwfl_segment_report_module.c21
-rw-r--r--libdwfl/libdwfl.h11
-rw-r--r--libdwfl/link_map.c1
-rw-r--r--libdwfl/relocate.c8
-rw-r--r--libelf/ChangeLog4
-rw-r--r--libelf/elf.h64
-rw-r--r--po/de.po5676
-rw-r--r--po/es.po58
-rw-r--r--src/ChangeLog15
-rw-r--r--src/readelf.c21
-rw-r--r--src/strip.c3
33 files changed, 6663 insertions, 99 deletions
diff --git a/ChangeLog b/ChangeLog
index f6d54aaa..7b8c4438 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-04-19 Roland McGrath <[email protected]>
+
+ * configure.ac (eu_version): Round down here, not in version.h macros.
+
+2009-04-17 Roland McGrath <[email protected]>
+
+ * configure.ac (eu_version): Compute number 1000 times larger,
+ let $PACKAGE_VERSION be x.y.z as well as x.y (implied x.y.0).
+
2009-01-23 Roland McGrath <[email protected]>
* configure.ac (zlib check): Check for gzdirect, need zlib >= 1.2.2.3.
diff --git a/NEWS b/NEWS
index 93ebc81d..5effc77a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,12 @@
+Version 0.141:
+
+libebl: sparc backend fixes;
+ some more arm backend support
+libdwfl: fix dwfl_module_build_id for prelinked DSO case;
+ fixes in core file support;
+ dwfl_module_getsym interface improved for non-address symbols
+strip: fix infinite loop on strange inputs with -f
+
Version 0.140:
libelf: Fix regression in creation of section header
diff --git a/backends/ChangeLog b/backends/ChangeLog
index df632d35..62b5275e 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -8,6 +8,31 @@
* Makefile.am (i386_SRCS): Add it.
* i386_init.c (i386_init): Initialize abi_cfi hook.
+2009-04-16 Roland McGrath <[email protected]>
+
+ * arm_regs.c (arm_register_info): Handle VFP registers.
+
+ * i386_corenote.c (EXTRA_NOTES): NT_PRXFPREG -> NT_PRXFPREG
+
+2009-04-14 Roland McGrath <[email protected]>
+
+ * arm_retval.c: New file.
+ * arm_attrs.c: New file.
+ * Makefile.am (arm_SRCS): Add them.
+ * arm_symbol.c (arm_segment_type_name): New function.
+ (arm_section_type_name): New function.
+ (arm_machine_flag_check): New function.
+ * arm_init.c (arm_init): Initialize those hooks.
+
+ * arm_regs.c: New file.
+ * arm_corenote.c: New file.
+ * arm_auxv.c: New file.
+ * Makefile.am (arm_SRCS): Add them.
+ * arm_init.c (arm_init): Initialize core_note, register_info,
+ and auxv_info hooks.
+
+ * ia64_symbol.c (ia64_section_type_name): Remove "SHT_" prefixes.
+
2009-04-01 Roland McGrath <[email protected]>
* sparc_reloc.def: Update table.
diff --git a/backends/Makefile.am b/backends/Makefile.am
index a47519f1..2aed6216 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to create Makefile.in
##
-## Copyright (C) 2000-2006, 2007, 2008 Red Hat, Inc.
+## Copyright (C) 2000-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
@@ -85,7 +85,8 @@ alpha_SRCS = alpha_init.c alpha_symbol.c alpha_retval.c alpha_regs.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_SRCS = arm_init.c arm_symbol.c arm_regs.c arm_corenote.c \
+ arm_auxv.c arm_attrs.c arm_retval.c
libebl_arm_pic_a_SOURCES = $(arm_SRCS)
am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os)
diff --git a/backends/arm_attrs.c b/backends/arm_attrs.c
new file mode 100644
index 00000000..84f4d451
--- /dev/null
+++ b/backends/arm_attrs.c
@@ -0,0 +1,242 @@
+/* Object attribute tags for ARM.
+ Copyright (C) 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.
+
+ 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.
+
+ Red Hat elfutils is an included package of the Open Invention Network.
+ An included package of the Open Invention Network is a package for which
+ Open Invention Network licensees cross-license their patents. No patent
+ license is granted, either expressly or impliedly, by designation as 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 <string.h>
+#include <dwarf.h>
+
+#define BACKEND arm_
+#include "libebl_CPU.h"
+
+#define KNOWN_VALUES(...) do \
+ { \
+ static const char *table[] = { __VA_ARGS__ }; \
+ if (value < sizeof table / sizeof table[0]) \
+ *value_name = table[value]; \
+ } while (0)
+
+bool
+arm_check_object_attribute (ebl, vendor, tag, value, tag_name, value_name)
+ Ebl *ebl __attribute__ ((unused));
+ const char *vendor;
+ int tag;
+ uint64_t value __attribute__ ((unused));
+ const char **tag_name;
+ const char **value_name;
+{
+ if (!strcmp (vendor, "aeabi"))
+ switch (tag)
+ {
+ case 4:
+ *tag_name = "CPU_raw_name";
+ return true;
+ case 5:
+ *tag_name = "CPU_name";
+ return true;
+ case 6:
+ *tag_name = "CPU_arch";
+ KNOWN_VALUES ("Pre-v4",
+ "v4",
+ "v4T",
+ "v5T",
+ "v5TE",
+ "v5TEJ",
+ "v6",
+ "v6KZ",
+ "v6T2",
+ "v6K",
+ "v7",
+ "v6-M",
+ "v6S-M");
+ return true;
+ case 7:
+ *tag_name = "CPU_arch_profile";
+ switch (value)
+ {
+ case 'A':
+ *value_name = "Application";
+ break;
+ case 'R':
+ *value_name = "Realtime";
+ break;
+ case 'M':
+ *value_name = "Microcontroller";
+ break;
+ }
+ return true;
+ case 8:
+ *tag_name = "ARM_ISA_use";
+ KNOWN_VALUES ("No", "Yes");
+ return true;
+ case 9:
+ *tag_name = "THUMB_ISA_use";
+ KNOWN_VALUES ("No", "Thumb-1", "Thumb-2");
+ return true;
+ case 10:
+ *tag_name = "VFP_arch";
+ KNOWN_VALUES ("No", "VFPv1", "VFPv2", "VFPv3", "VFPv3-D16");
+ return true;
+ case 11:
+ *tag_name = "WMMX_arch";
+ KNOWN_VALUES ("No", "WMMXv1", "WMMXv2");
+ return true;
+ case 12:
+ *tag_name = "Advanced_SIMD_arch";
+ KNOWN_VALUES ("No", "NEONv1");
+ return true;
+ case 13:
+ *tag_name = "PCS_config";
+ KNOWN_VALUES ("None",
+ "Bare platform",
+ "Linux application",
+ "Linux DSO",
+ "PalmOS 2004",
+ "PalmOS (reserved)",
+ "SymbianOS 2004",
+ "SymbianOS (reserved)");
+ return true;
+ case 14:
+ *tag_name = "ABI_PCS_R9_use";
+ KNOWN_VALUES ("V6", "SB", "TLS", "Unused");
+ return true;
+ case 15:
+ *tag_name = "ABI_PCS_RW_data";
+ KNOWN_VALUES ("Absolute", "PC-relative", "SB-relative", "None");
+ return true;
+ case 16:
+ *tag_name = "ABI_PCS_RO_data";
+ KNOWN_VALUES ("Absolute", "PC-relative", "None");
+ return true;
+ case 17:
+ *tag_name = "ABI_PCS_GOT_use";
+ KNOWN_VALUES ("None", "direct", "GOT-indirect");
+ return true;
+ case 18:
+ *tag_name = "ABI_PCS_wchar_t";
+ return true;
+ case 19:
+ *tag_name = "ABI_FP_rounding";
+ KNOWN_VALUES ("Unused", "Needed");
+ return true;
+ case 20:
+ *tag_name = "ABI_FP_denormal";
+ KNOWN_VALUES ("Unused", "Needed", "Sign only");
+ return true;
+ case 21:
+ *tag_name = "ABI_FP_exceptions";
+ KNOWN_VALUES ("Unused", "Needed");
+ return true;
+ case 22:
+ *tag_name = "ABI_FP_user_exceptions";
+ KNOWN_VALUES ("Unused", "Needed");
+ return true;
+ case 23:
+ *tag_name = "ABI_FP_number_model";
+ KNOWN_VALUES ("Unused", "Finite", "RTABI", "IEEE 754");
+ return true;
+ case 24:
+ *tag_name = "ABI_align8_needed";
+ KNOWN_VALUES ("No", "Yes", "4-byte");
+ return true;
+ case 25:
+ *tag_name = "ABI_align8_preserved";
+ KNOWN_VALUES ("No", "Yes, except leaf SP", "Yes");
+ return true;
+ case 26:
+ *tag_name = "ABI_enum_size";
+ KNOWN_VALUES ("Unused", "small", "int", "forced to int");
+ return true;
+ case 27:
+ *tag_name = "ABI_HardFP_use";
+ KNOWN_VALUES ("as VFP_arch", "SP only", "DP only", "SP and DP");
+ return true;
+ case 28:
+ *tag_name = "ABI_VFP_args";
+ KNOWN_VALUES ("AAPCS", "VFP registers", "custom");
+ return true;
+ case 29:
+ *tag_name = "ABI_WMMX_args";
+ KNOWN_VALUES ("AAPCS", "WMMX registers", "custom");
+ return true;
+ case 30:
+ *tag_name = "ABI_optimization_goals";
+ KNOWN_VALUES ("None",
+ "Prefer Speed",
+ "Aggressive Speed",
+ "Prefer Size",
+ "Aggressive Size",
+ "Prefer Debug",
+ "Aggressive Debug");
+ return true;
+ case 31:
+ *tag_name = "ABI_FP_optimization_goals";
+ KNOWN_VALUES ("None",
+ "Prefer Speed",
+ "Aggressive Speed",
+ "Prefer Size",
+ "Aggressive Size",
+ "Prefer Accuracy",
+ "Aggressive Accuracy");
+ return true;
+ case 34:
+ *tag_name = "CPU_unaligned_access";
+ KNOWN_VALUES ("None", "v6");
+ return true;
+ case 36:
+ *tag_name = "VFP_HP_extension";
+ KNOWN_VALUES ("Not Allowed", "Allowed");
+ return true;
+ case 38:
+ *tag_name = "ABI_FP_16bit_format";
+ KNOWN_VALUES ("None", "IEEE 754", "Alternative Format");
+ return true;
+ case 64:
+ *tag_name = "nodefaults";
+ return true;
+ case 65:
+ *tag_name = "also_compatible_with";
+ return true;
+ case 66:
+ *tag_name = "T2EE_use";
+ KNOWN_VALUES ("Not Allowed", "Allowed");
+ return true;
+ case 67:
+ *tag_name = "conformance";
+ return true;
+ case 68:
+ *tag_name = "Virtualization_use";
+ KNOWN_VALUES ("Not Allowed", "Allowed");
+ return true;
+ case 70:
+ *tag_name = "MPextension_use";
+ KNOWN_VALUES ("Not Allowed", "Allowed");
+ return true;
+ }
+
+ return false;
+}
diff --git a/backends/arm_auxv.c b/backends/arm_auxv.c
new file mode 100644
index 00000000..728f940d
--- /dev/null
+++ b/backends/arm_auxv.c
@@ -0,0 +1,46 @@
+/* ARM-specific auxv handling.
+ Copyright (C) 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.
+
+ 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.
+
+ Red Hat elfutils is an included package of the Open Invention Network.
+ An included package of the Open Invention Network is a package for which
+ Open Invention Network licensees cross-license their patents. No patent
+ license is granted, either expressly or impliedly, by designation as 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
+
+#define BACKEND arm_
+#include "libebl_CPU.h"
+
+int
+EBLHOOK(auxv_info) (GElf_Xword a_type, const char **name, const char **format)
+{
+ if (a_type != AT_HWCAP)
+ return 0;
+
+ *name = "HWCAP";
+ *format = "b"
+ "swp\0" "half\0" "thumb\0" "26bit\0"
+ "fast-mult\0" "fpa\0" "vfp\0" "edsp\0"
+ "java\0" "iwmmxt\0"
+ "\0";
+ return 1;
+}
diff --git a/backends/arm_corenote.c b/backends/arm_corenote.c
new file mode 100644
index 00000000..6f2d3a3e
--- /dev/null
+++ b/backends/arm_corenote.c
@@ -0,0 +1,73 @@
+/* ARM specific core note handling.
+ Copyright (C) 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.
+
+ 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.
+
+ Red Hat elfutils is an included package of the Open Invention Network.
+ An included package of the Open Invention Network is a package for which
+ Open Invention Network licensees cross-license their patents. No patent
+ license is granted, either expressly or impliedly, by designation as 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 <elf.h>
+#include <inttypes.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/time.h>
+
+#define BACKEND arm_
+#include "libebl_CPU.h"
+
+
+static const Ebl_Register_Location prstatus_regs[] =
+ {
+ { .offset = 0, .regno = 0, .count = 16, .bits = 32 }, /* r0..r15 */
+ { .offset = 16 * 4, .regno = 128, .count = 1, .bits = 32 }, /* cpsr */
+ };
+#define PRSTATUS_REGS_SIZE (18 * 4)
+
+#define PRSTATUS_REGSET_ITEMS \
+ { \
+ .name = "orig_r0", .type = ELF_T_SWORD, .format = 'd', \
+ .offset = offsetof (struct EBLHOOK(prstatus), pr_reg) + (4 * 17), \
+ .group = "register" \
+ }
+
+static const Ebl_Register_Location fpregset_regs[] =
+ {
+ { .offset = 0, .regno = 96, .count = 8, .bits = 96 }, /* f0..f7 */
+ };
+#define FPREGSET_SIZE 140
+
+#define ULONG uint32_t
+#define PID_T int32_t
+#define UID_T uint16_t
+#define GID_T uint16_t
+#define ALIGN_ULONG 4
+#define ALIGN_PID_T 4
+#define ALIGN_UID_T 2
+#define ALIGN_GID_T 2
+#define TYPE_ULONG ELF_T_WORD
+#define TYPE_PID_T ELF_T_SWORD
+#define TYPE_UID_T ELF_T_HALF
+#define TYPE_GID_T ELF_T_HALF
+
+#include "linux-core-note.c"
diff --git a/backends/arm_init.c b/backends/arm_init.c
index 172af198..15c0ee67 100644
--- a/backends/arm_init.c
+++ b/backends/arm_init.c
@@ -1,5 +1,5 @@
/* Initialization of Arm specific backend library.
- Copyright (C) 2002, 2005 Red Hat, Inc.
+ Copyright (C) 2002, 2005, 2009 Red Hat, Inc.
This file is part of Red Hat elfutils.
Written by Ulrich Drepper <[email protected]>, 2002.
@@ -50,7 +50,15 @@ arm_init (elf, machine, eh, ehlen)
/* We handle it. */
eh->name = "ARM";
arm_init_reloc (eh);
+ HOOK (eh, segment_type_name);
+ HOOK (eh, section_type_name);
+ HOOK (eh, machine_flag_check);
HOOK (eh, reloc_simple_type);
+ HOOK (eh, register_info);
+ HOOK (eh, core_note);
+ HOOK (eh, auxv_info);
+ HOOK (eh, check_object_attribute);
+ HOOK (eh, return_value_location);
return MODVERSION;
}
diff --git a/backends/arm_regs.c b/backends/arm_regs.c
new file mode 100644
index 00000000..0a9536d4
--- /dev/null
+++ b/backends/arm_regs.c
@@ -0,0 +1,117 @@
+/* Register names and numbers for ARM DWARF.
+ Copyright (C) 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.
+
+ 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.
+
+ Red Hat elfutils is an included package of the Open Invention Network.
+ An included package of the Open Invention Network is a package for which
+ Open Invention Network licensees cross-license their patents. No patent
+ license is granted, either expressly or impliedly, by designation as 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 <string.h>
+#include <dwarf.h>
+
+#define BACKEND arm_
+#include "libebl_CPU.h"
+
+ssize_t
+arm_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 320;
+
+ if (regno < 0 || regno > 320 || namelen < 5)
+ return -1;
+
+ *prefix = NULL;
+ *bits = 32;
+ *type = DW_ATE_signed;
+ *setname = "integer";
+
+ switch (regno)
+ {
+ case 0 ... 9:
+ name[0] = 'r';
+ name[1] = regno + '0';
+ namelen = 2;
+ break;
+
+ case 10 ... 12:
+ name[0] = 'r';
+ name[1] = '1';
+ name[2] = regno % 10 + '0';
+ namelen = 3;
+ break;
+
+ case 13 ... 15:
+ *type = DW_ATE_address;
+ name[0] = "slp"[regno - 13];
+ name[1] = "prc"[regno - 13];
+ namelen = 2;
+ break;
+
+ case 16 + 0 ... 16 + 7:
+ regno += 96 - 16;
+ /* Fall through. */
+ case 96 + 0 ... 96 + 7:
+ *setname = "FPA";
+ *type = DW_ATE_float;
+ *bits = 96;
+ name[0] = 'f';
+ name[1] = regno - 96 + '0';
+ namelen = 2;
+ break;
+
+ case 128:
+ *type = DW_ATE_unsigned;
+ return stpcpy (name, "spsr") + 1 - name;
+
+ case 256 + 0 ... 256 + 9:
+ *setname = "VFP";
+ *type = DW_ATE_float;
+ *bits = 64;
+ name[0] = 'd';
+ name[1] = regno - 256 + '0';
+ namelen = 2;
+ break;
+
+ case 256 + 10 ... 256 + 31:
+ *setname = "VFP";
+ *type = DW_ATE_float;
+ *bits = 64;
+ name[0] = 'd';
+ name[1] = (regno - 256) / 10 + '0';
+ name[2] = (regno - 256) % 10 + '0';
+ namelen = 3;
+ break;
+
+ default:
+ *setname = NULL;
+ return 0;
+ }
+
+ name[namelen++] = '\0';
+ return namelen;
+}
diff --git a/backends/arm_retval.c b/backends/arm_retval.c
new file mode 100644
index 00000000..4ffc6e7c
--- /dev/null
+++ b/backends/arm_retval.c
@@ -0,0 +1,138 @@
+/* Function return value location for ARM EABI.
+ Copyright (C) 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.
+
+ 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.
+
+ Red Hat elfutils is an included package of the Open Invention Network.
+ An included package of the Open Invention Network is a package for which
+ Open Invention Network licensees cross-license their patents. No patent
+ license is granted, either expressly or impliedly, by designation as 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 <assert.h>
+#include <dwarf.h>
+
+#define BACKEND arm_
+#include "libebl_CPU.h"
+
+
+/* r0, or pair r0, r1, or aggregate up to r0-r3. */
+static const Dwarf_Op loc_intreg[] =
+ {
+ { .atom = DW_OP_reg0 }, { .atom = DW_OP_piece, .number = 4 },
+ { .atom = DW_OP_reg1 }, { .atom = DW_OP_piece, .number = 4 },
+ { .atom = DW_OP_reg2 }, { .atom = DW_OP_piece, .number = 4 },
+ { .atom = DW_OP_reg3 }, { .atom = DW_OP_piece, .number = 4 },
+ };
+#define nloc_intreg 1
+#define nloc_intregs(n) (2 * (n))
+
+/* 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
+arm_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_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_Word size;
+ switch (tag)
+ {
+ case -1:
+ return -1;
+
+ case DW_TAG_subrange_type:
+ if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
+ {
+ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
+ typedie = dwarf_formref_die (attr, &die_mem);
+ tag = dwarf_tag (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:
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 4;
+ else
+ return -1;
+ }
+ if (size <= 16)
+ {
+ intreg:
+ *locp = loc_intreg;
+ return size <= 4 ? nloc_intreg : nloc_intregs ((size + 3) / 4);
+ }
+
+ aggregate:
+ *locp = loc_aggregate;
+ return nloc_aggregate;
+
+ case DW_TAG_structure_type:
+ case DW_TAG_class_type:
+ case DW_TAG_union_type:
+ case DW_TAG_array_type:
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) == 0
+ && size > 0 && size <= 4)
+ 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/backends/arm_symbol.c b/backends/arm_symbol.c
index 6d2f56d3..e08874bb 100644
--- a/backends/arm_symbol.c
+++ b/backends/arm_symbol.c
@@ -1,7 +1,6 @@
/* Arm specific symbolic name handling.
- Copyright (C) 2002, 2005 Red Hat, Inc.
+ Copyright (C) 2002-2009 Red Hat, Inc.
This file is part of Red Hat elfutils.
- Written by Ulrich Drepper <[email protected]>, 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
@@ -34,6 +33,76 @@
#define BACKEND arm_
#include "libebl_CPU.h"
+
+const char *
+arm_segment_type_name (int segment, char *buf __attribute__ ((unused)),
+ size_t len __attribute__ ((unused)))
+{
+ switch (segment)
+ {
+ case PT_ARM_EXIDX:
+ return "ARM_EXIDX";
+ }
+ return NULL;
+}
+
+/* Return symbolic representation of section type. */
+const char *
+arm_section_type_name (int type,
+ char *buf __attribute__ ((unused)),
+ size_t len __attribute__ ((unused)))
+{
+ switch (type)
+ {
+ case SHT_ARM_EXIDX:
+ return "ARM_EXIDX";
+ case SHT_ARM_PREEMPTMAP:
+ return "ARM_PREEMPTMAP";
+ case SHT_ARM_ATTRIBUTES:
+ return "ARM_ATTRIBUTES";
+ }
+
+ return NULL;
+}
+
+/* Check whether machine flags are valid. */
+bool
+arm_machine_flag_check (GElf_Word flags)
+{
+ switch (flags & EF_ARM_EABIMASK)
+ {
+ case EF_ARM_EABI_UNKNOWN:
+ case EF_ARM_EABI_VER1:
+ case EF_ARM_EABI_VER2:
+ case EF_ARM_EABI_VER3:
+ case EF_ARM_EABI_VER4:
+ case EF_ARM_EABI_VER5:
+ break;
+ default:
+ return false;
+ }
+
+ return ((flags &~ (EF_ARM_EABIMASK
+ | EF_ARM_RELEXEC
+ | EF_ARM_HASENTRY
+ | EF_ARM_INTERWORK
+ | EF_ARM_APCS_26
+ | EF_ARM_APCS_FLOAT
+ | EF_ARM_PIC
+ | EF_ARM_ALIGN8
+ | EF_ARM_NEW_ABI
+ | EF_ARM_OLD_ABI
+ | EF_ARM_SOFT_FLOAT
+ | EF_ARM_VFP_FLOAT
+ | EF_ARM_MAVERICK_FLOAT
+ | EF_ARM_SYMSARESORTED
+ | EF_ARM_DYNSYMSUSESEGIDX
+ | EF_ARM_MAPSYMSFIRST
+ | EF_ARM_EABIMASK
+ | EF_ARM_BE8
+ | EF_ARM_LE8)) == 0);
+}
+
/* Check for the simple reloc types. */
Elf_Type
arm_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type)
diff --git a/backends/i386_corenote.c b/backends/i386_corenote.c
index c371c4c3..89890252 100644
--- a/backends/i386_corenote.c
+++ b/backends/i386_corenote.c
@@ -1,5 +1,5 @@
/* i386 specific core note handling.
- Copyright (C) 2007, 2008 Red Hat, Inc.
+ Copyright (C) 2007-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
@@ -101,7 +101,7 @@ static const Ebl_Register_Location prxfpreg_regs[] =
};
#define EXTRA_NOTES \
- EXTRA_REGSET (NT_PRFPXREG, 512, prxfpreg_regs) \
+ EXTRA_REGSET (NT_PRXFPREG, 512, prxfpreg_regs) \
case NT_386_TLS: \
return tls_info (descsz, regs_offset, nregloc, reglocs, nitems, items); \
EXTRA_NOTES_IOPERM
diff --git a/backends/ia64_symbol.c b/backends/ia64_symbol.c
index 2609db0f..1edef8b5 100644
--- a/backends/ia64_symbol.c
+++ b/backends/ia64_symbol.c
@@ -1,5 +1,5 @@
/* IA-64 specific symbolic name handling.
- Copyright (C) 2002, 2003, 2005, 2006, 2007 Red Hat, Inc.
+ Copyright (C) 2002-2009 Red Hat, Inc.
This file is part of Red Hat elfutils.
Written by Ulrich Drepper <[email protected]>, 2002.
@@ -102,9 +102,9 @@ ia64_section_type_name (int type,
switch (type)
{
case SHT_IA_64_EXT:
- return "SHT_IA_64_EXT";
+ return "IA_64_EXT";
case SHT_IA_64_UNWIND:
- return "SHT_IA_64_UNWIND";
+ return "IA_64_UNWIND";
}
return NULL;
diff --git a/config/ChangeLog b/config/ChangeLog
index 1ac65534..798a2f93 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,12 @@
+2009-04-19 Roland McGrath <[email protected]>
+
+ * version.h.in: Revert last change.
+
+2009-04-17 Roland McGrath <[email protected]>
+
+ * version.h.in (_ELFUTILS_PREREQ): Multiple major by 1000000 and minor
+ by 1000; now _ELFUTILS_VERSION is 789000 for version 0.789.
+
2009-01-22 Ulrich Drepper <[email protected]>
* elfutils.spec.in: Distribute <elfutils/version.h> in
diff --git a/configure.ac b/configure.ac
index 9013c9a5..aeb40d11 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,13 +16,13 @@ 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
-AC_INIT([Red Hat elfutils],[0.140],[http://bugzilla.redhat.com/bugzilla/],
+AC_INIT([Red Hat elfutils],[0.140.90],[http://bugzilla.redhat.com/bugzilla/],
[elfutils])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_FILES([config/Makefile])
-AC_COPYRIGHT([Copyright (C) 1996-2008, 2009 Red Hat, Inc.])
+AC_COPYRIGHT([Copyright (C) 1996-2009 Red Hat, Inc.])
AC_PREREQ(2.59) dnl Minimum Autoconf version required.
dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
@@ -259,12 +259,38 @@ AH_BOTTOM([#include <eu-config.h>])
dnl Version compatibility header.
AC_CONFIG_FILES([version.h:config/version.h.in])
AC_SUBST([eu_version])
-case $PACKAGE_VERSION in
-0.???) eu_version=${PACKAGE_VERSION#0.} ;;
-?.???) eu_version=${PACKAGE_VERSION/./} ;;
-?.??) eu_version=${PACKAGE_VERSION/./}0 ;;
-?.?) eu_version=${PACKAGE_VERSION/./}00 ;;
-*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
+
+# 1.234<whatever> -> 1234<whatever>
+case "$PACKAGE_VERSION" in
+[[0-9]].*) eu_version="${PACKAGE_VERSION/./}" ;;
+*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
+esac
+case "$eu_version" in
+*.*)
+ # 1234.567 -> "1234", "567"
+ eu_extra_version="${eu_version#*.}"
+ eu_version="${eu_version%%.*}"
+ case "$eu_extra_version" in
+ [[0-9]][[0-9]][[0-9]]) ;;
+ [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
+ [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
+ *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
+ esac
+ ;;
+*)
+ eu_extra_version=000
+ ;;
esac
+case "$eu_version" in
+ 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
+[[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
+[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
+[[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
+*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
+esac
+
+# Round up to the next release API (x.y) version.
+[eu_version=$[($eu_version + 999) / 1000]]
+
AC_OUTPUT
diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog
index 12400f6b..738af57a 100644
--- a/libcpu/ChangeLog
+++ b/libcpu/ChangeLog
@@ -1,3 +1,8 @@
+2009-04-14 Roland McGrath <[email protected]>
+
+ * Makefile.am (AM_CFLAGS): Add -fdollars-in-identifiers; it is not the
+ default on every machine.
+
2009-01-23 Roland McGrath <[email protected]>
* Makefile.am (i386_parse_CFLAGS): Use quotes around command
diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am
index e47dc0b0..923556f6 100644
--- a/libcpu/Makefile.am
+++ b/libcpu/Makefile.am
@@ -31,6 +31,7 @@ else
AM_CFLAGS =
endif
AM_CFLAGS += -Wall -Wshadow -Wunused -Wextra -std=gnu99 -fpic \
+ -fdollars-in-identifiers \
$($(*F)_CFLAGS) \
$(if $($(*F)_no_Werror),,-Werror)
INCLUDES = -I$(srcdir) -I$(srcdir)/../lib -I$(srcdir)/../libelf \
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 05631711..8e92fe7d 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -3,6 +3,11 @@
* libdwP.h (IDX_eh_frame): Remove it.
* dwarf_begin_elf.c (dwarf_scnnames): Remove its element.
+2009-04-15 Roland McGrath <[email protected]>
+
+ * dwarf.h (DW_CIE_ID): Removed.
+ (DW_CIE_ID_32, DW_CIE_ID_64): New constants replace it.
+
2009-04-01 Roland McGrath <[email protected]>
* dwarf.h: Add DW_CFA_GNU_negative_offset_extended.
diff --git a/libdw/dwarf.h b/libdw/dwarf.h
index 3b9d40c9..0546e3eb 100644
--- a/libdw/dwarf.h
+++ b/libdw/dwarf.h
@@ -677,7 +677,8 @@ enum
/* ID indicating CIE as opposed to FDE in .debug_frame. */
enum
{
- DW_CIE_ID = 0xffffffff
+ DW_CIE_ID_32 = 0xffffffffU, /* In 32-bit format CIE header. */
+ DW_CIE_ID_64 = 0xffffffffffffffffULL /* In 64-bit format CIE header. */
};
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index f4ae338b..1de4d665 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -6,6 +6,26 @@
* dwfl_addrframe.c: New file.
* Makefile.am (libdwfl_a_SOURCES): Add them.
+2009-04-14 Roland McGrath <[email protected]>
+
+ * dwfl_segment_report_module.c: Handle DT_STRTAB value being either
+ absolute (already adjusted in place) or needing load bias adjustment.
+
+ * core-file.c (dwfl_elf_phdr_memory_callback): Fix return value for
+ gelf_getphdr failure. Fix file size limit checks.
+
+ * dwfl_segment_report_module.c: Fix underflow in DYNSTRSZ check.
+
+2009-04-08 Roland McGrath <[email protected]>
+
+ * dwfl_module_getsym.c: Don't adjust for bias again after
+ __libdwfl_relocate_value.
+
+ * relocate.c (__libdwfl_relocate_value): Don't adjust a value from
+ a non-SHF_ALLOC section.
+ (relocate_getsym): Test st_shndx for SHN_* values, not *SHNDX.
+ * dwfl_module_getsym.c (dwfl_module_getsym): Likewise.
+
2009-03-09 Roland McGrath <[email protected]>
* dwfl_module_build_id.c (__libdwfl_find_build_id): Move SHSTRNDX
diff --git a/libdwfl/core-file.c b/libdwfl/core-file.c
index bc881eb9..77f208cc 100644
--- a/libdwfl/core-file.c
+++ b/libdwfl/core-file.c
@@ -1,5 +1,5 @@
/* Core file handling.
- Copyright (C) 2008 Red Hat, Inc.
+ Copyright (C) 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
@@ -278,7 +278,7 @@ dwfl_elf_phdr_memory_callback (Dwfl *dwfl, int ndx,
do
if (unlikely (gelf_getphdr (elf, ndx++, &phdr) == NULL))
- return true;
+ return false;
while (phdr.p_type != PT_LOAD
|| ((phdr.p_vaddr + phdr.p_memsz + align - 1) & -align) <= vaddr);
@@ -320,8 +320,14 @@ dwfl_elf_phdr_memory_callback (Dwfl *dwfl, int ndx,
if (elf->map_address != NULL)
(void) more (elf->maximum_size - start);
- if (unlikely (end - start > elf->maximum_size))
- end = start + elf->maximum_size;
+ /* Make sure we don't look past the end of the actual file,
+ even if the headers tell us to. */
+ if (unlikely (end > elf->maximum_size))
+ end = elf->maximum_size;
+
+ /* If the file is too small, there is nothing at all to get. */
+ if (unlikely (start >= end))
+ return false;
if (elf->map_address != NULL)
{
diff --git a/libdwfl/dwfl_module_getsym.c b/libdwfl/dwfl_module_getsym.c
index 5f289ccb..816d2143 100644
--- a/libdwfl/dwfl_module_getsym.c
+++ b/libdwfl/dwfl_module_getsym.c
@@ -1,5 +1,5 @@
/* Find debugging and symbol information for a module in libdwfl.
- Copyright (C) 2006,2007 Red Hat, Inc.
+ Copyright (C) 2006,2007,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
@@ -75,9 +75,22 @@ dwfl_module_getsym (Dwfl_Module *mod, int ndx,
shndx = sym->st_shndx;
if (shndxp != NULL)
- *shndxp = shndx;
+ {
+ *shndxp = shndx;
+
+ /* Yield -1 in case of a non-SHF_ALLOC section. */
+ if (sym->st_shndx == SHN_XINDEX
+ || (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);
+ if (unlikely (shdr == NULL) || !(shdr->sh_flags & SHF_ALLOC))
+ *shndxp = (GElf_Word) -1;
+ }
+ }
- switch (shndx)
+ switch (sym->st_shndx)
{
case SHN_ABS:
case SHN_UNDEF:
@@ -99,8 +112,9 @@ dwfl_module_getsym (Dwfl_Module *mod, int ndx,
return NULL;
}
}
- /* Apply the bias to the symbol value. */
- sym->st_value += mod->symfile->bias;
+ else
+ /* Apply the bias to the symbol value. */
+ sym->st_value += mod->symfile->bias;
break;
}
diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c
index a6639be5..10787bdc 100644
--- a/libdwfl/dwfl_segment_report_module.c
+++ b/libdwfl/dwfl_segment_report_module.c
@@ -519,13 +519,28 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
size_t soname_size = 0;
if (dynstrsz != 0 && dynstr_vaddr != 0)
{
- /* We know the bounds of the .dynstr section. */
- dynstr_vaddr += bias;
+ /* We know the bounds of the .dynstr section.
+
+ The DYNSTR_VADDR pointer comes from the .dynamic section
+ (DT_STRTAB, detected above). Ordinarily the dynamic linker
+ will have adjusted this pointer in place so it's now an
+ absolute address. But sometimes .dynamic is read-only (in
+ vDSOs and odd architectures), and sometimes the adjustment
+ just hasn't happened yet in the memory image we looked at.
+ So treat DYNSTR_VADDR as an absolute address if it falls
+ within the module bounds, or try applying the phdr bias
+ when that adjusts it to fall within the module bounds. */
+
+ if ((dynstr_vaddr < module_start || dynstr_vaddr >= module_end)
+ && dynstr_vaddr + bias >= module_start
+ && dynstr_vaddr + bias < module_end)
+ dynstr_vaddr += bias;
+
if (unlikely (dynstr_vaddr + dynstrsz > module_end))
dynstrsz = 0;
/* Try to get the DT_SONAME string. */
- if (soname_stroff != 0 && soname_stroff < dynstrsz - 1
+ if (soname_stroff != 0 && soname_stroff + 1 < dynstrsz
&& ! read_portion (&soname, &soname_size,
dynstr_vaddr + soname_stroff, 0))
name = soname;
diff --git a/libdwfl/libdwfl.h b/libdwfl/libdwfl.h
index b6ae7765..91d43802 100644
--- a/libdwfl/libdwfl.h
+++ b/libdwfl/libdwfl.h
@@ -1,5 +1,5 @@
/* Interfaces for libdwfl.
- Copyright (C) 2005, 2006, 2007, 2008 Red Hat, Inc.
+ Copyright (C) 2005-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
@@ -423,10 +423,11 @@ extern int dwfl_module_getsymtab (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. If SHNDXP is
- non-null, it's set with the section index (whether from st_shndx or
- extended index table). */
+ 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. */
extern const char *dwfl_module_getsym (Dwfl_Module *mod, int ndx,
GElf_Sym *sym, GElf_Word *shndxp)
__nonnull_attribute__ (3);
diff --git a/libdwfl/link_map.c b/libdwfl/link_map.c
index 30fb445a..2d4d75f1 100644
--- a/libdwfl/link_map.c
+++ b/libdwfl/link_map.c
@@ -585,7 +585,6 @@ consider_executable (Dwfl_Module *mod, GElf_Addr at_phdr, GElf_Addr at_entry,
(*memory_callback) (mod->dwfl, -1, &buffer, &buffer_available, 0, 0,
memory_callback_arg);
-
if (*elfclass == ELFCLASSNONE)
*elfclass = ehdr.e_ident[EI_CLASS];
else if (*elfclass != ehdr.e_ident[EI_CLASS])
diff --git a/libdwfl/relocate.c b/libdwfl/relocate.c
index ef1daeee..e809a979 100644
--- a/libdwfl/relocate.c
+++ b/libdwfl/relocate.c
@@ -95,8 +95,10 @@ __libdwfl_relocate_value (Dwfl_Module *mod, Elf *elf, size_t *shstrndx,
return DWFL_E_LIBELF;
}
- /* Apply the adjustment. */
- *value += refshdr->sh_addr + mod->main.bias;
+ if (refshdr->sh_flags & SHF_ALLOC)
+ /* Apply the adjustment. */
+ *value += refshdr->sh_addr + mod->main.bias;
+
return DWFL_E_NOERROR;
}
@@ -183,7 +185,7 @@ relocate_getsym (Dwfl_Module *mod,
if (sym->st_shndx != SHN_XINDEX)
*shndx = sym->st_shndx;
- switch (*shndx)
+ switch (sym->st_shndx)
{
case SHN_ABS:
case SHN_UNDEF:
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index d3b2b1e8..bfc3ee5f 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,7 @@
+2009-04-14 Roland McGrath <[email protected]>
+
+ * elf.h: Update from glibc.
+
2009-04-01 Roland McGrath <[email protected]>
* elf.h: Update from glibc.
diff --git a/libelf/elf.h b/libelf/elf.h
index 62593502..062ef00f 100644
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -2205,42 +2205,62 @@ typedef Elf32_Addr Elf32_Conflict;
/* ARM specific declarations */
/* Processor specific flags for the ELF header e_flags field. */
-#define EF_ARM_RELEXEC 0x01
-#define EF_ARM_HASENTRY 0x02
-#define EF_ARM_INTERWORK 0x04
-#define EF_ARM_APCS_26 0x08
-#define EF_ARM_APCS_FLOAT 0x10
-#define EF_ARM_PIC 0x20
-#define EF_ARM_ALIGN8 0x40 /* 8-bit structure alignment is in use */
-#define EF_ARM_NEW_ABI 0x80
-#define EF_ARM_OLD_ABI 0x100
+#define EF_ARM_RELEXEC 0x01
+#define EF_ARM_HASENTRY 0x02
+#define EF_ARM_INTERWORK 0x04
+#define EF_ARM_APCS_26 0x08
+#define EF_ARM_APCS_FLOAT 0x10
+#define EF_ARM_PIC 0x20
+#define EF_ARM_ALIGN8 0x40 /* 8-bit structure alignment is in use */
+#define EF_ARM_NEW_ABI 0x80
+#define EF_ARM_OLD_ABI 0x100
+#define EF_ARM_SOFT_FLOAT 0x200
+#define EF_ARM_VFP_FLOAT 0x400
+#define EF_ARM_MAVERICK_FLOAT 0x800
+
/* Other constants defined in the ARM ELF spec. version B-01. */
/* NB. These conflict with values defined above. */
#define EF_ARM_SYMSARESORTED 0x04
-#define EF_ARM_DYNSYMSUSESEGIDX 0x08
+#define EF_ARM_DYNSYMSUSESEGIDX 0x08
#define EF_ARM_MAPSYMSFIRST 0x10
#define EF_ARM_EABIMASK 0XFF000000
-#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
-#define EF_ARM_EABI_UNKNOWN 0x00000000
-#define EF_ARM_EABI_VER1 0x01000000
-#define EF_ARM_EABI_VER2 0x02000000
+/* Constants defined in AAELF. */
+#define EF_ARM_BE8 0x00800000
+#define EF_ARM_LE8 0x00400000
+
+#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN 0x00000000
+#define EF_ARM_EABI_VER1 0x01000000
+#define EF_ARM_EABI_VER2 0x02000000
+#define EF_ARM_EABI_VER3 0x03000000
+#define EF_ARM_EABI_VER4 0x04000000
+#define EF_ARM_EABI_VER5 0x05000000
-/* Additional symbol types for Thumb */
-#define STT_ARM_TFUNC 0xd
+/* Additional symbol types for Thumb. */
+#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */
+#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */
/* ARM-specific values for sh_flags */
-#define SHF_ARM_ENTRYSECT 0x10000000 /* Section contains an entry point */
-#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined
- in the input to a link step */
+#define SHF_ARM_ENTRYSECT 0x10000000 /* Section contains an entry point */
+#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined
+ in the input to a link step. */
/* ARM-specific program header flags */
-#define PF_ARM_SB 0x10000000 /* Segment contains the location
- addressed by the static base */
+#define PF_ARM_SB 0x10000000 /* Segment contains the location
+ addressed by the static base. */
+#define PF_ARM_PI 0x20000000 /* Position-independent segment. */
+#define PF_ARM_ABS 0x40000000 /* Absolute segment. */
/* Processor specific values for the Phdr p_type field. */
-#define PT_ARM_EXIDX 0x70000001 /* .ARM.exidx segment */
+#define PT_ARM_EXIDX (PT_LOPROC + 1) /* ARM unwind segment. */
+
+/* Processor specific values for the Shdr sh_type field. */
+#define SHT_ARM_EXIDX (SHT_LOPROC + 1) /* ARM unwind section. */
+#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) /* Preemption details. */
+#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* ARM attributes section. */
+
/* ARM relocs. */
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 00000000..fd9917a4
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,5676 @@
+# German translation of elfutils.
+# Copyright (C) 2009 THE elfutils'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the elfutils package.
+# Thomas Spura <[email protected]>, 2009.
+# Cornelius Neckenig <[email protected]>, 2009.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: elfutils VERSION\n"
+"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
+"POT-Creation-Date: 2009-04-18 19:12+0000\n"
+"PO-Revision-Date: 2009-04-18 22:42+0100\n"
+"Last-Translator: Cornelius Neckenig <[email protected]>\n"
+"Language-Team: German\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:2703
+#: ../src/readelf.c:3041
+#: ../src/unstrip.c:2086
+#: ../src/unstrip.c:2294
+#, c-format
+msgid "memory exhausted"
+msgstr "Kein Speicher mehr verfügbar"
+
+#: ../libelf/elf_error.c:81
+#: ../libasm/asm_error.c:62
+#: ../libdw/dwarf_error.c:79
+msgid "no error"
+msgstr "kein Fehler"
+
+#: ../libelf/elf_error.c:84
+#: ../libasm/asm_error.c:81
+#: ../libdw/dwarf_error.c:80
+msgid "unknown error"
+msgstr "unbekannter Fehler"
+
+#: ../libelf/elf_error.c:88
+msgid "unknown version"
+msgstr "unbekannte Version"
+
+#: ../libelf/elf_error.c:92
+msgid "unknown type"
+msgstr "unbekannter Typ"
+
+#: ../libelf/elf_error.c:96
+msgid "invalid `Elf' handle"
+msgstr ""
+
+#: ../libelf/elf_error.c:100
+msgid "invalid size of source operand"
+msgstr ""
+
+#: ../libelf/elf_error.c:104
+msgid "invalid size of destination operand"
+msgstr ""
+
+#: ../libelf/elf_error.c:108
+#: ../src/readelf.c:4592
+#, c-format
+msgid "invalid encoding"
+msgstr "ungültige Kodierung"
+
+#: ../libelf/elf_error.c:112
+#: ../libasm/asm_error.c:63
+#: ../libdw/dwarf_error.c:88
+msgid "out of memory"
+msgstr ""
+
+#: ../libelf/elf_error.c:116
+msgid "invalid file descriptor"
+msgstr ""
+
+#: ../libelf/elf_error.c:120
+msgid "invalid operation"
+msgstr "ungültige Operation"
+
+#: ../libelf/elf_error.c:124
+msgid "ELF version not set"
+msgstr ""
+
+#: ../libelf/elf_error.c:128
+#: ../libelf/elf_error.c:176
+#: ../libdw/dwarf_error.c:90
+msgid "invalid command"
+msgstr "Ungültiger Befehl"
+
+#: ../libelf/elf_error.c:132
+#: ../libelf/elf_error.c:192
+msgid "offset out of range"
+msgstr ""
+
+#: ../libelf/elf_error.c:136
+msgid "invalid fmag field in archive header"
+msgstr ""
+
+#: ../libelf/elf_error.c:140
+msgid "invalid archive file"
+msgstr "Ungültige Archiv-Datei"
+
+#: ../libelf/elf_error.c:144
+msgid "descriptor is not for an archive"
+msgstr ""
+
+#: ../libelf/elf_error.c:148
+msgid "no index available"
+msgstr ""
+
+#: ../libelf/elf_error.c:152
+msgid "cannot read data from file"
+msgstr "Daten aus der Datei konnten nicht gelesen werden"
+
+#: ../libelf/elf_error.c:156
+msgid "cannot write data to file"
+msgstr "Daten konnten nicht in die Datei geschrieben werden"
+
+#: ../libelf/elf_error.c:160
+msgid "invalid binary class"
+msgstr ""
+
+#: ../libelf/elf_error.c:164
+msgid "invalid section index"
+msgstr ""
+
+#: ../libelf/elf_error.c:168
+msgid "invalid operand"
+msgstr ""
+
+#: ../libelf/elf_error.c:172
+msgid "invalid section"
+msgstr ""
+
+#: ../libelf/elf_error.c:180
+msgid "executable header not created first"
+msgstr ""
+
+#: ../libelf/elf_error.c:184
+msgid "file descriptor disabled"
+msgstr ""
+
+#: ../libelf/elf_error.c:188
+msgid "archive/member fildes mismatch"
+msgstr ""
+
+#: ../libelf/elf_error.c:196
+msgid "cannot manipulate null section"
+msgstr ""
+
+#: ../libelf/elf_error.c:200
+msgid "data/scn mismatch"
+msgstr ""
+
+#: ../libelf/elf_error.c:204
+msgid "invalid section header"
+msgstr ""
+
+#: ../libelf/elf_error.c:208
+#: ../src/readelf.c:6062
+#: ../src/readelf.c:6163
+#, c-format
+msgid "invalid data"
+msgstr "Ungültige Daten"
+
+#: ../libelf/elf_error.c:212
+msgid "unknown data encoding"
+msgstr "Unbekannte Datenkodierung"
+
+#: ../libelf/elf_error.c:216
+msgid "section `sh_size' too small for data"
+msgstr ""
+
+#: ../libelf/elf_error.c:220
+msgid "invalid section alignment"
+msgstr ""
+
+#: ../libelf/elf_error.c:224
+msgid "invalid section entry size"
+msgstr ""
+
+#: ../libelf/elf_error.c:228
+msgid "update() for write on read-only file"
+msgstr ""
+
+#: ../libelf/elf_error.c:232
+msgid "no such file"
+msgstr "Datei nicht gefunden"
+
+#: ../libelf/elf_error.c:236
+msgid "only relocatable files can contain section groups"
+msgstr ""
+
+#: ../libelf/elf_error.c:241
+msgid "program header only allowed in executables, shared objects, and core files"
+msgstr ""
+
+#: ../libelf/elf_error.c:248
+msgid "file has no program header"
+msgstr "Datei hat keinen Programm-Kopf"
+
+#: ../libelf/elf_error.c:253
+#: ../libdw/dwarf_error.c:112
+msgid "invalid offset"
+msgstr ""
+
+#: ../libasm/asm_error.c:64
+#: ../src/ldgeneric.c:2687
+#, c-format
+msgid "cannot create output file"
+msgstr "Ausgangsdatei konnte nicht erstellt werden"
+
+#: ../libasm/asm_error.c:65
+msgid "invalid parameter"
+msgstr "ungültiger Parameter"
+
+#: ../libasm/asm_error.c:66
+msgid "cannot change mode of output file"
+msgstr ""
+
+#. Something went wrong.
+#: ../libasm/asm_error.c:67
+#: ../src/ldgeneric.c:7001
+#, c-format
+msgid "cannot rename output file"
+msgstr "Ausgangsdatei konnte nicht umbenannt werden"
+
+#: ../libasm/asm_error.c:68
+msgid "duplicate symbol"
+msgstr "Symbol doppelt vorhanden"
+
+#: ../libasm/asm_error.c:69
+msgid "invalid section type for operation"
+msgstr ""
+
+#: ../libasm/asm_error.c:70
+msgid "error during output of data"
+msgstr "Fehler bei Datenausgabe"
+
+#: ../libasm/asm_error.c:71
+msgid "no backend support available"
+msgstr ""
+
+#: ../libdw/dwarf_error.c:81
+msgid "invalid access"
+msgstr "Ungültiger Zugriff"
+
+#: ../libdw/dwarf_error.c:82
+msgid "no regular file"
+msgstr "Keine reguläre Date"
+
+#: ../libdw/dwarf_error.c:83
+msgid "I/O error"
+msgstr "I/O Fehler"
+
+#: ../libdw/dwarf_error.c:84
+msgid "invalid ELF file"
+msgstr "Ungültige ELF Datei"
+
+#: ../libdw/dwarf_error.c:85
+msgid "no DWARF information"
+msgstr "keine DWARF Information"
+
+#: ../libdw/dwarf_error.c:86
+msgid "no ELF file"
+msgstr "keine ELF Datei"
+
+#: ../libdw/dwarf_error.c:87
+msgid "cannot get ELF header"
+msgstr "ELF Kopf konnte nicht ausgelesen werden"
+
+#: ../libdw/dwarf_error.c:89
+msgid "not implemented"
+msgstr "Nicht implementiert"
+
+#: ../libdw/dwarf_error.c:91
+msgid "invalid version"
+msgstr "Ungültige Version"
+
+#: ../libdw/dwarf_error.c:92
+msgid "invalid file"
+msgstr "Ungültige Datei"
+
+#: ../libdw/dwarf_error.c:93
+msgid "no entries found"
+msgstr "Keine Einträge gefunden"
+
+#: ../libdw/dwarf_error.c:94
+msgid "invalid DWARF"
+msgstr "DWARF ungültig"
+
+#: ../libdw/dwarf_error.c:95
+msgid "no string data"
+msgstr ""
+
+#: ../libdw/dwarf_error.c:96
+msgid "no address value"
+msgstr "Kein Adress-Wert"
+
+#: ../libdw/dwarf_error.c:97
+msgid "no constant value"
+msgstr "Kein Konstanten-Wert"
+
+#: ../libdw/dwarf_error.c:98
+msgid "no reference value"
+msgstr "Kein Referenz-Wert"
+
+#: ../libdw/dwarf_error.c:99
+msgid "invalid reference value"
+msgstr "Ungültiger Referenz-Wert"
+
+#: ../libdw/dwarf_error.c:100
+msgid ".debug_line section missing"
+msgstr ".debug_line Sektion fehlt"
+
+#: ../libdw/dwarf_error.c:101
+msgid "invalid .debug_line section"
+msgstr "ungültige .debug_line Sektion"
+
+#: ../libdw/dwarf_error.c:102
+msgid "debug information too big"
+msgstr "Debug Information zu groß"
+
+#: ../libdw/dwarf_error.c:103
+msgid "invalid DWARF version"
+msgstr "Ungültige DWARF Version"
+
+#: ../libdw/dwarf_error.c:104
+msgid "invalid directory index"
+msgstr ""
+
+#: ../libdw/dwarf_error.c:105
+msgid "address out of range"
+msgstr "Außerhalb des Adressbereiches"
+
+#: ../libdw/dwarf_error.c:106
+msgid "no location list value"
+msgstr ""
+
+#: ../libdw/dwarf_error.c:107
+msgid "no block data"
+msgstr ""
+
+#: ../libdw/dwarf_error.c:108
+msgid "invalid line index"
+msgstr "Ungültiger Zeilenindex"
+
+#: ../libdw/dwarf_error.c:109
+msgid "invalid address range index"
+msgstr "Ungültiger Adressbereichs Index"
+
+#: ../libdw/dwarf_error.c:110
+msgid "no matching address range"
+msgstr "Kein passender Adressbereich"
+
+#: ../libdw/dwarf_error.c:111
+msgid "no flag value"
+msgstr ""
+
+#: ../libdw/dwarf_error.c:113
+msgid ".debug_ranges section missing"
+msgstr ""
+
+#: ../libdwfl/argp-std.c:67
+#: ../src/unstrip.c:2236
+msgid "Input selection options:"
+msgstr "Eingabeauswahloptionen:"
+
+#: ../libdwfl/argp-std.c:68
+msgid "Find addresses in FILE"
+msgstr "Finde Adressen in FILE"
+
+#: ../libdwfl/argp-std.c:70
+msgid "Find addresses from signatures found in COREFILE"
+msgstr "Finde Adressen von Signatur aus COREFILE"
+
+#: ../libdwfl/argp-std.c:72
+msgid "Find addresses in files mapped into process PID"
+msgstr ""
+
+#: ../libdwfl/argp-std.c:74
+msgid "Find addresses in files mapped as read from FILE in Linux /proc/PID/maps format"
+msgstr ""
+
+#: ../libdwfl/argp-std.c:76
+msgid "Find addresses in the running kernel"
+msgstr "Finde Adressen im laufnenden Kernel"
+
+#: ../libdwfl/argp-std.c:78
+msgid "Kernel with all modules"
+msgstr "Kernel mit allen Modulen"
+
+#: ../libdwfl/argp-std.c:80
+msgid "Search path for separate debuginfo files"
+msgstr "Dateisuchpfad für separate Debug-Informationen"
+
+#: ../libdwfl/argp-std.c:163
+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
+#, c-format
+msgid "cannot read ELF core file: %s"
+msgstr "Konnte ELF Kerndatei %s nicht lesen"
+
+#: ../libdwfl/argp-std.c:243
+msgid "No modules recognized in core file"
+msgstr "Keine Module in der Kerndatei gefunden"
+
+#: ../libdwfl/argp-std.c:255
+msgid "cannot load kernel symbols"
+msgstr "Konnte Kernel Symbole nicht laden"
+
+#. Non-fatal to have no modules since we do have the kernel.
+#: ../libdwfl/argp-std.c:259
+msgid "cannot find kernel modules"
+msgstr "Konnte Kernel Module nicht finden"
+
+#: ../libdwfl/argp-std.c:273
+msgid "cannot find kernel or modules"
+msgstr "Konnte Kernel oder Module nicht finden"
+
+#: ../libebl/eblbackendname.c:63
+msgid "No backend"
+msgstr ""
+
+#: ../libebl/eblcorenotetypename.c:107
+#: ../libebl/eblobjecttypename.c:78
+#: ../libebl/eblobjnotetypename.c:85
+#: ../libebl/eblosabiname.c:98
+#: ../libebl/eblsectionname.c:110
+#: ../libebl/eblsectiontypename.c:140
+#: ../libebl/eblsegmenttypename.c:104
+msgid "<unknown>"
+msgstr "<Unbekannt>"
+
+#: ../libebl/ebldynamictagname.c:126
+#, c-format
+msgid "<unknown>: %#<PRIx64>"
+msgstr "<Unbekannt>: %#<PRIx64>"
+
+#: ../libebl/eblobjnote.c:76
+#, c-format
+msgid " Build ID: "
+msgstr " Build ID: "
+
+#: ../libebl/eblobjnote.c:129
+#, c-format
+msgid " OS: %s, ABI: "
+msgstr " OS: %s, ABI: "
+
+#: ../libebl/eblosabiname.c:95
+msgid "Stand alone"
+msgstr ""
+
+#: ../libebl/eblsymbolbindingname.c:86
+#: ../libebl/eblsymboltypename.c:94
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<unknown>: %d"
+
+#: ../src/ar.c:76
+msgid "Commands:"
+msgstr "Befehle:"
+
+#: ../src/ar.c:77
+msgid "Delete files from archive."
+msgstr "Dateien aus dem Archiv löschen."
+
+#: ../src/ar.c:78
+msgid "Move files in archive."
+msgstr "Dateien zum Archiv hinzufügen."
+
+#: ../src/ar.c:79
+msgid "Print files in archive."
+msgstr "Packe Dateien in Archiv"
+
+#: ../src/ar.c:80
+msgid "Quick append files to archive."
+msgstr "Hänge Dateien an ein Archiv"
+
+#: ../src/ar.c:82
+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
+msgid "Display content of archive."
+msgstr "Zeige Archivinhalt an."
+
+#: ../src/ar.c:84
+msgid "Extract files from archive."
+msgstr "Entpacke Dateien aus dem Archiv"
+
+#: ../src/ar.c:86
+msgid "Command Modifiers:"
+msgstr ""
+
+#: ../src/ar.c:87
+msgid "Preserve original dates."
+msgstr ""
+
+#: ../src/ar.c:88
+msgid "Use instance [COUNT] of name."
+msgstr ""
+
+#: ../src/ar.c:90
+msgid "Do not replace existing files with extracted files."
+msgstr "Ersetze existierende Dateien nicht mit entpackten Dateien"
+
+#: ../src/ar.c:91
+msgid "Allow filename to be truncated if necessary."
+msgstr "Erlaube angehängte Dateinamen, wenn nötig"
+
+#: ../src/ar.c:93
+msgid "Provide verbose output."
+msgstr ""
+
+#: ../src/ar.c:94
+msgid "Force regeneration of symbol table."
+msgstr ""
+
+#: ../src/ar.c:95
+msgid "Insert file after [MEMBER]."
+msgstr "Füge Datei nach [MEMBER] ein."
+
+#: ../src/ar.c:96
+msgid "Insert file before [MEMBER]."
+msgstr "Füge Datei vor [MEMBER] ein."
+
+#: ../src/ar.c:97
+msgid "Same as -b."
+msgstr "Genau wie -b."
+
+#: ../src/ar.c:98
+msgid "Suppress message when library has to be created."
+msgstr ""
+
+#: ../src/ar.c:100
+msgid "Use full path for file matching."
+msgstr ""
+
+#: ../src/ar.c:101
+msgid "Update only older files in archive."
+msgstr "Nur ältere Datein im Archiv aktualisieren"
+
+#. Short description of program.
+#: ../src/ar.c:107
+msgid "Create, modify, and extract from archives."
+msgstr "Erstelle, ändere, extrahiere von Archiven"
+
+#. Strings for arguments in help texts.
+#: ../src/ar.c:110
+msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
+msgstr "[MEMBER] [COUNT] ARCHIVE [FILE...]"
+
+#: ../src/ar.c:192
+#, 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
+#, c-format
+msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
+msgstr ""
+
+#: ../src/ar.c:213
+#, c-format
+msgid "'N' is only meaningful with the 'x' and 'd' options"
+msgstr ""
+
+#: ../src/ar.c:218
+#, c-format
+msgid "COUNT parameter required"
+msgstr "COUNT Parameter erforderlich"
+
+#: ../src/ar.c:230
+#, c-format
+msgid "invalid COUNT parameter %s"
+msgstr "Ungültiger COUNT Parameter %s"
+
+#: ../src/ar.c:237
+#, c-format
+msgid "'%' is only meaningful with the 'x' option"
+msgstr ""
+
+#: ../src/ar.c:243
+#, c-format
+msgid "archive name required"
+msgstr "Archivname erforderlich"
+
+#: ../src/ar.c:289
+#: ../src/nm.c:253
+#: ../src/readelf.c:432
+#: ../src/size.c:219
+#: ../src/strip.c:203
+#: ../src/ld.c:957
+#: ../src/elflint.c:238
+#: ../src/addr2line.c:180
+#: ../src/findtextrel.c:170
+#: ../src/elfcmp.c:522
+#: ../src/ranlib.c:136
+#: ../src/strings.c:227
+#: ../src/unstrip.c:233
+#: ../src/objdump.c:181
+#, c-format
+msgid ""
+"Copyright (C) %s Red Hat, Inc.\n"
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+"Copyright (C) %s Red Hat, Inc.\n"
+"Dies ist freie Software, siehe Quellcode für Kopierbedingungen. KEINE GARANTIE,\n"
+"auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n"
+
+#: ../src/ar.c:294
+#: ../src/nm.c:258
+#: ../src/readelf.c:437
+#: ../src/size.c:224
+#: ../src/strip.c:208
+#: ../src/ld.c:962
+#: ../src/elflint.c:243
+#: ../src/addr2line.c:185
+#: ../src/findtextrel.c:175
+#: ../src/elfcmp.c:527
+#: ../src/ranlib.c:141
+#: ../src/strings.c:232
+#: ../src/unstrip.c:238
+#: ../src/objdump.c:186
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Geschrieben von %s.\n"
+
+#: ../src/ar.c:314
+#, c-format
+msgid "More than one operation specified"
+msgstr ""
+
+#: ../src/ar.c:404
+#, c-format
+msgid "cannot open archive '%s'"
+msgstr "Konnte Archiv '%s' nicht öffnen"
+
+#: ../src/ar.c:414
+#, c-format
+msgid "cannot open archive '%s': %s"
+msgstr "Konnte Archiv '%s': %s nicht öffnen"
+
+#: ../src/ar.c:418
+#, c-format
+msgid "%s: not an archive file"
+msgstr "%s: Keine Archiv-Datei"
+
+#: ../src/ar.c:422
+#, c-format
+msgid "cannot stat archive '%s'"
+msgstr ""
+
+#: ../src/ar.c:434
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "Kein Eintrag %s in Archiv\n"
+
+#: ../src/ar.c:474
+#: ../src/ar.c:918
+#: ../src/ar.c:1118
+#, c-format
+msgid "cannot create hash table"
+msgstr "Konnte Hash-Tabelle nicht erstellen"
+
+#: ../src/ar.c:481
+#: ../src/ar.c:925
+#: ../src/ar.c:1127
+#, c-format
+msgid "cannot insert into hash table"
+msgstr "Konnte nicht in Hash-Tabelle einfügen"
+
+#: ../src/ar.c:489
+#: ../src/ranlib.c:176
+#, c-format
+msgid "cannot stat '%s'"
+msgstr ""
+
+#: ../src/ar.c:585
+#, c-format
+msgid "cannot read content of %s: %s"
+msgstr "Konnte Inhalt von %s: %s nicht lesen"
+
+#: ../src/ar.c:629
+#, c-format
+msgid "cannot open %.*s"
+msgstr "Konnte %.*s nicht öffnen"
+
+#: ../src/ar.c:651
+#, c-format
+msgid "failed to write %s"
+msgstr "Konnte %s nicht schreiben"
+
+#: ../src/ar.c:663
+#, c-format
+msgid "cannot change mode of %s"
+msgstr ""
+
+#: ../src/ar.c:679
+#, c-format
+msgid "cannot change modification time of %s"
+msgstr "Konnte Bearbeitungszeit von %s nicht ändern"
+
+#: ../src/ar.c:726
+#, c-format
+msgid "cannot rename temporary file to %.*s"
+msgstr "Konnte temporäre Datei nicht in %.*s umbenennen"
+
+#: ../src/ar.c:762
+#: ../src/ar.c:1010
+#: ../src/ar.c:1408
+#: ../src/ranlib.c:250
+#, c-format
+msgid "cannot create new file"
+msgstr "neue Datei konnte nicht angelegt werden"
+
+#: ../src/ar.c:1209
+#, c-format
+msgid "position member %s not found"
+msgstr ""
+
+#: ../src/ar.c:1219
+#, c-format
+msgid "%s: no entry %s in archive!\n"
+msgstr "%s: Kein Eintrag %s in dem Archiv!\n"
+
+#: ../src/ar.c:1248
+#: ../src/ldgeneric.c:519
+#: ../src/objdump.c:257
+#, c-format
+msgid "cannot open %s"
+msgstr "Konnte %s nicht öffnen"
+
+#: ../src/ar.c:1253
+#, c-format
+msgid "cannot stat %s"
+msgstr ""
+
+#: ../src/ar.c:1259
+#, c-format
+msgid "%s is no regular file"
+msgstr "%s ist keine reguläre Datei"
+
+#: ../src/ar.c:1272
+#, c-format
+msgid "cannot get ELF descriptor for %s: %s\n"
+msgstr ""
+
+#: ../src/ar.c:1291
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "Konnte %s: %s nicht lesen"
+
+#. The archive is too big.
+#: ../src/arlib.c:215
+#, c-format
+msgid "the archive '%s' is too large"
+msgstr "Das Archiv '%s' ist zu groß"
+
+#: ../src/arlib.c:228
+#, c-format
+msgid "cannot read ELF header of %s(%s): %s"
+msgstr "\"Konnte ELF-Kopf von %s(%s): %s nicht lesen"
+
+#: ../src/nm.c:74
+#: ../src/readelf.c:72
+#: ../src/strip.c:72
+msgid "Output selection:"
+msgstr ""
+
+#: ../src/nm.c:75
+msgid "Display debugger-only symbols"
+msgstr ""
+
+#: ../src/nm.c:76
+msgid "Display only defined symbols"
+msgstr ""
+
+#: ../src/nm.c:79
+msgid "Display dynamic symbols instead of normal symbols"
+msgstr ""
+
+#: ../src/nm.c:80
+msgid "Display only external symbols"
+msgstr ""
+
+#: ../src/nm.c:81
+msgid "Display only undefined symbols"
+msgstr ""
+
+#: ../src/nm.c:83
+msgid "Include index for symbols from archive members"
+msgstr ""
+
+#: ../src/nm.c:85
+#: ../src/size.c:66
+msgid "Output format:"
+msgstr ""
+
+#: ../src/nm.c:87
+msgid "Print name of the input file before every symbol"
+msgstr ""
+
+#: ../src/nm.c:90
+msgid "Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The default is `sysv'"
+msgstr ""
+
+#: ../src/nm.c:92
+msgid "Same as --format=bsd"
+msgstr ""
+
+#: ../src/nm.c:93
+msgid "Same as --format=posix"
+msgstr ""
+
+#: ../src/nm.c:94
+#: ../src/size.c:72
+msgid "Use RADIX for printing symbol values"
+msgstr ""
+
+#: ../src/nm.c:95
+msgid "Mark weak symbols"
+msgstr ""
+
+#: ../src/nm.c:96
+msgid "Print size of defined symbols"
+msgstr ""
+
+#: ../src/nm.c:98
+#: ../src/size.c:80
+#: ../src/strip.c:77
+#: ../src/unstrip.c:80
+msgid "Output options:"
+msgstr ""
+
+#: ../src/nm.c:99
+msgid "Sort symbols numerically by address"
+msgstr ""
+
+#: ../src/nm.c:101
+msgid "Do not sort the symbols"
+msgstr ""
+
+#: ../src/nm.c:102
+msgid "Reverse the sense of the sort"
+msgstr ""
+
+#: ../src/nm.c:103
+#: ../src/addr2line.c:73
+#: ../src/findtextrel.c:75
+#: ../src/elfcmp.c:75
+#: ../src/strings.c:83
+msgid "Miscellaneous:"
+msgstr ""
+
+#. Short description of program.
+#: ../src/nm.c:108
+msgid "List symbols from FILEs (a.out by default)."
+msgstr ""
+
+#. Strings for arguments in help texts.
+#: ../src/nm.c:111
+#: ../src/size.c:92
+#: ../src/strip.c:96
+#: ../src/findtextrel.c:84
+#: ../src/strings.c:92
+#: ../src/objdump.c:80
+msgid "[FILE...]"
+msgstr ""
+
+#: ../src/nm.c:136
+#: ../src/size.c:117
+#: ../src/strip.c:120
+#: ../src/objdump.c:105
+#, c-format
+msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
+msgstr ""
+
+#: ../src/nm.c:363
+#: ../src/size.c:301
+#: ../src/strip.c:432
+#: ../src/strip.c:467
+#: ../src/ldgeneric.c:1767
+#: ../src/ldgeneric.c:4257
+#: ../src/findtextrel.c:229
+#: ../src/elfcmp.c:574
+#: ../src/ranlib.c:169
+#: ../src/strings.c:183
+#: ../src/unstrip.c:1899
+#: ../src/unstrip.c:1928
+#, c-format
+msgid "cannot open '%s'"
+msgstr ""
+
+#: ../src/nm.c:380
+#: ../src/nm.c:392
+#: ../src/size.c:317
+#: ../src/size.c:326
+#: ../src/size.c:337
+#: ../src/strip.c:1815
+#, c-format
+msgid "while closing '%s'"
+msgstr ""
+
+#: ../src/nm.c:402
+#: ../src/strip.c:358
+#: ../src/objdump.c:296
+#, c-format
+msgid "%s: File format not recognized"
+msgstr ""
+
+#. Note: 0 is no valid offset.
+#: ../src/nm.c:442
+msgid ""
+"\n"
+"Archive index:"
+msgstr ""
+
+#: ../src/nm.c:451
+#, c-format
+msgid "invalid offset %zu for symbol %s"
+msgstr ""
+
+#: ../src/nm.c:456
+#, c-format
+msgid "%s in %s\n"
+msgstr ""
+
+#: ../src/nm.c:464
+#, c-format
+msgid "cannot reset archive offset to beginning"
+msgstr ""
+
+#: ../src/nm.c:488
+#: ../src/objdump.c:344
+#, c-format
+msgid "%s%s%s: file format not recognized"
+msgstr ""
+
+#: ../src/nm.c:700
+#, c-format
+msgid "cannot create search tree"
+msgstr ""
+
+#: ../src/nm.c:740
+#: ../src/nm.c:1002
+#: ../src/readelf.c:850
+#: ../src/readelf.c:993
+#: ../src/readelf.c:1134
+#: ../src/readelf.c:1316
+#: ../src/readelf.c:1514
+#: ../src/readelf.c:1659
+#: ../src/readelf.c:1827
+#: ../src/readelf.c:2081
+#: ../src/readelf.c:2147
+#: ../src/readelf.c:2225
+#: ../src/readelf.c:2722
+#: ../src/readelf.c:2758
+#: ../src/readelf.c:2820
+#: ../src/readelf.c:6312
+#: ../src/readelf.c:7178
+#: ../src/readelf.c:7323
+#: ../src/readelf.c:7392
+#: ../src/size.c:425
+#: ../src/size.c:499
+#: ../src/strip.c:482
+#: ../src/objdump.c:744
+#, c-format
+msgid "cannot get section header string table index"
+msgstr ""
+
+#: ../src/nm.c:766
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symbole aus %s:\n"
+"\n"
+
+#: ../src/nm.c:768
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symbole aus %s[%s]:\n"
+"\n"
+
+#. The header line.
+#: ../src/nm.c:771
+#, c-format
+msgid ""
+"%*s%-*s %-*s Class Type %-*s %*s Section\n"
+"\n"
+msgstr ""
+
+#: ../src/nm.c:1012
+#, c-format
+msgid "%s: entry size in section `%s' is not what we expect"
+msgstr ""
+
+#: ../src/nm.c:1016
+#, c-format
+msgid "%s: size of section `%s' is not multiple of entry size"
+msgstr ""
+
+#. XXX Add machine specific object file types.
+#: ../src/nm.c:1255
+#, c-format
+msgid "%s%s%s%s: Invalid operation"
+msgstr ""
+
+#: ../src/nm.c:1312
+#, c-format
+msgid "%s%s%s: no symbols"
+msgstr ""
+
+#: ../src/readelf.c:73
+msgid "Equivalent to: -e -h -l"
+msgstr ""
+
+#: ../src/readelf.c:74
+msgid "Display the dynamic segment"
+msgstr ""
+
+#: ../src/readelf.c:75
+msgid "Display the ELF file header"
+msgstr ""
+
+#: ../src/readelf.c:77
+msgid "Display histogram of bucket list lengths"
+msgstr ""
+
+#: ../src/readelf.c:78
+msgid "Display the program headers"
+msgstr ""
+
+#: ../src/readelf.c:80
+msgid "Display relocations"
+msgstr ""
+
+#: ../src/readelf.c:81
+msgid "Display the sections' header"
+msgstr ""
+
+#: ../src/readelf.c:83
+msgid "Display the symbol table"
+msgstr ""
+
+#: ../src/readelf.c:84
+msgid "Display versioning information"
+msgstr ""
+
+#: ../src/readelf.c:86
+msgid "Display DWARF section content. SECTION can be one of abbrev, aranges, frame, info, loc, line, ranges, pubnames, str, macinfo, or exception"
+msgstr ""
+
+#: ../src/readelf.c:89
+msgid "Display the core notes"
+msgstr ""
+
+#: ../src/readelf.c:91
+msgid "Display architecture specific information (if any)"
+msgstr ""
+
+#: ../src/readelf.c:93
+msgid "Dump the uninterpreted contents of SECTION, by number or name"
+msgstr ""
+
+#: ../src/readelf.c:95
+msgid "Print string contents of sections"
+msgstr ""
+
+#: ../src/readelf.c:98
+msgid "Display the symbol index of an archive"
+msgstr ""
+
+#: ../src/readelf.c:99
+msgid "Display sections for exception handling"
+msgstr ""
+
+#: ../src/readelf.c:102
+msgid "Output control:"
+msgstr ""
+
+#. Short description of program.
+#: ../src/readelf.c:108
+msgid "Print information from ELF file in human-readable form."
+msgstr ""
+
+#. Strings for arguments in help texts.
+#: ../src/readelf.c:112
+#: ../src/elflint.c:85
+msgid "FILE..."
+msgstr ""
+
+#: ../src/readelf.c:259
+#: ../src/elflint.c:158
+#, c-format
+msgid "cannot open input file"
+msgstr ""
+
+#: ../src/readelf.c:387
+#, c-format
+msgid "Unknown DWARF debug section `%s'.\n"
+msgstr ""
+
+#: ../src/readelf.c:408
+#: ../src/elflint.c:222
+msgid "Missing file name.\n"
+msgstr ""
+
+#: ../src/readelf.c:413
+#: ../src/objdump.c:236
+msgid "No operation specified.\n"
+msgstr ""
+
+#: ../src/readelf.c:448
+#, c-format
+msgid "cannot generate Elf descriptor: %s"
+msgstr ""
+
+#: ../src/readelf.c:460
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr ""
+
+#: ../src/readelf.c:465
+#, c-format
+msgid "error while closing Elf descriptor: %s"
+msgstr ""
+
+#: ../src/readelf.c:557
+#, c-format
+msgid "cannot stat input file"
+msgstr ""
+
+#: ../src/readelf.c:559
+#, c-format
+msgid "input file is empty"
+msgstr ""
+
+#: ../src/readelf.c:561
+#, c-format
+msgid "failed reading '%s': %s"
+msgstr ""
+
+#: ../src/readelf.c:596
+#, c-format
+msgid "cannot read ELF header: %s"
+msgstr ""
+
+#: ../src/readelf.c:604
+#, c-format
+msgid "cannot create EBL handle"
+msgstr ""
+
+#: ../src/readelf.c:611
+#: ../src/strip.c:542
+#: ../src/ldgeneric.c:661
+#: ../src/ldgeneric.c:1122
+#, c-format
+msgid "cannot determine number of sections: %s"
+msgstr ""
+
+#: ../src/readelf.c:697
+msgid "NONE (None)"
+msgstr ""
+
+#: ../src/readelf.c:698
+msgid "REL (Relocatable file)"
+msgstr ""
+
+#: ../src/readelf.c:699
+msgid "EXEC (Executable file)"
+msgstr ""
+
+#: ../src/readelf.c:700
+msgid "DYN (Shared object file)"
+msgstr ""
+
+#: ../src/readelf.c:701
+msgid "CORE (Core file)"
+msgstr ""
+
+#: ../src/readelf.c:706
+#, c-format
+msgid "OS Specific: (%x)\n"
+msgstr ""
+
+#. && e_type <= ET_HIPROC always true
+#: ../src/readelf.c:708
+#, c-format
+msgid "Processor Specific: (%x)\n"
+msgstr ""
+
+#: ../src/readelf.c:718
+msgid ""
+"ELF Header:\n"
+" Magic: "
+msgstr ""
+
+#: ../src/readelf.c:722
+#, c-format
+msgid ""
+"\n"
+" Class: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:727
+#, c-format
+msgid " Data: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:733
+#, c-format
+msgid " Ident Version: %hhd %s\n"
+msgstr ""
+
+#: ../src/readelf.c:735
+#: ../src/readelf.c:752
+msgid "(current)"
+msgstr ""
+
+#: ../src/readelf.c:739
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:742
+#, c-format
+msgid " ABI Version: %hhd\n"
+msgstr ""
+
+#: ../src/readelf.c:745
+msgid " Type: "
+msgstr ""
+
+#: ../src/readelf.c:748
+#, c-format
+msgid " Machine: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:750
+#, c-format
+msgid " Version: %d %s\n"
+msgstr ""
+
+#: ../src/readelf.c:754
+#, c-format
+msgid " Entry point address: %#<PRIx64>\n"
+msgstr ""
+
+#: ../src/readelf.c:757
+#, c-format
+msgid " Start of program headers: %<PRId64> %s\n"
+msgstr ""
+
+#: ../src/readelf.c:758
+#: ../src/readelf.c:761
+msgid "(bytes into file)"
+msgstr ""
+
+#: ../src/readelf.c:760
+#, c-format
+msgid " Start of section headers: %<PRId64> %s\n"
+msgstr ""
+
+#: ../src/readelf.c:763
+#, c-format
+msgid " Flags: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:766
+#, c-format
+msgid " Size of this header: %<PRId16> %s\n"
+msgstr ""
+
+#: ../src/readelf.c:767
+#: ../src/readelf.c:770
+#: ../src/readelf.c:776
+msgid "(bytes)"
+msgstr ""
+
+#: ../src/readelf.c:769
+#, c-format
+msgid " Size of program header entries: %<PRId16> %s\n"
+msgstr ""
+
+#: ../src/readelf.c:772
+#, c-format
+msgid " Number of program headers entries: %<PRId16>\n"
+msgstr ""
+
+#: ../src/readelf.c:775
+#, c-format
+msgid " Size of section header entries: %<PRId16> %s\n"
+msgstr ""
+
+#: ../src/readelf.c:778
+#, c-format
+msgid " Number of section headers entries: %<PRId16>"
+msgstr ""
+
+#: ../src/readelf.c:785
+#, c-format
+msgid " (%<PRIu32> in [0].sh_size)"
+msgstr ""
+
+#: ../src/readelf.c:788
+#: ../src/readelf.c:802
+msgid " ([0] not available)"
+msgstr ""
+
+#. We managed to get the zeroth section.
+#: ../src/readelf.c:798
+#, c-format
+msgid " (%<PRIu32> in [0].sh_link)"
+msgstr ""
+
+#: ../src/readelf.c:806
+#, c-format
+msgid ""
+" Section header string table index: XINDEX%s\n"
+"\n"
+msgstr ""
+
+#: ../src/readelf.c:810
+#, c-format
+msgid ""
+" Section header string table index: %<PRId16>\n"
+"\n"
+msgstr ""
+
+#: ../src/readelf.c:842
+#, c-format
+msgid ""
+"There are %d section headers, starting at offset %#<PRIx64>:\n"
+"\n"
+msgstr ""
+
+#: ../src/readelf.c:852
+msgid "Section Headers:"
+msgstr ""
+
+#: ../src/readelf.c:855
+msgid "[Nr] Name Type Addr Off Size ES Flags Lk Inf Al"
+msgstr ""
+
+#: ../src/readelf.c:857
+msgid "[Nr] Name Type Addr Off Size ES Flags Lk Inf Al"
+msgstr ""
+
+#: ../src/readelf.c:864
+#: ../src/readelf.c:1017
+#, c-format
+msgid "cannot get section: %s"
+msgstr ""
+
+#: ../src/readelf.c:871
+#: ../src/readelf.c:1025
+#: ../src/readelf.c:7343
+#: ../src/unstrip.c:352
+#: ../src/unstrip.c:376
+#: ../src/unstrip.c:426
+#: ../src/unstrip.c:535
+#: ../src/unstrip.c:552
+#: ../src/unstrip.c:590
+#: ../src/unstrip.c:788
+#: ../src/unstrip.c:1056
+#: ../src/unstrip.c:1243
+#: ../src/unstrip.c:1304
+#: ../src/unstrip.c:1426
+#: ../src/unstrip.c:1479
+#: ../src/unstrip.c:1587
+#: ../src/unstrip.c:1777
+#, c-format
+msgid "cannot get section header: %s"
+msgstr ""
+
+#: ../src/readelf.c:929
+msgid "Program Headers:"
+msgstr ""
+
+#: ../src/readelf.c:931
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
+msgstr ""
+
+#: ../src/readelf.c:934
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
+msgstr ""
+
+#: ../src/readelf.c:974
+#, c-format
+msgid "\t[Requesting program interpreter: %s]\n"
+msgstr ""
+
+#: ../src/readelf.c:995
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+" Segment Sections..."
+msgstr ""
+
+#: ../src/readelf.c:1006
+#: ../src/unstrip.c:1823
+#: ../src/unstrip.c:1862
+#: ../src/unstrip.c:1869
+#, c-format
+msgid "cannot get program header: %s"
+msgstr ""
+
+#: ../src/readelf.c:1140
+#, c-format
+msgid ""
+"\n"
+"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
+msgid_plural ""
+"\n"
+"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:1145
+#, c-format
+msgid ""
+"\n"
+"Section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
+msgid_plural ""
+"\n"
+"Section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:1153
+msgid "<INVALID SYMBOL>"
+msgstr ""
+
+#: ../src/readelf.c:1167
+msgid "<INVALID SECTION>"
+msgstr ""
+
+#: ../src/readelf.c:1318
+#, c-format
+msgid ""
+"\n"
+"Dynamic segment contains %lu entry:\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
+msgid_plural ""
+"\n"
+"Dynamic segment contains %lu entries:\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:1330
+msgid " Type Value\n"
+msgstr ""
+
+#: ../src/readelf.c:1354
+#, c-format
+msgid "Shared library: [%s]\n"
+msgstr ""
+
+#: ../src/readelf.c:1359
+#, c-format
+msgid "Library soname: [%s]\n"
+msgstr ""
+
+#: ../src/readelf.c:1364
+#, c-format
+msgid "Library rpath: [%s]\n"
+msgstr ""
+
+#: ../src/readelf.c:1369
+#, c-format
+msgid "Library runpath: [%s]\n"
+msgstr ""
+
+#: ../src/readelf.c:1389
+#, c-format
+msgid "%<PRId64> (bytes)\n"
+msgstr ""
+
+#: ../src/readelf.c:1499
+#: ../src/readelf.c:1644
+#, c-format
+msgid ""
+"\n"
+"Invalid symbol table at offset %#0<PRIx64>\n"
+msgstr ""
+
+#: ../src/readelf.c:1517
+#: ../src/readelf.c:1661
+#, c-format
+msgid ""
+"\n"
+"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> contains %d entry:\n"
+msgid_plural ""
+"\n"
+"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#. The .rel.dyn section does not refer to a specific section but
+#. instead of section index zero. Do not try to print a section
+#. name.
+#: ../src/readelf.c:1532
+#, c-format
+msgid ""
+"\n"
+"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entry:\n"
+msgid_plural ""
+"\n"
+"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:1542
+msgid " Offset Type Value Name\n"
+msgstr ""
+
+#: ../src/readelf.c:1544
+msgid " Offset Type Value Name\n"
+msgstr ""
+
+#: ../src/readelf.c:1568
+#: ../src/readelf.c:1580
+#: ../src/readelf.c:1598
+#: ../src/readelf.c:1610
+#: ../src/readelf.c:1700
+#: ../src/readelf.c:1713
+#: ../src/readelf.c:1732
+#: ../src/readelf.c:1745
+msgid "<INVALID RELOC>"
+msgstr ""
+
+#: ../src/readelf.c:1569
+#: ../src/readelf.c:1701
+#: ../src/objdump.c:379
+msgid "INVALID SYMBOL"
+msgstr ""
+
+#: ../src/readelf.c:1599
+#: ../src/readelf.c:1733
+#: ../src/objdump.c:394
+msgid "INVALID SECTION"
+msgstr ""
+
+#: ../src/readelf.c:1673
+msgid " Offset Type Value Addend Name\n"
+msgstr ""
+
+#: ../src/readelf.c:1675
+msgid " Offset Type Value Addend Name\n"
+msgstr ""
+
+#: ../src/readelf.c:1834
+#, c-format
+msgid ""
+"\n"
+"Symbol table [%2u] '%s' contains %u entry:\n"
+msgid_plural ""
+"\n"
+"Symbol table [%2u] '%s' contains %u entries:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:1840
+#, 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:1850
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: ../src/readelf.c:1852
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: ../src/readelf.c:1872
+#, c-format
+msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+msgstr ""
+
+#: ../src/readelf.c:1960
+#, c-format
+msgid "bad dynamic symbol"
+msgstr ""
+
+#: ../src/readelf.c:2042
+msgid "none"
+msgstr ""
+
+#: ../src/readelf.c:2059
+msgid "| <unknown>"
+msgstr ""
+
+#: ../src/readelf.c:2084
+#, c-format
+msgid ""
+"\n"
+"Version needs section [%2u] '%s' contains %d entry:\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
+msgid_plural ""
+"\n"
+"Version needs section [%2u] '%s' contains %d entries:\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:2107
+#, c-format
+msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
+msgstr ""
+
+#: ../src/readelf.c:2120
+#, c-format
+msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
+msgstr ""
+
+#: ../src/readelf.c:2151
+#, c-format
+msgid ""
+"\n"
+"Version definition section [%2u] '%s' contains %d entry:\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
+msgid_plural ""
+"\n"
+"Version definition section [%2u] '%s' contains %d entries:\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:2181
+#, c-format
+msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:2196
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:2428
+#, c-format
+msgid ""
+"\n"
+"Version symbols section [%2u] '%s' contains %d entry:\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
+msgid_plural ""
+"\n"
+"Version symbols section [%2u] '%s' contains %d entries:\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:2458
+msgid " 0 *local* "
+msgstr ""
+
+#: ../src/readelf.c:2463
+msgid " 1 *global* "
+msgstr ""
+
+#: ../src/readelf.c:2494
+#, c-format
+msgid ""
+"\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'\n"
+msgid_plural ""
+"\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'\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:2517
+#, c-format
+msgid " Length Number % of total Coverage\n"
+msgstr ""
+
+#: ../src/readelf.c:2519
+#, c-format
+msgid " 0 %6<PRIu32> %5.1f%%\n"
+msgstr ""
+
+#: ../src/readelf.c:2526
+#, c-format
+msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
+msgstr ""
+
+#: ../src/readelf.c:2539
+#, c-format
+msgid ""
+" Average number of tests: successful lookup: %f\n"
+" unsuccessful lookup: %f\n"
+msgstr ""
+
+#: ../src/readelf.c:2557
+#: ../src/readelf.c:2599
+#: ../src/readelf.c:2640
+#, c-format
+msgid "cannot get data for section %d: %s"
+msgstr ""
+
+#: ../src/readelf.c:2694
+#, c-format
+msgid ""
+" Symbol Bias: %u\n"
+" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
+msgstr ""
+
+#: ../src/readelf.c:2768
+#, c-format
+msgid ""
+"\n"
+"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entry:\n"
+msgid_plural ""
+"\n"
+"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entries:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:2782
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr ""
+
+#: ../src/readelf.c:2832
+#, c-format
+msgid ""
+"\n"
+"Object attributes section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
+msgstr ""
+
+#: ../src/readelf.c:2848
+msgid " Owner Size\n"
+msgstr ""
+
+#: ../src/readelf.c:2874
+#, c-format
+msgid " %-13s %4<PRIu32>\n"
+msgstr ""
+
+#: ../src/readelf.c:2906
+#, c-format
+msgid " %-4u %12<PRIu32>\n"
+msgstr ""
+
+#. Tag_File
+#: ../src/readelf.c:2911
+#, c-format
+msgid " File: %11<PRIu32>\n"
+msgstr ""
+
+#: ../src/readelf.c:2946
+#, c-format
+msgid " %s: %<PRId64>, %s\n"
+msgstr ""
+
+#: ../src/readelf.c:2949
+#, c-format
+msgid " %s: %<PRId64>\n"
+msgstr ""
+
+#: ../src/readelf.c:2952
+#, c-format
+msgid " %s: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:2959
+#, c-format
+msgid " %u: %<PRId64>\n"
+msgstr ""
+
+#: ../src/readelf.c:2962
+#, c-format
+msgid " %u: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:2997
+#, c-format
+msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
+msgstr ""
+
+#: ../src/readelf.c:3000
+#, c-format
+msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
+msgstr ""
+
+#: ../src/readelf.c:3005
+#, c-format
+msgid "%#<PRIx64> <%s+%#<PRIx64>>"
+msgstr ""
+
+#: ../src/readelf.c:3008
+#, c-format
+msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
+msgstr ""
+
+#: ../src/readelf.c:3014
+#, c-format
+msgid "%s+%#<PRIx64> <%s>"
+msgstr ""
+
+#: ../src/readelf.c:3017
+#, c-format
+msgid "%s+%#0*<PRIx64> <%s>"
+msgstr ""
+
+#: ../src/readelf.c:3021
+#, c-format
+msgid "%#<PRIx64> <%s>"
+msgstr ""
+
+#: ../src/readelf.c:3024
+#, c-format
+msgid "%#0*<PRIx64> <%s>"
+msgstr ""
+
+#: ../src/readelf.c:3029
+#, c-format
+msgid "%s+%#<PRIx64>"
+msgstr ""
+
+#: ../src/readelf.c:3032
+#, c-format
+msgid "%s+%#0*<PRIx64>"
+msgstr ""
+
+#: ../src/readelf.c:3140
+#, c-format
+msgid "unknown tag %hx"
+msgstr ""
+
+#: ../src/readelf.c:3142
+#, c-format
+msgid "unknown user tag %hx"
+msgstr ""
+
+#: ../src/readelf.c:3352
+#, c-format
+msgid "unknown attribute %hx"
+msgstr ""
+
+#: ../src/readelf.c:3355
+#, c-format
+msgid "unknown user attribute %hx"
+msgstr ""
+
+#: ../src/readelf.c:3401
+#, c-format
+msgid "unknown form %<PRIx64>"
+msgstr ""
+
+#: ../src/readelf.c:4017
+#, c-format
+msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
+msgstr ""
+
+#: ../src/readelf.c:4030
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+" [ Code]\n"
+msgstr ""
+
+#: ../src/readelf.c:4037
+#, c-format
+msgid ""
+"\n"
+"Abbreviation section at offset %<PRIu64>:\n"
+msgstr ""
+
+#: ../src/readelf.c:4050
+#, c-format
+msgid " *** error while reading abbreviation: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:4066
+#, c-format
+msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:4069
+msgid "yes"
+msgstr ""
+
+#: ../src/readelf.c:4069
+msgid "no"
+msgstr ""
+
+#: ../src/readelf.c:4105
+#, c-format
+msgid "cannot get .debug_aranges content: %s"
+msgstr ""
+
+#: ../src/readelf.c:4110
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entry:\n"
+msgid_plural ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entries:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:4140
+#, c-format
+msgid " [%*zu] ???\n"
+msgstr ""
+
+#: ../src/readelf.c:4142
+#, c-format
+msgid " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
+msgstr ""
+
+#: ../src/readelf.c:4161
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr ""
+
+#: ../src/readelf.c:4166
+#: ../src/readelf.c:4623
+#: ../src/readelf.c:5272
+#: ../src/readelf.c:5717
+#: ../src/readelf.c:5812
+#: ../src/readelf.c:5984
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+msgstr ""
+
+#: ../src/readelf.c:4180
+#: ../src/readelf.c:5731
+#, c-format
+msgid " [%6tx] <INVALID DATA>\n"
+msgstr ""
+
+#: ../src/readelf.c:4202
+#: ../src/readelf.c:5753
+#, c-format
+msgid " [%6tx] base address %s\n"
+msgstr ""
+
+#. We have an address range entry.
+#. First address range entry in a list.
+#: ../src/readelf.c:4213
+#, c-format
+msgid " [%6tx] %s..%s\n"
+msgstr ""
+
+#: ../src/readelf.c:4215
+#, c-format
+msgid " %s..%s\n"
+msgstr ""
+
+#: ../src/readelf.c:4612
+#: ../src/readelf.c:6050
+#: ../src/readelf.c:6152
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr ""
+
+#: ../src/readelf.c:4619
+#, c-format
+msgid ""
+"\n"
+"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
+msgstr ""
+
+#: ../src/readelf.c:4646
+#: ../src/readelf.c:5306
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr ""
+
+#: ../src/readelf.c:4668
+#, c-format
+msgid ""
+"\n"
+" [%6tx] Zero terminator\n"
+msgstr ""
+
+#: ../src/readelf.c:4746
+msgid "FDE address encoding: "
+msgstr ""
+
+#: ../src/readelf.c:4752
+msgid "LSDA pointer encoding: "
+msgstr ""
+
+#: ../src/readelf.c:4797
+#, c-format
+msgid "invalid augmentation encoding"
+msgstr ""
+
+#: ../src/readelf.c:4868
+#, c-format
+msgid " (offset: %#<PRIx64>)"
+msgstr ""
+
+#: ../src/readelf.c:4875
+#, c-format
+msgid " (end offset: %#<PRIx64>)"
+msgstr ""
+
+#: ../src/readelf.c:4902
+#, c-format
+msgid " %-26sLSDA pointer: %#<PRIx64>\n"
+msgstr ""
+
+#: ../src/readelf.c:4948
+#, c-format
+msgid "cannot get attribute code: %s"
+msgstr ""
+
+#: ../src/readelf.c:4956
+#, c-format
+msgid "cannot get attribute form: %s"
+msgstr ""
+
+#: ../src/readelf.c:4969
+#, c-format
+msgid "cannot get attribute value: %s"
+msgstr ""
+
+#: ../src/readelf.c:5151
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+" [Offset]\n"
+msgstr ""
+
+#: ../src/readelf.c:5176
+#, c-format
+msgid ""
+" Compilation unit at offset %<PRIu64>:\n"
+" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: %<PRIu8>, Offset size: %<PRIu8>\n"
+msgstr ""
+
+#: ../src/readelf.c:5194
+#, c-format
+msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
+msgstr ""
+
+#: ../src/readelf.c:5205
+#, c-format
+msgid "cannot get DIE offset: %s"
+msgstr ""
+
+#: ../src/readelf.c:5213
+#, c-format
+msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
+msgstr ""
+
+#: ../src/readelf.c:5242
+#, c-format
+msgid "cannot get next DIE: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:5249
+#, c-format
+msgid "cannot get next DIE: %s"
+msgstr ""
+
+#: ../src/readelf.c:5284
+#, c-format
+msgid "cannot get line data section data: %s"
+msgstr ""
+
+#: ../src/readelf.c:5297
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+
+#. Print what we got so far.
+#: ../src/readelf.c:5349
+#, c-format
+msgid ""
+"\n"
+" Length: %<PRIu64>\n"
+" DWARF version: %<PRIuFAST16>\n"
+" Prologue length: %<PRIu64>\n"
+" Minimum instruction length: %<PRIuFAST8>\n"
+" Initial value if '%s': %<PRIuFAST8>\n"
+" Line base: %<PRIdFAST8>\n"
+" Line range: %<PRIuFAST8>\n"
+" Opcode base: %<PRIuFAST8>\n"
+"\n"
+"Opcodes:\n"
+msgstr ""
+
+#: ../src/readelf.c:5368
+#, c-format
+msgid "invalid data at offset %tu in section [%zu] '%s'"
+msgstr ""
+
+#: ../src/readelf.c:5383
+#, c-format
+msgid " [%*<PRIuFAST8>] %hhu argument\n"
+msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:5391
+msgid ""
+"\n"
+"Directory table:"
+msgstr ""
+
+#: ../src/readelf.c:5407
+msgid ""
+"\n"
+"File name table:\n"
+" Entry Dir Time Size Name"
+msgstr ""
+
+#: ../src/readelf.c:5436
+msgid ""
+"\n"
+"Line number statements:"
+msgstr ""
+
+#: ../src/readelf.c:5497
+#, c-format
+msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
+msgstr ""
+
+#: ../src/readelf.c:5517
+#, c-format
+msgid " extended opcode %u: "
+msgstr ""
+
+#: ../src/readelf.c:5522
+msgid "end of sequence"
+msgstr ""
+
+#: ../src/readelf.c:5537
+#, c-format
+msgid "set address to %s\n"
+msgstr ""
+
+#: ../src/readelf.c:5558
+#, c-format
+msgid "define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
+msgstr ""
+
+#. Unknown, ignore it.
+#: ../src/readelf.c:5567
+msgid "unknown opcode"
+msgstr ""
+
+#. Takes no argument.
+#: ../src/readelf.c:5579
+msgid " copy"
+msgstr ""
+
+#: ../src/readelf.c:5589
+#, c-format
+msgid "advance address by %u to %s\n"
+msgstr ""
+
+#: ../src/readelf.c:5600
+#, c-format
+msgid " advance line by constant %d to %<PRId64>\n"
+msgstr ""
+
+#: ../src/readelf.c:5608
+#, c-format
+msgid " set file to %<PRIu64>\n"
+msgstr ""
+
+#: ../src/readelf.c:5618
+#, c-format
+msgid " set column to %<PRIu64>\n"
+msgstr ""
+
+#: ../src/readelf.c:5625
+#, c-format
+msgid " set '%s' to %<PRIuFAST8>\n"
+msgstr ""
+
+#. Takes no argument.
+#: ../src/readelf.c:5631
+msgid " set basic block flag"
+msgstr ""
+
+#: ../src/readelf.c:5641
+#, c-format
+msgid "advance address by constant %u to %s\n"
+msgstr ""
+
+#: ../src/readelf.c:5657
+#, c-format
+msgid "advance address by fixed value %u to %s\n"
+msgstr ""
+
+#. Takes no argument.
+#: ../src/readelf.c:5666
+msgid " set prologue end flag"
+msgstr ""
+
+#. Takes no argument.
+#: ../src/readelf.c:5671
+msgid " set epilogue begin flag"
+msgstr ""
+
+#. 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.
+#: ../src/readelf.c:5680
+#, c-format
+msgid " unknown opcode with %<PRIu8> parameter:"
+msgid_plural " unknown opcode with %<PRIu8> parameters:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/readelf.c:5712
+#, c-format
+msgid "cannot get .debug_loc content: %s"
+msgstr ""
+
+#. First entry in a list.
+#: ../src/readelf.c:5767
+#, c-format
+msgid " [%6tx] %s..%s"
+msgstr ""
+
+#: ../src/readelf.c:5769
+#, c-format
+msgid " %s..%s"
+msgstr ""
+
+#: ../src/readelf.c:5822
+#, c-format
+msgid "cannot get macro information section data: %s"
+msgstr ""
+
+#: ../src/readelf.c:5901
+#, c-format
+msgid "%*s*** non-terminated string at end of section"
+msgstr ""
+
+#: ../src/readelf.c:5969
+#, c-format
+msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:6008
+#, c-format
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+" %*s String\n"
+msgstr ""
+
+#: ../src/readelf.c:6022
+#, c-format
+msgid " *** error while reading strings: %s\n"
+msgstr ""
+
+#: ../src/readelf.c:6042
+#, c-format
+msgid ""
+"\n"
+"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
+msgstr ""
+
+#: ../src/readelf.c:6144
+#, c-format
+msgid ""
+"\n"
+"Exception handling table section [%2zu] '.gcc_except_table':\n"
+msgstr ""
+
+#: ../src/readelf.c:6167
+#, c-format
+msgid " LPStart encoding: %#x "
+msgstr ""
+
+#: ../src/readelf.c:6179
+#, c-format
+msgid " TType encoding: %#x "
+msgstr ""
+
+#: ../src/readelf.c:6193
+#, c-format
+msgid " Call site encoding: %#x "
+msgstr ""
+
+#: ../src/readelf.c:6206
+msgid ""
+"\n"
+" Call site table:"
+msgstr ""
+
+#: ../src/readelf.c:6220
+#, c-format
+msgid ""
+" [%4u] Call site start: %#<PRIx64>\n"
+" Call site length: %<PRIu64>\n"
+" Landing pad: %#<PRIx64>\n"
+" Action: %u\n"
+msgstr ""
+
+#: ../src/readelf.c:6280
+#, c-format
+msgid "invalid TType encoding"
+msgstr ""
+
+#: ../src/readelf.c:6303
+#, c-format
+msgid "cannot get debug context descriptor: %s"
+msgstr ""
+
+#: ../src/readelf.c:6438
+#: ../src/readelf.c:7016
+#, c-format
+msgid "cannot convert core note data: %s"
+msgstr ""
+
+#: ../src/readelf.c:6743
+#, c-format
+msgid ""
+"\n"
+"%*s... <repeats %u more times> ..."
+msgstr ""
+
+#: ../src/readelf.c:6785
+#, c-format
+msgid "unable to handle register number %d"
+msgstr ""
+
+#: ../src/readelf.c:6932
+#, c-format
+msgid "cannot get register info: %s"
+msgstr ""
+
+#: ../src/readelf.c:6956
+#, c-format
+msgid "cannot register info: %s"
+msgstr ""
+
+#: ../src/readelf.c:7114
+msgid " Owner Data size Type\n"
+msgstr ""
+
+#: ../src/readelf.c:7132
+#, c-format
+msgid " %-13.*s %9<PRId32> %s\n"
+msgstr ""
+
+#: ../src/readelf.c:7163
+#, c-format
+msgid "cannot get content of note section: %s"
+msgstr ""
+
+#: ../src/readelf.c:7190
+#, c-format
+msgid ""
+"\n"
+"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
+msgstr ""
+
+#: ../src/readelf.c:7213
+#, c-format
+msgid ""
+"\n"
+"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
+msgstr ""
+
+#: ../src/readelf.c:7259
+#, c-format
+msgid ""
+"\n"
+"Section [%Zu] '%s' has no data to dump.\n"
+msgstr ""
+
+#: ../src/readelf.c:7265
+#: ../src/readelf.c:7287
+#, c-format
+msgid "cannot get data for section [%Zu] '%s': %s"
+msgstr ""
+
+#: ../src/readelf.c:7269
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
+msgstr ""
+
+#: ../src/readelf.c:7282
+#, c-format
+msgid ""
+"\n"
+"Section [%Zu] '%s' is empty.\n"
+msgstr ""
+
+#: ../src/readelf.c:7291
+#, c-format
+msgid ""
+"\n"
+"String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
+msgstr ""
+
+#: ../src/readelf.c:7338
+#, c-format
+msgid ""
+"\n"
+"section [%lu] does not exist"
+msgstr ""
+
+#: ../src/readelf.c:7364
+#, c-format
+msgid ""
+"\n"
+"section '%s' does not exist"
+msgstr ""
+
+#: ../src/readelf.c:7425
+#, c-format
+msgid "cannot get symbol index of archive '%s': %s"
+msgstr ""
+
+#: ../src/readelf.c:7428
+#, c-format
+msgid ""
+"\n"
+"Archive '%s' has no symbol index\n"
+msgstr ""
+
+#: ../src/readelf.c:7432
+#, c-format
+msgid ""
+"\n"
+"Index of archive '%s' has %Zu entries:\n"
+msgstr ""
+
+#: ../src/readelf.c:7450
+#, c-format
+msgid "cannot extract member at offset %Zu in '%s': %s"
+msgstr ""
+
+#: ../src/readelf.c:7455
+#, c-format
+msgid "Archive member '%s' contains:\n"
+msgstr ""
+
+#: ../src/size.c:68
+msgid "Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default is `bsd'"
+msgstr ""
+
+#: ../src/size.c:70
+msgid "Same as `--format=sysv'"
+msgstr ""
+
+#: ../src/size.c:71
+msgid "Same as `--format=bsd'"
+msgstr ""
+
+#: ../src/size.c:74
+msgid "Same as `--radix=10'"
+msgstr ""
+
+#: ../src/size.c:75
+msgid "Same as `--radix=8'"
+msgstr ""
+
+#: ../src/size.c:76
+msgid "Same as `--radix=16'"
+msgstr ""
+
+#: ../src/size.c:78
+msgid "Similar to `--format=sysv' output but in one line"
+msgstr ""
+
+#: ../src/size.c:82
+msgid "Print size and permission flags for loadable segments"
+msgstr ""
+
+#: ../src/size.c:83
+msgid "Display the total sizes (bsd only)"
+msgstr ""
+
+#. Short description of program.
+#: ../src/size.c:88
+msgid "List section sizes of FILEs (a.out by default)."
+msgstr ""
+
+#: ../src/size.c:269
+#, c-format
+msgid "Invalid format: %s"
+msgstr ""
+
+#: ../src/size.c:280
+#, c-format
+msgid "Invalid radix: %s"
+msgstr ""
+
+#: ../src/size.c:339
+#, c-format
+msgid "%s: file format not recognized"
+msgstr ""
+
+#: ../src/size.c:446
+#: ../src/size.c:589
+#, c-format
+msgid " (ex %s)"
+msgstr ""
+
+#: ../src/size.c:614
+msgid "(TOTALS)\n"
+msgstr ""
+
+#: ../src/strip.c:73
+msgid "Place stripped output into FILE"
+msgstr ""
+
+#: ../src/strip.c:74
+msgid "Extract the removed sections into FILE"
+msgstr ""
+
+#: ../src/strip.c:75
+msgid "Embed name FILE instead of -f argument"
+msgstr ""
+
+#: ../src/strip.c:79
+msgid "Remove all debugging symbols"
+msgstr ""
+
+#: ../src/strip.c:83
+msgid "Copy modified/access timestamps to the output"
+msgstr ""
+
+#: ../src/strip.c:85
+msgid "Remove .comment section"
+msgstr ""
+
+#: ../src/strip.c:88
+msgid "Relax a few rules to handle slightly broken ELF files"
+msgstr ""
+
+#. Short description of program.
+#: ../src/strip.c:93
+msgid "Discard symbols from object files."
+msgstr ""
+
+#: ../src/strip.c:185
+#, c-format
+msgid "Only one input file allowed together with '-o' and '-f'"
+msgstr ""
+
+#: ../src/strip.c:221
+#, c-format
+msgid "-f option specified twice"
+msgstr ""
+
+#: ../src/strip.c:230
+#, c-format
+msgid "-F option specified twice"
+msgstr ""
+
+#: ../src/strip.c:239
+#: ../src/unstrip.c:124
+#, c-format
+msgid "-o option specified twice"
+msgstr ""
+
+#: ../src/strip.c:259
+#, c-format
+msgid "-R option supports only .comment section"
+msgstr ""
+
+#: ../src/strip.c:297
+#: ../src/strip.c:321
+#, c-format
+msgid "cannot stat input file '%s'"
+msgstr ""
+
+#: ../src/strip.c:311
+#, c-format
+msgid "while opening '%s'"
+msgstr ""
+
+#: ../src/strip.c:349
+#, c-format
+msgid "%s: cannot use -o or -f when stripping archive"
+msgstr ""
+
+#: ../src/strip.c:447
+#, c-format
+msgid "cannot open EBL backend"
+msgstr ""
+
+#: ../src/strip.c:497
+#: ../src/strip.c:521
+#, c-format
+msgid "cannot create new file '%s': %s"
+msgstr ""
+
+#: ../src/strip.c:581
+#, c-format
+msgid "illformed file '%s'"
+msgstr ""
+
+#: ../src/strip.c:868
+#: ../src/strip.c:955
+#, c-format
+msgid "while generating output file: %s"
+msgstr ""
+
+#: ../src/strip.c:928
+#: ../src/strip.c:1667
+#, c-format
+msgid "%s: error while creating ELF header: %s"
+msgstr ""
+
+#: ../src/strip.c:942
+#, c-format
+msgid "while preparing output for '%s'"
+msgstr ""
+
+#: ../src/strip.c:993
+#: ../src/strip.c:1049
+#, c-format
+msgid "while create section header section: %s"
+msgstr ""
+
+#: ../src/strip.c:999
+#, c-format
+msgid "cannot allocate section data: %s"
+msgstr ""
+
+#: ../src/strip.c:1058
+#, c-format
+msgid "while create section header string table: %s"
+msgstr ""
+
+#: ../src/strip.c:1592
+#: ../src/strip.c:1689
+#, c-format
+msgid "while writing '%s': %s"
+msgstr ""
+
+#: ../src/strip.c:1603
+#, c-format
+msgid "while creating '%s'"
+msgstr ""
+
+#: ../src/strip.c:1615
+#, c-format
+msgid "while computing checksum for debug information"
+msgstr ""
+
+#: ../src/strip.c:1675
+#, c-format
+msgid "%s: error while reading the file: %s"
+msgstr ""
+
+#: ../src/strip.c:1721
+#: ../src/strip.c:1728
+#, c-format
+msgid "error while finishing '%s': %s"
+msgstr ""
+
+#: ../src/strip.c:1751
+#: ../src/strip.c:1808
+#, c-format
+msgid "cannot set access and modification date of '%s'"
+msgstr ""
+
+#: ../src/ld.c:87
+msgid "Input File Control:"
+msgstr ""
+
+#: ../src/ld.c:89
+msgid "Include whole archives in the output from now on."
+msgstr ""
+
+#: ../src/ld.c:91
+msgid "Stop including the whole arhives in the output."
+msgstr ""
+
+#: ../src/ld.c:92
+#: ../src/ld.c:106
+#: ../src/ld.c:184
+msgid "FILE"
+msgstr ""
+
+#: ../src/ld.c:93
+msgid "Start a group."
+msgstr ""
+
+#: ../src/ld.c:94
+msgid "End a group."
+msgstr ""
+
+#: ../src/ld.c:95
+msgid "PATH"
+msgstr ""
+
+#: ../src/ld.c:96
+msgid "Add PATH to list of directories files are searched in."
+msgstr ""
+
+#: ../src/ld.c:98
+msgid "Only set DT_NEEDED for following dynamic libs if actually used"
+msgstr ""
+
+#: ../src/ld.c:100
+msgid "Always set DT_NEEDED for following dynamic libs"
+msgstr ""
+
+#: ../src/ld.c:102
+msgid "Ignore LD_LIBRARY_PATH environment variable."
+msgstr ""
+
+#: ../src/ld.c:105
+msgid "Output File Control:"
+msgstr ""
+
+#: ../src/ld.c:106
+msgid "Place output in FILE."
+msgstr ""
+
+#: ../src/ld.c:109
+msgid "Object is marked to not use default search path at runtime."
+msgstr ""
+
+#: ../src/ld.c:111
+msgid "Same as --whole-archive."
+msgstr ""
+
+#: ../src/ld.c:112
+msgid "Default rules of extracting from archive; weak references are not enough."
+msgstr ""
+
+#: ../src/ld.c:116
+msgid "Weak references cause extraction from archive."
+msgstr ""
+
+#: ../src/ld.c:118
+msgid "Allow multiple definitions; first is used."
+msgstr ""
+
+#: ../src/ld.c:120
+msgid "Disallow/allow undefined symbols in DSOs."
+msgstr ""
+
+#: ../src/ld.c:123
+msgid "Object requires immediate handling of $ORIGIN."
+msgstr ""
+
+#: ../src/ld.c:125
+msgid "Relocation will not be processed lazily."
+msgstr ""
+
+#: ../src/ld.c:127
+msgid "Object cannot be unloaded at runtime."
+msgstr ""
+
+#: ../src/ld.c:129
+msgid "Mark object to be initialized first."
+msgstr ""
+
+#: ../src/ld.c:131
+msgid "Enable/disable lazy-loading flag for following dependencies."
+msgstr ""
+
+#: ../src/ld.c:133
+msgid "Mark object as not loadable with 'dlopen'."
+msgstr ""
+
+#: ../src/ld.c:135
+msgid "Ignore/record dependencies on unused DSOs."
+msgstr ""
+
+#: ../src/ld.c:137
+msgid "Generated DSO will be a system library."
+msgstr ""
+
+#: ../src/ld.c:138
+msgid "ADDRESS"
+msgstr ""
+
+#: ../src/ld.c:138
+msgid "Set entry point address."
+msgstr ""
+
+#: ../src/ld.c:141
+msgid "Do not link against shared libraries."
+msgstr ""
+
+#: ../src/ld.c:144
+msgid "Prefer linking against shared libraries."
+msgstr ""
+
+#: ../src/ld.c:145
+msgid "Export all dynamic symbols."
+msgstr ""
+
+#: ../src/ld.c:146
+msgid "Strip all symbols."
+msgstr ""
+
+#: ../src/ld.c:147
+msgid "Strip debugging symbols."
+msgstr ""
+
+#: ../src/ld.c:149
+msgid "Assume pagesize for the target system to be SIZE."
+msgstr ""
+
+#: ../src/ld.c:151
+msgid "Set runtime DSO search path."
+msgstr ""
+
+#: ../src/ld.c:154
+msgid "Set link time DSO search path."
+msgstr ""
+
+#: ../src/ld.c:155
+msgid "Generate dynamic shared object."
+msgstr ""
+
+#: ../src/ld.c:156
+msgid "Generate relocatable object."
+msgstr ""
+
+#: ../src/ld.c:159
+msgid "Causes symbol not assigned to a version be reduced to local."
+msgstr ""
+
+#: ../src/ld.c:160
+msgid "Remove unused sections."
+msgstr ""
+
+#: ../src/ld.c:163
+msgid "Don't remove unused sections."
+msgstr ""
+
+#: ../src/ld.c:164
+msgid "Set soname of shared object."
+msgstr ""
+
+#: ../src/ld.c:165
+msgid "Set the dynamic linker name."
+msgstr ""
+
+#: ../src/ld.c:168
+msgid "Add/suppress addition indentifying link-editor to .comment section."
+msgstr ""
+
+#: ../src/ld.c:171
+msgid "Create .eh_frame_hdr section"
+msgstr ""
+
+#: ../src/ld.c:173
+msgid "Set hash style to sysv, gnu or both."
+msgstr ""
+
+#: ../src/ld.c:175
+msgid "Generate build ID note (md5, sha1 (default), uuid)."
+msgstr ""
+
+#: ../src/ld.c:177
+msgid "Linker Operation Control:"
+msgstr ""
+
+#: ../src/ld.c:178
+msgid "Verbose messages."
+msgstr ""
+
+#: ../src/ld.c:179
+msgid "Trace file opens."
+msgstr ""
+
+#: ../src/ld.c:181
+msgid "Trade speed for less memory usage"
+msgstr ""
+
+#: ../src/ld.c:182
+msgid "LEVEL"
+msgstr ""
+
+#: ../src/ld.c:183
+msgid "Set optimization level to LEVEL."
+msgstr ""
+
+#: ../src/ld.c:184
+msgid "Use linker script in FILE."
+msgstr ""
+
+#: ../src/ld.c:187
+msgid "Select to get parser debug information"
+msgstr ""
+
+#: ../src/ld.c:190
+msgid "Read version information from FILE."
+msgstr ""
+
+#: ../src/ld.c:191
+msgid "Set emulation to NAME."
+msgstr ""
+
+#. Short description of program.
+#: ../src/ld.c:197
+msgid "Combine object and archive files."
+msgstr ""
+
+#. Strings for arguments in help texts.
+#: ../src/ld.c:200
+msgid "[FILE]..."
+msgstr ""
+
+#: ../src/ld.c:333
+#, c-format
+msgid "At least one input file needed"
+msgstr ""
+
+#: ../src/ld.c:349
+#, c-format
+msgid "error while preparing linking"
+msgstr ""
+
+#: ../src/ld.c:356
+#, c-format
+msgid "cannot open linker script '%s'"
+msgstr ""
+
+#: ../src/ld.c:397
+#, c-format
+msgid "-( without matching -)"
+msgstr ""
+
+#: ../src/ld.c:572
+#: ../src/ld.c:610
+#, c-format
+msgid "only one option of -G and -r is allowed"
+msgstr ""
+
+#: ../src/ld.c:594
+#, c-format
+msgid "more than one '-m' parameter"
+msgstr ""
+
+#: ../src/ld.c:604
+#: ../src/ld.c:1013
+#, c-format
+msgid "unknown option `-%c %s'"
+msgstr ""
+
+#: ../src/ld.c:646
+#, c-format
+msgid "invalid page size value '%s': ignored"
+msgstr ""
+
+#: ../src/ld.c:687
+#, c-format
+msgid "invalid hash style '%s'"
+msgstr ""
+
+#: ../src/ld.c:697
+#, c-format
+msgid "invalid build-ID style '%s'"
+msgstr ""
+
+#: ../src/ld.c:785
+#, c-format
+msgid "More than one output file name given."
+msgstr ""
+
+#: ../src/ld.c:802
+#, c-format
+msgid "Invalid optimization level `%s'"
+msgstr ""
+
+#: ../src/ld.c:850
+#, c-format
+msgid "nested -( -) groups are not allowed"
+msgstr ""
+
+#: ../src/ld.c:869
+#, c-format
+msgid "-) without matching -("
+msgstr ""
+
+#: ../src/ld.c:1046
+#, c-format
+msgid "unknown option '-%c %s'"
+msgstr ""
+
+#: ../src/ld.c:1150
+#, c-format
+msgid "could not find input file to determine output file format"
+msgstr ""
+
+#: ../src/ld.c:1152
+#, c-format
+msgid "try again with an appropriate '-m' parameter"
+msgstr ""
+
+#: ../src/ld.c:1446
+#, c-format
+msgid "cannot read version script '%s'"
+msgstr ""
+
+#. The symbol is already defined and now again
+#. in the linker script. This is an error.
+#: ../src/ld.c:1512
+#: ../src/ld.c:1551
+#, c-format
+msgid "duplicate definition of '%s' in linker script"
+msgstr ""
+
+#: ../src/ldgeneric.c:209
+#: ../src/ldgeneric.c:5151
+#, c-format
+msgid "cannot create string table"
+msgstr ""
+
+#: ../src/ldgeneric.c:255
+#, c-format
+msgid "cannot load ld backend library '%s': %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:265
+#, c-format
+msgid "cannot find init function in ld backend library '%s': %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:310
+#, c-format
+msgid "%s listed more than once as input"
+msgstr ""
+
+#: ../src/ldgeneric.c:424
+#, c-format
+msgid "%s (for -l%s)\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:425
+#, c-format
+msgid "%s (for DT_NEEDED %s)\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:573
+#, c-format
+msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:586
+#, c-format
+msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:677
+#, c-format
+msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:700
+#, c-format
+msgid "(%s+%#<PRIx64>): first defined here\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:819
+#, c-format
+msgid "%s: cannot get section group data: %s"
+msgstr ""
+
+#. If we come here no section group contained the given section
+#. despite the SHF_GROUP flag. This is an error in the input
+#. file.
+#: ../src/ldgeneric.c:840
+#, c-format
+msgid "%s: section '%s' with group flag set does not belong to any group"
+msgstr ""
+
+#: ../src/ldgeneric.c:885
+#, c-format
+msgid "%s: section [%2d] '%s' is not in the correct section group"
+msgstr ""
+
+#. This should never happen.
+#: ../src/ldgeneric.c:1156
+#: ../src/ldgeneric.c:1413
+#: ../src/ldgeneric.c:1422
+#: ../src/ldgeneric.c:1481
+#: ../src/ldgeneric.c:1490
+#: ../src/ldgeneric.c:1753
+#: ../src/ldgeneric.c:2005
+#, c-format
+msgid "%s: invalid ELF file (%s:%d)\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:1250
+#, c-format
+msgid "%s: only files of type ET_REL might contain section groups"
+msgstr ""
+
+#: ../src/ldgeneric.c:1302
+#, c-format
+msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:1314
+#, c-format
+msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
+msgstr ""
+
+#: ../src/ldgeneric.c:1328
+#, c-format
+msgid "%s: group member %zu of section group [%2zd] '%s' has too high index: %<PRIu32>"
+msgstr ""
+
+#: ../src/ldgeneric.c:1350
+#, c-format
+msgid "%s: section '%s' has unknown type: %d"
+msgstr ""
+
+#: ../src/ldgeneric.c:1729
+#, c-format
+msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:1899
+#, c-format
+msgid "cannot read archive `%s': %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:2020
+#, c-format
+msgid "file of type %s cannot be linked in\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:2032
+#, c-format
+msgid "%s: input file incompatible with ELF machine type %s\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:2044
+#, c-format
+msgid "%s: cannot get section header string table index: %s\n"
+msgstr ""
+
+#: ../src/ldgeneric.c:2073
+#, c-format
+msgid "cannot use DSO '%s' when generating relocatable object file"
+msgstr ""
+
+#: ../src/ldgeneric.c:2158
+#, c-format
+msgid "input file '%s' ignored"
+msgstr ""
+
+#. XXX The error message should get better. It should use
+#. the debugging information if present to tell where in the
+#. sources the undefined reference is.
+#: ../src/ldgeneric.c:2372
+#, c-format
+msgid "undefined symbol `%s' in %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:2702
+#, c-format
+msgid "cannot create ELF descriptor for output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:2709
+#, c-format
+msgid "could not create ELF header for output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:3224
+#: ../src/ldgeneric.c:3294
+#: ../src/ldgeneric.c:3330
+#: ../src/ldgeneric.c:4457
+#: ../src/ldgeneric.c:4506
+#: ../src/ldgeneric.c:4538
+#: ../src/ldgeneric.c:4773
+#: ../src/ldgeneric.c:4828
+#: ../src/ldgeneric.c:5075
+#: ../src/ldgeneric.c:5131
+#: ../src/ldgeneric.c:5600
+#: ../src/ldgeneric.c:5612
+#, c-format
+msgid "cannot create section for output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:3444
+#, c-format
+msgid "address computation expression contains variable '%s'"
+msgstr ""
+
+#: ../src/ldgeneric.c:3489
+#, c-format
+msgid "argument '%<PRIuMAX>' of ALIGN in address computation expression is no power of two"
+msgstr ""
+
+#: ../src/ldgeneric.c:3684
+#, c-format
+msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
+msgstr ""
+
+#: ../src/ldgeneric.c:3690
+#, c-format
+msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
+msgstr ""
+
+#: ../src/ldgeneric.c:3920
+#, c-format
+msgid "cannot create GNU hash table section for output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:4071
+#, c-format
+msgid "cannot create hash table section for output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:4114
+#, c-format
+msgid "cannot create build ID section: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:4191
+#, c-format
+msgid "cannot convert section data to file format: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:4200
+#, c-format
+msgid "cannot convert section data to memory format: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:4261
+#, c-format
+msgid "cannot read enough data for UUID"
+msgstr ""
+
+#: ../src/ldgeneric.c:4358
+#: ../src/ldgeneric.c:4379
+#: ../src/ldgeneric.c:4408
+#: ../src/ldgeneric.c:6062
+#, c-format
+msgid "cannot create symbol table for output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:5300
+#: ../src/ldgeneric.c:5852
+#, c-format
+msgid "section index too large in dynamic symbol table"
+msgstr ""
+
+#: ../src/ldgeneric.c:5745
+#, c-format
+msgid "cannot create versioning section: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:5818
+#, c-format
+msgid "cannot create dynamic symbol table for output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:5994
+#, c-format
+msgid "cannot create versioning data: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:6094
+#: ../src/ldgeneric.c:6107
+#: ../src/ldgeneric.c:6171
+#: ../src/ldgeneric.c:6179
+#, c-format
+msgid "cannot create section header string section: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:6101
+#, c-format
+msgid "cannot create section header string section"
+msgstr ""
+
+#: ../src/ldgeneric.c:6259
+#, c-format
+msgid "cannot create program header: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:6267
+#, c-format
+msgid "while determining file layout: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:6388
+#, c-format
+msgid "internal error: non-nobits section follows nobits section"
+msgstr ""
+
+#: ../src/ldgeneric.c:6925
+#, c-format
+msgid "cannot get header of 0th section: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:6941
+#: ../src/unstrip.c:1807
+#, c-format
+msgid "cannot update ELF header: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:6972
+#, c-format
+msgid "linker backend didn't specify function to relocate section"
+msgstr ""
+
+#: ../src/ldgeneric.c:6984
+#, c-format
+msgid "while writing output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:6989
+#, c-format
+msgid "while finishing output file: %s"
+msgstr ""
+
+#: ../src/ldgeneric.c:6995
+#, c-format
+msgid "cannot stat output file"
+msgstr ""
+
+#: ../src/ldgeneric.c:7011
+#, c-format
+msgid "WARNING: temporary output file overwritten before linking finished"
+msgstr ""
+
+#. This cannot be implemented generally. There should have been a
+#. machine dependent implementation and we should never have arrived
+#. here.
+#: ../src/ldgeneric.c:7064
+#: ../src/ldgeneric.c:7075
+#: ../src/ldgeneric.c:7086
+#: ../src/ldgeneric.c:7097
+#: ../src/ldgeneric.c:7116
+#: ../src/ldgeneric.c:7129
+#: ../src/ldgeneric.c:7141
+#, c-format
+msgid "no machine specific '%s' implementation"
+msgstr ""
+
+#: ../src/i386_ld.c:210
+#, c-format
+msgid "cannot allocate PLT section: %s"
+msgstr ""
+
+#: ../src/i386_ld.c:232
+#, c-format
+msgid "cannot allocate PLTREL section: %s"
+msgstr ""
+
+#: ../src/i386_ld.c:253
+#, c-format
+msgid "cannot allocate GOT section: %s"
+msgstr ""
+
+#: ../src/i386_ld.c:274
+#, c-format
+msgid "cannot allocate GOTPLT section: %s"
+msgstr ""
+
+#: ../src/i386_ld.c:661
+#, c-format
+msgid "initial-executable TLS relocation cannot be used "
+msgstr ""
+
+#: ../src/ldscript.y:178
+msgid "mode for segment invalid\n"
+msgstr ""
+
+#: ../src/ldscript.y:465
+#, c-format
+msgid "while reading version script '%s': %s at line %d"
+msgstr ""
+
+#: ../src/ldscript.y:466
+#, c-format
+msgid "while reading linker script '%s': %s at line %d"
+msgstr ""
+
+#: ../src/ldscript.y:745
+#, c-format
+msgid "symbol '%s' in declared both local and global for unnamed version"
+msgstr ""
+
+#: ../src/ldscript.y:747
+#, c-format
+msgid "symbol '%s' in declared both local and global for version '%s'"
+msgstr ""
+
+#: ../src/ldscript.y:767
+#: ../src/ldscript.y:774
+#, c-format
+msgid "default visibility set as local and global"
+msgstr ""
+
+#: ../src/elflint.c:71
+msgid "Be extremely strict, flag level 2 features."
+msgstr ""
+
+#: ../src/elflint.c:72
+msgid "Do not print anything if successful"
+msgstr ""
+
+#: ../src/elflint.c:73
+msgid "Binary is a separate debuginfo file"
+msgstr ""
+
+#: ../src/elflint.c:75
+msgid "Binary has been created with GNU ld and is therefore known to be broken in certain ways"
+msgstr ""
+
+#. Short description of program.
+#: ../src/elflint.c:81
+msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
+msgstr ""
+
+#: ../src/elflint.c:165
+#, c-format
+msgid "cannot generate Elf descriptor: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:184
+#, c-format
+msgid "error while closing Elf descriptor: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:188
+msgid "No errors"
+msgstr ""
+
+#: ../src/elflint.c:301
+#, c-format
+msgid " error while freeing sub-ELF descriptor: %s\n"
+msgstr ""
+
+#. We cannot do anything.
+#: ../src/elflint.c:309
+#, c-format
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr ""
+
+#: ../src/elflint.c:368
+#, c-format
+msgid "e_ident[%d] == %d is no known class\n"
+msgstr ""
+
+#: ../src/elflint.c:373
+#, c-format
+msgid "e_ident[%d] == %d is no known data encoding\n"
+msgstr ""
+
+#: ../src/elflint.c:377
+#, c-format
+msgid "unknown ELF header version number e_ident[%d] == %d\n"
+msgstr ""
+
+#: ../src/elflint.c:382
+#, c-format
+msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:388
+#, c-format
+msgid "unsupport ABI version e_ident[%d] == %d\n"
+msgstr ""
+
+#: ../src/elflint.c:393
+#, c-format
+msgid "e_ident[%zu] is not zero\n"
+msgstr ""
+
+#: ../src/elflint.c:398
+#, c-format
+msgid "unknown object file type %d\n"
+msgstr ""
+
+#: ../src/elflint.c:405
+#, c-format
+msgid "unknown machine type %d\n"
+msgstr ""
+
+#: ../src/elflint.c:409
+#, c-format
+msgid "unknown object file version\n"
+msgstr ""
+
+#: ../src/elflint.c:415
+#, c-format
+msgid "invalid program header offset\n"
+msgstr ""
+
+#: ../src/elflint.c:417
+#, c-format
+msgid "executables and DSOs cannot have zero program header offset\n"
+msgstr ""
+
+#: ../src/elflint.c:421
+#, c-format
+msgid "invalid number of program header entries\n"
+msgstr ""
+
+#: ../src/elflint.c:429
+#, c-format
+msgid "invalid section header table offset\n"
+msgstr ""
+
+#: ../src/elflint.c:432
+#, c-format
+msgid "section header table must be present\n"
+msgstr ""
+
+#: ../src/elflint.c:446
+#, c-format
+msgid "invalid number of section header table entries\n"
+msgstr ""
+
+#: ../src/elflint.c:463
+#, c-format
+msgid "invalid section header index\n"
+msgstr ""
+
+#: ../src/elflint.c:468
+#, c-format
+msgid "invalid machine flags: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:475
+#: ../src/elflint.c:492
+#, c-format
+msgid "invalid ELF header size: %hd\n"
+msgstr ""
+
+#: ../src/elflint.c:478
+#: ../src/elflint.c:495
+#, c-format
+msgid "invalid program header size: %hd\n"
+msgstr ""
+
+#: ../src/elflint.c:481
+#: ../src/elflint.c:498
+#, c-format
+msgid "invalid program header position or size\n"
+msgstr ""
+
+#: ../src/elflint.c:484
+#: ../src/elflint.c:501
+#, c-format
+msgid "invalid section header size: %hd\n"
+msgstr ""
+
+#: ../src/elflint.c:487
+#: ../src/elflint.c:504
+#, c-format
+msgid "invalid section header position or size\n"
+msgstr ""
+
+#: ../src/elflint.c:548
+#, c-format
+msgid "section [%2d] '%s': section with SHF_GROUP flag set not part of a section group\n"
+msgstr ""
+
+#: ../src/elflint.c:552
+#, c-format
+msgid "section [%2d] '%s': section group [%2zu] '%s' does not preceed group member\n"
+msgstr ""
+
+#: ../src/elflint.c:568
+#: ../src/elflint.c:1393
+#: ../src/elflint.c:1443
+#: ../src/elflint.c:1552
+#: ../src/elflint.c:2146
+#: ../src/elflint.c:2660
+#: ../src/elflint.c:2821
+#: ../src/elflint.c:2951
+#: ../src/elflint.c:3123
+#: ../src/elflint.c:4020
+#, c-format
+msgid "section [%2d] '%s': cannot get section data\n"
+msgstr ""
+
+#: ../src/elflint.c:581
+#: ../src/elflint.c:1559
+#, 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:604
+#, c-format
+msgid "section [%2d] '%s': symbol table cannot have more than one extended index section\n"
+msgstr ""
+
+#: ../src/elflint.c:615
+#, c-format
+msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
+msgstr ""
+
+#: ../src/elflint.c:624
+#, c-format
+msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:629
+#: ../src/elflint.c:632
+#: ../src/elflint.c:635
+#: ../src/elflint.c:638
+#: ../src/elflint.c:641
+#: ../src/elflint.c:644
+#, c-format
+msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
+msgstr ""
+
+#: ../src/elflint.c:647
+#, c-format
+msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
+msgstr ""
+
+#: ../src/elflint.c:657
+#, c-format
+msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:666
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
+msgstr ""
+
+#: ../src/elflint.c:679
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: too large section index but no extended section index section\n"
+msgstr ""
+
+#: ../src/elflint.c:685
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in st_shndx (%<PRIu32>)\n"
+msgstr ""
+
+#. || sym->st_shndx > SHN_HIRESERVE always false
+#: ../src/elflint.c:697
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
+msgstr ""
+
+#: ../src/elflint.c:705
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: unknown type\n"
+msgstr ""
+
+#: ../src/elflint.c:709
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
+msgstr ""
+
+#: ../src/elflint.c:717
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
+msgstr ""
+
+#: ../src/elflint.c:721
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
+msgstr ""
+
+#: ../src/elflint.c:725
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
+msgstr ""
+
+#: ../src/elflint.c:757
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
+msgstr ""
+
+#: ../src/elflint.c:763
+#: ../src/elflint.c:788
+#: ../src/elflint.c:831
+#, c-format
+msgid "section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:772
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have SHF_TLS flag set\n"
+msgstr ""
+
+#: ../src/elflint.c:782
+#: ../src/elflint.c:824
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section [%2d] '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:809
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
+msgstr ""
+
+#: ../src/elflint.c:817
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:844
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: local symbol outside range described in sh_info\n"
+msgstr ""
+
+#: ../src/elflint.c:851
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: non-local symbol outside range described in sh_info\n"
+msgstr ""
+
+#: ../src/elflint.c:858
+#, c-format
+msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
+msgstr ""
+
+#: ../src/elflint.c:908
+#, c-format
+msgid "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section [%2d]\n"
+msgstr ""
+
+#: ../src/elflint.c:915
+#, c-format
+msgid "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] '%s'\n"
+msgstr ""
+
+#. This test is more strict than the psABIs which
+#. usually allow the symbol to be in the middle of
+#. the .got section, allowing negative offsets.
+#: ../src/elflint.c:931
+#, c-format
+msgid "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not match %s section address %#<PRIx64>\n"
+msgstr ""
+
+#: ../src/elflint.c:938
+#, c-format
+msgid "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not match %s section size %<PRIu64>\n"
+msgstr ""
+
+#: ../src/elflint.c:946
+#, c-format
+msgid "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got section\n"
+msgstr ""
+
+#: ../src/elflint.c:962
+#, c-format
+msgid "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic segment address %#<PRIx64>\n"
+msgstr ""
+
+#: ../src/elflint.c:969
+#, c-format
+msgid "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic segment size %<PRIu64>\n"
+msgstr ""
+
+#: ../src/elflint.c:1020
+#, c-format
+msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
+msgstr ""
+
+#: ../src/elflint.c:1029
+#: ../src/elflint.c:1081
+#, c-format
+msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
+msgstr ""
+
+#: ../src/elflint.c:1054
+#: ../src/elflint.c:1106
+#, c-format
+msgid "section [%2d] '%s': relative relocations after index %d as specified by DT_RELCOUNT\n"
+msgstr ""
+
+#: ../src/elflint.c:1060
+#: ../src/elflint.c:1112
+#, c-format
+msgid "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT specified %d relative relocations\n"
+msgstr ""
+
+#: ../src/elflint.c:1072
+#, c-format
+msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
+msgstr ""
+
+#: ../src/elflint.c:1154
+#, c-format
+msgid "section [%2d] '%s': invalid destination section index\n"
+msgstr ""
+
+#: ../src/elflint.c:1167
+#, c-format
+msgid "section [%2d] '%s': invalid destination section type\n"
+msgstr ""
+
+#: ../src/elflint.c:1175
+#, c-format
+msgid "section [%2d] '%s': sh_info should be zero\n"
+msgstr ""
+
+#: ../src/elflint.c:1182
+#, c-format
+msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
+msgstr ""
+
+#: ../src/elflint.c:1189
+#, c-format
+msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
+msgstr ""
+
+#: ../src/elflint.c:1249
+#, c-format
+msgid "text relocation flag set but there is no read-only segment\n"
+msgstr ""
+
+#: ../src/elflint.c:1276
+#, c-format
+msgid "section [%2d] '%s': relocation %zu: invalid type\n"
+msgstr ""
+
+#: ../src/elflint.c:1284
+#, c-format
+msgid "section [%2d] '%s': relocation %zu: relocation type invalid for the file type\n"
+msgstr ""
+
+#: ../src/elflint.c:1292
+#, c-format
+msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
+msgstr ""
+
+#: ../src/elflint.c:1310
+#, c-format
+msgid "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can be used with %s\n"
+msgstr ""
+
+#: ../src/elflint.c:1327
+#, c-format
+msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
+msgstr ""
+
+#: ../src/elflint.c:1342
+#, c-format
+msgid "section [%2d] '%s': relocation %zu: copy relocation against symbol of type %s\n"
+msgstr ""
+
+#: ../src/elflint.c:1363
+#, c-format
+msgid "section [%2d] '%s': relocation %zu: read-only section modified but text relocation flag not set\n"
+msgstr ""
+
+#: ../src/elflint.c:1378
+#, c-format
+msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
+msgstr ""
+
+#: ../src/elflint.c:1417
+#: ../src/elflint.c:1467
+#, c-format
+msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:1547
+#, c-format
+msgid "more than one dynamic section present\n"
+msgstr ""
+
+#: ../src/elflint.c:1565
+#, c-format
+msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
+msgstr ""
+
+#: ../src/elflint.c:1570
+#: ../src/elflint.c:1862
+#, c-format
+msgid "section [%2d] '%s': sh_info not zero\n"
+msgstr ""
+
+#: ../src/elflint.c:1580
+#, c-format
+msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:1588
+#, c-format
+msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
+msgstr ""
+
+#: ../src/elflint.c:1595
+#, c-format
+msgid "section [%2d] '%s': entry %zu: unknown tag\n"
+msgstr ""
+
+#: ../src/elflint.c:1606
+#, c-format
+msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
+msgstr ""
+
+#: ../src/elflint.c:1616
+#, c-format
+msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
+msgstr ""
+
+#: ../src/elflint.c:1634
+#, c-format
+msgid "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
+msgstr ""
+
+#: ../src/elflint.c:1656
+#, 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:1699
+#, c-format
+msgid "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
+msgstr ""
+
+#: ../src/elflint.c:1714
+#, c-format
+msgid "section [%2d] '%s': entry %zu: %s value must be valid offset in section [%2d] '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:1734
+#: ../src/elflint.c:1762
+#, c-format
+msgid "section [%2d] '%s': contains %s entry but not %s\n"
+msgstr ""
+
+#: ../src/elflint.c:1746
+#, c-format
+msgid "section [%2d] '%s': mandatory tag %s not present\n"
+msgstr ""
+
+#: ../src/elflint.c:1755
+#, c-format
+msgid "section [%2d] '%s': no hash section present\n"
+msgstr ""
+
+#: ../src/elflint.c:1770
+#: ../src/elflint.c:1777
+#, c-format
+msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
+msgstr ""
+
+#: ../src/elflint.c:1787
+#: ../src/elflint.c:1791
+#, c-format
+msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
+msgstr ""
+
+#: ../src/elflint.c:1797
+#, c-format
+msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
+msgstr ""
+
+#: ../src/elflint.c:1808
+#: ../src/elflint.c:1812
+#: ../src/elflint.c:1816
+#: ../src/elflint.c:1820
+#, c-format
+msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
+msgstr ""
+
+#: ../src/elflint.c:1832
+#, c-format
+msgid "section [%2d] '%s': only relocatable files can have extended section index\n"
+msgstr ""
+
+#: ../src/elflint.c:1842
+#, c-format
+msgid "section [%2d] '%s': extended section index section not for symbol table\n"
+msgstr ""
+
+#: ../src/elflint.c:1847
+#, c-format
+msgid "cannot get data for symbol section\n"
+msgstr ""
+
+#: ../src/elflint.c:1850
+#, c-format
+msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
+msgstr ""
+
+#: ../src/elflint.c:1857
+#, c-format
+msgid "section [%2d] '%s': extended index table too small for symbol table\n"
+msgstr ""
+
+#: ../src/elflint.c:1872
+#, c-format
+msgid "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to same symbol table\n"
+msgstr ""
+
+#: ../src/elflint.c:1883
+#, c-format
+msgid "symbol 0 should have zero extended section index\n"
+msgstr ""
+
+#: ../src/elflint.c:1895
+#, c-format
+msgid "cannot get data for symbol %zu\n"
+msgstr ""
+
+#: ../src/elflint.c:1900
+#, c-format
+msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
+msgstr ""
+
+#: ../src/elflint.c:1916
+#: ../src/elflint.c:1957
+#, c-format
+msgid "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
+msgstr ""
+
+#: ../src/elflint.c:1928
+#: ../src/elflint.c:1969
+#, c-format
+msgid "section [%2d] '%s': chain array too large\n"
+msgstr ""
+
+#: ../src/elflint.c:1937
+#: ../src/elflint.c:1978
+#, c-format
+msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
+msgstr ""
+
+#: ../src/elflint.c:1943
+#, c-format
+msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
+msgstr ""
+
+#: ../src/elflint.c:1984
+#, c-format
+msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
+msgstr ""
+
+#: ../src/elflint.c:1999
+#, c-format
+msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
+msgstr ""
+
+#: ../src/elflint.c:2010
+#, c-format
+msgid "section [%2d] '%s': hash table section is too small (is %ld, expected at least%ld)\n"
+msgstr ""
+
+#: ../src/elflint.c:2018
+#, c-format
+msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
+msgstr ""
+
+#: ../src/elflint.c:2050
+#, c-format
+msgid "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
+msgstr ""
+
+#: ../src/elflint.c:2071
+#, c-format
+msgid "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is undefined\n"
+msgstr ""
+
+#: ../src/elflint.c:2082
+#, c-format
+msgid "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
+msgstr ""
+
+#: ../src/elflint.c:2113
+#, c-format
+msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
+msgstr ""
+
+#: ../src/elflint.c:2118
+#, c-format
+msgid "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
+msgstr ""
+
+#: ../src/elflint.c:2124
+#, c-format
+msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
+msgstr ""
+
+#: ../src/elflint.c:2137
+#, c-format
+msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
+msgstr ""
+
+#: ../src/elflint.c:2155
+#, c-format
+msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
+msgstr ""
+
+#: ../src/elflint.c:2163
+#, c-format
+msgid "section [%2d] '%s': hash table entry size incorrect\n"
+msgstr ""
+
+#: ../src/elflint.c:2168
+#, c-format
+msgid "section [%2d] '%s': not marked to be allocated\n"
+msgstr ""
+
+#: ../src/elflint.c:2173
+#, c-format
+msgid "section [%2d] '%s': hash table has not even room for initial administrative entries\n"
+msgstr ""
+
+#: ../src/elflint.c:2221
+#, c-format
+msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
+msgstr ""
+
+#: ../src/elflint.c:2299
+#: ../src/elflint.c:2303
+#, c-format
+msgid "section [%2zu] '%s': reference to symbol index 0\n"
+msgstr ""
+
+#: ../src/elflint.c:2310
+#, 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:2322
+#, 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:2338
+#, c-format
+msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
+msgstr ""
+
+#: ../src/elflint.c:2358
+#, c-format
+msgid "section [%2d] '%s': section groups only allowed in relocatable object files\n"
+msgstr ""
+
+#: ../src/elflint.c:2369
+#, c-format
+msgid "section [%2d] '%s': cannot get symbol table: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:2374
+#, c-format
+msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
+msgstr ""
+
+#: ../src/elflint.c:2380
+#, c-format
+msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
+msgstr ""
+
+#: ../src/elflint.c:2385
+#, c-format
+msgid "section [%2d] '%s': sh_flags not zero\n"
+msgstr ""
+
+#: ../src/elflint.c:2392
+#, c-format
+msgid "section [%2d] '%s': cannot get symbol for signature\n"
+msgstr ""
+
+#: ../src/elflint.c:2397
+#, c-format
+msgid "section [%2d] '%s': signature symbol canot be empty string\n"
+msgstr ""
+
+#: ../src/elflint.c:2403
+#, c-format
+msgid "section [%2d] '%s': sh_flags not set correctly\n"
+msgstr ""
+
+#: ../src/elflint.c:2409
+#, c-format
+msgid "section [%2d] '%s': cannot get data: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:2418
+#, c-format
+msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
+msgstr ""
+
+#: ../src/elflint.c:2423
+#, c-format
+msgid "section [%2d] '%s': section group without flags word\n"
+msgstr ""
+
+#: ../src/elflint.c:2429
+#, c-format
+msgid "section [%2d] '%s': section group without member\n"
+msgstr ""
+
+#: ../src/elflint.c:2433
+#, c-format
+msgid "section [%2d] '%s': section group with only one member\n"
+msgstr ""
+
+#: ../src/elflint.c:2444
+#, c-format
+msgid "section [%2d] '%s': unknown section group flags\n"
+msgstr ""
+
+#: ../src/elflint.c:2456
+#, c-format
+msgid "section [%2d] '%s': section index %Zu out of range\n"
+msgstr ""
+
+#: ../src/elflint.c:2465
+#, c-format
+msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:2472
+#, c-format
+msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:2478
+#, c-format
+msgid "section [%2d] '%s': element %Zu references section [%2d] '%s' without SHF_GROUP flag set\n"
+msgstr ""
+
+#: ../src/elflint.c:2485
+#, c-format
+msgid "section [%2d] '%s' is contained in more than one section group\n"
+msgstr ""
+
+#: ../src/elflint.c:2674
+#, 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:2685
+#, c-format
+msgid "section [%2d] '%s' has different number of entries than symbol table [%2d] '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:2701
+#, c-format
+msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
+msgstr ""
+
+#: ../src/elflint.c:2717
+#, c-format
+msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
+msgstr ""
+
+#: ../src/elflint.c:2725
+#, c-format
+msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
+msgstr ""
+
+#: ../src/elflint.c:2739
+#, c-format
+msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
+msgstr ""
+
+#: ../src/elflint.c:2744
+#, c-format
+msgid "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
+msgstr ""
+
+#: ../src/elflint.c:2754
+#, c-format
+msgid "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
+msgstr ""
+
+#: ../src/elflint.c:2806
+#, c-format
+msgid "more than one version reference section present\n"
+msgstr ""
+
+#: ../src/elflint.c:2814
+#: ../src/elflint.c:2943
+#, c-format
+msgid "section [%2d] '%s': sh_link does not link to string table\n"
+msgstr ""
+
+#: ../src/elflint.c:2837
+#: ../src/elflint.c:2995
+#, c-format
+msgid "section [%2d] '%s': entry %d has wrong version %d\n"
+msgstr ""
+
+#: ../src/elflint.c:2843
+#: ../src/elflint.c:3001
+#, c-format
+msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
+msgstr ""
+
+#: ../src/elflint.c:2851
+#, c-format
+msgid "section [%2d] '%s': entry %d has invalid file reference\n"
+msgstr ""
+
+#: ../src/elflint.c:2859
+#, c-format
+msgid "section [%2d] '%s': entry %d references unknown dependency\n"
+msgstr ""
+
+#: ../src/elflint.c:2871
+#, c-format
+msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
+msgstr ""
+
+#: ../src/elflint.c:2878
+#, c-format
+msgid "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name reference\n"
+msgstr ""
+
+#: ../src/elflint.c:2885
+#, c-format
+msgid "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: %#x, expected %#x\n"
+msgstr ""
+
+#: ../src/elflint.c:2895
+#, c-format
+msgid "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version name '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:2906
+#, c-format
+msgid "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
+msgstr ""
+
+#: ../src/elflint.c:2922
+#: ../src/elflint.c:3080
+#, c-format
+msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
+msgstr ""
+
+#: ../src/elflint.c:2935
+#, c-format
+msgid "more than one version definition section present\n"
+msgstr ""
+
+#: ../src/elflint.c:2980
+#, c-format
+msgid "section [%2d] '%s': more than one BASE definition\n"
+msgstr ""
+
+#: ../src/elflint.c:2984
+#, c-format
+msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
+msgstr ""
+
+#: ../src/elflint.c:2990
+#, c-format
+msgid "section [%2d] '%s': entry %d has unknown flag\n"
+msgstr ""
+
+#: ../src/elflint.c:3014
+#, c-format
+msgid "section [%2d] '%s': entry %d has invalid name reference\n"
+msgstr ""
+
+#: ../src/elflint.c:3021
+#, c-format
+msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
+msgstr ""
+
+#: ../src/elflint.c:3030
+#, c-format
+msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:3049
+#, c-format
+msgid "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
+msgstr ""
+
+#: ../src/elflint.c:3064
+#, c-format
+msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
+msgstr ""
+
+#: ../src/elflint.c:3086
+#, c-format
+msgid "section [%2d] '%s': no BASE definition\n"
+msgstr ""
+
+#: ../src/elflint.c:3102
+#, c-format
+msgid "section [%2d] '%s': unknown parent version '%s'\n"
+msgstr ""
+
+#: ../src/elflint.c:3115
+#, c-format
+msgid "section [%2d] '%s': empty object attributes section\n"
+msgstr ""
+
+#: ../src/elflint.c:3136
+#, c-format
+msgid "section [%2d] '%s': unrecognized attribute format\n"
+msgstr ""
+
+#: ../src/elflint.c:3152
+#, c-format
+msgid "section [%2d] '%s': offset %zu: zero length field in attribute section\n"
+msgstr ""
+
+#: ../src/elflint.c:3161
+#, c-format
+msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
+msgstr ""
+
+#: ../src/elflint.c:3173
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
+msgstr ""
+
+#: ../src/elflint.c:3190
+#, c-format
+msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
+msgstr ""
+
+#: ../src/elflint.c:3199
+#, c-format
+msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
+msgstr ""
+
+#: ../src/elflint.c:3208
+#, c-format
+msgid "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
+msgstr ""
+
+#: ../src/elflint.c:3221
+#, c-format
+msgid "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
+msgstr ""
+
+#. Tag_File
+#: ../src/elflint.c:3232
+#, c-format
+msgid "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
+msgstr ""
+
+#: ../src/elflint.c:3250
+#, c-format
+msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
+msgstr ""
+
+#: ../src/elflint.c:3261
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
+msgstr ""
+
+#: ../src/elflint.c:3274
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
+msgstr ""
+
+#: ../src/elflint.c:3278
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
+msgstr ""
+
+#: ../src/elflint.c:3288
+#, c-format
+msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
+msgstr ""
+
+#: ../src/elflint.c:3294
+#, c-format
+msgid "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
+msgstr ""
+
+#: ../src/elflint.c:3383
+#, c-format
+msgid "cannot get section header of zeroth section\n"
+msgstr ""
+
+#: ../src/elflint.c:3387
+#, c-format
+msgid "zeroth section has nonzero name\n"
+msgstr ""
+
+#: ../src/elflint.c:3389
+#, c-format
+msgid "zeroth section has nonzero type\n"
+msgstr ""
+
+#: ../src/elflint.c:3391
+#, c-format
+msgid "zeroth section has nonzero flags\n"
+msgstr ""
+
+#: ../src/elflint.c:3393
+#, c-format
+msgid "zeroth section has nonzero address\n"
+msgstr ""
+
+#: ../src/elflint.c:3395
+#, c-format
+msgid "zeroth section has nonzero offset\n"
+msgstr ""
+
+#: ../src/elflint.c:3397
+#, c-format
+msgid "zeroth section has nonzero info field\n"
+msgstr ""
+
+#: ../src/elflint.c:3399
+#, c-format
+msgid "zeroth section has nonzero align value\n"
+msgstr ""
+
+#: ../src/elflint.c:3401
+#, c-format
+msgid "zeroth section has nonzero entry size value\n"
+msgstr ""
+
+#: ../src/elflint.c:3404
+#, c-format
+msgid "zeroth section has nonzero size value while ELF header has nonzero shnum value\n"
+msgstr ""
+
+#: ../src/elflint.c:3408
+#, c-format
+msgid "zeroth section has nonzero link value while ELF header does not signal overflow in shstrndx\n"
+msgstr ""
+
+#: ../src/elflint.c:3425
+#, c-format
+msgid "cannot get section header for section [%2zu] '%s': %s\n"
+msgstr ""
+
+#: ../src/elflint.c:3434
+#, c-format
+msgid "section [%2zu]: invalid name\n"
+msgstr ""
+
+#: ../src/elflint.c:3461
+#, c-format
+msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
+msgstr ""
+
+#: ../src/elflint.c:3477
+#, c-format
+msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
+msgstr ""
+
+#: ../src/elflint.c:3494
+#, c-format
+msgid "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
+msgstr ""
+
+#: ../src/elflint.c:3512
+#, c-format
+msgid "section [%2zu] '%s' present in object file\n"
+msgstr ""
+
+#: ../src/elflint.c:3518
+#: ../src/elflint.c:3550
+#, c-format
+msgid "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
+msgstr ""
+
+#: ../src/elflint.c:3523
+#: ../src/elflint.c:3555
+#, c-format
+msgid "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable segments\n"
+msgstr ""
+
+#: ../src/elflint.c:3531
+#, c-format
+msgid "section [%2zu] '%s' is extension section index table in non-object file\n"
+msgstr ""
+
+#: ../src/elflint.c:3574
+#, c-format
+msgid "section [%2zu] '%s': size not multiple of entry size\n"
+msgstr ""
+
+#: ../src/elflint.c:3579
+#, c-format
+msgid "cannot get section header\n"
+msgstr ""
+
+#: ../src/elflint.c:3589
+#, c-format
+msgid "section [%2zu] '%s' has unsupported type %d\n"
+msgstr ""
+
+#: ../src/elflint.c:3603
+#, c-format
+msgid "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
+msgstr ""
+
+#: ../src/elflint.c:3610
+#, c-format
+msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
+msgstr ""
+
+#: ../src/elflint.c:3618
+#, c-format
+msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
+msgstr ""
+
+#: ../src/elflint.c:3626
+#, c-format
+msgid "section [%2zu] '%s': invalid section reference in link value\n"
+msgstr ""
+
+#: ../src/elflint.c:3631
+#, c-format
+msgid "section [%2zu] '%s': invalid section reference in info value\n"
+msgstr ""
+
+#: ../src/elflint.c:3638
+#, c-format
+msgid "section [%2zu] '%s': strings flag set without merge flag\n"
+msgstr ""
+
+#: ../src/elflint.c:3643
+#, c-format
+msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
+msgstr ""
+
+#: ../src/elflint.c:3661
+#, c-format
+msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
+msgstr ""
+
+#: ../src/elflint.c:3670
+#, c-format
+msgid "section [%2zu] '%s' is both executable and writable\n"
+msgstr ""
+
+#: ../src/elflint.c:3697
+#, c-format
+msgid "section [%2zu] '%s' not fully contained in segment of program header entry %d\n"
+msgstr ""
+
+#: ../src/elflint.c:3705
+#, 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:3714
+#, 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:3725
+#, c-format
+msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
+msgstr ""
+
+#: ../src/elflint.c:3735
+#, c-format
+msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
+msgstr ""
+
+#: ../src/elflint.c:3745
+#, c-format
+msgid "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
+msgstr ""
+
+#: ../src/elflint.c:3751
+#, 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:3759
+#, c-format
+msgid "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
+msgstr ""
+
+#: ../src/elflint.c:3810
+#, c-format
+msgid "more than one version symbol table present\n"
+msgstr ""
+
+#: ../src/elflint.c:3833
+#, c-format
+msgid "INTERP program header entry but no .interp section\n"
+msgstr ""
+
+#: ../src/elflint.c:3844
+#, c-format
+msgid "loadable segment [%u] is executable but contains no executable sections\n"
+msgstr ""
+
+#: ../src/elflint.c:3850
+#, c-format
+msgid "loadable segment [%u] is writable but contains no writable sections\n"
+msgstr ""
+
+#: ../src/elflint.c:3861
+#, c-format
+msgid "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section exist\n"
+msgstr ""
+
+#: ../src/elflint.c:3874
+#, c-format
+msgid "duplicate version index %d\n"
+msgstr ""
+
+#: ../src/elflint.c:3888
+#, c-format
+msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
+msgstr ""
+
+#: ../src/elflint.c:3937
+#, c-format
+msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
+msgstr ""
+
+#: ../src/elflint.c:3941
+#, c-format
+msgid "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
+msgstr ""
+
+#: ../src/elflint.c:3963
+#, c-format
+msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
+msgstr ""
+
+#: ../src/elflint.c:3967
+#, c-format
+msgid "section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
+msgstr ""
+
+#: ../src/elflint.c:3984
+#, c-format
+msgid "phdr[%d]: no note entries defined for the type of file\n"
+msgstr ""
+
+#: ../src/elflint.c:4003
+#, c-format
+msgid "phdr[%d]: cannot get content of note section: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:4006
+#, c-format
+msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
+msgstr ""
+
+#: ../src/elflint.c:4027
+#, c-format
+msgid "section [%2d] '%s': no note entries defined for the type of file\n"
+msgstr ""
+
+#: ../src/elflint.c:4034
+#, c-format
+msgid "section [%2d] '%s': cannot get content of note section\n"
+msgstr ""
+
+#: ../src/elflint.c:4037
+#, c-format
+msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
+msgstr ""
+
+#: ../src/elflint.c:4055
+#, c-format
+msgid "only executables, shared objects, and core files can have program headers\n"
+msgstr ""
+
+#: ../src/elflint.c:4070
+#, c-format
+msgid "cannot get program header entry %d: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:4079
+#, c-format
+msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
+msgstr ""
+
+#: ../src/elflint.c:4090
+#, c-format
+msgid "more than one INTERP entry in program header\n"
+msgstr ""
+
+#: ../src/elflint.c:4098
+#, c-format
+msgid "more than one TLS entry in program header\n"
+msgstr ""
+
+#: ../src/elflint.c:4105
+#, c-format
+msgid "static executable cannot have dynamic sections\n"
+msgstr ""
+
+#: ../src/elflint.c:4119
+#, c-format
+msgid "dynamic section reference in program header has wrong offset\n"
+msgstr ""
+
+#: ../src/elflint.c:4122
+#, c-format
+msgid "dynamic section size mismatch in program and section header\n"
+msgstr ""
+
+#: ../src/elflint.c:4132
+#, c-format
+msgid "more than one GNU_RELRO entry in program header\n"
+msgstr ""
+
+#: ../src/elflint.c:4153
+#, c-format
+msgid "loadable segment GNU_RELRO applies to is not writable\n"
+msgstr ""
+
+#: ../src/elflint.c:4156
+#, c-format
+msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
+msgstr ""
+
+#: ../src/elflint.c:4164
+#: ../src/elflint.c:4187
+#, c-format
+msgid "%s segment not contained in a loaded segment\n"
+msgstr ""
+
+#: ../src/elflint.c:4193
+#, c-format
+msgid "program header offset in ELF header and PHDR entry do not match"
+msgstr ""
+
+#: ../src/elflint.c:4217
+#, c-format
+msgid "call frame search table reference in program header has wrong offset\n"
+msgstr ""
+
+#: ../src/elflint.c:4220
+#, c-format
+msgid "call frame search table size mismatch in program and section header\n"
+msgstr ""
+
+#: ../src/elflint.c:4233
+#, c-format
+msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
+msgstr ""
+
+#: ../src/elflint.c:4241
+#, c-format
+msgid "call frame search table must be allocated\n"
+msgstr ""
+
+#: ../src/elflint.c:4244
+#, c-format
+msgid "section [%2zu] '%s' must be allocated\n"
+msgstr ""
+
+#: ../src/elflint.c:4248
+#, c-format
+msgid "call frame search table must not be writable\n"
+msgstr ""
+
+#: ../src/elflint.c:4251
+#, c-format
+msgid "section [%2zu] '%s' must not be writable\n"
+msgstr ""
+
+#: ../src/elflint.c:4256
+#, c-format
+msgid "call frame search table must not be executable\n"
+msgstr ""
+
+#: ../src/elflint.c:4259
+#, c-format
+msgid "section [%2zu] '%s' must not be executable\n"
+msgstr ""
+
+#: ../src/elflint.c:4270
+#, c-format
+msgid "program header entry %d: file size greater than memory size\n"
+msgstr ""
+
+#: ../src/elflint.c:4277
+#, c-format
+msgid "program header entry %d: alignment not a power of 2\n"
+msgstr ""
+
+#: ../src/elflint.c:4280
+#, c-format
+msgid "program header entry %d: file offset and virtual address not module of alignment\n"
+msgstr ""
+
+#: ../src/elflint.c:4293
+#, 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:4327
+#, c-format
+msgid "cannot read ELF header: %s\n"
+msgstr ""
+
+#: ../src/elflint.c:4353
+#, c-format
+msgid "text relocation flag set but not needed\n"
+msgstr ""
+
+#: ../src/addr2line.c:66
+msgid "Output selection options:"
+msgstr ""
+
+#: ../src/addr2line.c:67
+msgid "Show only base names of source files"
+msgstr ""
+
+#: ../src/addr2line.c:69
+msgid "Show absolute file names using compilation directory"
+msgstr ""
+
+#: ../src/addr2line.c:70
+msgid "Also show function names"
+msgstr ""
+
+#: ../src/addr2line.c:71
+msgid "Also show symbol or section names"
+msgstr ""
+
+#. Short description of program.
+#: ../src/addr2line.c:82
+msgid "Locate source files and line information for ADDRs (in a.out by default)."
+msgstr ""
+
+#. Strings for arguments in help texts.
+#: ../src/addr2line.c:86
+msgid "[ADDR...]"
+msgstr ""
+
+#: ../src/addr2line.c:387
+#, c-format
+msgid "Section syntax requires exactly one module"
+msgstr ""
+
+#: ../src/addr2line.c:410
+#, c-format
+msgid "offset %#<PRIxMAX> lies outside section '%s'"
+msgstr ""
+
+#: ../src/addr2line.c:428
+#, c-format
+msgid "cannot find symbol '%s'"
+msgstr ""
+
+#: ../src/addr2line.c:433
+#, c-format
+msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
+msgstr ""
+
+#: ../src/findtextrel.c:70
+msgid "Input Selection:"
+msgstr ""
+
+#: ../src/findtextrel.c:71
+msgid "Prepend PATH to all file names"
+msgstr ""
+
+#: ../src/findtextrel.c:73
+msgid "Use PATH as root of debuginfo hierarchy"
+msgstr ""
+
+#. Short description of program.
+#: ../src/findtextrel.c:80
+msgid "Locate source of text relocations in FILEs (a.out by default)."
+msgstr ""
+
+#: ../src/findtextrel.c:236
+#: ../src/elfcmp.c:578
+#: ../src/ranlib.c:186
+#, c-format
+msgid "cannot create ELF descriptor for '%s': %s"
+msgstr ""
+
+#: ../src/findtextrel.c:246
+#, c-format
+msgid "cannot get ELF header '%s': %s"
+msgstr ""
+
+#: ../src/findtextrel.c:257
+#, c-format
+msgid "'%s' is not a DSO or PIE"
+msgstr ""
+
+#: ../src/findtextrel.c:274
+#, c-format
+msgid "getting get section header of section %zu: %s"
+msgstr ""
+
+#: ../src/findtextrel.c:292
+#, c-format
+msgid "cannot read dynamic section: %s"
+msgstr ""
+
+#: ../src/findtextrel.c:307
+#, c-format
+msgid "no text relocations reported in '%s'"
+msgstr ""
+
+#: ../src/findtextrel.c:319
+#, c-format
+msgid "while reading ELF file"
+msgstr ""
+
+#: ../src/findtextrel.c:328
+#: ../src/findtextrel.c:345
+#, c-format
+msgid "cannot get program header index at offset %d: %s"
+msgstr ""
+
+#: ../src/findtextrel.c:397
+#, c-format
+msgid "cannot get section header of section %Zu: %s"
+msgstr ""
+
+#: ../src/findtextrel.c:409
+#, c-format
+msgid "cannot get symbol table section %zu in '%s': %s"
+msgstr ""
+
+#: ../src/findtextrel.c:429
+#: ../src/findtextrel.c:452
+#, c-format
+msgid "cannot get relocation at index %d in section %zu in '%s': %s"
+msgstr ""
+
+#: ../src/findtextrel.c:517
+#, c-format
+msgid "%s not compiled with -fpic/-fPIC\n"
+msgstr ""
+
+#: ../src/findtextrel.c:570
+#, c-format
+msgid "the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
+msgstr ""
+
+#: ../src/findtextrel.c:577
+#: ../src/findtextrel.c:597
+#, c-format
+msgid "the file containing the function '%s' might not be compiled with -fpic/-fPIC\n"
+msgstr ""
+
+#: ../src/findtextrel.c:585
+#, 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:605
+#, c-format
+msgid "a relocation modifies memory at offset %llu in a write-protected segment\n"
+msgstr ""
+
+#: ../src/elfcmp.c:69
+msgid "Control options:"
+msgstr ""
+
+#: ../src/elfcmp.c:70
+msgid "Control treatment of gaps in loadable segments [ignore|match] (default: ignore)"
+msgstr ""
+
+#: ../src/elfcmp.c:72
+msgid "Ignore permutation of buckets in SHT_HASH section"
+msgstr ""
+
+#: ../src/elfcmp.c:73
+msgid "Output nothing; yield exit status only"
+msgstr ""
+
+#. Short description of program.
+#: ../src/elfcmp.c:80
+msgid "Compare relevant parts of two ELF files for equality."
+msgstr ""
+
+#. Strings for arguments in help texts.
+#: ../src/elfcmp.c:84
+msgid "FILE1 FILE2"
+msgstr ""
+
+#: ../src/elfcmp.c:140
+msgid "Invalid number of parameters.\n"
+msgstr ""
+
+#: ../src/elfcmp.c:168
+#: ../src/elfcmp.c:173
+#, c-format
+msgid "cannot get ELF header of '%s': %s"
+msgstr ""
+
+#: ../src/elfcmp.c:190
+#, c-format
+msgid "%s %s diff: ELF header"
+msgstr ""
+
+#: ../src/elfcmp.c:248
+#, c-format
+msgid "%s %s differ: section header"
+msgstr ""
+
+#: ../src/elfcmp.c:276
+#: ../src/elfcmp.c:282
+#, c-format
+msgid "cannot get content of section %zu in '%s': %s"
+msgstr ""
+
+#: ../src/elfcmp.c:298
+#: ../src/elfcmp.c:304
+#, c-format
+msgid "cannot get symbol in '%s': %s"
+msgstr ""
+
+#: ../src/elfcmp.c:325
+#, c-format
+msgid "%s %s differ: symbol table [%zu]"
+msgstr ""
+
+#: ../src/elfcmp.c:328
+#, c-format
+msgid "%s %s differ: symbol table [%zu,%zu]"
+msgstr ""
+
+#: ../src/elfcmp.c:376
+#, c-format
+msgid "%s %s differ: section [%zu] '%s' content"
+msgstr ""
+
+#: ../src/elfcmp.c:380
+#, c-format
+msgid "%s %s differ: section [%zu,%zu] '%s' content"
+msgstr ""
+
+#: ../src/elfcmp.c:396
+#, c-format
+msgid "%s %s differ: unequal amount of important sections"
+msgstr ""
+
+#: ../src/elfcmp.c:430
+#: ../src/elfcmp.c:435
+#, c-format
+msgid "cannot load data of '%s': %s"
+msgstr ""
+
+#: ../src/elfcmp.c:454
+#: ../src/elfcmp.c:460
+#, c-format
+msgid "cannot get program header entry %d of '%s': %s"
+msgstr ""
+
+#: ../src/elfcmp.c:466
+#, c-format
+msgid "%s %s differ: program header %d"
+msgstr ""
+
+#: ../src/elfcmp.c:491
+#, c-format
+msgid "%s %s differ: gap"
+msgstr ""
+
+#: ../src/elfcmp.c:550
+#, c-format
+msgid "Invalid value '%s' for --gaps parameter."
+msgstr ""
+
+#: ../src/elfcmp.c:583
+#, c-format
+msgid "cannot create EBL descriptor for '%s'"
+msgstr ""
+
+#: ../src/elfcmp.c:601
+#, c-format
+msgid "cannot get section header of section %zu: %s"
+msgstr ""
+
+#: ../src/elfcmp.c:611
+#, c-format
+msgid "cannot get content of section %zu: %s"
+msgstr ""
+
+#: ../src/elfcmp.c:621
+#: ../src/elfcmp.c:635
+#, c-format
+msgid "cannot get relocation: %s"
+msgstr ""
+
+#. Short description of program.
+#: ../src/ranlib.c:74
+msgid "Generate an index to speed access to archives."
+msgstr ""
+
+#. Strings for arguments in help texts.
+#: ../src/ranlib.c:77
+msgid "ARCHIVE"
+msgstr ""
+
+#: ../src/ranlib.c:116
+#, c-format
+msgid "Archive name required"
+msgstr ""
+
+#: ../src/ranlib.c:194
+#, c-format
+msgid "'%s' is no archive"
+msgstr ""
+
+#: ../src/ranlib.c:229
+#, c-format
+msgid "error while freeing sub-ELF descriptor: %s"
+msgstr ""
+
+#: ../src/strings.c:70
+msgid "Output Selection:"
+msgstr ""
+
+#: ../src/strings.c:71
+msgid "Scan entire file, not only loaded sections"
+msgstr ""
+
+#: ../src/strings.c:73
+msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
+msgstr ""
+
+#: ../src/strings.c:74
+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
+msgid "Print name of the file before each string."
+msgstr ""
+
+#: ../src/strings.c:80
+msgid "Print location of the string in base 8, 10, or 16 respectively."
+msgstr ""
+
+#: ../src/strings.c:81
+msgid "Alias for --radix=o"
+msgstr ""
+
+#. Short description of program.
+#: ../src/strings.c:88
+msgid "Print the strings of printable characters in files."
+msgstr ""
+
+#: ../src/strings.c:268
+#: ../src/strings.c:303
+#, c-format
+msgid "invalid value '%s' for %s parameter"
+msgstr ""
+
+#: ../src/strings.c:314
+#, c-format
+msgid "invalid minimum length of matched string size"
+msgstr ""
+
+#: ../src/strings.c:601
+#, c-format
+msgid "lseek64 failed"
+msgstr ""
+
+#: ../src/strings.c:616
+#: ../src/strings.c:680
+#, c-format
+msgid "re-mmap failed"
+msgstr ""
+
+#: ../src/strings.c:653
+#, c-format
+msgid "mprotect failed"
+msgstr ""
+
+#: ../src/unstrip.c:77
+msgid "Match MODULE against file names, not module names"
+msgstr ""
+
+#: ../src/unstrip.c:78
+msgid "Silently skip unfindable files"
+msgstr ""
+
+#: ../src/unstrip.c:81
+msgid "Place output into FILE"
+msgstr ""
+
+#: ../src/unstrip.c:83
+msgid "Create multiple output files under DIRECTORY"
+msgstr ""
+
+#: ../src/unstrip.c:84
+msgid "Use module rather than file names"
+msgstr ""
+
+#: ../src/unstrip.c:86
+msgid "Create output for modules that have no separate debug information"
+msgstr ""
+
+#: ../src/unstrip.c:89
+msgid "Apply relocations to section contents in ET_REL files"
+msgstr ""
+
+#: ../src/unstrip.c:91
+msgid "Only list module and file names, build IDs"
+msgstr ""
+
+#: ../src/unstrip.c:133
+#, c-format
+msgid "-d option specified twice"
+msgstr ""
+
+#: ../src/unstrip.c:165
+#, c-format
+msgid "only one of -o or -d allowed"
+msgstr ""
+
+#: ../src/unstrip.c:174
+#, c-format
+msgid "-n cannot be used with explicit files or -o or -d"
+msgstr ""
+
+#: ../src/unstrip.c:189
+#, c-format
+msgid "output directory '%s'"
+msgstr ""
+
+#: ../src/unstrip.c:198
+#, c-format
+msgid "exactly two file arguments are required"
+msgstr ""
+
+#: ../src/unstrip.c:204
+#, c-format
+msgid "-m, -a, -R, and -i options not allowed with explicit files"
+msgstr ""
+
+#: ../src/unstrip.c:217
+#, c-format
+msgid "-o or -d is required when using implicit files"
+msgstr ""
+
+#: ../src/unstrip.c:253
+#, c-format
+msgid "cannot create ELF header: %s"
+msgstr ""
+
+#: ../src/unstrip.c:258
+#, c-format
+msgid "cannot copy ELF header: %s"
+msgstr ""
+
+#: ../src/unstrip.c:263
+#: ../src/unstrip.c:1816
+#, c-format
+msgid "cannot create program headers: %s"
+msgstr ""
+
+#: ../src/unstrip.c:269
+#, c-format
+msgid "cannot copy program header: %s"
+msgstr ""
+
+#: ../src/unstrip.c:279
+#, c-format
+msgid "cannot copy section header: %s"
+msgstr ""
+
+#: ../src/unstrip.c:282
+#: ../src/unstrip.c:1504
+#, c-format
+msgid "cannot get section data: %s"
+msgstr ""
+
+#: ../src/unstrip.c:284
+#: ../src/unstrip.c:1506
+#, c-format
+msgid "cannot copy section data: %s"
+msgstr ""
+
+#: ../src/unstrip.c:308
+#, c-format
+msgid "cannot create directory '%s'"
+msgstr ""
+
+#: ../src/unstrip.c:348
+#: ../src/unstrip.c:762
+#: ../src/unstrip.c:1539
+#, c-format
+msgid "cannot get symbol table entry: %s"
+msgstr ""
+
+#: ../src/unstrip.c:364
+#: ../src/unstrip.c:579
+#: ../src/unstrip.c:600
+#: ../src/unstrip.c:612
+#: ../src/unstrip.c:1560
+#: ../src/unstrip.c:1690
+#: ../src/unstrip.c:1714
+#, c-format
+msgid "cannot update symbol table: %s"
+msgstr ""
+
+#: ../src/unstrip.c:381
+#: ../src/unstrip.c:431
+#: ../src/unstrip.c:561
+#: ../src/unstrip.c:1208
+#: ../src/unstrip.c:1524
+#: ../src/unstrip.c:1719
+#: ../src/unstrip.c:1790
+#, c-format
+msgid "cannot update section header: %s"
+msgstr ""
+
+#: ../src/unstrip.c:407
+#: ../src/unstrip.c:418
+#, c-format
+msgid "cannot update relocation: %s"
+msgstr ""
+
+#: ../src/unstrip.c:506
+#, c-format
+msgid "cannot get symbol version: %s"
+msgstr ""
+
+#: ../src/unstrip.c:518
+#, c-format
+msgid "unexpected section type in [%Zu] with sh_link to symtab"
+msgstr ""
+
+#: ../src/unstrip.c:768
+#, c-format
+msgid "invalid string offset in symbol [%Zu]"
+msgstr ""
+
+#: ../src/unstrip.c:910
+#: ../src/unstrip.c:1247
+#, c-format
+msgid "cannot read section [%Zu] name: %s"
+msgstr ""
+
+#: ../src/unstrip.c:951
+#: ../src/unstrip.c:970
+#: ../src/unstrip.c:1003
+#, c-format
+msgid "cannot read '.gnu.prelink_undo' section: %s"
+msgstr ""
+
+#: ../src/unstrip.c:991
+#, c-format
+msgid "invalid contents in '%s' section"
+msgstr ""
+
+#: ../src/unstrip.c:1046
+#: ../src/unstrip.c:1369
+#, c-format
+msgid "cannot find matching section for [%Zu] '%s'"
+msgstr ""
+
+#: ../src/unstrip.c:1170
+#: ../src/unstrip.c:1185
+#: ../src/unstrip.c:1450
+#, c-format
+msgid "cannot add section name to string table: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1194
+#, c-format
+msgid "cannot update section header string table data: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1222
+#: ../src/unstrip.c:1226
+#, c-format
+msgid "cannot get section header string table section index: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1230
+#: ../src/unstrip.c:1234
+#: ../src/unstrip.c:1465
+#, c-format
+msgid "cannot get section count: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1292
+#: ../src/unstrip.c:1384
+#, c-format
+msgid "cannot read section header string table: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1444
+#, c-format
+msgid "cannot add new section: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1547
+#, c-format
+msgid "symbol [%Zu] has invalid section index"
+msgstr ""
+
+#: ../src/unstrip.c:1799
+#, c-format
+msgid "cannot get ELF header: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1826
+#, c-format
+msgid "cannot update program header: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1831
+#: ../src/unstrip.c:1910
+#, c-format
+msgid "cannot write output file: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1879
+#, c-format
+msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
+msgstr ""
+
+#: ../src/unstrip.c:1882
+#, c-format
+msgid "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
+msgstr ""
+
+#: ../src/unstrip.c:1901
+#: ../src/unstrip.c:1941
+#: ../src/unstrip.c:1953
+#: ../src/unstrip.c:2033
+#, c-format
+msgid "cannot create ELF descriptor: %s"
+msgstr ""
+
+#: ../src/unstrip.c:1959
+#, c-format
+msgid "'%s' and '%s' do not seem to match"
+msgstr ""
+
+#: ../src/unstrip.c:1990
+#, c-format
+msgid "cannot find stripped file for module '%s': %s"
+msgstr ""
+
+#: ../src/unstrip.c:1994
+#, c-format
+msgid "cannot open stripped file '%s' for module '%s': %s"
+msgstr ""
+
+#: ../src/unstrip.c:2009
+#, c-format
+msgid "cannot find debug file for module '%s': %s"
+msgstr ""
+
+#: ../src/unstrip.c:2013
+#, c-format
+msgid "cannot open debug file '%s' for module '%s': %s"
+msgstr ""
+
+#: ../src/unstrip.c:2026
+#, c-format
+msgid "module '%s' file '%s' is not stripped"
+msgstr ""
+
+#: ../src/unstrip.c:2057
+#, c-format
+msgid "cannot cache section addresses for module '%s': %s"
+msgstr ""
+
+#: ../src/unstrip.c:2190
+#, c-format
+msgid "no matching modules found"
+msgstr ""
+
+#: ../src/unstrip.c:2199
+#, c-format
+msgid "matched more than one module"
+msgstr ""
+
+#: ../src/unstrip.c:2246
+msgid ""
+"STRIPPED-FILE DEBUG-FILE\n"
+"[MODULE...]"
+msgstr ""
+
+#: ../src/unstrip.c:2247
+msgid ""
+"Combine stripped files with separate symbols and debug information.\vThe first form puts the result in DEBUG-FILE if -o was not given.\n"
+"\n"
+"MODULE arguments give file name patterns matching modules to process.\n"
+"With -f these match the file name of the main (stripped) file (slashes are never special), otherwise they match the simple module names. With no arguments, process all modules found.\n"
+"\n"
+"Multiple modules are written to files under OUTPUT-DIRECTORY, creating subdirectories as needed. With -m these files have simple module names, otherwise they have the name of the main file complete with directory underneath OUTPUT-DIRECTORY.\n"
+"\n"
+"With -n no files are written, but one line to standard output for each module:\n"
+"\tSTART+SIZE BUILDID FILE DEBUGFILE MODULENAME\n"
+"START and SIZE are hexadecimal giving the address bounds of the module. BUILDID is hexadecimal for the build ID bits, or - if no ID is known; the hexadecimal may be followed by @0xADDR giving the address where the ID resides if that is known. FILE is the file name found for the module, or - if none was found, or . if an ELF image is available but not from any named file. DEBUGFILE is the separate debuginfo file name, or - if no debuginfo was found, or . if FILE contains the debug information."
+msgstr ""
+
+#: ../src/objdump.c:61
+msgid "Mode selection:"
+msgstr ""
+
+#: ../src/objdump.c:62
+msgid "Display relocation information."
+msgstr ""
+
+#: ../src/objdump.c:64
+msgid "Display the full contents of all sections requested"
+msgstr ""
+
+#: ../src/objdump.c:66
+msgid "Display assembler code of executable sections"
+msgstr ""
+
+#: ../src/objdump.c:68
+msgid "Output option selection:"
+msgstr ""
+
+#: ../src/objdump.c:70
+msgid "Only display information for section NAME."
+msgstr ""
+
+#. Short description of program.
+#: ../src/objdump.c:76
+msgid "Show information from FILEs (a.out by default)."
+msgstr ""
+
+#: ../src/objdump.c:274
+#: ../src/objdump.c:286
+#, c-format
+msgid "while close `%s'"
+msgstr ""
+
+#: ../src/objdump.c:510
+#, c-format
+msgid ""
+"\n"
+"RELOCATION RECORDS FOR [%s]:\n"
+"%-*s TYPE VALUE\n"
+msgstr ""
+
+#: ../src/objdump.c:513
+msgid "OFFSET"
+msgstr ""
+
+#: ../src/objdump.c:576
+#, c-format
+msgid "Contents of section %s:\n"
+msgstr ""
+
+#: ../src/objdump.c:676
+#, c-format
+msgid "cannot disassemble"
+msgstr ""
+
diff --git a/po/es.po b/po/es.po
index f897a466..4a0b45a1 100644
--- a/po/es.po
+++ b/po/es.po
@@ -2,9 +2,9 @@ msgid ""
msgstr ""
"Project-Id-Version: elfutils\n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2009-04-02 19:14+0000\n"
+"POT-Creation-Date: 2009-04-09 14:04+0000\n"
"PO-Revision-Date: \n"
-"Last-Translator: Domingo Becker <[email protected]>\n"
+"Last-Translator: Claudio Rodrigo Pereyra Diaz <[email protected]>\n"
"Language-Team: Fedora Spanish <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -462,7 +462,7 @@ msgstr "No se puede encontrar nodo de tipo de letra '%s'."
#: ../libdwfl/argp-std.c:273
msgid "cannot find kernel or modules"
-msgstr ""
+msgstr "imposible encontrar kernel o modulos"
#: ../libebl/eblbackendname.c:63
#, fuzzy
@@ -565,11 +565,11 @@ msgstr " [N] - usa la instancia [cuenta] del nombre\n"
#: ../src/ar.c:90
msgid "Do not replace existing files with extracted files."
-msgstr ""
+msgstr "No reemplazar los archivos existentes con los archivos extraídos."
#: ../src/ar.c:91
msgid "Allow filename to be truncated if necessary."
-msgstr ""
+msgstr "Permitir truncamiento del nombre de archivo de ser necesario"
#: ../src/ar.c:93
#, fuzzy
@@ -598,7 +598,7 @@ msgstr "lo mismo que --format=posix"
#: ../src/ar.c:98
msgid "Suppress message when library has to be created."
-msgstr ""
+msgstr "Suprimir mensaje cuando se alla creado la libreria"
#: ../src/ar.c:100
#, fuzzy
@@ -613,7 +613,7 @@ msgstr "solamente añade ficheros más recientes que la copia del archivo"
#. Short description of program.
#: ../src/ar.c:107
msgid "Create, modify, and extract from archives."
-msgstr ""
+msgstr "Crear, modificar, y extraer desde archivos."
#. Strings for arguments in help texts.
#: ../src/ar.c:110
@@ -884,7 +884,7 @@ msgstr "Formato de salida:\n"
#: ../src/nm.c:87
msgid "Print name of the input file before every symbol"
-msgstr ""
+msgstr "Imprimir el nombre del archivo de entrada antes de cada símbolo"
#: ../src/nm.c:90
msgid "Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The default is `sysv'"
@@ -1030,7 +1030,7 @@ msgstr "Mí_n"
#: ../src/nm.c:464
#, c-format
msgid "cannot reset archive offset to beginning"
-msgstr ""
+msgstr "imposible restablecer archivo compensar al inicio"
#: ../src/nm.c:488
#: ../src/objdump.c:344
@@ -1936,77 +1936,77 @@ msgstr "10 x 11 in"
#: ../src/readelf.c:2943
#, c-format
msgid " %s: %<PRId64>, %s\n"
-msgstr ""
+msgstr " %s: %<PRId64>, %s\n"
#: ../src/readelf.c:2946
#, c-format
msgid " %s: %<PRId64>\n"
-msgstr ""
+msgstr " %s: %<PRId64>\n"
#: ../src/readelf.c:2949
#, c-format
msgid " %s: %s\n"
-msgstr ""
+msgstr " %s: %s\n"
#: ../src/readelf.c:2956
#, c-format
msgid " %u: %<PRId64>\n"
-msgstr ""
+msgstr " %u: %<PRId64>\n"
#: ../src/readelf.c:2959
#, c-format
msgid " %u: %s\n"
-msgstr ""
+msgstr " %u: %s\n"
#: ../src/readelf.c:2994
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
+msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
#: ../src/readelf.c:2997
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
+msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
#: ../src/readelf.c:3002
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
+msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
#: ../src/readelf.c:3005
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
+msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
#: ../src/readelf.c:3011
#, c-format
msgid "%s+%#<PRIx64> <%s>"
-msgstr ""
+msgstr "%s+%#<PRIx64> <%s>"
#: ../src/readelf.c:3014
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
-msgstr ""
+msgstr "%s+%#0*<PRIx64> <%s>"
#: ../src/readelf.c:3018
#, c-format
msgid "%#<PRIx64> <%s>"
-msgstr ""
+msgstr "%#<PRIx64> <%s>"
#: ../src/readelf.c:3021
#, c-format
msgid "%#0*<PRIx64> <%s>"
-msgstr ""
+msgstr "%#0*<PRIx64> <%s>"
#: ../src/readelf.c:3026
#, c-format
msgid "%s+%#<PRIx64>"
-msgstr ""
+msgstr "%s+%#<PRIx64>"
#: ../src/readelf.c:3029
#, c-format
msgid "%s+%#0*<PRIx64>"
-msgstr ""
+msgstr "%s+%#0*<PRIx64>"
#: ../src/readelf.c:3137
#, fuzzy, c-format
@@ -2092,7 +2092,7 @@ msgstr[1] ""
#: ../src/readelf.c:4137
#, c-format
msgid " [%*zu] ???\n"
-msgstr ""
+msgstr " [%*zu] ???\n"
#: ../src/readelf.c:4139
#, c-format
@@ -2133,12 +2133,12 @@ msgstr " %8.8lx %8.8lx %8.8lx (dirección base)\n"
#: ../src/readelf.c:4210
#, c-format
msgid " [%6tx] %s..%s\n"
-msgstr ""
+msgstr " [%6tx] %s..%s\n"
#: ../src/readelf.c:4212
#, c-format
msgid " %s..%s\n"
-msgstr ""
+msgstr " %s..%s\n"
#: ../src/readelf.c:4609
#: ../src/readelf.c:6043
@@ -2427,12 +2427,12 @@ msgstr ""
#: ../src/readelf.c:5760
#, c-format
msgid " [%6tx] %s..%s"
-msgstr ""
+msgstr " [%6tx] %s..%s"
#: ../src/readelf.c:5762
#, c-format
msgid " %s..%s"
-msgstr ""
+msgstr " %s..%s"
#: ../src/readelf.c:5815
#, c-format
diff --git a/src/ChangeLog b/src/ChangeLog
index 88dd78a9..fe8b0362 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,18 @@
+2009-04-15 Roland McGrath <[email protected]>
+
+ * readelf.c (print_debug_frame_section): Check for DW_CIE_ID_64 in
+ 64-bit format header, DW_CIE_ID_32 in 32-bit format header.
+
+2009-04-14 Roland McGrath <[email protected]>
+
+ * readelf.c (print_attributes): Treat SHT_ARM_ATTRIBUTES on EM_ARM
+ like SHT_GNU_ATTRIBUTES.
+
+ * readelf.c (handle_core_registers): Fix error message.
+
+ * strip.c (handle_elf: check_preserved): Don't note any change when
+ .debug_data is already filled from a previous pass.
+
2009-02-05 Ulrich Drepper <[email protected]>
* objdump.c (show_relocs_x): Minor cleanups.
diff --git a/src/readelf.c b/src/readelf.c
index f4ed033e..1c790650 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -2824,7 +2824,9 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
GElf_Shdr shdr_mem;
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
- if (shdr == NULL || shdr->sh_type != SHT_GNU_ATTRIBUTES)
+ if (shdr == NULL || (shdr->sh_type != SHT_GNU_ATTRIBUTES
+ && (shdr->sh_type != SHT_ARM_ATTRIBUTES
+ || ehdr->e_machine != EM_ARM)))
continue;
printf (gettext ("\
@@ -2871,8 +2873,9 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
printf (gettext (" %-13s %4" PRIu32 "\n"), name, len);
- if (q - name == sizeof "gnu"
- && !memcmp (name, "gnu", sizeof "gnu"))
+ if (shdr->sh_type != SHT_GNU_ATTRIBUTES
+ || (q - name == sizeof "gnu"
+ && !memcmp (name, "gnu", sizeof "gnu")))
while (q < p)
{
const unsigned char *const sub = q;
@@ -4673,9 +4676,13 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (unlikely (cieend > dataend || readp + 8 > dataend))
goto invalid_data;
- Dwarf_Word cie_id;
+ Dwarf_Off cie_id;
if (length == 4)
- cie_id = read_4ubyte_unaligned_inc (dbg, readp);
+ {
+ cie_id = read_4ubyte_unaligned_inc (dbg, readp);
+ if (!is_eh_frame && cie_id == DW_CIE_ID_32)
+ cie_id = DW_CIE_ID_64;
+ }
else
cie_id = read_8ubyte_unaligned_inc (dbg, readp);
@@ -4686,7 +4693,7 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
Dwarf_Word initial_location = 0;
Dwarf_Word vma_base = 0;
- if (cie_id == (is_eh_frame ? 0 : DW_CIE_ID))
+ if (cie_id == (is_eh_frame ? 0 : DW_CIE_ID_64))
{
uint_fast8_t version = *readp++;
const char *const augmentation = (const char *) readp;
@@ -6922,7 +6929,7 @@ handle_core_registers (Ebl *ebl, Elf *core, const void *desc,
ssize_t maxnreg = ebl_register_info (ebl, 0, NULL, 0, NULL, NULL, NULL, NULL);
if (maxnreg <= 0)
error (EXIT_FAILURE, 0,
- gettext ("cannot register info: %s"), elf_errmsg (-1));
+ gettext ("cannot get register info: %s"), elf_errmsg (-1));
struct register_info regs[maxnreg];
memset (regs, 0, sizeof regs);
diff --git a/src/strip.c b/src/strip.c
index 27eb2106..d788ebf2 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -835,7 +835,8 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
inline void check_preserved (size_t i)
{
- if (i != 0 && shdr_info[i].idx != 0)
+ if (i != 0 && shdr_info[i].idx != 0
+ && shdr_info[i].debug_data == NULL)
{
if (shdr_info[i].data == NULL)
shdr_info[i].data = elf_getdata (shdr_info[i].scn, NULL);