summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2017-08-03 12:37:37 +0200
committerMark Wielaard <mark@klomp.org>2017-08-03 14:21:08 +0200
commit766df1e15c1e8f8bc9890e7538eb2ef15a6516dc (patch)
tree45ae9d0ac821a15fbb9336909671e18efc15f6e8
parent13c3e00ba629586ae42c316ae4ed6c3f04282a82 (diff)
parent54ba4ce2973113d8f4315d4fc90e16a9b4476ea6 (diff)
Merge tag 'elfutils-0.170' into mjw/RH-DTSdts-0.170
elfutils 0.170 release Conflicts: libcpu/Makefile.am libdw/Makefile.am tests/Makefile.am
-rw-r--r--ChangeLog36
-rw-r--r--NEWS13
-rw-r--r--backends/ChangeLog46
-rw-r--r--backends/Makefile.am16
-rw-r--r--backends/aarch64_init.c3
-rw-r--r--backends/aarch64_symbol.c14
-rw-r--r--backends/arm_init.c3
-rw-r--r--backends/arm_symbol.c15
-rw-r--r--backends/bpf_init.c2
-rw-r--r--backends/bpf_regs.c6
-rw-r--r--backends/ppc64_init.c1
-rw-r--r--backends/ppc64_unwind.c76
-rw-r--r--backends/ppc_corenote.c13
-rw-r--r--backends/ppc_init.c1
-rw-r--r--backends/ppc_regs.c10
-rw-r--r--backends/ppc_symbol.c10
-rw-r--r--backends/s390_initreg.c2
-rw-r--r--backends/sparc_reloc.def6
-rw-r--r--config/ChangeLog6
-rw-r--r--config/elfutils.spec.in10
-rw-r--r--configure.ac6
-rw-r--r--lib/ChangeLog5
-rw-r--r--lib/Makefile.am2
-rw-r--r--lib/bpf.h82
-rw-r--r--libasm/ChangeLog11
-rw-r--r--libasm/Makefile.am14
-rw-r--r--libcpu/ChangeLog6
-rw-r--r--libcpu/Makefile.am2
-rw-r--r--libcpu/bpf_disasm.c7
-rw-r--r--libdw/ChangeLog77
-rw-r--r--libdw/Makefile.am26
-rw-r--r--libdw/dwarf.h150
-rw-r--r--libdw/dwarf_aggregate_size.c42
-rw-r--r--libdw/dwarf_default_lower_bound.c91
-rw-r--r--libdw/dwarf_error.c1
-rw-r--r--libdw/dwarf_getmacros.c27
-rw-r--r--libdw/dwarf_line_file.c52
-rw-r--r--libdw/dwarf_peel_type.c7
-rw-r--r--libdw/libdw.h39
-rw-r--r--libdw/libdw.map6
-rw-r--r--libdw/libdwP.h4
-rw-r--r--libdwfl/ChangeLog5
-rw-r--r--libdwfl/argp-std.c55
-rw-r--r--libebl/ChangeLog13
-rw-r--r--libebl/Makefile.am5
-rw-r--r--libebl/ebl-hooks.h5
-rw-r--r--libebl/ebl_data_marker_symbol.c44
-rw-r--r--libebl/eblcorenotetypename.c1
-rw-r--r--libebl/eblopenbackend.c11
-rw-r--r--libebl/libebl.h6
-rw-r--r--libelf/ChangeLog12
-rw-r--r--libelf/Makefile.am14
-rw-r--r--libelf/elf.h1
-rw-r--r--po/ChangeLog4
-rw-r--r--po/de.po477
-rw-r--r--po/es.po487
-rw-r--r--po/ja.po490
-rw-r--r--po/pl.po484
-rw-r--r--po/uk.po487
-rw-r--r--src/ChangeLog42
-rw-r--r--src/readelf.c123
-rw-r--r--src/strip.c192
-rw-r--r--tests/ChangeLog60
-rw-r--r--tests/Makefile.am17
-rw-r--r--tests/backtrace-subr.sh2
-rw-r--r--tests/backtrace.ppc64le.fp.core.bz2bin0 -> 37786 bytes
-rwxr-xr-xtests/backtrace.ppc64le.fp.exec.bz2bin0 -> 383808 bytes
-rw-r--r--tests/dwarf-getmacros.c10
-rw-r--r--tests/dwarf_default_lower_bound.c83
-rw-r--r--tests/elfshphehdr.c2
-rw-r--r--tests/get-lines.c23
-rwxr-xr-xtests/run-addrcfi.sh18
-rwxr-xr-xtests/run-allregs.sh12
-rwxr-xr-xtests/run-backtrace-fp-core-ppc64le.sh29
-rwxr-xr-xtests/run-strip-g.sh77
-rwxr-xr-xtests/run-strip-nothing.sh62
-rwxr-xr-xtests/run-strip-remove-keep.sh688
-rwxr-xr-xtests/run-strip-test.sh8
78 files changed, 3589 insertions, 1406 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d6cd2ba..9253c0a3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,39 @@
+2017-08-02 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Set version to 0.170.
+ * NEWS: Mention new libdw dwarf_line_file function.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * NEWS: Mention dwarf_getmacros handling version 5 .debug_macro.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * NEWS: Mention dwarf_peel_type DWARF5 tags improvement.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * NEWS: Mention new DWARF5 calling conventions and defaulted member
+ function.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * NEWS: Mention new dwarf_default_lower_bound function.
+
+2017-07-25 Mark Wielaard <mark@klomp.org>
+
+ * NEWS: Mention new DWARF5 attributes, tags, character encodings
+ and language codes in dwarf.h.
+
+2017-07-18 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Don't check for linux/bpf.h.
+ * NEWS: Mention always build bpf backend.
+
+2017-07-14 Mark Wielaard <mark@klomp.org>
+
+ * NEWS: Add 0.170 section and new strip options.
+
2017-05-05 Mark Wielaard <mark@klomp.org>
* configure.ac: Set version to 0.169. Update copyright year.
diff --git a/NEWS b/NEWS
index eb7dd972..72e5118d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,16 @@
+Version 0.170
+
+libdw: Added new DWARF5 attribute, tag, character encoding, language code,
+ calling convention, defaulted member function and macro constants
+ to dwarf.h.
+ New functions dwarf_default_lower_bound and dwarf_line_file.
+ dwarf_peel_type now handles DWARF5 immutable, packed and shared tags.
+ dwarf_getmacros now handles DWARF5 .debug_macro sections.
+
+strip: Add -R, --remove-section=SECTION and --keep-section=SECTION.
+
+backends: The bpf disassembler is now always build on all platforms.
+
Version 0.169
backends: Add support for EM_PPC64 GNU_ATTRIBUTES.
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 1ac5bab3..a66e923e 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,49 @@
+2017-07-27 Mark Wielaard <mark@klomp.org>
+
+ * sparc_reloc.def: GOTDATA_OP_HIX22, GOTDATA_OP_LOX10 and
+ GOTDATA_OP can be used in ET_REL files.
+
+2017-07-19 Gustavo Romero <gromero@linux.vnet.ibm.com>
+
+ * ppc_corenote.c: Add offsets for ppc64 HTM SPRs: thfar, tfiar,
+ and texasr.
+ * ppc_regs.c: Add names for ppc64 HTM SPRs mappings.
+
+2017-07-20 Mark Wielaard <mark@klomp.org>
+
+ * aarch64_init.c (aarch64_init): Hook data_marker_symbol.
+ * aarch64_symbol.c (aarch64_data_marker_symbol): New function.
+ * arm_init.c (arm_init): Hook data_marker_symbol.
+ * arm_symbol.c (aarch64_data_marker_symbol): New function.
+
+2017-07-18 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (cpu_bpf): Always define.
+ * bpf_init.c (disasm): Always hook.
+ * bpf_regs.c: Include bpf.h instead of linux/bpf.h. Don't define
+ MAX_BPF_REG.
+
+2017-02-17 Ulf Hermann <ulf.hermann@qt.io>
+
+ * Makefile.am: Add libeu.
+ (libebl_%so): Link with --no-undefined,-z,defs,-z,relro
+ and libeu.a.
+
+2017-06-17 Mark Wielaard <mark@klomp.org>
+
+ * s390_initreg.c: Swap sys/ptrace.h and asm/ptrace.h include order.
+
+2017-06-15 Andreas Schwab <schwab@linux-m68k.org>
+
+ * ppc_symbol.c (ppc_machine_flag_check): New function.
+ * ppc_init.c (ppc_init): Hook it.
+
+2017-05-30 Mark Wielaard <mark@klomp.org>
+
+ * ppc64_unwind.c: New file.
+ * ppc64_init.c (pcc64_init): Hook unwind.
+ * Makefile.am (ppc64_SRCS): Add ppc64_unwind.c
+
2017-04-06 Mark Wielaard <mark@klomp.org>
* i386_unwind.c: New file.
diff --git a/backends/Makefile.am b/backends/Makefile.am
index 96004dcc..03b9d201 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -46,6 +46,7 @@ lib_LIBRARIES = libebl_static_pic.a
libelf = ../libelf/libelf.so
libdw = ../libdw/libdw.so
+libeu = ../lib/libeu.a
# The following is minimal set of backends that we link with libdw to
# avoid dlopen. Note repeats files below because some backends reuse
@@ -64,7 +65,7 @@ static_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \
ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \
ppc_cfi.c ppc_initreg.c \
ppc64_init.c ppc64_symbol.c ppc64_retval.c ppc64_corenote.c \
- ppc64_resolve_sym.c \
+ ppc64_resolve_sym.c ppc64_unwind.c \
s390_init.c s390_symbol.c s390_regs.c s390_retval.c \
s390_corenote.c s390x_corenote.c s390_cfi.c s390_initreg.c \
s390_unwind.c bpf_init.c bpf_regs.c
@@ -124,7 +125,7 @@ am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os)
ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c \
ppc64_corenote.c ppc_regs.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \
- ppc_cfi.c ppc_initreg.c ppc64_resolve_sym.c
+ ppc_cfi.c ppc_initreg.c ppc64_unwind.c ppc64_resolve_sym.c
libebl_ppc64_pic_a_SOURCES = $(ppc64_SRCS)
am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os)
@@ -145,24 +146,19 @@ libebl_m68k_pic_a_SOURCES = $(m68k_SRCS)
am_libebl_m68k_pic_a_OBJECTS = $(m68k_SRCS:.c=.os)
bpf_SRCS = bpf_init.c bpf_regs.c
-# The disam hook depends on this if we have linux/bpf.h.
-if HAVE_LINUX_BPF_H
cpu_bpf = ../libcpu/libcpu_bpf.a
-else
-cpu_bpf =
-endif
libebl_bpf_pic_a_SOURCES = $(bpf_SRCS)
am_libebl_bpf_pic_a_OBJECTS = $(bpf_SRCS:.c=.os)
-libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw)
+libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu)
@rm -f $(@:.so=.map)
$(AM_V_at)echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \
> $(@:.so=.map)
$(AM_V_CCLD)$(LINK) -shared -o $(@:.map=.so) \
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
- -Wl,--version-script,$(@:.so=.map) \
- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
+ -Wl,--version-script,$(@:.so=.map),--no-undefined \
+ -Wl,-z,defs,-z,relro -Wl,--as-needed $(libelf) $(libdw) $(libeu)
@$(textrel_check)
libebl_i386.so: $(cpu_i386)
diff --git a/backends/aarch64_init.c b/backends/aarch64_init.c
index 08664943..fad923fa 100644
--- a/backends/aarch64_init.c
+++ b/backends/aarch64_init.c
@@ -1,5 +1,5 @@
/* Initialization of AArch64 specific backend library.
- Copyright (C) 2013 Red Hat, Inc.
+ Copyright (C) 2013, 2017 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -56,6 +56,7 @@ aarch64_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, reloc_simple_type);
HOOK (eh, return_value_location);
HOOK (eh, check_special_symbol);
+ HOOK (eh, data_marker_symbol);
HOOK (eh, abi_cfi);
/* X0-X30 (31 regs) + SP + 1 Reserved + ELR, 30 Reserved regs (34-43)
diff --git a/backends/aarch64_symbol.c b/backends/aarch64_symbol.c
index 76999e4b..da3382e9 100644
--- a/backends/aarch64_symbol.c
+++ b/backends/aarch64_symbol.c
@@ -1,5 +1,5 @@
/* AArch64 specific symbolic name handling.
- Copyright (C) 2013, 2015 Red Hat, Inc.
+ Copyright (C) 2013, 2015, 2017 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -90,3 +90,15 @@ aarch64_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, const GElf_Sym *sym,
return false;
}
+
+/* A data mapping symbol is a symbol with "$d" name or "$d.<any...>" name,
+ STT_NOTYPE, STB_LOCAL and st_size of zero. The indicate the stat of a
+ sequence of data items. */
+bool
+aarch64_data_marker_symbol (const GElf_Sym *sym, const char *sname)
+{
+ return (sym != NULL && sname != NULL
+ && sym->st_size == 0 && GELF_ST_BIND (sym->st_info) == STB_LOCAL
+ && GELF_ST_TYPE (sym->st_info) == STT_NOTYPE
+ && (strcmp (sname, "$d") == 0 || strncmp (sname, "$d.", 3) == 0));
+}
diff --git a/backends/arm_init.c b/backends/arm_init.c
index caadac65..f2b1b11e 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, 2009, 2013, 2014, 2015 Red Hat, Inc.
+ Copyright (C) 2002, 2005, 2009, 2013, 2014, 2015, 2017 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -64,6 +64,7 @@ arm_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, abi_cfi);
HOOK (eh, check_reloc_target_type);
HOOK (eh, symbol_type_name);
+ HOOK (eh, data_marker_symbol);
/* We only unwind the core integer registers. */
eh->frame_nregs = 16;
diff --git a/backends/arm_symbol.c b/backends/arm_symbol.c
index da4a50a7..3edda724 100644
--- a/backends/arm_symbol.c
+++ b/backends/arm_symbol.c
@@ -1,5 +1,5 @@
/* Arm specific symbolic name handling.
- Copyright (C) 2002-2009, 2014, 2015 Red Hat, Inc.
+ Copyright (C) 2002-2009, 2014, 2015, 2017 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -32,6 +32,7 @@
#include <elf.h>
#include <stddef.h>
+#include <string.h>
#define BACKEND arm_
#include "libebl_CPU.h"
@@ -142,3 +143,15 @@ arm_symbol_type_name (int type,
}
return NULL;
}
+
+/* A data mapping symbol is a symbol with "$d" name or "$d.<any...>" name,
+ * STT_NOTYPE, STB_LOCAL and st_size of zero. The indicate the stat of a
+ * sequence of data items. */
+bool
+arm_data_marker_symbol (const GElf_Sym *sym, const char *sname)
+{
+ return (sym != NULL && sname != NULL
+ && sym->st_size == 0 && GELF_ST_BIND (sym->st_info) == STB_LOCAL
+ && GELF_ST_TYPE (sym->st_info) == STT_NOTYPE
+ && (strcmp (sname, "$d") == 0 || strncmp (sname, "$d.", 3) == 0));
+}
diff --git a/backends/bpf_init.c b/backends/bpf_init.c
index 22842e26..8ea1bc1a 100644
--- a/backends/bpf_init.c
+++ b/backends/bpf_init.c
@@ -52,9 +52,7 @@ bpf_init (Elf *elf __attribute__ ((unused)),
eh->name = "BPF";
bpf_init_reloc (eh);
HOOK (eh, register_info);
-#ifdef HAVE_LINUX_BPF_H
HOOK (eh, disasm);
-#endif
return MODVERSION;
}
diff --git a/backends/bpf_regs.c b/backends/bpf_regs.c
index 180af83b..1863a164 100644
--- a/backends/bpf_regs.c
+++ b/backends/bpf_regs.c
@@ -32,11 +32,7 @@
#include <stdio.h>
#include <string.h>
-#ifdef HAVE_LINUX_BPF_H
-#include <linux/bpf.h>
-#else
-#define MAX_BPF_REG 10
-#endif
+#include "bpf.h"
#define BACKEND bpf_
#include "libebl_CPU.h"
diff --git a/backends/ppc64_init.c b/backends/ppc64_init.c
index 11d3a77f..e5670338 100644
--- a/backends/ppc64_init.c
+++ b/backends/ppc64_init.c
@@ -73,6 +73,7 @@ ppc64_init (Elf *elf __attribute__ ((unused)),
eh->frame_nregs = (114 - 1) + 32;
HOOK (eh, set_initial_registers_tid);
HOOK (eh, dwarf_to_regno);
+ HOOK (eh, unwind);
HOOK (eh, resolve_sym_value);
/* Find the function descriptor .opd table for resolve_sym_value. */
diff --git a/backends/ppc64_unwind.c b/backends/ppc64_unwind.c
new file mode 100644
index 00000000..4fa0b5a9
--- /dev/null
+++ b/backends/ppc64_unwind.c
@@ -0,0 +1,76 @@
+/* Get previous frame state for an existing frame state.
+ Copyright (C) 2017 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of either
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at
+ your option) any later version
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at
+ your option) any later version
+
+ or both in parallel, as here.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#define BACKEND ppc64_
+
+#define LR_REG 65 /* Not 108, see ppc_dwarf_to_regno. */
+#define SP_REG 1
+
+#define LR_OFFSET 16
+
+#include "libebl_CPU.h"
+
+/* Simplistic fallback frame unwinder. SP points to the backchain (contains
+ address of previous stack pointer). At SP offset 16 is the LR save area
+ (contains the value of the previous LR). */
+
+bool
+EBLHOOK(unwind) (Ebl *ebl __attribute__ ((unused)),
+ Dwarf_Addr pc __attribute__ ((unused)),
+ ebl_tid_registers_t *setfunc, ebl_tid_registers_get_t *getfunc,
+ ebl_pid_memory_read_t *readfunc, void *arg,
+ bool *signal_framep __attribute__ ((unused)))
+{
+ Dwarf_Word sp, newSp, lr, newLr;
+
+ /* Stack pointer points to the backchain which contains the previous sp. */
+ if (! getfunc (SP_REG, 1, &sp, arg))
+ sp = 0;
+
+ /* Link register contains previous program counter. */
+ if (! getfunc (LR_REG, 1, &lr, arg)
+ || lr == 0
+ || ! setfunc (-1, 1, &lr, arg))
+ return false;
+
+ if (! readfunc(sp, &newSp, arg))
+ newSp = 0;
+
+ if (! readfunc(newSp + LR_OFFSET, &newLr, arg))
+ newLr = 0;
+
+ setfunc(SP_REG, 1, &newSp, arg);
+ setfunc(LR_REG, 1, &newLr, arg);
+
+ /* Sanity check the stack grows down. */
+ return newSp > sp;
+}
diff --git a/backends/ppc_corenote.c b/backends/ppc_corenote.c
index 9ac88712..2b4ada7a 100644
--- a/backends/ppc_corenote.c
+++ b/backends/ppc_corenote.c
@@ -94,9 +94,20 @@ static const Ebl_Register_Location spe_regs[] =
{ .offset = 34 * 4, .regno = 612, .count = 1, .bits = 32 }
};
+static const Ebl_Register_Location tm_spr_regs[] =
+ {
+ /* tfhar */
+ { .offset = 0, .regno = 114, .count = 1, .bits = 64 },
+ /* texasr */
+ { .offset = 8, .regno = 116, .count = 1, .bits = 64 },
+ /* tfiar */
+ { .offset = 16, .regno = 115, .count = 1, .bits = 64 }
+ };
+
#define EXTRA_NOTES \
EXTRA_REGSET (NT_PPC_VMX, 34 * 16, altivec_regs) \
- EXTRA_REGSET (NT_PPC_SPE, 35 * 4, spe_regs)
+ EXTRA_REGSET (NT_PPC_SPE, 35 * 4, spe_regs) \
+ EXTRA_REGSET (NT_PPC_TM_SPR, 3 * 8, tm_spr_regs)
#if BITS == 32
# define ULONG uint32_t
diff --git a/backends/ppc_init.c b/backends/ppc_init.c
index c3e3ca36..aea9f2d7 100644
--- a/backends/ppc_init.c
+++ b/backends/ppc_init.c
@@ -53,6 +53,7 @@ ppc_init (Elf *elf __attribute__ ((unused)),
eh->name = "PowerPC";
ppc_init_reloc (eh);
HOOK (eh, reloc_simple_type);
+ HOOK (eh, machine_flag_check);
HOOK (eh, dynamic_tag_name);
HOOK (eh, dynamic_tag_check);
HOOK (eh, check_special_symbol);
diff --git a/backends/ppc_regs.c b/backends/ppc_regs.c
index bcf4f7a3..c2d50118 100644
--- a/backends/ppc_regs.c
+++ b/backends/ppc_regs.c
@@ -149,7 +149,15 @@ ppc_register_info (Ebl *ebl __attribute__ ((unused)),
namelen = 4;
break;
- case 110 ... 117:
+ case 114:
+ return stpcpy (name, "tfhar") + 1 - name;
+ case 115:
+ return stpcpy (name, "tfiar") + 1 - name;
+ case 116:
+ return stpcpy (name, "texasr") + 1 - name;
+
+ case 110 ... 113:
+ case 117:
case 120 ... 121:
case 123 ... 199:
name[0] = 's';
diff --git a/backends/ppc_symbol.c b/backends/ppc_symbol.c
index 1273c1d2..4b32003a 100644
--- a/backends/ppc_symbol.c
+++ b/backends/ppc_symbol.c
@@ -57,6 +57,16 @@ ppc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type)
}
+/* Check whether machine flags are valid. */
+bool
+ppc_machine_flag_check (GElf_Word flags)
+{
+ return ((flags &~ (EF_PPC_EMB
+ | EF_PPC_RELOCATABLE
+ | EF_PPC_RELOCATABLE_LIB)) == 0);
+}
+
+
const char *
ppc_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)),
size_t len __attribute__ ((unused)))
diff --git a/backends/s390_initreg.c b/backends/s390_initreg.c
index 011305ce..23bf8edc 100644
--- a/backends/s390_initreg.c
+++ b/backends/s390_initreg.c
@@ -34,8 +34,8 @@
#include <assert.h>
#if defined(__s390__) && defined(__linux__)
# include <sys/user.h>
-# include <asm/ptrace.h>
# include <sys/ptrace.h>
+# include <asm/ptrace.h>
#endif
#define BACKEND s390_
diff --git a/backends/sparc_reloc.def b/backends/sparc_reloc.def
index ce0b5556..7cd5ce96 100644
--- a/backends/sparc_reloc.def
+++ b/backends/sparc_reloc.def
@@ -110,9 +110,9 @@ RELOC_TYPE (TLS_TPOFF32, DYN)
RELOC_TYPE (TLS_TPOFF64, DYN)
RELOC_TYPE (GOTDATA_HIX22, REL)
RELOC_TYPE (GOTDATA_LOX10, REL)
-RELOC_TYPE (GOTDATA_OP_HIX22, DYN)
-RELOC_TYPE (GOTDATA_OP_LOX10, DYN)
-RELOC_TYPE (GOTDATA_OP, DYN)
+RELOC_TYPE (GOTDATA_OP_HIX22, REL|DYN)
+RELOC_TYPE (GOTDATA_OP_LOX10, REL|DYN)
+RELOC_TYPE (GOTDATA_OP, REL|DYN)
RELOC_TYPE (H34, REL)
RELOC_TYPE (SIZE32, REL)
RELOC_TYPE (SIZE64, REL)
diff --git a/config/ChangeLog b/config/ChangeLog
index 3492d6d7..02cf76f9 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,4 +1,8 @@
-2016-05-05 Mark Wielaard <mark@klomp.org>
+2016-08-02 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Update for 0.170.
+
+2017-05-05 Mark Wielaard <mark@klomp.org>
* elfutils.spec.in: Update for 0.169.
diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in
index 06b7290d..439fcb73 100644
--- a/config/elfutils.spec.in
+++ b/config/elfutils.spec.in
@@ -227,6 +227,16 @@ rm -rf ${RPM_BUILD_ROOT}
%config(noreplace) %{_sysctldir}/10-default-yama-scope.conf
%changelog
+* Wed Aug 2 2017 Mark Wielaard <mark@gmail.com> 0.170-1
+- libdw: Added new DWARF5 attribute, tag, character encoding,
+ language code, calling convention, defaulted member function
+ and macro constants to dwarf.h.
+ New functions dwarf_default_lower_bound and dwarf_line_file.
+ dwarf_peel_type now handles DWARF5 immutable, packed and shared tags.
+ dwarf_getmacros now handles DWARF5 .debug_macro sections.
+- strip: Add -R, --remove-section=SECTION and --keep-section=SECTION.
+- backends: The bpf disassembler is now always build on all platforms.
+
* Fri May 5 2017 Mark Wielaard <mark@klomp.org> 0.169-1
- backends: Add support for EM_PPC64 GNU_ATTRIBUTES.
Frame pointer unwinding fallback support for i386, x86_64, aarch64.
diff --git a/configure.ac b/configure.ac
index cc0cc62d..0ca9ae24 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@ dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
-AC_INIT([elfutils],[0.169],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
+AC_INIT([elfutils],[0.170],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
dnl Workaround for older autoconf < 2.64
m4_ifndef([AC_PACKAGE_URL],
@@ -391,10 +391,6 @@ else
fi
AC_SUBST([argp_LDADD])
-dnl Check if we have <linux/bpf.h> for EM_BPF disassembly.
-AC_CHECK_HEADERS(linux/bpf.h)
-AM_CONDITIONAL(HAVE_LINUX_BPF_H, [test "x$ac_cv_header_linux_bpf_h" = "xyes"])
-
dnl The directories with content.
dnl Documentation.
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 1fc1a38c..1f162286 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,8 @@
+2017-07-18 Mark Wielaard <mark@klomp.org>
+
+ * bpf.h: New file.
+ * Makefile.am (noinst_HEADERS): Add bpf.h
+
2017-05-05 Mark Wielaard <mark@klomp.org>
* printversion.c (print_version): Update copyright year.
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 7a65eb91..ada2030d 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -38,7 +38,7 @@ libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c \
color.c printversion.c
noinst_HEADERS = fixedsizehash.h libeu.h system.h dynamicsizehash.h list.h \
- md5.h sha1.h eu-config.h color.h printversion.h
+ md5.h sha1.h eu-config.h color.h printversion.h bpf.h
EXTRA_DIST = dynamicsizehash.c
if !GPROF
diff --git a/lib/bpf.h b/lib/bpf.h
new file mode 100644
index 00000000..db80a51e
--- /dev/null
+++ b/lib/bpf.h
@@ -0,0 +1,82 @@
+/* Minimal extended BPF constants as alternative for linux/bpf.h. */
+
+#ifndef _ELFUTILS_BPF_H
+#define _ELFUTILS_BPF_H 1
+
+#include <stdint.h>
+
+#define BPF_CLASS(code) ((code) & 0x07)
+
+#define BPF_LD 0x00
+#define BPF_LDX 0x01
+#define BPF_ST 0x02
+#define BPF_STX 0x03
+#define BPF_ALU 0x04
+#define BPF_JMP 0x05
+#define BPF_RET 0x06
+#define BPF_MISC 0x07
+
+#define BPF_ALU64 0x07
+
+#define BPF_JNE 0x50
+#define BPF_JSGT 0x60
+#define BPF_JSGE 0x70
+#define BPF_CALL 0x80
+#define BPF_EXIT 0x90
+
+#define BPF_W 0x00
+#define BPF_H 0x08
+#define BPF_B 0x10
+
+#define BPF_IMM 0x00
+#define BPF_ABS 0x20
+#define BPF_IND 0x40
+#define BPF_MEM 0x60
+#define BPF_LEN 0x80
+#define BPF_MSH 0xa0
+
+#define BPF_DW 0x18
+#define BPF_XADD 0xc0
+
+#define BPF_ADD 0x00
+#define BPF_SUB 0x10
+#define BPF_MUL 0x20
+#define BPF_DIV 0x30
+#define BPF_OR 0x40
+#define BPF_AND 0x50
+#define BPF_LSH 0x60
+#define BPF_RSH 0x70
+#define BPF_NEG 0x80
+#define BPF_MOD 0x90
+#define BPF_XOR 0xa0
+
+#define BPF_MOV 0xb0
+#define BPF_ARSH 0xc0
+
+#define BPF_JA 0x00
+#define BPF_JEQ 0x10
+#define BPF_JGT 0x20
+#define BPF_JGE 0x30
+#define BPF_JSET 0x40
+
+#define BPF_K 0x00
+#define BPF_X 0x08
+
+#define BPF_END 0xd0
+#define BPF_TO_LE 0x00
+#define BPF_TO_BE 0x08
+
+#define BPF_PSEUDO_MAP_FD 1
+
+#define MAX_BPF_REG 10
+
+struct bpf_insn
+{
+ uint8_t code;
+ uint8_t dst_reg:4;
+ uint8_t src_reg:4;
+ int16_t off;
+ int32_t imm;
+};
+
+#endif
diff --git a/libasm/ChangeLog b/libasm/ChangeLog
index d2bc4086..262d2a92 100644
--- a/libasm/ChangeLog
+++ b/libasm/ChangeLog
@@ -1,3 +1,14 @@
+2017-02-17 Ulf Hermann <ulf.hermann@qt.io>
+
+ * Makefile.am: Add libasm_so_DEPS to specify external libraries
+ that have to be linked in, and libasm_so_LIBS to specify the
+ archives libasm consists of. The dependencies include libeu.a.
+ (libasm_so_LDLIBS): Add $(libasm_so_DEPS).
+ (libasm_so$(EXEEXT): Use $(libasm_so_LIBS),
+ add --no-undefined,-z,defs,-z,relro,
+ drop the manual enumeration of dependencies,
+ specify the correct path for libasm.map.
+
2017-04-27 Ulf Hermann <ulf.hermann@qt.io>
* asm_end.c (binary_end): Fix nesting of braces.
diff --git a/libasm/Makefile.am b/libasm/Makefile.am
index b15ee558..0e101504 100644
--- a/libasm/Makefile.am
+++ b/libasm/Makefile.am
@@ -56,17 +56,19 @@ libasm_a_SOURCES = asm_begin.c asm_abort.c asm_end.c asm_error.c \
libasm_pic_a_SOURCES =
am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os)
-libasm_so_LDLIBS =
+libasm_so_DEPS = ../lib/libeu.a ../libebl/libebl.a ../libelf/libelf.so ../libdw/libdw.so
+libasm_so_LDLIBS = $(libasm_so_DEPS)
if USE_LOCKS
libasm_so_LDLIBS += -lpthread
endif
+libasm_so_LIBS = libasm_pic.a
libasm_so_SOURCES =
-libasm.so$(EXEEXT): libasm_pic.a libasm.map
- $(AM_V_CCLD)$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
- -Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \
- -Wl,--soname,$@.$(VERSION) \
- ../libebl/libebl.a ../libelf/libelf.so ../libdw/libdw.so \
+libasm.so$(EXEEXT): $(srcdir)/libasm.map $(libasm_so_LIBS) $(libasm_so_DEPS)
+ $(AM_V_CCLD)$(LINK) -shared -o $@ \
+ -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \
+ -Wl,--version-script,$<,--no-undefined \
+ -Wl,--whole-archive $(libasm_so_LIBS) -Wl,--no-whole-archive \
$(libasm_so_LDLIBS)
@$(textrel_check)
$(AM_V_at)ln -fs $@ $@.$(VERSION)
diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog
index 22bec9b3..28b220fc 100644
--- a/libcpu/ChangeLog
+++ b/libcpu/ChangeLog
@@ -1,3 +1,9 @@
+2017-07-18 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am: Don't check HAVE_LINUX_BPF_H, just define libcpu_bpf.
+ * bpf_disasm.c: Include bpf.h instead of linux/bpf.h. Don't define
+ BPF_PSEUDO_MAP_FD.
+
2017-04-20 Ulf Hermann <ulf.hermann@qt.io>
* Makefile.am: Add EXEEXT to gendis.
diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am
index 33c30a90..d16ba69b 100644
--- a/libcpu/Makefile.am
+++ b/libcpu/Makefile.am
@@ -47,13 +47,11 @@ i386_gendis_SOURCES = i386_gendis.c i386_lex.l i386_parse.y
i386_disasm.o: i386.mnemonics $(srcdir)/i386_dis.h
x86_64_disasm.o: x86_64.mnemonics $(srcdir)/x86_64_dis.h
-if HAVE_LINUX_BPF_H
noinst_LIBRARIES += libcpu_bpf.a
libcpu_bpf_a_SOURCES = bpf_disasm.c
libcpu_bpf_a_CFLAGS = $(AM_CFLAGS) -Wno-format-nonliteral
libcpu_static_pic_a_SOURCES += $(libcpu_bpf_a_SOURCES)
bpf_disasm_CFLAGS = -fPIC -Wno-format-nonliteral
-endif
%_defs: $(srcdir)/defs/i386
$(AM_V_GEN)m4 -D$* -DDISASSEMBLER $< > $@T
diff --git a/libcpu/bpf_disasm.c b/libcpu/bpf_disasm.c
index e4bbae4a..054aba2b 100644
--- a/libcpu/bpf_disasm.c
+++ b/libcpu/bpf_disasm.c
@@ -35,16 +35,11 @@
#include <stdio.h>
#include <gelf.h>
#include <inttypes.h>
-#include <linux/bpf.h>
+#include "bpf.h"
#include "../libelf/common.h"
#include "../libebl/libeblP.h"
-/* BPF_PSEUDO_MAP_FD was only introduced in linux 3.20. */
-#ifndef BPF_PSEUDO_MAP_FD
- #define BPF_PSEUDO_MAP_FD 1
-#endif
-
static const char class_string[8][8] = {
[BPF_LD] = "ld",
[BPF_LDX] = "ldx",
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 1e282e4e..6533eb50 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,80 @@
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * dwarf.h: Add DW_MACRO_* and compat defines for DW_MACRO_GNU_*.
+ * dwarf_getmacros.c (get_table_for_offset): Accept either version
+ 4 or 5. Use DW_MACRO names instead of DW_MACRO_GNU names.
+ (read_macros): Use table version for fake_cu.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_immutable_type,
+ DW_TAG_packed_type and DW_TAG_shared_type.
+ * libdw.h (dwarf_peel_type): Extend documentation.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * dwarf.h: Add DW_DEFAULTED_no, DW_DEFAULTED_in_class and
+ DW_DEFAULTED_out_of_class.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * dwarf.h: Add DW_CC_pass_by_reference and DW_CC_pass_by_reference.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_default_lower_bound.c: New file.
+ * Makefile.am (libdw_a_SOURCES): Add dwarf_default_lower_bound.c.
+ * dwarf_aggregate_size.c (array_size): Use dwarf_default_lower_bound.
+ * dwarf_error.c (errmsgs): Add DWARF_E_UNKNOWN_LANGUAGE.
+ * libdw.h: Add dwarf_default_lower_bound.
+ * libdw.map (ELFUTILS_0.170): Add dwarf_default_lower_bound.
+ * libdwP.h: Add DWARF_E_UNKNOWN_LANGUAGE and
+ dwarf_default_lower_bound INTDECL.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * dwarf.h: Add DW_LANG_OpenCL, DW_LANG_Modula3,
+ DW_LANG_C_plus_plus_03, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift,
+ DW_LANG_Julia, DW_LANG_Dylan, DW_LANG_RenderScript, DW_LANG_BLISS.
+ * dwarf_aggregate_size.c (array_size): Add lower bound for
+ DW_LANG_C_plus_plus_03, DW_LANG_Python, DW_LANG_OpenCL,
+ DW_LANG_Haskell, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift,
+ DW_LANG_Dylan, DW_LANG_RenderScript, DW_LANG_Modula3,
+ DW_LANG_Julia and DW_LANG_BLISS.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * dwarf.h: Add DW_ATE_UCS and DW_ATE_ASCII.
+
+2017-07-25 Mark Wielaard <mark@klomp.org>
+
+ * dwarf.h: Add DW_TAG_coarray_type, DW_TAG_generic_subrange,
+ DW_TAG_dynamic_type, DW_TAG_call_site, DW_TAG_call_site_parameter,
+ DW_TAG_skeleton_unit, DW_TAG_immutable_type. Add reserved comments
+ for currently unused numbers.
+
+2017-07-25 Mark Wielaard <mark@klomp.org>
+
+ * dwarf.h (DWARF attributes enum): Remove DW_AT_subscr_data,
+ DW_AT_element_list and DW_AT_member. Add DWARF5 attribute constants.
+ (DW_AT_subscr_data, DW_AT_element_list, DW_AT_member): New defines.
+
+2017-07-21 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_line_file.c: New file.
+ * Makefile.am (libdw_a_SOURCES): Add dwarf_line_file.c.
+ * libdw.h (dwarf_line_file): New function declaration.
+ * libdw.map (ELFUTILS_0.170): New. Add dwarf_line_file.
+
+2017-02-17 Ulf Hermann <ulf.hermann@qt.io>
+
+ * Makefile.am: Add libdw_so_LIBS to specify the archives libdw is is
+ made of, libdw_so_DEPS for libraries it depends on (including
+ libeu.a), libdw_so_LDLIBS to specify libraries libdw links against.
+ (libdw.so$(EXEEXT)): Add $(libdw_so_LDLIBS), remove enumeration of
+ library dependencies, use libdw_so_LIBS rather than relying on the
+ order of dependencies specified, add -z,relro.
+
2017-04-20 Ulf Hermann <ulf.hermann@qt.io>
* libdw.h: Remove attribute macro declarations and use
diff --git a/libdw/Makefile.am b/libdw/Makefile.am
index 4cb36716..b3e781d8 100644
--- a/libdw/Makefile.am
+++ b/libdw/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to create Makefile.in
##
-## Copyright (C) 2002-2010, 2012, 2014 Red Hat, Inc.
+## Copyright (C) 2002-2010, 2012, 2014, 2016 Red Hat, Inc.
## This file is part of elfutils.
##
## This file is free software; you can redistribute it and/or modify
@@ -66,7 +66,7 @@ libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \
dwarf_lineendsequence.c dwarf_lineblock.c \
dwarf_lineprologueend.c dwarf_lineepiloguebegin.c \
dwarf_lineisa.c dwarf_linediscriminator.c \
- dwarf_lineop_index.c \
+ dwarf_lineop_index.c dwarf_line_file.c \
dwarf_onesrcline.c dwarf_formblock.c \
dwarf_getsrcfiles.c dwarf_filesrc.c dwarf_getsrcdirs.c \
dwarf_getlocation.c dwarf_getstring.c dwarf_offabbrev.c \
@@ -90,7 +90,7 @@ libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \
dwarf_aggregate_size.c dwarf_getlocation_implicit_pointer.c \
dwarf_getlocation_die.c dwarf_getlocation_attr.c \
dwarf_getalt.c dwarf_setalt.c dwarf_cu_getdwarf.c \
- dwarf_cu_die.c dwarf_peel_type.c
+ dwarf_cu_die.c dwarf_peel_type.c dwarf_default_lower_bound.c
# Minimal library with symbols needed by those libebl backends that we
# ship statically. This is so that e.g. strip doesn't end up bringing
@@ -104,7 +104,8 @@ libdw_static_pic_a_SOURCES = libdw_form.c dwarf_child.c dwarf_attr.c \
dwarf_hasattr_integrate.c dwarf_hasattr.c \
dwarf_aggregate_size.c dwarf_siblingof.c dwarf_formsdata.c \
dwarf_srclang.c dwarf_formflag.c dwarf_diecu.c \
- dwarf_bytesize.c dwarf_bitsize.c dwarf_peel_type.c
+ dwarf_bytesize.c dwarf_bitsize.c dwarf_peel_type.c \
+ dwarf_default_lower_bound.c
if MAINTAINER_MODE
BUILT_SOURCES = $(srcdir)/known-dwarf.h
@@ -118,19 +119,22 @@ libdw_pic_a_SOURCES =
am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
am_libdw_static_pic_a_OBJECTS = $(libdw_static_pic_a_SOURCES:.c=.os)
-libdw_so_SOURCES =
-libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \
+libdw_so_LIBS = libdw_pic.a ../libdwelf/libdwelf_pic.a \
../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
../backends/libebl_static_pic.a \
- ../libcpu/libcpu_static_pic.a \
- ../libelf/libelf.so
+ ../libcpu/libcpu_static_pic.a
+libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so
+libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS)
+libdw_so_SOURCES =
+libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
# The rpath is necessary for libebl because its $ORIGIN use will
# not fly in a setuid executable that links in libdw.
- $(AM_V_CCLD)$(LINK) -shared -o $@ -Wl,--soname,$@.$(VERSION),-z,defs \
+ $(AM_V_CCLD)$(LINK) -shared -o $@ \
+ -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \
-Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
-Wl,--version-script,$<,--no-undefined \
- -Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
- -ldl -lz $(argp_LDADD) $(zip_LIBS)
+ -Wl,--whole-archive $(libdw_so_LIBS) -Wl,--no-whole-archive \
+ $(libdw_so_LDLIBS)
@$(textrel_check)
$(AM_V_at)ln -fs $@ $@.$(VERSION)
diff --git a/libdw/dwarf.h b/libdw/dwarf.h
index 169b53e5..902d2617 100644
--- a/libdw/dwarf.h
+++ b/libdw/dwarf.h
@@ -1,5 +1,5 @@
/* This file defines standard DWARF types, structures, and macros.
- Copyright (C) 2000-2011, 2014, 2016 Red Hat, Inc.
+ Copyright (C) 2000-2011, 2014, 2016, 2017 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -37,15 +37,21 @@ enum
DW_TAG_entry_point = 0x03,
DW_TAG_enumeration_type = 0x04,
DW_TAG_formal_parameter = 0x05,
+ /* 0x06 reserved. */
+ /* 0x07 reserved. */
DW_TAG_imported_declaration = 0x08,
+ /* 0x09 reserved. */
DW_TAG_label = 0x0a,
DW_TAG_lexical_block = 0x0b,
+ /* 0x0c reserved. */
DW_TAG_member = 0x0d,
+ /* 0x0e reserved. */
DW_TAG_pointer_type = 0x0f,
DW_TAG_reference_type = 0x10,
DW_TAG_compile_unit = 0x11,
DW_TAG_string_type = 0x12,
DW_TAG_structure_type = 0x13,
+ /* 0x14 reserved. */
DW_TAG_subroutine_type = 0x15,
DW_TAG_typedef = 0x16,
DW_TAG_union_type = 0x17,
@@ -87,15 +93,20 @@ enum
DW_TAG_unspecified_type = 0x3b,
DW_TAG_partial_unit = 0x3c,
DW_TAG_imported_unit = 0x3d,
- /* 0x3e reserved. */
+ /* 0x3e reserved. Was DW_TAG_mutable_type. */
DW_TAG_condition = 0x3f,
DW_TAG_shared_type = 0x40,
DW_TAG_type_unit = 0x41,
DW_TAG_rvalue_reference_type = 0x42,
DW_TAG_template_alias = 0x43,
-
- /* DWARF 5. */
+ DW_TAG_coarray_type = 0x44,
+ DW_TAG_generic_subrange = 0x45,
+ DW_TAG_dynamic_type = 0x46,
DW_TAG_atomic_type = 0x47,
+ DW_TAG_call_site = 0x48,
+ DW_TAG_call_site_parameter = 0x49,
+ DW_TAG_skeleton_unit = 0x4a,
+ DW_TAG_immutable_type = 0x4b,
DW_TAG_lo_user = 0x4080,
@@ -131,17 +142,23 @@ enum
DW_AT_sibling = 0x01,
DW_AT_location = 0x02,
DW_AT_name = 0x03,
+ /* 0x04 reserved. */
+ /* 0x05 reserved. */
+ /* 0x06 reserved. */
+ /* 0x07 reserved. */
+ /* 0x08 reserved. */
DW_AT_ordering = 0x09,
- DW_AT_subscr_data = 0x0a,
+ /* 0x0a reserved. */
DW_AT_byte_size = 0x0b,
- DW_AT_bit_offset = 0x0c,
+ DW_AT_bit_offset = 0x0c, /* Deprecated in DWARF4. */
DW_AT_bit_size = 0x0d,
- DW_AT_element_list = 0x0f,
+ /* 0x0e reserved. */
+ /* 0x0f reserved. */
DW_AT_stmt_list = 0x10,
DW_AT_low_pc = 0x11,
DW_AT_high_pc = 0x12,
DW_AT_language = 0x13,
- DW_AT_member = 0x14,
+ /* 0x14 reserved. */
DW_AT_discr = 0x15,
DW_AT_discr_value = 0x16,
DW_AT_visibility = 0x17,
@@ -152,15 +169,24 @@ enum
DW_AT_const_value = 0x1c,
DW_AT_containing_type = 0x1d,
DW_AT_default_value = 0x1e,
+ /* 0x1f reserved. */
DW_AT_inline = 0x20,
DW_AT_is_optional = 0x21,
DW_AT_lower_bound = 0x22,
+ /* 0x23 reserved. */
+ /* 0x24 reserved. */
DW_AT_producer = 0x25,
+ /* 0x26 reserved. */
DW_AT_prototyped = 0x27,
+ /* 0x28 reserved. */
+ /* 0x29 reserved. */
DW_AT_return_addr = 0x2a,
+ /* 0x2b reserved. */
DW_AT_start_scope = 0x2c,
+ /* 0x2d reserved. */
DW_AT_bit_stride = 0x2e,
DW_AT_upper_bound = 0x2f,
+ /* 0x30 reserved. */
DW_AT_abstract_origin = 0x31,
DW_AT_accessibility = 0x32,
DW_AT_address_class = 0x33,
@@ -179,7 +205,7 @@ enum
DW_AT_frame_base = 0x40,
DW_AT_friend = 0x41,
DW_AT_identifier_case = 0x42,
- DW_AT_macro_info = 0x43,
+ DW_AT_macro_info = 0x43, /* Deprecated in DWARF5. */
DW_AT_namelist_item = 0x44,
DW_AT_priority = 0x45,
DW_AT_segment = 0x46,
@@ -223,9 +249,36 @@ enum
DW_AT_const_expr = 0x6c,
DW_AT_enum_class = 0x6d,
DW_AT_linkage_name = 0x6e,
-
- /* DWARF5 attribute values. */
+ DW_AT_string_length_bit_size = 0x6f,
+ DW_AT_string_length_byte_size = 0x70,
+ DW_AT_rank = 0x71,
+ DW_AT_str_offsets_base = 0x72,
+ DW_AT_addr_base = 0x73,
+ DW_AT_rnglists_base = 0x74,
+ /* 0x75 reserved. */
+ DW_AT_dwo_name = 0x76,
+ DW_AT_reference = 0x77,
+ DW_AT_rvalue_reference = 0x78,
+ DW_AT_macros = 0x79,
+ DW_AT_call_all_calls = 0x7a,
+ DW_AT_call_all_source_calls = 0x7b,
+ DW_AT_call_all_tail_calls = 0x7c,
+ DW_AT_call_return_pc = 0x7d,
+ DW_AT_call_value = 0x7e,
+ DW_AT_call_origin = 0x7f,
+ DW_AT_call_parameter = 0x80,
+ DW_AT_call_pc = 0x81,
+ DW_AT_call_tail_call = 0x82,
+ DW_AT_call_target = 0x83,
+ DW_AT_call_target_clobbered = 0x84,
+ DW_AT_call_data_location = 0x85,
+ DW_AT_call_data_value = 0x86,
DW_AT_noreturn = 0x87,
+ DW_AT_alignment = 0x88,
+ DW_AT_export_symbols = 0x89,
+ DW_AT_deleted = 0x8a,
+ DW_AT_defaulted = 0x8b,
+ DW_AT_loclists_base = 0x8c,
DW_AT_lo_user = 0x2000,
@@ -278,6 +331,15 @@ enum
DW_AT_hi_user = 0x3fff
};
+/* Old unofficially attribute names. Should not be used.
+ Will not appear in known-dwarf.h */
+
+/* DWARF1 array subscripts and element data types. */
+#define DW_AT_subscr_data 0x0a
+/* DWARF1 enumeration literals. */
+#define DW_AT_element_list 0x0f
+/* DWARF1 reference for variable to member structure, class or union. */
+#define DW_AT_member 0x14
/* DWARF form encodings. */
enum
@@ -509,6 +571,8 @@ enum
DW_ATE_unsigned_fixed = 0xe,
DW_ATE_decimal_float = 0xf,
DW_ATE_UTF = 0x10,
+ DW_ATE_UCS = 0x11,
+ DW_ATE_ASCII = 0x12,
DW_ATE_lo_user = 0x80,
DW_ATE_hi_user = 0xff
@@ -588,14 +652,23 @@ enum
DW_LANG_UPC = 0x0012, /* Unified Parallel C */
DW_LANG_D = 0x0013, /* D */
DW_LANG_Python = 0x0014, /* Python */
+ DW_LANG_OpenCL = 0x0015, /* OpenCL */
DW_LANG_Go = 0x0016, /* Go */
+ DW_LANG_Modula3 = 0x0017, /* Modula-3 */
DW_LANG_Haskell = 0x0018, /* Haskell */
+ DW_LANG_C_plus_plus_03 = 0x0019, /* ISO C++:2003 */
DW_LANG_C_plus_plus_11 = 0x001a, /* ISO C++:2011 */
+ DW_LANG_OCaml = 0x001b, /* OCaml */
+ DW_LANG_Rust = 0x001c, /* Rust */
DW_LANG_C11 = 0x001d, /* ISO C:2011 */
+ DW_LANG_Swift = 0x001e, /* Swift */
+ DW_LANG_Julia = 0x001f, /* Julia */
+ DW_LANG_Dylan = 0x0020, /* Dylan */
DW_LANG_C_plus_plus_14 = 0x0021, /* ISO C++:2014 */
DW_LANG_Fortran03 = 0x0022, /* ISO/IEC 1539-1:2004 */
DW_LANG_Fortran08 = 0x0023, /* ISO/IEC 1539-1:2010 */
-
+ DW_LANG_RenderScript = 0x0024, /* RenderScript Kernal Language */
+ DW_LANG_BLISS = 0x0025, /* BLISS */
DW_LANG_lo_user = 0x8000,
DW_LANG_Mips_Assembler = 0x8001, /* Assembler */
@@ -615,12 +688,17 @@ enum
};
-/* DWARF calling conventions encodings. */
+/* DWARF calling conventions encodings.
+ Used as values of DW_AT_calling_convention for subroutines
+ (normal, program or nocall) or structures, unions and class types
+ (normal, reference or value). */
enum
{
DW_CC_normal = 0x1,
DW_CC_program = 0x2,
DW_CC_nocall = 0x3,
+ DW_CC_pass_by_reference = 0x4,
+ DW_CC_pass_by_value = 0x5,
DW_CC_lo_user = 0x40,
DW_CC_hi_user = 0xff
};
@@ -651,6 +729,14 @@ enum
DW_DSC_range = 1
};
+/* DWARF defaulted member function encodings. */
+enum
+ {
+ DW_DEFAULTED_no = 0,
+ DW_DEFAULTED_in_class = 1,
+ DW_DEFAULTED_out_of_class = 2
+ };
+
/* DWARF standard opcode encodings. */
enum
@@ -694,20 +780,38 @@ enum
};
-/* DWARF debug_macro type encodings. GNU/DWARF5 extension. */
+/* DWARF debug_macro type encodings. */
enum
{
- DW_MACRO_GNU_define = 0x01,
- DW_MACRO_GNU_undef = 0x02,
- DW_MACRO_GNU_start_file = 0x03,
- DW_MACRO_GNU_end_file = 0x04,
- DW_MACRO_GNU_define_indirect = 0x05,
- DW_MACRO_GNU_undef_indirect = 0x06,
- DW_MACRO_GNU_transparent_include = 0x07,
- DW_MACRO_GNU_lo_user = 0xe0,
- DW_MACRO_GNU_hi_user = 0xff
+ DW_MACRO_define = 0x01,
+ DW_MACRO_undef = 0x02,
+ DW_MACRO_start_file = 0x03,
+ DW_MACRO_end_file = 0x04,
+ DW_MACRO_define_strp = 0x05,
+ DW_MACRO_undef_strp = 0x06,
+ DW_MACRO_import = 0x07,
+ DW_MACRO_define_sup = 0x08,
+ DW_MACRO_undef_sup = 0x09,
+ DW_MACRO_import_sup = 0x0a,
+ DW_MACRO_define_strx = 0x0b,
+ DW_MACRO_undef_strx = 0x0c,
+ DW_MACRO_lo_user = 0xe0,
+ DW_MACRO_hi_user = 0xff
};
+/* Old GNU extension names for DWARF5 debug_macro type encodings.
+ There are no equivalents for the supplementary object file (sup)
+ and indirect string references (strx). */
+#define DW_MACRO_GNU_define DW_MACRO_define
+#define DW_MACRO_GNU_undef DW_MACRO_undef
+#define DW_MACRO_GNU_start_file DW_MACRO_start_file
+#define DW_MACRO_GNU_end_file DW_MACRO_end_file
+#define DW_MACRO_GNU_define_indirect DW_MACRO_define_strp
+#define DW_MACRO_GNU_undef_indirect DW_MACRO_undef_strp
+#define DW_MACRO_GNU_transparent_include DW_MACRO_import
+#define DW_MACRO_GNU_lo_user DW_MACRO_lo_user
+#define DW_MACRO_GNU_hi_user DW_MACRO_hi_user
+
/* DWARF call frame instruction encodings. */
enum
diff --git a/libdw/dwarf_aggregate_size.c b/libdw/dwarf_aggregate_size.c
index 52ef0067..838468dd 100644
--- a/libdw/dwarf_aggregate_size.c
+++ b/libdw/dwarf_aggregate_size.c
@@ -95,45 +95,11 @@ array_size (Dwarf_Die *die, Dwarf_Word *size,
}
else
{
- /* Determine default lower bound from language,
- as per "4.12 Subrange Type Entries". */
Dwarf_Die cu = CUDIE (die->cu);
- switch (INTUSE(dwarf_srclang) (&cu))
- {
- case DW_LANG_C:
- case DW_LANG_C89:
- case DW_LANG_C99:
- case DW_LANG_C11:
- case DW_LANG_C_plus_plus:
- case DW_LANG_C_plus_plus_11:
- case DW_LANG_C_plus_plus_14:
- case DW_LANG_ObjC:
- case DW_LANG_ObjC_plus_plus:
- case DW_LANG_Java:
- case DW_LANG_D:
- case DW_LANG_UPC:
- case DW_LANG_Go:
- lower = 0;
- break;
-
- case DW_LANG_Ada83:
- case DW_LANG_Ada95:
- case DW_LANG_Cobol74:
- case DW_LANG_Cobol85:
- case DW_LANG_Fortran77:
- case DW_LANG_Fortran90:
- case DW_LANG_Fortran95:
- case DW_LANG_Fortran03:
- case DW_LANG_Fortran08:
- case DW_LANG_Pascal83:
- case DW_LANG_Modula2:
- case DW_LANG_PLI:
- lower = 1;
- break;
-
- default:
- return -1;
- }
+ int lang = INTUSE(dwarf_srclang) (&cu);
+ if (lang == -1
+ || INTUSE(dwarf_default_lower_bound) (lang, &lower) != 0)
+ return -1;
}
if (unlikely (lower > upper))
return -1;
diff --git a/libdw/dwarf_default_lower_bound.c b/libdw/dwarf_default_lower_bound.c
new file mode 100644
index 00000000..a33a3433
--- /dev/null
+++ b/libdw/dwarf_default_lower_bound.c
@@ -0,0 +1,91 @@
+/* Get the default subrange lower bound for a given language.
+ Copyright (C) 2016 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of either
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at
+ your option) any later version
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at
+ your option) any later version
+
+ or both in parallel, as here.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <dwarf.h>
+#include "libdwP.h"
+
+/* Determine default lower bound from language, as per the DWARF5
+ "Subrange Type Entries" table. */
+int
+dwarf_default_lower_bound (int lang, Dwarf_Sword *result)
+{
+ switch (lang)
+ {
+ case DW_LANG_C:
+ case DW_LANG_C89:
+ case DW_LANG_C99:
+ case DW_LANG_C11:
+ case DW_LANG_C_plus_plus:
+ case DW_LANG_C_plus_plus_03:
+ case DW_LANG_C_plus_plus_11:
+ case DW_LANG_C_plus_plus_14:
+ case DW_LANG_ObjC:
+ case DW_LANG_ObjC_plus_plus:
+ case DW_LANG_Java:
+ case DW_LANG_D:
+ case DW_LANG_Python:
+ case DW_LANG_UPC:
+ case DW_LANG_OpenCL:
+ case DW_LANG_Go:
+ case DW_LANG_Haskell:
+ case DW_LANG_OCaml:
+ case DW_LANG_Rust:
+ case DW_LANG_Swift:
+ case DW_LANG_Dylan:
+ case DW_LANG_RenderScript:
+ case DW_LANG_BLISS:
+ *result = 0;
+ return 0;
+
+ case DW_LANG_Ada83:
+ case DW_LANG_Ada95:
+ case DW_LANG_Cobol74:
+ case DW_LANG_Cobol85:
+ case DW_LANG_Fortran77:
+ case DW_LANG_Fortran90:
+ case DW_LANG_Fortran95:
+ case DW_LANG_Fortran03:
+ case DW_LANG_Fortran08:
+ case DW_LANG_Pascal83:
+ case DW_LANG_Modula2:
+ case DW_LANG_Modula3:
+ case DW_LANG_PLI:
+ case DW_LANG_Julia:
+ *result = 1;
+ return 0;
+
+ default:
+ __libdw_seterrno (DWARF_E_UNKNOWN_LANGUAGE);
+ return -1;
+ }
+}
+INTDEF (dwarf_default_lower_bound)
diff --git a/libdw/dwarf_error.c b/libdw/dwarf_error.c
index 66fdc81a..939ec047 100644
--- a/libdw/dwarf_error.c
+++ b/libdw/dwarf_error.c
@@ -95,6 +95,7 @@ static const char *errmsgs[] =
[DWARF_E_NO_ALT_DEBUGLINK] = N_("no alternative debug link found"),
[DWARF_E_INVALID_OPCODE] = N_("invalid opcode"),
[DWARF_E_NOT_CUDIE] = N_("not a CU (unit) DIE"),
+ [DWARF_E_UNKNOWN_LANGUAGE] = N_("unknown language code")
};
#define nerrmsgs (sizeof (errmsgs) / sizeof (errmsgs[0]))
diff --git a/libdw/dwarf_getmacros.c b/libdw/dwarf_getmacros.c
index eb505085..db6582b6 100644
--- a/libdw/dwarf_getmacros.c
+++ b/libdw/dwarf_getmacros.c
@@ -158,7 +158,7 @@ get_table_for_offset (Dwarf *dbg, Dwarf_Word macoff,
}
uint16_t version = read_2ubyte_unaligned_inc (dbg, readp);
- if (version != 4)
+ if (version != 4 && version != 5)
{
__libdw_seterrno (DWARF_E_INVALID_VERSION);
return NULL;
@@ -198,15 +198,17 @@ get_table_for_offset (Dwarf *dbg, Dwarf_Word macoff,
Dwarf_Macro_Op_Proto op_protos[255] =
{
- [DW_MACRO_GNU_define - 1] = p_udata_str,
- [DW_MACRO_GNU_undef - 1] = p_udata_str,
- [DW_MACRO_GNU_define_indirect - 1] = p_udata_strp,
- [DW_MACRO_GNU_undef_indirect - 1] = p_udata_strp,
- [DW_MACRO_GNU_start_file - 1] = p_udata_udata,
- [DW_MACRO_GNU_end_file - 1] = p_none,
- [DW_MACRO_GNU_transparent_include - 1] = p_secoffset,
- /* N.B. DW_MACRO_undef_indirectx, DW_MACRO_define_indirectx
- should be added when 130313.1 is supported. */
+ [DW_MACRO_define - 1] = p_udata_str,
+ [DW_MACRO_undef - 1] = p_udata_str,
+ [DW_MACRO_define_strp - 1] = p_udata_strp,
+ [DW_MACRO_undef_strp - 1] = p_udata_strp,
+ [DW_MACRO_start_file - 1] = p_udata_udata,
+ [DW_MACRO_end_file - 1] = p_none,
+ [DW_MACRO_import - 1] = p_secoffset,
+ /* When adding support for DWARF5 supplementary object files and
+ indirect string tables also add support for DW_MACRO_define_sup,
+ DW_MACRO_undef_sup, DW_MACRO_import_sup, DW_MACRO_define_strx
+ and DW_MACRO_undef_strx. */
};
if ((flags & 0x4) != 0)
@@ -354,10 +356,11 @@ read_macros (Dwarf *dbg, int sec_index,
/* A fake CU with bare minimum data to fool dwarf_formX into
doing the right thing with the attributes that we put out.
- We arbitrarily pretend it's version 4. */
+ We pretend it is the same version as the actual table.
+ Version 4 for the old GNU extension, version 5 for DWARF5. */
Dwarf_CU fake_cu = {
.dbg = dbg,
- .version = 4,
+ .version = table->version,
.offset_size = table->is_64bit ? 8 : 4,
.startp = (void *) startp + offset,
.endp = (void *) endp,
diff --git a/libdw/dwarf_line_file.c b/libdw/dwarf_line_file.c
new file mode 100644
index 00000000..e2df642a
--- /dev/null
+++ b/libdw/dwarf_line_file.c
@@ -0,0 +1,52 @@
+/* Find line information for address.
+ Copyright (C) 2017 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of either
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at
+ your option) any later version
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at
+ your option) any later version
+
+ or both in parallel, as here.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "libdwP.h"
+
+
+int
+dwarf_line_file (Dwarf_Line *line, Dwarf_Files **files, size_t *idx)
+{
+ if (line == NULL)
+ return -1;
+
+ if (line->file >= line->files->nfiles)
+ {
+ __libdw_seterrno (DWARF_E_INVALID_DWARF);
+ return -1;
+ }
+
+ *files = line->files;
+ *idx = line->file;
+
+ return 0;
+}
diff --git a/libdw/dwarf_peel_type.c b/libdw/dwarf_peel_type.c
index 97356944..6bbfd424 100644
--- a/libdw/dwarf_peel_type.c
+++ b/libdw/dwarf_peel_type.c
@@ -1,5 +1,5 @@
/* Peel type aliases and qualifier tags from a type DIE.
- Copyright (C) 2014, 2015 Red Hat, Inc.
+ Copyright (C) 2014, 2015, 2016 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -50,7 +50,10 @@ dwarf_peel_type (Dwarf_Die *die, Dwarf_Die *result)
|| tag == DW_TAG_const_type
|| tag == DW_TAG_volatile_type
|| tag == DW_TAG_restrict_type
- || tag == DW_TAG_atomic_type)
+ || tag == DW_TAG_atomic_type
+ || tag == DW_TAG_immutable_type
+ || tag == DW_TAG_packed_type
+ || tag == DW_TAG_shared_type)
{
Dwarf_Attribute attr_mem;
Dwarf_Attribute *attr = INTUSE (dwarf_attr_integrate) (result, DW_AT_type,
diff --git a/libdw/libdw.h b/libdw/libdw.h
index 9ae80ebb..63a38ff9 100644
--- a/libdw/libdw.h
+++ b/libdw/libdw.h
@@ -1,5 +1,5 @@
/* Interfaces for libdw.
- Copyright (C) 2002-2010, 2013, 2014 Red Hat, Inc.
+ Copyright (C) 2002-2010, 2013, 2014, 2016 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -378,8 +378,11 @@ extern int dwarf_child (Dwarf_Die *die, Dwarf_Die *result)
extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result)
__nonnull_attribute__ (2);
-/* For type aliases and qualifier type DIEs follow the DW_AT_type
- attribute (recursively) and return the underlying type Dwarf_Die.
+/* For type aliases and qualifier type DIEs, which don't modify or
+ change the structural layout of the underlying type, follow the
+ DW_AT_type attribute (recursively) and return the underlying type
+ Dwarf_Die.
+
Returns 0 when RESULT contains a Dwarf_Die (possibly equal to the
given DIE) that isn't a type alias or qualifier type. Returns 1
when RESULT contains a type alias or qualifier Dwarf_Die that
@@ -387,13 +390,18 @@ extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result)
attribute). Returns -1 when an error occured.
The current DWARF specification defines one type alias tag
- (DW_TAG_typedef) and three qualifier type tags (DW_TAG_const_type,
- DW_TAG_volatile_type, DW_TAG_restrict_type). DWARF5 defines one
- other qualifier type tag (DW_TAG_atomic_type). A future version of
- this function might peel other alias or qualifier type tags if a
- future DWARF version or GNU extension defines other type aliases or
- qualifier type tags that don't modify or change the structural
- layout of the underlying type. */
+ (DW_TAG_typedef) and seven modifier/qualifier type tags
+ (DW_TAG_const_type, DW_TAG_volatile_type, DW_TAG_restrict_type,
+ DW_TAG_atomic_type, DW_TAG_immutable_type, DW_TAG_packed_type and
+ DW_TAG_shared_type). This function won't peel modifier type
+ tags that change the way the underlying type is accessed such
+ as the pointer or reference type tags (DW_TAG_pointer_type,
+ DW_TAG_reference_type or DW_TAG_rvalue_reference_type).
+
+ A future version of this function might peel other alias or
+ qualifier type tags if a future DWARF version or GNU extension
+ defines other type aliases or qualifier type tags that don't modify,
+ change the structural layout or the way to access the underlying type. */
extern int dwarf_peel_type (Dwarf_Die *die, Dwarf_Die *result)
__nonnull_attribute__ (2);
@@ -640,6 +648,11 @@ extern const char *dwarf_linesrc (Dwarf_Line *line,
extern const char *dwarf_filesrc (Dwarf_Files *file, size_t idx,
Dwarf_Word *mtime, Dwarf_Word *length);
+/* Return the Dwarf_Files and index associated with the given Dwarf_Line. */
+extern int dwarf_line_file (Dwarf_Line *line,
+ Dwarf_Files **files, size_t *idx)
+ __nonnull_attribute__ (2, 3);
+
/* Return the directory list used in the file information extracted.
(*RESULT)[0] is the CU's DW_AT_comp_dir value, and may be null.
(*RESULT)[0..*NDIRS-1] are the compile-time include directory path
@@ -728,6 +741,12 @@ extern int dwarf_getlocation_attr (Dwarf_Attribute *attr,
For DW_TAG_array_type it can apply much more complex rules. */
extern int dwarf_aggregate_size (Dwarf_Die *die, Dwarf_Word *size);
+/* Given a language code, as returned by dwarf_srclan, get the default
+ lower bound for a subrange type without a lower bound attribute.
+ Returns zero on success or -1 on failure when the given language
+ wasn't recognized. */
+extern int dwarf_default_lower_bound (int lang, Dwarf_Sword *result)
+ __nonnull_attribute__ (2);
/* Return scope DIEs containing PC address.
Sets *SCOPES to a malloc'd array of Dwarf_Die structures,
diff --git a/libdw/libdw.map b/libdw/libdw.map
index 83cb1d97..14307056 100644
--- a/libdw/libdw.map
+++ b/libdw/libdw.map
@@ -338,3 +338,9 @@ ELFUTILS_0.167 {
dwelf_strent_str;
dwelf_strtab_free;
} ELFUTILS_0.165;
+
+ELFUTILS_0.170 {
+ global:
+ dwarf_default_lower_bound;
+ dwarf_line_file;
+} ELFUTILS_0.167;
diff --git a/libdw/libdwP.h b/libdw/libdwP.h
index 5d095a7e..6ad322c1 100644
--- a/libdw/libdwP.h
+++ b/libdw/libdwP.h
@@ -1,5 +1,5 @@
/* Internal definitions for libdwarf.
- Copyright (C) 2002-2011, 2013-2015 Red Hat, Inc.
+ Copyright (C) 2002-2011, 2013-2016 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -130,6 +130,7 @@ enum
DWARF_E_NO_ALT_DEBUGLINK,
DWARF_E_INVALID_OPCODE,
DWARF_E_NOT_CUDIE,
+ DWARF_E_UNKNOWN_LANGUAGE,
};
@@ -764,6 +765,7 @@ INTDECL (dwarf_attr_integrate)
INTDECL (dwarf_begin)
INTDECL (dwarf_begin_elf)
INTDECL (dwarf_child)
+INTDECL (dwarf_default_lower_bound)
INTDECL (dwarf_dieoffset)
INTDECL (dwarf_diename)
INTDECL (dwarf_end)
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 9bce6b1e..2008c6a1 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,8 @@
+2017-07-26 Yunlian Jiang <yunlian@google.com>
+
+ * argp-std.c (failure): Move to file scope.
+ (fail): Likewise.
+
2017-04-20 Ulf Hermann <ulf.hermann@qt.io>
Mark Wielaard <mark@klomp.org>
diff --git a/libdwfl/argp-std.c b/libdwfl/argp-std.c
index 347a05b4..498ace21 100644
--- a/libdwfl/argp-std.c
+++ b/libdwfl/argp-std.c
@@ -104,25 +104,28 @@ struct parse_opt
const char *core;
};
+static inline void
+failure (Dwfl *dwfl, int errnum, const char *msg, struct argp_state *state)
+{
+ if (dwfl != NULL)
+ dwfl_end (dwfl);
+ if (errnum == -1)
+ argp_failure (state, EXIT_FAILURE, 0, "%s: %s",
+ msg, INTUSE(dwfl_errmsg) (-1));
+ else
+ argp_failure (state, EXIT_FAILURE, errnum, "%s", msg);
+}
+
+static inline error_t
+fail (Dwfl *dwfl, int errnum, const char *msg, struct argp_state *state)
+{
+ failure (dwfl, errnum, msg, state);
+ return errnum == -1 ? EIO : errnum;
+}
+
static error_t
parse_opt (int key, char *arg, struct argp_state *state)
{
- inline void failure (Dwfl *dwfl, int errnum, const char *msg)
- {
- if (dwfl != NULL)
- dwfl_end (dwfl);
- if (errnum == -1)
- argp_failure (state, EXIT_FAILURE, 0, "%s: %s",
- msg, INTUSE(dwfl_errmsg) (-1));
- else
- argp_failure (state, EXIT_FAILURE, errnum, "%s", msg);
- }
- inline error_t fail (Dwfl *dwfl, int errnum, const char *msg)
- {
- failure (dwfl, errnum, msg);
- return errnum == -1 ? EIO : errnum;
- }
-
switch (key)
{
case ARGP_KEY_INIT:
@@ -130,7 +133,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
assert (state->hook == NULL);
struct parse_opt *opt = calloc (1, sizeof (*opt));
if (opt == NULL)
- failure (NULL, DWFL_E_ERRNO, "calloc");
+ failure (NULL, DWFL_E_ERRNO, "calloc", state);
state->hook = opt;
}
break;
@@ -147,7 +150,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
{
dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
if (dwfl == NULL)
- return fail (dwfl, -1, arg);
+ return fail (dwfl, -1, arg, state);
opt->dwfl = dwfl;
/* Start at zero so if there is just one -e foo.so,
@@ -173,7 +176,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
Dwfl *dwfl = INTUSE(dwfl_begin) (&proc_callbacks);
int result = INTUSE(dwfl_linux_proc_report) (dwfl, atoi (arg));
if (result != 0)
- return fail (dwfl, result, arg);
+ return fail (dwfl, result, arg, state);
/* Non-fatal to not be able to attach to process, ignore error. */
INTUSE(dwfl_linux_proc_attach) (dwfl, atoi (arg), false);
@@ -202,7 +205,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
int result = INTUSE(dwfl_linux_proc_maps_report) (dwfl, f);
fclose (f);
if (result != 0)
- return fail (dwfl, result, arg);
+ return fail (dwfl, result, arg, state);
opt->dwfl = dwfl;
}
else
@@ -231,11 +234,11 @@ parse_opt (int key, char *arg, struct argp_state *state)
Dwfl *dwfl = INTUSE(dwfl_begin) (&kernel_callbacks);
int result = INTUSE(dwfl_linux_kernel_report_kernel) (dwfl);
if (result != 0)
- return fail (dwfl, result, _("cannot load kernel symbols"));
+ return fail (dwfl, result, _("cannot load kernel symbols"), state);
result = INTUSE(dwfl_linux_kernel_report_modules) (dwfl);
if (result != 0)
/* Non-fatal to have no modules since we do have the kernel. */
- failure (dwfl, result, _("cannot find kernel modules"));
+ failure (dwfl, result, _("cannot find kernel modules"), state);
opt->dwfl = dwfl;
}
else
@@ -252,7 +255,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
int result = INTUSE(dwfl_linux_kernel_report_offline) (dwfl, arg,
NULL);
if (result != 0)
- return fail (dwfl, result, _("cannot find kernel or modules"));
+ return fail (dwfl, result, _("cannot find kernel or modules"), state);
opt->dwfl = dwfl;
}
else
@@ -271,7 +274,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
arg = "a.out";
dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
if (INTUSE(dwfl_report_offline) (dwfl, "", arg, -1) == NULL)
- return fail (dwfl, -1, arg);
+ return fail (dwfl, -1, arg, state);
opt->dwfl = dwfl;
}
@@ -301,7 +304,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
{
elf_end (core);
close (fd);
- return fail (dwfl, result, opt->core);
+ return fail (dwfl, result, opt->core, state);
}
/* Non-fatal to not be able to attach to core, ignore error. */
@@ -331,7 +334,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
else if (opt->e)
{
if (INTUSE(dwfl_report_offline) (dwfl, "", opt->e, -1) == NULL)
- return fail (dwfl, -1, opt->e);
+ return fail (dwfl, -1, opt->e, state);
}
/* One of the three flavors has done dwfl_begin and some reporting
diff --git a/libebl/ChangeLog b/libebl/ChangeLog
index 506915ba..334bf224 100644
--- a/libebl/ChangeLog
+++ b/libebl/ChangeLog
@@ -1,3 +1,16 @@
+2017-07-19 Gustavo Romero <gromero@linux.vnet.ibm.com>
+
+ * eblcorenotetypename.c: Add ppc64 HTM SPRs note as known type.
+
+2017-07-20 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (gen_SOURCES): Add ebl_data_marker_symbol.c.
+ * ebl-hooks.h (data_marker_symbol): New hook.
+ * ebl_data_marker_symbol.c: New file.
+ * eblopenbackend.c (default_data_marker_symbol): New function.
+ (fill_defaults): Add default_data_marker_symbol.
+ * libebl.h (ebl_data_marker_symbol): New function.
+
2017-04-20 Ulf Hermann <ulf.hermann@qt.io>
* libebl.h: Use __pure_attribute__.
diff --git a/libebl/Makefile.am b/libebl/Makefile.am
index 7034b61c..6d5b07f6 100644
--- a/libebl/Makefile.am
+++ b/libebl/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to create Makefile.in
##
-## Copyright (C) 2000-2010, 2013, 2016 Red Hat, Inc.
+## Copyright (C) 2000-2010, 2013, 2016, 2017 Red Hat, Inc.
## This file is part of elfutils.
##
## This file is free software; you can redistribute it and/or modify
@@ -53,7 +53,8 @@ gen_SOURCES = eblopenbackend.c eblclosebackend.c \
eblsysvhashentrysize.c eblauxvinfo.c eblcheckobjattr.c \
ebl_check_special_section.c ebl_syscall_abi.c eblabicfi.c \
eblstother.c eblinitreg.c ebldwarftoregno.c eblnormalizepc.c \
- eblunwind.c eblresolvesym.c eblcheckreloctargettype.c
+ eblunwind.c eblresolvesym.c eblcheckreloctargettype.c \
+ ebl_data_marker_symbol.c
libebl_a_CFLAGS = -fvisibility=hidden $(AM_CFLAGS)
libebl_a_SOURCES = $(gen_SOURCES)
diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h
index b7253748..f3a0e64a 100644
--- a/libebl/ebl-hooks.h
+++ b/libebl/ebl-hooks.h
@@ -1,5 +1,5 @@
/* Backend hook signatures internal interface for libebl.
- Copyright (C) 2000-2011, 2013, 2014, 2016 Red Hat, Inc.
+ Copyright (C) 2000-2011, 2013, 2014, 2016, 2017 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -121,6 +121,9 @@ bool EBLHOOK(relative_reloc_p) (int);
bool EBLHOOK(check_special_symbol) (Elf *, GElf_Ehdr *, const GElf_Sym *,
const char *, const GElf_Shdr *);
+/* Check if this is a data marker symbol. e.g. '$d' symbols for ARM. */
+bool EBLHOOK(data_marker_symbol) (const GElf_Sym *sym, const char *sname);
+
/* Check whether only valid bits are set on the st_other symbol flag.
Standard ST_VISIBILITY have already been masked off. */
bool EBLHOOK(check_st_other_bits) (unsigned char st_other);
diff --git a/libebl/ebl_data_marker_symbol.c b/libebl/ebl_data_marker_symbol.c
new file mode 100644
index 00000000..922d7203
--- /dev/null
+++ b/libebl/ebl_data_marker_symbol.c
@@ -0,0 +1,44 @@
+/* Check whether a symbol is a special data marker.
+ Copyright (C) 2017 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of either
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at
+ your option) any later version
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at
+ your option) any later version
+
+ or both in parallel, as here.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <inttypes.h>
+#include <libeblP.h>
+
+
+bool
+ebl_data_marker_symbol (Ebl *ebl, const GElf_Sym *sym, const char *sname)
+{
+ if (ebl == NULL)
+ return false;
+
+ return ebl->data_marker_symbol (sym, sname);
+}
diff --git a/libebl/eblcorenotetypename.c b/libebl/eblcorenotetypename.c
index fa81dbec..d3a56fa9 100644
--- a/libebl/eblcorenotetypename.c
+++ b/libebl/eblcorenotetypename.c
@@ -75,6 +75,7 @@ ebl_core_note_type_name (Ebl *ebl, uint32_t type, char *buf, size_t len)
KNOWNSTYPE (PPC_VMX);
KNOWNSTYPE (PPC_SPE);
KNOWNSTYPE (PPC_VSX);
+ KNOWNSTYPE (PPC_TM_SPR);
KNOWNSTYPE (386_TLS);
KNOWNSTYPE (386_IOPERM);
KNOWNSTYPE (X86_XSTATE);
diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
index 8630053e..1728115c 100644
--- a/libebl/eblopenbackend.c
+++ b/libebl/eblopenbackend.c
@@ -1,5 +1,5 @@
/* Generate ELF backend handle.
- Copyright (C) 2000-2016 Red Hat, Inc.
+ Copyright (C) 2000-2017 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -192,6 +192,7 @@ static bool default_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr,
const GElf_Sym *sym,
const char *name,
const GElf_Shdr *destshdr);
+static bool default_data_marker_symbol (const GElf_Sym *sym, const char *sname);
static bool default_check_st_other_bits (unsigned char st_other);
static bool default_check_special_section (Ebl *, int,
const GElf_Shdr *, const char *);
@@ -243,6 +244,7 @@ fill_defaults (Ebl *result)
result->none_reloc_p = default_none_reloc_p;
result->relative_reloc_p = default_relative_reloc_p;
result->check_special_symbol = default_check_special_symbol;
+ result->data_marker_symbol = default_data_marker_symbol;
result->check_st_other_bits = default_check_st_other_bits;
result->bss_plt_p = default_bss_plt_p;
result->return_value_location = default_return_value_location;
@@ -648,6 +650,13 @@ default_check_special_symbol (Elf *elf __attribute__ ((unused)),
}
static bool
+default_data_marker_symbol (const GElf_Sym *sym __attribute__ ((unused)),
+ const char *sname __attribute__ ((unused)))
+{
+ return false;
+}
+
+static bool
default_check_st_other_bits (unsigned char st_other __attribute__ ((unused)))
{
return false;
diff --git a/libebl/libebl.h b/libebl/libebl.h
index 87896e4a..882bdb99 100644
--- a/libebl/libebl.h
+++ b/libebl/libebl.h
@@ -1,5 +1,5 @@
/* Interface for libebl.
- Copyright (C) 2000-2010, 2013, 2014, 2015, 2016 Red Hat, Inc.
+ Copyright (C) 2000-2010, 2013, 2014, 2015, 2016, 2017 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -156,6 +156,10 @@ extern bool ebl_check_special_symbol (Ebl *ebl, GElf_Ehdr *ehdr,
const GElf_Sym *sym, const char *name,
const GElf_Shdr *destshdr);
+/* Check if this is a data marker symbol. e.g. '$d' symbols for ARM. */
+extern bool ebl_data_marker_symbol (Ebl *ebl, const GElf_Sym *sym,
+ const char *sname);
+
/* Check whether only valid bits are set on the st_other symbol flag. */
extern bool ebl_check_st_other_bits (Ebl *ebl, unsigned char st_other);
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index 594bec99..b17e1c5e 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,15 @@
+2017-07-19 Gustavo Romero <gromero@linux.vnet.ibm.com>
+
+ * elf.h: Add known type in notes segment descriptor for HTM SPRs.
+
+2017-02-17 Ulf hermann <ulf.hermann@qt.io>
+
+ * Makefile.am: Add libelf_so_DEPS, which include libeu.a,
+ libelf_so_LIBS.
+ (libelf_so_LDLIBS): Add $(libelf_so_DEPS).
+ (libelf.so$(EXEEXT): Use $(libelf_so_LIBS), require libelf.map
+ from the right directory.
+
2017-04-20 Ulf Hermann <ulf.hermann@qt.io>
* libelfP.h: Don't include config.h.
diff --git a/libelf/Makefile.am b/libelf/Makefile.am
index 0c74e3fa..f873ed0e 100644
--- a/libelf/Makefile.am
+++ b/libelf/Makefile.am
@@ -96,16 +96,20 @@ libelf_a_SOURCES = elf_version.c elf_hash.c elf_error.c elf_fill.c \
libelf_pic_a_SOURCES =
am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
-libelf_so_LDLIBS = -lz
+libelf_so_DEPS = ../lib/libeu.a
+libelf_so_LDLIBS = $(libelf_so_DEPS) -lz
if USE_LOCKS
libelf_so_LDLIBS += -lpthread
endif
+libelf_so_LIBS = libelf_pic.a
libelf_so_SOURCES =
-libelf.so$(EXEEXT): libelf_pic.a libelf.map
- $(AM_V_CCLD)$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
- -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \
- -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro $(libelf_so_LDLIBS)
+libelf.so$(EXEEXT): $(srcdir)/libelf.map $(libelf_so_LIBS) $(libelf_so_DEPS)
+ $(AM_V_CCLD)$(LINK) -shared -o $@ \
+ -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \
+ -Wl,--version-script,$<,--no-undefined \
+ -Wl,--whole-archive $(libelf_so_LIBS) -Wl,--no-whole-archive \
+ $(libelf_so_LDLIBS)
@$(textrel_check)
$(AM_V_at)ln -fs $@ $@.$(VERSION)
diff --git a/libelf/elf.h b/libelf/elf.h
index b6112d9d..fa35203d 100644
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -763,6 +763,7 @@ typedef struct
#define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */
#define NT_PPC_VSX 0x102 /* PowerPC VSX registers */
#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */
+#define NT_PPC_TM_SPR 0x10c /* PowerPC HW Transactional Memory SPRs */
#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */
#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */
#define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */
diff --git a/po/ChangeLog b/po/ChangeLog
index 5e02edf2..465ae165 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2017-08-02 Mark Wielaard <mark@klomp.org>
+
+ * *.po: Update for 0.170.
+
2017-05-05 Mark Wielaard <mark@klomp.org>
* *.po: Update for 0.169.
diff --git a/po/de.po b/po/de.po
index 63c794ed..3b3e042b 100644
--- a/po/de.po
+++ b/po/de.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elfutils VERSION\n"
"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2017-05-05 09:44+0200\n"
+"POT-Creation-Date: 2017-08-02 18:29+0200\n"
"PO-Revision-Date: 2009-06-29 15:15+0200\n"
"Last-Translator: Michael Münch <micm@fedoraproject.org>\n"
"Language-Team: German\n"
@@ -55,7 +55,7 @@ msgstr ""
"auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n"
#: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296
-#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432
+#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432
#, c-format
msgid "memory exhausted"
msgstr "Kein Speicher mehr verfügbar"
@@ -257,6 +257,11 @@ msgstr "ungültiger Operand"
msgid "not a CU (unit) DIE"
msgstr ""
+#: libdw/dwarf_error.c:98
+#, fuzzy
+msgid "unknown language code"
+msgstr "unbekannter Typ"
+
#: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374
msgid "Input selection options:"
msgstr "Eingabeauswahloptionen:"
@@ -291,34 +296,34 @@ msgstr "Kernel mit allen Modulen"
msgid "Search path for separate debuginfo files"
msgstr "Dateisuchpfad für separate Debug-Informationen"
-#: libdwfl/argp-std.c:161
+#: libdwfl/argp-std.c:164
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:234
+#: libdwfl/argp-std.c:237
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:238
+#: libdwfl/argp-std.c:241
msgid "cannot find kernel modules"
msgstr "Konnte Kernel Module nicht finden"
-#: libdwfl/argp-std.c:255
+#: libdwfl/argp-std.c:258
msgid "cannot find kernel or modules"
msgstr "Konnte Kernel oder Module nicht finden"
-#: libdwfl/argp-std.c:294
+#: libdwfl/argp-std.c:297
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "Konnte ELF Kerndatei %s nicht lesen"
-#: libdwfl/argp-std.c:317
+#: libdwfl/argp-std.c:320
#, fuzzy
msgid "Not enough memory"
msgstr "nicht genügend Speicher"
-#: libdwfl/argp-std.c:327
+#: libdwfl/argp-std.c:330
msgid "No modules recognized in core file"
msgstr "Keine Module in der Kerndatei gefunden"
@@ -489,7 +494,7 @@ msgstr "Ungültige ELF Datei"
msgid "No backend"
msgstr "Kein Backend"
-#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76
+#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76
#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
@@ -586,7 +591,7 @@ msgstr "ungültige Grösse des Quell-Operanden"
msgid "invalid size of destination operand"
msgstr "ungültige Grösse des Ziel-Operanden"
-#: libelf/elf_error.c:87 src/readelf.c:5114
+#: libelf/elf_error.c:87 src/readelf.c:5139
#, c-format
msgid "invalid encoding"
msgstr "ungültige Kodierung"
@@ -669,8 +674,8 @@ msgstr "data/scn Unterschied"
msgid "invalid section header"
msgstr "ungültiger Abschnitts-Header"
-#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809
-#: src/readelf.c:7910 src/readelf.c:8091
+#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900
+#: src/readelf.c:8001 src/readelf.c:8182
#, c-format
msgid "invalid data"
msgstr "Ungültige Daten"
@@ -1293,7 +1298,7 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr ""
#: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142
-#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490
+#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555
#: src/unstrip.c:2023 src/unstrip.c:2052
#, c-format
msgid "cannot open '%s'"
@@ -1324,7 +1329,7 @@ msgstr ""
msgid "cannot get relocation: %s"
msgstr ""
-#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr ""
@@ -1375,7 +1380,7 @@ msgstr ""
msgid "Force compression of section even if it would become larger"
msgstr ""
-#: src/elfcompress.c:1282 src/strip.c:88
+#: src/elfcompress.c:1282 src/strip.c:91
msgid "Relax a few rules to handle slightly broken ELF files"
msgstr ""
@@ -3155,7 +3160,7 @@ msgstr ""
#. Strings for arguments in help texts.
#: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81
-#: src/strings.c:88 src/strip.c:96
+#: src/strings.c:88 src/strip.c:99
msgid "[FILE...]"
msgstr ""
@@ -3240,7 +3245,7 @@ msgid ""
"a relocation modifies memory at offset %llu in a write-protected segment\n"
msgstr ""
-#: src/nm.c:67 src/strip.c:68
+#: src/nm.c:67 src/strip.c:70
msgid "Output selection:"
msgstr ""
@@ -3307,7 +3312,7 @@ msgstr "Kennzeichne schwache Symbole"
msgid "Print size of defined symbols"
msgstr "Zeige Grösse der definierten Symbole"
-#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73
+#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73
msgid "Output options:"
msgstr "Ausgabeoptionen:"
@@ -3337,18 +3342,18 @@ msgstr ""
msgid "Output formatting"
msgstr "Ausgabeformat:"
-#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128
+#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131
#, fuzzy, c-format
msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: INTERNER FEHLER %d (%s-%s): %s"
#: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309
-#: src/strip.c:2299
+#: src/strip.c:2421
#, c-format
msgid "while closing '%s'"
msgstr "beim Schliessen von '%s'"
-#: src/nm.c:404 src/objdump.c:281 src/strip.c:378
+#: src/nm.c:404 src/objdump.c:281 src/strip.c:443
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: Dateiformat nicht erkannt"
@@ -3392,9 +3397,9 @@ msgstr "Kann Suchbaum nicht erstellen"
#: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664
#: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314
#: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315
-#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439
-#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466
-#: src/strip.c:507
+#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530
+#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466
+#: src/strip.c:572
#, c-format
msgid "cannot get section header string table index"
msgstr ""
@@ -3670,7 +3675,7 @@ msgstr ""
msgid "cannot generate Elf descriptor: %s"
msgstr "konnte Elf-Deskriptor nicht erzeugen: %s"
-#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576
+#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641
#, c-format
msgid "cannot determine number of sections: %s"
msgstr ""
@@ -3680,7 +3685,7 @@ msgstr ""
msgid "cannot get section: %s"
msgstr ""
-#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662
+#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753
#: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565
#: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109
#: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650
@@ -3694,8 +3699,8 @@ msgstr ""
msgid "cannot get section name"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899
-#: src/readelf.c:8076
+#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990
+#: src/readelf.c:8167
#, c-format
msgid "cannot get %s content: %s"
msgstr ""
@@ -4032,8 +4037,8 @@ msgstr ""
msgid "<INVALID SECTION>"
msgstr ""
-#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533
-#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591
+#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624
+#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682
msgid "Couldn't uncompress section"
msgstr ""
@@ -4043,7 +4048,7 @@ msgid "cannot get section [%zd] header: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
#: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654
-#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734
+#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759
#, fuzzy, c-format
msgid "invalid sh_link value in section %zu"
msgstr "ungültige .debug_line Sektion"
@@ -4446,46 +4451,46 @@ msgstr "%s+%#<PRIx64>"
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:4056
+#: src/readelf.c:4081
msgid "empty block"
msgstr ""
-#: src/readelf.c:4059
+#: src/readelf.c:4084
#, c-format
msgid "%zu byte block:"
msgstr ""
-#: src/readelf.c:4456
+#: src/readelf.c:4481
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr ""
-#: src/readelf.c:4513
+#: src/readelf.c:4538
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr ""
-#: src/readelf.c:4520
+#: src/readelf.c:4545
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr ""
-#: src/readelf.c:4527
+#: src/readelf.c:4552
#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr ""
-#: src/readelf.c:4616
+#: src/readelf.c:4641
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr ""
-#: src/readelf.c:4624
+#: src/readelf.c:4649
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr ""
-#: src/readelf.c:4650
+#: src/readelf.c:4675
#, c-format
msgid ""
"\n"
@@ -4493,37 +4498,37 @@ msgid ""
" [ Code]\n"
msgstr ""
-#: src/readelf.c:4658
+#: src/readelf.c:4683
#, c-format
msgid ""
"\n"
"Abbreviation section at offset %<PRIu64>:\n"
msgstr ""
-#: src/readelf.c:4671
+#: src/readelf.c:4696
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr ""
-#: src/readelf.c:4687
+#: src/readelf.c:4712
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr ""
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745
msgid "yes"
msgstr "ja"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745
msgid "no"
msgstr "nein"
-#: src/readelf.c:4724 src/readelf.c:4797
+#: src/readelf.c:4749 src/readelf.c:4822
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr ""
-#: src/readelf.c:4739
+#: src/readelf.c:4764
#, c-format
msgid ""
"\n"
@@ -4534,195 +4539,195 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:4770
+#: src/readelf.c:4795
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4772
+#: src/readelf.c:4797
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
-#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487
-#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728
+#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515
+#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819
#, c-format
msgid ""
"\n"
"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:4815 src/readelf.c:6513
+#: src/readelf.c:4840 src/readelf.c:6541
#, c-format
msgid ""
"\n"
"Table at offset %zu:\n"
msgstr ""
-#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524
+#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr ""
-#: src/readelf.c:4835
+#: src/readelf.c:4860
#, fuzzy, c-format
msgid ""
"\n"
" Length: %6<PRIu64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:4847
+#: src/readelf.c:4872
#, fuzzy, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:4851
+#: src/readelf.c:4876
#, c-format
msgid "unsupported aranges version"
msgstr ""
-#: src/readelf.c:4862
+#: src/readelf.c:4887
#, fuzzy, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:4868
+#: src/readelf.c:4893
#, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr ""
-#: src/readelf.c:4872
+#: src/readelf.c:4897
#, fuzzy, c-format
msgid "unsupported address size"
msgstr "Kein Adress-Wert"
-#: src/readelf.c:4877
+#: src/readelf.c:4902
#, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
"\n"
msgstr ""
-#: src/readelf.c:4881
+#: src/readelf.c:4906
#, c-format
msgid "unsupported segment size"
msgstr ""
-#: src/readelf.c:4921
+#: src/readelf.c:4946
#, fuzzy, c-format
msgid " %s..%s (%<PRIx64>)\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:4924
+#: src/readelf.c:4949
#, fuzzy, c-format
msgid " %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4933
+#: src/readelf.c:4958
#, c-format
msgid " %zu padding bytes\n"
msgstr ""
-#: src/readelf.c:4951
+#: src/readelf.c:4976
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr ""
-#: src/readelf.c:4981 src/readelf.c:7046
+#: src/readelf.c:5006 src/readelf.c:7074
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:5003 src/readelf.c:7068
+#: src/readelf.c:5028 src/readelf.c:7096
#, c-format
msgid " [%6tx] base address %s\n"
msgstr ""
-#: src/readelf.c:5010 src/readelf.c:7075
+#: src/readelf.c:5035 src/readelf.c:7103
#, fuzzy, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] %s..%s\n"
#. We have an address range entry.
#. First address range entry in a list.
-#: src/readelf.c:5021
+#: src/readelf.c:5046
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:5023
+#: src/readelf.c:5048
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:5259
+#: src/readelf.c:5284
msgid " <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:5512
+#: src/readelf.c:5537
#, fuzzy, c-format
msgid "cannot get ELF: %s"
msgstr "ELF Kopf konnte nicht ausgelesen werden"
-#: src/readelf.c:5529
+#: src/readelf.c:5554
#, c-format
msgid ""
"\n"
"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:5579
+#: src/readelf.c:5604
#, c-format
msgid ""
"\n"
" [%6tx] Zero terminator\n"
msgstr ""
-#: src/readelf.c:5672 src/readelf.c:5827
+#: src/readelf.c:5697 src/readelf.c:5852
#, fuzzy, c-format
msgid "invalid augmentation length"
msgstr "ungültige Abschnittsausrichtung"
-#: src/readelf.c:5687
+#: src/readelf.c:5712
msgid "FDE address encoding: "
msgstr ""
-#: src/readelf.c:5693
+#: src/readelf.c:5718
msgid "LSDA pointer encoding: "
msgstr ""
-#: src/readelf.c:5804
+#: src/readelf.c:5829
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr ""
-#: src/readelf.c:5811
+#: src/readelf.c:5836
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr ""
-#: src/readelf.c:5848
+#: src/readelf.c:5873
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:5903
+#: src/readelf.c:5928
#, c-format
msgid "cannot get attribute code: %s"
msgstr ""
-#: src/readelf.c:5912
+#: src/readelf.c:5937
#, c-format
msgid "cannot get attribute form: %s"
msgstr ""
-#: src/readelf.c:5927
+#: src/readelf.c:5952
#, c-format
msgid "cannot get attribute value: %s"
msgstr ""
-#: src/readelf.c:6226
+#: src/readelf.c:6254
#, c-format
msgid ""
"\n"
@@ -4730,7 +4735,7 @@ msgid ""
" [Offset]\n"
msgstr ""
-#: src/readelf.c:6258
+#: src/readelf.c:6286
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -4739,7 +4744,7 @@ msgid ""
" Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:6267
+#: src/readelf.c:6295
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -4747,32 +4752,32 @@ msgid ""
"%<PRIu8>, Offset size: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:6292
+#: src/readelf.c:6320
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
-#: src/readelf.c:6306
+#: src/readelf.c:6334
#, c-format
msgid "cannot get DIE offset: %s"
msgstr ""
-#: src/readelf.c:6315
+#: src/readelf.c:6343
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
-#: src/readelf.c:6347
+#: src/readelf.c:6375
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr ""
-#: src/readelf.c:6355
+#: src/readelf.c:6383
#, c-format
msgid "cannot get next DIE: %s"
msgstr ""
-#: src/readelf.c:6391
+#: src/readelf.c:6419
#, c-format
msgid ""
"\n"
@@ -4780,13 +4785,13 @@ msgid ""
"\n"
msgstr ""
-#: src/readelf.c:6500
+#: src/readelf.c:6528
#, c-format
msgid "cannot get line data section data: %s"
msgstr ""
#. Print what we got so far.
-#: src/readelf.c:6570
+#: src/readelf.c:6598
#, c-format
msgid ""
"\n"
@@ -4803,148 +4808,148 @@ msgid ""
"Opcodes:\n"
msgstr ""
-#: src/readelf.c:6591
+#: src/readelf.c:6619
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr ""
-#: src/readelf.c:6606
+#: src/readelf.c:6634
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:6614
+#: src/readelf.c:6642
msgid ""
"\n"
"Directory table:"
msgstr ""
-#: src/readelf.c:6630
+#: src/readelf.c:6658
msgid ""
"\n"
"File name table:\n"
" Entry Dir Time Size Name"
msgstr ""
-#: src/readelf.c:6665
+#: src/readelf.c:6693
msgid ""
"\n"
"Line number statements:"
msgstr ""
-#: src/readelf.c:6716
+#: src/readelf.c:6744
#, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr ""
-#: src/readelf.c:6752
+#: src/readelf.c:6780
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:6757
+#: src/readelf.c:6785
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:6777
+#: src/readelf.c:6805
#, c-format
msgid " extended opcode %u: "
msgstr ""
-#: src/readelf.c:6782
+#: src/readelf.c:6810
msgid " end of sequence"
msgstr ""
-#: src/readelf.c:6801
+#: src/readelf.c:6829
#, c-format
msgid " set address to %s\n"
msgstr ""
-#: src/readelf.c:6828
+#: src/readelf.c:6856
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
-#: src/readelf.c:6841
+#: src/readelf.c:6869
#, c-format
msgid " set discriminator to %u\n"
msgstr ""
#. Unknown, ignore it.
-#: src/readelf.c:6846
+#: src/readelf.c:6874
#, fuzzy
msgid " unknown opcode"
msgstr "unbekannter Typ"
#. Takes no argument.
-#: src/readelf.c:6858
+#: src/readelf.c:6886
msgid " copy"
msgstr ""
-#: src/readelf.c:6869
+#: src/readelf.c:6897
#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr ""
-#: src/readelf.c:6873
+#: src/readelf.c:6901
#, c-format
msgid " advance address by %u to %s\n"
msgstr ""
-#: src/readelf.c:6884
+#: src/readelf.c:6912
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr ""
-#: src/readelf.c:6892
+#: src/readelf.c:6920
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr ""
-#: src/readelf.c:6902
+#: src/readelf.c:6930
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr ""
-#: src/readelf.c:6909
+#: src/readelf.c:6937
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr ""
#. Takes no argument.
-#: src/readelf.c:6915
+#: src/readelf.c:6943
msgid " set basic block flag"
msgstr ""
-#: src/readelf.c:6928
+#: src/readelf.c:6956
#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr ""
-#: src/readelf.c:6932
+#: src/readelf.c:6960
#, c-format
msgid " advance address by constant %u to %s\n"
msgstr ""
-#: src/readelf.c:6950
+#: src/readelf.c:6978
#, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr ""
#. Takes no argument.
-#: src/readelf.c:6959
+#: src/readelf.c:6987
msgid " set prologue end flag"
msgstr ""
#. Takes no argument.
-#: src/readelf.c:6964
+#: src/readelf.c:6992
msgid " set epilogue begin flag"
msgstr ""
-#: src/readelf.c:6973
+#: src/readelf.c:7001
#, c-format
msgid " set isa to %u\n"
msgstr ""
@@ -4952,109 +4957,109 @@ 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:6982
+#: src/readelf.c:7010
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:7014
+#: src/readelf.c:7042
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr ""
#. First entry in a list.
-#: src/readelf.c:7089
+#: src/readelf.c:7117
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:7091
+#: src/readelf.c:7119
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:7098 src/readelf.c:7986
+#: src/readelf.c:7126 src/readelf.c:8077
msgid " <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:7150 src/readelf.c:7312
+#: src/readelf.c:7178 src/readelf.c:7340
#, c-format
msgid "cannot get macro information section data: %s"
msgstr ""
-#: src/readelf.c:7230
+#: src/readelf.c:7258
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr ""
-#: src/readelf.c:7253
+#: src/readelf.c:7281
#, c-format
msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
msgstr ""
-#: src/readelf.c:7353
+#: src/readelf.c:7381
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:7365
+#: src/readelf.c:7393
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:7371 src/readelf.c:8105
+#: src/readelf.c:7399 src/readelf.c:8196
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:7378
+#: src/readelf.c:7406
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:7381
+#: src/readelf.c:7409
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:7389
+#: src/readelf.c:7417
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr ""
-#: src/readelf.c:7402
+#: src/readelf.c:7430
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr ""
-#: src/readelf.c:7409
+#: src/readelf.c:7437
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:7421
+#: src/readelf.c:7449
#, c-format
msgid " %<PRIu8> arguments:"
msgstr ""
-#: src/readelf.c:7449
+#: src/readelf.c:7477
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:7686
+#: src/readelf.c:7777
#, c-format
msgid "vendor opcode not verified?"
msgstr ""
-#: src/readelf.c:7714
+#: src/readelf.c:7805
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
-#: src/readelf.c:7755
+#: src/readelf.c:7846
#, c-format
msgid ""
"\n"
@@ -5062,47 +5067,47 @@ msgid ""
" %*s String\n"
msgstr ""
-#: src/readelf.c:7769
+#: src/readelf.c:7860
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr ""
-#: src/readelf.c:7789
+#: src/readelf.c:7880
#, c-format
msgid ""
"\n"
"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
msgstr ""
-#: src/readelf.c:7891
+#: src/readelf.c:7982
#, c-format
msgid ""
"\n"
"Exception handling table section [%2zu] '.gcc_except_table':\n"
msgstr ""
-#: src/readelf.c:7914
+#: src/readelf.c:8005
#, c-format
msgid " LPStart encoding: %#x "
msgstr ""
-#: src/readelf.c:7926
+#: src/readelf.c:8017
#, c-format
msgid " TType encoding: %#x "
msgstr ""
-#: src/readelf.c:7941
+#: src/readelf.c:8032
#, c-format
msgid " Call site encoding: %#x "
msgstr ""
-#: src/readelf.c:7954
+#: src/readelf.c:8045
msgid ""
"\n"
" Call site table:"
msgstr ""
-#: src/readelf.c:7968
+#: src/readelf.c:8059
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5111,141 +5116,141 @@ msgid ""
" Action: %u\n"
msgstr ""
-#: src/readelf.c:8041
+#: src/readelf.c:8132
#, c-format
msgid "invalid TType encoding"
msgstr ""
-#: src/readelf.c:8067
+#: src/readelf.c:8158
#, c-format
msgid ""
"\n"
"GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
msgstr ""
-#: src/readelf.c:8096
+#: src/readelf.c:8187
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:8114
+#: src/readelf.c:8205
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:8121
+#: src/readelf.c:8212
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:8128
+#: src/readelf.c:8219
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:8135
+#: src/readelf.c:8226
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:8142
+#: src/readelf.c:8233
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:8156
+#: src/readelf.c:8247
#, c-format
msgid ""
"\n"
" CU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:8181
+#: src/readelf.c:8272
#, c-format
msgid ""
"\n"
" TU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:8210
+#: src/readelf.c:8301
#, c-format
msgid ""
"\n"
" Address list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:8243
+#: src/readelf.c:8334
#, c-format
msgid ""
"\n"
" Symbol table at offset %#<PRIx32> contains %zu slots:\n"
msgstr ""
-#: src/readelf.c:8330
+#: src/readelf.c:8421
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr ""
-#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277
+#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368
#, c-format
msgid "cannot convert core note data: %s"
msgstr ""
-#: src/readelf.c:8849
+#: src/readelf.c:8940
#, c-format
msgid ""
"\n"
"%*s... <repeats %u more times> ..."
msgstr ""
-#: src/readelf.c:9356
+#: src/readelf.c:9447
msgid " Owner Data size Type\n"
msgstr ""
-#: src/readelf.c:9374
+#: src/readelf.c:9465
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr ""
-#: src/readelf.c:9424
+#: src/readelf.c:9515
#, c-format
msgid "cannot get content of note section: %s"
msgstr ""
-#: src/readelf.c:9451
+#: src/readelf.c:9542
#, c-format
msgid ""
"\n"
"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:9474
+#: src/readelf.c:9565
#, c-format
msgid ""
"\n"
"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:9520
+#: src/readelf.c:9611
#, fuzzy, c-format
msgid ""
"\n"
"Section [%zu] '%s' has no data to dump.\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:9547 src/readelf.c:9598
+#: src/readelf.c:9638 src/readelf.c:9689
#, fuzzy, c-format
msgid "cannot get data for section [%zu] '%s': %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:9552
+#: src/readelf.c:9643
#, c-format
msgid ""
"\n"
"Hex dump of section [%zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:9557
+#: src/readelf.c:9648
#, c-format
msgid ""
"\n"
@@ -5253,21 +5258,21 @@ msgid ""
"%#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:9571
+#: src/readelf.c:9662
#, fuzzy, c-format
msgid ""
"\n"
"Section [%zu] '%s' has no strings to dump.\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:9603
+#: src/readelf.c:9694
#, c-format
msgid ""
"\n"
"String section [%zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:9608
+#: src/readelf.c:9699
#, c-format
msgid ""
"\n"
@@ -5275,45 +5280,45 @@ msgid ""
"offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:9657
+#: src/readelf.c:9748
#, c-format
msgid ""
"\n"
"section [%lu] does not exist"
msgstr ""
-#: src/readelf.c:9686
+#: src/readelf.c:9777
#, c-format
msgid ""
"\n"
"section '%s' does not exist"
msgstr ""
-#: src/readelf.c:9743
+#: src/readelf.c:9834
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr ""
-#: src/readelf.c:9746
+#: src/readelf.c:9837
#, c-format
msgid ""
"\n"
"Archive '%s' has no symbol index\n"
msgstr ""
-#: src/readelf.c:9750
+#: src/readelf.c:9841
#, c-format
msgid ""
"\n"
"Index of archive '%s' has %zu entries:\n"
msgstr ""
-#: src/readelf.c:9768
+#: src/readelf.c:9859
#, fuzzy, c-format
msgid "cannot extract member at offset %zu in '%s': %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/readelf.c:9773
+#: src/readelf.c:9864
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr ""
@@ -5566,82 +5571,94 @@ msgstr "mprotect fehlgeschlagen"
msgid "Skipping section %zd '%s' data outside file"
msgstr ""
-#: src/strip.c:69
+#: src/strip.c:71
msgid "Place stripped output into FILE"
msgstr ""
-#: src/strip.c:70
+#: src/strip.c:72
msgid "Extract the removed sections into FILE"
msgstr ""
-#: src/strip.c:71
+#: src/strip.c:73
msgid "Embed name FILE instead of -f argument"
msgstr ""
-#: src/strip.c:75
+#: src/strip.c:77
msgid "Remove all debugging symbols"
msgstr ""
-#: src/strip.c:79
+#: src/strip.c:81
msgid "Remove section headers (not recommended)"
msgstr ""
-#: src/strip.c:81
+#: src/strip.c:83
msgid "Copy modified/access timestamps to the output"
msgstr ""
-#: src/strip.c:83
+#: src/strip.c:85
msgid ""
"Resolve all trivial relocations between debug sections if the removed "
"sections are placed in a debug file (only relevant for ET_REL files, "
"operation is not reversable, needs -f)"
msgstr ""
-#: src/strip.c:85
+#: src/strip.c:87
msgid "Remove .comment section"
msgstr ""
+#: src/strip.c:88
+msgid ""
+"Remove the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once. Only non-allocated sections can be removed."
+msgstr ""
+
+#: src/strip.c:89
+msgid ""
+"Keep the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once."
+msgstr ""
+
#. Short description of program.
-#: src/strip.c:93
+#: src/strip.c:96
msgid "Discard symbols from object files."
msgstr ""
-#: src/strip.c:187
+#: src/strip.c:242
#, c-format
msgid "--reloc-debug-sections used without -f"
msgstr ""
-#: src/strip.c:201
+#: src/strip.c:256
#, c-format
msgid "Only one input file allowed together with '-o' and '-f'"
msgstr ""
-#: src/strip.c:223
+#: src/strip.c:279
#, c-format
msgid "-f option specified twice"
msgstr ""
-#: src/strip.c:232
+#: src/strip.c:288
#, c-format
msgid "-F option specified twice"
msgstr ""
-#: src/strip.c:265
+#: src/strip.c:347
#, c-format
-msgid "-R option supports only .comment section"
+msgid "cannot both keep and remove .comment section"
msgstr ""
-#: src/strip.c:307 src/strip.c:331
+#: src/strip.c:372 src/strip.c:396
#, c-format
msgid "cannot stat input file '%s'"
msgstr ""
-#: src/strip.c:321
+#: src/strip.c:386
#, c-format
msgid "while opening '%s'"
msgstr ""
-#: src/strip.c:359
+#: src/strip.c:424
#, c-format
msgid "%s: cannot use -o or -f when stripping archive"
msgstr ""
@@ -5652,107 +5669,117 @@ msgstr ""
#. result = handle_ar (fd, elf, NULL, fname,
#. preserve_dates ? tv : NULL);
#.
-#: src/strip.c:371
+#: src/strip.c:436
#, fuzzy, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: Kein Eintrag %s in dem Archiv!\n"
-#: src/strip.c:470
+#: src/strip.c:535
#, c-format
msgid "cannot open EBL backend"
msgstr ""
-#: src/strip.c:515
+#: src/strip.c:580
#, fuzzy, c-format
msgid "cannot get number of phdrs"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/strip.c:531 src/strip.c:555
+#: src/strip.c:596 src/strip.c:620
#, c-format
msgid "cannot create new file '%s': %s"
msgstr ""
-#: src/strip.c:621
+#: src/strip.c:686
#, c-format
msgid "illformed file '%s'"
msgstr ""
-#: src/strip.c:955 src/strip.c:1054
+#: src/strip.c:696
+#, fuzzy, c-format
+msgid "Cannot remove allocated section '%s'"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
+
+#: src/strip.c:705
+#, fuzzy, c-format
+msgid "Cannot both keep and remove section '%s'"
+msgstr "Konnte Archiv '%s' nicht öffnen"
+
+#: src/strip.c:1061 src/strip.c:1160
#, c-format
msgid "while generating output file: %s"
msgstr ""
-#: src/strip.c:1020 src/strip.c:2090
+#: src/strip.c:1126 src/strip.c:2208
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr ""
-#: src/strip.c:1037
+#: src/strip.c:1143
#, c-format
msgid "while preparing output for '%s'"
msgstr ""
-#: src/strip.c:1095 src/strip.c:1158
+#: src/strip.c:1205 src/strip.c:1268
#, c-format
msgid "while create section header section: %s"
msgstr ""
-#: src/strip.c:1104
+#: src/strip.c:1214
#, c-format
msgid "cannot allocate section data: %s"
msgstr ""
-#: src/strip.c:1170
+#: src/strip.c:1280
#, c-format
msgid "while create section header string table: %s"
msgstr ""
-#: src/strip.c:1177
+#: src/strip.c:1287
#, c-format
msgid "no memory to create section header string table"
msgstr ""
-#: src/strip.c:1384
+#: src/strip.c:1497
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr ""
-#: src/strip.c:1876
+#: src/strip.c:1994
#, fuzzy, c-format
msgid "bad relocation"
msgstr "Relocations anzeigen"
-#: src/strip.c:2001 src/strip.c:2114
+#: src/strip.c:2119 src/strip.c:2232
#, c-format
msgid "while writing '%s': %s"
msgstr ""
-#: src/strip.c:2012
+#: src/strip.c:2130
#, c-format
msgid "while creating '%s'"
msgstr ""
-#: src/strip.c:2035
+#: src/strip.c:2153
#, c-format
msgid "while computing checksum for debug information"
msgstr ""
-#: src/strip.c:2099
+#: src/strip.c:2217
#, c-format
msgid "%s: error while reading the file: %s"
msgstr ""
-#: src/strip.c:2139 src/strip.c:2159
+#: src/strip.c:2257 src/strip.c:2277
#, fuzzy, c-format
msgid "while writing '%s'"
msgstr "beim Schliessen von '%s'"
-#: src/strip.c:2196 src/strip.c:2203
+#: src/strip.c:2314 src/strip.c:2321
#, c-format
msgid "error while finishing '%s': %s"
msgstr ""
-#: src/strip.c:2220 src/strip.c:2292
+#: src/strip.c:2338 src/strip.c:2414
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr ""
diff --git a/po/es.po b/po/es.po
index 957196a6..5a68dfd1 100644
--- a/po/es.po
+++ b/po/es.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elfutils.master.es\n"
"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2017-05-05 09:44+0200\n"
+"POT-Creation-Date: 2017-08-02 18:29+0200\n"
"PO-Revision-Date: 2011-01-10 15:17-0300\n"
"Last-Translator: Claudio Rodrigo Pereyra Diaz <claudiorodrigo@pereyradiaz."
"com.ar>\n"
@@ -58,7 +58,7 @@ msgstr ""
"DETERMINADO.\n"
#: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296
-#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432
+#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432
#, c-format
msgid "memory exhausted"
msgstr "memoria agotada"
@@ -259,6 +259,11 @@ msgstr "operando inválido"
msgid "not a CU (unit) DIE"
msgstr ""
+#: libdw/dwarf_error.c:98
+#, fuzzy
+msgid "unknown language code"
+msgstr "código operativo desconocido "
+
#: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374
msgid "Input selection options:"
msgstr "Opciones de selección de entrada:"
@@ -295,34 +300,34 @@ msgstr "Kernel con todos los módulos"
msgid "Search path for separate debuginfo files"
msgstr "Ruta de búsqueda para archivos debugingfo independientes"
-#: libdwfl/argp-std.c:161
+#: libdwfl/argp-std.c:164
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "Sólo uno de -e, -p, -k, -K, ó --core está permitido"
-#: libdwfl/argp-std.c:234
+#: libdwfl/argp-std.c:237
msgid "cannot load kernel symbols"
msgstr "No se pueden cargar símbolos de kernel"
#. Non-fatal to have no modules since we do have the kernel.
-#: libdwfl/argp-std.c:238
+#: libdwfl/argp-std.c:241
msgid "cannot find kernel modules"
msgstr "no se pueden hallar módulos de kernel"
-#: libdwfl/argp-std.c:255
+#: libdwfl/argp-std.c:258
msgid "cannot find kernel or modules"
msgstr "imposible encontrar kernel o módulos"
-#: libdwfl/argp-std.c:294
+#: libdwfl/argp-std.c:297
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "No se puede leer archivo core ELF: %s"
-#: libdwfl/argp-std.c:317
+#: libdwfl/argp-std.c:320
#, fuzzy
msgid "Not enough memory"
msgstr "memoria agotada"
-#: libdwfl/argp-std.c:327
+#: libdwfl/argp-std.c:330
msgid "No modules recognized in core file"
msgstr "No hay módulos reconocidos en el archivo core"
@@ -487,7 +492,7 @@ msgstr "no es un archivo ELF válido"
msgid "No backend"
msgstr "No hay segundo plano (Backend)"
-#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76
+#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76
#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
@@ -584,7 +589,7 @@ msgstr "tamaño inválido del operando fuente"
msgid "invalid size of destination operand"
msgstr "tamaño inválido del operando destino"
-#: libelf/elf_error.c:87 src/readelf.c:5114
+#: libelf/elf_error.c:87 src/readelf.c:5139
#, c-format
msgid "invalid encoding"
msgstr "codificación inválida"
@@ -665,8 +670,8 @@ msgstr "no coinciden los datos/scn"
msgid "invalid section header"
msgstr "encabezamiento de sección inválida"
-#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809
-#: src/readelf.c:7910 src/readelf.c:8091
+#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900
+#: src/readelf.c:8001 src/readelf.c:8182
#, c-format
msgid "invalid data"
msgstr "datos inválidos"
@@ -1300,7 +1305,7 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr "Valor inválido '%s' para parámetro --gaps"
#: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142
-#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490
+#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555
#: src/unstrip.c:2023 src/unstrip.c:2052
#, c-format
msgid "cannot open '%s'"
@@ -1331,7 +1336,7 @@ msgstr "No se puede obtener contenido de sección %zu: %s"
msgid "cannot get relocation: %s"
msgstr "No se puede obtener reubicación: %s"
-#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "opción -o especificada dos veces"
@@ -1383,7 +1388,7 @@ msgstr ""
msgid "Force compression of section even if it would become larger"
msgstr ""
-#: src/elfcompress.c:1282 src/strip.c:88
+#: src/elfcompress.c:1282 src/strip.c:91
msgid "Relax a few rules to handle slightly broken ELF files"
msgstr "Relaja algunas reglas para manejar ficheros ELF rotos"
@@ -3447,7 +3452,7 @@ msgstr ""
#. Strings for arguments in help texts.
#: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81
-#: src/strings.c:88 src/strip.c:96
+#: src/strings.c:88 src/strip.c:99
msgid "[FILE...]"
msgstr "[FICHERO...]"
@@ -3542,7 +3547,7 @@ msgstr ""
"Una reubicación modifica memoria en compensación %llu en un segmento "
"protegido contra escritura\n"
-#: src/nm.c:67 src/strip.c:68
+#: src/nm.c:67 src/strip.c:70
msgid "Output selection:"
msgstr "Selección de salida:"
@@ -3607,7 +3612,7 @@ msgstr "Marcar símbolos débiles"
msgid "Print size of defined symbols"
msgstr "Tamaño de impresión de símbolos definidos"
-#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73
+#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73
msgid "Output options:"
msgstr "Opciones de salida:"
@@ -3637,18 +3642,18 @@ msgstr "Listar símbolos de FICHEROS (a.out por defecto)."
msgid "Output formatting"
msgstr "Formato de salida:"
-#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128
+#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131
#, fuzzy, c-format
msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: ERROR INTERNO %d (%s-%s): %s"
#: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309
-#: src/strip.c:2299
+#: src/strip.c:2421
#, c-format
msgid "while closing '%s'"
msgstr "error al cerrar '%s'"
-#: src/nm.c:404 src/objdump.c:281 src/strip.c:378
+#: src/nm.c:404 src/objdump.c:281 src/strip.c:443
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: No se reconoce el formato del fichero"
@@ -3692,9 +3697,9 @@ msgstr "No se puede crear el árbol de búsqueda"
#: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664
#: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314
#: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315
-#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439
-#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466
-#: src/strip.c:507
+#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530
+#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466
+#: src/strip.c:572
#, c-format
msgid "cannot get section header string table index"
msgstr "no se puede obtener índice de cadena de encabezamiento de sección"
@@ -3981,7 +3986,7 @@ msgstr "Sección de depuración DWARF desconocida `%s'.\n"
msgid "cannot generate Elf descriptor: %s"
msgstr "no se puede crear descriptor ELF: %s"
-#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576
+#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "no se pudieron determinar el número de secciones: %s"
@@ -3991,7 +3996,7 @@ msgstr "no se pudieron determinar el número de secciones: %s"
msgid "cannot get section: %s"
msgstr "No se puede encontrar la sección: %s"
-#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662
+#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753
#: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565
#: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109
#: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650
@@ -4005,8 +4010,8 @@ msgstr "No se puede obtener encabezamiento de sección: %s"
msgid "cannot get section name"
msgstr "no se puede obtener encabezamiento de sección\n"
-#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899
-#: src/readelf.c:8076
+#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990
+#: src/readelf.c:8167
#, c-format
msgid "cannot get %s content: %s"
msgstr "No se puede obtener el contenido %s: %s"
@@ -4372,8 +4377,8 @@ msgstr "<SÃMBOLO INVÃLIDO>"
msgid "<INVALID SECTION>"
msgstr "<SECCIÓN INVÃLIDA>"
-#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533
-#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591
+#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624
+#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682
msgid "Couldn't uncompress section"
msgstr ""
@@ -4383,7 +4388,7 @@ msgid "cannot get section [%zd] header: %s"
msgstr "No se puede obtener encabezamiento de sección: %s"
#: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654
-#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734
+#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759
#, fuzzy, c-format
msgid "invalid sh_link value in section %zu"
msgstr ".debug_line section inválida"
@@ -4863,46 +4868,46 @@ msgstr "%s+%#<PRIx64>"
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:4056
+#: src/readelf.c:4081
msgid "empty block"
msgstr "bloque vacío"
-#: src/readelf.c:4059
+#: src/readelf.c:4084
#, c-format
msgid "%zu byte block:"
msgstr "bloque de byte %zu:"
-#: src/readelf.c:4456
+#: src/readelf.c:4481
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-#: src/readelf.c:4513
+#: src/readelf.c:4538
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
-#: src/readelf.c:4520
+#: src/readelf.c:4545
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> utilizado con offsetr de diferente tamaño"
-#: src/readelf.c:4527
+#: src/readelf.c:4552
#, fuzzy, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
-#: src/readelf.c:4616
+#: src/readelf.c:4641
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <MATERIAL INUTIL SIN UTILIZAR EN EL RESTO DE LA SECCION>\n"
-#: src/readelf.c:4624
+#: src/readelf.c:4649
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <MATERIAL INUTIL NO UTILIZADO> ... %<PRIu64> bytes ...\n"
-#: src/readelf.c:4650
+#: src/readelf.c:4675
#, c-format
msgid ""
"\n"
@@ -4913,7 +4918,7 @@ msgstr ""
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" [ Código]\n"
-#: src/readelf.c:4658
+#: src/readelf.c:4683
#, c-format
msgid ""
"\n"
@@ -4922,30 +4927,30 @@ msgstr ""
"\n"
"Sección de abreviatura en compensación %<PRIu64>:\n"
-#: src/readelf.c:4671
+#: src/readelf.c:4696
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** error en lectura de abreviatura: %s\n"
-#: src/readelf.c:4687
+#: src/readelf.c:4712
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] compensación: %<PRId64>, hijos: %s, etiqueta: %s\n"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745
msgid "yes"
msgstr "sí"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745
msgid "no"
msgstr "no"
-#: src/readelf.c:4724 src/readelf.c:4797
+#: src/readelf.c:4749 src/readelf.c:4822
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "no se ha podido obtener contenido de .debug_aranges: %s"
-#: src/readelf.c:4739
+#: src/readelf.c:4764
#, c-format
msgid ""
"\n"
@@ -4960,12 +4965,12 @@ msgstr[1] ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entradas %zu:\n"
-#: src/readelf.c:4770
+#: src/readelf.c:4795
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4772
+#: src/readelf.c:4797
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -4973,8 +4978,8 @@ msgstr ""
" Inicio [%*zu]: %0#*<PRIx64>, longitud: %5<PRIu64>, compensación CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487
-#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728
+#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515
+#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819
#, c-format
msgid ""
"\n"
@@ -4983,7 +4988,7 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
-#: src/readelf.c:4815 src/readelf.c:6513
+#: src/readelf.c:4840 src/readelf.c:6541
#, fuzzy, c-format
msgid ""
"\n"
@@ -4992,113 +4997,113 @@ msgstr ""
"\n"
"Tabla en compensación %Zu:\n"
-#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524
+#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr "Datos inválidos en sección [%zu] '%s'"
-#: src/readelf.c:4835
+#: src/readelf.c:4860
#, fuzzy, c-format
msgid ""
"\n"
" Length: %6<PRIu64>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:4847
+#: src/readelf.c:4872
#, fuzzy, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:4851
+#: src/readelf.c:4876
#, c-format
msgid "unsupported aranges version"
msgstr ""
-#: src/readelf.c:4862
+#: src/readelf.c:4887
#, fuzzy, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:4868
+#: src/readelf.c:4893
#, fuzzy, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:4872
+#: src/readelf.c:4897
#, fuzzy, c-format
msgid "unsupported address size"
msgstr "no hay valor de dirección"
-#: src/readelf.c:4877
+#: src/readelf.c:4902
#, fuzzy, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
"\n"
msgstr " establecer archivo a %<PRIu64>\n"
-#: src/readelf.c:4881
+#: src/readelf.c:4906
#, c-format
msgid "unsupported segment size"
msgstr ""
-#: src/readelf.c:4921
+#: src/readelf.c:4946
#, fuzzy, c-format
msgid " %s..%s (%<PRIx64>)\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:4924
+#: src/readelf.c:4949
#, fuzzy, c-format
msgid " %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4933
+#: src/readelf.c:4958
#, c-format
msgid " %zu padding bytes\n"
msgstr ""
-#: src/readelf.c:4951
+#: src/readelf.c:4976
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
-#: src/readelf.c:4981 src/readelf.c:7046
+#: src/readelf.c:5006 src/readelf.c:7074
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <DATOS INVÃLIDOS>\n"
-#: src/readelf.c:5003 src/readelf.c:7068
+#: src/readelf.c:5028 src/readelf.c:7096
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] (dirección base) %s\n"
-#: src/readelf.c:5010 src/readelf.c:7075
+#: src/readelf.c:5035 src/readelf.c:7103
#, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] lista vacía\n"
#. We have an address range entry.
#. First address range entry in a list.
-#: src/readelf.c:5021
+#: src/readelf.c:5046
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:5023
+#: src/readelf.c:5048
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:5259
+#: src/readelf.c:5284
#, fuzzy
msgid " <INVALID DATA>\n"
msgstr " <DATOS INVÃLIDOS>\n"
-#: src/readelf.c:5512
+#: src/readelf.c:5537
#, fuzzy, c-format
msgid "cannot get ELF: %s"
msgstr "no se puede leer encabezamiento ELF: %s"
-#: src/readelf.c:5529
+#: src/readelf.c:5554
#, c-format
msgid ""
"\n"
@@ -5108,7 +5113,7 @@ msgstr ""
"Sección de información de marco de llamada [%2zu] '%s' en compensación "
"%#<PRIx64>:\n"
-#: src/readelf.c:5579
+#: src/readelf.c:5604
#, c-format
msgid ""
"\n"
@@ -5117,50 +5122,50 @@ msgstr ""
"\n"
" [%6tx] Terminator cero\n"
-#: src/readelf.c:5672 src/readelf.c:5827
+#: src/readelf.c:5697 src/readelf.c:5852
#, c-format
msgid "invalid augmentation length"
msgstr "longitud de aumento inválida"
-#: src/readelf.c:5687
+#: src/readelf.c:5712
msgid "FDE address encoding: "
msgstr "Codificación de dirección FDE:"
-#: src/readelf.c:5693
+#: src/readelf.c:5718
msgid "LSDA pointer encoding: "
msgstr "Codificación de puntero LSDA:"
-#: src/readelf.c:5804
+#: src/readelf.c:5829
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:5811
+#: src/readelf.c:5836
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:5848
+#: src/readelf.c:5873
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr "Puntero %-26sLSDA: %#<PRIx64>\n"
-#: src/readelf.c:5903
+#: src/readelf.c:5928
#, c-format
msgid "cannot get attribute code: %s"
msgstr "No se puede obtener código de atributo: %s"
-#: src/readelf.c:5912
+#: src/readelf.c:5937
#, c-format
msgid "cannot get attribute form: %s"
msgstr "No se puede obtener forma de atributo: %s"
-#: src/readelf.c:5927
+#: src/readelf.c:5952
#, c-format
msgid "cannot get attribute value: %s"
msgstr "No se puede obtener valor: %s"
-#: src/readelf.c:6226
+#: src/readelf.c:6254
#, c-format
msgid ""
"\n"
@@ -5171,7 +5176,7 @@ msgstr ""
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" [Offset]\n"
-#: src/readelf.c:6258
+#: src/readelf.c:6286
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -5184,7 +5189,7 @@ msgstr ""
"Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
" Tipo de firma: %#<PRIx64>, Tipo de compensación: %#<PRIx64>\n"
-#: src/readelf.c:6267
+#: src/readelf.c:6295
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -5195,34 +5200,34 @@ msgstr ""
" Versión: %<PRIu16>, Compensación de sección de abreviatura: %<PRIu64>, "
"Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
-#: src/readelf.c:6292
+#: src/readelf.c:6320
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr "no se puede obtener DIE en compensación %<PRIu64> en sección '%s': %s"
-#: src/readelf.c:6306
+#: src/readelf.c:6334
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "no se puede obtener DIE en compensación: %s"
-#: src/readelf.c:6315
+#: src/readelf.c:6343
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"no se ha podido obtener etiqueta de DIE en compensación%<PRIu64> en sección "
"'%s': %s"
-#: src/readelf.c:6347
+#: src/readelf.c:6375
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "No se puede obtener próximo DIE: %s\n"
-#: src/readelf.c:6355
+#: src/readelf.c:6383
#, c-format
msgid "cannot get next DIE: %s"
msgstr "No se puede obtener próximo DIE: %s"
-#: src/readelf.c:6391
+#: src/readelf.c:6419
#, fuzzy, c-format
msgid ""
"\n"
@@ -5232,13 +5237,13 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
-#: src/readelf.c:6500
+#: src/readelf.c:6528
#, c-format
msgid "cannot get line data section data: %s"
msgstr "No se puede obtener sección de datos de línea: %s"
#. Print what we got so far.
-#: src/readelf.c:6570
+#: src/readelf.c:6598
#, c-format
msgid ""
"\n"
@@ -5267,19 +5272,19 @@ msgstr ""
"\n"
"Códigos operativos:\n"
-#: src/readelf.c:6591
+#: src/readelf.c:6619
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "datos inválidos en compensación %tu en sección [%zu] '%s'"
-#: src/readelf.c:6606
+#: src/readelf.c:6634
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] " [%*<PRIuFAST8>] argumento %hhu \n"
msgstr[1] " [%*<PRIuFAST8>] argumento %hhu\n"
-#: src/readelf.c:6614
+#: src/readelf.c:6642
msgid ""
"\n"
"Directory table:"
@@ -5287,7 +5292,7 @@ msgstr ""
"\n"
"Tabla de Directorio:"
-#: src/readelf.c:6630
+#: src/readelf.c:6658
msgid ""
"\n"
"File name table:\n"
@@ -5297,7 +5302,7 @@ msgstr ""
"Tabla de nombre de archivo:\n"
" Directorio de entrada Tiempo Tamaño Nombre"
-#: src/readelf.c:6665
+#: src/readelf.c:6693
msgid ""
"\n"
"Line number statements:"
@@ -5305,121 +5310,121 @@ msgstr ""
"\n"
" Declaraciones de número de Línea:"
-#: src/readelf.c:6716
+#: src/readelf.c:6744
#, fuzzy, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr "longitud mínima inválida de tamaño de cadena coincidente"
-#: src/readelf.c:6752
+#: src/readelf.c:6780
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
" opcode especial %u: dirección+%u = %s, op_index = %u, línea%+d = %zu\n"
-#: src/readelf.c:6757
+#: src/readelf.c:6785
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " opcode especial %u: dirección+%u = %s, línea%+d = %zu\n"
-#: src/readelf.c:6777
+#: src/readelf.c:6805
#, c-format
msgid " extended opcode %u: "
msgstr " Código operativo extendido %u: "
-#: src/readelf.c:6782
+#: src/readelf.c:6810
#, fuzzy
msgid " end of sequence"
msgstr "Fin de secuencia"
-#: src/readelf.c:6801
+#: src/readelf.c:6829
#, fuzzy, c-format
msgid " set address to %s\n"
msgstr "Establecer dirección a %s\n"
-#: src/readelf.c:6828
+#: src/readelf.c:6856
#, fuzzy, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
"definir nuevo archivo: dir=%u, mtime=%<PRIu64>, longitud=%<PRIu64>, nombre="
"%s\n"
-#: src/readelf.c:6841
+#: src/readelf.c:6869
#, c-format
msgid " set discriminator to %u\n"
msgstr " establecer discriminador a %u\n"
#. Unknown, ignore it.
-#: src/readelf.c:6846
+#: src/readelf.c:6874
#, fuzzy
msgid " unknown opcode"
msgstr "código operativo desconocido "
#. Takes no argument.
-#: src/readelf.c:6858
+#: src/readelf.c:6886
msgid " copy"
msgstr "Copiar"
-#: src/readelf.c:6869
+#: src/readelf.c:6897
#, fuzzy, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr "dirección avanzada por %u a %s, op_index a %u\n"
-#: src/readelf.c:6873
+#: src/readelf.c:6901
#, fuzzy, c-format
msgid " advance address by %u to %s\n"
msgstr "Dirección de avance por %u a %s\n"
-#: src/readelf.c:6884
+#: src/readelf.c:6912
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " línea de avance por la constante %d a %<PRId64>\n"
-#: src/readelf.c:6892
+#: src/readelf.c:6920
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " establecer archivo a %<PRIu64>\n"
-#: src/readelf.c:6902
+#: src/readelf.c:6930
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " Establecer columna a %<PRIu64>\n"
-#: src/readelf.c:6909
+#: src/readelf.c:6937
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr "Establecer '%s' a %<PRIuFAST8>\n"
#. Takes no argument.
-#: src/readelf.c:6915
+#: src/readelf.c:6943
msgid " set basic block flag"
msgstr "Establecer bandera de bloque básico"
-#: src/readelf.c:6928
+#: src/readelf.c:6956
#, fuzzy, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr "dirección avanzada por constante %u a %s, op_index a %u\n"
-#: src/readelf.c:6932
+#: src/readelf.c:6960
#, fuzzy, c-format
msgid " advance address by constant %u to %s\n"
msgstr "Dirección de avance por constante %u a %s\n"
-#: src/readelf.c:6950
+#: src/readelf.c:6978
#, fuzzy, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr "dirección de avance por valor corregido %u a %s\n"
#. Takes no argument.
-#: src/readelf.c:6959
+#: src/readelf.c:6987
msgid " set prologue end flag"
msgstr " Establecer bandera prologue_end"
#. Takes no argument.
-#: src/readelf.c:6964
+#: src/readelf.c:6992
msgid " set epilogue begin flag"
msgstr " Establecer bandera epilogue_begin"
-#: src/readelf.c:6973
+#: src/readelf.c:7001
#, c-format
msgid " set isa to %u\n"
msgstr " establecer isa para %u\n"
@@ -5427,111 +5432,111 @@ msgstr " establecer isa para %u\n"
#. 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:6982
+#: src/readelf.c:7010
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] " opcódigo con parámetro %<PRIu8> desconocido:"
msgstr[1] " opcódigo con parámetros %<PRIu8> desconocido:"
-#: src/readelf.c:7014
+#: src/readelf.c:7042
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "no es posible obtener contenido de .debug_loc: %s"
#. First entry in a list.
-#: src/readelf.c:7089
+#: src/readelf.c:7117
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:7091
+#: src/readelf.c:7119
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:7098 src/readelf.c:7986
+#: src/readelf.c:7126 src/readelf.c:8077
msgid " <INVALID DATA>\n"
msgstr " <DATOS INVÃLIDOS>\n"
-#: src/readelf.c:7150 src/readelf.c:7312
+#: src/readelf.c:7178 src/readelf.c:7340
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "no es posible obtener datos de la sección de macro información: %s"
-#: src/readelf.c:7230
+#: src/readelf.c:7258
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** cadena no finalizada al final de la sección"
-#: src/readelf.c:7253
+#: src/readelf.c:7281
#, fuzzy, c-format
msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
msgstr "%*s*** cadena no finalizada al final de la sección"
-#: src/readelf.c:7353
+#: src/readelf.c:7381
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " Propietario Tamaño\n"
-#: src/readelf.c:7365
+#: src/readelf.c:7393
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:7371 src/readelf.c:8105
+#: src/readelf.c:7399 src/readelf.c:8196
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:7378
+#: src/readelf.c:7406
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " Dirección de punto de entrada: %#<PRIx64>\n"
-#: src/readelf.c:7381
+#: src/readelf.c:7409
#, fuzzy, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:7389
+#: src/readelf.c:7417
#, fuzzy, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:7402
+#: src/readelf.c:7430
#, fuzzy, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " opcódigo con parámetro %<PRIu8> desconocido:"
-#: src/readelf.c:7409
+#: src/readelf.c:7437
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:7421
+#: src/readelf.c:7449
#, fuzzy, c-format
msgid " %<PRIu8> arguments:"
msgstr " [%*<PRIuFAST8>] argumento %hhu \n"
-#: src/readelf.c:7449
+#: src/readelf.c:7477
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:7686
+#: src/readelf.c:7777
#, c-format
msgid "vendor opcode not verified?"
msgstr ""
-#: src/readelf.c:7714
+#: src/readelf.c:7805
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
" Compensación [%5d] DIE: %6<PRId64>, Compensación CU DIE: %6<PRId64>, "
"nombre: %s\n"
-#: src/readelf.c:7755
+#: src/readelf.c:7846
#, c-format
msgid ""
"\n"
@@ -5542,12 +5547,12 @@ msgstr ""
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" %*s String\n"
-#: src/readelf.c:7769
+#: src/readelf.c:7860
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** error en lectura de cadenas: %s\n"
-#: src/readelf.c:7789
+#: src/readelf.c:7880
#, c-format
msgid ""
"\n"
@@ -5556,7 +5561,7 @@ msgstr ""
"\n"
"Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:7891
+#: src/readelf.c:7982
#, c-format
msgid ""
"\n"
@@ -5565,22 +5570,22 @@ msgstr ""
"\n"
"Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:7914
+#: src/readelf.c:8005
#, c-format
msgid " LPStart encoding: %#x "
msgstr "Codificación LPStart: %#x "
-#: src/readelf.c:7926
+#: src/readelf.c:8017
#, c-format
msgid " TType encoding: %#x "
msgstr "Codificación TType: %#x "
-#: src/readelf.c:7941
+#: src/readelf.c:8032
#, c-format
msgid " Call site encoding: %#x "
msgstr "Codificación de sitio de llamada: %#x "
-#: src/readelf.c:7954
+#: src/readelf.c:8045
msgid ""
"\n"
" Call site table:"
@@ -5588,7 +5593,7 @@ msgstr ""
"\n"
" Tabla de sitio de llamada:"
-#: src/readelf.c:7968
+#: src/readelf.c:8059
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5601,12 +5606,12 @@ msgstr ""
" Landing pad: %#<PRIx64>\n"
" Action: %u\n"
-#: src/readelf.c:8041
+#: src/readelf.c:8132
#, c-format
msgid "invalid TType encoding"
msgstr "Codificación TType inválida"
-#: src/readelf.c:8067
+#: src/readelf.c:8158
#, fuzzy, c-format
msgid ""
"\n"
@@ -5615,37 +5620,37 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:8096
+#: src/readelf.c:8187
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:8114
+#: src/readelf.c:8205
#, fuzzy, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:8121
+#: src/readelf.c:8212
#, fuzzy, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:8128
+#: src/readelf.c:8219
#, fuzzy, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:8135
+#: src/readelf.c:8226
#, fuzzy, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:8142
+#: src/readelf.c:8233
#, fuzzy, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:8156
+#: src/readelf.c:8247
#, fuzzy, c-format
msgid ""
"\n"
@@ -5654,7 +5659,7 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:8181
+#: src/readelf.c:8272
#, fuzzy, c-format
msgid ""
"\n"
@@ -5663,7 +5668,7 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:8210
+#: src/readelf.c:8301
#, fuzzy, c-format
msgid ""
"\n"
@@ -5672,7 +5677,7 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:8243
+#: src/readelf.c:8334
#, fuzzy, c-format
msgid ""
"\n"
@@ -5681,17 +5686,17 @@ msgstr ""
"\n"
"Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
-#: src/readelf.c:8330
+#: src/readelf.c:8421
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "no se puede depurar descriptor de contexto: %s"
-#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277
+#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368
#, c-format
msgid "cannot convert core note data: %s"
msgstr "no es posible convertir datos de la nota principal: %s"
-#: src/readelf.c:8849
+#: src/readelf.c:8940
#, c-format
msgid ""
"\n"
@@ -5700,21 +5705,21 @@ msgstr ""
"\n"
"%*s... <repeats %u more times> ..."
-#: src/readelf.c:9356
+#: src/readelf.c:9447
msgid " Owner Data size Type\n"
msgstr " Owner Data size Type\n"
-#: src/readelf.c:9374
+#: src/readelf.c:9465
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:9424
+#: src/readelf.c:9515
#, c-format
msgid "cannot get content of note section: %s"
msgstr "no se puede obtener el contenido de sección de nota: %s"
-#: src/readelf.c:9451
+#: src/readelf.c:9542
#, c-format
msgid ""
"\n"
@@ -5723,7 +5728,7 @@ msgstr ""
"\n"
"Sección de nota [%2zu] '%s' de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
-#: src/readelf.c:9474
+#: src/readelf.c:9565
#, c-format
msgid ""
"\n"
@@ -5732,7 +5737,7 @@ msgstr ""
"\n"
"Segmento de nota de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
-#: src/readelf.c:9520
+#: src/readelf.c:9611
#, fuzzy, c-format
msgid ""
"\n"
@@ -5741,12 +5746,12 @@ msgstr ""
"\n"
"Sección [%Zu] '%s' no tiene datos para volcar.\n"
-#: src/readelf.c:9547 src/readelf.c:9598
+#: src/readelf.c:9638 src/readelf.c:9689
#, fuzzy, c-format
msgid "cannot get data for section [%zu] '%s': %s"
msgstr "no se pueden obtener datos para sección [%Zu] '%s': %s"
-#: src/readelf.c:9552
+#: src/readelf.c:9643
#, fuzzy, c-format
msgid ""
"\n"
@@ -5756,7 +5761,7 @@ msgstr ""
"Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:9557
+#: src/readelf.c:9648
#, fuzzy, c-format
msgid ""
"\n"
@@ -5767,7 +5772,7 @@ msgstr ""
"Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:9571
+#: src/readelf.c:9662
#, fuzzy, c-format
msgid ""
"\n"
@@ -5776,7 +5781,7 @@ msgstr ""
"\n"
"Sección [%Zu] '%s' no tiene datos para volcar.\n"
-#: src/readelf.c:9603
+#: src/readelf.c:9694
#, fuzzy, c-format
msgid ""
"\n"
@@ -5786,7 +5791,7 @@ msgstr ""
"Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:9608
+#: src/readelf.c:9699
#, fuzzy, c-format
msgid ""
"\n"
@@ -5797,7 +5802,7 @@ msgstr ""
"Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:9657
+#: src/readelf.c:9748
#, c-format
msgid ""
"\n"
@@ -5806,7 +5811,7 @@ msgstr ""
"\n"
"sección [%lu] no existe"
-#: src/readelf.c:9686
+#: src/readelf.c:9777
#, c-format
msgid ""
"\n"
@@ -5815,12 +5820,12 @@ msgstr ""
"\n"
"sección '%s' no existe"
-#: src/readelf.c:9743
+#: src/readelf.c:9834
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "no se puede obtener el índice de símbolo de archivo '%s': %s"
-#: src/readelf.c:9746
+#: src/readelf.c:9837
#, c-format
msgid ""
"\n"
@@ -5829,7 +5834,7 @@ msgstr ""
"\n"
"Archivo '%s' no tiene índice de símbolo\n"
-#: src/readelf.c:9750
+#: src/readelf.c:9841
#, fuzzy, c-format
msgid ""
"\n"
@@ -5838,12 +5843,12 @@ msgstr ""
"\n"
"Ãndice de archivo '%s' tiene %Zu entradas:\n"
-#: src/readelf.c:9768
+#: src/readelf.c:9859
#, fuzzy, c-format
msgid "cannot extract member at offset %zu in '%s': %s"
msgstr "no es posible extraer miembro en compensación %Zu en '%s': %s"
-#: src/readelf.c:9773
+#: src/readelf.c:9864
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Miembro de archivo contiene '%s':\n"
@@ -6103,82 +6108,94 @@ msgstr "mprotect falló"
msgid "Skipping section %zd '%s' data outside file"
msgstr ""
-#: src/strip.c:69
+#: src/strip.c:71
msgid "Place stripped output into FILE"
msgstr "Colocar la salida obtenida en FICHERO"
-#: src/strip.c:70
+#: src/strip.c:72
msgid "Extract the removed sections into FILE"
msgstr "Extraer secciones eliminadas en FICHERO"
-#: src/strip.c:71
+#: src/strip.c:73
msgid "Embed name FILE instead of -f argument"
msgstr "Incorporar nombre FILE en lugar de argumento -f"
-#: src/strip.c:75
+#: src/strip.c:77
msgid "Remove all debugging symbols"
msgstr "Elimina todos los símbolos de depuración"
-#: src/strip.c:79
+#: src/strip.c:81
msgid "Remove section headers (not recommended)"
msgstr "Quitar sección de cabeceras (no recomendado)"
-#: src/strip.c:81
+#: src/strip.c:83
msgid "Copy modified/access timestamps to the output"
msgstr "Copiar marcas de tiempo modificadas/acceso a la salida"
-#: src/strip.c:83
+#: src/strip.c:85
msgid ""
"Resolve all trivial relocations between debug sections if the removed "
"sections are placed in a debug file (only relevant for ET_REL files, "
"operation is not reversable, needs -f)"
msgstr ""
-#: src/strip.c:85
+#: src/strip.c:87
msgid "Remove .comment section"
msgstr "Quitar sección de comentario"
+#: src/strip.c:88
+msgid ""
+"Remove the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once. Only non-allocated sections can be removed."
+msgstr ""
+
+#: src/strip.c:89
+msgid ""
+"Keep the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once."
+msgstr ""
+
#. Short description of program.
-#: src/strip.c:93
+#: src/strip.c:96
msgid "Discard symbols from object files."
msgstr "Descarta símbolos de archivos objeto."
-#: src/strip.c:187
+#: src/strip.c:242
#, c-format
msgid "--reloc-debug-sections used without -f"
msgstr ""
-#: src/strip.c:201
+#: src/strip.c:256
#, c-format
msgid "Only one input file allowed together with '-o' and '-f'"
msgstr "Sólo se permite ingresar un archivo junto con '-o' y '-f'"
-#: src/strip.c:223
+#: src/strip.c:279
#, c-format
msgid "-f option specified twice"
msgstr "opción -f especificada dos veces"
-#: src/strip.c:232
+#: src/strip.c:288
#, c-format
msgid "-F option specified twice"
msgstr "opción -F especificada dos veces"
-#: src/strip.c:265
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr "la opción -R soporta únicamente. sección de comentario"
+#: src/strip.c:347
+#, fuzzy, c-format
+msgid "cannot both keep and remove .comment section"
+msgstr "Quitar sección de comentario"
-#: src/strip.c:307 src/strip.c:331
+#: src/strip.c:372 src/strip.c:396
#, c-format
msgid "cannot stat input file '%s'"
msgstr "no sepuede stat fichero de entrada '%s'"
-#: src/strip.c:321
+#: src/strip.c:386
#, c-format
msgid "while opening '%s'"
msgstr "mientras se abría '%s'"
-#: src/strip.c:359
+#: src/strip.c:424
#, c-format
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo"
@@ -6189,107 +6206,117 @@ msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo"
#. result = handle_ar (fd, elf, NULL, fname,
#. preserve_dates ? tv : NULL);
#.
-#: src/strip.c:371
+#: src/strip.c:436
#, fuzzy, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo"
-#: src/strip.c:470
+#: src/strip.c:535
#, c-format
msgid "cannot open EBL backend"
msgstr "No se puede abrir el segundo plano EBL"
-#: src/strip.c:515
+#: src/strip.c:580
#, fuzzy, c-format
msgid "cannot get number of phdrs"
msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
-#: src/strip.c:531 src/strip.c:555
+#: src/strip.c:596 src/strip.c:620
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "no se puede crear fichero nuevo '%s': %s"
-#: src/strip.c:621
+#: src/strip.c:686
#, c-format
msgid "illformed file '%s'"
msgstr "Fichero illformed '%s'"
-#: src/strip.c:955 src/strip.c:1054
+#: src/strip.c:696
+#, fuzzy, c-format
+msgid "Cannot remove allocated section '%s'"
+msgstr "No se puede asignar sección PLT: %s"
+
+#: src/strip.c:705
+#, fuzzy, c-format
+msgid "Cannot both keep and remove section '%s'"
+msgstr "No se puede añadir nueva sección: %s"
+
+#: src/strip.c:1061 src/strip.c:1160
#, c-format
msgid "while generating output file: %s"
msgstr "al generar fichero de salida: %s"
-#: src/strip.c:1020 src/strip.c:2090
+#: src/strip.c:1126 src/strip.c:2208
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: error al crear encabezamiento ELF: %s"
-#: src/strip.c:1037
+#: src/strip.c:1143
#, c-format
msgid "while preparing output for '%s'"
msgstr "al preparar salida para '%s'"
-#: src/strip.c:1095 src/strip.c:1158
+#: src/strip.c:1205 src/strip.c:1268
#, c-format
msgid "while create section header section: %s"
msgstr "al crear sección de encabezamiento de sección: %s"
-#: src/strip.c:1104
+#: src/strip.c:1214
#, c-format
msgid "cannot allocate section data: %s"
msgstr "no se puede asignar espacio para los datos: %s"
-#: src/strip.c:1170
+#: src/strip.c:1280
#, c-format
msgid "while create section header string table: %s"
msgstr "al crear tabla de cadenas de encabezamiento de sección: %s"
-#: src/strip.c:1177
+#: src/strip.c:1287
#, fuzzy, c-format
msgid "no memory to create section header string table"
msgstr "al crear tabla de cadenas de encabezamiento de sección: %s"
-#: src/strip.c:1384
+#: src/strip.c:1497
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr ""
-#: src/strip.c:1876
+#: src/strip.c:1994
#, fuzzy, c-format
msgid "bad relocation"
msgstr "Mostrar reubicaciones"
-#: src/strip.c:2001 src/strip.c:2114
+#: src/strip.c:2119 src/strip.c:2232
#, c-format
msgid "while writing '%s': %s"
msgstr "al escribir '%s': %s"
-#: src/strip.c:2012
+#: src/strip.c:2130
#, c-format
msgid "while creating '%s'"
msgstr "al crear '%s'"
-#: src/strip.c:2035
+#: src/strip.c:2153
#, c-format
msgid "while computing checksum for debug information"
msgstr "al computar la suma de verificación para información de depuración"
-#: src/strip.c:2099
+#: src/strip.c:2217
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: error al leer el fichero: %s"
-#: src/strip.c:2139 src/strip.c:2159
+#: src/strip.c:2257 src/strip.c:2277
#, c-format
msgid "while writing '%s'"
msgstr "al escribir '%s'"
-#: src/strip.c:2196 src/strip.c:2203
+#: src/strip.c:2314 src/strip.c:2321
#, c-format
msgid "error while finishing '%s': %s"
msgstr "Error al terminar '%s': %s"
-#: src/strip.c:2220 src/strip.c:2292
+#: src/strip.c:2338 src/strip.c:2414
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "no es posible establecer acceso y fecha de modificación de '%s'"
@@ -6700,12 +6727,12 @@ msgstr "También mostrar nombres de función"
msgid "Show instances of inlined functions"
msgstr ""
+#~ msgid "-R option supports only .comment section"
+#~ msgstr "la opción -R soporta únicamente. sección de comentario"
+
#~ msgid "Written by %s.\n"
#~ msgstr "Escrito por %s.\n"
-#~ msgid "cannot allocate PLT section: %s"
-#~ msgstr "No se puede asignar sección PLT: %s"
-
#~ msgid "cannot allocate PLTREL section: %s"
#~ msgstr "No se puede asignar sección PLTREL: %s"
diff --git a/po/ja.po b/po/ja.po
index 7d0d1440..6ab09aa3 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ja\n"
"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2017-05-05 09:44+0200\n"
+"POT-Creation-Date: 2017-08-02 18:29+0200\n"
"PO-Revision-Date: 2009-09-20 15:32+0900\n"
"Last-Translator: Hyu_gabaru Ryu_ichi <hyu_gabaru@yahoo.co.jp>\n"
"Language-Team: Japanese <jp@li.org>\n"
@@ -51,7 +51,7 @@ msgstr ""
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
#: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296
-#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432
+#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432
#, c-format
msgid "memory exhausted"
msgstr "メモリー消費済ã¿"
@@ -252,6 +252,11 @@ msgstr "ä¸å½“ãªã‚ªãƒšãƒ©ãƒ³ãƒ‰"
msgid "not a CU (unit) DIE"
msgstr ""
+#: libdw/dwarf_error.c:98
+#, fuzzy
+msgid "unknown language code"
+msgstr "ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰"
+
#: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374
msgid "Input selection options:"
msgstr "é¸æŠžã‚ªãƒ—ションを入力ã—ã¦ãã ã•ã„:"
@@ -288,34 +293,34 @@ msgstr "å…¨ã¦ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ä»˜ãã®ã‚«ãƒ¼ãƒãƒ«"
msgid "Search path for separate debuginfo files"
msgstr "分離ã—㟠debuginfo ファイルã¹ãパスを探ã™"
-#: libdwfl/argp-std.c:161
+#: libdwfl/argp-std.c:164
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "-e ã‹ã€-pã€-kã€-Kã€--core ã®ã²ã¨ã¤ã ã‘ãŒèªã‚られã¾ã™"
-#: libdwfl/argp-std.c:234
+#: libdwfl/argp-std.c:237
msgid "cannot load kernel symbols"
msgstr "カーãƒãƒ«ã‚·ãƒ³ãƒœãƒ«ã‚’ロードã§ãã¾ã›ã‚“"
#. Non-fatal to have no modules since we do have the kernel.
-#: libdwfl/argp-std.c:238
+#: libdwfl/argp-std.c:241
msgid "cannot find kernel modules"
msgstr "カーãƒãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’見ã¤ã‘られã¾ã›ã‚“"
-#: libdwfl/argp-std.c:255
+#: libdwfl/argp-std.c:258
msgid "cannot find kernel or modules"
msgstr "カーãƒãƒ«ã‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’見ã¤ã‘られã¾ã›ã‚“"
-#: libdwfl/argp-std.c:294
+#: libdwfl/argp-std.c:297
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "ELF コアファイルを読ã‚ã¾ã›ã‚“: %s"
-#: libdwfl/argp-std.c:317
+#: libdwfl/argp-std.c:320
#, fuzzy
msgid "Not enough memory"
msgstr "メモリーä¸è¶³"
-#: libdwfl/argp-std.c:327
+#: libdwfl/argp-std.c:330
msgid "No modules recognized in core file"
msgstr "コアファイルã®ä¸­ã«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’èªè­˜ã§ãã¾ã›ã‚“"
@@ -486,7 +491,7 @@ msgstr "ä¸å½“㪠ELF ファイル"
msgid "No backend"
msgstr "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒã‚ã‚Šã¾ã›ã‚“"
-#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76
+#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76
#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
@@ -583,7 +588,7 @@ msgstr "ソース演算å­ã®å¤§ãã•ãŒç„¡åŠ¹"
msgid "invalid size of destination operand"
msgstr "宛先演算å­ã®å¤§ãã•ãŒç„¡åŠ¹"
-#: libelf/elf_error.c:87 src/readelf.c:5114
+#: libelf/elf_error.c:87 src/readelf.c:5139
#, c-format
msgid "invalid encoding"
msgstr "無効ãªã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰"
@@ -665,8 +670,8 @@ msgstr "データ/scnãŒä¸æ•´åˆã§ã™"
msgid "invalid section header"
msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼"
-#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809
-#: src/readelf.c:7910 src/readelf.c:8091
+#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900
+#: src/readelf.c:8001 src/readelf.c:8182
#, c-format
msgid "invalid data"
msgstr "ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
@@ -1292,7 +1297,7 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr ""
#: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142
-#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490
+#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555
#: src/unstrip.c:2023 src/unstrip.c:2052
#, c-format
msgid "cannot open '%s'"
@@ -1323,7 +1328,7 @@ msgstr ""
msgid "cannot get relocation: %s"
msgstr ""
-#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "-o オプション㌠2 回指定ã•ã‚Œã¦ã„ã¾ã™"
@@ -1375,7 +1380,7 @@ msgstr ""
msgid "Force compression of section even if it would become larger"
msgstr ""
-#: src/elfcompress.c:1282 src/strip.c:88
+#: src/elfcompress.c:1282 src/strip.c:91
msgid "Relax a few rules to handle slightly broken ELF files"
msgstr "å°‘ã—壊れ㟠ELF ファイルをå–り扱ã†ãŸã‚ã«ãƒ«ãƒ¼ãƒ«ã‚’å°‘ã—ç·©å’Œã™ã‚‹"
@@ -3236,7 +3241,7 @@ msgstr ""
#. Strings for arguments in help texts.
#: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81
-#: src/strings.c:88 src/strip.c:96
+#: src/strings.c:88 src/strip.c:99
msgid "[FILE...]"
msgstr "[ãµãã„ã‚‹...]"
@@ -3321,7 +3326,7 @@ msgid ""
"a relocation modifies memory at offset %llu in a write-protected segment\n"
msgstr ""
-#: src/nm.c:67 src/strip.c:68
+#: src/nm.c:67 src/strip.c:70
msgid "Output selection:"
msgstr "出力é¸æŠž:"
@@ -3386,7 +3391,7 @@ msgstr "å¼±ã„シンボルã«å°ã‚’点ã‘ã‚‹"
msgid "Print size of defined symbols"
msgstr "定義ã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«ã®å°åˆ·ã‚µã‚¤ã‚º"
-#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73
+#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73
msgid "Output options:"
msgstr "出力オプション:"
@@ -3416,18 +3421,18 @@ msgstr "ãµãã„ã‚‹ ã‹ã‚‰ã‚·ãƒ³ãƒœãƒ«ã‚’表示 (デフォルトã§ã¯a.out)。
msgid "Output formatting"
msgstr "出力形å¼:"
-#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128
+#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131
#, fuzzy, c-format
msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: 内部エラー %d (%s-%s): %s"
#: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309
-#: src/strip.c:2299
+#: src/strip.c:2421
#, c-format
msgid "while closing '%s'"
msgstr "'%s' ã‚’é–‰ã˜ã¦ã„る最中"
-#: src/nm.c:404 src/objdump.c:281 src/strip.c:378
+#: src/nm.c:404 src/objdump.c:281 src/strip.c:443
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: ファイル形å¼ã‚’èªè­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ"
@@ -3471,9 +3476,9 @@ msgstr "検索ツリーを生æˆã§ãã¾ã›ã‚“"
#: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664
#: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314
#: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315
-#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439
-#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466
-#: src/strip.c:507
+#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530
+#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466
+#: src/strip.c:572
#, c-format
msgid "cannot get section header string table index"
msgstr "セクションヘッダー文字列テーブル索引ãŒå¾—られã¾ã›ã‚“"
@@ -3755,7 +3760,7 @@ msgstr "ä¸æ˜Žãª DWARF デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s'.\n"
msgid "cannot generate Elf descriptor: %s"
msgstr "Elf 記述å­ã‚’生æˆã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576
+#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
@@ -3765,7 +3770,7 @@ msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
msgid "cannot get section: %s"
msgstr "セクションを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662
+#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753
#: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565
#: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109
#: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650
@@ -3779,8 +3784,8 @@ msgstr "セクションヘッダーを得られã¾ã›ã‚“: %s"
msgid "cannot get section name"
msgstr "セクションを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899
-#: src/readelf.c:8076
+#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990
+#: src/readelf.c:8167
#, c-format
msgid "cannot get %s content: %s"
msgstr "%s ã®å†…容を得られã¾ã›ã‚“: %s"
@@ -4141,8 +4146,8 @@ msgstr "<ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«>"
msgid "<INVALID SECTION>"
msgstr "<ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³>"
-#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533
-#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591
+#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624
+#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682
msgid "Couldn't uncompress section"
msgstr ""
@@ -4152,7 +4157,7 @@ msgid "cannot get section [%zd] header: %s"
msgstr "セクションヘッダーを得られã¾ã›ã‚“: %s"
#: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654
-#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734
+#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759
#, fuzzy, c-format
msgid "invalid sh_link value in section %zu"
msgstr "ä¸å½“㪠.debug_line セクション"
@@ -4588,46 +4593,46 @@ msgstr "%s+%#<PRIx64>"
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:4056
+#: src/readelf.c:4081
msgid "empty block"
msgstr "空ブロック"
-#: src/readelf.c:4059
+#: src/readelf.c:4084
#, c-format
msgid "%zu byte block:"
msgstr "%zu ãƒã‚¤ãƒˆã®ãƒ–ロック:"
-#: src/readelf.c:4456
+#: src/readelf.c:4481
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-#: src/readelf.c:4513
+#: src/readelf.c:4538
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr ""
-#: src/readelf.c:4520
+#: src/readelf.c:4545
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr ""
-#: src/readelf.c:4527
+#: src/readelf.c:4552
#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr ""
-#: src/readelf.c:4616
+#: src/readelf.c:4641
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr ""
-#: src/readelf.c:4624
+#: src/readelf.c:4649
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr ""
-#: src/readelf.c:4650
+#: src/readelf.c:4675
#, c-format
msgid ""
"\n"
@@ -4638,7 +4643,7 @@ msgstr ""
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
" [ コード]\n"
-#: src/readelf.c:4658
+#: src/readelf.c:4683
#, c-format
msgid ""
"\n"
@@ -4647,30 +4652,30 @@ msgstr ""
"\n"
"オフセット %<PRIu64> ã®ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³:\n"
-#: src/readelf.c:4671
+#: src/readelf.c:4696
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** 略語を読んã§ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s\n"
-#: src/readelf.c:4687
+#: src/readelf.c:4712
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] オフセット: %<PRId64>ã€å­: %sã€ã‚¿ã‚°: %s\n"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745
msgid "yes"
msgstr "ã¯ã„"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745
msgid "no"
msgstr "ã„ã„ãˆ"
-#: src/readelf.c:4724 src/readelf.c:4797
+#: src/readelf.c:4749 src/readelf.c:4822
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr ".debug_aragnes ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:4739
+#: src/readelf.c:4764
#, c-format
msgid ""
"\n"
@@ -4683,20 +4688,20 @@ msgstr[0] ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:4770
+#: src/readelf.c:4795
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4772
+#: src/readelf.c:4797
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
" [%*zu] 開始: %0#*<PRIx64>ã€é•·ã•: %5<PRIu64>ã€CU DIE オフセット: %6<PRId64>\n"
-#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487
-#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728
+#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515
+#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819
#, c-format
msgid ""
"\n"
@@ -4705,7 +4710,7 @@ msgstr ""
"\n"
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:4815 src/readelf.c:6513
+#: src/readelf.c:4840 src/readelf.c:6541
#, fuzzy, c-format
msgid ""
"\n"
@@ -4714,86 +4719,86 @@ msgstr ""
"\n"
"オフセット %Zu ã®ãƒ†ãƒ¼ãƒ–ル:\n"
-#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524
+#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:4835
+#: src/readelf.c:4860
#, fuzzy, c-format
msgid ""
"\n"
" Length: %6<PRIu64>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:4847
+#: src/readelf.c:4872
#, fuzzy, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:4851
+#: src/readelf.c:4876
#, c-format
msgid "unsupported aranges version"
msgstr ""
-#: src/readelf.c:4862
+#: src/readelf.c:4887
#, fuzzy, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:4868
+#: src/readelf.c:4893
#, fuzzy, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:4872
+#: src/readelf.c:4897
#, fuzzy, c-format
msgid "unsupported address size"
msgstr "アドレス値ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: src/readelf.c:4877
+#: src/readelf.c:4902
#, fuzzy, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
"\n"
msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:4881
+#: src/readelf.c:4906
#, c-format
msgid "unsupported segment size"
msgstr ""
-#: src/readelf.c:4921
+#: src/readelf.c:4946
#, fuzzy, c-format
msgid " %s..%s (%<PRIx64>)\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:4924
+#: src/readelf.c:4949
#, fuzzy, c-format
msgid " %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4933
+#: src/readelf.c:4958
#, c-format
msgid " %zu padding bytes\n"
msgstr ""
-#: src/readelf.c:4951
+#: src/readelf.c:4976
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:4981 src/readelf.c:7046
+#: src/readelf.c:5006 src/readelf.c:7074
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n"
-#: src/readelf.c:5003 src/readelf.c:7068
+#: src/readelf.c:5028 src/readelf.c:7096
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] ベースアドレス %s\n"
-#: src/readelf.c:5010 src/readelf.c:7075
+#: src/readelf.c:5035 src/readelf.c:7103
#, fuzzy, c-format
msgid " [%6tx] empty list\n"
msgstr ""
@@ -4802,27 +4807,27 @@ msgstr ""
#. We have an address range entry.
#. First address range entry in a list.
-#: src/readelf.c:5021
+#: src/readelf.c:5046
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:5023
+#: src/readelf.c:5048
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:5259
+#: src/readelf.c:5284
#, fuzzy
msgid " <INVALID DATA>\n"
msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n"
-#: src/readelf.c:5512
+#: src/readelf.c:5537
#, fuzzy, c-format
msgid "cannot get ELF: %s"
msgstr "次㮠DIE を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:5529
+#: src/readelf.c:5554
#, c-format
msgid ""
"\n"
@@ -4831,7 +4836,7 @@ msgstr ""
"\n"
"オフセット %3$#<PRIx64> 㮠フレーム情報呼出ã—セクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:5579
+#: src/readelf.c:5604
#, c-format
msgid ""
"\n"
@@ -4840,50 +4845,50 @@ msgstr ""
"\n"
" [%6tx] ゼロ終端\n"
-#: src/readelf.c:5672 src/readelf.c:5827
+#: src/readelf.c:5697 src/readelf.c:5852
#, fuzzy, c-format
msgid "invalid augmentation length"
msgstr "ä¸å½“ãªæ‹¡å¤§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰"
-#: src/readelf.c:5687
+#: src/readelf.c:5712
msgid "FDE address encoding: "
msgstr "FDE アドレスエンコード"
-#: src/readelf.c:5693
+#: src/readelf.c:5718
msgid "LSDA pointer encoding: "
msgstr "LSDA ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰:"
-#: src/readelf.c:5804
+#: src/readelf.c:5829
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:5811
+#: src/readelf.c:5836
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:5848
+#: src/readelf.c:5873
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sLSDA ãƒã‚¤ãƒ³ã‚¿ãƒ¼: %#<PRIx64>\n"
-#: src/readelf.c:5903
+#: src/readelf.c:5928
#, c-format
msgid "cannot get attribute code: %s"
msgstr "属性コードを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:5912
+#: src/readelf.c:5937
#, c-format
msgid "cannot get attribute form: %s"
msgstr "属性様å¼ã‚’得られã¾ã›ã‚“: %s"
-#: src/readelf.c:5927
+#: src/readelf.c:5952
#, c-format
msgid "cannot get attribute value: %s"
msgstr "属性値を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:6226
+#: src/readelf.c:6254
#, c-format
msgid ""
"\n"
@@ -4894,7 +4899,7 @@ msgstr ""
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
" [オフセット]\n"
-#: src/readelf.c:6258
+#: src/readelf.c:6286
#, fuzzy, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -4906,7 +4911,7 @@ msgstr ""
" ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %2$<PRIu16>ã€ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %3$<PRIu64>ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¤§"
"ãã•: %4$<PRIu8>ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å¤§ãã•: %5$<PRIu8>\n"
-#: src/readelf.c:6267
+#: src/readelf.c:6295
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -4917,35 +4922,35 @@ msgstr ""
" ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %2$<PRIu16>ã€ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %3$<PRIu64>ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¤§"
"ãã•: %4$<PRIu8>ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å¤§ãã•: %5$<PRIu8>\n"
-#: src/readelf.c:6292
+#: src/readelf.c:6320
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"セクション '%2$s' 㮠オフセット %1$<PRIu64> ã® DIE を得られã¾ã›ã‚“: %3$s"
-#: src/readelf.c:6306
+#: src/readelf.c:6334
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "DIE オフセットを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:6315
+#: src/readelf.c:6343
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"セクション '%2$s' 中ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ %1$<PRIu64> ã® DIE ã®ã‚¿ã‚°ã‚’得られã¾ã›ã‚“: "
"%3$s"
-#: src/readelf.c:6347
+#: src/readelf.c:6375
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "次㮠DIE を得られã¾ã›ã‚“: %s\n"
-#: src/readelf.c:6355
+#: src/readelf.c:6383
#, c-format
msgid "cannot get next DIE: %s"
msgstr "次㮠DIE を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:6391
+#: src/readelf.c:6419
#, fuzzy, c-format
msgid ""
"\n"
@@ -4955,13 +4960,13 @@ msgstr ""
"\n"
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:6500
+#: src/readelf.c:6528
#, c-format
msgid "cannot get line data section data: %s"
msgstr "ラインデータセクションデータを得られã¾ã›ã‚“: %s"
#. Print what we got so far.
-#: src/readelf.c:6570
+#: src/readelf.c:6598
#, fuzzy, c-format
msgid ""
"\n"
@@ -4989,18 +4994,18 @@ msgstr ""
"\n"
"命令コード:\n"
-#: src/readelf.c:6591
+#: src/readelf.c:6619
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "セクション [%2$zu] '%3$s' 中ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ %1$tu ã«ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:6606
+#: src/readelf.c:6634
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] " [%*<PRIuFAST8>] %hhu パラメーター\n"
-#: src/readelf.c:6614
+#: src/readelf.c:6642
msgid ""
"\n"
"Directory table:"
@@ -5008,7 +5013,7 @@ msgstr ""
"\n"
"ディレクトリーテーブル:"
-#: src/readelf.c:6630
+#: src/readelf.c:6658
msgid ""
"\n"
"File name table:\n"
@@ -5018,7 +5023,7 @@ msgstr ""
"ファイルåテーブル:\n"
" Entry Dir 時刻 大ãã• åå‰"
-#: src/readelf.c:6665
+#: src/readelf.c:6693
msgid ""
"\n"
"Line number statements:"
@@ -5026,119 +5031,119 @@ msgstr ""
"\n"
"è¡Œ ç•ªå· æ–‡:"
-#: src/readelf.c:6716
+#: src/readelf.c:6744
#, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr ""
-#: src/readelf.c:6752
+#: src/readelf.c:6780
#, fuzzy, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
-#: src/readelf.c:6757
+#: src/readelf.c:6785
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
-#: src/readelf.c:6777
+#: src/readelf.c:6805
#, c-format
msgid " extended opcode %u: "
msgstr " 拡張命令コード %u: "
-#: src/readelf.c:6782
+#: src/readelf.c:6810
#, fuzzy
msgid " end of sequence"
msgstr "列ã®çµ‚ã‚ã‚Š"
-#: src/readelf.c:6801
+#: src/readelf.c:6829
#, fuzzy, c-format
msgid " set address to %s\n"
msgstr "アドレスを %s ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:6828
+#: src/readelf.c:6856
#, fuzzy, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
"新ファイルを定義ã™ã‚‹: dir=%uã€mtime=%<PRIu64>ã€é•·ã•h=%<PRIu64>ã€åå‰=%s\n"
-#: src/readelf.c:6841
+#: src/readelf.c:6869
#, fuzzy, c-format
msgid " set discriminator to %u\n"
msgstr "カラムを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
#. Unknown, ignore it.
-#: src/readelf.c:6846
+#: src/readelf.c:6874
#, fuzzy
msgid " unknown opcode"
msgstr "ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰"
#. Takes no argument.
-#: src/readelf.c:6858
+#: src/readelf.c:6886
msgid " copy"
msgstr "複写"
-#: src/readelf.c:6869
+#: src/readelf.c:6897
#, fuzzy, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr "アドレスを %u ã ã‘進ã‚㦠%s ã«ã™ã‚‹\n"
-#: src/readelf.c:6873
+#: src/readelf.c:6901
#, fuzzy, c-format
msgid " advance address by %u to %s\n"
msgstr "アドレスを %u ã ã‘進ã‚㦠%s ã«ã™ã‚‹\n"
-#: src/readelf.c:6884
+#: src/readelf.c:6912
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr "行を定数 %d ã ã‘進ã‚㦠%<PRId64> ã«ã™ã‚‹\n"
-#: src/readelf.c:6892
+#: src/readelf.c:6920
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:6902
+#: src/readelf.c:6930
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr "カラムを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:6909
+#: src/readelf.c:6937
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " '%s' ã‚’ %<PRIuFAST8> ã«è¨­å®šã™ã‚‹\n"
#. Takes no argument.
-#: src/readelf.c:6915
+#: src/readelf.c:6943
msgid " set basic block flag"
msgstr "基本ブロックフラグを設定ã™ã‚‹"
-#: src/readelf.c:6928
+#: src/readelf.c:6956
#, fuzzy, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr "アドレスを定数 %u ã ã‘済ã‚㦠%s ã«ã™ã‚‹\n"
-#: src/readelf.c:6932
+#: src/readelf.c:6960
#, fuzzy, c-format
msgid " advance address by constant %u to %s\n"
msgstr "アドレスを定数 %u ã ã‘済ã‚㦠%s ã«ã™ã‚‹\n"
-#: src/readelf.c:6950
+#: src/readelf.c:6978
#, fuzzy, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr "アドレスを固定値 %u ã ã‘進ã‚㦠%s ã«ã™ã‚‹\n"
#. Takes no argument.
-#: src/readelf.c:6959
+#: src/readelf.c:6987
msgid " set prologue end flag"
msgstr "プロローグ終了フラグを設定ã™ã‚‹"
#. Takes no argument.
-#: src/readelf.c:6964
+#: src/readelf.c:6992
msgid " set epilogue begin flag"
msgstr "エピローグ開始フラグを設定ã™ã‚‹"
-#: src/readelf.c:6973
+#: src/readelf.c:7001
#, fuzzy, c-format
msgid " set isa to %u\n"
msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
@@ -5146,104 +5151,104 @@ msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
#. 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:6982
+#: src/readelf.c:7010
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] " %<PRIu8> 個ã®ãƒ‘ラメーターã®ã‚ã‚‹ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰:"
-#: src/readelf.c:7014
+#: src/readelf.c:7042
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr ".debug_loc ã®å†…容を得られã¾ã›ã‚“: %s"
#. First entry in a list.
-#: src/readelf.c:7089
+#: src/readelf.c:7117
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:7091
+#: src/readelf.c:7119
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:7098 src/readelf.c:7986
+#: src/readelf.c:7126 src/readelf.c:8077
#, fuzzy
msgid " <INVALID DATA>\n"
msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n"
-#: src/readelf.c:7150 src/readelf.c:7312
+#: src/readelf.c:7178 src/readelf.c:7340
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "マクロ情報セクションã®ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“: %s"
-#: src/readelf.c:7230
+#: src/readelf.c:7258
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** 最後ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®çµ‚端ã—ã¦ã„ãªã„文字列"
-#: src/readelf.c:7253
+#: src/readelf.c:7281
#, fuzzy, c-format
msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
msgstr "%*s*** 最後ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®çµ‚端ã—ã¦ã„ãªã„文字列"
-#: src/readelf.c:7353
+#: src/readelf.c:7381
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " 所有者 大ãã•\n"
-#: src/readelf.c:7365
+#: src/readelf.c:7393
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:7371 src/readelf.c:8105
+#: src/readelf.c:7399 src/readelf.c:8196
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:7378
+#: src/readelf.c:7406
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " å…¥å£ç‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹ : %#<PRIx64>\n"
-#: src/readelf.c:7381
+#: src/readelf.c:7409
#, fuzzy, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:7389
+#: src/readelf.c:7417
#, fuzzy, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:7402
+#: src/readelf.c:7430
#, fuzzy, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " %<PRIu8> 個ã®ãƒ‘ラメーターã®ã‚ã‚‹ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰:"
-#: src/readelf.c:7409
+#: src/readelf.c:7437
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:7421
+#: src/readelf.c:7449
#, fuzzy, c-format
msgid " %<PRIu8> arguments:"
msgstr " [%*<PRIuFAST8>] %hhu パラメーター\n"
-#: src/readelf.c:7449
+#: src/readelf.c:7477
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:7686
+#: src/readelf.c:7777
#, c-format
msgid "vendor opcode not verified?"
msgstr ""
-#: src/readelf.c:7714
+#: src/readelf.c:7805
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
@@ -5251,7 +5256,7 @@ msgstr ""
# # "オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
# # " %4$*s 文字列\n" ãŒã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã®ã¯ä½•æ•…? å–ã‚Šæ•¢ãˆãš fuzzy扱ã„
-#: src/readelf.c:7755
+#: src/readelf.c:7846
#, fuzzy, c-format
msgid ""
"\n"
@@ -5262,12 +5267,12 @@ msgstr ""
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
" %4$*s 文字列\n"
-#: src/readelf.c:7769
+#: src/readelf.c:7860
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** 文字列ã®èª­è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼: %s\n"
-#: src/readelf.c:7789
+#: src/readelf.c:7880
#, c-format
msgid ""
"\n"
@@ -5276,7 +5281,7 @@ msgstr ""
"\n"
"呼出ã—フレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:7891
+#: src/readelf.c:7982
#, c-format
msgid ""
"\n"
@@ -5285,22 +5290,22 @@ msgstr ""
"\n"
"例外å–扱ã„テーブルセクション [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:7914
+#: src/readelf.c:8005
#, c-format
msgid " LPStart encoding: %#x "
msgstr " LPStart コード化: %#x "
-#: src/readelf.c:7926
+#: src/readelf.c:8017
#, c-format
msgid " TType encoding: %#x "
msgstr "TType コード化: %#x "
-#: src/readelf.c:7941
+#: src/readelf.c:8032
#, c-format
msgid " Call site encoding: %#x "
msgstr "呼出ã—サイトコード化: %#x "
-#: src/readelf.c:7954
+#: src/readelf.c:8045
msgid ""
"\n"
" Call site table:"
@@ -5308,7 +5313,7 @@ msgstr ""
"\n"
" 呼出ã—サイトテーブル:"
-#: src/readelf.c:7968
+#: src/readelf.c:8059
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5321,12 +5326,12 @@ msgstr ""
" 離ç€é™¸å ´: %#<PRIx64>\n"
" 行動: %u\n"
-#: src/readelf.c:8041
+#: src/readelf.c:8132
#, c-format
msgid "invalid TType encoding"
msgstr "ä¸å½“㪠TType コード化"
-#: src/readelf.c:8067
+#: src/readelf.c:8158
#, fuzzy, c-format
msgid ""
"\n"
@@ -5336,37 +5341,37 @@ msgstr ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:8096
+#: src/readelf.c:8187
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:8114
+#: src/readelf.c:8205
#, fuzzy, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:8121
+#: src/readelf.c:8212
#, fuzzy, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:8128
+#: src/readelf.c:8219
#, fuzzy, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:8135
+#: src/readelf.c:8226
#, fuzzy, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:8142
+#: src/readelf.c:8233
#, fuzzy, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:8156
+#: src/readelf.c:8247
#, fuzzy, c-format
msgid ""
"\n"
@@ -5376,7 +5381,7 @@ msgstr ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:8181
+#: src/readelf.c:8272
#, fuzzy, c-format
msgid ""
"\n"
@@ -5386,7 +5391,7 @@ msgstr ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:8210
+#: src/readelf.c:8301
#, fuzzy, c-format
msgid ""
"\n"
@@ -5396,7 +5401,7 @@ msgstr ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:8243
+#: src/readelf.c:8334
#, fuzzy, c-format
msgid ""
"\n"
@@ -5405,17 +5410,17 @@ msgstr ""
"\n"
"オフセット %#0<PRIx64> ã«ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«ãƒ†ãƒ¼ãƒ–ル\n"
-#: src/readelf.c:8330
+#: src/readelf.c:8421
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "デãƒãƒƒã‚°å†…容記述å­ã‚’得られã¾ã›ã‚“: %s"
-#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277
+#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368
#, c-format
msgid "cannot convert core note data: %s"
msgstr "コアノートデータã®å¤‰æ›ãŒã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:8849
+#: src/readelf.c:8940
#, c-format
msgid ""
"\n"
@@ -5424,21 +5429,21 @@ msgstr ""
"\n"
"%*s... < %u 回ã®ç¹°è¿”ã—> ..."
-#: src/readelf.c:9356
+#: src/readelf.c:9447
msgid " Owner Data size Type\n"
msgstr " 所有者 データ大ãã•ã‚¿ã‚¤ãƒ—\n"
-#: src/readelf.c:9374
+#: src/readelf.c:9465
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:9424
+#: src/readelf.c:9515
#, c-format
msgid "cannot get content of note section: %s"
msgstr "ノートセクションã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:9451
+#: src/readelf.c:9542
#, c-format
msgid ""
"\n"
@@ -5448,7 +5453,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> ã® %3$<PRIu64> ãƒã‚¤ãƒˆã®ãƒŽãƒ¼ãƒˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$2zu] "
"'%2$s':\n"
-#: src/readelf.c:9474
+#: src/readelf.c:9565
#, c-format
msgid ""
"\n"
@@ -5457,7 +5462,7 @@ msgstr ""
"\n"
"オフセット %2$#0<PRIx64> ã® %1$<PRIu64> ãƒã‚¤ãƒˆã®ãƒŽãƒ¼ãƒˆã‚»ã‚°ãƒ¡ãƒ³ãƒˆ:\n"
-#: src/readelf.c:9520
+#: src/readelf.c:9611
#, fuzzy, c-format
msgid ""
"\n"
@@ -5466,12 +5471,12 @@ msgstr ""
"\n"
"セクション [%Zu] '%s' ã«ã¯ãƒ€ãƒ³ãƒ—ã™ã¹ãデータãŒã‚ã‚Šã¾ã›ã‚“。\n"
-#: src/readelf.c:9547 src/readelf.c:9598
+#: src/readelf.c:9638 src/readelf.c:9689
#, fuzzy, c-format
msgid "cannot get data for section [%zu] '%s': %s"
msgstr "セクション [%Zu] '%s' ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãŒå¾—られã¾ã›ã‚“: %s"
-#: src/readelf.c:9552
+#: src/readelf.c:9643
#, fuzzy, c-format
msgid ""
"\n"
@@ -5481,7 +5486,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$Zu] '%2$s' ã®16進ダン"
"プã€%3$<PRIu64> ãƒã‚¤ãƒˆ:\n"
-#: src/readelf.c:9557
+#: src/readelf.c:9648
#, fuzzy, c-format
msgid ""
"\n"
@@ -5492,7 +5497,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$Zu] '%2$s' ã®16進ダン"
"プã€%3$<PRIu64> ãƒã‚¤ãƒˆ:\n"
-#: src/readelf.c:9571
+#: src/readelf.c:9662
#, fuzzy, c-format
msgid ""
"\n"
@@ -5501,7 +5506,7 @@ msgstr ""
"\n"
"セクション [%Zu] '%s' ã«ã¯ãƒ€ãƒ³ãƒ—ã™ã¹ãデータãŒã‚ã‚Šã¾ã›ã‚“。\n"
-#: src/readelf.c:9603
+#: src/readelf.c:9694
#, fuzzy, c-format
msgid ""
"\n"
@@ -5511,7 +5516,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' ã«ã¯ %3$<PRIu64> ãƒ"
"イトã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:9608
+#: src/readelf.c:9699
#, fuzzy, c-format
msgid ""
"\n"
@@ -5522,7 +5527,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' ã«ã¯ %3$<PRIu64> ãƒ"
"イトã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:9657
+#: src/readelf.c:9748
#, c-format
msgid ""
"\n"
@@ -5531,7 +5536,7 @@ msgstr ""
"\n"
"セクション [%lu] ãŒã‚ã‚Šã¾ã›ã‚“"
-#: src/readelf.c:9686
+#: src/readelf.c:9777
#, c-format
msgid ""
"\n"
@@ -5540,12 +5545,12 @@ msgstr ""
"\n"
"セクション '%s' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: src/readelf.c:9743
+#: src/readelf.c:9834
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "アーカイブã®ã‚·ãƒ³ãƒœãƒ«ç´¢å¼• '%s' を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:9746
+#: src/readelf.c:9837
#, c-format
msgid ""
"\n"
@@ -5554,7 +5559,7 @@ msgstr ""
"\n"
"アーカイブ '%s' ã«ã¯ã‚·ãƒ³ãƒœãƒ«ç´¢å¼•ãŒã‚ã‚Šã¾ã›ã‚“\n"
-#: src/readelf.c:9750
+#: src/readelf.c:9841
#, fuzzy, c-format
msgid ""
"\n"
@@ -5563,12 +5568,12 @@ msgstr ""
"\n"
"アーカイブ '%s' ã®ç´¢å¼•ã«ã¯ %Zu é …ç›®ã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:9768
+#: src/readelf.c:9859
#, fuzzy, c-format
msgid "cannot extract member at offset %zu in '%s': %s"
msgstr "'%2$s' 㮠オフセット %1$Zu ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’抽出ã§ãã¾ã›ã‚“: %3$s"
-#: src/readelf.c:9773
+#: src/readelf.c:9864
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "アーカイブメンãƒãƒ¼ '%s' ã«ã¯ä»¥ä¸‹ãŒã‚ã‚Šã¾ã™:\n"
@@ -5825,82 +5830,94 @@ msgstr ""
msgid "Skipping section %zd '%s' data outside file"
msgstr ""
-#: src/strip.c:69
+#: src/strip.c:71
msgid "Place stripped output into FILE"
msgstr "ã¯ãŽå–ã£ãŸå‡ºåŠ›ã‚’ ãµãã„ã‚‹ ã«ç½®ã"
-#: src/strip.c:70
+#: src/strip.c:72
msgid "Extract the removed sections into FILE"
msgstr "抽出ã—ãŸå–り除ã„ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’ ãµãã„ã‚‹ ã«ç½®ã"
-#: src/strip.c:71
+#: src/strip.c:73
msgid "Embed name FILE instead of -f argument"
msgstr "-f パラメーターã®ä»£ã‚ã‚Šã« åå‰ ãµãã„ã‚‹ を有効ã«ã™ã‚‹"
-#: src/strip.c:75
+#: src/strip.c:77
msgid "Remove all debugging symbols"
msgstr "デãƒãƒƒã‚°ç”¨ã®ã‚·ãƒ³ãƒœãƒ«ã‚’å…¨ã¦å–り除ã"
-#: src/strip.c:79
+#: src/strip.c:81
msgid "Remove section headers (not recommended)"
msgstr ""
-#: src/strip.c:81
+#: src/strip.c:83
msgid "Copy modified/access timestamps to the output"
msgstr "修正/アクセスタイムスタンプを出力ã¸è¤‡å†™ã™ã‚‹"
-#: src/strip.c:83
+#: src/strip.c:85
msgid ""
"Resolve all trivial relocations between debug sections if the removed "
"sections are placed in a debug file (only relevant for ET_REL files, "
"operation is not reversable, needs -f)"
msgstr ""
-#: src/strip.c:85
+#: src/strip.c:87
msgid "Remove .comment section"
msgstr ".comment セクションをå–り除ã"
+#: src/strip.c:88
+msgid ""
+"Remove the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once. Only non-allocated sections can be removed."
+msgstr ""
+
+#: src/strip.c:89
+msgid ""
+"Keep the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once."
+msgstr ""
+
#. Short description of program.
-#: src/strip.c:93
+#: src/strip.c:96
msgid "Discard symbols from object files."
msgstr "オブジェクトファイルã‹ã‚‰ã‚·ãƒ³ãƒœãƒ«ã‚’破棄ã™ã‚‹"
-#: src/strip.c:187
+#: src/strip.c:242
#, c-format
msgid "--reloc-debug-sections used without -f"
msgstr ""
-#: src/strip.c:201
+#: src/strip.c:256
#, c-format
msgid "Only one input file allowed together with '-o' and '-f'"
msgstr "'-o' 㨠'-f' ã¨ä¸€ç·’ã®å ´åˆã¯å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã¯ 1 ã¤ã—ã‹èªã‚られã¾ã›ã‚“"
-#: src/strip.c:223
+#: src/strip.c:279
#, c-format
msgid "-f option specified twice"
msgstr "-f オプション㌠2 回指定ã•ã‚Œã¦ã„ã¾ã™"
-#: src/strip.c:232
+#: src/strip.c:288
#, c-format
msgid "-F option specified twice"
msgstr "-F オプション㌠2 回指定ã•ã‚Œã¦ã„ã¾ã™"
-#: src/strip.c:265
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr "-R オプション㯠.comment セクションã®ã¿ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™"
+#: src/strip.c:347
+#, fuzzy, c-format
+msgid "cannot both keep and remove .comment section"
+msgstr ".comment セクションをå–り除ã"
-#: src/strip.c:307 src/strip.c:331
+#: src/strip.c:372 src/strip.c:396
#, c-format
msgid "cannot stat input file '%s'"
msgstr "入力ファイル '%s' ã‚’ stat ã§ãã¾ã›ã‚“"
-#: src/strip.c:321
+#: src/strip.c:386
#, c-format
msgid "while opening '%s'"
msgstr "'%s' ã‚’é–‹ã„ã¦ã„ã‚‹é–“"
-#: src/strip.c:359
+#: src/strip.c:424
#, c-format
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: アーカイブã‹ã‚‰æŠœã出ã—ã¦ã„る時㯠-o ã‚„ -f ã¯ä½¿ãˆã¾ã›ã‚“"
@@ -5911,107 +5928,117 @@ msgstr "%s: アーカイブã‹ã‚‰æŠœã出ã—ã¦ã„る時㯠-o ã‚„ -f ã¯ä½¿ãˆ
#. result = handle_ar (fd, elf, NULL, fname,
#. preserve_dates ? tv : NULL);
#.
-#: src/strip.c:371
+#: src/strip.c:436
#, fuzzy, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: アーカイブã‹ã‚‰æŠœã出ã—ã¦ã„る時㯠-o ã‚„ -f ã¯ä½¿ãˆã¾ã›ã‚“"
-#: src/strip.c:470
+#: src/strip.c:535
#, c-format
msgid "cannot open EBL backend"
msgstr "EBL ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’é–‹ã‘ã¾ã›ã‚“"
-#: src/strip.c:515
+#: src/strip.c:580
#, fuzzy, c-format
msgid "cannot get number of phdrs"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
-#: src/strip.c:531 src/strip.c:555
+#: src/strip.c:596 src/strip.c:620
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "æ–°ã—ã„ファイル '%s' を生æˆã§ãã¾ã›ã‚“: %s"
-#: src/strip.c:621
+#: src/strip.c:686
#, c-format
msgid "illformed file '%s'"
msgstr "ä¸é©æ ¼ãªãƒ•ã‚¡ã‚¤ãƒ« '%s'"
-#: src/strip.c:955 src/strip.c:1054
+#: src/strip.c:696
+#, fuzzy, c-format
+msgid "Cannot remove allocated section '%s'"
+msgstr "PLT セクションを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
+
+#: src/strip.c:705
+#, fuzzy, c-format
+msgid "Cannot both keep and remove section '%s'"
+msgstr "0番目ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã‚’得られã¾ã›ã‚“: %s"
+
+#: src/strip.c:1061 src/strip.c:1160
#, c-format
msgid "while generating output file: %s"
msgstr "出力ファイルを生æˆã—ã¦ã„ã‚‹é–“: %s"
-#: src/strip.c:1020 src/strip.c:2090
+#: src/strip.c:1126 src/strip.c:2208
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:1037
+#: src/strip.c:1143
#, c-format
msgid "while preparing output for '%s'"
msgstr "'%s' ã®ãŸã‚ã®å‡ºåŠ›ã‚’準備ã—ã¦ã„ã‚‹é–“"
-#: src/strip.c:1095 src/strip.c:1158
+#: src/strip.c:1205 src/strip.c:1268
#, c-format
msgid "while create section header section: %s"
msgstr "セクションヘッダーセクションを生æˆã—ã¦ã„ã‚‹é–“: %s"
-#: src/strip.c:1104
+#: src/strip.c:1214
#, c-format
msgid "cannot allocate section data: %s"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/strip.c:1170
+#: src/strip.c:1280
#, c-format
msgid "while create section header string table: %s"
msgstr "セクションヘッダー文字列テーブルを生æˆä¸­: %s"
-#: src/strip.c:1177
+#: src/strip.c:1287
#, fuzzy, c-format
msgid "no memory to create section header string table"
msgstr "セクションヘッダー文字列テーブルを生æˆä¸­: %s"
-#: src/strip.c:1384
+#: src/strip.c:1497
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr ""
-#: src/strip.c:1876
+#: src/strip.c:1994
#, fuzzy, c-format
msgid "bad relocation"
msgstr "リロケーションを表示"
-#: src/strip.c:2001 src/strip.c:2114
+#: src/strip.c:2119 src/strip.c:2232
#, c-format
msgid "while writing '%s': %s"
msgstr "'%s' を書込ã¿ä¸­: %s"
-#: src/strip.c:2012
+#: src/strip.c:2130
#, c-format
msgid "while creating '%s'"
msgstr "'%s' を生æˆä¸­"
-#: src/strip.c:2035
+#: src/strip.c:2153
#, c-format
msgid "while computing checksum for debug information"
msgstr "デãƒãƒƒã‚°æƒ…å ±ã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’計算中"
-#: src/strip.c:2099
+#: src/strip.c:2217
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: ファイルを読込ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:2139 src/strip.c:2159
+#: src/strip.c:2257 src/strip.c:2277
#, fuzzy, c-format
msgid "while writing '%s'"
msgstr "'%s' を書込ã¿ä¸­: %s"
-#: src/strip.c:2196 src/strip.c:2203
+#: src/strip.c:2314 src/strip.c:2321
#, c-format
msgid "error while finishing '%s': %s"
msgstr "'%s' ã®çµ‚了中ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:2220 src/strip.c:2292
+#: src/strip.c:2338 src/strip.c:2414
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "'%s' ã®ã‚¢ã‚¯ã‚»ã‚¹ã¨å¤‰æ›´æ—¥ä»˜ã‚’設定ã§ãã¾ã›ã‚“"
@@ -6384,12 +6411,12 @@ msgstr "出力é¸æŠž:"
msgid "Show instances of inlined functions"
msgstr ""
+#~ msgid "-R option supports only .comment section"
+#~ msgstr "-R オプション㯠.comment セクションã®ã¿ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™"
+
#~ msgid "Written by %s.\n"
#~ msgstr "%s ã«ã‚ˆã£ã¦æ›¸ã‹ã‚Œã¾ã—ãŸã€‚\n"
-#~ msgid "cannot allocate PLT section: %s"
-#~ msgstr "PLT セクションを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-
#~ msgid "cannot allocate PLTREL section: %s"
#~ msgstr "PLTREL セクションを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
@@ -6815,9 +6842,6 @@ msgstr ""
#~ msgid "internal error: non-nobits section follows nobits section"
#~ msgstr "内部エラー: éž nobits セクション㌠nobits セクションã«ç¶šãã¾ã™"
-#~ msgid "cannot get header of 0th section: %s"
-#~ msgstr "0番目ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã‚’得られã¾ã›ã‚“: %s"
-
#~ msgid "linker backend didn't specify function to relocate section"
#~ msgstr ""
#~ "リンカーãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’リロケートã™ã‚‹ãŸã‚ã®æ©Ÿèƒ½ã‚’指定ã—ã¦ã„ã¾ã›"
diff --git a/po/pl.po b/po/pl.po
index 80d2899e..13070d44 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elfutils\n"
"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2017-05-05 09:44+0200\n"
+"POT-Creation-Date: 2017-08-02 18:29+0200\n"
"PO-Revision-Date: 2016-12-29 17:48+0100\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish <trans-pl@lists.fedoraproject.org>\n"
@@ -60,7 +60,7 @@ msgstr ""
"HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n"
#: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296
-#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432
+#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432
#, c-format
msgid "memory exhausted"
msgstr "pamięć wyczerpana"
@@ -260,6 +260,11 @@ msgstr "nieprawidłowa instrukcja"
msgid "not a CU (unit) DIE"
msgstr "nie jest CU (jednostkÄ…) DIE"
+#: libdw/dwarf_error.c:98
+#, fuzzy
+msgid "unknown language code"
+msgstr " nieznana instrukcja"
+
#: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374
msgid "Input selection options:"
msgstr "Opcje wyboru wejścia:"
@@ -296,33 +301,33 @@ msgstr "Jądro ze wszystkimi modułami"
msgid "Search path for separate debuginfo files"
msgstr "Wyszukuje ścieżkę dla oddzielnych plików debuginfo"
-#: libdwfl/argp-std.c:161
+#: libdwfl/argp-std.c:164
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "dopuszczalna jest tylko jedna z opcji -e, -p, -k, -K lub --core"
-#: libdwfl/argp-std.c:234
+#: libdwfl/argp-std.c:237
msgid "cannot load kernel symbols"
msgstr "nie można wczytać symboli jądra"
#. Non-fatal to have no modules since we do have the kernel.
-#: libdwfl/argp-std.c:238
+#: libdwfl/argp-std.c:241
msgid "cannot find kernel modules"
msgstr "nie można odnaleźć modułów jądra"
-#: libdwfl/argp-std.c:255
+#: libdwfl/argp-std.c:258
msgid "cannot find kernel or modules"
msgstr "nie można odnaleźć jądra lub modułów"
-#: libdwfl/argp-std.c:294
+#: libdwfl/argp-std.c:297
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "nie można odczytać pliku core ELF: %s"
-#: libdwfl/argp-std.c:317
+#: libdwfl/argp-std.c:320
msgid "Not enough memory"
msgstr "Za mało pamięci"
-#: libdwfl/argp-std.c:327
+#: libdwfl/argp-std.c:330
msgid "No modules recognized in core file"
msgstr "Nie rozpoznano żadnych modułów w pliku core"
@@ -482,7 +487,7 @@ msgstr "Nie jest plikiem ELF ET_CORE"
msgid "No backend"
msgstr "Brak zaplecza"
-#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76
+#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76
#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
@@ -579,7 +584,7 @@ msgstr "nieprawidłowy rozmiar operanda źródłowego"
msgid "invalid size of destination operand"
msgstr "nieprawidłowy rozmiar operanda docelowego"
-#: libelf/elf_error.c:87 src/readelf.c:5114
+#: libelf/elf_error.c:87 src/readelf.c:5139
#, c-format
msgid "invalid encoding"
msgstr "nieprawidłowe kodowanie"
@@ -660,8 +665,8 @@ msgstr "dane/scn nie zgadzajÄ… siÄ™"
msgid "invalid section header"
msgstr "nieprawidłowy nagłówek sekcji"
-#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809
-#: src/readelf.c:7910 src/readelf.c:8091
+#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900
+#: src/readelf.c:8001 src/readelf.c:8182
#, c-format
msgid "invalid data"
msgstr "nieprawidłowe dane"
@@ -1284,7 +1289,7 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr "Nieprawidłowa wartość „%s†dla parametru --gaps."
#: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142
-#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490
+#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555
#: src/unstrip.c:2023 src/unstrip.c:2052
#, c-format
msgid "cannot open '%s'"
@@ -1315,7 +1320,7 @@ msgstr "nie można uzyskać zawartości sekcji %zu: %s"
msgid "cannot get relocation: %s"
msgstr "nie można uzyskać relokacji: %s"
-#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "OpcjÄ™ -o podano dwukrotnie"
@@ -1371,7 +1376,7 @@ msgstr "Wyświetla komunikat dla każdej (de)kompresowanej sekcji"
msgid "Force compression of section even if it would become larger"
msgstr "Wymusza kompresję sekcji nawet, jeśli spowodowałoby to jej zwiększenie"
-#: src/elfcompress.c:1282 src/strip.c:88
+#: src/elfcompress.c:1282 src/strip.c:91
msgid "Relax a few rules to handle slightly broken ELF files"
msgstr "Åagodzi kilka reguÅ‚, aby obsÅ‚użyć lekko uszkodzone pliki ELF"
@@ -3372,7 +3377,7 @@ msgstr "Odnajduje źródło relokacji tekstu w PLIKACH (domyślnie a.out)."
#. Strings for arguments in help texts.
#: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81
-#: src/strings.c:88 src/strip.c:96
+#: src/strings.c:88 src/strip.c:99
msgid "[FILE...]"
msgstr "[PLIK…]"
@@ -3462,7 +3467,7 @@ msgstr ""
"relokacja modyfikuje pamięć pod offsetem %llu w segmencie zabezpieczonym "
"przed zapisem\n"
-#: src/nm.c:67 src/strip.c:68
+#: src/nm.c:67 src/strip.c:70
msgid "Output selection:"
msgstr "Wybór wyjścia:"
@@ -3526,7 +3531,7 @@ msgstr "Oznacza specjalne symbole"
msgid "Print size of defined symbols"
msgstr "Wyświetla rozmiar określonych symboli"
-#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73
+#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73
msgid "Output options:"
msgstr "Opcje wyjścia:"
@@ -3555,18 +3560,18 @@ msgstr "Wyświetla listę symboli z PLIKU (domyślnie a.out)."
msgid "Output formatting"
msgstr "Formatowanie wyjścia"
-#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128
+#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131
#, c-format
msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: BÅÄ„D WEWNĘTRZNY %d (%s): %s"
#: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309
-#: src/strip.c:2299
+#: src/strip.c:2421
#, c-format
msgid "while closing '%s'"
msgstr "podczas zamykania „%sâ€"
-#: src/nm.c:404 src/objdump.c:281 src/strip.c:378
+#: src/nm.c:404 src/objdump.c:281 src/strip.c:443
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: nie rozpoznano formatu pliku"
@@ -3609,9 +3614,9 @@ msgstr "nie można utworzyć drzewa wyszukiwania"
#: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664
#: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314
#: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315
-#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439
-#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466
-#: src/strip.c:507
+#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530
+#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466
+#: src/strip.c:572
#, c-format
msgid "cannot get section header string table index"
msgstr "nie można uzyskać indeksu tabeli ciągów nagłówków sekcji"
@@ -3894,7 +3899,7 @@ msgstr "Nieznana sekcja debugowania DWARF „%sâ€.\n"
msgid "cannot generate Elf descriptor: %s"
msgstr "nie można utworzyć deskryptora ELF: %s"
-#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576
+#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "nie można określić liczby sekcji: %s"
@@ -3904,7 +3909,7 @@ msgstr "nie można określić liczby sekcji: %s"
msgid "cannot get section: %s"
msgstr "nie można uzyskać sekcji: %s"
-#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662
+#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753
#: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565
#: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109
#: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650
@@ -3918,8 +3923,8 @@ msgstr "nie można uzyskać nagłówka sekcji: %s"
msgid "cannot get section name"
msgstr "nie można uzyskać nazwy sekcji"
-#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899
-#: src/readelf.c:8076
+#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990
+#: src/readelf.c:8167
#, c-format
msgid "cannot get %s content: %s"
msgstr "nie można uzyskać zwartości %s: %s"
@@ -4291,8 +4296,8 @@ msgstr "<NIEPRAWIDÅOWY SYMBOL>"
msgid "<INVALID SECTION>"
msgstr "<NIEPRAWIDÅOWY SEKCJA>"
-#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533
-#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591
+#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624
+#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682
msgid "Couldn't uncompress section"
msgstr "Nie można dekompresować sekcji"
@@ -4302,7 +4307,7 @@ msgid "cannot get section [%zd] header: %s"
msgstr "nie można uzyskać nagłówka sekcji [%zd]: %s"
#: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654
-#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734
+#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759
#, c-format
msgid "invalid sh_link value in section %zu"
msgstr "nieprawidłowa wartość sh_link w sekcji %zu"
@@ -4819,46 +4824,46 @@ msgstr "%s+%#<PRIx64>"
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:4056
+#: src/readelf.c:4081
msgid "empty block"
msgstr "pusty blok"
-#: src/readelf.c:4059
+#: src/readelf.c:4084
#, c-format
msgid "%zu byte block:"
msgstr "%zu bajtowy blok:"
-#: src/readelf.c:4456
+#: src/readelf.c:4481
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <SKRÓCONE>\n"
-#: src/readelf.c:4513
+#: src/readelf.c:4538
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami adresu"
-#: src/readelf.c:4520
+#: src/readelf.c:4545
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami offsetu"
-#: src/readelf.c:4527
+#: src/readelf.c:4552
#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr "%s %#<PRIx64> zostało użyte z różnymi adresami podstawowymi"
-#: src/readelf.c:4616
+#: src/readelf.c:4641
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <NIEUŻYWANE ŚMIECIE W RESZCIE SEKCJI>\n"
-#: src/readelf.c:4624
+#: src/readelf.c:4649
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <NIEUŻYWANE ŚMIECIE>… %<PRIu64> bajtów…\n"
-#: src/readelf.c:4650
+#: src/readelf.c:4675
#, c-format
msgid ""
"\n"
@@ -4869,7 +4874,7 @@ msgstr ""
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
" [ Kod]\n"
-#: src/readelf.c:4658
+#: src/readelf.c:4683
#, c-format
msgid ""
"\n"
@@ -4878,30 +4883,30 @@ msgstr ""
"\n"
"Sekcja skrótów pod offsetem %<PRIu64>:\n"
-#: src/readelf.c:4671
+#: src/readelf.c:4696
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** błąd podczas odczytywania skrótu: %s\n"
-#: src/readelf.c:4687
+#: src/readelf.c:4712
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] offset: %<PRId64>, potomek: %s, znacznik: %s\n"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745
msgid "yes"
msgstr "tak"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745
msgid "no"
msgstr "nie"
-#: src/readelf.c:4724 src/readelf.c:4797
+#: src/readelf.c:4749 src/readelf.c:4822
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "nie można uzyskać zawartości .debug_aranges: %s"
-#: src/readelf.c:4739
+#: src/readelf.c:4764
#, c-format
msgid ""
"\n"
@@ -4919,12 +4924,12 @@ msgstr[2] ""
"\n"
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64> zawiera %zu wpisów:\n"
-#: src/readelf.c:4770
+#: src/readelf.c:4795
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4772
+#: src/readelf.c:4797
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -4932,8 +4937,8 @@ msgstr ""
" [%*zu] początek: %0#*<PRIx64>, długość: %5<PRIu64>, offset CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487
-#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728
+#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515
+#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819
#, c-format
msgid ""
"\n"
@@ -4942,7 +4947,7 @@ msgstr ""
"\n"
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
-#: src/readelf.c:4815 src/readelf.c:6513
+#: src/readelf.c:4840 src/readelf.c:6541
#, c-format
msgid ""
"\n"
@@ -4951,12 +4956,12 @@ msgstr ""
"\n"
"Tabela pod offsetem %zu:\n"
-#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524
+#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr "nieprawidÅ‚owe dane w sekcji [%zu] „%sâ€"
-#: src/readelf.c:4835
+#: src/readelf.c:4860
#, c-format
msgid ""
"\n"
@@ -4965,32 +4970,32 @@ msgstr ""
"\n"
" Długość: %6<PRIu64>\n"
-#: src/readelf.c:4847
+#: src/readelf.c:4872
#, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
-#: src/readelf.c:4851
+#: src/readelf.c:4876
#, c-format
msgid "unsupported aranges version"
msgstr "nieobsługiwana wersja aranges"
-#: src/readelf.c:4862
+#: src/readelf.c:4887
#, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " Offset CU: %6<PRIx64>\n"
-#: src/readelf.c:4868
+#: src/readelf.c:4893
#, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr " Offset adresu: %6<PRIu64>\n"
-#: src/readelf.c:4872
+#: src/readelf.c:4897
#, c-format
msgid "unsupported address size"
msgstr "nieobsługiwany rozmiar adresu"
-#: src/readelf.c:4877
+#: src/readelf.c:4902
#, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
@@ -4999,68 +5004,68 @@ msgstr ""
" Rozmiar segmentu: %6<PRIu64>\n"
"\n"
-#: src/readelf.c:4881
+#: src/readelf.c:4906
#, c-format
msgid "unsupported segment size"
msgstr "nieobsługiwany rozmiar segmentu"
-#: src/readelf.c:4921
+#: src/readelf.c:4946
#, c-format
msgid " %s..%s (%<PRIx64>)\n"
msgstr " %s..%s (%<PRIx64>)\n"
-#: src/readelf.c:4924
+#: src/readelf.c:4949
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:4933
+#: src/readelf.c:4958
#, c-format
msgid " %zu padding bytes\n"
msgstr " bajty wypełnienia: %zu\n"
-#: src/readelf.c:4951
+#: src/readelf.c:4976
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr "nie można uzyskać zawartości .debug_ranges: %s"
-#: src/readelf.c:4981 src/readelf.c:7046
+#: src/readelf.c:5006 src/readelf.c:7074
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <NIEPRAWIDÅOWE DANE>\n"
-#: src/readelf.c:5003 src/readelf.c:7068
+#: src/readelf.c:5028 src/readelf.c:7096
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] adres podstawowy %s\n"
-#: src/readelf.c:5010 src/readelf.c:7075
+#: src/readelf.c:5035 src/readelf.c:7103
#, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] pusta lista\n"
#. We have an address range entry.
#. First address range entry in a list.
-#: src/readelf.c:5021
+#: src/readelf.c:5046
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s…%s\n"
-#: src/readelf.c:5023
+#: src/readelf.c:5048
#, c-format
msgid " %s..%s\n"
msgstr " %s…%s\n"
-#: src/readelf.c:5259
+#: src/readelf.c:5284
msgid " <INVALID DATA>\n"
msgstr " <NIEPRAWIDÅOWE DANE>\n"
-#: src/readelf.c:5512
+#: src/readelf.c:5537
#, c-format
msgid "cannot get ELF: %s"
msgstr "nie można uzyskać ELF: %s"
-#: src/readelf.c:5529
+#: src/readelf.c:5554
#, c-format
msgid ""
"\n"
@@ -5069,7 +5074,7 @@ msgstr ""
"\n"
"Sekcja informacji o ramce wywołania [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
-#: src/readelf.c:5579
+#: src/readelf.c:5604
#, c-format
msgid ""
"\n"
@@ -5078,50 +5083,50 @@ msgstr ""
"\n"
" [%6tx] Zerowy koniec\n"
-#: src/readelf.c:5672 src/readelf.c:5827
+#: src/readelf.c:5697 src/readelf.c:5852
#, c-format
msgid "invalid augmentation length"
msgstr "nieprawidłowa długość powiększenia"
-#: src/readelf.c:5687
+#: src/readelf.c:5712
msgid "FDE address encoding: "
msgstr "Kodowanie adresu FDE: "
-#: src/readelf.c:5693
+#: src/readelf.c:5718
msgid "LSDA pointer encoding: "
msgstr "Kodowanie wskaźnika LSDA: "
-#: src/readelf.c:5804
+#: src/readelf.c:5829
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (offset: %#<PRIx64>)"
-#: src/readelf.c:5811
+#: src/readelf.c:5836
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (kończący offset: %#<PRIx64>)"
-#: src/readelf.c:5848
+#: src/readelf.c:5873
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sWskaźnik LSDA: %#<PRIx64>\n"
-#: src/readelf.c:5903
+#: src/readelf.c:5928
#, c-format
msgid "cannot get attribute code: %s"
msgstr "nie można uzyskać kodu atrybutu: %s"
-#: src/readelf.c:5912
+#: src/readelf.c:5937
#, c-format
msgid "cannot get attribute form: %s"
msgstr "nie można uzyskać formy atrybutu: %s"
-#: src/readelf.c:5927
+#: src/readelf.c:5952
#, c-format
msgid "cannot get attribute value: %s"
msgstr "nie można uzyskać wartości atrybutu: %s"
-#: src/readelf.c:6226
+#: src/readelf.c:6254
#, c-format
msgid ""
"\n"
@@ -5132,7 +5137,7 @@ msgstr ""
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
" [Offset]\n"
-#: src/readelf.c:6258
+#: src/readelf.c:6286
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -5145,7 +5150,7 @@ msgstr ""
"%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
" Podpis typu: %#<PRIx64>, offset typu: %#<PRIx64>\n"
-#: src/readelf.c:6267
+#: src/readelf.c:6295
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -5156,33 +5161,33 @@ msgstr ""
" Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
"%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
-#: src/readelf.c:6292
+#: src/readelf.c:6320
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr "nie można uzyskać DIE pod offsetem %<PRIu64> w sekcji „%sâ€: %s"
-#: src/readelf.c:6306
+#: src/readelf.c:6334
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "nie można uzyskać offsetu DIE: %s"
-#: src/readelf.c:6315
+#: src/readelf.c:6343
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"nie można uzyskać znacznika DIE pod offsetem %<PRIu64> w sekcji „%sâ€: %s"
-#: src/readelf.c:6347
+#: src/readelf.c:6375
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "nie można uzyskać następnego DIE: %s\n"
-#: src/readelf.c:6355
+#: src/readelf.c:6383
#, c-format
msgid "cannot get next DIE: %s"
msgstr "nie można uzyskać następnego DIE: %s"
-#: src/readelf.c:6391
+#: src/readelf.c:6419
#, c-format
msgid ""
"\n"
@@ -5193,13 +5198,13 @@ msgstr ""
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:6500
+#: src/readelf.c:6528
#, c-format
msgid "cannot get line data section data: %s"
msgstr "nie można uzyskać danych sekcji danych wiersza: %s"
#. Print what we got so far.
-#: src/readelf.c:6570
+#: src/readelf.c:6598
#, c-format
msgid ""
"\n"
@@ -5228,12 +5233,12 @@ msgstr ""
"\n"
"Instrukcje:\n"
-#: src/readelf.c:6591
+#: src/readelf.c:6619
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "nieprawidÅ‚owe dane pod offsetem %tu w sekcji [%zu] „%sâ€"
-#: src/readelf.c:6606
+#: src/readelf.c:6634
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
@@ -5241,7 +5246,7 @@ msgstr[0] " [%*<PRIuFAST8>] %hhu parametr\n"
msgstr[1] " [%*<PRIuFAST8>] %hhu parametry\n"
msgstr[2] " [%*<PRIuFAST8>] %hhu parametrów\n"
-#: src/readelf.c:6614
+#: src/readelf.c:6642
msgid ""
"\n"
"Directory table:"
@@ -5249,7 +5254,7 @@ msgstr ""
"\n"
"Tabela katalogu:"
-#: src/readelf.c:6630
+#: src/readelf.c:6658
msgid ""
"\n"
"File name table:\n"
@@ -5259,7 +5264,7 @@ msgstr ""
"Tabela nazw plików:\n"
" Wpis Kat Czas Rozmiar Nazwa"
-#: src/readelf.c:6665
+#: src/readelf.c:6693
msgid ""
"\n"
"Line number statements:"
@@ -5267,119 +5272,119 @@ msgstr ""
"\n"
"Instrukcje numerów wierszy:"
-#: src/readelf.c:6716
+#: src/readelf.c:6744
#, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr "nieprawidłowe maksimum operacji na instrukcję wynosi zero"
-#: src/readelf.c:6752
+#: src/readelf.c:6780
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
" instrukcja specjalna %u: adres+%u = %s, op_index = %u, wiersz%+d = %zu\n"
-#: src/readelf.c:6757
+#: src/readelf.c:6785
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " instrukcja specjalna %u: adres+%u = %s, wiersz%+d = %zu\n"
-#: src/readelf.c:6777
+#: src/readelf.c:6805
#, c-format
msgid " extended opcode %u: "
msgstr " instrukcja rozszerzona %u: "
-#: src/readelf.c:6782
+#: src/readelf.c:6810
msgid " end of sequence"
msgstr " koniec sekwencji"
-#: src/readelf.c:6801
+#: src/readelf.c:6829
#, c-format
msgid " set address to %s\n"
msgstr " ustawienie adresu na %s\n"
-#: src/readelf.c:6828
+#: src/readelf.c:6856
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
" definicja nowego pliku: dir=%u, mtime=%<PRIu64>, długość=%<PRIu64>, nazwa="
"%s\n"
-#: src/readelf.c:6841
+#: src/readelf.c:6869
#, c-format
msgid " set discriminator to %u\n"
msgstr " ustawienie dyskryminatora na %u\n"
#. Unknown, ignore it.
-#: src/readelf.c:6846
+#: src/readelf.c:6874
msgid " unknown opcode"
msgstr " nieznana instrukcja"
#. Takes no argument.
-#: src/readelf.c:6858
+#: src/readelf.c:6886
msgid " copy"
msgstr " kopiowanie"
-#: src/readelf.c:6869
+#: src/readelf.c:6897
#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr " zwiększenie adresu o %u do %s, op_index do %u\n"
-#: src/readelf.c:6873
+#: src/readelf.c:6901
#, c-format
msgid " advance address by %u to %s\n"
msgstr " zwiększenie adresu o %u do %s\n"
-#: src/readelf.c:6884
+#: src/readelf.c:6912
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " zwiększenie wiersza o stałą %d do %<PRId64>\n"
-#: src/readelf.c:6892
+#: src/readelf.c:6920
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " ustawienie pliku na %<PRIu64>\n"
-#: src/readelf.c:6902
+#: src/readelf.c:6930
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " ustawienie kolumny na %<PRIu64>\n"
-#: src/readelf.c:6909
+#: src/readelf.c:6937
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " ustawienie „%s†na %<PRIuFAST8>\n"
#. Takes no argument.
-#: src/readelf.c:6915
+#: src/readelf.c:6943
msgid " set basic block flag"
msgstr " ustawienie podstawowej flagi bloku"
-#: src/readelf.c:6928
+#: src/readelf.c:6956
#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr " zwiększenie adresu o stałą %u do %s, op_index do %u\n"
-#: src/readelf.c:6932
+#: src/readelf.c:6960
#, c-format
msgid " advance address by constant %u to %s\n"
msgstr " zwiększenie adresu o stałą %u do %s\n"
-#: src/readelf.c:6950
+#: src/readelf.c:6978
#, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr " zwiększenie adresu o stałą wartość %u do %s\n"
#. Takes no argument.
-#: src/readelf.c:6959
+#: src/readelf.c:6987
msgid " set prologue end flag"
msgstr " ustawienie flagi końca prologu"
#. Takes no argument.
-#: src/readelf.c:6964
+#: src/readelf.c:6992
msgid " set epilogue begin flag"
msgstr " ustawienie flagi poczÄ…tku epilogu"
-#: src/readelf.c:6973
+#: src/readelf.c:7001
#, c-format
msgid " set isa to %u\n"
msgstr " ustawienie isa na %u\n"
@@ -5387,7 +5392,7 @@ msgstr " ustawienie isa na %u\n"
#. 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:6982
+#: src/readelf.c:7010
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -5395,102 +5400,102 @@ msgstr[0] " nieznana instrukcja z %<PRIu8> parametrem:"
msgstr[1] " nieznana instrukcja z %<PRIu8> parametrami:"
msgstr[2] " nieznana instrukcja z %<PRIu8> parametrami:"
-#: src/readelf.c:7014
+#: src/readelf.c:7042
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "nie można uzyskać zawartości .debug_log: %s"
#. First entry in a list.
-#: src/readelf.c:7089
+#: src/readelf.c:7117
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s…%s"
-#: src/readelf.c:7091
+#: src/readelf.c:7119
#, c-format
msgid " %s..%s"
msgstr " %s…%s"
-#: src/readelf.c:7098 src/readelf.c:7986
+#: src/readelf.c:7126 src/readelf.c:8077
msgid " <INVALID DATA>\n"
msgstr " <NIEPRAWIDÅOWE DANE>\n"
-#: src/readelf.c:7150 src/readelf.c:7312
+#: src/readelf.c:7178 src/readelf.c:7340
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "nie można uzyskać danych sekcji informacji o makrach: %s"
-#: src/readelf.c:7230
+#: src/readelf.c:7258
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** niezakończony ciąg na końcu sekcji"
-#: src/readelf.c:7253
+#: src/readelf.c:7281
#, c-format
msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
msgstr "%*s*** brak parametru DW_MACINFO_start_file na końcu sekcji"
-#: src/readelf.c:7353
+#: src/readelf.c:7381
#, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " Offset: 0x%<PRIx64>\n"
-#: src/readelf.c:7365
+#: src/readelf.c:7393
#, c-format
msgid " Version: %<PRIu16>\n"
msgstr " Wersja: %<PRIu16>\n"
-#: src/readelf.c:7371 src/readelf.c:8105
+#: src/readelf.c:7399 src/readelf.c:8196
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr " nieznana wersja, nie można przetworzyć sekcji\n"
-#: src/readelf.c:7378
+#: src/readelf.c:7406
#, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " Flaga: 0x%<PRIx8>\n"
-#: src/readelf.c:7381
+#: src/readelf.c:7409
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " Długość offsetu: %<PRIu8>\n"
-#: src/readelf.c:7389
+#: src/readelf.c:7417
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " Offset .debug_line: 0x%<PRIx64>\n"
-#: src/readelf.c:7402
+#: src/readelf.c:7430
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " tabela instrukcji rozszerzenia, %<PRIu8> elementów:\n"
-#: src/readelf.c:7409
+#: src/readelf.c:7437
#, c-format
msgid " [%<PRIx8>]"
msgstr " [%<PRIx8>]"
-#: src/readelf.c:7421
+#: src/readelf.c:7449
#, c-format
msgid " %<PRIu8> arguments:"
msgstr " Parametry %<PRIu8>:"
-#: src/readelf.c:7449
+#: src/readelf.c:7477
#, c-format
msgid " no arguments."
msgstr " brak parametrów."
-#: src/readelf.c:7686
+#: src/readelf.c:7777
#, c-format
msgid "vendor opcode not verified?"
msgstr "instrukcja producenta nie została sprawdzona?"
-#: src/readelf.c:7714
+#: src/readelf.c:7805
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr " [%5d] offset DIE: %6<PRId64>, offset CU DIE: %6<PRId64>, nazwa: %s\n"
-#: src/readelf.c:7755
+#: src/readelf.c:7846
#, c-format
msgid ""
"\n"
@@ -5501,12 +5506,12 @@ msgstr ""
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
" %*s CiÄ…g\n"
-#: src/readelf.c:7769
+#: src/readelf.c:7860
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** błąd podczas odczytywania ciągów: %s\n"
-#: src/readelf.c:7789
+#: src/readelf.c:7880
#, c-format
msgid ""
"\n"
@@ -5515,7 +5520,7 @@ msgstr ""
"\n"
"Sekcja tabeli wyszukiwania ramki wywoÅ‚ania [%2zu] „.eh_frame_hdrâ€:\n"
-#: src/readelf.c:7891
+#: src/readelf.c:7982
#, c-format
msgid ""
"\n"
@@ -5524,22 +5529,22 @@ msgstr ""
"\n"
"Sekcja tabeli obsÅ‚ugiwania wyjÄ…tków [%2zu] „.gcc_except_tableâ€:\n"
-#: src/readelf.c:7914
+#: src/readelf.c:8005
#, c-format
msgid " LPStart encoding: %#x "
msgstr " Kodowanie LPStart: %#x "
-#: src/readelf.c:7926
+#: src/readelf.c:8017
#, c-format
msgid " TType encoding: %#x "
msgstr " Kodowanie TType: %#x "
-#: src/readelf.c:7941
+#: src/readelf.c:8032
#, c-format
msgid " Call site encoding: %#x "
msgstr " Kodowanie strony wywołania: %#x "
-#: src/readelf.c:7954
+#: src/readelf.c:8045
msgid ""
"\n"
" Call site table:"
@@ -5547,7 +5552,7 @@ msgstr ""
"\n"
" Tabela strony wywołania:"
-#: src/readelf.c:7968
+#: src/readelf.c:8059
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5560,12 +5565,12 @@ msgstr ""
" LÄ…dowisko: %#<PRIx64>\n"
" Działanie: %u\n"
-#: src/readelf.c:8041
+#: src/readelf.c:8132
#, c-format
msgid "invalid TType encoding"
msgstr "nieprawidłowe kodowanie TType"
-#: src/readelf.c:8067
+#: src/readelf.c:8158
#, c-format
msgid ""
"\n"
@@ -5574,37 +5579,37 @@ msgstr ""
"\n"
"Sekcja GDB [%2zu] „%s†pod offsetem %#<PRIx64> zawiera %<PRId64> bajtów:\n"
-#: src/readelf.c:8096
+#: src/readelf.c:8187
#, c-format
msgid " Version: %<PRId32>\n"
msgstr " Wersja: %<PRId32>\n"
-#: src/readelf.c:8114
+#: src/readelf.c:8205
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " offset CU: %#<PRIx32>\n"
-#: src/readelf.c:8121
+#: src/readelf.c:8212
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " offset TU: %#<PRIx32>\n"
-#: src/readelf.c:8128
+#: src/readelf.c:8219
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " offset adresu: %#<PRIx32>\n"
-#: src/readelf.c:8135
+#: src/readelf.c:8226
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " offset symbolu: %#<PRIx32>\n"
-#: src/readelf.c:8142
+#: src/readelf.c:8233
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " offset stałej: %#<PRIx32>\n"
-#: src/readelf.c:8156
+#: src/readelf.c:8247
#, c-format
msgid ""
"\n"
@@ -5613,7 +5618,7 @@ msgstr ""
"\n"
" Lista CU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:8181
+#: src/readelf.c:8272
#, c-format
msgid ""
"\n"
@@ -5622,7 +5627,7 @@ msgstr ""
"\n"
" Lista TU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:8210
+#: src/readelf.c:8301
#, c-format
msgid ""
"\n"
@@ -5631,7 +5636,7 @@ msgstr ""
"\n"
" Lista adresów pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:8243
+#: src/readelf.c:8334
#, c-format
msgid ""
"\n"
@@ -5640,17 +5645,17 @@ msgstr ""
"\n"
" Tabela symboli pod offsetem %#<PRIx32> zawiera %zu gniazd:\n"
-#: src/readelf.c:8330
+#: src/readelf.c:8421
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s"
-#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277
+#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368
#, c-format
msgid "cannot convert core note data: %s"
msgstr "nie można konwertować danych notatki core: %s"
-#: src/readelf.c:8849
+#: src/readelf.c:8940
#, c-format
msgid ""
"\n"
@@ -5659,21 +5664,21 @@ msgstr ""
"\n"
"%*s… <powtarza się jeszcze %u razy>…"
-#: src/readelf.c:9356
+#: src/readelf.c:9447
msgid " Owner Data size Type\n"
msgstr " Właściciel Rozmiar danych Typ\n"
-#: src/readelf.c:9374
+#: src/readelf.c:9465
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:9424
+#: src/readelf.c:9515
#, c-format
msgid "cannot get content of note section: %s"
msgstr "nie można uzyskać zawartości sekcji notatki: %s"
-#: src/readelf.c:9451
+#: src/readelf.c:9542
#, c-format
msgid ""
"\n"
@@ -5683,7 +5688,7 @@ msgstr ""
"Segment notatki [%2zu] „%s†o długości %<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:9474
+#: src/readelf.c:9565
#, c-format
msgid ""
"\n"
@@ -5692,7 +5697,7 @@ msgstr ""
"\n"
"Segment notatki o długości %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:9520
+#: src/readelf.c:9611
#, c-format
msgid ""
"\n"
@@ -5701,12 +5706,12 @@ msgstr ""
"\n"
"Sekcja [%zu] „%s†nie ma danych do zrzucenia.\n"
-#: src/readelf.c:9547 src/readelf.c:9598
+#: src/readelf.c:9638 src/readelf.c:9689
#, c-format
msgid "cannot get data for section [%zu] '%s': %s"
msgstr "nie można uzyskać danych dla sekcji [%zu] „%sâ€: %s"
-#: src/readelf.c:9552
+#: src/readelf.c:9643
#, c-format
msgid ""
"\n"
@@ -5716,7 +5721,7 @@ msgstr ""
"Segment zrzutu szesnastkowego [%zu] „%sâ€, %<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:9557
+#: src/readelf.c:9648
#, c-format
msgid ""
"\n"
@@ -5727,7 +5732,7 @@ msgstr ""
"Zrzut szesnastkowy sekcji [%zu] „%sâ€, %<PRIu64> bajtów (%zd "
"nieskompresowanych) pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:9571
+#: src/readelf.c:9662
#, c-format
msgid ""
"\n"
@@ -5736,7 +5741,7 @@ msgstr ""
"\n"
"Sekcja [%zu] „%s†nie ma ciągów do zrzucenia.\n"
-#: src/readelf.c:9603
+#: src/readelf.c:9694
#, c-format
msgid ""
"\n"
@@ -5745,7 +5750,7 @@ msgstr ""
"\n"
"Sekcja ciągów [%zu] „%s†zawiera %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:9608
+#: src/readelf.c:9699
#, c-format
msgid ""
"\n"
@@ -5756,7 +5761,7 @@ msgstr ""
"Sekcja ciągów [%zu] „%s†zawiera %<PRIu64> bajtów (%zd nieskompresowanych) "
"pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:9657
+#: src/readelf.c:9748
#, c-format
msgid ""
"\n"
@@ -5765,7 +5770,7 @@ msgstr ""
"\n"
"sekcja [%lu] nie istnieje"
-#: src/readelf.c:9686
+#: src/readelf.c:9777
#, c-format
msgid ""
"\n"
@@ -5774,12 +5779,12 @@ msgstr ""
"\n"
"sekcja „%s†nie istnieje"
-#: src/readelf.c:9743
+#: src/readelf.c:9834
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "nie można uzyskać indeksu symboli archiwum „%sâ€: %s"
-#: src/readelf.c:9746
+#: src/readelf.c:9837
#, c-format
msgid ""
"\n"
@@ -5788,7 +5793,7 @@ msgstr ""
"\n"
"Archiwum „%s†nie ma indeksu symboli\n"
-#: src/readelf.c:9750
+#: src/readelf.c:9841
#, c-format
msgid ""
"\n"
@@ -5797,12 +5802,12 @@ msgstr ""
"\n"
"Indeks archiwum „%s†ma %zu wpisów:\n"
-#: src/readelf.c:9768
+#: src/readelf.c:9859
#, c-format
msgid "cannot extract member at offset %zu in '%s': %s"
msgstr "nie można wydobyć elementów pod offsetem %zu w „%sâ€: %s"
-#: src/readelf.c:9773
+#: src/readelf.c:9864
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Element archiwum „%s†zawiera:\n"
@@ -6075,31 +6080,31 @@ msgstr "mprotect się nie powiodło"
msgid "Skipping section %zd '%s' data outside file"
msgstr "Pomijanie sekcji %zd „%s†dane poza plikiem"
-#: src/strip.c:69
+#: src/strip.c:71
msgid "Place stripped output into FILE"
msgstr "Umieszcza okrojone wyjście w PLIKU"
-#: src/strip.c:70
+#: src/strip.c:72
msgid "Extract the removed sections into FILE"
msgstr "Wydobywa usunięte sekcje do PLIKU"
-#: src/strip.c:71
+#: src/strip.c:73
msgid "Embed name FILE instead of -f argument"
msgstr "Osadza nazwÄ™ PLIKU zamiast parametru -f"
-#: src/strip.c:75
+#: src/strip.c:77
msgid "Remove all debugging symbols"
msgstr "Usuwa wszystkie symbole debugowania"
-#: src/strip.c:79
+#: src/strip.c:81
msgid "Remove section headers (not recommended)"
msgstr "Usuwa nagłówki sekcji (niezalecane)"
-#: src/strip.c:81
+#: src/strip.c:83
msgid "Copy modified/access timestamps to the output"
msgstr "Kopiuje czasy modyfikacji/dostępu do wyjścia"
-#: src/strip.c:83
+#: src/strip.c:85
msgid ""
"Resolve all trivial relocations between debug sections if the removed "
"sections are placed in a debug file (only relevant for ET_REL files, "
@@ -6109,51 +6114,63 @@ msgstr ""
"usunięte sekcje zostały umieszczone w pliku debugowania (ma znaczenie tylko "
"dla plików ET_REL, działanie jest nieodwracalne, wymaga użycia opcji -f)"
-#: src/strip.c:85
+#: src/strip.c:87
msgid "Remove .comment section"
msgstr "Usuwa sekcjÄ™ .comment"
+#: src/strip.c:88
+msgid ""
+"Remove the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once. Only non-allocated sections can be removed."
+msgstr ""
+
+#: src/strip.c:89
+msgid ""
+"Keep the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once."
+msgstr ""
+
#. Short description of program.
-#: src/strip.c:93
+#: src/strip.c:96
msgid "Discard symbols from object files."
msgstr "Odrzuca symbole z plików obiektów."
-#: src/strip.c:187
+#: src/strip.c:242
#, c-format
msgid "--reloc-debug-sections used without -f"
msgstr "Użyto --reloc-debug-sections bez opcji -f"
-#: src/strip.c:201
+#: src/strip.c:256
#, c-format
msgid "Only one input file allowed together with '-o' and '-f'"
msgstr "Tylko jeden plik wejÅ›ciowy jest dozwolony z „-o†i „-fâ€"
-#: src/strip.c:223
+#: src/strip.c:279
#, c-format
msgid "-f option specified twice"
msgstr "OpcjÄ™ -f podano dwukrotnie"
-#: src/strip.c:232
+#: src/strip.c:288
#, c-format
msgid "-F option specified twice"
msgstr "OpcjÄ™ -F podano dwukrotnie"
-#: src/strip.c:265
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr "Opcja -R obsługuje tylko sekcję .comment"
+#: src/strip.c:347
+#, fuzzy, c-format
+msgid "cannot both keep and remove .comment section"
+msgstr "Usuwa sekcjÄ™ .comment"
-#: src/strip.c:307 src/strip.c:331
+#: src/strip.c:372 src/strip.c:396
#, c-format
msgid "cannot stat input file '%s'"
msgstr "nie można wykonać stat na pliku wejÅ›ciowym „%sâ€"
-#: src/strip.c:321
+#: src/strip.c:386
#, c-format
msgid "while opening '%s'"
msgstr "podczas otwierania „%sâ€"
-#: src/strip.c:359
+#: src/strip.c:424
#, c-format
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: nie można używać -o lub -f podczas okrajania archiwum"
@@ -6164,107 +6181,117 @@ msgstr "%s: nie można używać -o lub -f podczas okrajania archiwum"
#. result = handle_ar (fd, elf, NULL, fname,
#. preserve_dates ? tv : NULL);
#.
-#: src/strip.c:371
+#: src/strip.c:436
#, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: brak obsługi okrajania archiwum"
-#: src/strip.c:470
+#: src/strip.c:535
#, c-format
msgid "cannot open EBL backend"
msgstr "nie można otworzyć zaplecza EBL"
-#: src/strip.c:515
+#: src/strip.c:580
#, c-format
msgid "cannot get number of phdrs"
msgstr "nie można uzyskać liczby phdr"
-#: src/strip.c:531 src/strip.c:555
+#: src/strip.c:596 src/strip.c:620
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "nie można utworzyć nowego pliku „%sâ€: %s"
-#: src/strip.c:621
+#: src/strip.c:686
#, c-format
msgid "illformed file '%s'"
msgstr "plik „%s†ma błędny format"
-#: src/strip.c:955 src/strip.c:1054
+#: src/strip.c:696
+#, fuzzy, c-format
+msgid "Cannot remove allocated section '%s'"
+msgstr "nie można przydzielić danych sekcji: %s"
+
+#: src/strip.c:705
+#, fuzzy, c-format
+msgid "Cannot both keep and remove section '%s'"
+msgstr "nie można dodać nowej sekcji: %s"
+
+#: src/strip.c:1061 src/strip.c:1160
#, c-format
msgid "while generating output file: %s"
msgstr "podczas tworzenia pliku wyjściowego: %s"
-#: src/strip.c:1020 src/strip.c:2090
+#: src/strip.c:1126 src/strip.c:2208
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s"
-#: src/strip.c:1037
+#: src/strip.c:1143
#, c-format
msgid "while preparing output for '%s'"
msgstr "podczas przygotowywania wyjÅ›cia dla „%sâ€"
-#: src/strip.c:1095 src/strip.c:1158
+#: src/strip.c:1205 src/strip.c:1268
#, c-format
msgid "while create section header section: %s"
msgstr "podczas tworzenia sekcji nagłówka sekcji: %s"
-#: src/strip.c:1104
+#: src/strip.c:1214
#, c-format
msgid "cannot allocate section data: %s"
msgstr "nie można przydzielić danych sekcji: %s"
-#: src/strip.c:1170
+#: src/strip.c:1280
#, c-format
msgid "while create section header string table: %s"
msgstr "podczas tworzenia tabeli ciągów nagłówka sekcji: %s"
-#: src/strip.c:1177
+#: src/strip.c:1287
#, c-format
msgid "no memory to create section header string table"
msgstr "brak pamięci do utworzenia tabeli ciągów nagłówka sekcji"
-#: src/strip.c:1384
+#: src/strip.c:1497
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr "Nie można usunąć symbolu [%zd] z przydzielonej tabeli symboli [%zd]"
-#: src/strip.c:1876
+#: src/strip.c:1994
#, c-format
msgid "bad relocation"
msgstr "błędna relokacja"
-#: src/strip.c:2001 src/strip.c:2114
+#: src/strip.c:2119 src/strip.c:2232
#, c-format
msgid "while writing '%s': %s"
msgstr "podczas zapisywania „%sâ€: %s"
-#: src/strip.c:2012
+#: src/strip.c:2130
#, c-format
msgid "while creating '%s'"
msgstr "podczas tworzenia „%sâ€"
-#: src/strip.c:2035
+#: src/strip.c:2153
#, c-format
msgid "while computing checksum for debug information"
msgstr "podczas obliczania sumy kontrolnej dla informacji debugowania"
-#: src/strip.c:2099
+#: src/strip.c:2217
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: błąd podczas odczytywania pliku: %s"
-#: src/strip.c:2139 src/strip.c:2159
+#: src/strip.c:2257 src/strip.c:2277
#, c-format
msgid "while writing '%s'"
msgstr "podczas zapisywania „%sâ€"
-#: src/strip.c:2196 src/strip.c:2203
+#: src/strip.c:2314 src/strip.c:2321
#, c-format
msgid "error while finishing '%s': %s"
msgstr "bÅ‚Ä…d podczas koÅ„czenia „%sâ€: %s"
-#: src/strip.c:2220 src/strip.c:2292
+#: src/strip.c:2338 src/strip.c:2414
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "nie można ustawić czasu dostÄ™pu i modyfikacji „%sâ€"
@@ -6672,3 +6699,6 @@ msgstr "Dodatkowo wyświetla nazwy funkcji"
#: tests/dwflmodtest.c:214
msgid "Show instances of inlined functions"
msgstr "Wyświetla wystąpienia wstawionych funkcji"
+
+#~ msgid "-R option supports only .comment section"
+#~ msgstr "Opcja -R obsługuje tylko sekcję .comment"
diff --git a/po/uk.po b/po/uk.po
index 88e87e18..032cd3da 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2017-05-05 09:44+0200\n"
+"POT-Creation-Date: 2017-08-02 18:29+0200\n"
"PO-Revision-Date: 2015-09-26 16:41+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
@@ -59,7 +59,7 @@ msgstr ""
"гарантій, зокрема гарантій працездатноÑÑ‚Ñ– або придатноÑÑ‚Ñ– Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ñ— мети.\n"
#: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296
-#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432
+#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432
#, c-format
msgid "memory exhausted"
msgstr "пам’ÑÑ‚ÑŒ вичерпано"
@@ -259,6 +259,11 @@ msgstr "некоректний код операції"
msgid "not a CU (unit) DIE"
msgstr "не Ñ” DIE CU (модулÑ)"
+#: libdw/dwarf_error.c:98
+#, fuzzy
+msgid "unknown language code"
+msgstr " невідомий код операції"
+
#: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374
msgid "Input selection options:"
msgstr "Вибір параметрів Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…:"
@@ -295,35 +300,35 @@ msgstr "Ядро з уÑіма модулÑми"
msgid "Search path for separate debuginfo files"
msgstr "Шукати у вказаному каталозі окремі файли debuginfo"
-#: libdwfl/argp-std.c:161
+#: libdwfl/argp-std.c:164
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr ""
"можна викориÑтовувати лише один за параметрів: -e, -p, -k, -K або --core"
-#: libdwfl/argp-std.c:234
+#: libdwfl/argp-std.c:237
msgid "cannot load kernel symbols"
msgstr "не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñимволи Ñдра"
#. Non-fatal to have no modules since we do have the kernel.
-#: libdwfl/argp-std.c:238
+#: libdwfl/argp-std.c:241
msgid "cannot find kernel modules"
msgstr "не вдалоÑÑ Ð²Ð¸Ñвити модулі Ñдра"
-#: libdwfl/argp-std.c:255
+#: libdwfl/argp-std.c:258
msgid "cannot find kernel or modules"
msgstr "не вдалоÑÑ Ð²Ð¸Ñвити Ñдро або модулі"
-#: libdwfl/argp-std.c:294
+#: libdwfl/argp-std.c:297
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл core ELF: %s"
-#: libdwfl/argp-std.c:317
+#: libdwfl/argp-std.c:320
#, fuzzy
msgid "Not enough memory"
msgstr "неÑтача пам'ÑÑ‚Ñ–"
-#: libdwfl/argp-std.c:327
+#: libdwfl/argp-std.c:330
msgid "No modules recognized in core file"
msgstr "Ðе вдалоÑÑ Ð²Ð¸Ñвити модулі у файлі core"
@@ -483,7 +488,7 @@ msgstr "Ðе Ñ” файлом ET_CORE ELF"
msgid "No backend"
msgstr "Ðемає Ñервера"
-#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76
+#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76
#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
@@ -580,7 +585,7 @@ msgstr "некоректна розмірніÑÑ‚ÑŒ вхідного парамÐ
msgid "invalid size of destination operand"
msgstr "некоректна розмірніÑÑ‚ÑŒ вихідного параметра"
-#: libelf/elf_error.c:87 src/readelf.c:5114
+#: libelf/elf_error.c:87 src/readelf.c:5139
#, c-format
msgid "invalid encoding"
msgstr "некоректне кодуваннÑ"
@@ -661,8 +666,8 @@ msgstr "невідповідніÑÑ‚ÑŒ полів data/scn"
msgid "invalid section header"
msgstr "некоректний заголовок розділу"
-#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809
-#: src/readelf.c:7910 src/readelf.c:8091
+#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900
+#: src/readelf.c:8001 src/readelf.c:8182
#, c-format
msgid "invalid data"
msgstr "некоректні дані"
@@ -1294,7 +1299,7 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr "Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» параметра --gaps."
#: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142
-#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490
+#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555
#: src/unstrip.c:2023 src/unstrip.c:2052
#, c-format
msgid "cannot open '%s'"
@@ -1325,7 +1330,7 @@ msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ розділу %zu: %s"
msgid "cannot get relocation: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ переÑуваннÑ: %s"
-#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "параметр -o вказано двічі"
@@ -1378,7 +1383,7 @@ msgstr ""
msgid "Force compression of section even if it would become larger"
msgstr ""
-#: src/elfcompress.c:1282 src/strip.c:88
+#: src/elfcompress.c:1282 src/strip.c:91
msgid "Relax a few rules to handle slightly broken ELF files"
msgstr ""
"Знехтувати декількома правилами Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ трохи пошкоджених файлів ELF"
@@ -3425,7 +3430,7 @@ msgstr "Шукає джерело переÑуваного текÑту у ФÐÐ
#. Strings for arguments in help texts.
#: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81
-#: src/strings.c:88 src/strip.c:96
+#: src/strings.c:88 src/strip.c:99
msgid "[FILE...]"
msgstr "[ФÐЙЛ...]"
@@ -3518,7 +3523,7 @@ msgstr ""
"переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ до зміни запиÑу пам’ÑÑ‚Ñ– за зміщеннÑм %llu у "
"захищеному від запиÑу Ñегменті\n"
-#: src/nm.c:67 src/strip.c:68
+#: src/nm.c:67 src/strip.c:70
msgid "Output selection:"
msgstr "Вибір виводу:"
@@ -3582,7 +3587,7 @@ msgstr "Позначати Ñпеціальні Ñимволи"
msgid "Print size of defined symbols"
msgstr "ВивеÑти розмір визначених Ñимволів"
-#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73
+#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73
msgid "Output options:"
msgstr "Параметри виводу:"
@@ -3611,18 +3616,18 @@ msgstr "Показати ÑпиÑок Ñимволів з ФÐЙЛів (типо
msgid "Output formatting"
msgstr "Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ"
-#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128
+#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131
#, c-format
msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: Ð’ÐУТРІШÐЯ ПОМИЛКР%d (%s): %s"
#: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309
-#: src/strip.c:2299
+#: src/strip.c:2421
#, c-format
msgid "while closing '%s'"
msgstr "під Ñ‡Ð°Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Â«%s»"
-#: src/nm.c:404 src/objdump.c:281 src/strip.c:378
+#: src/nm.c:404 src/objdump.c:281 src/strip.c:443
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ формат файла"
@@ -3665,9 +3670,9 @@ msgstr "не вдалоÑÑ Ñтворити дерево пошуку"
#: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664
#: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314
#: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315
-#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439
-#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466
-#: src/strip.c:507
+#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530
+#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466
+#: src/strip.c:572
#, c-format
msgid "cannot get section header string table index"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків"
@@ -3948,7 +3953,7 @@ msgstr "Ðевідомий діагноÑтичний розділ DWARF «%s».
msgid "cannot generate Elf descriptor: %s"
msgstr "не вдалоÑÑ Ñтворити деÑкриптор Elf: %s"
-#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576
+#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділів: %s"
@@ -3958,7 +3963,7 @@ msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділі
msgid "cannot get section: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ розділ: %s"
-#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662
+#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753
#: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565
#: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109
#: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650
@@ -3972,8 +3977,8 @@ msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу:
msgid "cannot get section name"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву розділу"
-#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899
-#: src/readelf.c:8076
+#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990
+#: src/readelf.c:8167
#, c-format
msgid "cannot get %s content: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані %s: %s"
@@ -4344,8 +4349,8 @@ msgstr "<ÐЕКОРЕКТÐИЙ СИМВОЛ>"
msgid "<INVALID SECTION>"
msgstr "<ÐЕКОРЕКТÐИЙ РОЗДІЛ>"
-#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533
-#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591
+#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624
+#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682
msgid "Couldn't uncompress section"
msgstr ""
@@ -4355,7 +4360,7 @@ msgid "cannot get section [%zd] header: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу: %s"
#: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654
-#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734
+#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759
#, c-format
msgid "invalid sh_link value in section %zu"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_link у розділі %zu"
@@ -4859,46 +4864,46 @@ msgstr "%s+%#<PRIx64>"
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:4056
+#: src/readelf.c:4081
msgid "empty block"
msgstr "порожній блок"
-#: src/readelf.c:4059
+#: src/readelf.c:4084
#, c-format
msgid "%zu byte block:"
msgstr "%zu-байтовий блок:"
-#: src/readelf.c:4456
+#: src/readelf.c:4481
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <ОБРІЗÐÐО>\n"
-#: src/readelf.c:4513
+#: src/readelf.c:4538
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> викориÑтано з різними розмірами адреÑ"
-#: src/readelf.c:4520
+#: src/readelf.c:4545
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> викориÑтано з різними розмірами зміщень"
-#: src/readelf.c:4527
+#: src/readelf.c:4552
#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr "%s %#<PRIx64> викориÑтано з різними базовими адреÑами"
-#: src/readelf.c:4616
+#: src/readelf.c:4641
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <ÐЕВИКОРИСТОВУВÐÐІ ДÐÐІ У РЕШТІ РОЗДІЛУ>\n"
-#: src/readelf.c:4624
+#: src/readelf.c:4649
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <ÐЕВИКОРИСТОВУВÐÐІ ДÐÐІ> ... %<PRIu64> байтів ...\n"
-#: src/readelf.c:4650
+#: src/readelf.c:4675
#, c-format
msgid ""
"\n"
@@ -4909,7 +4914,7 @@ msgstr ""
"Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n"
" [ Код]\n"
-#: src/readelf.c:4658
+#: src/readelf.c:4683
#, c-format
msgid ""
"\n"
@@ -4918,30 +4923,30 @@ msgstr ""
"\n"
"Розділ Ñкорочень за зміщеннÑм %<PRIu64>:\n"
-#: src/readelf.c:4671
+#: src/readelf.c:4696
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ ÑкороченнÑ: %s\n"
-#: src/readelf.c:4687
+#: src/readelf.c:4712
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] зміщеннÑ: %<PRId64>, дочірній: %s, мітка: %s\n"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745
msgid "yes"
msgstr "так"
-#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654
+#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745
msgid "no"
msgstr "ні"
-#: src/readelf.c:4724 src/readelf.c:4797
+#: src/readelf.c:4749 src/readelf.c:4822
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані get .debug_aranges: %s"
-#: src/readelf.c:4739
+#: src/readelf.c:4764
#, c-format
msgid ""
"\n"
@@ -4959,12 +4964,12 @@ msgstr[2] ""
"\n"
"Розділ DWARF [%2zu] «%s» за зміщеннÑм %#<PRIx64> міÑтить %zu запиÑів:\n"
-#: src/readelf.c:4770
+#: src/readelf.c:4795
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4772
+#: src/readelf.c:4797
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -4972,8 +4977,8 @@ msgstr ""
" [%*zu] початок: %0#*<PRIx64>, довжина: %5<PRIu64>, Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487
-#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728
+#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515
+#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819
#, c-format
msgid ""
"\n"
@@ -4982,7 +4987,7 @@ msgstr ""
"\n"
"Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n"
-#: src/readelf.c:4815 src/readelf.c:6513
+#: src/readelf.c:4840 src/readelf.c:6541
#, c-format
msgid ""
"\n"
@@ -4991,12 +4996,12 @@ msgstr ""
"\n"
"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð·Ð° зміщеннÑм %zu:\n"
-#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524
+#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr "некоректні дані у розділі [%zu] «%s»"
-#: src/readelf.c:4835
+#: src/readelf.c:4860
#, c-format
msgid ""
"\n"
@@ -5005,32 +5010,32 @@ msgstr ""
"\n"
" Довжина: %6<PRIu64>\n"
-#: src/readelf.c:4847
+#: src/readelf.c:4872
#, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " верÑÑ–Ñ DWARF: %6<PRIuFAST16>\n"
-#: src/readelf.c:4851
+#: src/readelf.c:4876
#, c-format
msgid "unsupported aranges version"
msgstr "непідтримувана верÑÑ–Ñ aranges"
-#: src/readelf.c:4862
+#: src/readelf.c:4887
#, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU: %6<PRIx64>\n"
-#: src/readelf.c:4868
+#: src/readelf.c:4893
#, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr " Розмір адреÑи: %6<PRIu64>\n"
-#: src/readelf.c:4872
+#: src/readelf.c:4897
#, c-format
msgid "unsupported address size"
msgstr "непідтримуваний розмір адреÑи"
-#: src/readelf.c:4877
+#: src/readelf.c:4902
#, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
@@ -5039,68 +5044,68 @@ msgstr ""
" Розмір Ñегмента: %6<PRIu64>\n"
"\n"
-#: src/readelf.c:4881
+#: src/readelf.c:4906
#, c-format
msgid "unsupported segment size"
msgstr "непідтримуваний розмір Ñегмента"
-#: src/readelf.c:4921
+#: src/readelf.c:4946
#, c-format
msgid " %s..%s (%<PRIx64>)\n"
msgstr " %s..%s (%<PRIx64>)\n"
-#: src/readelf.c:4924
+#: src/readelf.c:4949
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:4933
+#: src/readelf.c:4958
#, c-format
msgid " %zu padding bytes\n"
msgstr " %zu байтів доповненнÑ\n"
-#: src/readelf.c:4951
+#: src/readelf.c:4976
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані .debug_ranges: %s"
-#: src/readelf.c:4981 src/readelf.c:7046
+#: src/readelf.c:5006 src/readelf.c:7074
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <ÐЕКОРЕКТÐІ ДÐÐІ>\n"
-#: src/readelf.c:5003 src/readelf.c:7068
+#: src/readelf.c:5028 src/readelf.c:7096
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] базова адреÑа %s\n"
-#: src/readelf.c:5010 src/readelf.c:7075
+#: src/readelf.c:5035 src/readelf.c:7103
#, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] порожній ÑпиÑок\n"
#. We have an address range entry.
#. First address range entry in a list.
-#: src/readelf.c:5021
+#: src/readelf.c:5046
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:5023
+#: src/readelf.c:5048
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:5259
+#: src/readelf.c:5284
msgid " <INVALID DATA>\n"
msgstr " <ÐЕКОРЕКТÐІ ДÐÐІ>\n"
-#: src/readelf.c:5512
+#: src/readelf.c:5537
#, c-format
msgid "cannot get ELF: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ELF: %s"
-#: src/readelf.c:5529
+#: src/readelf.c:5554
#, c-format
msgid ""
"\n"
@@ -5109,7 +5114,7 @@ msgstr ""
"\n"
"Розділ відомоÑтей щодо вікна викликів [%2zu] «%s» за зміщеннÑм %#<PRIx64>:\n"
-#: src/readelf.c:5579
+#: src/readelf.c:5604
#, c-format
msgid ""
"\n"
@@ -5118,50 +5123,50 @@ msgstr ""
"\n"
" [%6tx] нульовий переривач\n"
-#: src/readelf.c:5672 src/readelf.c:5827
+#: src/readelf.c:5697 src/readelf.c:5852
#, c-format
msgid "invalid augmentation length"
msgstr "некоректна довжина збільшеннÑ"
-#: src/readelf.c:5687
+#: src/readelf.c:5712
msgid "FDE address encoding: "
msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð´Ñ€ÐµÑи FDE: "
-#: src/readelf.c:5693
+#: src/readelf.c:5718
msgid "LSDA pointer encoding: "
msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° LSDA: "
-#: src/readelf.c:5804
+#: src/readelf.c:5829
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (зміщеннÑ: %#<PRIx64>)"
-#: src/readelf.c:5811
+#: src/readelf.c:5836
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ кінцÑ: %#<PRIx64>)"
-#: src/readelf.c:5848
+#: src/readelf.c:5873
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sвказівник LSDA: %#<PRIx64>\n"
-#: src/readelf.c:5903
+#: src/readelf.c:5928
#, c-format
msgid "cannot get attribute code: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ код атрибута: %s"
-#: src/readelf.c:5912
+#: src/readelf.c:5937
#, c-format
msgid "cannot get attribute form: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ форму атрибута: %s"
-#: src/readelf.c:5927
+#: src/readelf.c:5952
#, c-format
msgid "cannot get attribute value: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°: %s"
-#: src/readelf.c:6226
+#: src/readelf.c:6254
#, c-format
msgid ""
"\n"
@@ -5172,7 +5177,7 @@ msgstr ""
"Розділ DWARF [%2zu] «%s» за зміщеннÑм %#<PRIx64>:\n"
" [ЗміщеннÑ]\n"
-#: src/readelf.c:6258
+#: src/readelf.c:6286
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -5185,7 +5190,7 @@ msgstr ""
"ЗміщеннÑ: %<PRIu8>\n"
" ÐŸÑ–Ð´Ð¿Ð¸Ñ Ñ‚Ð¸Ð¿Ñƒ: %#<PRIx64>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ: %#<PRIx64>\n"
-#: src/readelf.c:6267
+#: src/readelf.c:6295
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -5196,33 +5201,33 @@ msgstr ""
" ВерÑÑ–Ñ: %<PRIu16>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñкорочень: %<PRIu64>, ÐдреÑа: %<PRIu8>, "
"ЗміщеннÑ: %<PRIu8>\n"
-#: src/readelf.c:6292
+#: src/readelf.c:6320
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ DIE за зміщеннÑм %<PRIu64> у розділі «%s»: %s"
-#: src/readelf.c:6306
+#: src/readelf.c:6334
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ DIE: %s"
-#: src/readelf.c:6315
+#: src/readelf.c:6343
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ мітку DIE за зміщеннÑм %<PRIu64> у розділі «%s»: %s"
-#: src/readelf.c:6347
+#: src/readelf.c:6375
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ наÑтупний DIE: %s\n"
-#: src/readelf.c:6355
+#: src/readelf.c:6383
#, c-format
msgid "cannot get next DIE: %s"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ наÑтупний DIE: %s"
-#: src/readelf.c:6391
+#: src/readelf.c:6419
#, c-format
msgid ""
"\n"
@@ -5233,13 +5238,13 @@ msgstr ""
"Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:6500
+#: src/readelf.c:6528
#, c-format
msgid "cannot get line data section data: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу лінійних даних: %s"
#. Print what we got so far.
-#: src/readelf.c:6570
+#: src/readelf.c:6598
#, c-format
msgid ""
"\n"
@@ -5268,12 +5273,12 @@ msgstr ""
"\n"
"Коди операцій:\n"
-#: src/readelf.c:6591
+#: src/readelf.c:6619
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "некоректні дані зі зміщеннÑм %tu у розділі [%zu] «%s»"
-#: src/readelf.c:6606
+#: src/readelf.c:6634
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
@@ -5281,7 +5286,7 @@ msgstr[0] " [%*<PRIuFAST8>] %hhu аргумент\n"
msgstr[1] " [%*<PRIuFAST8>] %hhu аргументи\n"
msgstr[2] " [%*<PRIuFAST8>] %hhu аргументів\n"
-#: src/readelf.c:6614
+#: src/readelf.c:6642
msgid ""
"\n"
"Directory table:"
@@ -5289,7 +5294,7 @@ msgstr ""
"\n"
"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ:"
-#: src/readelf.c:6630
+#: src/readelf.c:6658
msgid ""
"\n"
"File name table:\n"
@@ -5299,7 +5304,7 @@ msgstr ""
"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð½Ð°Ð·Ð² файлів:\n"
" Ð—Ð°Ð¿Ð¸Ñ ÐšÐ°Ñ‚ Ð§Ð°Ñ Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ðазва"
-#: src/readelf.c:6665
+#: src/readelf.c:6693
msgid ""
"\n"
"Line number statements:"
@@ -5307,120 +5312,120 @@ msgstr ""
"\n"
"Оператори номерів Ñ€Ñдків:"
-#: src/readelf.c:6716
+#: src/readelf.c:6744
#, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr "некоректну кількіÑÑ‚ÑŒ операцій на інÑтрукцію прирівнÑно до нулÑ"
-#: src/readelf.c:6752
+#: src/readelf.c:6780
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
" Ñпеціальний код операції %u: адреÑа+%u = %s, індекÑ_оп = %u, Ñ€Ñдок%+d = "
"%zu\n"
-#: src/readelf.c:6757
+#: src/readelf.c:6785
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " Ñпеціальний код операції %u: адреÑа+%u = %s, Ñ€Ñдок%+d = %zu\n"
-#: src/readelf.c:6777
+#: src/readelf.c:6805
#, c-format
msgid " extended opcode %u: "
msgstr " розширений код операції %u: "
-#: src/readelf.c:6782
+#: src/readelf.c:6810
msgid " end of sequence"
msgstr " кінець поÑлідовноÑÑ‚Ñ–"
-#: src/readelf.c:6801
+#: src/readelf.c:6829
#, c-format
msgid " set address to %s\n"
msgstr " вÑтановити адреÑу у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s\n"
-#: src/readelf.c:6828
+#: src/readelf.c:6856
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
" Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ файла: dir=%u, mtime=%<PRIu64>, довжина=%<PRIu64>, назва="
"%s\n"
-#: src/readelf.c:6841
+#: src/readelf.c:6869
#, c-format
msgid " set discriminator to %u\n"
msgstr " вÑтановити Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ %u\n"
#. Unknown, ignore it.
-#: src/readelf.c:6846
+#: src/readelf.c:6874
msgid " unknown opcode"
msgstr " невідомий код операції"
#. Takes no argument.
-#: src/readelf.c:6858
+#: src/readelf.c:6886
msgid " copy"
msgstr " копіÑ"
-#: src/readelf.c:6869
+#: src/readelf.c:6897
#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr " Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи на %u до %s, індекÑ_оп до %u\n"
-#: src/readelf.c:6873
+#: src/readelf.c:6901
#, c-format
msgid " advance address by %u to %s\n"
msgstr " Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи на %u до %s\n"
-#: src/readelf.c:6884
+#: src/readelf.c:6912
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " проÑувати Ñ€Ñдок на Ñталу %d до %<PRId64>\n"
-#: src/readelf.c:6892
+#: src/readelf.c:6920
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " вÑтановити файл у %<PRIu64>\n"
-#: src/readelf.c:6902
+#: src/readelf.c:6930
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñтовпчика %<PRIu64>\n"
-#: src/readelf.c:6909
+#: src/readelf.c:6937
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " вÑтановити «%s» у %<PRIuFAST8>\n"
#. Takes no argument.
-#: src/readelf.c:6915
+#: src/readelf.c:6943
msgid " set basic block flag"
msgstr " вÑтановити прапорець базового блоку"
-#: src/readelf.c:6928
+#: src/readelf.c:6956
#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr " збільшити адреÑу на Ñталу величину %u до %s, індекÑ_оп до %u\n"
-#: src/readelf.c:6932
+#: src/readelf.c:6960
#, c-format
msgid " advance address by constant %u to %s\n"
msgstr " збільшити адреÑу на Ñталу величину %u до %s\n"
-#: src/readelf.c:6950
+#: src/readelf.c:6978
#, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr " збільшити адреÑу на фікÑовану величину %u до %s\n"
#. Takes no argument.
-#: src/readelf.c:6959
+#: src/readelf.c:6987
msgid " set prologue end flag"
msgstr " вÑтановити прапорець ÐºÑ–Ð½Ñ†Ñ Ð²Ñтупу"
#. Takes no argument.
-#: src/readelf.c:6964
+#: src/readelf.c:6992
msgid " set epilogue begin flag"
msgstr " вÑтановити прапорець початку епілогу"
-#: src/readelf.c:6973
+#: src/readelf.c:7001
#, c-format
msgid " set isa to %u\n"
msgstr " вÑтановити isa у %u\n"
@@ -5428,7 +5433,7 @@ msgstr " вÑтановити isa у %u\n"
#. 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:6982
+#: src/readelf.c:7010
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -5436,103 +5441,103 @@ msgstr[0] " невідомий код операції з %<PRIu8> парамеÑ
msgstr[1] " невідомий код операції з %<PRIu8> параметрами:"
msgstr[2] " невідомий код операції з %<PRIu8> параметрами:"
-#: src/readelf.c:7014
+#: src/readelf.c:7042
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ .debug_loc: %s"
#. First entry in a list.
-#: src/readelf.c:7089
+#: src/readelf.c:7117
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:7091
+#: src/readelf.c:7119
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:7098 src/readelf.c:7986
+#: src/readelf.c:7126 src/readelf.c:8077
msgid " <INVALID DATA>\n"
msgstr " <ÐЕКОРЕКТÐІ ДÐÐІ>\n"
-#: src/readelf.c:7150 src/readelf.c:7312
+#: src/readelf.c:7178 src/readelf.c:7340
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу відомоÑтей щодо макроÑів: %s"
-#: src/readelf.c:7230
+#: src/readelf.c:7258
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** незавершений Ñ€Ñдок наприкінці розділу"
-#: src/readelf.c:7253
+#: src/readelf.c:7281
#, c-format
msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
msgstr "%*s*** пропущено аргумент DW_MACINFO_start_file наприкінці розділу"
-#: src/readelf.c:7353
+#: src/readelf.c:7381
#, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " ЗміщеннÑ: 0x%<PRIx64>\n"
-#: src/readelf.c:7365
+#: src/readelf.c:7393
#, c-format
msgid " Version: %<PRIu16>\n"
msgstr " ВерÑÑ–Ñ: %<PRIu16>\n"
-#: src/readelf.c:7371 src/readelf.c:8105
+#: src/readelf.c:7399 src/readelf.c:8196
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr " невідома верÑÑ–Ñ, не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ розділ\n"
-#: src/readelf.c:7378
+#: src/readelf.c:7406
#, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " Прапорець: 0x%<PRIx8>\n"
-#: src/readelf.c:7381
+#: src/readelf.c:7409
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " Довжина зміщеннÑ: %<PRIu8>\n"
-#: src/readelf.c:7389
+#: src/readelf.c:7417
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ .debug_line: 0x%<PRIx64>\n"
-#: src/readelf.c:7402
+#: src/readelf.c:7430
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ¾Ð´Ñ–Ð² операцій розширень, запиÑів — %<PRIu8>:\n"
-#: src/readelf.c:7409
+#: src/readelf.c:7437
#, c-format
msgid " [%<PRIx8>]"
msgstr " [%<PRIx8>]"
-#: src/readelf.c:7421
+#: src/readelf.c:7449
#, c-format
msgid " %<PRIu8> arguments:"
msgstr " %<PRIu8> аргументів:"
-#: src/readelf.c:7449
+#: src/readelf.c:7477
#, c-format
msgid " no arguments."
msgstr " немає аргументів."
-#: src/readelf.c:7686
+#: src/readelf.c:7777
#, c-format
msgid "vendor opcode not verified?"
msgstr "код операції поÑтачальника не перевірено?"
-#: src/readelf.c:7714
+#: src/readelf.c:7805
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
" [%5d] Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ DIE: %6<PRId64>, Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU DIE: %6<PRId64>, назва: %s\n"
-#: src/readelf.c:7755
+#: src/readelf.c:7846
#, c-format
msgid ""
"\n"
@@ -5543,12 +5548,12 @@ msgstr ""
"Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n"
" %*s РÑдок\n"
-#: src/readelf.c:7769
+#: src/readelf.c:7860
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ€Ñдків: %s\n"
-#: src/readelf.c:7789
+#: src/readelf.c:7880
#, c-format
msgid ""
"\n"
@@ -5557,7 +5562,7 @@ msgstr ""
"\n"
"Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:7891
+#: src/readelf.c:7982
#, c-format
msgid ""
"\n"
@@ -5566,22 +5571,22 @@ msgstr ""
"\n"
"Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:7914
+#: src/readelf.c:8005
#, c-format
msgid " LPStart encoding: %#x "
msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ LPStart: %#x "
-#: src/readelf.c:7926
+#: src/readelf.c:8017
#, c-format
msgid " TType encoding: %#x "
msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ TType: %#x "
-#: src/readelf.c:7941
+#: src/readelf.c:8032
#, c-format
msgid " Call site encoding: %#x "
msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–ÑÑ†Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ:%#x "
-#: src/readelf.c:7954
+#: src/readelf.c:8045
msgid ""
"\n"
" Call site table:"
@@ -5589,7 +5594,7 @@ msgstr ""
"\n"
" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¼Ñ–ÑÑ†Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ:"
-#: src/readelf.c:7968
+#: src/readelf.c:8059
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5602,12 +5607,12 @@ msgstr ""
" МіÑце заÑтоÑуваннÑ: %#<PRIx64>\n"
" ДіÑ: %u\n"
-#: src/readelf.c:8041
+#: src/readelf.c:8132
#, c-format
msgid "invalid TType encoding"
msgstr "некоректне ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ TType"
-#: src/readelf.c:8067
+#: src/readelf.c:8158
#, c-format
msgid ""
"\n"
@@ -5616,37 +5621,37 @@ msgstr ""
"\n"
"Розділ GDB [%2zu] «%s» за зміщеннÑм %#<PRIx64> міÑтить %<PRId64> байтів:\n"
-#: src/readelf.c:8096
+#: src/readelf.c:8187
#, c-format
msgid " Version: %<PRId32>\n"
msgstr " ВерÑÑ–Ñ: %<PRId32>\n"
-#: src/readelf.c:8114
+#: src/readelf.c:8205
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU: %#<PRIx32>\n"
-#: src/readelf.c:8121
+#: src/readelf.c:8212
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ TU: %#<PRIx32>\n"
-#: src/readelf.c:8128
+#: src/readelf.c:8219
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи: %#<PRIx32>\n"
-#: src/readelf.c:8135
+#: src/readelf.c:8226
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñимволу: %#<PRIx32>\n"
-#: src/readelf.c:8142
+#: src/readelf.c:8233
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " Ñтале зміщеннÑ: %#<PRIx32>\n"
-#: src/readelf.c:8156
+#: src/readelf.c:8247
#, c-format
msgid ""
"\n"
@@ -5655,7 +5660,7 @@ msgstr ""
"\n"
" СпиÑок CU зі зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n"
-#: src/readelf.c:8181
+#: src/readelf.c:8272
#, c-format
msgid ""
"\n"
@@ -5664,7 +5669,7 @@ msgstr ""
"\n"
" СпиÑок TU зі зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n"
-#: src/readelf.c:8210
+#: src/readelf.c:8301
#, c-format
msgid ""
"\n"
@@ -5673,7 +5678,7 @@ msgstr ""
"\n"
" СпиÑок Ð°Ð´Ñ€ÐµÑ Ð·Ñ– зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n"
-#: src/readelf.c:8243
+#: src/readelf.c:8334
#, c-format
msgid ""
"\n"
@@ -5682,17 +5687,17 @@ msgstr ""
"\n"
" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів за зміщеннÑм %#<PRIx32> міÑтить %zu позицій:\n"
-#: src/readelf.c:8330
+#: src/readelf.c:8421
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ деÑкриптор контекÑту зневаджуваннÑ: %s"
-#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277
+#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368
#, c-format
msgid "cannot convert core note data: %s"
msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ дані запиÑу Ñдра: %s"
-#: src/readelf.c:8849
+#: src/readelf.c:8940
#, c-format
msgid ""
"\n"
@@ -5701,21 +5706,21 @@ msgstr ""
"\n"
"%*s... <повторюєтьÑÑ %u разів> ..."
-#: src/readelf.c:9356
+#: src/readelf.c:9447
msgid " Owner Data size Type\n"
msgstr " ВлаÑник Розм. даних Тип\n"
-#: src/readelf.c:9374
+#: src/readelf.c:9465
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:9424
+#: src/readelf.c:9515
#, c-format
msgid "cannot get content of note section: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ розділу запиÑів: %s"
-#: src/readelf.c:9451
+#: src/readelf.c:9542
#, c-format
msgid ""
"\n"
@@ -5725,7 +5730,7 @@ msgstr ""
"Розділ запиÑів (note) [%2zu] «%s» з %<PRIu64> байтів за зміщеннÑм "
"%#0<PRIx64>:\n"
-#: src/readelf.c:9474
+#: src/readelf.c:9565
#, c-format
msgid ""
"\n"
@@ -5734,7 +5739,7 @@ msgstr ""
"\n"
"Сегмент запиÑів з %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:9520
+#: src/readelf.c:9611
#, c-format
msgid ""
"\n"
@@ -5743,12 +5748,12 @@ msgstr ""
"\n"
"У розділі [%zu] «%s» не міÑтитьÑÑ Ð´Ð°Ð½Ð¸Ñ… Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð°Ð¼Ð¿Ñƒ.\n"
-#: src/readelf.c:9547 src/readelf.c:9598
+#: src/readelf.c:9638 src/readelf.c:9689
#, c-format
msgid "cannot get data for section [%zu] '%s': %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ [%zu] «%s»: %s"
-#: src/readelf.c:9552
+#: src/readelf.c:9643
#, c-format
msgid ""
"\n"
@@ -5757,7 +5762,7 @@ msgstr ""
"\n"
"ШіÑÑ‚. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:9557
+#: src/readelf.c:9648
#, fuzzy, c-format
msgid ""
"\n"
@@ -5767,7 +5772,7 @@ msgstr ""
"\n"
"ШіÑÑ‚. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:9571
+#: src/readelf.c:9662
#, c-format
msgid ""
"\n"
@@ -5776,7 +5781,7 @@ msgstr ""
"\n"
"У розділі [%zu] «%s» не міÑтитьÑÑ Ñ€Ñдків Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð°Ð¼Ð¿Ñƒ.\n"
-#: src/readelf.c:9603
+#: src/readelf.c:9694
#, c-format
msgid ""
"\n"
@@ -5785,7 +5790,7 @@ msgstr ""
"\n"
"Розділ Ñ€Ñдків [%zu] «%s» міÑтить %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:9608
+#: src/readelf.c:9699
#, fuzzy, c-format
msgid ""
"\n"
@@ -5795,7 +5800,7 @@ msgstr ""
"\n"
"Розділ Ñ€Ñдків [%zu] «%s» міÑтить %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:9657
+#: src/readelf.c:9748
#, c-format
msgid ""
"\n"
@@ -5804,7 +5809,7 @@ msgstr ""
"\n"
"розділу [%lu] не Ñ–Ñнує"
-#: src/readelf.c:9686
+#: src/readelf.c:9777
#, c-format
msgid ""
"\n"
@@ -5813,12 +5818,12 @@ msgstr ""
"\n"
"розділу «%s» не Ñ–Ñнує"
-#: src/readelf.c:9743
+#: src/readelf.c:9834
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ покажчик Ñимволів архіву «%s»: %s"
-#: src/readelf.c:9746
+#: src/readelf.c:9837
#, c-format
msgid ""
"\n"
@@ -5827,7 +5832,7 @@ msgstr ""
"\n"
"У архіві «%s» немає покажчика Ñимволів\n"
-#: src/readelf.c:9750
+#: src/readelf.c:9841
#, c-format
msgid ""
"\n"
@@ -5836,12 +5841,12 @@ msgstr ""
"\n"
"Покажчик архіву «%s» міÑтить %zu запиÑів:\n"
-#: src/readelf.c:9768
+#: src/readelf.c:9859
#, c-format
msgid "cannot extract member at offset %zu in '%s': %s"
msgstr "не вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ елемент за зміщеннÑм %zu у «%s»: %s"
-#: src/readelf.c:9773
+#: src/readelf.c:9864
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Елемент архіву «%s» міÑтить:\n"
@@ -6119,31 +6124,31 @@ msgstr "помилка mprotect"
msgid "Skipping section %zd '%s' data outside file"
msgstr "ПропуÑкаємо дані %zd «%s» поза файлом"
-#: src/strip.c:69
+#: src/strip.c:71
msgid "Place stripped output into FILE"
msgstr "ВивеÑти дані піÑÐ»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ ФÐЙЛа"
-#: src/strip.c:70
+#: src/strip.c:72
msgid "Extract the removed sections into FILE"
msgstr "Видобути вилучені розділи до ФÐЙЛа"
-#: src/strip.c:71
+#: src/strip.c:73
msgid "Embed name FILE instead of -f argument"
msgstr "Вбудувати назву ФÐЙЛа заміÑÑ‚ÑŒ аргументу -f"
-#: src/strip.c:75
+#: src/strip.c:77
msgid "Remove all debugging symbols"
msgstr "Вилучити вÑÑ– Ñимволи зневаджуваннÑ"
-#: src/strip.c:79
+#: src/strip.c:81
msgid "Remove section headers (not recommended)"
msgstr "Вилучити заголовки розділів (не рекомендовано)"
-#: src/strip.c:81
+#: src/strip.c:83
msgid "Copy modified/access timestamps to the output"
msgstr "Скопіювати чаÑові позначки зміни/доÑтупу до виведених даних"
-#: src/strip.c:83
+#: src/strip.c:85
msgid ""
"Resolve all trivial relocations between debug sections if the removed "
"sections are placed in a debug file (only relevant for ET_REL files, "
@@ -6153,52 +6158,64 @@ msgstr ""
"вилучені розділи було розташовано у діагноÑтичному файлі (ÑтоÑуєтьÑÑ Ð»Ð¸ÑˆÐµ "
"файлів ET_REL, ÑкаÑувати дію неможливо, потребує параметра -f)"
-#: src/strip.c:85
+#: src/strip.c:87
msgid "Remove .comment section"
msgstr "Вилучити розділ .comment"
+#: src/strip.c:88
+msgid ""
+"Remove the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once. Only non-allocated sections can be removed."
+msgstr ""
+
+#: src/strip.c:89
+msgid ""
+"Keep the named section. SECTION is an extended wildcard pattern. May be "
+"given more than once."
+msgstr ""
+
#. Short description of program.
-#: src/strip.c:93
+#: src/strip.c:96
msgid "Discard symbols from object files."
msgstr "Відкинути Ñимволи з об’єктних файлів"
-#: src/strip.c:187
+#: src/strip.c:242
#, c-format
msgid "--reloc-debug-sections used without -f"
msgstr "--reloc-debug-sections викориÑтано без -f"
-#: src/strip.c:201
+#: src/strip.c:256
#, c-format
msgid "Only one input file allowed together with '-o' and '-f'"
msgstr ""
"Разом з «-o» або «-f» можна викориÑтовувати лише один файл вхідних даних"
-#: src/strip.c:223
+#: src/strip.c:279
#, c-format
msgid "-f option specified twice"
msgstr "параметр -f вказано двічі"
-#: src/strip.c:232
+#: src/strip.c:288
#, c-format
msgid "-F option specified twice"
msgstr "параметр -F вказано двічі"
-#: src/strip.c:265
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -R передбачено підтримку лише розділу .comment"
+#: src/strip.c:347
+#, fuzzy, c-format
+msgid "cannot both keep and remove .comment section"
+msgstr "Вилучити розділ .comment"
-#: src/strip.c:307 src/strip.c:331
+#: src/strip.c:372 src/strip.c:396
#, c-format
msgid "cannot stat input file '%s'"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані з вхідного файла «%s» за допомогою stat"
-#: src/strip.c:321
+#: src/strip.c:386
#, c-format
msgid "while opening '%s'"
msgstr "під Ñ‡Ð°Ñ Ñпроби Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Â«%s»"
-#: src/strip.c:359
+#: src/strip.c:424
#, c-format
msgid "%s: cannot use -o or -f when stripping archive"
msgstr ""
@@ -6211,107 +6228,117 @@ msgstr ""
#. result = handle_ar (fd, elf, NULL, fname,
#. preserve_dates ? tv : NULL);
#.
-#: src/strip.c:371
+#: src/strip.c:436
#, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: підтримки Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ вміÑту з архіву не передбачено"
-#: src/strip.c:470
+#: src/strip.c:535
#, c-format
msgid "cannot open EBL backend"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ канал Ñервера EBL"
-#: src/strip.c:515
+#: src/strip.c:580
#, c-format
msgid "cannot get number of phdrs"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ кількіÑÑ‚ÑŒ phdr"
-#: src/strip.c:531 src/strip.c:555
+#: src/strip.c:596 src/strip.c:620
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "не вдалоÑÑ Ñтворити файл «%s»: %s"
-#: src/strip.c:621
+#: src/strip.c:686
#, c-format
msgid "illformed file '%s'"
msgstr "помилкове Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»"
-#: src/strip.c:955 src/strip.c:1054
+#: src/strip.c:696
+#, fuzzy, c-format
+msgid "Cannot remove allocated section '%s'"
+msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити PLT-розділ: %s"
+
+#: src/strip.c:705
+#, fuzzy, c-format
+msgid "Cannot both keep and remove section '%s'"
+msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ новий розділ: %s"
+
+#: src/strip.c:1061 src/strip.c:1160
#, c-format
msgid "while generating output file: %s"
msgstr "під Ñ‡Ð°Ñ Ñпроби ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° з виведеними даними: %s"
-#: src/strip.c:1020 src/strip.c:2090
+#: src/strip.c:1126 src/strip.c:2208
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s"
-#: src/strip.c:1037
+#: src/strip.c:1143
#, c-format
msgid "while preparing output for '%s'"
msgstr "під Ñ‡Ð°Ñ Ð¿Ñ€Ð¸Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ… даних Ð´Ð»Ñ Â«%s»"
-#: src/strip.c:1095 src/strip.c:1158
+#: src/strip.c:1205 src/strip.c:1268
#, c-format
msgid "while create section header section: %s"
msgstr "під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ заголовка розділу: %s"
-#: src/strip.c:1104
+#: src/strip.c:1214
#, c-format
msgid "cannot allocate section data: %s"
msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити дані розділу: %s"
-#: src/strip.c:1170
+#: src/strip.c:1280
#, c-format
msgid "while create section header string table: %s"
msgstr "під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків заголовка розділу: %s"
-#: src/strip.c:1177
+#: src/strip.c:1287
#, fuzzy, c-format
msgid "no memory to create section header string table"
msgstr "під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків заголовка розділу: %s"
-#: src/strip.c:1384
+#: src/strip.c:1497
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr ""
-#: src/strip.c:1876
+#: src/strip.c:1994
#, c-format
msgid "bad relocation"
msgstr "помилкове переÑуваннÑ"
-#: src/strip.c:2001 src/strip.c:2114
+#: src/strip.c:2119 src/strip.c:2232
#, c-format
msgid "while writing '%s': %s"
msgstr "під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу «%s»: %s"
-#: src/strip.c:2012
+#: src/strip.c:2130
#, c-format
msgid "while creating '%s'"
msgstr "під Ñ‡Ð°Ñ Ñпроби ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Â«%s»"
-#: src/strip.c:2035
+#: src/strip.c:2153
#, c-format
msgid "while computing checksum for debug information"
msgstr "під Ñ‡Ð°Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ñ— Ñуми Ð´Ð»Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичних даних"
-#: src/strip.c:2099
+#: src/strip.c:2217
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°: %s"
-#: src/strip.c:2139 src/strip.c:2159
+#: src/strip.c:2257 src/strip.c:2277
#, c-format
msgid "while writing '%s'"
msgstr "під Ñ‡Ð°Ñ Ñпроби запиÑу «%s»"
-#: src/strip.c:2196 src/strip.c:2203
+#: src/strip.c:2314 src/strip.c:2321
#, c-format
msgid "error while finishing '%s': %s"
msgstr "помилка під Ñ‡Ð°Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Â«%s»: %s"
-#: src/strip.c:2220 src/strip.c:2292
+#: src/strip.c:2338 src/strip.c:2414
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "не вдалоÑÑ Ð²Ñтановити права доÑтупу та дату зміни «%s»"
@@ -6728,12 +6755,12 @@ msgstr "Додатково вивеÑти назви функцій"
msgid "Show instances of inlined functions"
msgstr "ВивеÑти екземплÑри вбудованих функцій"
+#~ msgid "-R option supports only .comment section"
+#~ msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -R передбачено підтримку лише розділу .comment"
+
#~ msgid "Written by %s.\n"
#~ msgstr "Ðвтор — %s.\n"
-#~ msgid "cannot allocate PLT section: %s"
-#~ msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити PLT-розділ: %s"
-
#~ msgid "cannot allocate PLTREL section: %s"
#~ msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити розділ PLTREL: %s"
diff --git a/src/ChangeLog b/src/ChangeLog
index cbb77fc8..54ba767e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,45 @@
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (print_debug_macro_section): Accept either version 4 or
+ version 5. Use DW_MACRO names instead of DW_MACRO_GNU names. Add
+ minimal support for DW_MACRO_define_sup, DW_MACRO_undef_sup,
+ DW_MACRO_import_sup, DW_MACRO_define_strx and DW_MACRO_undef_strx.
+
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (dwarf_defaulted_string): New function.
+ (dwarf_defaulted_name): Likewise.
+ (attr_callback): Use dwarf_defaulted_name to get value of
+ DW_AT_defaulted.
+
+2017-07-20 Mark Wielaard <mark@klomp.org>
+
+ * strip.c (handle_elf): Deal with data marker symbols pointing to
+ debug sections (they can be removed).
+
+2017-07-14 Mark Wielaard <mark@klomp.org>
+
+ * strip (OPT_KEEP_SECTION): New define.
+ (options): Add documentation for remove-section. Add keep-section.
+ (struct section_pattern): New data type.
+ (keep_secs, remove_secs): New globals.
+ (add_pattern, free_sec_patterns, free_patterns, section_name_matches):
+ New functions.
+ (main): Call free_patterns.
+ (parse_opt): Handle 'R' and OPT_KEEP_SECTION. Check remove_comment
+ on ARGP_KEY_SUCCESS.
+ (handle_elf): Handle and sanity check keep_secs and remove_secs.
+
+2017-06-07 Mark Wielaard <mark@klomp.org>
+
+ * strip.c (handle_elf): Introduce new handle_elf boolean. Use it to
+ determine whether to create an output and/or debug file. Remove new
+ output file on error.
+
+2017-06-06 Mark Wielaard <mark@klomp.org>
+
+ * strip.c (handle_elf): Assume e_shstrndx section can be removed.
+
2017-04-20 Ulf Hermann <ulf.hermann@qt.io>
* readelf.c: Include strings.h.
diff --git a/src/readelf.c b/src/readelf.c
index 40d49139..73be474b 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -3797,6 +3797,23 @@ dwarf_access_string (unsigned int code)
static const char *
+dwarf_defaulted_string (unsigned int code)
+{
+ static const char *const known[] =
+ {
+#define DWARF_ONE_KNOWN_DW_DEFAULTED(NAME, CODE) [CODE] = #NAME,
+ DWARF_ALL_KNOWN_DW_DEFAULTED
+#undef DWARF_ONE_KNOWN_DW_DEFAULTED
+ };
+
+ if (likely (code < sizeof (known) / sizeof (known[0])))
+ return known[code];
+
+ return NULL;
+}
+
+
+static const char *
dwarf_visibility_string (unsigned int code)
{
static const char *const known[] =
@@ -4002,6 +4019,14 @@ dwarf_access_name (unsigned int code)
static const char *
+dwarf_defaulted_name (unsigned int code)
+{
+ const char *ret = dwarf_defaulted_string (code);
+ return string_or_unknown (ret, code, 0, 0, false);
+}
+
+
+static const char *
dwarf_visibility_name (unsigned int code)
{
const char *ret = dwarf_visibility_string (code);
@@ -6053,6 +6078,9 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
case DW_AT_accessibility:
valuestr = dwarf_access_name (num);
break;
+ case DW_AT_defaulted:
+ valuestr = dwarf_defaulted_name (num);
+ break;
case DW_AT_visibility:
valuestr = dwarf_visibility_name (num);
break;
@@ -7366,7 +7394,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
// Version 4 is the GNU extension for DWARF4. DWARF5 will use version
// 5 when it gets standardized.
- if (vers != 4)
+ if (vers != 4 && vers != 5)
{
printf (gettext (" unknown version, cannot parse section\n"));
return;
@@ -7390,7 +7418,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
line_offset);
}
- const unsigned char *vendor[DW_MACRO_GNU_hi_user - DW_MACRO_GNU_lo_user];
+ const unsigned char *vendor[DW_MACRO_hi_user - DW_MACRO_lo_user];
memset (vendor, 0, sizeof vendor);
if (flag & 0x04)
{
@@ -7407,12 +7435,12 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
goto invalid_data;
unsigned int opcode = *readp++;
printf (gettext (" [%" PRIx8 "]"), opcode);
- if (opcode < DW_MACRO_GNU_lo_user
- || opcode > DW_MACRO_GNU_hi_user)
+ if (opcode < DW_MACRO_lo_user
+ || opcode > DW_MACRO_hi_user)
goto invalid_data;
// Record the start of description for this vendor opcode.
// uleb128 nr args, 1 byte per arg form.
- vendor[opcode - DW_MACRO_GNU_lo_user] = readp;
+ vendor[opcode - DW_MACRO_lo_user] = readp;
if (readp + 1 > readendp)
goto invalid_data;
unsigned int args = *readp++;
@@ -7465,7 +7493,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
switch (opcode)
{
- case DW_MACRO_GNU_start_file:
+ case DW_MACRO_start_file:
get_uleb128 (u128, readp, readendp);
if (readp >= readendp)
goto invalid_data;
@@ -7495,12 +7523,12 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
++level;
break;
- case DW_MACRO_GNU_end_file:
+ case DW_MACRO_end_file:
--level;
printf ("%*send_file\n", level, "");
break;
- case DW_MACRO_GNU_define:
+ case DW_MACRO_define:
get_uleb128 (u128, readp, readendp);
endp = memchr (readp, '\0', readendp - readp);
if (endp == NULL)
@@ -7510,7 +7538,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
readp = endp + 1;
break;
- case DW_MACRO_GNU_undef:
+ case DW_MACRO_undef:
get_uleb128 (u128, readp, readendp);
endp = memchr (readp, '\0', readendp - readp);
if (endp == NULL)
@@ -7520,7 +7548,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
readp = endp + 1;
break;
- case DW_MACRO_GNU_define_indirect:
+ case DW_MACRO_define_strp:
get_uleb128 (u128, readp, readendp);
if (readp + offset_len > readendp)
goto invalid_data;
@@ -7532,7 +7560,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
level, "", dwarf_getstring (dbg, off, NULL), u128);
break;
- case DW_MACRO_GNU_undef_indirect:
+ case DW_MACRO_undef_strp:
get_uleb128 (u128, readp, readendp);
if (readp + offset_len > readendp)
goto invalid_data;
@@ -7544,7 +7572,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
level, "", dwarf_getstring (dbg, off, NULL), u128);
break;
- case DW_MACRO_GNU_transparent_include:
+ case DW_MACRO_import:
if (readp + offset_len > readendp)
goto invalid_data;
if (offset_len == 8)
@@ -7555,15 +7583,78 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
level, "", off);
break;
+ case DW_MACRO_define_sup:
+ get_uleb128 (u128, readp, readendp);
+ if (readp + offset_len > readendp)
+ goto invalid_data;
+ if (offset_len == 8)
+ off = read_8ubyte_unaligned_inc (dbg, readp);
+ else
+ off = read_4ubyte_unaligned_inc (dbg, readp);
+ // Needs support for reading from supplementary object file.
+ printf ("%*s#define <str-at-0x%" PRIx64 ">, line %u (sup)\n",
+ level, "", off, u128);
+ break;
+
+ case DW_MACRO_undef_sup:
+ get_uleb128 (u128, readp, readendp);
+ if (readp + offset_len > readendp)
+ goto invalid_data;
+ if (offset_len == 8)
+ off = read_8ubyte_unaligned_inc (dbg, readp);
+ else
+ off = read_4ubyte_unaligned_inc (dbg, readp);
+ // Needs support for reading from supplementary object file.
+ printf ("%*s#undef <str-at-0x%" PRIx64 ">, line %u (sup)\n",
+ level, "", off, u128);
+ break;
+
+ case DW_MACRO_import_sup:
+ if (readp + offset_len > readendp)
+ goto invalid_data;
+ if (offset_len == 8)
+ off = read_8ubyte_unaligned_inc (dbg, readp);
+ else
+ off = read_4ubyte_unaligned_inc (dbg, readp);
+ printf ("%*s#include offset 0x%" PRIx64 " (sup)\n",
+ level, "", off);
+ break;
+
+ case DW_MACRO_define_strx:
+ get_uleb128 (u128, readp, readendp);
+ if (readp + offset_len > readendp)
+ goto invalid_data;
+ if (offset_len == 8)
+ off = read_8ubyte_unaligned_inc (dbg, readp);
+ else
+ off = read_4ubyte_unaligned_inc (dbg, readp);
+ // Needs support for reading indirect string offset table
+ printf ("%*s#define <str-at-0x%" PRIx64 ">, line %u (strx)\n",
+ level, "", off, u128);
+ break;
+
+ case DW_MACRO_undef_strx:
+ get_uleb128 (u128, readp, readendp);
+ if (readp + offset_len > readendp)
+ goto invalid_data;
+ if (offset_len == 8)
+ off = read_8ubyte_unaligned_inc (dbg, readp);
+ else
+ off = read_4ubyte_unaligned_inc (dbg, readp);
+ // Needs support for reading indirect string offset table.
+ printf ("%*s#undef <str-at-0x%" PRIx64 ">, line %u (strx)\n",
+ level, "", off, u128);
+ break;
+
default:
printf ("%*svendor opcode 0x%" PRIx8, level, "", opcode);
- if (opcode < DW_MACRO_GNU_lo_user
- || opcode > DW_MACRO_GNU_lo_user
- || vendor[opcode - DW_MACRO_GNU_lo_user] == NULL)
+ if (opcode < DW_MACRO_lo_user
+ || opcode > DW_MACRO_lo_user
+ || vendor[opcode - DW_MACRO_lo_user] == NULL)
goto invalid_data;
const unsigned char *op_desc;
- op_desc = vendor[opcode - DW_MACRO_GNU_lo_user];
+ op_desc = vendor[opcode - DW_MACRO_lo_user];
// Just skip the arguments, we cannot really interpret them,
// but print as much as we can.
diff --git a/src/strip.c b/src/strip.c
index f7474418..773ed548 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -1,5 +1,5 @@
/* Discard section not used at runtime from object files.
- Copyright (C) 2000-2012, 2014, 2015, 2016 Red Hat, Inc.
+ Copyright (C) 2000-2012, 2014, 2015, 2016, 2017 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
@@ -26,6 +26,7 @@
#include <endian.h>
#include <error.h>
#include <fcntl.h>
+#include <fnmatch.h>
#include <gelf.h>
#include <libelf.h>
#include <libintl.h>
@@ -60,6 +61,7 @@ ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
#define OPT_PERMISSIVE 0x101
#define OPT_STRIP_SECTIONS 0x102
#define OPT_RELOC_DEBUG 0x103
+#define OPT_KEEP_SECTION 0x104
/* Definitions of arguments for argp functions. */
@@ -83,7 +85,8 @@ static const struct argp_option options[] =
N_("Resolve all trivial relocations between debug sections if the removed sections are placed in a debug file (only relevant for ET_REL files, operation is not reversable, needs -f)"), 0 },
{ "remove-comment", OPT_REMOVE_COMMENT, NULL, 0,
N_("Remove .comment section"), 0 },
- { "remove-section", 'R', "SECTION", OPTION_HIDDEN, NULL, 0 },
+ { "remove-section", 'R', "SECTION", 0, N_("Remove the named section. SECTION is an extended wildcard pattern. May be given more than once. Only non-allocated sections can be removed."), 0 },
+ { "keep-section", OPT_KEEP_SECTION, "SECTION", 0, N_("Keep the named section. SECTION is an extended wildcard pattern. May be given more than once."), 0 },
{ "permissive", OPT_PERMISSIVE, NULL, 0,
N_("Relax a few rules to handle slightly broken ELF files"), 0 },
{ NULL, 0, NULL, 0, NULL, 0 }
@@ -157,6 +160,58 @@ static bool permissive;
/* If true perform relocations between debug sections. */
static bool reloc_debug;
+/* Sections the user explicitly wants to keep or remove. */
+struct section_pattern
+{
+ char *pattern;
+ struct section_pattern *next;
+};
+
+static struct section_pattern *keep_secs = NULL;
+static struct section_pattern *remove_secs = NULL;
+
+static void
+add_pattern (struct section_pattern **patterns, const char *pattern)
+{
+ struct section_pattern *p = xmalloc (sizeof *p);
+ p->pattern = xstrdup (pattern);
+ p->next = *patterns;
+ *patterns = p;
+}
+
+static void
+free_sec_patterns (struct section_pattern *patterns)
+{
+ struct section_pattern *pattern = patterns;
+ while (pattern != NULL)
+ {
+ struct section_pattern *p = pattern;
+ pattern = p->next;
+ free (p->pattern);
+ free (p);
+ }
+}
+
+static void
+free_patterns (void)
+{
+ free_sec_patterns (keep_secs);
+ free_sec_patterns (remove_secs);
+}
+
+static bool
+section_name_matches (struct section_pattern *patterns, const char *name)
+{
+ struct section_pattern *pattern = patterns;
+ while (pattern != NULL)
+ {
+ if (fnmatch (pattern->pattern, name, FNM_EXTMATCH) == 0)
+ return true;
+ pattern = pattern->next;
+ }
+ return false;
+}
+
int
main (int argc, char *argv[])
@@ -207,6 +262,7 @@ Only one input file allowed together with '-o' and '-f'"));
while (++remaining < argc);
}
+ free_patterns ();
return result;
}
@@ -257,14 +313,13 @@ parse_opt (int key, char *arg, struct argp_state *state)
break;
case 'R':
- if (!strcmp (arg, ".comment"))
+ if (fnmatch (arg, ".comment", FNM_EXTMATCH) == 0)
remove_comment = true;
- else
- {
- argp_error (state,
- gettext ("-R option supports only .comment section"));
- return EINVAL;
- }
+ add_pattern (&remove_secs, arg);
+ break;
+
+ case OPT_KEEP_SECTION:
+ add_pattern (&keep_secs, arg);
break;
case 'g':
@@ -284,6 +339,16 @@ parse_opt (int key, char *arg, struct argp_state *state)
case 's': /* Ignored for compatibility. */
break;
+ case ARGP_KEY_SUCCESS:
+ if (remove_comment == true
+ && section_name_matches (keep_secs, ".comment"))
+ {
+ argp_error (state,
+ gettext ("cannot both keep and remove .comment section"));
+ return EINVAL;
+ }
+ break;
+
default:
return ARGP_ERR_UNKNOWN;
}
@@ -622,6 +687,28 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
goto fail_close;
}
+ /* Sanity check the user. */
+ if (section_name_matches (remove_secs, shdr_info[cnt].name))
+ {
+ if ((shdr_info[cnt].shdr.sh_flags & SHF_ALLOC) != 0)
+ {
+ error (0, 0,
+ gettext ("Cannot remove allocated section '%s'"),
+ shdr_info[cnt].name);
+ result = 1;
+ goto fail_close;
+ }
+
+ if (section_name_matches (keep_secs, shdr_info[cnt].name))
+ {
+ error (0, 0,
+ gettext ("Cannot both keep and remove section '%s'"),
+ shdr_info[cnt].name);
+ result = 1;
+ goto fail_close;
+ }
+ }
+
/* Mark them as present but not yet investigated. */
shdr_info[cnt].idx = 1;
@@ -709,14 +796,22 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
know how to handle them
- if a section is referred to from a section which is not removed
in the sh_link or sh_info element it cannot be removed either
+ - the user might have explicitly said to remove or keep a section
*/
for (cnt = 1; cnt < shnum; ++cnt)
- /* Check whether the section can be removed. */
+ /* Check whether the section can be removed. Since we will create
+ a new .shstrtab assume it will be removed too. */
if (remove_shdrs ? !(shdr_info[cnt].shdr.sh_flags & SHF_ALLOC)
- : ebl_section_strip_p (ebl, ehdr, &shdr_info[cnt].shdr,
- shdr_info[cnt].name, remove_comment,
- remove_debug))
+ : (ebl_section_strip_p (ebl, ehdr, &shdr_info[cnt].shdr,
+ shdr_info[cnt].name, remove_comment,
+ remove_debug)
+ || cnt == ehdr->e_shstrndx
+ || section_name_matches (remove_secs, shdr_info[cnt].name)))
{
+ /* The user might want to explicitly keep this one. */
+ if (section_name_matches (keep_secs, shdr_info[cnt].name))
+ continue;
+
/* For now assume this section will be removed. */
shdr_info[cnt].idx = 0;
@@ -865,8 +960,19 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (shdr_info[scnidx].idx == 0)
/* This symbol table has a real symbol in
a discarded section. So preserve the
- original table in the debug file. */
- shdr_info[cnt].debug_data = symdata;
+ original table in the debug file. Unless
+ it is a redundant data marker to a debug
+ (data only) section. */
+ if (! (ebl_section_strip_p (ebl, ehdr,
+ &shdr_info[scnidx].shdr,
+ shdr_info[scnidx].name,
+ remove_comment,
+ remove_debug)
+ && ebl_data_marker_symbol (ebl, sym,
+ elf_strptr (elf,
+ shdr_info[cnt].shdr.sh_link,
+ sym->st_name))))
+ shdr_info[cnt].debug_data = symdata;
}
}
@@ -1061,13 +1167,17 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
shdr_info[cnt].se = dwelf_strtab_add (shst, shdr_info[cnt].name);
}
- /* Test whether we are doing anything at all. */
- if (cnt == idx)
- /* Nope, all removable sections are already gone. */
- goto fail_close;
+ /* Test whether we are doing anything at all. Either all removable
+ sections are already gone. Or the only section we would remove is
+ the .shstrtab section which we would add again. */
+ bool removing_sections = !(cnt == idx
+ || (cnt == idx + 1
+ && shdr_info[ehdr->e_shstrndx].idx == 0));
+ if (output_fname == NULL && !removing_sections)
+ goto fail_close;
- /* Create the reference to the file with the debug info. */
- if (debug_fname != NULL && !remove_shdrs)
+ /* Create the reference to the file with the debug info (if any). */
+ if (debug_fname != NULL && !remove_shdrs && removing_sections)
{
/* Add the section header string table section name. */
shdr_info[cnt].se = dwelf_strtab_add_len (shst, ".gnu_debuglink", 15);
@@ -1194,7 +1304,10 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
shdr_info[cnt].shdr.sh_name = dwelf_strent_off (shdr_info[cnt].se);
/* Update the section header from the input file. Some fields
- might be section indeces which now have to be adjusted. */
+ might be section indeces which now have to be adjusted. Keep
+ the index to the "current" sh_link in case we need it to lookup
+ symbol table names. */
+ size_t sh_link = shdr_info[cnt].shdr.sh_link;
if (shdr_info[cnt].shdr.sh_link != 0)
shdr_info[cnt].shdr.sh_link =
shdr_info[shdr_info[cnt].shdr.sh_link].idx;
@@ -1393,13 +1506,17 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
/* The symbol points to a section that is discarded
but isn't preserved in the debug file. Check that
this is a section or group signature symbol
- for a section which has been removed. */
+ for a section which has been removed. Or a special
+ data marker symbol to a debug section. */
{
elf_assert (GELF_ST_TYPE (sym->st_info) == STT_SECTION
|| ((shdr_info[sidx].shdr.sh_type
== SHT_GROUP)
&& (shdr_info[sidx].shdr.sh_info
- == inner)));
+ == inner))
+ || ebl_data_marker_symbol (ebl, sym,
+ elf_strptr (elf, sh_link,
+ sym->st_name)));
}
}
@@ -1755,7 +1872,8 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
/* Remove any relocations between debug sections in ET_REL
for the debug file when requested. These relocations are always
zero based between the unallocated sections. */
- if (debug_fname != NULL && reloc_debug && ehdr->e_type == ET_REL)
+ if (debug_fname != NULL && removing_sections
+ && reloc_debug && ehdr->e_type == ET_REL)
{
scn = NULL;
cnt = 0;
@@ -1993,7 +2111,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
/* Now that we have done all adjustments to the data,
we can actually write out the debug file. */
- if (debug_fname != NULL)
+ if (debug_fname != NULL && removing_sections)
{
/* Finally write the file. */
if (unlikely (elf_update (debugelf, ELF_C_WRITE) == -1))
@@ -2167,14 +2285,14 @@ while computing checksum for debug information"));
if (shdr_info != NULL)
{
/* For some sections we might have created an table to map symbol
- table indices. */
- if (any_symtab_changes)
- for (cnt = 1; cnt <= shdridx; ++cnt)
- {
- free (shdr_info[cnt].newsymidx);
- if (shdr_info[cnt].debug_data != NULL)
- free (shdr_info[cnt].debug_data->d_buf);
- }
+ table indices. Or we might kept (original) data around to put
+ into the .debug file. */
+ for (cnt = 1; cnt <= shdridx; ++cnt)
+ {
+ free (shdr_info[cnt].newsymidx);
+ if (shdr_info[cnt].debug_data != NULL)
+ free (shdr_info[cnt].debug_data->d_buf);
+ }
/* Free data we allocated for the .gnu_debuglink section. */
free (debuglink_buf);
@@ -2226,7 +2344,11 @@ cannot set access and modification date of '%s'"),
/* Close the file descriptor if we created a new file. */
if (output_fname != NULL)
- close (fd);
+ {
+ close (fd);
+ if (result != 0)
+ unlink (output_fname);
+ }
return result;
}
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 5b0d486e..04efdc81 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,63 @@
+2017-07-26 Mark Wielaard <mark@klomp.org>
+
+ * dwarf-getmacros.c (mac): Use DW_MACRO names instead of DW_MACRO_GNU.
+
+2016-10-27 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_default_lower_bound.c: New test.
+ * Makefile.am (check_PROGRAMS): Add dwarf_default_lower_bound.
+ (TESTS): Likewise.
+ (dwarf_default_lower_bound_LDADD): New variable.
+
+2017-07-21 Mark Wielaard <mark@klomp.org>
+
+ * get-lines.c (main): Add dwarf_line_file test.
+
+2017-07-19 Gustavo Romero <gromero@linux.vnet.ibm.com>
+
+ * run-addrcfi.sh: Update generic SPRs names to HTM SPRs names
+ * run-allregs.sh: Update generic SPRs names to HTM SPRs names
+
+2017-07-20 Mark Wielaard <mark@klomp.org>
+
+ * run-strip-g.sh: New test.
+ * Makefile.am (TESTS): Add run-strip-g.sh.
+ (EXTRA_DIST): Likewise.
+
+2017-07-18 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (TESTS): Always add run-disasm-bpf.sh if HAVE_LIBASM.
+
+2017-05-04 Ulf Hermann <ulf.hermann@qt.io>
+
+ * elfshphehdr.c: For writing, use /dev/null rather than /dev/zero.
+
+2017-07-14 Mark Wielaard <mark@klomp.org>
+
+ * run-strip-remove-keep.sh: New test.
+ * Makefile.am (TESTS): Add run-strip-remove-keep.sh.
+ (EXTRA_DIST): Likewise.
+
+2017-06-07 Mark Wielaard <mark@klomp.org>
+
+ * run-strip-nothing.sh: New test.
+ * Makefile.am (TESTS): Add run-strip-nothing.sh.
+ (EXTRA_DIST): Likewise.
+
+2017-06-06 Mark Wielaard <mark@klomp.org>
+
+ * run-strip-test.sh: Test strip -g doesn't introduce extra .shstrtab.
+
+2017-05-30 Mark Wielaard <mark@klomp.org>
+
+ * run-backtrace-fp-core-ppc64le.sh: New test.
+ * backtrace.ppc64le.fp.core.bz2: New test file.
+ * backtrace.ppc64le.fp.exec.bz2: New testfile.
+ * backtrace-subr.sh (check_backtracegen): Accept '(null)'.
+ * Makefile.am (TESTS): Add run-backtrace-fp-core-ppc64le.sh.
+ (EXTRA_DIST): Add run-backtrace-fp-core-ppc64le.sh,
+ backtrace.ppc64le.fp.core.bz2 and backtrace.ppc64le.fp.exec.bz2.
+
2017-02-13 Ulf Hermann <ulf.hermann@qt.io>
Mark Wielaard <mark@klomp.org>
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d17ffd47..483f3878 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -55,7 +55,7 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \
getsrc_die strptr newdata elfstrtab dwfl-proc-attach \
elfshphehdr elfstrmerge dwelfgnucompressed elfgetchdr \
elfgetzdata elfputzdata zstrptr emptyfile vendorelf \
- fillfile
+ fillfile dwarf_default_lower_bound
asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
asm-tst6 asm-tst7 asm-tst8 asm-tst9
@@ -81,8 +81,9 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \
run-strip-test3.sh run-strip-test4.sh run-strip-test5.sh \
run-strip-test6.sh run-strip-test7.sh run-strip-test8.sh \
run-strip-test9.sh run-strip-test10.sh \
+ run-strip-nothing.sh run-strip-g.sh \
run-strip-groups.sh run-strip-reloc.sh run-strip-strmerge.sh \
- run-strip-nobitsalign.sh \
+ run-strip-nobitsalign.sh run-strip-remove-keep.sh \
run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-test3.sh \
run-unstrip-test4.sh run-unstrip-M.sh run-elfstrmerge-test.sh \
run-ecp-test.sh run-ecp-test2.sh run-alldts.sh \
@@ -117,6 +118,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \
run-backtrace-native-core-biarch.sh run-backtrace-core-x86_64.sh \
run-backtrace-fp-core-x86_64.sh \
run-backtrace-fp-core-aarch64.sh \
+ run-backtrace-fp-core-ppc64le.sh \
run-backtrace-core-x32.sh \
run-backtrace-core-i386.sh run-backtrace-fp-core-i386.sh \
run-backtrace-core-ppc.sh \
@@ -133,7 +135,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \
run-elfgetzdata.sh run-elfputzdata.sh run-zstrptr.sh \
run-compress-test.sh \
run-readelf-zdebug.sh run-readelf-zdebug-rel.sh \
- emptyfile vendorelf fillfile
+ emptyfile vendorelf fillfile dwarf_default_lower_bound
if !BIARCH
export ELFUTILS_DISABLE_BIARCH = 1
@@ -154,10 +156,7 @@ endif
if HAVE_LIBASM
check_PROGRAMS += $(asm_TESTS)
-TESTS += $(asm_TESTS)
-if HAVE_LINUX_BPF_H
-TESTS += run-disasm-bpf.sh
-endif
+TESTS += $(asm_TESTS) run-disasm-bpf.sh
endif
EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
@@ -174,6 +173,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \
run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \
run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \
+ run-strip-nothing.sh run-strip-remove-keep.sh run-strip-g.sh \
run-strip-strmerge.sh run-strip-nobitsalign.sh \
testfile-nobitsalign.bz2 testfile-nobitsalign.strip.bz2 \
run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \
@@ -303,6 +303,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
backtrace-subr.sh backtrace.i386.core.bz2 backtrace.i386.exec.bz2 \
run-backtrace-fp-core-i386.sh \
backtrace.i386.fp.core.bz2 backtrace.i386.fp.exec.bz2 \
+ run-backtrace-fp-core-ppc64le.sh \
+ backtrace.ppc64le.fp.core.bz2 backtrace.ppc64le.fp.exec.bz2 \
backtrace.x86_64.core.bz2 backtrace.x86_64.exec.bz2 \
backtrace.x86_64.fp.core.bz2 backtrace.x86_64.fp.exec.bz2 \
backtrace.ppc.core.bz2 backtrace.ppc.exec.bz2 \
@@ -505,6 +507,7 @@ zstrptr_LDADD = $(libelf)
emptyfile_LDADD = $(libelf)
vendorelf_LDADD = $(libelf)
fillfile_LDADD = $(libelf)
+dwarf_default_lower_bound_LDADD = $(libdw)
# We want to test the libelf header against the system elf.h header.
# Don't include any -I CPPFLAGS.
diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh
index 9731c43a..c1f31569 100644
--- a/tests/backtrace-subr.sh
+++ b/tests/backtrace-subr.sh
@@ -59,7 +59,7 @@ check_backtracegen()
# Ignore it here as it is a bug of OS, not a bug of elfutils.
check_err()
{
- if [ $(egrep -v <$1 'dwfl_thread_getframes: (No DWARF information found|no matching address range|address out of range|Invalid register)$' \
+ if [ $(egrep -v <$1 'dwfl_thread_getframes: (No DWARF information found|no matching address range|address out of range|Invalid register|\(null\))$' \
| wc -c) \
-eq 0 ]
then
diff --git a/tests/backtrace.ppc64le.fp.core.bz2 b/tests/backtrace.ppc64le.fp.core.bz2
new file mode 100644
index 00000000..e63babf3
--- /dev/null
+++ b/tests/backtrace.ppc64le.fp.core.bz2
Binary files differ
diff --git a/tests/backtrace.ppc64le.fp.exec.bz2 b/tests/backtrace.ppc64le.fp.exec.bz2
new file mode 100755
index 00000000..ed1352af
--- /dev/null
+++ b/tests/backtrace.ppc64le.fp.exec.bz2
Binary files differ
diff --git a/tests/dwarf-getmacros.c b/tests/dwarf-getmacros.c
index 92e093ca..ac70248d 100644
--- a/tests/dwarf-getmacros.c
+++ b/tests/dwarf-getmacros.c
@@ -38,7 +38,7 @@ mac (Dwarf_Macro *macro, void *dbg)
dwarf_macro_opcode (macro, &opcode);
switch (opcode)
{
- case DW_MACRO_GNU_transparent_include:
+ case DW_MACRO_import:
{
Dwarf_Attribute at;
int r = dwarf_macro_param (macro, 0, &at);
@@ -56,7 +56,7 @@ mac (Dwarf_Macro *macro, void *dbg)
break;
}
- case DW_MACRO_GNU_start_file:
+ case DW_MACRO_start_file:
{
Dwarf_Files *files;
size_t nfiles;
@@ -73,7 +73,7 @@ mac (Dwarf_Macro *macro, void *dbg)
break;
}
- case DW_MACRO_GNU_end_file:
+ case DW_MACRO_end_file:
{
--level;
printf ("%*s/file\n", level, "");
@@ -81,7 +81,7 @@ mac (Dwarf_Macro *macro, void *dbg)
}
case DW_MACINFO_define:
- case DW_MACRO_GNU_define_indirect:
+ case DW_MACRO_define_strp:
{
const char *value;
dwarf_macro_param2 (macro, NULL, &value);
@@ -90,7 +90,7 @@ mac (Dwarf_Macro *macro, void *dbg)
}
case DW_MACINFO_undef:
- case DW_MACRO_GNU_undef_indirect:
+ case DW_MACRO_undef_strp:
break;
default:
diff --git a/tests/dwarf_default_lower_bound.c b/tests/dwarf_default_lower_bound.c
new file mode 100644
index 00000000..d57424fc
--- /dev/null
+++ b/tests/dwarf_default_lower_bound.c
@@ -0,0 +1,83 @@
+/* Test all DW_LANG constants are handled by dwarf_default_lower_bound.
+
+ Copyright (C) 2016 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <dwarf.h>
+#include ELFUTILS_HEADER(dw)
+#include "../libdw/known-dwarf.h"
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static void
+test_lang (const char *name, int lang)
+{
+ Dwarf_Sword low;
+ int res = dwarf_default_lower_bound (lang, &low);
+
+ /* Assembler is special, it doesn't really have arrays. */
+ if (lang == DW_LANG_Mips_Assembler)
+ {
+ if (res == 0)
+ {
+ printf ("%s shouldn't have a known lower bound\n", name);
+ exit (-1);
+ }
+ printf ("%s: <unknown>\n", name);
+ return;
+ }
+
+ if (res != 0)
+ {
+ printf ("dwarf_default_lower_bound failed (%d) for %s\n", res, name);
+ exit (-1);
+ }
+
+ /* All currently known lower bounds are either zero or one, but
+ they don't have to. Update test once one is a different value. */
+ if (low != 0 && low != 1)
+ {
+ printf ("unexpected lower bound %" PRId64 " for %s\n", low, name);
+ exit (-1);
+ }
+
+ printf ("%s: %" PRId64 "\n", name, low);
+}
+
+int
+main (int argc __attribute__ ((unused)), char *argv[] __attribute__ ((unused)))
+{
+ Dwarf_Sword low;
+ /* Bad language code must fail. */
+ if (dwarf_default_lower_bound (-1, &low) == 0)
+ {
+ printf ("Bad lang code -1 succeeded (%" PRId64 ")\n", low);
+ exit (-1);
+ }
+
+ /* Test all known language codes. */
+#define DWARF_ONE_KNOWN_DW_LANG(NAME, CODE) test_lang (#NAME, CODE);
+ DWARF_ALL_KNOWN_DW_LANG
+#undef DWARF_ONE_KNOWN_DW_LANG
+
+ return 0;
+}
diff --git a/tests/elfshphehdr.c b/tests/elfshphehdr.c
index 5a297e0d..8183937c 100644
--- a/tests/elfshphehdr.c
+++ b/tests/elfshphehdr.c
@@ -152,7 +152,7 @@ main (int argc __attribute__ ((unused)), char **argv __attribute ((unused)))
{
elf_version (EV_CURRENT);
- int fd = fd = open("/dev/zero", O_WRONLY);
+ int fd = open("/dev/null", O_WRONLY);
check ("open", fd >= 0);
Elf *elf;
diff --git a/tests/get-lines.c b/tests/get-lines.c
index c361a2c3..188d0162 100644
--- a/tests/get-lines.c
+++ b/tests/get-lines.c
@@ -24,6 +24,7 @@
#include <libelf.h>
#include ELFUTILS_HEADER(dw)
#include <stdio.h>
+#include <string.h>
#include <unistd.h>
@@ -100,6 +101,28 @@ main (int argc, char *argv[])
printf ("%" PRIx64 ": %s:%d:", (uint64_t) addr,
file ?: "???", line);
+ /* Getting the file path through the Dwarf_Files should
+ result in the same path. */
+ Dwarf_Files *files;
+ size_t idx;
+ if (dwarf_line_file (l, &files, &idx) != 0)
+ {
+ printf ("%s: cannot get file from line (%zd): %s\n",
+ argv[cnt], i, dwarf_errmsg (-1));
+ result = 1;
+ break;
+ }
+ const char *path = dwarf_filesrc (files, idx, NULL, NULL);
+ if ((path == NULL && file != NULL)
+ || (path != NULL && file == NULL)
+ || (strcmp (file, path) != 0))
+ {
+ printf ("%s: line %zd srcline (%s) != file srcline (%s)\n",
+ argv[cnt], i, file ?: "???", path ?: "???");
+ result = 1;
+ break;
+ }
+
int column;
if (dwarf_linecol (l, &column) != 0)
column = 0;
diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh
index 2691091b..7fc46e58 100755
--- a/tests/run-addrcfi.sh
+++ b/tests/run-addrcfi.sh
@@ -397,9 +397,9 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range
privileged reg111 (spr11): undefined
privileged reg112 (spr12): undefined
privileged reg113 (spr13): undefined
- privileged reg114 (spr14): undefined
- privileged reg115 (spr15): undefined
- privileged reg116 (spr16): undefined
+ privileged reg114 (tfhar): undefined
+ privileged reg115 (tfiar): undefined
+ privileged reg116 (texasr): undefined
privileged reg117 (spr17): undefined
privileged reg118 (dsisr): undefined
privileged reg119 (dar): undefined
@@ -1419,9 +1419,9 @@ testrun_compare ${abs_builddir}/addrcfi -e testfileppc32 0x100004d2 <<\EOF
privileged reg111 (spr11): undefined
privileged reg112 (spr12): undefined
privileged reg113 (spr13): undefined
- privileged reg114 (spr14): undefined
- privileged reg115 (spr15): undefined
- privileged reg116 (spr16): undefined
+ privileged reg114 (tfhar): undefined
+ privileged reg115 (tfiar): undefined
+ privileged reg116 (texasr): undefined
privileged reg117 (spr17): undefined
privileged reg118 (dsisr): undefined
privileged reg119 (dar): undefined
@@ -2447,9 +2447,9 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range
privileged reg111 (spr11): undefined
privileged reg112 (spr12): undefined
privileged reg113 (spr13): undefined
- privileged reg114 (spr14): undefined
- privileged reg115 (spr15): undefined
- privileged reg116 (spr16): undefined
+ privileged reg114 (tfhar): undefined
+ privileged reg115 (tfiar): undefined
+ privileged reg116 (texasr): undefined
privileged reg117 (spr17): undefined
privileged reg118 (dsisr): undefined
privileged reg119 (dar): undefined
diff --git a/tests/run-allregs.sh b/tests/run-allregs.sh
index a56e6126..0d2eb524 100755
--- a/tests/run-allregs.sh
+++ b/tests/run-allregs.sh
@@ -253,9 +253,9 @@ privileged registers:
111: spr11 (spr11), unsigned 32 bits
112: spr12 (spr12), unsigned 32 bits
113: spr13 (spr13), unsigned 32 bits
- 114: spr14 (spr14), unsigned 32 bits
- 115: spr15 (spr15), unsigned 32 bits
- 116: spr16 (spr16), unsigned 32 bits
+ 114: tfhar (tfhar), unsigned 32 bits
+ 115: tfiar (tfiar), unsigned 32 bits
+ 116: texasr (texasr), unsigned 32 bits
117: spr17 (spr17), unsigned 32 bits
118: dsisr (dsisr), unsigned 32 bits
119: dar (dar), unsigned 32 bits
@@ -1276,9 +1276,9 @@ privileged registers:
111: spr11 (spr11), unsigned 64 bits
112: spr12 (spr12), unsigned 64 bits
113: spr13 (spr13), unsigned 64 bits
- 114: spr14 (spr14), unsigned 64 bits
- 115: spr15 (spr15), unsigned 64 bits
- 116: spr16 (spr16), unsigned 64 bits
+ 114: tfhar (tfhar), unsigned 64 bits
+ 115: tfiar (tfiar), unsigned 64 bits
+ 116: texasr (texasr), unsigned 64 bits
117: spr17 (spr17), unsigned 64 bits
118: dsisr (dsisr), unsigned 64 bits
119: dar (dar), unsigned 64 bits
diff --git a/tests/run-backtrace-fp-core-ppc64le.sh b/tests/run-backtrace-fp-core-ppc64le.sh
new file mode 100755
index 00000000..326ca342
--- /dev/null
+++ b/tests/run-backtrace-fp-core-ppc64le.sh
@@ -0,0 +1,29 @@
+#! /bin/bash
+# Copyright (C) 2017 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+# The binary is generated by compiling backtrace-child without unwind
+# information, but with -fno-omit-frame-pointer.
+#
+# gcc -static -O2 -fno-omit-frame-pointer -fno-asynchronous-unwind-tables \
+# -D_GNU_SOURCE -pthread -o tests/backtrace.ppc64le.fp.exec -I. -Ilib \
+# tests/backtrace-child.c
+#
+# The core is generated by calling tests/backtrace.ppc64le.fp.exec --gencore
+
+check_core ppc64le.fp
diff --git a/tests/run-strip-g.sh b/tests/run-strip-g.sh
new file mode 100755
index 00000000..8024aa52
--- /dev/null
+++ b/tests/run-strip-g.sh
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2017 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# When stripping just the debug sections/symbols we keep the symtab
+# in the main ELF file. There should be no symbols pointing into the
+# debug sections and so there should not be a copy in the debug file
+# except for a NOBITS one.
+
+tempfiles a.out strip.out debug.out readelf.out
+
+echo Create debug a.out.
+echo "int main() { return 1; }" | gcc -g -xc -
+
+echo strip -g to file with debug file
+testrun ${abs_top_builddir}/src/strip -g -o strip.out -f debug.out ||
+ { echo "*** failed to strip -g -o strip.out -f debug.out a.out"; exit -1; }
+
+status=0
+testrun ${abs_top_builddir}/src/readelf -S strip.out > readelf.out
+grep SYMTAB readelf.out || status=$?
+echo $status
+if test $status -ne 0; then
+ echo no symtab found in strip.out
+ exit 1
+fi
+
+status=0
+testrun ${abs_top_builddir}/src/readelf -S debug.out > readelf.out
+grep SYMTAB readelf.out || status=$?
+echo $status
+if test $status -ne 1; then
+ echo symtab found in debug.out
+ exit 1
+fi
+
+# aarch64 (with data marker in .debug_frame). See tests/run-addrcfi.sh
+testfiles testfileaarch64
+
+echo aarch64 strip -g to file with debug file
+testrun ${abs_top_builddir}/src/strip -g -o strip.out -f debug.out testfileaarch64 ||
+ { echo "*** failed to strip -g -o strip.out -f debug.out a.out"; exit -1; }
+
+status=0
+testrun ${abs_top_builddir}/src/readelf -S strip.out > readelf.out
+grep SYMTAB readelf.out || status=$?
+echo $status
+if test $status -ne 0; then
+ echo no symtab found in strip.out
+ exit 1
+fi
+
+status=0
+testrun ${abs_top_builddir}/src/readelf -S debug.out > readelf.out
+grep SYMTAB readelf.out || status=$?
+echo $status
+if test $status -ne 1; then
+ echo symtab found in debug.out
+ exit 1
+fi
+
+exit 0
diff --git a/tests/run-strip-nothing.sh b/tests/run-strip-nothing.sh
new file mode 100755
index 00000000..e80bd906
--- /dev/null
+++ b/tests/run-strip-nothing.sh
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2017 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# If there is nothing to strip then -o output should be identical to input.
+# And there should not be an (empty) -f debug file.
+
+tempfiles a.out strip.out debug.out
+
+# Create no-debug a.out.
+echo "int main() { return 1; }" | gcc -xc -
+
+# strip to file
+testrun ${abs_top_builddir}/src/strip -g -o strip.out ||
+ { echo "*** failed to strip -g -o strip.out a.out"; exit -1; }
+
+testrun ${abs_top_builddir}/src/elfcmp a.out strip.out ||
+ { echo "*** failed strip.out different from a.out"; exit -1; }
+
+# strip original
+testrun ${abs_top_builddir}/src/strip -g ||
+ { echo "*** failed to strip -g a.out"; exit -1; }
+
+testrun ${abs_top_builddir}/src/elfcmp strip.out a.out ||
+ { echo "*** failed a.out different from strip.out"; exit -1; }
+
+# strip to file with debug file
+testrun ${abs_top_builddir}/src/strip -g -o strip.out -f debug.out ||
+ { echo "*** failed to strip -g -o strip.out -f debug.out a.out"; exit -1; }
+
+testrun ${abs_top_builddir}/src/elfcmp a.out strip.out ||
+ { echo "*** failed strip.out different from a.out (with debug)"; exit -1; }
+
+test ! -f debug.out ||
+ { echo "*** failed strip.out and debug.out exist"; exit -1; }
+
+# strip original with debug file
+testrun ${abs_top_builddir}/src/strip -g -f debug.out ||
+ { echo "*** failed to strip -g -f debug.out a.out"; exit -1; }
+
+testrun ${abs_top_builddir}/src/elfcmp strip.out a.out ||
+ { echo "*** failed a.out different from strip.out (with debug)"; exit -1; }
+
+test ! -f debug.out ||
+ { echo "*** failed a.out and debug.out exist"; exit -1; }
+
+exit 0
diff --git a/tests/run-strip-remove-keep.sh b/tests/run-strip-remove-keep.sh
new file mode 100755
index 00000000..92647fa7
--- /dev/null
+++ b/tests/run-strip-remove-keep.sh
@@ -0,0 +1,688 @@
+#! /bin/sh
+# Copyright (C) 2017 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# strip -o output and -f debug files
+tempfiles testfile.elf testfile.debug
+
+# A random 32bit testfile
+testfiles testfile
+
+# Explicitly keep .strtab (but not .symtab, so .strtab will be in both). 32bit
+echo strip --keep-section=.strtab testfile
+testrun ${abs_top_builddir}/src/strip --keep-section=.strtab -o testfile.elf -f testfile.debug testfile
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 27 section headers, starting at offset 0xaf8:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 00000000 000000 000000 0 0 0 0
+[ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1
+[ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4
+[ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4
+[ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4
+[ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1
+[ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2
+[ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4
+[ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4
+[ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4
+[10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4
+[11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4
+[12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16
+[13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4
+[14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4
+[15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4
+[16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4
+[17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4
+[18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4
+[19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4
+[20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4
+[21] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4
+[22] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1
+[23] .note NOTE 00000000 000738 0000a0 0 0 0 1
+[24] .strtab STRTAB 00000000 0007d8 000235 0 0 0 1
+[25] .gnu_debuglink PROGBITS 00000000 000a10 000014 0 0 0 4
+[26] .shstrtab STRTAB 00000000 000a24 0000d1 0 0 0 1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 35 section headers, starting at offset 0x463c:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 00000000 000000 000000 0 0 0 0
+[ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1
+[ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4
+[ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4
+[ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4
+[ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1
+[ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2
+[ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4
+[ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4
+[ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4
+[10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4
+[11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4
+[12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16
+[13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4
+[14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4
+[15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4
+[16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4
+[17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4
+[18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4
+[19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4
+[20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4
+[21] .sbss PROGBITS 080495c8 000120 000000 0 W 0 0 1
+[22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4
+[23] .stab PROGBITS 00000000 000120 000720 12 24 0 4
+[24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1
+[25] .comment NOBITS 00000000 002174 000170 0 0 0 1
+[26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1
+[27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1
+[28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1
+[29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1
+[30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1
+[31] .note NOTE 00000000 003c96 0000a0 0 0 0 1
+[32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1
+[33] .symtab SYMTAB 00000000 003e64 0005a0 16 34 68 4
+[34] .strtab STRTAB 00000000 004404 000235 0 0 0 1
+
+EOF
+
+# Explicitly keep .symtab (pulls in .strtab, so they will both be in elf). 32bit
+echo strip --keep-section=.symtab testfile
+testrun ${abs_top_builddir}/src/strip --keep-section=.symtab -o testfile.elf -f testfile.debug testfile
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 28 section headers, starting at offset 0x1010:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 00000000 000000 000000 0 0 0 0
+[ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1
+[ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4
+[ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4
+[ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4
+[ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1
+[ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2
+[ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4
+[ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4
+[ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4
+[10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4
+[11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4
+[12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16
+[13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4
+[14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4
+[15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4
+[16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4
+[17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4
+[18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4
+[19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4
+[20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4
+[21] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4
+[22] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1
+[23] .note NOTE 00000000 000738 0000a0 0 0 0 1
+[24] .symtab SYMTAB 00000000 0007d8 000510 16 25 59 4
+[25] .strtab STRTAB 00000000 000ce8 000235 0 0 0 1
+[26] .gnu_debuglink PROGBITS 00000000 000f20 000014 0 0 0 4
+[27] .shstrtab STRTAB 00000000 000f34 0000d9 0 0 0 1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 35 section headers, starting at offset 0x3e64:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 00000000 000000 000000 0 0 0 0
+[ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1
+[ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4
+[ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4
+[ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4
+[ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1
+[ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2
+[ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4
+[ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4
+[ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4
+[10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4
+[11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4
+[12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16
+[13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4
+[14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4
+[15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4
+[16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4
+[17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4
+[18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4
+[19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4
+[20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4
+[21] .sbss PROGBITS 080495c8 000120 000000 0 W 0 0 1
+[22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4
+[23] .stab PROGBITS 00000000 000120 000720 12 24 0 4
+[24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1
+[25] .comment NOBITS 00000000 002174 000170 0 0 0 1
+[26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1
+[27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1
+[28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1
+[29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1
+[30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1
+[31] .note NOTE 00000000 003c96 0000a0 0 0 0 1
+[32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1
+[33] .symtab NOBITS 00000000 003e64 0005a0 16 34 68 4
+[34] .strtab NOBITS 00000000 003e64 000235 0 0 0 1
+
+EOF
+
+# A random 64bit testfile
+testfiles testfile69.so
+# Explicitly keep .strtab (but not .symtab, so .strtab will be in both). 64bit
+echo strip --keep-section=.strtab testfile69.so
+testrun ${abs_top_builddir}/src/strip --keep-section=.strtab -o testfile.elf -f testfile.debug testfile69.so
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 27 section headers, starting at offset 0xad8:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4
+[ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8
+[ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8
+[ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1
+[ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2
+[ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8
+[ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8
+[ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8
+[ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4
+[10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16
+[11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16
+[12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4
+[13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4
+[14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8
+[15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8
+[16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8
+[17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8
+[18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8
+[19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8
+[20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8
+[21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8
+[22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8
+[23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1
+[24] .strtab STRTAB 0000000000000000 0000085c 00000175 0 0 0 1
+[25] .gnu_debuglink PROGBITS 0000000000000000 000009d4 00000014 0 0 0 4
+[26] .shstrtab STRTAB 0000000000000000 000009e8 000000ee 0 0 0 1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 27 section headers, starting at offset 0x918:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4
+[ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8
+[ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8
+[ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1
+[ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2
+[ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8
+[ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8
+[ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8
+[ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4
+[10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16
+[11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16
+[12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4
+[13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4
+[14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8
+[15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8
+[16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8
+[17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8
+[18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8
+[19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8
+[20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8
+[21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8
+[22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8
+[23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1
+[24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1
+[25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8
+[26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1
+
+EOF
+
+# Explicitly keep .symtab (pulls in .strtab, so they will both be in elf). 64bit
+# Use --remove-comment to make sure testfile.debug isn't empty.
+echo strip --keep-section=.symtab --remove-comment testfile69.so
+testrun ${abs_top_builddir}/src/strip --keep-section=.symtab --remove-comment -o testfile.elf -f testfile.debug testfile69.so
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 27 section headers, starting at offset 0xf90:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4
+[ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8
+[ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8
+[ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1
+[ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2
+[ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8
+[ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8
+[ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8
+[ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4
+[10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16
+[11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16
+[12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4
+[13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4
+[14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8
+[15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8
+[16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8
+[17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8
+[18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8
+[19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8
+[20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8
+[21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8
+[22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8
+[23] .symtab SYMTAB 0000000000000000 00000830 000004e0 24 24 43 8
+[24] .strtab STRTAB 0000000000000000 00000d10 00000175 0 0 0 1
+[25] .gnu_debuglink PROGBITS 0000000000000000 00000e88 00000014 0 0 0 4
+[26] .shstrtab STRTAB 0000000000000000 00000e9c 000000ed 0 0 0 1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 27 section headers, starting at offset 0x2d8:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4
+[ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8
+[ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8
+[ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1
+[ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2
+[ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8
+[ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8
+[ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8
+[ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4
+[10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16
+[11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16
+[12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4
+[13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4
+[14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8
+[15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8
+[16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8
+[17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8
+[18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8
+[19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8
+[20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8
+[21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8
+[22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8
+[23] .comment PROGBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1
+[24] .shstrtab STRTAB 0000000000000000 000001ec 000000e7 0 0 0 1
+[25] .symtab NOBITS 0000000000000000 000002d8 000004f8 24 26 44 8
+[26] .strtab NOBITS 0000000000000000 000002d8 00000175 0 0 0 1
+
+EOF
+
+# Explicitly remove .symtab (but not .strtab, so it will be in both). 32bit
+echo strip -g --remove-section=.symtab testfile
+testrun ${abs_top_builddir}/src/strip -g --remove-section=.symtab -o testfile.elf -f testfile.debug testfile
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 28 section headers, starting at offset 0xafc:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 00000000 000000 000000 0 0 0 0
+[ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1
+[ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4
+[ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4
+[ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4
+[ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1
+[ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2
+[ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4
+[ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4
+[ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4
+[10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4
+[11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4
+[12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16
+[13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4
+[14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4
+[15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4
+[16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4
+[17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4
+[18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4
+[19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4
+[20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4
+[21] .sbss PROGBITS 080495c8 0005c8 000000 0 W 0 0 1
+[22] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4
+[23] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1
+[24] .note NOTE 00000000 000738 0000a0 0 0 0 1
+[25] .strtab STRTAB 00000000 0007d8 000235 0 0 0 1
+[26] .gnu_debuglink PROGBITS 00000000 000a10 000014 0 0 0 4
+[27] .shstrtab STRTAB 00000000 000a24 0000d7 0 0 0 1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 35 section headers, starting at offset 0x463c:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 00000000 000000 000000 0 0 0 0
+[ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1
+[ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4
+[ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4
+[ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4
+[ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1
+[ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2
+[ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4
+[ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4
+[ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4
+[10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4
+[11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4
+[12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16
+[13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4
+[14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4
+[15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4
+[16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4
+[17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4
+[18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4
+[19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4
+[20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4
+[21] .sbss NOBITS 080495c8 000120 000000 0 W 0 0 1
+[22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4
+[23] .stab PROGBITS 00000000 000120 000720 12 24 0 4
+[24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1
+[25] .comment NOBITS 00000000 002174 000170 0 0 0 1
+[26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1
+[27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1
+[28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1
+[29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1
+[30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1
+[31] .note NOTE 00000000 003c96 0000a0 0 0 0 1
+[32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1
+[33] .symtab SYMTAB 00000000 003e64 0005a0 16 34 68 4
+[34] .strtab STRTAB 00000000 004404 000235 0 0 0 1
+
+EOF
+
+# Explicitly remove both .symtab and .strtab. Keep .stab and .stabstr 32bit
+echo strip -g --remove-section=".s[yt][mr]tab" --keep-section=".stab*" testfile
+testrun ${abs_top_builddir}/src/strip -g --remove-section=".s[yt][mr]tab" --keep-section=".stab*" -o testfile.elf -f testfile.debug testfile
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 29 section headers, starting at offset 0x2920:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 00000000 000000 000000 0 0 0 0
+[ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1
+[ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4
+[ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4
+[ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4
+[ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1
+[ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2
+[ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4
+[ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4
+[ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4
+[10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4
+[11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4
+[12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16
+[13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4
+[14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4
+[15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4
+[16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4
+[17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4
+[18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4
+[19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4
+[20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4
+[21] .sbss PROGBITS 080495c8 0005c8 000000 0 W 0 0 1
+[22] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4
+[23] .stab PROGBITS 00000000 0005c8 000720 12 24 0 4
+[24] .stabstr STRTAB 00000000 000ce8 001934 0 0 0 1
+[25] .comment PROGBITS 00000000 00261c 000170 0 0 0 1
+[26] .note NOTE 00000000 00278c 0000a0 0 0 0 1
+[27] .gnu_debuglink PROGBITS 00000000 00282c 000014 0 0 0 4
+[28] .shstrtab STRTAB 00000000 002840 0000de 0 0 0 1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 35 section headers, starting at offset 0x25e8:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 00000000 000000 000000 0 0 0 0
+[ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1
+[ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4
+[ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4
+[ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4
+[ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1
+[ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2
+[ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4
+[ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4
+[ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4
+[10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4
+[11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4
+[12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16
+[13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4
+[14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4
+[15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4
+[16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4
+[17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4
+[18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4
+[19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4
+[20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4
+[21] .sbss NOBITS 080495c8 000120 000000 0 W 0 0 1
+[22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4
+[23] .stab NOBITS 00000000 000120 000720 12 24 0 4
+[24] .stabstr NOBITS 00000000 000120 001934 0 0 0 1
+[25] .comment NOBITS 00000000 000120 000170 0 0 0 1
+[26] .debug_aranges PROGBITS 00000000 000120 000060 0 0 0 1
+[27] .debug_pubnames PROGBITS 00000000 000180 000055 0 0 0 1
+[28] .debug_info PROGBITS 00000000 0001d5 001678 0 0 0 1
+[29] .debug_abbrev PROGBITS 00000000 00184d 0001d2 0 0 0 1
+[30] .debug_line PROGBITS 00000000 001a1f 000223 0 0 0 1
+[31] .note NOTE 00000000 001c42 0000a0 0 0 0 1
+[32] .shstrtab STRTAB 00000000 001ce2 00012e 0 0 0 1
+[33] .symtab SYMTAB 00000000 001e10 0005a0 16 34 68 4
+[34] .strtab STRTAB 00000000 0023b0 000235 0 0 0 1
+
+EOF
+
+# Explicitly remove .symtab (but not .strtab, so it will be in both). 64bit
+echo strip -g --remove-section=.symtab testfile69.so
+testrun ${abs_top_builddir}/src/strip -g --remove-section=.symtab -o testfile.elf -f testfile.debug testfile69.so
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 27 section headers, starting at offset 0xad8:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4
+[ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8
+[ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8
+[ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1
+[ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2
+[ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8
+[ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8
+[ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8
+[ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4
+[10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16
+[11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16
+[12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4
+[13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4
+[14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8
+[15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8
+[16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8
+[17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8
+[18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8
+[19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8
+[20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8
+[21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8
+[22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8
+[23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1
+[24] .strtab STRTAB 0000000000000000 0000085c 00000175 0 0 0 1
+[25] .gnu_debuglink PROGBITS 0000000000000000 000009d4 00000014 0 0 0 4
+[26] .shstrtab STRTAB 0000000000000000 000009e8 000000ee 0 0 0 1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 27 section headers, starting at offset 0x918:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4
+[ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8
+[ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8
+[ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1
+[ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2
+[ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8
+[ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8
+[ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8
+[ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4
+[10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16
+[11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16
+[12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4
+[13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4
+[14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8
+[15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8
+[16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8
+[17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8
+[18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8
+[19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8
+[20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8
+[21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8
+[22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8
+[23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1
+[24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1
+[25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8
+[26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1
+
+EOF
+
+# Explicitly remove both .symtab and .strtab. Keep .comment section. 64bit
+echo strip -g --remove-section=".s[yt][mr]tab" --keep-section=.comment testfile69.so
+testrun ${abs_top_builddir}/src/strip -g --remove-section=".s[yt][mr]tab" --keep-section=.comment -o testfile.elf -f testfile.debug testfile69.so
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 26 section headers, starting at offset 0x958:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4
+[ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8
+[ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8
+[ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1
+[ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2
+[ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8
+[ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8
+[ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8
+[ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4
+[10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16
+[11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16
+[12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4
+[13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4
+[14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8
+[15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8
+[16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8
+[17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8
+[18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8
+[19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8
+[20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8
+[21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8
+[22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8
+[23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1
+[24] .gnu_debuglink PROGBITS 0000000000000000 0000085c 00000014 0 0 0 4
+[25] .shstrtab STRTAB 0000000000000000 00000870 000000e6 0 0 0 1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 27 section headers, starting at offset 0x918:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4
+[ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8
+[ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8
+[ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1
+[ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2
+[ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8
+[ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8
+[ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8
+[ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4
+[10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16
+[11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16
+[12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4
+[13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4
+[14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8
+[15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8
+[16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8
+[17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8
+[18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8
+[19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8
+[20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8
+[21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8
+[22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8
+[23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1
+[24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1
+[25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8
+[26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1
+
+EOF
+
+exit 0
diff --git a/tests/run-strip-test.sh b/tests/run-strip-test.sh
index 42aa9888..280814e6 100755
--- a/tests/run-strip-test.sh
+++ b/tests/run-strip-test.sh
@@ -49,6 +49,14 @@ testrun ${abs_top_builddir}/src/unstrip -o testfile.unstrip testfile.temp testfi
testrun ${abs_top_builddir}/src/elfcmp --hash-inexact $original testfile.unstrip
}
+# test strip -g
+testrun ${abs_top_builddir}/src/strip -g -o testfile.temp $original
+
+# Buggy eu-strip created multiple .shstrtab sections
+shstrtab_SECS=$(testrun ${abs_top_builddir}/src/readelf -S testfile.temp | grep '.shstrtab' | wc --lines)
+test $shstrtab_SECS -eq 1 ||
+ { echo "*** failure not just one '.shstrtab' testfile.temp ($shstrtab_SECS)"; status=1; }
+
# Now strip in-place and make sure it is smaller.
SIZE_original=$(stat -c%s $original)
testrun ${abs_top_builddir}/src/strip $original