diff options
author | Mark Wielaard <mark@klomp.org> | 2017-08-03 12:37:37 +0200 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2017-08-03 14:21:08 +0200 |
commit | 766df1e15c1e8f8bc9890e7538eb2ef15a6516dc (patch) | |
tree | 45ae9d0ac821a15fbb9336909671e18efc15f6e8 | |
parent | 13c3e00ba629586ae42c316ae4ed6c3f04282a82 (diff) | |
parent | 54ba4ce2973113d8f4315d4fc90e16a9b4476ea6 (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
78 files changed, 3589 insertions, 1406 deletions
@@ -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. @@ -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. @@ -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 "" @@ -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" @@ -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 "" #~ "リンカーãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’リãƒã‚±ãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®æ©Ÿèƒ½ã‚’指定ã—ã¦ã„ã¾ã›" @@ -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" @@ -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 Binary files differnew file mode 100644 index 00000000..e63babf3 --- /dev/null +++ b/tests/backtrace.ppc64le.fp.core.bz2 diff --git a/tests/backtrace.ppc64le.fp.exec.bz2 b/tests/backtrace.ppc64le.fp.exec.bz2 Binary files differnew file mode 100755 index 00000000..ed1352af --- /dev/null +++ b/tests/backtrace.ppc64le.fp.exec.bz2 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 |