diff options
author | Mark Wielaard <mark@klomp.org> | 2020-06-09 18:21:36 +0200 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2020-06-09 18:21:36 +0200 |
commit | c0d643e7d91fc002c9fecd83277c62a0e56ef76f (patch) | |
tree | 89b5cf6673baa2cb206fdf245f4e30fe884945ad | |
parent | 14030673602a4f331f348decd51e5f0160719f0e (diff) | |
parent | 5643e037cb7a38ed5d52f50421be706ea8014e3d (diff) |
Merge tag 'elfutils-0.177' into mjw/RH-DTSdts-0.177
elfutils 0.177 release
Conflicts:
libebl/eblopenbackend.c Removed try_dlopen and csky.
tests/run-strip-reloc.sh Removed csky tests.
122 files changed, 6741 insertions, 2487 deletions
@@ -1,3 +1,11 @@ +2019-08-13 Mark Wielaard <mark@klomp.org> + + * configure.ac: Set version to 0.177. + * NEWS: Mention elfclassify, readelf DW_AT_data_member_location + and DW_AT_discr_list attribute changes, dwarf.h DW_AT_GNU additions, + dwelf_elf_e_machine_string function, dwelf_elf_begin change and + C-SKY backend support. + 2019-02-14 Mark Wielaard <mark@klomp.org> * configure.ac: Set version to 0.176. @@ -1,3 +1,19 @@ +Version 0.177 + +elfclassify: New tool to analyze ELF objects. + +readelf: Print DW_AT_data_member_location as decimal offset. + Decode DW_AT_discr_list block attributes. + +libdw: Add DW_AT_GNU_numerator, DW_AT_GNU_denominator and DW_AT_GNU_bias. + +libdwelf: Add dwelf_elf_e_machine_string. + dwelf_elf_begin now only returns NULL when there is an error + reading or decompressing a file. If the file is not an ELF file + an ELF handle of type ELF_K_NONE is returned. + +backends: Add support for C-SKY. + Version 0.176 build: Add new --enable-install-elfh option. diff --git a/backends/ChangeLog b/backends/ChangeLog index 0c61a0b3..f1eaf14b 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,37 @@ +2019-07-13 Mao Han <han_mao@c-sky.com> + + * Makefile.am: Add C-SKY. + * csky_attrs.c: New file. + * csky_cfi.c: New file. + * csky_corenote.c: Likewise. + * csky_init.c: Likewise. + * csky_initreg.c: Likewise. + * csky_regs.c: Likewise. + * csky_reloc.def: Likewise. + * csky_symbol.c: Likewise. + +2019-06-28 Mark Wielaard <mark@klomp.org> + + * aarch64_init.c (aarch64_init.c): Remove eh->name; + * alpha_init.c (alpha_init.c): Remove eh->name; + * arm_init.c (arm_init.c): Remove eh->name; + * bpf_init.c (bpf_init.c): Remove eh->name; + * i386_init.c (i386_init.c): Remove eh->name; + * ia64_init.c (ia64_init.c): Remove eh->name; + * m68k_init.c (m68k_init.c): Remove eh->name; + * ppc64_init.c (ppc64_init.c): Remove eh->name; + * ppc_init.c (ppc_init.c): Remove eh->name; + * riscv_init.c (riscv_init.c): Remove eh->name; + * s390_init.c (s390_init.c): Remove eh->name; + * sh_init.c (sh_init.c): Remove eh->name; + * sparc_init.c (sparc_init.c): Remove eh->name; + * tilegx_init.c (tilegx_init.c): Remove eh->name; + * x86_64_init.c (x86_64_init.c): Remove eh->name; + +2019-04-14 Mark Wielaard <mark@klomp.org> + + * riscv_cfi.c: Fix BACKEND define. + 2019-02-15 Mark Wielaard <mark@klomp.org> * s390_init.c (s390_init): Hook check_special_symbol. diff --git a/backends/Makefile.am b/backends/Makefile.am index 3a4e56ef..2c0c7f0b 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -33,12 +33,13 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \ modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \ - tilegx m68k bpf riscv + tilegx m68k bpf riscv csky libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \ libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \ libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \ - libebl_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a + libebl_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a \ + libebl_csky_pic.a noinst_LIBRARIES = $(libebl_pic) noinst_DATA = $(libebl_pic:_pic.a=.so) lib_LIBRARIES = libebl_static_pic.a @@ -162,6 +163,10 @@ riscv_SRCS = riscv_init.c riscv_symbol.c riscv_cfi.c riscv_regs.c \ libebl_riscv_pic_a_SOURCES = $(riscv_SRCS) am_libebl_riscv_pic_a_OBJECTS = $(riscv_SRCS:.c=.os) +csky_SRCS = csky_attrs.c csky_init.c csky_symbol.c csky_cfi.c \ + csky_regs.c csky_initreg.c csky_corenote.c +libebl_csky_pic_a_SOURCES = $(csky_SRCS) +am_libebl_csky_pic_a_OBJECTS = $(csky_SRCS:.c=.os) libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu) @rm -f $(@:.so=.map) diff --git a/backends/aarch64_init.c b/backends/aarch64_init.c index fad923fa..95268ae0 100644 --- a/backends/aarch64_init.c +++ b/backends/aarch64_init.c @@ -49,7 +49,6 @@ aarch64_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "AARCH64"; aarch64_init_reloc (eh); HOOK (eh, register_info); HOOK (eh, core_note); diff --git a/backends/alpha_init.c b/backends/alpha_init.c index 25c5b32f..f66f40c5 100644 --- a/backends/alpha_init.c +++ b/backends/alpha_init.c @@ -50,7 +50,6 @@ alpha_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "Alpha"; alpha_init_reloc (eh); HOOK (eh, dynamic_tag_name); HOOK (eh, dynamic_tag_check); diff --git a/backends/arm_init.c b/backends/arm_init.c index f2b1b11e..af023f02 100644 --- a/backends/arm_init.c +++ b/backends/arm_init.c @@ -50,7 +50,6 @@ arm_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "ARM"; arm_init_reloc (eh); HOOK (eh, segment_type_name); HOOK (eh, section_type_name); diff --git a/backends/bpf_init.c b/backends/bpf_init.c index a046e069..d407d378 100644 --- a/backends/bpf_init.c +++ b/backends/bpf_init.c @@ -49,7 +49,6 @@ bpf_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "BPF"; bpf_init_reloc (eh); HOOK (eh, register_info); HOOK (eh, disasm); diff --git a/backends/csky_attrs.c b/backends/csky_attrs.c new file mode 100644 index 00000000..177f0ba2 --- /dev/null +++ b/backends/csky_attrs.c @@ -0,0 +1,67 @@ +/* C-SKY ABI-specified defaults for DWARF CFI. + Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. + 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 <string.h> +#include <dwarf.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + +bool +csky_check_object_attribute (Ebl *ebl __attribute__ ((unused)), + const char *vendor, int tag, + uint64_t value __attribute__ ((unused)), + const char **tag_name, + const char **value_name __attribute__ ((unused))) +{ + if (!strcmp (vendor, "csky")) + switch (tag) + { + case 4: + *tag_name = "CSKY_ARCH_NAME"; + return true; + + case 5: + *tag_name = "CSKY_CPU_NAME"; + return true; + + case 6: + *tag_name = "CSKY_ISA_FLAGS"; + return true; + + case 7: + *tag_name = "CSKY_ISA_EXT_FLAGS"; + return true; + } + + return false; +} diff --git a/backends/csky_cfi.c b/backends/csky_cfi.c new file mode 100644 index 00000000..7277dbd4 --- /dev/null +++ b/backends/csky_cfi.c @@ -0,0 +1,60 @@ +/* C-SKY ABI-specified defaults for DWARF CFI. + Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <dwarf.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + + +int +csky_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) +{ + static const uint8_t abi_cfi[] = + { + DW_CFA_def_cfa, ULEB128_7 (14), ULEB128_7 (0), + DW_CFA_val_offset, ULEB128_7 (14), ULEB128_7 (0), + +#define SV(n) DW_CFA_same_value, ULEB128_7 (n) + SV(4), SV (5), SV (6), SV (7), SV (8), SV (9), + SV(10), SV (11), SV (15), SV (16), SV (17) +#undef SV + }; + + abi_info->initial_instructions = abi_cfi; + abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; + abi_info->data_alignment_factor = -4; + + abi_info->return_address_register = 15; /* lr. */ + + return 0; +} diff --git a/backends/csky_corenote.c b/backends/csky_corenote.c new file mode 100644 index 00000000..a1479bd3 --- /dev/null +++ b/backends/csky_corenote.c @@ -0,0 +1,61 @@ +/* C-SKY specific core note handling. + Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <elf.h> +#include <inttypes.h> +#include <stddef.h> +#include <stdio.h> +#include <sys/time.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + +#define ULONG uint32_t +#define PID_T int32_t +#define UID_T uint32_t +#define GID_T uint32_t +#define ALIGN_ULONG 4 +#define ALIGN_PID_T 4 +#define ALIGN_UID_T 4 +#define ALIGN_GID_T 4 +#define TYPE_ULONG ELF_T_WORD +#define TYPE_PID_T ELF_T_SWORD +#define TYPE_UID_T ELF_T_WORD +#define TYPE_GID_T ELF_T_WORD + +static const Ebl_Register_Location prstatus_regs[] = + { + { .offset = 0, .regno = 0, .count = 36, .bits = 32 } /* r0..r31 */ + }; +#define PRSTATUS_REGS_SIZE (36 * 4) + +#include "linux-core-note.c" diff --git a/backends/csky_init.c b/backends/csky_init.c new file mode 100644 index 00000000..b34a03aa --- /dev/null +++ b/backends/csky_init.c @@ -0,0 +1,65 @@ +/* Initialization of C-SKY specific backend library. + Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. + 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 csky_ +#define RELOC_PREFIX R_CKCORE_ +#include "libebl_CPU.h" + +/* This defines the common reloc hooks based on csky_reloc.def. */ +#include "common-reloc.c" + +const char * +csky_init (Elf *elf __attribute__ ((unused)), + GElf_Half machine __attribute__ ((unused)), + Ebl *eh, + size_t ehlen) +{ + /* Check whether the Elf_BH object has a sufficent size. */ + if (ehlen < sizeof (Ebl)) + return NULL; + + /* We handle it. */ + csky_init_reloc (eh); + HOOK (eh, abi_cfi); + HOOK (eh, core_note); + HOOK (eh, check_object_attribute); + HOOK (eh, machine_flag_check); + HOOK (eh, reloc_simple_type); + HOOK (eh, register_info); + HOOK (eh, section_type_name); + HOOK (eh, set_initial_registers_tid); + + /* gcc/config/ #define DWARF_FRAME_REGISTERS. */ + eh->frame_nregs = 38; + + return MODVERSION; +} diff --git a/backends/csky_initreg.c b/backends/csky_initreg.c new file mode 100644 index 00000000..81a0da33 --- /dev/null +++ b/backends/csky_initreg.c @@ -0,0 +1,87 @@ +/* Fetch live process registers from TID. C-SKY version. + Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "system.h" +#include <assert.h> +#if defined __CSKY__ && defined __linux__ +# include <sys/uio.h> +# include <sys/procfs.h> +# include <sys/ptrace.h> +#endif + +#define BACKEND csky_ +#include "libebl_CPU.h" + +bool +csky_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), + ebl_tid_registers_t *setfunc __attribute__ ((unused)), + void *arg __attribute__ ((unused))) +{ +#if !defined __CSKY__ || !defined __linux__ + return false; +#else /* __CSKY__ */ + struct pt_regs user_regs; + struct iovec iovec; + iovec.iov_base = &user_regs; + iovec.iov_len = sizeof (user_regs); + if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec) != 0) + return false; + + Dwarf_Word dwarf_regs[38]; + + /* lr. */ + dwarf_regs[15] = user_regs.lr; + /* sp. */ + dwarf_regs[14] = user_regs.usp; + /* r0 ~ r13. */ + dwarf_regs[0] = user_regs.a0; + dwarf_regs[1] = user_regs.a1; + dwarf_regs[2] = user_regs.a2; + dwarf_regs[3] = user_regs.a3; + for (int i = 4; i < 14; i++) + dwarf_regs[i] = user_regs.regs[i - 4]; + /* r ~ r13. */ + for (int i = 16; i < 31; i++) + dwarf_regs[i] = user_regs.exregs[i - 16]; + /* tls. */ + dwarf_regs[31] = user_regs.tls; + /* hi. */ + dwarf_regs[36] = user_regs.rhi; + /* lo. */ + dwarf_regs[37] = user_regs.rlo; + /* pc. */ + dwarf_regs[32] = user_regs.pc; + setfunc (-1, 1, &dwarf_regs[32], arg); + + return setfunc (0, 38, dwarf_regs, arg); +#endif +} diff --git a/backends/csky_regs.c b/backends/csky_regs.c new file mode 100644 index 00000000..6d45c04b --- /dev/null +++ b/backends/csky_regs.c @@ -0,0 +1,101 @@ +/* Register names and numbers for C-SKY DWARF. + Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. + 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 <string.h> +#include <dwarf.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + +ssize_t +csky_register_info (Ebl *ebl __attribute__ ((unused)), + int regno, char *name, size_t namelen, + const char **prefix, const char **setname, + int *bits, int *type) +{ + if (name == NULL) + return 38; + + *prefix = ""; + *bits = 32; + *type = DW_ATE_signed; + *setname = "integer"; + + switch (regno) + { + case 0 ... 9: + name[0] = 'r'; + name[1] = regno + '0'; + namelen = 2; + break; + + case 10 ... 13: + case 16 ... 30: + name[0] = 'r'; + name[1] = regno / 10 + '0'; + name[2] = regno % 10 + '0'; + namelen = 3; + break; + + case 14: + stpcpy (name, "sp"); + namelen = 2; + break; + + case 15: + stpcpy (name, "lr"); + namelen = 2; + break; + + case 31: + stpcpy (name, "tls"); + namelen = 3; + break; + + case 36: + stpcpy (name, "hi"); + namelen = 2; + break; + + case 37: + stpcpy (name, "lo"); + namelen = 2; + break; + + default: + *setname = NULL; + return 0; + } + + name[namelen++] = '\0'; + return namelen; +} diff --git a/backends/csky_reloc.def b/backends/csky_reloc.def new file mode 100644 index 00000000..1108f0c2 --- /dev/null +++ b/backends/csky_reloc.def @@ -0,0 +1,86 @@ +/* List the relocation types for csky. -*- C -*- + Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +/* NAME, REL|EXEC|DYN */ + + +RELOC_TYPE (NONE, REL|EXEC|DYN) +RELOC_TYPE (ADDR32, REL|EXEC|DYN) +RELOC_TYPE (PCRELIMM8BY4, REL) +RELOC_TYPE (PCRELIMM11BY2, REL) +RELOC_TYPE (PCREL32, REL|DYN) +RELOC_TYPE (PCRELJSR_IMM11BY2, REL) +RELOC_TYPE (RELATIVE, EXEC|DYN) +RELOC_TYPE (COPY, EXEC|DYN) +RELOC_TYPE (GLOB_DAT, EXEC|DYN) +RELOC_TYPE (JUMP_SLOT, EXEC|DYN) +RELOC_TYPE (GOTOFF, REL) +RELOC_TYPE (GOTPC, REL) +RELOC_TYPE (GOT32, REL) +RELOC_TYPE (PLT32, REL) +RELOC_TYPE (ADDRGOT, REL) +RELOC_TYPE (ADDRPLT, REL) +RELOC_TYPE (PCREL_IMM26BY2, REL) +RELOC_TYPE (PCREL_IMM16BY2, REL) +RELOC_TYPE (PCREL_IMM16BY4, REL) +RELOC_TYPE (PCREL_IMM10BY2, REL) +RELOC_TYPE (PCREL_IMM10BY4, REL) +RELOC_TYPE (ADDR_HI16, REL|DYN) +RELOC_TYPE (ADDR_LO16, REL|DYN) +RELOC_TYPE (GOTPC_HI16, REL) +RELOC_TYPE (GOTPC_LO16, REL) +RELOC_TYPE (GOTOFF_HI16, REL) +RELOC_TYPE (GOTOFF_LO16, REL) +RELOC_TYPE (GOT12, REL) +RELOC_TYPE (GOT_HI16, REL) +RELOC_TYPE (GOT_LO16, REL) +RELOC_TYPE (PLT12, REL) +RELOC_TYPE (PLT_HI16, REL) +RELOC_TYPE (PLT_LO16, REL) +RELOC_TYPE (ADDRGOT_HI16, REL) +RELOC_TYPE (ADDRGOT_LO16, REL) +RELOC_TYPE (ADDRPLT_HI16, REL) +RELOC_TYPE (ADDRPLT_LO16, REL) +RELOC_TYPE (PCREL_JSR_IMM26BY2, REL|DYN) +RELOC_TYPE (TOFFSET_LO16, REL) +RELOC_TYPE (DOFFSET_LO16, REL) +RELOC_TYPE (PCREL_IMM18BY2, REL) +RELOC_TYPE (DOFFSET_IMM18, REL) +RELOC_TYPE (DOFFSET_IMM18BY2, REL) +RELOC_TYPE (DOFFSET_IMM18BY4, REL) +RELOC_TYPE (GOT_IMM18BY4, REL) +RELOC_TYPE (PLT_IMM18BY4, REL) +RELOC_TYPE (PCREL_IMM7BY4, REL) +RELOC_TYPE (TLS_LE32, REL) +RELOC_TYPE (TLS_IE32, REL) +RELOC_TYPE (TLS_GD32, REL) +RELOC_TYPE (TLS_LDM32, REL) +RELOC_TYPE (TLS_LDO32, REL) +RELOC_TYPE (TLS_DTPMOD32, EXEC|DYN) +RELOC_TYPE (TLS_DTPOFF32, EXEC|DYN) +RELOC_TYPE (TLS_TPOFF32, EXEC|DYN) diff --git a/backends/csky_symbol.c b/backends/csky_symbol.c new file mode 100644 index 00000000..79b5bf9e --- /dev/null +++ b/backends/csky_symbol.c @@ -0,0 +1,77 @@ +/* C-SKY specific symbolic name handling. + Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <elf.h> +#include <stddef.h> +#include <string.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + +/* Check for the simple reloc types. */ +Elf_Type +csky_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) +{ + switch (type) + { + case R_CKCORE_ADDR32: + return ELF_T_WORD; + default: + return ELF_T_NUM; + } +} + +bool +csky_machine_flag_check (GElf_Word flags) +{ + switch (flags & EF_CSKY_ABIMASK) + { + case EF_CSKY_ABIV2: + return true; + case EF_CSKY_ABIV1: + default: + return false; + } +} + +const char * +csky_section_type_name (int type, + char *buf __attribute__ ((unused)), + size_t len __attribute__ ((unused))) +{ + if (type == SHT_CSKY_ATTRIBUTES) + return "CSKY_ATTRIBUTES"; + + return NULL; +} diff --git a/backends/i386_init.c b/backends/i386_init.c index fc1587a9..67428b53 100644 --- a/backends/i386_init.c +++ b/backends/i386_init.c @@ -49,7 +49,6 @@ i386_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "Intel 80386"; i386_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, gotpc_reloc_check); diff --git a/backends/ia64_init.c b/backends/ia64_init.c index 7241d7b8..2d1f43f2 100644 --- a/backends/ia64_init.c +++ b/backends/ia64_init.c @@ -49,7 +49,6 @@ ia64_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "Intel IA-64"; ia64_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, segment_type_name); diff --git a/backends/m68k_init.c b/backends/m68k_init.c index 8cae710b..05d544c1 100644 --- a/backends/m68k_init.c +++ b/backends/m68k_init.c @@ -48,7 +48,6 @@ m68k_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "M68K"; m68k_init_reloc (eh); HOOK (eh, gotpc_reloc_check); HOOK (eh, reloc_simple_type); diff --git a/backends/ppc64_init.c b/backends/ppc64_init.c index 3db5e766..c2e7043b 100644 --- a/backends/ppc64_init.c +++ b/backends/ppc64_init.c @@ -52,7 +52,6 @@ ppc64_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "PowerPC 64-bit"; ppc64_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, dynamic_tag_name); diff --git a/backends/ppc_init.c b/backends/ppc_init.c index aea9f2d7..eb286c25 100644 --- a/backends/ppc_init.c +++ b/backends/ppc_init.c @@ -50,7 +50,6 @@ ppc_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "PowerPC"; ppc_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, machine_flag_check); diff --git a/backends/riscv_cfi.c b/backends/riscv_cfi.c index 1a84a382..1c52ea8d 100644 --- a/backends/riscv_cfi.c +++ b/backends/riscv_cfi.c @@ -31,7 +31,7 @@ #include <dwarf.h> -#define BACKEND aarch64_ +#define BACKEND riscv64_ #include "libebl_CPU.h" diff --git a/backends/riscv_init.c b/backends/riscv_init.c index 3398c104..9aaec9ce 100644 --- a/backends/riscv_init.c +++ b/backends/riscv_init.c @@ -54,7 +54,6 @@ riscv_init (Elf *elf, return NULL; /* We handle it. */ - eh->name = "RISC-V"; riscv_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, register_info); diff --git a/backends/s390_init.c b/backends/s390_init.c index 0004aeea..b4f3e7f8 100644 --- a/backends/s390_init.c +++ b/backends/s390_init.c @@ -51,7 +51,6 @@ s390_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "IBM S/390"; s390_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, check_special_symbol); diff --git a/backends/sh_init.c b/backends/sh_init.c index 5526aca1..24f4d4a4 100644 --- a/backends/sh_init.c +++ b/backends/sh_init.c @@ -50,7 +50,6 @@ sh_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "Hitachi SH"; sh_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, gotpc_reloc_check); diff --git a/backends/sparc_init.c b/backends/sparc_init.c index 8e946fb2..6daff114 100644 --- a/backends/sparc_init.c +++ b/backends/sparc_init.c @@ -55,12 +55,6 @@ sparc_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - if (machine == EM_SPARCV9) - eh->name = "SPARC v9"; - else if (machine == EM_SPARC32PLUS) - eh->name = "SPARC v8+"; - else - eh->name = "SPARC"; sparc_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, machine_flag_check); diff --git a/backends/tilegx_init.c b/backends/tilegx_init.c index 162ed362..66df9318 100644 --- a/backends/tilegx_init.c +++ b/backends/tilegx_init.c @@ -48,7 +48,6 @@ tilegx_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "TILE-Gx"; tilegx_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, return_value_location); diff --git a/backends/x86_64_init.c b/backends/x86_64_init.c index 49f6c6c7..8abafb7f 100644 --- a/backends/x86_64_init.c +++ b/backends/x86_64_init.c @@ -52,7 +52,6 @@ x86_64_init (Elf *elf __attribute__ ((unused)), return NULL; /* We handle it. */ - eh->name = "AMD x86-64"; x86_64_init_reloc (eh); HOOK (eh, reloc_simple_type); HOOK (eh, section_type_name); diff --git a/config/ChangeLog b/config/ChangeLog index f956780c..65658118 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,12 @@ +2019-08-13 Mark Wielaard <mark@klomp.org> + + * Makefile.am (elfutils.spec.in): Use git --get user.name and + user.email. + +2019-04-15 Mark Wielaard <mark@klomp.org> + + * upload-release.sh: Add git tag --verify. + 2019-02-14 Mark Wielaard <mark@klomp.org> * elfutils.spec.in: Update for 0.176. diff --git a/config/Makefile.am b/config/Makefile.am index 66012d02..9d292cee 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -38,9 +38,9 @@ if MAINTAINER_MODE $(srcdir)/elfutils.spec.in: $(top_srcdir)/NEWS @tmpname=$$(mktemp $${TMPDIR:-/tmp}/elfutils.XXXXXX); \ date +'* %a %b %e %Y' | tr '[\n]' '[ ]' > $$tmpname; \ - getent passwd "$$(whoami)" | \ - awk 'BEGIN {FS=":"} { printf $$5; exit 0}' >> $$tmpname; \ - echo -n " <$$(whoami)@gmail.com> " >> $$tmpname; \ + username=$$(git config --get user.name); \ + useremail=$$(git config --get user.email); \ + echo -n "$$username <$$useremail> " >> $$tmpname; \ awk '\ $$1 == "Version" && started { exit } \ $$1 == "Version" { started=1; line=""; sub(/:/,"",$$2); \ diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in index 794cbaf8..19b4229e 100644 --- a/config/elfutils.spec.in +++ b/config/elfutils.spec.in @@ -227,6 +227,17 @@ rm -rf ${RPM_BUILD_ROOT} %{_sysctldir}/10-default-yama-scope.conf %changelog +* Tue Aug 13 2019 Mark Wielaard <mark@klomp.org> 0.177-1 +- elfclassify: New tool to analyze ELF objects. +- readelf: Print DW_AT_data_member_location as decimal offset. + Decode DW_AT_discr_list block attributes. +- libdw: Add DW_AT_GNU_numerator, DW_AT_GNU_denominator and DW_AT_GNU_bias. +- libdwelf: Add dwelf_elf_e_machine_string. + dwelf_elf_begin now only returns NULL when there is an error + reading or decompressing a file. If the file is not an ELF file + an ELF handle of type ELF_K_NONE is returned. +- backends: Add support for C-SKY. + * Thu Feb 14 2019 Mark Wielaard <mark@klomp.org> 0.176-1 - build: Add new --enable-install-elfh option. Do NOT use this for system installs (it overrides glibc elf.h). diff --git a/config/upload-release.sh b/config/upload-release.sh index 470644d3..df5e3a07 100755 --- a/config/upload-release.sh +++ b/config/upload-release.sh @@ -29,6 +29,7 @@ pushd "${tempdir}" # Checkout git clone git://sourceware.org/git/elfutils.git cd elfutils +git tag --verify "elfutils-${VERSION}" git checkout -b "$VERSION" "elfutils-${VERSION}" # Create dist diff --git a/configure.ac b/configure.ac index 54ad07ab..3afc51ea 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.176],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/]) +AC_INIT([elfutils],[0.177],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/]) dnl Workaround for older autoconf < 2.64 m4_ifndef([AC_PACKAGE_URL], diff --git a/lib/ChangeLog b/lib/ChangeLog index 0914b2c6..7381860c 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2019-05-03 Rosen Penev <rosenp@gmail.com> + + * color.c (parse_opt): Cast program_invocation_short_name to char *. + 2018-11-04 Mark Wielaard <mark@klomp.org> * bpf.h: Add BPF_JLT, BPF_JLE, BPF_JSLT and BPF_JSLE. diff --git a/lib/color.c b/lib/color.c index 9ffbf55f..20b9698a 100644 --- a/lib/color.c +++ b/lib/color.c @@ -132,7 +132,7 @@ valid arguments are:\n\ - 'auto', 'tty', 'if-tty'\n"), program_invocation_short_name, arg); argp_help (&color_argp, stderr, ARGP_HELP_SEE, - program_invocation_short_name); + (char *) program_invocation_short_name); exit (EXIT_FAILURE); } } diff --git a/libasm/ChangeLog b/libasm/ChangeLog index 92dfd729..05b830c8 100644 --- a/libasm/ChangeLog +++ b/libasm/ChangeLog @@ -1,3 +1,7 @@ +2019-03-06 Mark Wielaard <mark@klomp.org> + + * asm_end.c (binary_end): Check return value of gelf_update_ehdr. + 2018-10-19 Mark Wielaard <mark@klomp.org> * disasm_cb.c (read_symtab_exec): Check sh_entsize is not zero. diff --git a/libasm/asm_end.c b/libasm/asm_end.c index 5aab8dfa..99e95017 100644 --- a/libasm/asm_end.c +++ b/libasm/asm_end.c @@ -460,7 +460,11 @@ binary_end (AsmCtx_t *ctx) else ehdr->e_shstrndx = elf_ndxscn (shstrscn); - gelf_update_ehdr (ctx->out.elf, ehdr); + if (unlikely (gelf_update_ehdr (ctx->out.elf, ehdr) == 0)) + { + __libasm_seterrno (ASM_E_LIBELF); + result = -1; + } /* Write out the ELF file. */ if (unlikely (elf_update (ctx->out.elf, ELF_C_WRITE_MMAP) < 0)) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index aaa62960..bf1f4857 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,31 @@ +2019-08-12 Mark Wielaard <mark@klomp.org> + + * libdw.map (ELFUTILS_0.177): Add new version of dwelf_elf_begin. + +2019-06-28 Mark Wielaard <mark@klomp.org> + + * libdw.map (ELFUTILS_0.177): New section. Add + dwelf_elf_e_machine_string. + +2019-05-16 Mark Wielaard <mark@klomp.org> + + * dwarf.h: Add DW_AT_GNU_numerator, DW_AT_GNU_denominator and + DW_AT_GNU_bias. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * dwarf_siblingof.c (dwarf_siblingof): Don't initialize addr. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * dwarf_getlocation.c (dwarf_getlocation_addr): Call + check_constant_offset with llbufs and listlens directly. + +2019-04-27 Mark Wielaard <mark@klomp.org> + + * dwarf_getlocation.c (store_implicit_value): Check dbg isn't + NULL. + 2019-02-02 Mark Wielaard <mark@klomp.org> * dwarf_nextcu.c (__libdw_next_unit): Define bytes_end. diff --git a/libdw/dwarf.h b/libdw/dwarf.h index dc597335..71ca2baa 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -351,6 +351,12 @@ enum DW_AT_GNU_pubnames = 0x2134, DW_AT_GNU_pubtypes = 0x2135, + /* https://gcc.gnu.org/wiki/DW_AT_GNU_numerator_denominator */ + DW_AT_GNU_numerator = 0x2303, + DW_AT_GNU_denominator = 0x2304, + /* https://gcc.gnu.org/wiki/DW_AT_GNU_bias */ + DW_AT_GNU_bias = 0x2305, + DW_AT_hi_user = 0x3fff }; diff --git a/libdw/dwarf_getlocation.c b/libdw/dwarf_getlocation.c index fc59a2ab..6fb3ff3d 100644 --- a/libdw/dwarf_getlocation.c +++ b/libdw/dwarf_getlocation.c @@ -125,6 +125,8 @@ loc_compare (const void *p1, const void *p2) static int store_implicit_value (Dwarf *dbg, void **cache, Dwarf_Op *op) { + if (dbg == NULL) + return -1; struct loc_block_s *block = libdw_alloc (dbg, struct loc_block_s, sizeof (struct loc_block_s), 1); const unsigned char *data = (const unsigned char *) (uintptr_t) op->number2; @@ -896,7 +898,7 @@ dwarf_getlocation_addr (Dwarf_Attribute *attr, Dwarf_Addr address, } } - int result = check_constant_offset (attr, &llbufs[0], &listlens[0]); + int result = check_constant_offset (attr, llbufs, listlens); if (result != 1) return result ?: 1; diff --git a/libdw/dwarf_siblingof.c b/libdw/dwarf_siblingof.c index 613d2090..dbed9fa8 100644 --- a/libdw/dwarf_siblingof.c +++ b/libdw/dwarf_siblingof.c @@ -57,7 +57,7 @@ dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result) /* Copy of the CU in the request. */ sibattr.cu = this_die.cu; /* That's the address we start looking. */ - unsigned char *addr = this_die.addr; + unsigned char *addr; /* Search for the beginning of the next die on this level. We must not return the dies for children of the given die. */ diff --git a/libdw/libdw.map b/libdw/libdw.map index 55482d58..decac05c 100644 --- a/libdw/libdw.map +++ b/libdw/libdw.map @@ -360,4 +360,13 @@ ELFUTILS_0.173 { ELFUTILS_0.175 { global: dwelf_elf_begin; -} ELFUTILS_0.173;
\ No newline at end of file +} ELFUTILS_0.173; + +ELFUTILS_0.177 { + global: + dwelf_elf_e_machine_string; + # Replaced ELFUTILS_0.175 versions. Both versions point to the + # same implementation, but users of the new symbol version can + # presume that NULL is only returned on error (otherwise ELF_K_NONE). + dwelf_elf_begin; +} ELFUTILS_0.175; diff --git a/libdwelf/ChangeLog b/libdwelf/ChangeLog index 88be3421..5b48ed8f 100644 --- a/libdwelf/ChangeLog +++ b/libdwelf/ChangeLog @@ -1,3 +1,15 @@ +2019-08-12 Mark Wielaard <mark@klomp.org> + + * libdwelf.h (dwelf_elf_begin): Update documentation. + * dwelf_elf_begin.c (dwelf_elf_begin): Don't suppress ELF_K_NONE. + Mark old and new version. + +2019-06-28 Mark Wielaard <mark@klomp.org> + + * Makefile.am (libdwelf_a_SOURCES): Add dwelf_elf_e_machine_string.c. + * libdwelf.h (dwelf_elf_e_machine_string): Define new function. + * dwelf_elf_e_machine_string.c: New file. + 2018-10-21 Mark Wielaard <mark@klomp.org> * libdwelf.h (dwelf_elf_begin): Add function declaration. diff --git a/libdwelf/Makefile.am b/libdwelf/Makefile.am index da418e6e..dd7adf07 100644 --- a/libdwelf/Makefile.am +++ b/libdwelf/Makefile.am @@ -42,7 +42,8 @@ noinst_HEADERS = libdwelfP.h libdwelf_a_CFLAGS = -fPIC -fvisibility=hidden $(AM_CFLAGS) libdwelf_a_SOURCES = dwelf_elf_gnu_debuglink.c dwelf_dwarf_gnu_debugaltlink.c \ dwelf_elf_gnu_build_id.c dwelf_scn_gnu_compressed_size.c \ - dwelf_strtab.c dwelf_elf_begin.c + dwelf_strtab.c dwelf_elf_begin.c \ + dwelf_elf_e_machine_string.c libdwelf = $(libdw) diff --git a/libdwelf/dwelf_elf_begin.c b/libdwelf/dwelf_elf_begin.c index 79825338..c7d63a1c 100644 --- a/libdwelf/dwelf_elf_begin.c +++ b/libdwelf/dwelf_elf_begin.c @@ -41,13 +41,13 @@ dwelf_elf_begin (int fd) { Elf *elf = NULL; Dwfl_Error e = __libdw_open_elf (fd, &elf); - if (elf != NULL && elf_kind (elf) != ELF_K_NONE) + if (e == DWFL_E_NOERROR) return elf; - /* Elf wasn't usable. Make sure there is a proper elf error message. */ - - if (elf != NULL) - elf_end (elf); + /* Elf wasn't usable. Make sure there is a proper elf error + message. This is probably not the real error, because there is + no good way to propagate errnos or decompression errors, but + better than nothing. */ if (e != DWFL_E_LIBELF) { @@ -60,3 +60,5 @@ dwelf_elf_begin (int fd) return NULL; } +OLD_VERSION (dwelf_elf_begin, ELFUTILS_0.175) +NEW_VERSION (dwelf_elf_begin, ELFUTILS_0.177) diff --git a/libdwelf/dwelf_elf_e_machine_string.c b/libdwelf/dwelf_elf_e_machine_string.c new file mode 100644 index 00000000..de07b01e --- /dev/null +++ b/libdwelf/dwelf_elf_e_machine_string.c @@ -0,0 +1,406 @@ +/* Returns a human readable description of an ELF header e_machine value. + Copyright (C) 2019 Red Hat, 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 "libdwelf.h" + + +const char * +dwelf_elf_e_machine_string (int machine) +{ + switch (machine) + { + case EM_NONE: + return "None"; + case EM_M32: + return "WE32100"; + case EM_SPARC: + return "SPARC"; + case EM_386: + return "Intel 80386"; + case EM_68K: + return "M68K"; + case EM_88K: + return "M88K"; + case EM_IAMCU: + return "Intel MCU"; + case EM_860: + return "Intel 80860"; + case EM_MIPS: + return "MIPS R3000"; + case EM_S370: + return "IBM System/370"; + case EM_MIPS_RS3_LE: + return "MIPS R3000"; + case EM_PARISC: + return "HPPA"; + case EM_VPP500: + return "Fujitsu VPP500"; + case EM_SPARC32PLUS: + return "SPARC v8+"; + case EM_960: + return "Intel 80960"; + case EM_PPC: + return "PowerPC"; + case EM_PPC64: + return "PowerPC64"; + case EM_S390: + return "IBM S/390"; + case EM_SPU: + return "IBM SPU/SPC"; + case EM_V800: + return "NEC V800"; + case EM_FR20: + return "Fujitsu FR20"; + case EM_RH32: + return "TRW RH-32"; + case EM_RCE: + return "Motorola RCE"; + case EM_ARM: + return "ARM"; + case EM_FAKE_ALPHA: + return "Digital Alpha"; + case EM_SH: + return "SH"; + case EM_SPARCV9: + return "SPARC v9"; + case EM_TRICORE: + return "Siemens Tricore"; + case EM_ARC: + return "ARC"; + case EM_H8_300: + return "H8/300"; + case EM_H8_300H: + return "H8/300H"; + case EM_H8S: + return "H8S"; + case EM_H8_500: + return "H8/500"; + case EM_IA_64: + return "Intel IA-64"; + case EM_MIPS_X: + return "Stanford MIPS-X"; + case EM_COLDFIRE: + return "Motorola Coldfire"; + case EM_68HC12: + return "Motorola M68HC12"; + case EM_MMA: + return "Fujitsu MMA Multimedia Accelerator"; + case EM_PCP: + return "Siemens PCP"; + case EM_NCPU: + return "Sony nCPU embeded RISC"; + case EM_NDR1: + return "Denso NDR1 microprocessor"; + case EM_STARCORE: + return "Motorola Star*Core processor"; + case EM_ME16: + return "Toyota ME16 processor"; + case EM_ST100: + return "STMicroelectronic ST100"; + case EM_TINYJ: + return "Advanced Logic Corporation Tinyj"; + case EM_X86_64: + return "AMD x86-64"; + case EM_PDSP: + return "Sony DSP Processor"; + case EM_PDP10: + return "Digital PDP-10"; + case EM_PDP11: + return "Digital PDP-11"; + case EM_FX66: + return "Siemens FX66 microcontroller"; + case EM_ST9PLUS: + return "STMicroelectronics ST9+"; + case EM_ST7: + return "STMicroelectronics ST7"; + case EM_68HC16: + return "Motorola MC68HC16 microcontroller"; + case EM_68HC11: + return "Motorola MC68HC11 microcontroller"; + case EM_68HC08: + return "Motorola MC68HC08 microcontroller"; + case EM_68HC05: + return "Motorola MC68HC05 microcontroller"; + case EM_SVX: + return "Silicon Graphics SVx"; + case EM_ST19: + return "STMicroelectronics ST19"; + case EM_VAX: + return "Digital VAX"; + case EM_CRIS: + return "Axis Communications 32-bit embedded processor"; + case EM_JAVELIN: + return "Infineon Technologies 32-bit embedded processor"; + case EM_FIREPATH: + return "Element 14 64-bit DSP Processor"; + case EM_ZSP: + return "LSI Logic 16-bit DSP Processor"; + case EM_MMIX: + return "Donald Knuth's educational 64-bit processor"; + case EM_HUANY: + return "Harvard University machine-independent object"; + case EM_PRISM: + return "SiTera Prism"; + case EM_AVR: + return "Atmel AVR 8-bit microcontroller"; + case EM_FR30: + return "Fujitsu FR30"; + case EM_D10V: + return "Mitsubishi D10V"; + case EM_D30V: + return "Mitsubishi D30V"; + case EM_V850: + return "NEC v850"; + case EM_M32R: + return "Mitsubishi M32R"; + case EM_MN10300: + return "Matsushita MN10300"; + case EM_MN10200: + return "Matsushita MN10200"; + case EM_PJ: + return "picoJava"; + case EM_OPENRISC: + return "OpenRISC"; + case EM_ARC_COMPACT: + return "ARC International ARCompact"; + case EM_XTENSA: + return "Tensilica Xtensa Architecture"; + case EM_VIDEOCORE: + return "Alphamosaic VideoCore"; + case EM_TMM_GPP: + return "Thompson Multimedia General Purpose Processor"; + case EM_NS32K: + return "National Semiconductor 32000"; + case EM_TPC: + return "Tenor Network TPC"; + case EM_SNP1K: + return "Trebia SNP 1000"; + case EM_ST200: + return "STMicroelectronics ST200"; + case EM_IP2K: + return "Ubicom IP2xxx"; + case EM_MAX: + return "MAX processor"; + case EM_CR: + return "National Semiconductor CompactRISC"; + case EM_F2MC16: + return "Fujitsu F2MC16"; + case EM_MSP430: + return "Texas Instruments msp430"; + case EM_BLACKFIN: + return "Analog Devices Blackfin DSP"; + case EM_SE_C33: + return "Seiko Epson S1C33"; + case EM_SEP: + return "Sharp embedded microprocessor"; + case EM_ARCA: + return "Arca RISC"; + case EM_UNICORE: + return "Unicore"; + case EM_EXCESS: + return "eXcess configurable CPU"; + case EM_DXP: + return "Icera Semiconductor Deep Execution Processor"; + case EM_ALTERA_NIOS2: + return "Altera Nios II"; + case EM_CRX: + return "National Semiconductor CompactRISC CRX"; + case EM_XGATE: + return "Motorola XGATE"; + case EM_C166: + return "Infineon C16x/XC16x"; + case EM_M16C: + return "Renesas M16C"; + case EM_DSPIC30F: + return "Microchip Technology dsPIC30F"; + case EM_CE: + return "Freescale Communication Engine RISC"; + case EM_M32C: + return "Renesas M32C"; + case EM_TSK3000: + return "Altium TSK3000"; + case EM_RS08: + return "Freescale RS08"; + case EM_SHARC: + return "Analog Devices SHARC"; + case EM_ECOG2: + return "Cyan Technology eCOG2"; + case EM_SCORE7: + return "Sunplus S+core7 RISC"; + case EM_DSP24: + return "New Japan Radio (NJR) 24-bit DSP"; + case EM_VIDEOCORE3: + return "Broadcom VideoCore III"; + case EM_LATTICEMICO32: + return "RISC for Lattice FPGA"; + case EM_SE_C17: + return "Seiko Epson C17"; + case EM_TI_C6000: + return "Texas Instruments TMS320C6000 DSP"; + case EM_TI_C2000: + return "Texas Instruments TMS320C2000 DSP"; + case EM_TI_C5500: + return "Texas Instruments TMS320C55x DSP"; + case EM_TI_ARP32: + return "Texas Instruments Application Specific RISC"; + case EM_TI_PRU: + return "Texas Instruments Programmable Realtime Unit"; + case EM_MMDSP_PLUS: + return "STMicroelectronics 64bit VLIW DSP"; + case EM_CYPRESS_M8C: + return "Cypress M8C"; + case EM_R32C: + return "Renesas R32C"; + case EM_TRIMEDIA: + return "NXP Semiconductors TriMedia"; + case EM_QDSP6: + return "QUALCOMM DSP6"; + case EM_8051: + return "Intel 8051 and variants"; + case EM_STXP7X: + return "STMicroelectronics STxP7x"; + case EM_NDS32: + return "Andes Technology compact code size embeded RISC"; + case EM_ECOG1X: + return "Cyan Technology eCOG1X"; + case EM_MAXQ30: + return "Dallas Semicondutor MAXQ30"; + case EM_XIMO16: + return "New Japan Radio (NJR) 16-bit DSP"; + case EM_MANIK: + return "M2000 Reconfigurable RISC"; + case EM_CRAYNV2: + return "Cray NV2 vector architecture"; + case EM_RX: + return "Renesas RX"; + case EM_METAG: + return "Imagination Technologies META"; + case EM_MCST_ELBRUS: + return "MCST Elbrus"; + case EM_ECOG16: + return "Cyan Technology eCOG16"; + case EM_CR16: + return "National Semiconductor CompactRISC"; + case EM_ETPU: + return "Freescale Extended Time Processing Unit"; + case EM_SLE9X: + return "Infineon Technologies SLE9X"; + case EM_L10M: + return "Intel L10M"; + case EM_K10M: + return "Intel K10M"; + case EM_AARCH64: + return "AARCH64"; + case EM_AVR32: + return "Amtel AVR32"; + case EM_STM8: + return "STMicroelectronics STM8"; + case EM_TILE64: + return "Tilera TILE64"; + case EM_TILEPRO: + return "Tilera TILEPro"; + case EM_MICROBLAZE: + return "Xilinx MicroBlaze"; + case EM_CUDA: + return "NVIDIA CUDA"; + case EM_TILEGX: + return "Tilera TILE-Gx"; + case EM_CLOUDSHIELD: + return "CloudShield"; + case EM_COREA_1ST: + return "KIPO-KAIST Core-A 1st gen"; + case EM_COREA_2ND: + return "KIPO-KAIST Core-A 2nd gen"; + case EM_ARC_COMPACT2: + return "Synopsys ARCompact V2"; + case EM_OPEN8: + return "Open8 RISC"; + case EM_RL78: + return "Renesas RL78"; + case EM_VIDEOCORE5: + return "Broadcom VideoCore V"; + case EM_78KOR: + return "Renesas 78KOR"; + case EM_56800EX: + return "Freescale 56800EX DSC"; + case EM_BA1: + return "Beyond BA1"; + case EM_BA2: + return "Beyond BA2"; + case EM_XCORE: + return "XMOS xCORE"; + case EM_MCHP_PIC: + return "Microchip 8-bit PIC"; + case EM_KM32: + return "KM211 KM32"; + case EM_KMX32: + return "KM211 KMX32"; + case EM_EMX16: + return "KM211 KMX16"; + case EM_EMX8: + return "KM211 KMX8"; + case EM_KVARC: + return "KM211 KVARC"; + case EM_CDP: + return "Paneve CDP"; + case EM_COGE: + return "Cognitive Smart Memory Processor"; + case EM_COOL: + return "Bluechip CoolEngine"; + case EM_NORC: + return "Nanoradio Optimized RISC"; + case EM_CSR_KALIMBA: + return "CSR Kalimba"; + case EM_Z80: + return "Zilog Z80"; + case EM_VISIUM: + return "CDS VISIUMcore"; + case EM_FT32: + return "FTDI Chip FT32"; + case EM_MOXIE: + return "Moxie"; + case EM_AMDGPU: + return "AMD GPU"; + case EM_RISCV: + return "RISC-V"; + case EM_BPF: + return "BPF"; + case EM_CSKY: + return "C-SKY"; + + case EM_ALPHA: + return "Alpha"; + + default: + return NULL; + } +} diff --git a/libdwelf/libdwelf.h b/libdwelf/libdwelf.h index 6d491847..dbb8f08c 100644 --- a/libdwelf/libdwelf.h +++ b/libdwelf/libdwelf.h @@ -128,11 +128,18 @@ extern void dwelf_strtab_free (Dwelf_Strtab *st) /* Creates a read-only Elf handle from the given file handle. The file may be compressed and/or contain a linux kernel image header, in which case it is eagerly decompressed in full and the Elf handle - is created as if created with elf_memory (). On error NULL is - returned. The Elf handle should be closed with elf_end (). The - file handle will not be closed. Does not return ELF_K_NONE handles. */ + is created as if created with elf_memory (). On decompression or + file errors NULL is returned (and elf_errno will be set). If there + was no error, but the file is not an ELF file, then an ELF_K_NONE + Elf handle is returned (just like with elf_begin). The Elf handle + should be closed with elf_end (). The file handle will not be + closed. */ extern Elf *dwelf_elf_begin (int fd); +/* Returns a human readable string for the given ELF header e_machine + value, or NULL if the given number isn't currently known. */ +extern const char *dwelf_elf_e_machine_string (int machine); + #ifdef __cplusplus } #endif diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 04cadb43..04a39637 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,36 @@ +2019-08-12 Mark Wielaard <mark@klomp.org> + + * gzip.c (open_stream): Return DWFL_E_ERRNO on bad file operation. + * open.c (libdw_open_elf): New argument bad_elf_ok. Check it and + return DWFL_E_NOERROR in case it is set and error was DWFL_E_BADELF. + (__libdw_open_file): Call libdw_open_elf with bad_elf_ok false. + (__libdw_open_elf): Call libdw_open_elf with bad_elf_ok true. + +2019-08-05 Omar Sandoval <osandov@fb.com> + + * dwfl_segment_report_module.c (dwfl_segment_report_module): Assign + mod->main.fd. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * frame_unwind.c (expr_eval): Make sure we left shift a unsigned + 64bit value. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * cu.c (addrarange): Only call realloc when naranges is not zero. + +2019-03-27 Mark Wielaard <mark@klomp.org> + + * dwfl_segment_report_module.c (dwfl_segment_report_module): Check + ph_buffer_size vs xlatefrom.d_size after read_portion call. + +2019-02-24 Mark Wielaard <mark@klomp.org> + + * linux-kernel-modules.c (intuit_kernel_bounds): Init *notes before + fopen. + (dwfl_linux_kernel_report_kernel): Remove fake note init empty asm. + 2019-01-25 Yonghong Song <yhs@fb.com> * linux-proc-maps.c (proc_maps_report): Use PRIu64, not PRIi64, to diff --git a/libdwfl/cu.c b/libdwfl/cu.c index 94bfad8d..4de66248 100644 --- a/libdwfl/cu.c +++ b/libdwfl/cu.c @@ -83,8 +83,11 @@ addrarange (Dwfl_Module *mod, Dwarf_Addr addr, struct dwfl_arange **arange) /* Store the final array, which is probably much smaller than before. */ mod->naranges = naranges; - mod->aranges = (realloc (aranges, naranges * sizeof aranges[0]) - ?: aranges); + if (naranges > 0) + mod->aranges = (realloc (aranges, naranges * sizeof aranges[0]) + ?: aranges); + else if (aranges != NULL) + free (aranges); mod->lazycu += naranges; } diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c index f6ad39b3..430e13d5 100644 --- a/libdwfl/dwfl_segment_report_module.c +++ b/libdwfl/dwfl_segment_report_module.c @@ -412,6 +412,12 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, start + phoff, xlatefrom.d_size)) return finish (); + /* ph_buffer_size will be zero if we got everything from the initial + buffer, otherwise it will be the size of the new buffer that + could be read. */ + if (ph_buffer_size != 0) + xlatefrom.d_size = ph_buffer_size; + xlatefrom.d_buf = ph_buffer; bool class32 = ei_class == ELFCLASS32; @@ -961,6 +967,7 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, { /* Install the file in the module. */ mod->main.elf = elf; + mod->main.fd = fd; elf = NULL; fd = -1; mod->main.vaddr = module_start - bias; diff --git a/libdwfl/frame_unwind.c b/libdwfl/frame_unwind.c index 8da691ee..d7dfa5a9 100644 --- a/libdwfl/frame_unwind.c +++ b/libdwfl/frame_unwind.c @@ -336,7 +336,7 @@ expr_eval (Dwfl_Frame *state, Dwarf_Frame *frame, const Dwarf_Op *ops, val1 >>= (addr_bytes - op->number) * 8; #else if (op->number < 8) - val1 &= (1 << (op->number * 8)) - 1; + val1 &= (1ULL << (op->number * 8)) - 1; #endif } if (! push (val1)) diff --git a/libdwfl/gzip.c b/libdwfl/gzip.c index c2c13baf..043d0b6e 100644 --- a/libdwfl/gzip.c +++ b/libdwfl/gzip.c @@ -139,14 +139,14 @@ open_stream (int fd, off_t start_offset, struct unzip_state *state) { int d = dup (fd); if (unlikely (d < 0)) - return DWFL_E_BADELF; + return DWFL_E_ERRNO; if (start_offset != 0) { off_t off = lseek (d, start_offset, SEEK_SET); if (off != start_offset) { close (d); - return DWFL_E_BADELF; + return DWFL_E_ERRNO; } } state->zf = gzdopen (d, "r"); @@ -288,6 +288,7 @@ unzip (int fd, off_t start_offset, if (result == DWFL_E_NOERROR && gzdirect (state.zf)) { gzclose (state.zf); + /* Not a compressed stream after all. */ return fail (&state, DWFL_E_BADELF); } diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c index 360e4ee9..d46ab5aa 100644 --- a/libdwfl/linux-kernel-modules.c +++ b/libdwfl/linux-kernel-modules.c @@ -493,14 +493,14 @@ intuit_kernel_bounds (Dwarf_Addr *start, Dwarf_Addr *end, Dwarf_Addr *notes) { struct read_address_state state = { NULL, NULL, 0, 0, NULL, NULL }; + *notes = 0; + state.f = fopen (KSYMSFILE, "r"); if (state.f == NULL) return errno; (void) __fsetlocking (state.f, FSETLOCKING_BYCALLER); - *notes = 0; - int result; do result = read_address (&state, start) ? 0 : -1; @@ -695,9 +695,6 @@ dwfl_linux_kernel_report_kernel (Dwfl *dwfl) /* Try to figure out the bounds of the kernel image without looking for any vmlinux file. */ Dwarf_Addr notes; - /* The compiler cannot deduce that if intuit_kernel_bounds returns - zero NOTES will be initialized. Fake the initialization. */ - asm ("" : "=m" (notes)); int result = intuit_kernel_bounds (&start, &end, ¬es); if (result == 0) { diff --git a/libdwfl/open.c b/libdwfl/open.c index 74367359..35fc5283 100644 --- a/libdwfl/open.c +++ b/libdwfl/open.c @@ -118,7 +118,7 @@ what_kind (int fd, Elf **elfp, Elf_Kind *kind, bool *may_close_fd) static Dwfl_Error libdw_open_elf (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok, - bool never_close_fd) + bool never_close_fd, bool bad_elf_ok) { bool may_close_fd = false; @@ -164,6 +164,10 @@ libdw_open_elf (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok, && !(archive_ok && kind == ELF_K_AR)) error = DWFL_E_BADELF; + /* This basically means, we keep a ELF_K_NONE Elf handle and return it. */ + if (bad_elf_ok && error == DWFL_E_BADELF) + error = DWFL_E_NOERROR; + if (error != DWFL_E_NOERROR) { elf_end (elf); @@ -184,11 +188,11 @@ libdw_open_elf (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok, Dwfl_Error internal_function __libdw_open_file (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok) { - return libdw_open_elf (fdp, elfp, close_on_fail, archive_ok, false); + return libdw_open_elf (fdp, elfp, close_on_fail, archive_ok, false, false); } Dwfl_Error internal_function __libdw_open_elf (int fd, Elf **elfp) { - return libdw_open_elf (&fd, elfp, false, true, true); + return libdw_open_elf (&fd, elfp, false, true, true, true); } diff --git a/libebl/ChangeLog b/libebl/ChangeLog index acc68919..bb91c152 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,28 @@ +2019-04-29 Mao Han <han_mao@c-sky.com> + + * eblopenbackend.c: Add C-SKY. + +2019-06-28 Mark Wielaard <mark@klomp.org> + + * eblopenbackend.c (try_dlopen): Remove result->name check. + (openbackend): Remove result->name assignment. + (struct ebl): Remove name. + +2019-05-30 Mark Wielaard <mark@klomp.org> + + * eblopenbackend.c (try_dlopen): New function extracted from + openbackend. + (openbackend): Replace ORIGINDIR define with BINORIGINDIR and + LIBORIGINDIR defines. Use tryopen to open backend in bin origin + path, lib origin path and without an explicit path. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * eblsymbolbindingname.c (ebl_symbol_binding_name): Check ebl is + not NULL for STB_GNU_UNIQUE. + * eblsymboltypename.c (ebl_symbol_type_name): Check ebl is not + NULL for STT_GNU_IFUNC. + 2019-01-29 Mark Wielaard <mark@klomp.org> * eblobjnote.c (ebl_object_note): Check pr_datasz padding doesn't diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index 74251eaa..9431897b 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -143,6 +143,7 @@ static const struct { bpf_init, "elf_bpf", "bpf", 3, EM_BPF, 0, 0 }, { NULL, "elf_riscv", "riscv", 5, EM_RISCV, ELFCLASS64, ELFDATA2LSB }, { NULL, "elf_riscv", "riscv", 5, EM_RISCV, ELFCLASS32, ELFDATA2LSB }, + { NULL, "elf_csky", "csky", 4, EM_CSKY, ELFCLASS32, ELFDATA2LSB }, }; #define nmachines (sizeof (machines) / sizeof (machines[0])) @@ -259,7 +260,6 @@ fill_defaults (Ebl *result) result->sysvhash_entrysize = sizeof (Elf32_Word); } - /* Find an appropriate backend for the file associated with ELF. */ static Ebl * openbackend (Elf *elf, const char *emulation, GElf_Half machine) @@ -324,7 +324,16 @@ openbackend (Elf *elf, const char *emulation, GElf_Half machine) #ifndef LIBEBL_SUBDIR # define LIBEBL_SUBDIR PACKAGE #endif -#define ORIGINDIR "$ORIGIN/../$LIB/" LIBEBL_SUBDIR "/" + +/* This works if libebl has been staticly linked into a binary. + It might also work for shared libraries when installed in + ${prefix}/lib/ or ${prefix}/lib64/, but not for multiarch + library installs like ${prefix}/lib/i386-linux-gnu/ */ +#define BINORIGINDIR "$ORIGIN/../$LIB/" LIBEBL_SUBDIR "/" + +/* This works if libebl has been linked into a shared library, + just look in the subdir. */ +#define LIBORIGINDIR "$ORIGIN/" LIBEBL_SUBDIR "/" ebl_bhinit_t initp = machines[cnt].initptr; if (1) @@ -340,7 +349,6 @@ openbackend (Elf *elf, const char *emulation, GElf_Half machine) result->elf = elf; /* A few entries are mandatory. */ - assert (result->name != NULL); assert (result->destr != NULL); return result; @@ -351,7 +359,6 @@ openbackend (Elf *elf, const char *emulation, GElf_Half machine) Return that information. */ result->dlhandle = NULL; result->elf = elf; - result->name = machines[cnt].prefix; fill_defaults (result); return result; @@ -361,7 +368,6 @@ openbackend (Elf *elf, const char *emulation, GElf_Half machine) result->dlhandle = NULL; result->elf = elf; result->emulation = "<unknown>"; - result->name = "<unknown>"; fill_defaults (result); return result; diff --git a/libebl/eblsymbolbindingname.c b/libebl/eblsymbolbindingname.c index 97974253..75565fe8 100644 --- a/libebl/eblsymbolbindingname.c +++ b/libebl/eblsymbolbindingname.c @@ -58,6 +58,7 @@ ebl_symbol_binding_name (Ebl *ebl, int binding, char *buf, size_t len) if (binding >= STB_LOPROC && binding <= STB_HIPROC) snprintf (buf, len, "LOPROC+%d", binding - STB_LOPROC); else if (binding == STB_GNU_UNIQUE + && ebl != NULL && (ident = elf_getident (ebl->elf, NULL)) != NULL && ident[EI_OSABI] == ELFOSABI_LINUX) return "GNU_UNIQUE"; diff --git a/libebl/eblsymboltypename.c b/libebl/eblsymboltypename.c index 09fa8748..53b145a8 100644 --- a/libebl/eblsymboltypename.c +++ b/libebl/eblsymboltypename.c @@ -64,6 +64,7 @@ ebl_symbol_type_name (Ebl *ebl, int symbol, char *buf, size_t len) if (symbol >= STT_LOPROC && symbol <= STT_HIPROC) snprintf (buf, len, "LOPROC+%d", symbol - STT_LOPROC); else if (symbol == STT_GNU_IFUNC + && ebl != NULL && (ident = elf_getident (ebl->elf, NULL)) != NULL && ident[EI_OSABI] == ELFOSABI_LINUX) return "GNU_IFUNC"; diff --git a/libebl/libeblP.h b/libebl/libeblP.h index 5b339b31..a5869685 100644 --- a/libebl/libeblP.h +++ b/libebl/libeblP.h @@ -38,9 +38,6 @@ /* Backend handle. */ struct ebl { - /* Machine name. */ - const char *name; - /* Emulation name. */ const char *emulation; diff --git a/libelf/ChangeLog b/libelf/ChangeLog index d8e8fdc8..dde6c81d 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,131 @@ +2019-06-18 Mark Wielaard <mark@klomp.org> + + * common.h (allocate_elf): Use int64_t instead of off_t for offset. + * elf32_newphdr.c (newphdr): Document why Elf32/64_Word is correct. + * elf32_updatefile.c (fill): Use int64_t instead of off_t for pos. + (updatefile): Define last_offset, shdr_offset and scn_start as + int64_t instead of off_t. + * elf32_updatenull.c: Define Elf32_SizeWord and Elf64_SizeWord. + (updatenull_wrlock): Return int64_t instead of off_t. Define size, + sh_entsize, sh_align and sh_size as SizeWords. Define offset as + int64_t. Cast data->d_off to SizeWord instead of GElf_Word. Drop + size GElf_Word cast. Cast offset to SizeWord instead of GElf_Word + when comparing with sh_size. + * elf_begin.c (get_shnum): Define offset as int64_t instead of + off_t. Document why use GElf_Word is correct. + (file_read_elf): Define offset as int64_t instead of off_t. + (__libelf_read_mmaped_file): Likewise. + (read_unmmaped_file): Likewise. + (read_file): Likewise. + * elf_getaroff.c (elf_getaroff): Return int64_t. + * elf_getbase.c (elf_getbase): Likewise. + * elf_getdata_rawchunk.c (elf_getdata_rawchunk): Define offset as + int64_t instead of off_t. + * elf_update.c (write_file): Return int64_t instead of off_t, + define size as int64_t instead of off_t. + (elf_update): Likewise. + * libelfP.h (struct Elf): Define start_offset, sizestr_offset and + offset as int64_t. + (__libelf_read_mmaped_file): Define offset as int64_t. + (__elf32_updatenull_wrlock): Return int64_t. + (__elf64_updatenull_wrlock): Return int64_t. + +2019-05-12 Mark Wielaard <mark@klomp.org> + + * elf32_updatenull.c (updatenull_wrlock): Mark shdr_flags dirty if + either offset or size changed. + +2019-05-01 Mark Wielaard <mark@klomp.org> + + * gelf_getnote.c (gelf_getnote): Check n_namesz doesn't overflow + offset. + +2019-04-30 Mark Wielaard <mark@klomp.org> + + * note_xlate.h (elf_cvt_note): Indicate we only translated the note + header if we ran out of data by updating len, src and dest. + +2019-04-01 Mao Han <han_mao@c-sky.com> + + * elf.h: Update from glibc. + +2019-03-07 Mark Wielaard <mark@klomp.org> + + * elf32_updatefile.c (updatemmap): Use posix_memalign instead of + aligned_alloc. + +2019-03-06 Mark Wielaard <mark@klomp.org> + + * elf32_updatefile.c (updatemmap): Free scns before returning + allocation failure. + +2019-02-24 Mark Wielaard <mark@klomp.org> + + * gelf_xlate.c (__elf_xfctstof): Remove alias. + * libelfP.h (__elf_xfctstof): Remove definition. + +2019-02-24 Mark Wielaard <mark@klomp.org> + + * elf32_fsize.c (local_strong_alias): Remove definition. + (msize): Remove alias. + * libelfP.h (__elf32_msize): Remove definition. + (__elf64_msize): Likewise. + +2019-02-21 Mark Wielaard <mark@klomp.org> + + * common.h (determine_kind): Only accept EV_CURRENT. + * elf32_fsize.c (fsize): Just check version is EV_CURRENT. + Use __libelf_type_size without version dimension. + * elf32_updatefile.c (updatemmap): Define fctp from __elf_xfctstom + without version dimension. + (updatefile): Likewise. + * elf32_updatenull.c (default_ehdr): Check e_version is EV_CURRENT. + (updatenull_wrlock): Check d_version is EV_CURRENT. + (elf32_xlatetof): Likewise. And get recsize without version + dimension from __elf_xfctstom. + (elf32_xlatetom): Likewise. + * elf_begin.c (elf_begin): Check __libelf_version is EV_CURRENT. + * elf_compress.c (__libelf_reset_rawdata): Set d_version to + EV_CURRENT. + * elf_getdata.c (shtype_map): Remove version dimension. + (__libelf_type_aligns): Likewise. + (__libelf_data_type): Use shtype_map without version dimension. + (convert_data): Remove unused version argument. Get fp from + __elf_xfctstom without version dimensions. + (__libelf_set_data_list_rdlock): Call convert_data without version. + * elf_getdata_rawchunk.c (elf_getdata_rawchunk): Call __elfcfctstom + conversion function without version dimensions. Set d_version to + EV_CURRENT. + * elf_newdata.c (elf_newdata): Set d_version to EV_CURRENT. + * elf_version.c (__libelf_version_initialized): Removed. + (__libelf_version): Initialized to EV_NONE. + (elf_version): Always return EV_CURRENT for EV_NONE version. + Only accept (and return) EV_CURRENT as version. + * gelf_fsize.c (__libelf_type_sizes): Remove version dimension. + (gelf_fsize): Only accept EV_CURRENT as version. + Use __libelf_type_sizes without version dimension. + * gelf_xlate.c (__elf_xftstom): Remove version dimensions. + * libelfP.h (__elf_xfctstom): Defined without version dimensions. + (__elf_xfctstof): Likewise. + (__libelf_type_sizes): Define without version dimension. + (elf_typesize): Define using __libelf_type_sizes without version + dimension. + (__libelf_version_initialized): Remove definition. + (__libelf_version): Add definition. + (LIBELF_EV_IDX): Removed define. + (__libelf_type_aligns): Remove version dimension. + * nlist.c (nlist): Call elf_version unconditionally. + +2019-02-19 Mark Wielaard <mark@klomp.org> + + * elf_compress.c (do_deflate_cleanup): Remove ei_data argument, + check cdatap is not NULL before calling free. + (deflate_cleanup): Add cdata as argument. + (__libelf_compress): Also check whether the d_size is not zero + before converting data. Call deflate_cleanup with an extra + argument depending on whether there is converted data to free. + Always allocate allocate at least one byte for buf_out. + 2019-02-14 Mark Wielaard <mark@klomp.org> * elf_begin.c (read_long_names): Make sure ar_size is properly diff --git a/libelf/common.h b/libelf/common.h index 744f1bb8..b0175f60 100644 --- a/libelf/common.h +++ b/libelf/common.h @@ -56,7 +56,7 @@ determine_kind (void *buf, size_t len) if (eclass > ELFCLASSNONE && eclass < ELFCLASSNUM && data > ELFDATANONE && data < ELFDATANUM - && version > EV_NONE && version < EV_NUM) + && version == EV_CURRENT) return ELF_K_ELF; } @@ -68,7 +68,7 @@ determine_kind (void *buf, size_t len) /* Allocate an Elf descriptor and fill in the generic information. */ static inline Elf * __attribute__ ((unused)) -allocate_elf (int fildes, void *map_address, off_t offset, size_t maxsize, +allocate_elf (int fildes, void *map_address, int64_t offset, size_t maxsize, Elf_Cmd cmd, Elf *parent, Elf_Kind kind, size_t extra) { Elf *result = (Elf *) calloc (1, sizeof (Elf) + extra); diff --git a/libelf/elf.h b/libelf/elf.h index 75043bcb..01648bdb 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -1,5 +1,5 @@ /* This file defines standard ELF types, structures, and macros. - Copyright (C) 1995-2018 Free Software Foundation, Inc. + Copyright (C) 1995-2019 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -360,8 +360,9 @@ typedef struct #define EM_RISCV 243 /* RISC-V */ #define EM_BPF 247 /* Linux BPF -- in-kernel virtual machine */ +#define EM_CSKY 252 /* C-SKY */ -#define EM_NUM 248 +#define EM_NUM 253 /* Old spellings/synonyms. */ @@ -808,6 +809,9 @@ typedef struct #define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */ #define NT_ARM_SVE 0x405 /* ARM Scalable Vector Extension registers */ +#define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note. */ +#define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers. */ +#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode. */ /* Legal values for the note segment descriptor types for object files. */ @@ -1214,6 +1218,9 @@ typedef struct #define AT_L3_CACHESIZE 46 #define AT_L3_CACHEGEOMETRY 47 +#define AT_MINSIGSTKSZ 51 /* Stack needed for signal delivery + (AArch64). */ + /* Note section contents. Each entry in the note section begins with a header of a fixed form. */ @@ -3015,6 +3022,81 @@ enum /* Keep this the last entry. */ #define R_ARM_NUM 256 +/* C-SKY */ +#define R_CKCORE_NONE 0 /* no reloc */ +#define R_CKCORE_ADDR32 1 /* direct 32 bit (S + A) */ +#define R_CKCORE_PCRELIMM8BY4 2 /* disp ((S + A - P) >> 2) & 0xff */ +#define R_CKCORE_PCRELIMM11BY2 3 /* disp ((S + A - P) >> 1) & 0x7ff */ +#define R_CKCORE_PCREL32 5 /* 32-bit rel (S + A - P) */ +#define R_CKCORE_PCRELJSR_IMM11BY2 6 /* disp ((S + A - P) >>1) & 0x7ff */ +#define R_CKCORE_RELATIVE 9 /* 32 bit adjust program base(B + A)*/ +#define R_CKCORE_COPY 10 /* 32 bit adjust by program base */ +#define R_CKCORE_GLOB_DAT 11 /* off between got and sym (S) */ +#define R_CKCORE_JUMP_SLOT 12 /* PLT entry (S) */ +#define R_CKCORE_GOTOFF 13 /* offset to GOT (S + A - GOT) */ +#define R_CKCORE_GOTPC 14 /* PC offset to GOT (GOT + A - P) */ +#define R_CKCORE_GOT32 15 /* 32 bit GOT entry (G) */ +#define R_CKCORE_PLT32 16 /* 32 bit PLT entry (G) */ +#define R_CKCORE_ADDRGOT 17 /* GOT entry in GLOB_DAT (GOT + G) */ +#define R_CKCORE_ADDRPLT 18 /* PLT entry in GLOB_DAT (GOT + G) */ +#define R_CKCORE_PCREL_IMM26BY2 19 /* ((S + A - P) >> 1) & 0x3ffffff */ +#define R_CKCORE_PCREL_IMM16BY2 20 /* disp ((S + A - P) >> 1) & 0xffff */ +#define R_CKCORE_PCREL_IMM16BY4 21 /* disp ((S + A - P) >> 2) & 0xffff */ +#define R_CKCORE_PCREL_IMM10BY2 22 /* disp ((S + A - P) >> 1) & 0x3ff */ +#define R_CKCORE_PCREL_IMM10BY4 23 /* disp ((S + A - P) >> 2) & 0x3ff */ +#define R_CKCORE_ADDR_HI16 24 /* high & low 16 bit ADDR */ + /* ((S + A) >> 16) & 0xffff */ +#define R_CKCORE_ADDR_LO16 25 /* (S + A) & 0xffff */ +#define R_CKCORE_GOTPC_HI16 26 /* high & low 16 bit GOTPC */ + /* ((GOT + A - P) >> 16) & 0xffff */ +#define R_CKCORE_GOTPC_LO16 27 /* (GOT + A - P) & 0xffff */ +#define R_CKCORE_GOTOFF_HI16 28 /* high & low 16 bit GOTOFF */ + /* ((S + A - GOT) >> 16) & 0xffff */ +#define R_CKCORE_GOTOFF_LO16 29 /* (S + A - GOT) & 0xffff */ +#define R_CKCORE_GOT12 30 /* 12 bit disp GOT entry (G) */ +#define R_CKCORE_GOT_HI16 31 /* high & low 16 bit GOT */ + /* (G >> 16) & 0xffff */ +#define R_CKCORE_GOT_LO16 32 /* (G & 0xffff) */ +#define R_CKCORE_PLT12 33 /* 12 bit disp PLT entry (G) */ +#define R_CKCORE_PLT_HI16 34 /* high & low 16 bit PLT */ + /* (G >> 16) & 0xffff */ +#define R_CKCORE_PLT_LO16 35 /* G & 0xffff */ +#define R_CKCORE_ADDRGOT_HI16 36 /* high & low 16 bit ADDRGOT */ + /* (GOT + G * 4) & 0xffff */ +#define R_CKCORE_ADDRGOT_LO16 37 /* (GOT + G * 4) & 0xffff */ +#define R_CKCORE_ADDRPLT_HI16 38 /* high & low 16 bit ADDRPLT */ + /* ((GOT + G * 4) >> 16) & 0xFFFF */ +#define R_CKCORE_ADDRPLT_LO16 39 /* (GOT+G*4) & 0xffff */ +#define R_CKCORE_PCREL_JSR_IMM26BY2 40 /* disp ((S+A-P) >>1) & x3ffffff */ +#define R_CKCORE_TOFFSET_LO16 41 /* (S+A-BTEXT) & 0xffff */ +#define R_CKCORE_DOFFSET_LO16 42 /* (S+A-BTEXT) & 0xffff */ +#define R_CKCORE_PCREL_IMM18BY2 43 /* disp ((S+A-P) >>1) & 0x3ffff */ +#define R_CKCORE_DOFFSET_IMM18 44 /* disp (S+A-BDATA) & 0x3ffff */ +#define R_CKCORE_DOFFSET_IMM18BY2 45 /* disp ((S+A-BDATA)>>1) & 0x3ffff */ +#define R_CKCORE_DOFFSET_IMM18BY4 46 /* disp ((S+A-BDATA)>>2) & 0x3ffff */ +#define R_CKCORE_GOT_IMM18BY4 48 /* disp (G >> 2) */ +#define R_CKCORE_PLT_IMM18BY4 49 /* disp (G >> 2) */ +#define R_CKCORE_PCREL_IMM7BY4 50 /* disp ((S+A-P) >>2) & 0x7f */ +#define R_CKCORE_TLS_LE32 51 /* 32 bit offset to TLS block */ +#define R_CKCORE_TLS_IE32 52 +#define R_CKCORE_TLS_GD32 53 +#define R_CKCORE_TLS_LDM32 54 +#define R_CKCORE_TLS_LDO32 55 +#define R_CKCORE_TLS_DTPMOD32 56 +#define R_CKCORE_TLS_DTPOFF32 57 +#define R_CKCORE_TLS_TPOFF32 58 + +/* C-SKY elf header definition. */ +#define EF_CSKY_ABIMASK 0XF0000000 +#define EF_CSKY_OTHER 0X0FFF0000 +#define EF_CSKY_PROCESSOR 0X0000FFFF + +#define EF_CSKY_ABIV1 0X10000000 +#define EF_CSKY_ABIV2 0X20000000 + +/* C-SKY attributes section. */ +#define SHT_CSKY_ATTRIBUTES (SHT_LOPROC + 1) + /* IA-64 specific declarations. */ /* Processor specific flags for the Ehdr e_flags field. */ @@ -3915,6 +3997,16 @@ enum #define R_METAG_TLS_LE_HI16 60 #define R_METAG_TLS_LE_LO16 61 +/* NDS32 relocations. */ +#define R_NDS32_NONE 0 +#define R_NDS32_32_RELA 20 +#define R_NDS32_COPY 39 +#define R_NDS32_GLOB_DAT 40 +#define R_NDS32_JMP_SLOT 41 +#define R_NDS32_RELATIVE 42 +#define R_NDS32_TLS_TPOFF 102 +#define R_NDS32_TLS_DESC 119 + __END_DECLS #endif /* elf.h */ diff --git a/libelf/elf32_fsize.c b/libelf/elf32_fsize.c index fddae91e..139f4a91 100644 --- a/libelf/elf32_fsize.c +++ b/libelf/elf32_fsize.c @@ -44,7 +44,7 @@ elfw2(LIBELFBITS, fsize) (Elf_Type type, size_t count, unsigned int version) { /* We do not have differences between file and memory sizes. Better not since otherwise `mmap' would not work. */ - if (unlikely (version == EV_NONE) || unlikely (version >= EV_NUM)) + if (unlikely (version != EV_CURRENT)) { __libelf_seterrno (ELF_E_UNKNOWN_VERSION); return 0; @@ -56,13 +56,5 @@ elfw2(LIBELFBITS, fsize) (Elf_Type type, size_t count, unsigned int version) return 0; } -#if EV_NUM != 2 - return (count - * __libelf_type_sizes[version - 1][ELFW(ELFCLASS,LIBELFBITS) - 1][type]); -#else - return (count - * __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][type]); -#endif + return (count * __libelf_type_sizes[ELFW(ELFCLASS,LIBELFBITS) - 1][type]); } -#define local_strong_alias(n1, n2) strong_alias (n1, n2) -local_strong_alias (elfw2(LIBELFBITS, fsize), __elfw2(LIBELFBITS, msize)) diff --git a/libelf/elf32_newphdr.c b/libelf/elf32_newphdr.c index 4aa72137..7dd78ca9 100644 --- a/libelf/elf32_newphdr.c +++ b/libelf/elf32_newphdr.c @@ -56,6 +56,9 @@ elfw2(LIBELFBITS,newphdr) (Elf *elf, size_t count) return NULL; } + /* This check is correct, it is for sh_info, which is either + Elf32_Word or Elf64_Word, both being 32 bits. But count is size_t + so might not fit on 32bit ELF files. */ if (unlikely ((ElfW2(LIBELFBITS,Word)) count != count)) { __libelf_seterrno (ELF_E_INVALID_OPERAND); diff --git a/libelf/elf32_updatefile.c b/libelf/elf32_updatefile.c index 284bacc9..f67e6261 100644 --- a/libelf/elf32_updatefile.c +++ b/libelf/elf32_updatefile.c @@ -143,13 +143,8 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) if (unlikely (change_bo)) { /* Today there is only one version of the ELF header. */ -#if EV_NUM != 2 - xfct_t fctp; - fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR] -#endif +#undef fctp +#define fctp __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR] /* Do the real work. */ (*fctp) ((char *) elf->map_address + elf->start_offset, ehdr, @@ -189,13 +184,8 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) if (unlikely (change_bo)) { /* Today there is only one version of the ELF header. */ -#if EV_NUM != 2 - xfct_t fctp; - fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR] -#endif +#undef fctp +#define fctp __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR] /* Do the real work. */ (*fctp) (elf->map_address + elf->start_offset + ehdr->e_phoff, @@ -238,12 +228,8 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) + ehdr->e_shoff); char *const shdr_end = shdr_start + shnum * ehdr->e_shentsize; -#if EV_NUM != 2 - xfct_t shdr_fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR]; -#else -# undef shdr_fctp -# define shdr_fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR] -#endif +#undef shdr_fctp +#define shdr_fctp __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR] #define shdr_dest ((ElfW2(LIBELFBITS,Shdr) *) shdr_start) /* Get all sections into the array and sort them. */ @@ -358,13 +344,8 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) && dl->data.d.d_size != 0 && dl->data.d.d_type != ELF_T_BYTE)) { -#if EV_NUM != 2 - xfct_t fctp; - fctp = __elf_xfctstom[__libelf_version - 1][dl->data.d.d_version - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type] -#endif +#undef fctp +#define fctp __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type] size_t align; align = __libelf_type_align (ELFW(ELFCLASS,LIBELFBITS), @@ -379,15 +360,30 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) else { /* We have to do the conversion on properly - aligned memory first. */ + aligned memory first. align is a power of 2, + but posix_memalign only works for alignments + which are a multiple of sizeof (void *). + So use normal malloc for smaller alignments. */ size_t size = dl->data.d.d_size; - char *converted = aligned_alloc (align, size); + void *converted; + if (align < sizeof (void *)) + converted = malloc (size); + else + { + int res; + res = posix_memalign (&converted, align, size); + if (res != 0) + converted = NULL; + } + if (converted == NULL) { + free (scns); __libelf_seterrno (ELF_E_NOMEM); return 1; } - (*fctp) (converted, dl->data.d.d_buf, size, 1); + + (*fctp) (converted, dl->data.d.d_buf, size, 1); /* And then write it to the mmapped file. */ memcpy (last_position, converted, size); @@ -502,7 +498,7 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) /* Helper function to write out fill bytes. */ static int -fill (int fd, off_t pos, size_t len, char *fillbuf, size_t *filledp) +fill (int fd, int64_t pos, size_t len, char *fillbuf, size_t *filledp) { size_t filled = *filledp; size_t fill_len = MIN (len, FILLBUFSIZE); @@ -559,13 +555,8 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) if (unlikely (change_bo)) { /* Today there is only one version of the ELF header. */ -#if EV_NUM != 2 - xfct_t fctp; - fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR] -#endif +#undef fctp +#define fctp __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR] /* Write the converted ELF header in a temporary buffer. */ (*fctp) (&tmp_ehdr, ehdr, sizeof (ElfW2(LIBELFBITS,Ehdr)), 1); @@ -618,13 +609,8 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) if (unlikely (change_bo)) { /* Today there is only one version of the ELF header. */ -#if EV_NUM != 2 - xfct_t fctp; - fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR] -#endif +#undef fctp +#define fctp __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR] /* Allocate sufficient memory. */ tmp_phdr = (ElfW2(LIBELFBITS,Phdr) *) @@ -665,7 +651,7 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) /* From now on we have to keep track of the last position to eventually fill the gaps with the prescribed fill byte. */ - off_t last_offset; + int64_t last_offset; if (elf->state.ELFW(elf,LIBELFBITS).phdr == NULL) last_offset = elf_typesize (LIBELFBITS, ELF_T_EHDR, 1); else @@ -678,13 +664,9 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) + sizeof (ElfW2(LIBELFBITS,Shdr))))) return 1; - off_t shdr_offset = elf->start_offset + ehdr->e_shoff; -#if EV_NUM != 2 - xfct_t shdr_fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR]; -#else -# undef shdr_fctp -# define shdr_fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR] -#endif + int64_t shdr_offset = elf->start_offset + ehdr->e_shoff; +#undef shdr_fctp +#define shdr_fctp __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR] ElfW2(LIBELFBITS,Shdr) *shdr_data; ElfW2(LIBELFBITS,Shdr) *shdr_data_mem = NULL; @@ -730,7 +712,7 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) if (shdr->sh_type == SHT_NOBITS) goto next; - off_t scn_start = elf->start_offset + shdr->sh_offset; + int64_t scn_start = elf->start_offset + shdr->sh_offset; Elf_Data_List *dl = &scn->data_list; bool scn_changed = false; @@ -769,13 +751,8 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) if (unlikely (change_bo)) { -#if EV_NUM != 2 - xfct_t fctp; - fctp = __elf_xfctstom[__libelf_version - 1][dl->data.d.d_version - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type] -#endif +#undef fctp +#define fctp __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type] buf = tmpbuf; if (dl->data.d.d_size > MAX_TMPBUF) diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c index 3e9ef61b..5f3cdbf6 100644 --- a/libelf/elf32_updatenull.c +++ b/libelf/elf32_updatenull.c @@ -45,6 +45,10 @@ # define LIBELFBITS 32 #endif +/* Some fields contain 32/64 sizes. We cannot use Elf32/64_Word for those, + since those are both 32bits. Elf32/64_Xword is always 64bits. */ +#define Elf32_SizeWord Elf32_Word +#define Elf64_SizeWord Elf64_Xword static int @@ -89,7 +93,7 @@ ELFW(default_ehdr,LIBELFBITS) (Elf *elf, ElfW2(LIBELFBITS,Ehdr) *ehdr, ehdr->e_version = EV_CURRENT; elf->state.ELFW(elf,LIBELFBITS).ehdr_flags |= ELF_F_DIRTY; } - else if (unlikely (ehdr->e_version >= EV_NUM)) + else if (unlikely (ehdr->e_version != EV_CURRENT)) { __libelf_seterrno (ELF_E_UNKNOWN_VERSION); return 1; @@ -122,7 +126,7 @@ ELFW(default_ehdr,LIBELFBITS) (Elf *elf, ElfW2(LIBELFBITS,Ehdr) *ehdr, } -off_t +int64_t internal_function __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) { @@ -137,7 +141,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) return -1; /* At least the ELF header is there. */ - off_t size = elf_typesize (LIBELFBITS, ELF_T_EHDR, 1); + ElfW2(LIBELFBITS,SizeWord) size = elf_typesize (LIBELFBITS, ELF_T_EHDR, 1); /* Set the program header position. */ if (elf->state.ELFW(elf,LIBELFBITS).phdr == NULL) @@ -152,7 +156,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) { /* The user is supposed to fill out e_phoff. Use it and e_phnum to determine the maximum extend. */ - size = MAX ((size_t) size, + size = MAX (size, ehdr->e_phoff + elf_typesize (LIBELFBITS, ELF_T_PHDR, phnum)); } @@ -205,11 +209,11 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) { Elf_Scn *scn = &list->data[cnt]; ElfW2(LIBELFBITS,Shdr) *shdr = scn->shdr.ELFW(e,LIBELFBITS); - off_t offset = 0; + int64_t offset = 0; assert (shdr != NULL); - ElfW2(LIBELFBITS,Word) sh_entsize = shdr->sh_entsize; - ElfW2(LIBELFBITS,Word) sh_align = shdr->sh_addralign ?: 1; + ElfW2(LIBELFBITS,SizeWord) sh_entsize = shdr->sh_entsize; + ElfW2(LIBELFBITS,SizeWord) sh_align = shdr->sh_addralign ?: 1; if (unlikely (! powerof2 (sh_align))) { __libelf_seterrno (ELF_E_INVALID_ALIGN); @@ -280,8 +284,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) && scn->rawdata.d.d_buf != NULL) data = &scn->rawdata.d; - if (unlikely (data->d_version == EV_NONE) - || unlikely (data->d_version >= EV_NUM)) + if (unlikely (data->d_version != EV_CURRENT)) { __libelf_seterrno (ELF_E_UNKNOWN_VERSION); return -1; @@ -300,8 +303,8 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) /* The user specified the offset and the size. All we have to do is check whether this block fits in the size specified for the section. */ - if (unlikely ((GElf_Word) (data->d_off - + data->d_size) + if (unlikely ((ElfW2(LIBELFBITS,SizeWord)) + (data->d_off + data->d_size) > shdr->sh_size)) { __libelf_seterrno (ELF_E_SECTION_TOO_SMALL); @@ -330,7 +333,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) if (elf->flags & ELF_F_LAYOUT) { - size = MAX ((GElf_Word) size, + size = MAX (size, (shdr->sh_type != SHT_NOBITS ? shdr->sh_offset + shdr->sh_size : 0)); @@ -354,8 +357,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) size = (size + sh_align - 1) & ~(sh_align - 1); int offset_changed = 0; - update_if_changed (shdr->sh_offset, (GElf_Word) size, - offset_changed); + update_if_changed (shdr->sh_offset, size, offset_changed); changed |= offset_changed; if (offset_changed && scn->data_list_rear == NULL) @@ -367,12 +369,16 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) } /* See whether the section size is correct. */ - update_if_changed (shdr->sh_size, (GElf_Word) offset, - changed); + int size_changed = 0; + update_if_changed (shdr->sh_size, + (ElfW2(LIBELFBITS,SizeWord)) offset, + size_changed); + changed |= size_changed; if (shdr->sh_type != SHT_NOBITS) size += offset; + scn->shdr_flags |= (offset_changed | size_changed); scn->flags |= changed; } @@ -382,7 +388,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) && (elf->flags & ELF_F_PERMISSIVE) == 0) { /* For compressed sections check the uncompressed size. */ - ElfW2(LIBELFBITS,Word) sh_size; + ElfW2(LIBELFBITS,SizeWord) sh_size; if ((shdr->sh_flags & SHF_COMPRESSED) == 0) sh_size = shdr->sh_size; else @@ -416,7 +422,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) /* The user is supposed to fill out e_shoff. Use it and e_shnum (or sh_size of the dummy, first section header) to determine the maximum extend. */ - size = MAX ((GElf_Word) size, + size = MAX (size, (ehdr->e_shoff + (elf_typesize (LIBELFBITS, ELF_T_SHDR, shnum)))); } @@ -430,7 +436,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) #define SHDR_ALIGN sizeof (ElfW2(LIBELFBITS,Off)) size = (size + SHDR_ALIGN - 1) & ~(SHDR_ALIGN - 1); - update_if_changed (ehdr->e_shoff, (GElf_Word) size, elf->flags); + update_if_changed (ehdr->e_shoff, size, elf->flags); /* Account for the section header size. */ size += elf_typesize (LIBELFBITS, ELF_T_SHDR, shnum); diff --git a/libelf/elf32_xlatetof.c b/libelf/elf32_xlatetof.c index ac4eaf40..082d833f 100644 --- a/libelf/elf32_xlatetof.c +++ b/libelf/elf32_xlatetof.c @@ -50,11 +50,7 @@ elfw2(LIBELFBITS, xlatetof) (Elf_Data *dest, const Elf_Data *src, type. This means, whether there is an integer number of records. Note that for this implementation the memory and file size of the data types are identical. */ -#if EV_NUM != 2 - size_t recsize = __libelf_type_sizes[src->d_version - 1][ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; -#else - size_t recsize = __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; -#endif + size_t recsize = __libelf_type_sizes[ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; if (src->d_size % recsize != 0) { @@ -97,15 +93,7 @@ elfw2(LIBELFBITS, xlatetof) (Elf_Data *dest, const Elf_Data *src, else { xfct_t fctp; - - /* Get a pointer to the transformation functions. The `#ifdef' is - a small optimization since we don't anticipate another ELF - version and so would waste "precious" code. */ -#if EV_NUM != 2 - fctp = __elf_xfctstom[dest->d_version - 1][src->d_version - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; -#else - fctp = __elf_xfctstom[0][0][ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; -#endif + fctp = __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; /* Do the real work. */ (*fctp) (dest->d_buf, src->d_buf, src->d_size, 1); diff --git a/libelf/elf32_xlatetom.c b/libelf/elf32_xlatetom.c index 3b94cac7..cb0bb8d5 100644 --- a/libelf/elf32_xlatetom.c +++ b/libelf/elf32_xlatetom.c @@ -50,11 +50,7 @@ elfw2(LIBELFBITS, xlatetom) (Elf_Data *dest, const Elf_Data *src, type. This means, whether there is an integer number of records. Note that for this implementation the memory and file size of the data types are identical. */ -#if EV_NUM != 2 - size_t recsize = __libelf_type_sizes[src->d_version - 1][ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; -#else - size_t recsize = __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; -#endif + size_t recsize = __libelf_type_sizes[ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; /* We shouldn't require integer number of records when processing @@ -102,15 +98,7 @@ elfw2(LIBELFBITS, xlatetom) (Elf_Data *dest, const Elf_Data *src, else { xfct_t fctp; - - /* Get a pointer to the transformation functions. The `#ifdef' is - a small optimization since we don't anticipate another ELF - version and so would waste "precious" code. */ -#if EV_NUM != 2 - fctp = __elf_xfctstom[src->d_version - 1][dest->d_version - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; -#else - fctp = __elf_xfctstom[0][0][ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; -#endif + fctp = __elf_xfctstom[ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; /* Do the real work. */ (*fctp) (dest->d_buf, src->d_buf, src->d_size, 0); diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c index fde14c61..8107a103 100644 --- a/libelf/elf_begin.c +++ b/libelf/elf_begin.c @@ -71,8 +71,8 @@ file_read_ar (int fildes, void *map_address, off_t offset, size_t maxsize, static size_t -get_shnum (void *map_address, unsigned char *e_ident, int fildes, off_t offset, - size_t maxsize) +get_shnum (void *map_address, unsigned char *e_ident, int fildes, + int64_t offset, size_t maxsize) { size_t result; union @@ -243,6 +243,9 @@ get_shnum (void *map_address, unsigned char *e_ident, int fildes, off_t offset, CONVERT (size); } + /* Although sh_size is an Elf64_Xword and can contain a 64bit + value, we only expect an 32bit value max. GElf_Word is + 32bit unsigned. */ if (size > ~((GElf_Word) 0)) { /* Invalid value, it is too large. */ @@ -266,7 +269,7 @@ get_shnum (void *map_address, unsigned char *e_ident, int fildes, off_t offset, /* Create descriptor for ELF file in memory. */ static Elf * file_read_elf (int fildes, void *map_address, unsigned char *e_ident, - off_t offset, size_t maxsize, Elf_Cmd cmd, Elf *parent) + int64_t offset, size_t maxsize, Elf_Cmd cmd, Elf *parent) { /* Verify the binary is of the class we can handle. */ if (unlikely ((e_ident[EI_CLASS] != ELFCLASS32 @@ -531,7 +534,7 @@ file_read_elf (int fildes, void *map_address, unsigned char *e_ident, Elf * internal_function -__libelf_read_mmaped_file (int fildes, void *map_address, off_t offset, +__libelf_read_mmaped_file (int fildes, void *map_address, int64_t offset, size_t maxsize, Elf_Cmd cmd, Elf *parent) { /* We have to find out what kind of file this is. We handle ELF @@ -564,7 +567,7 @@ __libelf_read_mmaped_file (int fildes, void *map_address, off_t offset, static Elf * -read_unmmaped_file (int fildes, off_t offset, size_t maxsize, Elf_Cmd cmd, +read_unmmaped_file (int fildes, int64_t offset, size_t maxsize, Elf_Cmd cmd, Elf *parent) { /* We have to find out what kind of file this is. We handle ELF @@ -626,7 +629,7 @@ read_unmmaped_file (int fildes, off_t offset, size_t maxsize, Elf_Cmd cmd, /* Open a file for reading. If possible we will try to mmap() the file. */ static struct Elf * -read_file (int fildes, off_t offset, size_t maxsize, +read_file (int fildes, int64_t offset, size_t maxsize, Elf_Cmd cmd, Elf *parent) { void *map_address = NULL; @@ -1108,7 +1111,7 @@ elf_begin (int fildes, Elf_Cmd cmd, Elf *ref) { Elf *retval; - if (unlikely (! __libelf_version_initialized)) + if (unlikely (__libelf_version != EV_CURRENT)) { /* Version wasn't set so far. */ __libelf_seterrno (ELF_E_NO_VERSION); diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c index be9eeaba..244467b5 100644 --- a/libelf/elf_compress.c +++ b/libelf/elf_compress.c @@ -44,17 +44,17 @@ /* Cleanup and return result. Don't leak memory. */ static void * do_deflate_cleanup (void *result, z_stream *z, void *out_buf, - int ei_data, Elf_Data *cdatap) + Elf_Data *cdatap) { deflateEnd (z); free (out_buf); - if (ei_data != MY_ELFDATA) + if (cdatap != NULL) free (cdatap->d_buf); return result; } -#define deflate_cleanup(result) \ - do_deflate_cleanup(result, &z, out_buf, ei_data, &cdata) +#define deflate_cleanup(result, cdata) \ + do_deflate_cleanup(result, &z, out_buf, cdata) /* Given a section, uses the (in-memory) Elf_Data to extract the original data size (including the given header size) and data @@ -127,7 +127,8 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, { /* Convert to raw if different endianess. */ cdata = *data; - if (ei_data != MY_ELFDATA) + bool convert = ei_data != MY_ELFDATA && data->d_size > 0; + if (convert) { /* Don't do this conversion in place, we might want to keep the original data around, caller decides. */ @@ -135,10 +136,10 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, if (cdata.d_buf == NULL) { __libelf_seterrno (ELF_E_NOMEM); - return deflate_cleanup (NULL); + return deflate_cleanup (NULL, NULL); } if (gelf_xlatetof (scn->elf, &cdata, data, ei_data) == NULL) - return deflate_cleanup (NULL); + return deflate_cleanup (NULL, &cdata); } z.avail_in = cdata.d_size; @@ -164,7 +165,7 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, if (zrc == Z_STREAM_ERROR) { __libelf_seterrno (ELF_E_COMPRESS_ERROR); - return deflate_cleanup (NULL); + return deflate_cleanup (NULL, convert ? &cdata : NULL); } used += (out_size - used) - z.avail_out; @@ -172,7 +173,7 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, compression forced and we are using more compressed data than original data. */ if (!force && flush == Z_FINISH && used >= *orig_size) - return deflate_cleanup ((void *) -1); + return deflate_cleanup ((void *) -1, convert ? &cdata : NULL); if (z.avail_out == 0) { @@ -180,7 +181,7 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, if (bigger == NULL) { __libelf_seterrno (ELF_E_NOMEM); - return deflate_cleanup (NULL); + return deflate_cleanup (NULL, convert ? &cdata : NULL); } out_buf = bigger; out_size += block; @@ -188,7 +189,7 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, } while (z.avail_out == 0); /* Need more output buffer. */ - if (ei_data != MY_ELFDATA) + if (convert) { free (cdata.d_buf); cdata.d_buf = NULL; @@ -200,7 +201,7 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, if (zrc != Z_OK) { __libelf_seterrno (ELF_E_COMPRESS_ERROR); - return deflate_cleanup (NULL); + return deflate_cleanup (NULL, NULL); } *new_size = used; @@ -220,7 +221,11 @@ __libelf_decompress (void *buf_in, size_t size_in, size_t size_out) return NULL; } - void *buf_out = malloc (size_out); + /* Malloc might return NULL when requestion zero size. This is highly + unlikely, it would only happen when the compression was forced. + But we do need a non-NULL buffer to return and set as result. + Just make sure to always allocate at least 1 byte. */ + void *buf_out = malloc (size_out ?: 1); if (unlikely (buf_out == NULL)) { __libelf_seterrno (ELF_E_NOMEM); @@ -308,7 +313,7 @@ __libelf_reset_rawdata (Elf_Scn *scn, void *buf, size_t size, size_t align, { /* This is the new raw data, replace and possibly free old data. */ scn->rawdata.d.d_off = 0; - scn->rawdata.d.d_version = __libelf_version; + scn->rawdata.d.d_version = EV_CURRENT; scn->rawdata.d.d_buf = buf; scn->rawdata.d.d_size = size; scn->rawdata.d.d_align = align; diff --git a/libelf/elf_getaroff.c b/libelf/elf_getaroff.c index 5b59203f..5c102ad6 100644 --- a/libelf/elf_getaroff.c +++ b/libelf/elf_getaroff.c @@ -38,7 +38,7 @@ #include "libelfP.h" -off_t +int64_t elf_getaroff (Elf *elf) { /* Be gratious, the specs demand it. */ diff --git a/libelf/elf_getbase.c b/libelf/elf_getbase.c index 8ec5f87e..4890d336 100644 --- a/libelf/elf_getbase.c +++ b/libelf/elf_getbase.c @@ -37,8 +37,8 @@ #include "libelfP.h" -off_t +int64_t elf_getbase (Elf *elf) { - return elf == NULL ? (off_t) -1 : elf->start_offset; + return elf == NULL ? (int64_t) -1 : elf->start_offset; } diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index 639a798e..40fe1694 100644 --- a/libelf/elf_getdata.c +++ b/libelf/elf_getdata.c @@ -50,10 +50,8 @@ : 0)) /* Associate section types with libelf types. */ -static const Elf_Type shtype_map[EV_NUM - 1][TYPEIDX (SHT_HISUNW) + 1] = +static const Elf_Type shtype_map[TYPEIDX (SHT_HISUNW) + 1] = { - [EV_CURRENT - 1] = - { [SHT_SYMTAB] = ELF_T_SYM, [SHT_RELA] = ELF_T_RELA, [SHT_HASH] = ELF_T_WORD, @@ -73,11 +71,10 @@ static const Elf_Type shtype_map[EV_NUM - 1][TYPEIDX (SHT_HISUNW) + 1] = [TYPEIDX (SHT_SUNW_move)] = ELF_T_MOVE, [TYPEIDX (SHT_GNU_LIBLIST)] = ELF_T_LIB, [TYPEIDX (SHT_GNU_HASH)] = ELF_T_GNUHASH, - } }; /* Associate libelf types with their internal alignment requirements. */ -const uint_fast8_t __libelf_type_aligns[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] = +const uint_fast8_t __libelf_type_aligns[ELFCLASSNUM - 1][ELF_T_NUM] = { # define TYPE_ALIGNS(Bits) \ { \ @@ -108,11 +105,8 @@ const uint_fast8_t __libelf_type_aligns[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] [ELF_T_CHDR] = __alignof__ (ElfW2(Bits,Chdr)), \ [ELF_T_NHDR8] = 8 /* Special case for GNU Property note. */ \ } - [EV_CURRENT - 1] = - { [ELFCLASS32 - 1] = TYPE_ALIGNS (32), [ELFCLASS64 - 1] = TYPE_ALIGNS (64), - } # undef TYPE_ALIGNS }; @@ -131,7 +125,7 @@ __libelf_data_type (Elf *elf, int sh_type, GElf_Xword align) } else { - Elf_Type t = shtype_map[LIBELF_EV_IDX][TYPEIDX (sh_type)]; + Elf_Type t = shtype_map[TYPEIDX (sh_type)]; /* Special case for GNU Property notes. */ if (t == ELF_T_NHDR && align == 8) t = ELF_T_NHDR8; @@ -141,7 +135,7 @@ __libelf_data_type (Elf *elf, int sh_type, GElf_Xword align) /* Convert the data in the current section. */ static void -convert_data (Elf_Scn *scn, int version __attribute__ ((unused)), int eclass, +convert_data (Elf_Scn *scn, int eclass, int data, size_t size, Elf_Type type) { const size_t align = __libelf_type_align (eclass, type); @@ -195,11 +189,7 @@ convert_data (Elf_Scn *scn, int version __attribute__ ((unused)), int eclass, } /* Get the conversion function. */ -#if EV_NUM != 2 - fp = __elf_xfctstom[version - 1][__libelf_version - 1][eclass - 1][type]; -#else - fp = __elf_xfctstom[0][0][eclass - 1][type]; -#endif + fp = __elf_xfctstom[eclass - 1][type]; fp (scn->data_base, rawdata_source, size, 0); @@ -285,14 +275,14 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn) } else { - Elf_Type t = shtype_map[LIBELF_EV_IDX][TYPEIDX (type)]; + Elf_Type t = shtype_map[TYPEIDX (type)]; if (t == ELF_T_NHDR && align == 8) t = ELF_T_NHDR8; if (t == ELF_T_VDEF || t == ELF_T_NHDR || t == ELF_T_NHDR8 || (t == ELF_T_GNUHASH && elf->class == ELFCLASS64)) entsize = 1; else - entsize = __libelf_type_sizes[LIBELF_EV_IDX][elf->class - 1][t]; + entsize = __libelf_type_sizes[elf->class - 1][t]; } /* We assume it is an array of bytes if it is none of the structured @@ -444,7 +434,7 @@ __libelf_set_data_list_rdlock (Elf_Scn *scn, int wrlocked) } /* Convert according to the version and the type. */ - convert_data (scn, __libelf_version, elf->class, + convert_data (scn, elf->class, (elf->class == ELFCLASS32 || (offsetof (struct Elf, state.elf32.ehdr) == offsetof (struct Elf, state.elf64.ehdr)) diff --git a/libelf/elf_getdata_rawchunk.c b/libelf/elf_getdata_rawchunk.c index d0c0b75f..1072f7de 100644 --- a/libelf/elf_getdata_rawchunk.c +++ b/libelf/elf_getdata_rawchunk.c @@ -41,7 +41,7 @@ #include "common.h" Elf_Data * -elf_getdata_rawchunk (Elf *elf, off_t offset, size_t size, Elf_Type type) +elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) { if (unlikely (elf == NULL)) return NULL; @@ -151,8 +151,7 @@ elf_getdata_rawchunk (Elf *elf, off_t offset, size_t size, Elf_Type type) } /* Call the conversion function. */ - (*__elf_xfctstom[LIBELF_EV_IDX][LIBELF_EV_IDX][elf->class - 1][type]) - (buffer, rawchunk, size, 0); + (*__elf_xfctstom[elf->class - 1][type])(buffer, rawchunk, size, 0); } /* Allocate the dummy container to point at this buffer. */ @@ -171,7 +170,7 @@ elf_getdata_rawchunk (Elf *elf, off_t offset, size_t size, Elf_Type type) chunk->data.d.d_size = size; chunk->data.d.d_type = type; chunk->data.d.d_align = align; - chunk->data.d.d_version = __libelf_version; + chunk->data.d.d_version = EV_CURRENT; rwlock_unlock (elf->lock); rwlock_wrlock (elf->lock); diff --git a/libelf/elf_newdata.c b/libelf/elf_newdata.c index f6609a80..896f22cd 100644 --- a/libelf/elf_newdata.c +++ b/libelf/elf_newdata.c @@ -117,7 +117,7 @@ elf_newdata (Elf_Scn *scn) } /* Set the predefined values. */ - result->data.d.d_version = __libelf_version; + result->data.d.d_version = EV_CURRENT; result->data.s = scn; diff --git a/libelf/elf_update.c b/libelf/elf_update.c index 36997c2b..9b8867ce 100644 --- a/libelf/elf_update.c +++ b/libelf/elf_update.c @@ -40,8 +40,8 @@ #include "libelfP.h" -static off_t -write_file (Elf *elf, off_t size, int change_bo, size_t shnum) +static int64_t +write_file (Elf *elf, int64_t size, int change_bo, size_t shnum) { int class = elf->class; @@ -164,11 +164,11 @@ write_file (Elf *elf, off_t size, int change_bo, size_t shnum) } -off_t +int64_t elf_update (Elf *elf, Elf_Cmd cmd) { size_t shnum; - off_t size; + int64_t size; int change_bo = 0; if (cmd != ELF_C_NULL diff --git a/libelf/elf_version.c b/libelf/elf_version.c index 7c336ff9..6ec534ab 100644 --- a/libelf/elf_version.c +++ b/libelf/elf_version.c @@ -34,32 +34,25 @@ #include <libelfP.h> -/* Is the version initialized? */ -int __libelf_version_initialized; - -/* Currently selected version. */ -unsigned int __libelf_version = EV_CURRENT; - +/* Currently selected version. Should be EV_CURRENT. + Will be EV_NONE if elf_version () has not been called yet. */ +unsigned int __libelf_version = EV_NONE; unsigned int elf_version (unsigned int version) { if (version == EV_NONE) - return __libelf_version; + return EV_CURRENT; - if (likely (version < EV_NUM)) + if (likely (version == EV_CURRENT)) { /* Phew, we know this version. */ - unsigned int last_version = __libelf_version; - - /* Store the new version. */ - __libelf_version = version; /* Signal that the version is now initialized. */ - __libelf_version_initialized = 1; + __libelf_version = EV_CURRENT; - /* And return the last version. */ - return last_version; + /* And return the last (or initial) version. */ + return EV_CURRENT; } /* We cannot handle this version. */ diff --git a/libelf/gelf_fsize.c b/libelf/gelf_fsize.c index d04ec5d5..493d7916 100644 --- a/libelf/gelf_fsize.c +++ b/libelf/gelf_fsize.c @@ -38,10 +38,8 @@ /* These are the sizes for all the known types. */ -const size_t __libelf_type_sizes[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] = +const size_t __libelf_type_sizes[ELFCLASSNUM - 1][ELF_T_NUM] = { - /* We have no entry for EV_NONE since we have to set an error. */ - [EV_CURRENT - 1] = { [ELFCLASS32 - 1] = { #define TYPE_SIZES(LIBELFBITS) \ [ELF_T_ADDR] = ELFW2(LIBELFBITS, FSZ_ADDR), \ @@ -77,7 +75,6 @@ const size_t __libelf_type_sizes[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] = [ELFCLASS64 - 1] = { TYPE_SIZES (64) } - } }; @@ -89,7 +86,7 @@ gelf_fsize (Elf *elf, Elf_Type type, size_t count, unsigned int version) if (elf == NULL) return 0; - if (version == EV_NONE || version >= EV_NUM) + if (version != EV_CURRENT) { __libelf_seterrno (ELF_E_UNKNOWN_VERSION); return 0; @@ -101,10 +98,6 @@ gelf_fsize (Elf *elf, Elf_Type type, size_t count, unsigned int version) return 0; } -#if EV_NUM != 2 - return count * __libelf_type_sizes[version - 1][elf->class - 1][type]; -#else - return count * __libelf_type_sizes[0][elf->class - 1][type]; -#endif + return count * __libelf_type_sizes[elf->class - 1][type]; } INTDEF(gelf_fsize) diff --git a/libelf/gelf_getnote.c b/libelf/gelf_getnote.c index 6d33b355..0f7b9d68 100644 --- a/libelf/gelf_getnote.c +++ b/libelf/gelf_getnote.c @@ -80,11 +80,12 @@ gelf_getnote (Elf_Data *data, size_t offset, GElf_Nhdr *result, the offset, after adding the namesz, and include padding in descsz to get to the end. */ *name_offset = offset; - offset += n->n_namesz; - if (offset > data->d_size) + if (n->n_namesz > data->d_size + || offset > data->d_size - n->n_namesz) offset = 0; else { + offset += n->n_namesz; /* Include padding. Check below for overflow. */ GElf_Word descsz = (data->d_type == ELF_T_NHDR8 ? NOTE_ALIGN8 (n->n_descsz) diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c index b5d6ef3d..b9e7fd65 100644 --- a/libelf/gelf_xlate.c +++ b/libelf/gelf_xlate.c @@ -170,10 +170,8 @@ union unaligned /* Now the externally visible table with the function pointers. */ -const xfct_t __elf_xfctstom[EV_NUM - 1][EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] = +const xfct_t __elf_xfctstom[ELFCLASSNUM - 1][ELF_T_NUM] = { - [EV_CURRENT - 1] = { - [EV_CURRENT - 1] = { [ELFCLASS32 - 1] = { #define define_xfcts(Bits) \ [ELF_T_BYTE] = elf_cvt_Byte, \ @@ -209,10 +207,4 @@ const xfct_t __elf_xfctstom[EV_NUM - 1][EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] define_xfcts (64), [ELF_T_GNUHASH] = elf_cvt_gnuhash } - } - } }; -/* For now we only handle the case where the memory representation is the - same as the file representation. Should this change we have to define - separate functions. For now reuse them. */ -strong_alias (__elf_xfctstom, __elf_xfctstof) diff --git a/libelf/libelfP.h b/libelf/libelfP.h index 9f3e8e9d..b55d5c48 100644 --- a/libelf/libelfP.h +++ b/libelf/libelfP.h @@ -296,7 +296,7 @@ struct Elf int fildes; /* Offset in the archive this file starts or zero. */ - off_t start_offset; + int64_t start_offset; /* Size of the file in the archive or the entire file size, or ~0 for an (yet) unknown size. */ @@ -350,7 +350,7 @@ struct Elf int ehdr_flags; /* Flags (dirty) for ELF header. */ int phdr_flags; /* Flags (dirty|malloc) for program header. */ int shdr_malloced; /* Nonzero if shdr array was allocated. */ - off_t sizestr_offset; /* Offset of the size string in the parent + int64_t sizestr_offset; /* Offset of the size string in the parent if this is an archive member. */ Elf32_Ehdr ehdr_mem; /* Memory used for ELF header when not mmaped. */ @@ -375,7 +375,7 @@ struct Elf int ehdr_flags; /* Flags (dirty) for ELF header. */ int phdr_flags; /* Flags (dirty|malloc) for program header. */ int shdr_malloced; /* Nonzero if shdr array was allocated. */ - off_t sizestr_offset; /* Offset of the size string in the parent + int64_t sizestr_offset; /* Offset of the size string in the parent if this is an archive member. */ Elf64_Ehdr ehdr_mem; /* Memory used for ELF header when not mmaped. */ @@ -392,7 +392,7 @@ struct Elf char *long_names; /* If no index is available but long names are used this elements points to the data.*/ size_t long_names_len; /* Length of the long name table. */ - off_t offset; /* Offset in file we are currently at. + int64_t offset; /* Offset in file we are currently at. elf_next() advances this to the next member of the archive. */ Elf_Arhdr elf_ar_hdr; /* Structure returned by 'elf_getarhdr'. */ @@ -411,43 +411,30 @@ struct Elf typedef void (*xfct_t) (void *, const void *, size_t, int); /* The table with the function pointers. */ -extern const xfct_t __elf_xfctstom[EV_NUM - 1][EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] attribute_hidden; -extern const xfct_t __elf_xfctstof[EV_NUM - 1][EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] attribute_hidden; +extern const xfct_t __elf_xfctstom[ELFCLASSNUM - 1][ELF_T_NUM] + attribute_hidden; /* Array with sizes of the external types indexed by ELF version, binary class, and type. */ -extern const size_t __libelf_type_sizes[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] attribute_hidden; +extern const size_t __libelf_type_sizes[ELFCLASSNUM - 1][ELF_T_NUM] + attribute_hidden; /* We often have to access the size for a type in the current version. */ -#if EV_NUM != 2 -# define elf_typesize(class,type,n) \ - elfw2(class,fsize) (type, n, __libelf_version) -#else # define elf_typesize(class,type,n) \ - (__libelf_type_sizes[EV_CURRENT - 1][ELFW(ELFCLASS,class) - 1][type] * n) -#endif - -/* Currently selected version of the ELF specification. */ -extern unsigned int __libelf_version attribute_hidden; + (__libelf_type_sizes[ELFW(ELFCLASS,class) - 1][type] * n) /* The byte value used for filling gaps. */ extern int __libelf_fill_byte attribute_hidden; -/* Nonzero if the version was set. */ -extern int __libelf_version_initialized attribute_hidden; - -/* Index for __libelf_type_sizes et al. */ -#if EV_NUM == 2 -# define LIBELF_EV_IDX 0 -#else -# define LIBELF_EV_IDX (__libelf_version - 1) -#endif +/* EV_CURRENT if the version was set, EV_NONE otherwise. */ +extern unsigned int __libelf_version attribute_hidden; -/* Array with alignment requirements of the internal types indexed by ELF - version, binary class, and type. */ -extern const uint_fast8_t __libelf_type_aligns[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] attribute_hidden; +/* Array with alignment requirements of the internal types indexed by + binary class, and type. */ +extern const uint_fast8_t __libelf_type_aligns[ELFCLASSNUM - 1][ELF_T_NUM] + attribute_hidden; # define __libelf_type_align(class, type) \ - (__libelf_type_aligns[LIBELF_EV_IDX][class - 1][type] ?: 1) + (__libelf_type_aligns[class - 1][type] ?: 1) /* Given an Elf handle and a section type returns the Elf_Data d_type. Should not be called when SHF_COMPRESSED is set, the d_type should @@ -455,20 +442,10 @@ extern const uint_fast8_t __libelf_type_aligns[EV_NUM - 1][ELFCLASSNUM - 1][ELF_ extern Elf_Type __libelf_data_type (Elf *elf, int sh_type, GElf_Xword align) internal_function; -/* The libelf API does not have such a function but it is still useful. - Get the memory size for the given type. - - These functions cannot be marked internal since they are aliases - of the export elfXX_fsize functions.*/ -extern size_t __elf32_msize (Elf_Type __type, size_t __count, - unsigned int __version) __const_attribute__; -extern size_t __elf64_msize (Elf_Type __type, size_t __count, - unsigned int __version) __const_attribute__; - /* Create Elf descriptor from memory image. */ extern Elf *__libelf_read_mmaped_file (int fildes, void *map_address, - off_t offset, size_t maxsize, + int64_t offset, size_t maxsize, Elf_Cmd cmd, Elf *parent) internal_function; @@ -490,10 +467,10 @@ extern int __libelf_set_rawdata_wrlock (Elf_Scn *scn) internal_function; /* Helper functions for elf_update. */ -extern off_t __elf32_updatenull_wrlock (Elf *elf, int *change_bop, - size_t shnum) internal_function; -extern off_t __elf64_updatenull_wrlock (Elf *elf, int *change_bop, - size_t shnum) internal_function; +extern int64_t __elf32_updatenull_wrlock (Elf *elf, int *change_bop, + size_t shnum) internal_function; +extern int64_t __elf64_updatenull_wrlock (Elf *elf, int *change_bop, + size_t shnum) internal_function; extern int __elf32_updatemmap (Elf *elf, int change_bo, size_t shnum) internal_function; diff --git a/libelf/nlist.c b/libelf/nlist.c index c7b32fdb..8593c1de 100644 --- a/libelf/nlist.c +++ b/libelf/nlist.c @@ -80,9 +80,8 @@ nlist (const char *filename, struct nlist *nl) /* For compatibility reasons (`nlist' existed before ELF and libelf) we don't expect the caller to set the ELF version. Do this here - if it hasn't happened yet. */ - if (__libelf_version_initialized == 0) - INTUSE(elf_version) (EV_CURRENT); + as if it hasn't happened yet. */ + INTUSE(elf_version) (EV_CURRENT); /* Now get an ELF descriptor. */ elf = INTUSE(elf_begin) (fd, ELF_C_READ_MMAP, NULL); diff --git a/libelf/note_xlate.h b/libelf/note_xlate.h index bc9950ff..7e2784b0 100644 --- a/libelf/note_xlate.h +++ b/libelf/note_xlate.h @@ -47,13 +47,25 @@ elf_cvt_note (void *dest, const void *src, size_t len, int encode, note_len += n->n_namesz; note_len = nhdr8 ? NOTE_ALIGN8 (note_len) : NOTE_ALIGN4 (note_len); if (note_len > len || note_len < sizeof *n) - break; + { + /* Header was translated, nothing else. */ + len -= sizeof *n; + src += sizeof *n; + dest += sizeof *n; + break; + } /* data as a whole needs to be aligned. */ note_len += n->n_descsz; note_len = nhdr8 ? NOTE_ALIGN8 (note_len) : NOTE_ALIGN4 (note_len); if (note_len > len || note_len < sizeof *n) - break; + { + /* Header was translated, nothing else. */ + len -= sizeof *n; + src += sizeof *n; + dest += sizeof *n; + break; + } /* Copy or skip the note data. */ size_t note_data_len = note_len - sizeof *n; diff --git a/po/ChangeLog b/po/ChangeLog index 2afb9b77..1d202391 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,7 @@ +2019-08-13 Mark Wielaard <mark@klomp.org> + + * *.po: Update for 0.177. + 2019-02-14 Mark Wielaard <mark@klomp.org> * *.po: Update for 0.176. @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils VERSION\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2019-02-14 14:31+0100\n" +"POT-Creation-Date: 2019-08-13 23:38+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" @@ -54,8 +54,8 @@ msgstr "" "GARANTIE,\n" "auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n" -#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 -#: src/readelf.c:11274 src/unstrip.c:2346 src/unstrip.c:2552 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3433 +#: src/readelf.c:11382 src/unstrip.c:2350 src/unstrip.c:2556 #, c-format msgid "memory exhausted" msgstr "Kein Speicher mehr verfügbar" @@ -298,7 +298,7 @@ msgstr "unbekannter Typ" msgid ".debug_addr section missing" msgstr ".debug_line Sektion fehlt" -#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2497 msgid "Input selection options:" msgstr "Eingabeauswahloptionen:" @@ -602,7 +602,7 @@ msgstr " OS: %s, ABI: " msgid "Stand alone" msgstr "" -#: libebl/eblsymbolbindingname.c:67 libebl/eblsymboltypename.c:73 +#: libebl/eblsymbolbindingname.c:68 libebl/eblsymboltypename.c:74 #, c-format msgid "<unknown>: %d" msgstr "<unbekannt>: %d" @@ -627,7 +627,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:6129 +#: libelf/elf_error.c:87 src/readelf.c:6150 #, c-format msgid "invalid encoding" msgstr "ungültige Kodierung" @@ -715,8 +715,8 @@ msgstr "data/scn Unterschied" msgid "invalid section header" msgstr "ungültiger Abschnitts-Header" -#: libelf/elf_error.c:191 src/readelf.c:9790 src/readelf.c:10390 -#: src/readelf.c:10491 src/readelf.c:10673 +#: libelf/elf_error.c:191 src/readelf.c:9898 src/readelf.c:10498 +#: src/readelf.c:10599 src/readelf.c:10781 #, c-format msgid "invalid data" msgstr "Ungültige Daten" @@ -1375,7 +1375,7 @@ msgstr "" #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 -#: src/unstrip.c:2142 src/unstrip.c:2171 +#: src/unstrip.c:2146 src/unstrip.c:2175 #, c-format msgid "cannot open '%s'" msgstr "'%s' kann nicht geöffnet werden" @@ -1499,7 +1499,7 @@ msgstr "" msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "" -#: src/elflint.c:154 src/readelf.c:346 +#: src/elflint.c:154 src/readelf.c:357 #, c-format msgid "cannot open input file" msgstr "Kann Eingabedatei nicht öffnen" @@ -1518,7 +1518,7 @@ msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" msgid "No errors" msgstr "Keine Fehler" -#: src/elflint.c:219 src/readelf.c:545 +#: src/elflint.c:219 src/readelf.c:559 msgid "Missing file name.\n" msgstr "Dateiname fehlt.\n" @@ -3429,7 +3429,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: INTERNER FEHLER %d (%s-%s): %s" #: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308 -#: src/strip.c:2747 +#: src/strip.c:2748 #, c-format msgid "while closing '%s'" msgstr "beim Schliessen von '%s'" @@ -3474,19 +3474,19 @@ msgstr "%s%s%s: Dateiformat nicht erkannt" msgid "cannot create search tree" msgstr "Kann Suchbaum nicht erstellen" -#: src/nm.c:746 src/nm.c:1207 src/objdump.c:777 src/readelf.c:605 -#: src/readelf.c:1412 src/readelf.c:1563 src/readelf.c:1764 src/readelf.c:1970 -#: src/readelf.c:2160 src/readelf.c:2338 src/readelf.c:2414 src/readelf.c:2672 -#: src/readelf.c:2748 src/readelf.c:2835 src/readelf.c:3433 src/readelf.c:3483 -#: src/readelf.c:3546 src/readelf.c:11106 src/readelf.c:12291 -#: src/readelf.c:12495 src/readelf.c:12563 src/size.c:398 src/size.c:467 +#: src/nm.c:746 src/nm.c:1205 src/objdump.c:777 src/readelf.c:619 +#: src/readelf.c:1431 src/readelf.c:1582 src/readelf.c:1783 src/readelf.c:1989 +#: src/readelf.c:2179 src/readelf.c:2357 src/readelf.c:2433 src/readelf.c:2691 +#: src/readelf.c:2767 src/readelf.c:2854 src/readelf.c:3452 src/readelf.c:3502 +#: src/readelf.c:3565 src/readelf.c:11214 src/readelf.c:12399 +#: src/readelf.c:12603 src/readelf.c:12671 src/size.c:398 src/size.c:470 #: src/strip.c:1038 #, c-format msgid "cannot get section header string table index" msgstr "" #. We always print this prolog. -#: src/nm.c:773 +#: src/nm.c:771 #, c-format msgid "" "\n" @@ -3500,35 +3500,35 @@ msgstr "" "\n" #. The header line. -#: src/nm.c:776 +#: src/nm.c:774 #, c-format msgid "" "%*s%-*s %-*s Class Type %-*s %*s Section\n" "\n" msgstr "" -#: src/nm.c:1218 +#: src/nm.c:1216 #, fuzzy, c-format msgid "%s: entry size in section %zd `%s' is not what we expect" msgstr "%s: entry size in section `%s' is not what we expect" -#: src/nm.c:1223 +#: src/nm.c:1221 #, fuzzy, c-format msgid "%s: size of section %zd `%s' is not multiple of entry size" msgstr "%s: entry size in section `%s' is not what we expect" -#: src/nm.c:1302 +#: src/nm.c:1300 #, fuzzy, c-format msgid "%s: entries (%zd) in section %zd `%s' is too large" msgstr "%s: entry size in section `%s' is not what we expect" #. XXX Add machine specific object file types. -#: src/nm.c:1528 +#: src/nm.c:1526 #, c-format msgid "%s%s%s%s: Invalid operation" msgstr "%s%s%s%s: Ungültige Operation" -#: src/nm.c:1585 +#: src/nm.c:1583 #, c-format msgid "%s%s%s: no symbols" msgstr "%s%s%s: keine Symbole" @@ -3563,7 +3563,7 @@ msgstr "" msgid "Show information from FILEs (a.out by default)." msgstr "" -#: src/objdump.c:218 src/readelf.c:550 +#: src/objdump.c:218 src/readelf.c:564 msgid "No operation specified.\n" msgstr "Keine Operation angegeben.\n" @@ -3572,11 +3572,11 @@ msgstr "Keine Operation angegeben.\n" msgid "while close `%s'" msgstr "" -#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 +#: src/objdump.c:363 src/readelf.c:2084 src/readelf.c:2276 msgid "INVALID SYMBOL" msgstr "" -#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 +#: src/objdump.c:378 src/readelf.c:2118 src/readelf.c:2312 msgid "INVALID SECTION" msgstr "" @@ -3758,372 +3758,377 @@ msgid "Print information from ELF file in human-readable form." msgstr "Informationen aus der ELF-Datei in menschenlesbarer Form ausgeben." #. Look up once. -#: src/readelf.c:328 +#: src/readelf.c:339 msgid "yes" msgstr "ja" -#: src/readelf.c:329 +#: src/readelf.c:340 msgid "no" msgstr "nein" -#: src/readelf.c:518 +#: src/readelf.c:532 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "" -#: src/readelf.c:589 src/readelf.c:700 +#: src/readelf.c:603 src/readelf.c:714 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "konnte Elf-Deskriptor nicht erzeugen: %s" -#: src/readelf.c:596 src/readelf.c:923 src/strip.c:1133 +#: src/readelf.c:610 src/readelf.c:937 src/strip.c:1133 #, c-format msgid "cannot determine number of sections: %s" msgstr "" -#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 +#: src/readelf.c:628 src/readelf.c:1247 src/readelf.c:1455 #, c-format msgid "cannot get section: %s" msgstr "" -#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12515 +#: src/readelf.c:637 src/readelf.c:1254 src/readelf.c:1463 src/readelf.c:12623 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:481 src/unstrip.c:600 -#: src/unstrip.c:621 src/unstrip.c:660 src/unstrip.c:871 src/unstrip.c:1202 -#: src/unstrip.c:1394 src/unstrip.c:1458 src/unstrip.c:1632 src/unstrip.c:1766 -#: src/unstrip.c:1909 src/unstrip.c:2004 +#: src/unstrip.c:621 src/unstrip.c:661 src/unstrip.c:873 src/unstrip.c:1204 +#: src/unstrip.c:1331 src/unstrip.c:1355 src/unstrip.c:1398 src/unstrip.c:1462 +#: src/unstrip.c:1636 src/unstrip.c:1770 src/unstrip.c:1913 src/unstrip.c:2008 #, c-format msgid "cannot get section header: %s" msgstr "" -#: src/readelf.c:631 +#: src/readelf.c:645 #, fuzzy, c-format msgid "cannot get section name" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10378 src/readelf.c:10480 -#: src/readelf.c:10658 +#: src/readelf.c:654 src/readelf.c:6560 src/readelf.c:10486 src/readelf.c:10588 +#: src/readelf.c:10766 #, c-format msgid "cannot get %s content: %s" msgstr "" -#: src/readelf.c:656 +#: src/readelf.c:670 #, fuzzy, c-format msgid "cannot create temp file '%s'" msgstr "neue Datei konnte nicht angelegt werden" -#: src/readelf.c:665 +#: src/readelf.c:679 #, fuzzy, c-format msgid "cannot write section data" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:671 src/readelf.c:688 src/readelf.c:717 +#: src/readelf.c:685 src/readelf.c:702 src/readelf.c:731 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "" -#: src/readelf.c:678 +#: src/readelf.c:692 #, fuzzy, c-format msgid "error while rewinding file descriptor" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" -#: src/readelf.c:712 +#: src/readelf.c:726 #, c-format msgid "'%s' is not an archive, cannot print archive index" msgstr "" -#: src/readelf.c:816 +#: src/readelf.c:830 #, c-format msgid "cannot stat input file" msgstr "" -#: src/readelf.c:818 +#: src/readelf.c:832 #, c-format msgid "input file is empty" msgstr "" -#: src/readelf.c:820 +#: src/readelf.c:834 #, c-format msgid "failed reading '%s': %s" msgstr "Konnte '%s' nicht lesen: %s" -#: src/readelf.c:849 +#: src/readelf.c:863 #, fuzzy, c-format msgid "No such section '%s' in '%s'" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:908 +#: src/readelf.c:922 #, c-format msgid "cannot read ELF header: %s" msgstr "" -#: src/readelf.c:916 +#: src/readelf.c:930 #, c-format msgid "cannot create EBL handle" msgstr "" -#: src/readelf.c:929 +#: src/readelf.c:943 #, fuzzy, c-format msgid "cannot determine number of program headers: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:961 +#: src/readelf.c:975 #, fuzzy, c-format msgid "cannot read ELF: %s" msgstr "Konnte %s: %s nicht lesen" -#: src/readelf.c:1022 +#: src/readelf.c:1036 msgid "NONE (None)" msgstr "" -#: src/readelf.c:1023 +#: src/readelf.c:1037 msgid "REL (Relocatable file)" msgstr "" -#: src/readelf.c:1024 +#: src/readelf.c:1038 msgid "EXEC (Executable file)" msgstr "" -#: src/readelf.c:1025 +#: src/readelf.c:1039 msgid "DYN (Shared object file)" msgstr "" -#: src/readelf.c:1026 +#: src/readelf.c:1040 msgid "CORE (Core file)" msgstr "" -#: src/readelf.c:1031 +#: src/readelf.c:1045 #, c-format msgid "OS Specific: (%x)\n" msgstr "" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1033 +#: src/readelf.c:1047 #, c-format msgid "Processor Specific: (%x)\n" msgstr "" -#: src/readelf.c:1043 +#: src/readelf.c:1057 msgid "" "ELF Header:\n" " Magic: " msgstr "" -#: src/readelf.c:1047 +#: src/readelf.c:1061 #, c-format msgid "" "\n" " Class: %s\n" msgstr "" -#: src/readelf.c:1052 +#: src/readelf.c:1066 #, fuzzy, c-format msgid " Data: %s\n" msgstr " Daten: %s\n" -#: src/readelf.c:1058 +#: src/readelf.c:1072 #, c-format msgid " Ident Version: %hhd %s\n" msgstr "" -#: src/readelf.c:1060 src/readelf.c:1077 +#: src/readelf.c:1074 src/readelf.c:1096 msgid "(current)" msgstr "(aktuell)" -#: src/readelf.c:1064 +#: src/readelf.c:1078 #, c-format msgid " OS/ABI: %s\n" msgstr "" -#: src/readelf.c:1067 +#: src/readelf.c:1081 #, c-format msgid " ABI Version: %hhd\n" msgstr "" -#: src/readelf.c:1070 +#: src/readelf.c:1084 msgid " Type: " msgstr " Typ: " -#: src/readelf.c:1073 +#: src/readelf.c:1089 #, c-format msgid " Machine: %s\n" msgstr "" -#: src/readelf.c:1075 +#: src/readelf.c:1091 +#, fuzzy, c-format +msgid " Machine: <unknown>: 0x%x\n" +msgstr " Daten: %s\n" + +#: src/readelf.c:1094 #, c-format msgid " Version: %d %s\n" msgstr "" -#: src/readelf.c:1079 +#: src/readelf.c:1098 #, c-format msgid " Entry point address: %#<PRIx64>\n" msgstr "" -#: src/readelf.c:1082 +#: src/readelf.c:1101 #, c-format msgid " Start of program headers: %<PRId64> %s\n" msgstr "" -#: src/readelf.c:1083 src/readelf.c:1086 +#: src/readelf.c:1102 src/readelf.c:1105 msgid "(bytes into file)" msgstr "" -#: src/readelf.c:1085 +#: src/readelf.c:1104 #, c-format msgid " Start of section headers: %<PRId64> %s\n" msgstr "" -#: src/readelf.c:1088 +#: src/readelf.c:1107 #, c-format msgid " Flags: %s\n" msgstr "" -#: src/readelf.c:1091 +#: src/readelf.c:1110 #, c-format msgid " Size of this header: %<PRId16> %s\n" msgstr "" -#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 +#: src/readelf.c:1111 src/readelf.c:1114 src/readelf.c:1131 msgid "(bytes)" msgstr "(Bytes)" -#: src/readelf.c:1094 +#: src/readelf.c:1113 #, c-format msgid " Size of program header entries: %<PRId16> %s\n" msgstr "" -#: src/readelf.c:1097 +#: src/readelf.c:1116 #, c-format msgid " Number of program headers entries: %<PRId16>" msgstr "" -#: src/readelf.c:1104 +#: src/readelf.c:1123 #, c-format msgid " (%<PRIu32> in [0].sh_info)" msgstr "" -#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 +#: src/readelf.c:1126 src/readelf.c:1143 src/readelf.c:1157 msgid " ([0] not available)" msgstr "" -#: src/readelf.c:1111 +#: src/readelf.c:1130 #, c-format msgid " Size of section header entries: %<PRId16> %s\n" msgstr "" -#: src/readelf.c:1114 +#: src/readelf.c:1133 #, c-format msgid " Number of section headers entries: %<PRId16>" msgstr "" -#: src/readelf.c:1121 +#: src/readelf.c:1140 #, c-format msgid " (%<PRIu32> in [0].sh_size)" msgstr "" #. We managed to get the zeroth section. -#: src/readelf.c:1134 +#: src/readelf.c:1153 #, c-format msgid " (%<PRIu32> in [0].sh_link)" msgstr "" -#: src/readelf.c:1142 +#: src/readelf.c:1161 #, c-format msgid "" " Section header string table index: XINDEX%s\n" "\n" msgstr "" -#: src/readelf.c:1146 +#: src/readelf.c:1165 #, c-format msgid "" " Section header string table index: %<PRId16>\n" "\n" msgstr "" -#: src/readelf.c:1193 src/readelf.c:1401 +#: src/readelf.c:1212 src/readelf.c:1420 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:1196 +#: src/readelf.c:1215 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#<PRIx64>:\n" "\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:1205 +#: src/readelf.c:1224 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:1208 +#: src/readelf.c:1227 msgid "Section Headers:" msgstr "" -#: src/readelf.c:1211 +#: src/readelf.c:1230 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" msgstr "" -#: src/readelf.c:1213 +#: src/readelf.c:1232 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" msgstr "" -#: src/readelf.c:1218 +#: src/readelf.c:1237 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1220 +#: src/readelf.c:1239 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1296 +#: src/readelf.c:1315 #, c-format msgid "bad compression header for section %zd: %s" msgstr "" -#: src/readelf.c:1307 +#: src/readelf.c:1326 #, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "" -#: src/readelf.c:1325 +#: src/readelf.c:1344 msgid "Program Headers:" msgstr "Programm-Köpfe:" -#: src/readelf.c:1327 +#: src/readelf.c:1346 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" -#: src/readelf.c:1330 +#: src/readelf.c:1349 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" msgstr "" -#: src/readelf.c:1387 +#: src/readelf.c:1406 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "" -#: src/readelf.c:1414 +#: src/readelf.c:1433 msgid "" "\n" " Section to Segment mapping:\n" " Segment Sections..." msgstr "" -#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 +#: src/readelf.c:1444 src/unstrip.c:2067 src/unstrip.c:2109 src/unstrip.c:2116 #, c-format msgid "cannot get program header: %s" msgstr "" -#: src/readelf.c:1571 +#: src/readelf.c:1590 #, c-format msgid "" "\n" @@ -4134,7 +4139,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1576 +#: src/readelf.c:1595 #, c-format msgid "" "\n" @@ -4145,31 +4150,31 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1584 +#: src/readelf.c:1603 msgid "<INVALID SYMBOL>" msgstr "" -#: src/readelf.c:1598 +#: src/readelf.c:1617 msgid "<INVALID SECTION>" msgstr "" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12386 -#: src/readelf.c:12393 src/readelf.c:12437 src/readelf.c:12444 +#: src/readelf.c:1640 src/readelf.c:2367 src/readelf.c:3468 src/readelf.c:12494 +#: src/readelf.c:12501 src/readelf.c:12545 src/readelf.c:12552 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 +#: src/readelf.c:1645 src/readelf.c:2372 src/readelf.c:3473 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:1770 src/readelf.c:2420 src/readelf.c:2678 src/readelf.c:2754 -#: src/readelf.c:3058 src/readelf.c:3132 src/readelf.c:5327 +#: src/readelf.c:1789 src/readelf.c:2439 src/readelf.c:2697 src/readelf.c:2773 +#: src/readelf.c:3077 src/readelf.c:3151 src/readelf.c:5348 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:1773 +#: src/readelf.c:1792 #, c-format msgid "" "\n" @@ -4182,43 +4187,43 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1783 +#: src/readelf.c:1802 msgid " Type Value\n" msgstr "" -#: src/readelf.c:1807 +#: src/readelf.c:1826 #, c-format msgid "Shared library: [%s]\n" msgstr "" -#: src/readelf.c:1812 +#: src/readelf.c:1831 #, c-format msgid "Library soname: [%s]\n" msgstr "" -#: src/readelf.c:1817 +#: src/readelf.c:1836 #, c-format msgid "Library rpath: [%s]\n" msgstr "" -#: src/readelf.c:1822 +#: src/readelf.c:1841 #, c-format msgid "Library runpath: [%s]\n" msgstr "" -#: src/readelf.c:1842 +#: src/readelf.c:1861 #, c-format msgid "%<PRId64> (bytes)\n" msgstr "" -#: src/readelf.c:1955 src/readelf.c:2145 +#: src/readelf.c:1974 src/readelf.c:2164 #, c-format msgid "" "\n" "Invalid symbol table at offset %#0<PRIx64>\n" msgstr "" -#: src/readelf.c:1973 src/readelf.c:2163 +#: src/readelf.c:1992 src/readelf.c:2182 #, c-format msgid "" "\n" @@ -4237,7 +4242,7 @@ msgstr[1] "" #. The .rela.dyn section does not refer to a specific section but #. instead of section index zero. Do not try to print a section #. name. -#: src/readelf.c:1988 src/readelf.c:2178 +#: src/readelf.c:2007 src/readelf.c:2197 #, c-format msgid "" "\n" @@ -4248,29 +4253,29 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1998 +#: src/readelf.c:2017 msgid " Offset Type Value Name\n" msgstr "" -#: src/readelf.c:2000 +#: src/readelf.c:2019 msgid " Offset Type Value Name\n" msgstr "" -#: src/readelf.c:2053 src/readelf.c:2064 src/readelf.c:2077 src/readelf.c:2098 -#: src/readelf.c:2110 src/readelf.c:2244 src/readelf.c:2256 src/readelf.c:2270 -#: src/readelf.c:2292 src/readelf.c:2305 +#: src/readelf.c:2072 src/readelf.c:2083 src/readelf.c:2096 src/readelf.c:2117 +#: src/readelf.c:2129 src/readelf.c:2263 src/readelf.c:2275 src/readelf.c:2289 +#: src/readelf.c:2311 src/readelf.c:2324 msgid "<INVALID RELOC>" msgstr "" -#: src/readelf.c:2188 +#: src/readelf.c:2207 msgid " Offset Type Value Addend Name\n" msgstr "" -#: src/readelf.c:2190 +#: src/readelf.c:2209 msgid " Offset Type Value Addend Name\n" msgstr "" -#: src/readelf.c:2428 +#: src/readelf.c:2447 #, c-format msgid "" "\n" @@ -4281,40 +4286,40 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2433 +#: src/readelf.c:2452 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2441 +#: src/readelf.c:2460 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: src/readelf.c:2443 +#: src/readelf.c:2462 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: src/readelf.c:2463 +#: src/readelf.c:2482 #, c-format msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" msgstr "" -#: src/readelf.c:2551 +#: src/readelf.c:2570 #, c-format msgid "bad dynamic symbol" msgstr "" -#: src/readelf.c:2633 +#: src/readelf.c:2652 msgid "none" msgstr "keine" -#: src/readelf.c:2650 +#: src/readelf.c:2669 msgid "| <unknown>" msgstr "| <unbekannt>" -#: src/readelf.c:2681 +#: src/readelf.c:2700 #, c-format msgid "" "\n" @@ -4327,17 +4332,17 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2702 +#: src/readelf.c:2721 #, fuzzy, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Version: %hu Datei: %s Cnt: %hu\n" -#: src/readelf.c:2715 +#: src/readelf.c:2734 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Name: %s Flags: %s Version: %hu\n" -#: src/readelf.c:2758 +#: src/readelf.c:2777 #, c-format msgid "" "\n" @@ -4350,18 +4355,18 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2786 +#: src/readelf.c:2805 #, c-format msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" msgstr "" -#: src/readelf.c:2801 +#: src/readelf.c:2820 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr "" #. Print the header. -#: src/readelf.c:3062 +#: src/readelf.c:3081 #, c-format msgid "" "\n" @@ -4374,15 +4379,15 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3090 +#: src/readelf.c:3109 msgid " 0 *local* " msgstr " 0 *lokal* " -#: src/readelf.c:3095 +#: src/readelf.c:3114 msgid " 1 *global* " msgstr " 1 *global* " -#: src/readelf.c:3137 +#: src/readelf.c:3156 #, c-format msgid "" "\n" @@ -4397,66 +4402,66 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3159 +#: src/readelf.c:3178 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr "" -#: src/readelf.c:3161 +#: src/readelf.c:3180 #, c-format msgid " 0 %6<PRIu32> %5.1f%%\n" msgstr " 0 %6<PRIu32> %5.1f%%\n" -#: src/readelf.c:3168 +#: src/readelf.c:3187 #, c-format msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" -#: src/readelf.c:3181 +#: src/readelf.c:3200 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" "\t\t\t unsuccessful lookup: %f\n" msgstr "" -#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 +#: src/readelf.c:3218 src/readelf.c:3282 src/readelf.c:3348 #, c-format msgid "cannot get data for section %d: %s" msgstr "" -#: src/readelf.c:3207 +#: src/readelf.c:3226 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3236 +#: src/readelf.c:3255 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3271 +#: src/readelf.c:3290 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3302 +#: src/readelf.c:3321 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3338 +#: src/readelf.c:3357 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3405 +#: src/readelf.c:3424 #, c-format msgid "" " Symbol Bias: %u\n" " Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n" msgstr "" -#: src/readelf.c:3494 +#: src/readelf.c:3513 #, c-format msgid "" "\n" @@ -4467,13 +4472,13 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3508 +#: src/readelf.c:3527 msgid "" " Library Time Stamp Checksum Version " "Flags" msgstr "" -#: src/readelf.c:3558 +#: src/readelf.c:3579 #, c-format msgid "" "\n" @@ -4481,102 +4486,102 @@ msgid "" "%#0<PRIx64>:\n" msgstr "" -#: src/readelf.c:3575 +#: src/readelf.c:3596 msgid " Owner Size\n" msgstr "" -#: src/readelf.c:3604 +#: src/readelf.c:3625 #, c-format msgid " %-13s %4<PRIu32>\n" msgstr " %-13s %4<PRIu32>\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3643 +#: src/readelf.c:3664 #, c-format msgid " %-4u %12<PRIu32>\n" msgstr " %-4u %12<PRIu32>\n" #. Tag_File -#: src/readelf.c:3648 +#: src/readelf.c:3669 #, c-format msgid " File: %11<PRIu32>\n" msgstr " File: %11<PRIu32>\n" -#: src/readelf.c:3697 +#: src/readelf.c:3718 #, c-format msgid " %s: %<PRId64>, %s\n" msgstr " %s: %<PRId64>, %s\n" -#: src/readelf.c:3700 +#: src/readelf.c:3721 #, c-format msgid " %s: %<PRId64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:3703 +#: src/readelf.c:3724 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3713 +#: src/readelf.c:3734 #, c-format msgid " %u: %<PRId64>\n" msgstr " %u: %<PRId64>\n" -#: src/readelf.c:3716 +#: src/readelf.c:3737 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3786 +#: src/readelf.c:3807 #, fuzzy, c-format msgid "sprintf failure" msgstr "mprotect fehlgeschlagen" -#: src/readelf.c:4268 +#: src/readelf.c:4289 msgid "empty block" msgstr "" -#: src/readelf.c:4271 +#: src/readelf.c:4292 #, c-format msgid "%zu byte block:" msgstr "" -#: src/readelf.c:4749 +#: src/readelf.c:4770 #, c-format msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n" msgstr "" -#: src/readelf.c:4813 +#: src/readelf.c:4834 #, c-format msgid "%s %#<PRIx64> used with different address sizes" msgstr "" -#: src/readelf.c:4820 +#: src/readelf.c:4841 #, c-format msgid "%s %#<PRIx64> used with different offset sizes" msgstr "" -#: src/readelf.c:4827 +#: src/readelf.c:4848 #, c-format msgid "%s %#<PRIx64> used with different base addresses" msgstr "" -#: src/readelf.c:4834 +#: src/readelf.c:4855 #, c-format msgid "%s %#<PRIx64> used with different attribute %s and %s" msgstr "" -#: src/readelf.c:4931 +#: src/readelf.c:4952 #, c-format msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n" msgstr "" -#: src/readelf.c:4939 +#: src/readelf.c:4960 #, c-format msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n" msgstr "" -#: src/readelf.c:5017 +#: src/readelf.c:5038 #, c-format msgid "" "\n" @@ -4584,79 +4589,79 @@ msgid "" " [ Code]\n" msgstr "" -#: src/readelf.c:5025 +#: src/readelf.c:5046 #, c-format msgid "" "\n" "Abbreviation section at offset %<PRIu64>:\n" msgstr "" -#: src/readelf.c:5038 +#: src/readelf.c:5059 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr "" -#: src/readelf.c:5054 +#: src/readelf.c:5075 #, c-format msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n" msgstr "" -#: src/readelf.c:5087 src/readelf.c:5396 src/readelf.c:5563 src/readelf.c:5948 -#: src/readelf.c:6549 src/readelf.c:8199 src/readelf.c:8885 src/readelf.c:9321 -#: src/readelf.c:9566 src/readelf.c:9732 src/readelf.c:10119 -#: src/readelf.c:10179 +#: src/readelf.c:5108 src/readelf.c:5417 src/readelf.c:5584 src/readelf.c:5969 +#: src/readelf.c:6570 src/readelf.c:8307 src/readelf.c:8993 src/readelf.c:9429 +#: src/readelf.c:9674 src/readelf.c:9840 src/readelf.c:10227 +#: src/readelf.c:10287 #, c-format msgid "" "\n" "DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n" msgstr "" -#: src/readelf.c:5100 +#: src/readelf.c:5121 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8930 +#: src/readelf.c:5221 src/readelf.c:5245 src/readelf.c:5629 src/readelf.c:9038 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8943 +#: src/readelf.c:5223 src/readelf.c:5260 src/readelf.c:5642 src/readelf.c:9051 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8952 +#: src/readelf.c:5224 src/readelf.c:5269 src/readelf.c:5651 src/readelf.c:9060 #, fuzzy, c-format msgid " Address size: %8<PRIu64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8962 +#: src/readelf.c:5226 src/readelf.c:5279 src/readelf.c:5661 src/readelf.c:9070 #, fuzzy, c-format msgid " Segment size: %8<PRIu64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8947 src/readelf.c:10311 +#: src/readelf.c:5264 src/readelf.c:5646 src/readelf.c:9055 src/readelf.c:10419 #, fuzzy, c-format msgid "Unknown version" msgstr "unbekannte Version" -#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8957 +#: src/readelf.c:5274 src/readelf.c:5487 src/readelf.c:5656 src/readelf.c:9065 #, fuzzy, c-format msgid "unsupported address size" msgstr "Kein Adress-Wert" -#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8967 +#: src/readelf.c:5285 src/readelf.c:5498 src/readelf.c:5666 src/readelf.c:9075 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5317 src/readelf.c:5391 +#: src/readelf.c:5338 src/readelf.c:5412 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "" -#: src/readelf.c:5332 +#: src/readelf.c:5353 #, c-format msgid "" "\n" @@ -4667,241 +4672,241 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:5363 +#: src/readelf.c:5384 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5365 +#: src/readelf.c:5386 #, c-format msgid "" " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n" msgstr "" -#: src/readelf.c:5409 src/readelf.c:8226 +#: src/readelf.c:5430 src/readelf.c:8334 #, c-format msgid "" "\n" "Table at offset %zu:\n" msgstr "" -#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 -#: src/readelf.c:8911 +#: src/readelf.c:5434 src/readelf.c:5610 src/readelf.c:6594 src/readelf.c:8345 +#: src/readelf.c:9019 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "" -#: src/readelf.c:5429 +#: src/readelf.c:5450 #, fuzzy, c-format msgid "" "\n" " Length: %6<PRIu64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5441 +#: src/readelf.c:5462 #, fuzzy, c-format msgid " DWARF version: %6<PRIuFAST16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5445 +#: src/readelf.c:5466 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5456 +#: src/readelf.c:5477 #, fuzzy, c-format msgid " CU offset: %6<PRIx64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5462 +#: src/readelf.c:5483 #, c-format msgid " Address size: %6<PRIu64>\n" msgstr "" -#: src/readelf.c:5473 +#: src/readelf.c:5494 #, c-format msgid "" " Segment size: %6<PRIu64>\n" "\n" msgstr "" -#: src/readelf.c:5528 +#: src/readelf.c:5549 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5572 +#: src/readelf.c:5593 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:5595 src/readelf.c:8917 +#: src/readelf.c:5616 src/readelf.c:9025 #, fuzzy, c-format msgid "" "Table at Offset 0x%<PRIx64>:\n" "\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5650 src/readelf.c:8972 +#: src/readelf.c:5671 src/readelf.c:9080 #, fuzzy, c-format msgid " Offset entries: %8<PRIu64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5666 src/readelf.c:8988 +#: src/readelf.c:5687 src/readelf.c:9096 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8990 +#: src/readelf.c:5689 src/readelf.c:9098 #, c-format msgid " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5674 src/readelf.c:8996 +#: src/readelf.c:5695 src/readelf.c:9104 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5685 src/readelf.c:9007 +#: src/readelf.c:5706 src/readelf.c:9115 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5689 src/readelf.c:9011 +#: src/readelf.c:5710 src/readelf.c:9119 #, fuzzy, c-format msgid " Offsets starting at 0x%<PRIx64>:\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5741 +#: src/readelf.c:5762 #, fuzzy, c-format msgid "invalid range list data" msgstr "Ungültige Daten" -#: src/readelf.c:5926 src/readelf.c:9299 +#: src/readelf.c:5947 src/readelf.c:9407 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:5943 +#: src/readelf.c:5964 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "" -#: src/readelf.c:5979 src/readelf.c:9354 +#: src/readelf.c:6000 src/readelf.c:9462 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5981 src/readelf.c:9356 +#: src/readelf.c:6002 src/readelf.c:9464 #, c-format msgid "" "\n" " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5990 src/readelf.c:9382 src/readelf.c:9408 +#: src/readelf.c:6011 src/readelf.c:9490 src/readelf.c:9516 #, c-format msgid " [%6tx] <INVALID DATA>\n" msgstr "" -#: src/readelf.c:6011 src/readelf.c:9488 +#: src/readelf.c:6032 src/readelf.c:9596 #, c-format msgid "" " [%6tx] base address\n" " " msgstr "" -#: src/readelf.c:6019 src/readelf.c:9496 +#: src/readelf.c:6040 src/readelf.c:9604 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:6274 +#: src/readelf.c:6295 msgid " <INVALID DATA>\n" msgstr "" -#: src/readelf.c:6527 +#: src/readelf.c:6548 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "ELF Kopf konnte nicht ausgelesen werden" -#: src/readelf.c:6545 +#: src/readelf.c:6566 #, c-format msgid "" "\n" "Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n" msgstr "" -#: src/readelf.c:6595 +#: src/readelf.c:6616 #, c-format msgid "" "\n" " [%6tx] Zero terminator\n" msgstr "" -#: src/readelf.c:6696 src/readelf.c:6850 +#: src/readelf.c:6717 src/readelf.c:6871 #, fuzzy, c-format msgid "invalid augmentation length" msgstr "ungültige Abschnittsausrichtung" -#: src/readelf.c:6711 +#: src/readelf.c:6732 msgid "FDE address encoding: " msgstr "" -#: src/readelf.c:6717 +#: src/readelf.c:6738 msgid "LSDA pointer encoding: " msgstr "" -#: src/readelf.c:6827 +#: src/readelf.c:6848 #, c-format msgid " (offset: %#<PRIx64>)" msgstr "" -#: src/readelf.c:6834 +#: src/readelf.c:6855 #, c-format msgid " (end offset: %#<PRIx64>)" msgstr "" -#: src/readelf.c:6871 +#: src/readelf.c:6892 #, c-format msgid " %-26sLSDA pointer: %#<PRIx64>\n" msgstr "" -#: src/readelf.c:6956 +#: src/readelf.c:6977 #, c-format msgid "DIE [%<PRIx64>] cannot get attribute code: %s" msgstr "" -#: src/readelf.c:6966 +#: src/readelf.c:6987 #, c-format msgid "DIE [%<PRIx64>] cannot get attribute form: %s" msgstr "" -#: src/readelf.c:6988 +#: src/readelf.c:7009 #, c-format msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s" msgstr "" -#: src/readelf.c:7321 +#: src/readelf.c:7339 #, fuzzy, c-format msgid "invalid file (%<PRId64>): %s" msgstr "Ungültige Datei" -#: src/readelf.c:7325 +#: src/readelf.c:7343 #, fuzzy, c-format msgid "no srcfiles for CU [%<PRIx64>]" msgstr "unbekannte Form %<PRIx64>" -#: src/readelf.c:7329 +#: src/readelf.c:7347 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "ELF Kopf konnte nicht ausgelesen werden" -#: src/readelf.c:7552 +#: src/readelf.c:7660 #, c-format msgid "" "\n" @@ -4909,12 +4914,12 @@ msgid "" " [Offset]\n" msgstr "" -#: src/readelf.c:7602 +#: src/readelf.c:7710 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:7621 +#: src/readelf.c:7729 #, c-format msgid "" " Type unit at offset %<PRIu64>:\n" @@ -4923,7 +4928,7 @@ msgid "" " Type signature: %#<PRIx64>, Type offset: %#<PRIx64> [%<PRIx64>]\n" msgstr "" -#: src/readelf.c:7633 +#: src/readelf.c:7741 #, c-format msgid "" " Compilation unit at offset %<PRIu64>:\n" @@ -4931,37 +4936,37 @@ msgid "" "%<PRIu8>, Offset size: %<PRIu8>\n" msgstr "" -#: src/readelf.c:7643 src/readelf.c:7806 +#: src/readelf.c:7751 src/readelf.c:7914 #, c-format msgid " Unit type: %s (%<PRIu8>)" msgstr "" -#: src/readelf.c:7670 +#: src/readelf.c:7778 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7699 +#: src/readelf.c:7807 #, c-format msgid "cannot get DIE offset: %s" msgstr "" -#: src/readelf.c:7708 +#: src/readelf.c:7816 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:7746 +#: src/readelf.c:7854 #, c-format msgid "cannot get next DIE: %s\n" msgstr "" -#: src/readelf.c:7754 +#: src/readelf.c:7862 #, c-format msgid "cannot get next DIE: %s" msgstr "" -#: src/readelf.c:7798 +#: src/readelf.c:7906 #, c-format msgid "" " Split compilation unit at offset %<PRIu64>:\n" @@ -4969,7 +4974,7 @@ msgid "" "%<PRIu8>, Offset size: %<PRIu8>\n" msgstr "" -#: src/readelf.c:7850 +#: src/readelf.c:7958 #, c-format msgid "" "\n" @@ -4977,18 +4982,18 @@ msgid "" "\n" msgstr "" -#: src/readelf.c:8182 +#: src/readelf.c:8290 #, fuzzy, c-format msgid "unknown form: %s" msgstr "unbekannte Form %<PRIx64>" -#: src/readelf.c:8213 +#: src/readelf.c:8321 #, c-format msgid "cannot get line data section data: %s" msgstr "" #. Print what we got so far. -#: src/readelf.c:8315 +#: src/readelf.c:8423 #, c-format msgid "" "\n" @@ -5007,171 +5012,171 @@ msgid "" "Opcodes:\n" msgstr "" -#: src/readelf.c:8337 +#: src/readelf.c:8445 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:8345 +#: src/readelf.c:8453 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "Kein Adress-Wert" -#: src/readelf.c:8353 +#: src/readelf.c:8461 #, c-format msgid "cannot handle segment selector size: %u\n" msgstr "" -#: src/readelf.c:8363 +#: src/readelf.c:8471 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "" -#: src/readelf.c:8378 +#: src/readelf.c:8486 #, c-format msgid " [%*<PRIuFAST8>] %hhu argument\n" msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:8389 +#: src/readelf.c:8497 msgid "" "\n" "Directory table:" msgstr "" -#: src/readelf.c:8395 src/readelf.c:8472 +#: src/readelf.c:8503 src/readelf.c:8580 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8466 +#: src/readelf.c:8574 msgid "" "\n" "File name table:" msgstr "" -#: src/readelf.c:8527 +#: src/readelf.c:8635 msgid " Entry Dir Time Size Name" msgstr "" -#: src/readelf.c:8564 +#: src/readelf.c:8672 msgid "" "\n" "Line number statements:" msgstr "" -#: src/readelf.c:8587 +#: src/readelf.c:8695 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "" -#: src/readelf.c:8621 +#: src/readelf.c:8729 #, c-format msgid " special opcode %u: address+%u = " msgstr "" -#: src/readelf.c:8625 +#: src/readelf.c:8733 #, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr "" -#: src/readelf.c:8628 +#: src/readelf.c:8736 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8646 +#: src/readelf.c:8754 #, c-format msgid " extended opcode %u: " msgstr "" -#: src/readelf.c:8651 +#: src/readelf.c:8759 msgid " end of sequence" msgstr "" -#: src/readelf.c:8669 +#: src/readelf.c:8777 #, fuzzy, c-format msgid " set address to " msgstr "Außerhalb des Adressbereiches" -#: src/readelf.c:8697 +#: src/readelf.c:8805 #, c-format msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n" msgstr "" -#: src/readelf.c:8711 +#: src/readelf.c:8819 #, c-format msgid " set discriminator to %u\n" msgstr "" #. Unknown, ignore it. -#: src/readelf.c:8716 +#: src/readelf.c:8824 #, fuzzy msgid " unknown opcode" msgstr "unbekannter Typ" #. Takes no argument. -#: src/readelf.c:8728 +#: src/readelf.c:8836 msgid " copy" msgstr "" -#: src/readelf.c:8739 +#: src/readelf.c:8847 #, c-format msgid " advance address by %u to " msgstr "" -#: src/readelf.c:8743 src/readelf.c:8804 +#: src/readelf.c:8851 src/readelf.c:8912 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8755 +#: src/readelf.c:8863 #, c-format msgid " advance line by constant %d to %<PRId64>\n" msgstr "" -#: src/readelf.c:8765 +#: src/readelf.c:8873 #, c-format msgid " set file to %<PRIu64>\n" msgstr "" -#: src/readelf.c:8776 +#: src/readelf.c:8884 #, c-format msgid " set column to %<PRIu64>\n" msgstr "" -#: src/readelf.c:8783 +#: src/readelf.c:8891 #, c-format msgid " set '%s' to %<PRIuFAST8>\n" msgstr "" #. Takes no argument. -#: src/readelf.c:8789 +#: src/readelf.c:8897 msgid " set basic block flag" msgstr "" -#: src/readelf.c:8800 +#: src/readelf.c:8908 #, c-format msgid " advance address by constant %u to " msgstr "" -#: src/readelf.c:8820 +#: src/readelf.c:8928 #, c-format msgid " advance address by fixed value %u to \n" msgstr "" #. Takes no argument. -#: src/readelf.c:8830 +#: src/readelf.c:8938 msgid " set prologue end flag" msgstr "" #. Takes no argument. -#: src/readelf.c:8835 +#: src/readelf.c:8943 msgid " set epilogue begin flag" msgstr "" -#: src/readelf.c:8845 +#: src/readelf.c:8953 #, c-format msgid " set isa to %u\n" msgstr "" @@ -5179,103 +5184,103 @@ 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:8854 +#: src/readelf.c:8962 #, c-format msgid " unknown opcode with %<PRIu8> parameter:" msgid_plural " unknown opcode with %<PRIu8> parameters:" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:8894 +#: src/readelf.c:9002 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s" -#: src/readelf.c:9063 +#: src/readelf.c:9171 #, fuzzy, c-format msgid "invalid loclists data" msgstr "Ungültige Daten" -#: src/readelf.c:9316 +#: src/readelf.c:9424 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "" -#: src/readelf.c:9523 src/readelf.c:10567 +#: src/readelf.c:9631 src/readelf.c:10675 msgid " <INVALID DATA>\n" msgstr "" -#: src/readelf.c:9578 src/readelf.c:9741 +#: src/readelf.c:9686 src/readelf.c:9849 #, c-format msgid "cannot get macro information section data: %s" msgstr "" -#: src/readelf.c:9658 +#: src/readelf.c:9766 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "" -#: src/readelf.c:9681 +#: src/readelf.c:9789 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "" -#: src/readelf.c:9782 +#: src/readelf.c:9890 #, fuzzy, c-format msgid " Offset: 0x%<PRIx64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:9794 +#: src/readelf.c:9902 #, fuzzy, c-format msgid " Version: %<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:9800 src/readelf.c:10687 +#: src/readelf.c:9908 src/readelf.c:10795 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:9807 +#: src/readelf.c:9915 #, fuzzy, c-format msgid " Flag: 0x%<PRIx8>" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:9836 +#: src/readelf.c:9944 #, c-format msgid " Offset length: %<PRIu8>\n" msgstr "" -#: src/readelf.c:9844 +#: src/readelf.c:9952 #, c-format msgid " .debug_line offset: 0x%<PRIx64>\n" msgstr "" -#: src/readelf.c:9869 +#: src/readelf.c:9977 #, c-format msgid " extension opcode table, %<PRIu8> items:\n" msgstr "" -#: src/readelf.c:9876 +#: src/readelf.c:9984 #, c-format msgid " [%<PRIx8>]" msgstr "" -#: src/readelf.c:9888 +#: src/readelf.c:9996 #, c-format msgid " %<PRIu8> arguments:" msgstr "" -#: src/readelf.c:9903 +#: src/readelf.c:10011 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10104 +#: src/readelf.c:10212 #, c-format msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n" msgstr "" -#: src/readelf.c:10148 +#: src/readelf.c:10256 #, c-format msgid "" "\n" @@ -5283,72 +5288,72 @@ msgid "" " %*s String\n" msgstr "" -#: src/readelf.c:10163 +#: src/readelf.c:10271 #, c-format msgid " *** error, missing string terminator\n" msgstr "" -#: src/readelf.c:10192 +#: src/readelf.c:10300 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:10291 +#: src/readelf.c:10399 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10293 +#: src/readelf.c:10401 #, fuzzy, c-format msgid " Offset size: %8<PRIu8>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10307 +#: src/readelf.c:10415 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10316 +#: src/readelf.c:10424 #, fuzzy, c-format msgid " Padding: %8<PRIx16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10370 +#: src/readelf.c:10478 #, c-format msgid "" "\n" "Call frame search table section [%2zu] '.eh_frame_hdr':\n" msgstr "" -#: src/readelf.c:10472 +#: src/readelf.c:10580 #, c-format msgid "" "\n" "Exception handling table section [%2zu] '.gcc_except_table':\n" msgstr "" -#: src/readelf.c:10495 +#: src/readelf.c:10603 #, c-format msgid " LPStart encoding: %#x " msgstr "" -#: src/readelf.c:10507 +#: src/readelf.c:10615 #, c-format msgid " TType encoding: %#x " msgstr "" -#: src/readelf.c:10522 +#: src/readelf.c:10630 #, c-format msgid " Call site encoding: %#x " msgstr "" -#: src/readelf.c:10535 +#: src/readelf.c:10643 msgid "" "\n" " Call site table:" msgstr "" -#: src/readelf.c:10549 +#: src/readelf.c:10657 #, c-format msgid "" " [%4u] Call site start: %#<PRIx64>\n" @@ -5357,142 +5362,142 @@ msgid "" " Action: %u\n" msgstr "" -#: src/readelf.c:10622 +#: src/readelf.c:10730 #, c-format msgid "invalid TType encoding" msgstr "" -#: src/readelf.c:10649 +#: src/readelf.c:10757 #, c-format msgid "" "\n" "GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n" msgstr "" -#: src/readelf.c:10678 +#: src/readelf.c:10786 #, fuzzy, c-format msgid " Version: %<PRId32>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10696 +#: src/readelf.c:10804 #, c-format msgid " CU offset: %#<PRIx32>\n" msgstr "" -#: src/readelf.c:10703 +#: src/readelf.c:10811 #, c-format msgid " TU offset: %#<PRIx32>\n" msgstr "" -#: src/readelf.c:10710 +#: src/readelf.c:10818 #, c-format msgid " address offset: %#<PRIx32>\n" msgstr "" -#: src/readelf.c:10717 +#: src/readelf.c:10825 #, c-format msgid " symbol offset: %#<PRIx32>\n" msgstr "" -#: src/readelf.c:10724 +#: src/readelf.c:10832 #, c-format msgid " constant offset: %#<PRIx32>\n" msgstr "" -#: src/readelf.c:10738 +#: src/readelf.c:10846 #, c-format msgid "" "\n" " CU list at offset %#<PRIx32> contains %zu entries:\n" msgstr "" -#: src/readelf.c:10763 +#: src/readelf.c:10871 #, c-format msgid "" "\n" " TU list at offset %#<PRIx32> contains %zu entries:\n" msgstr "" -#: src/readelf.c:10792 +#: src/readelf.c:10900 #, c-format msgid "" "\n" " Address list at offset %#<PRIx32> contains %zu entries:\n" msgstr "" -#: src/readelf.c:10824 +#: src/readelf.c:10932 #, c-format msgid "" "\n" " Symbol table at offset %#<PRIx32> contains %zu slots:\n" msgstr "" -#: src/readelf.c:10962 +#: src/readelf.c:11070 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "" -#: src/readelf.c:11325 src/readelf.c:11947 src/readelf.c:12058 -#: src/readelf.c:12116 +#: src/readelf.c:11433 src/readelf.c:12055 src/readelf.c:12166 +#: src/readelf.c:12224 #, c-format msgid "cannot convert core note data: %s" msgstr "" -#: src/readelf.c:11688 +#: src/readelf.c:11796 #, c-format msgid "" "\n" "%*s... <repeats %u more times> ..." msgstr "" -#: src/readelf.c:12195 +#: src/readelf.c:12303 msgid " Owner Data size Type\n" msgstr "" -#: src/readelf.c:12224 +#: src/readelf.c:12332 #, c-format msgid " %-13.*s %9<PRId32> %s\n" msgstr "" -#: src/readelf.c:12276 +#: src/readelf.c:12384 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "Konnte Inhalt von %s: %s nicht lesen" -#: src/readelf.c:12303 +#: src/readelf.c:12411 #, c-format msgid "" "\n" "Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n" msgstr "" -#: src/readelf.c:12326 +#: src/readelf.c:12434 #, c-format msgid "" "\n" "Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n" msgstr "" -#: src/readelf.c:12373 +#: src/readelf.c:12481 #, fuzzy, c-format msgid "" "\n" "Section [%zu] '%s' has no data to dump.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12400 src/readelf.c:12451 +#: src/readelf.c:12508 src/readelf.c:12559 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12405 +#: src/readelf.c:12513 #, c-format msgid "" "\n" "Hex dump of section [%zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n" msgstr "" -#: src/readelf.c:12410 +#: src/readelf.c:12518 #, c-format msgid "" "\n" @@ -5500,21 +5505,21 @@ msgid "" "%#0<PRIx64>:\n" msgstr "" -#: src/readelf.c:12424 +#: src/readelf.c:12532 #, fuzzy, c-format msgid "" "\n" "Section [%zu] '%s' has no strings to dump.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12456 +#: src/readelf.c:12564 #, c-format msgid "" "\n" "String section [%zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n" msgstr "" -#: src/readelf.c:12461 +#: src/readelf.c:12569 #, c-format msgid "" "\n" @@ -5522,45 +5527,45 @@ msgid "" "offset %#0<PRIx64>:\n" msgstr "" -#: src/readelf.c:12510 +#: src/readelf.c:12618 #, c-format msgid "" "\n" "section [%lu] does not exist" msgstr "" -#: src/readelf.c:12539 +#: src/readelf.c:12647 #, c-format msgid "" "\n" "section '%s' does not exist" msgstr "" -#: src/readelf.c:12596 +#: src/readelf.c:12704 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "" -#: src/readelf.c:12599 +#: src/readelf.c:12707 #, c-format msgid "" "\n" "Archive '%s' has no symbol index\n" msgstr "" -#: src/readelf.c:12603 +#: src/readelf.c:12711 #, c-format msgid "" "\n" "Index of archive '%s' has %zu entries:\n" msgstr "" -#: src/readelf.c:12621 +#: src/readelf.c:12729 #, fuzzy, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:12626 +#: src/readelf.c:12734 #, c-format msgid "Archive member '%s' contains:\n" msgstr "" @@ -5623,12 +5628,17 @@ msgstr "" msgid "%s: file format not recognized" msgstr "" -#: src/size.c:418 src/size.c:551 +#: src/size.c:418 src/size.c:557 #, c-format msgid " (ex %s)" msgstr "" -#: src/size.c:576 +#: src/size.c:482 +#, fuzzy, c-format +msgid "cannot get section header" +msgstr "konnte Abschnittsdaten nicht holen: %s" + +#: src/size.c:582 msgid "(TOTALS)\n" msgstr "" @@ -5987,7 +5997,7 @@ msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" msgid "%s: error while getting shdrstrndx: %s" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" -#: src/strip.c:1654 src/strip.c:2534 +#: src/strip.c:1654 src/strip.c:2535 #, fuzzy, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" @@ -6017,47 +6027,47 @@ msgstr "" msgid "no memory to create section header string table" msgstr "" -#: src/strip.c:2027 +#: src/strip.c:2028 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2450 src/strip.c:2558 +#: src/strip.c:2451 src/strip.c:2559 #, c-format msgid "while writing '%s': %s" msgstr "" -#: src/strip.c:2461 +#: src/strip.c:2462 #, c-format msgid "while creating '%s'" msgstr "" -#: src/strip.c:2484 +#: src/strip.c:2485 #, c-format msgid "while computing checksum for debug information" msgstr "" -#: src/strip.c:2525 +#: src/strip.c:2526 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "" -#: src/strip.c:2543 +#: src/strip.c:2544 #, c-format msgid "%s: error while reading the file: %s" msgstr "" -#: src/strip.c:2583 src/strip.c:2603 +#: src/strip.c:2584 src/strip.c:2604 #, fuzzy, c-format msgid "while writing '%s'" msgstr "beim Schliessen von '%s'" -#: src/strip.c:2640 src/strip.c:2647 +#: src/strip.c:2641 src/strip.c:2648 #, c-format msgid "error while finishing '%s': %s" msgstr "" -#: src/strip.c:2664 src/strip.c:2740 +#: src/strip.c:2665 src/strip.c:2741 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "" @@ -6143,7 +6153,7 @@ msgstr "" msgid "cannot get shdrstrndx:%s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:248 src/unstrip.c:2034 +#: src/unstrip.c:248 src/unstrip.c:2038 #, c-format msgid "cannot get ELF header: %s" msgstr "" @@ -6163,12 +6173,12 @@ msgstr "konnte Versionierungsabschnitt nicht erstellen: %s" msgid "cannot copy ELF header: %s" msgstr "" -#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 +#: src/unstrip.c:269 src/unstrip.c:2056 src/unstrip.c:2099 #, fuzzy, c-format msgid "cannot get number of program headers: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/unstrip.c:274 src/unstrip.c:2056 +#: src/unstrip.c:274 src/unstrip.c:2060 #, c-format msgid "cannot create program headers: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" @@ -6183,12 +6193,12 @@ msgstr "konnte Programm-Kopf nicht kopieren: %s" msgid "cannot copy section header: %s" msgstr "" -#: src/unstrip.c:293 src/unstrip.c:1665 +#: src/unstrip.c:293 src/unstrip.c:1669 #, c-format msgid "cannot get section data: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:295 src/unstrip.c:1667 +#: src/unstrip.c:295 src/unstrip.c:1671 #, c-format msgid "cannot copy section data: %s" msgstr "konnte Abschnittsdaten nicht kopieren: %s" @@ -6198,13 +6208,14 @@ msgstr "konnte Abschnittsdaten nicht kopieren: %s" msgid "cannot create directory '%s'" msgstr "konnte Verzeichnis nicht erstellen: %s" -#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 +#: src/unstrip.c:391 src/unstrip.c:647 src/unstrip.c:681 src/unstrip.c:847 +#: src/unstrip.c:1706 #, c-format msgid "cannot get symbol table entry: %s" msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s" -#: src/unstrip.c:407 src/unstrip.c:649 src/unstrip.c:670 src/unstrip.c:682 -#: src/unstrip.c:1723 src/unstrip.c:1918 src/unstrip.c:1942 +#: src/unstrip.c:407 src/unstrip.c:650 src/unstrip.c:671 src/unstrip.c:684 +#: src/unstrip.c:1727 src/unstrip.c:1922 src/unstrip.c:1946 #, c-format msgid "cannot update symbol table: %s" msgstr "konnte Symboltabelle nicht aktualisieren: %s" @@ -6229,213 +6240,213 @@ msgstr "" msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "" -#: src/unstrip.c:851 +#: src/unstrip.c:853 #, fuzzy, c-format msgid "invalid string offset in symbol [%zu]" msgstr "ungültiger Offset %zu für Symbol %s" -#: src/unstrip.c:1009 src/unstrip.c:1398 +#: src/unstrip.c:1011 src/unstrip.c:1402 #, fuzzy, c-format msgid "cannot read section [%zu] name: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:1024 +#: src/unstrip.c:1026 #, fuzzy, c-format msgid "bad sh_link for group section: %s" msgstr "ungültige .debug_line Sektion" -#: src/unstrip.c:1030 +#: src/unstrip.c:1032 #, fuzzy, c-format msgid "couldn't get shdr for group section: %s" msgstr "konnte Versionierungsabschnitt nicht erstellen: %s" -#: src/unstrip.c:1035 +#: src/unstrip.c:1037 #, fuzzy, c-format msgid "bad data for group symbol section: %s" msgstr "ungültige .debug_line Sektion" -#: src/unstrip.c:1041 +#: src/unstrip.c:1043 #, fuzzy, c-format msgid "couldn't get symbol for group section: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/unstrip.c:1046 +#: src/unstrip.c:1048 #, fuzzy, c-format msgid "bad symbol name for group section: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/unstrip.c:1088 src/unstrip.c:1107 src/unstrip.c:1145 +#: src/unstrip.c:1090 src/unstrip.c:1109 src/unstrip.c:1147 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "" -#: src/unstrip.c:1125 +#: src/unstrip.c:1127 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "" -#: src/unstrip.c:1136 +#: src/unstrip.c:1138 #, c-format msgid "invalid contents in '%s' section" msgstr "" -#: src/unstrip.c:1192 src/unstrip.c:1524 +#: src/unstrip.c:1194 src/unstrip.c:1528 #, fuzzy, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 +#: src/unstrip.c:1319 src/unstrip.c:1335 src/unstrip.c:1607 src/unstrip.c:1881 #, c-format msgid "cannot add section name to string table: %s" msgstr "" -#: src/unstrip.c:1341 +#: src/unstrip.c:1344 #, c-format msgid "cannot update section header string table data: %s" msgstr "" -#: src/unstrip.c:1369 src/unstrip.c:1373 +#: src/unstrip.c:1373 src/unstrip.c:1377 #, c-format msgid "cannot get section header string table section index: %s" msgstr "" -#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 +#: src/unstrip.c:1381 src/unstrip.c:1385 src/unstrip.c:1622 #, c-format msgid "cannot get section count: %s" msgstr "" -#: src/unstrip.c:1384 +#: src/unstrip.c:1388 #, c-format msgid "more sections in stripped file than debug file -- arguments reversed?" msgstr "" -#: src/unstrip.c:1446 src/unstrip.c:1539 +#: src/unstrip.c:1450 src/unstrip.c:1543 #, c-format msgid "cannot read section header string table: %s" msgstr "" -#: src/unstrip.c:1597 +#: src/unstrip.c:1601 #, c-format msgid "cannot add new section: %s" msgstr "" -#: src/unstrip.c:1710 +#: src/unstrip.c:1714 #, fuzzy, c-format msgid "symbol [%zu] has invalid section index" msgstr "ungültiger Abschnittsindex" -#: src/unstrip.c:1742 +#: src/unstrip.c:1746 #, fuzzy, c-format msgid "group has invalid section index [%zd]" msgstr "ungültiger Abschnittsindex" -#: src/unstrip.c:2013 +#: src/unstrip.c:2017 #, fuzzy, c-format msgid "cannot read section data: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:2042 +#: src/unstrip.c:2046 #, c-format msgid "cannot update ELF header: %s" msgstr "" -#: src/unstrip.c:2066 +#: src/unstrip.c:2070 #, c-format msgid "cannot update program header: %s" msgstr "konnte Programm-Kopf nicht aktualisieren: %s" -#: src/unstrip.c:2071 src/unstrip.c:2153 +#: src/unstrip.c:2075 src/unstrip.c:2157 #, c-format msgid "cannot write output file: %s" msgstr "" -#: src/unstrip.c:2122 +#: src/unstrip.c:2126 #, c-format msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" msgstr "" -#: src/unstrip.c:2125 +#: src/unstrip.c:2129 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" msgstr "" -#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 +#: src/unstrip.c:2148 src/unstrip.c:2199 src/unstrip.c:2211 src/unstrip.c:2297 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "" -#: src/unstrip.c:2186 +#: src/unstrip.c:2190 msgid "WARNING: " msgstr "" -#: src/unstrip.c:2188 +#: src/unstrip.c:2192 msgid ", use --force" msgstr "" -#: src/unstrip.c:2211 +#: src/unstrip.c:2215 msgid "ELF header identification (e_ident) different" msgstr "" -#: src/unstrip.c:2214 +#: src/unstrip.c:2218 msgid "ELF header type (e_type) different" msgstr "" -#: src/unstrip.c:2217 +#: src/unstrip.c:2221 msgid "ELF header machine type (e_machine) different" msgstr "" -#: src/unstrip.c:2220 +#: src/unstrip.c:2224 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "" -#: src/unstrip.c:2250 +#: src/unstrip.c:2254 #, c-format msgid "cannot find stripped file for module '%s': %s" msgstr "" -#: src/unstrip.c:2254 +#: src/unstrip.c:2258 #, c-format msgid "cannot open stripped file '%s' for module '%s': %s" msgstr "" -#: src/unstrip.c:2269 +#: src/unstrip.c:2273 #, c-format msgid "cannot find debug file for module '%s': %s" msgstr "" -#: src/unstrip.c:2273 +#: src/unstrip.c:2277 #, c-format msgid "cannot open debug file '%s' for module '%s': %s" msgstr "" -#: src/unstrip.c:2286 +#: src/unstrip.c:2290 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "" -#: src/unstrip.c:2317 +#: src/unstrip.c:2321 #, c-format msgid "cannot cache section addresses for module '%s': %s" msgstr "" -#: src/unstrip.c:2450 +#: src/unstrip.c:2454 #, c-format msgid "no matching modules found" msgstr "kein passendes Modul gefunden" -#: src/unstrip.c:2459 +#: src/unstrip.c:2463 #, c-format msgid "matched more than one module" msgstr "mehr als ein passendes Modul" -#: src/unstrip.c:2503 +#: src/unstrip.c:2507 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" msgstr "" -#: src/unstrip.c:2504 +#: src/unstrip.c:2508 msgid "" "Combine stripped files with separate symbols and debug information.\n" "\n" @@ -6463,7 +6474,7 @@ msgid "" "was found, or . if FILE contains the debug information." msgstr "" -#: tests/backtrace.c:437 +#: tests/backtrace.c:436 msgid "Run executable" 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: 2019-02-14 14:31+0100\n" +"POT-Creation-Date: 2019-08-13 23:38+0200\n" "PO-Revision-Date: 2011-01-10 15:17-0300\n" "Last-Translator: Claudio Rodrigo Pereyra Diaz <claudiorodrigo@pereyradiaz." "com.ar>\n" @@ -57,8 +57,8 @@ msgstr "" "garantÃa, ni siquiera para SU COMERCIALIZACIÓN o PARA SER USADO CON UN FIN " "DETERMINADO.\n" -#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 -#: src/readelf.c:11274 src/unstrip.c:2346 src/unstrip.c:2552 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3433 +#: src/readelf.c:11382 src/unstrip.c:2350 src/unstrip.c:2556 #, c-format msgid "memory exhausted" msgstr "memoria agotada" @@ -300,7 +300,7 @@ msgstr "código operativo desconocido " msgid ".debug_addr section missing" msgstr ".debug_ranges section faltante" -#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2497 msgid "Input selection options:" msgstr "Opciones de selección de entrada:" @@ -600,7 +600,7 @@ msgstr " OS: %s, ABI: " msgid "Stand alone" msgstr "Autónomo" -#: libebl/eblsymbolbindingname.c:67 libebl/eblsymboltypename.c:73 +#: libebl/eblsymbolbindingname.c:68 libebl/eblsymboltypename.c:74 #, c-format msgid "<unknown>: %d" msgstr "<desconocido>: %d" @@ -625,7 +625,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:6129 +#: libelf/elf_error.c:87 src/readelf.c:6150 #, c-format msgid "invalid encoding" msgstr "codificación inválida" @@ -711,8 +711,8 @@ msgstr "no coinciden los datos/scn" msgid "invalid section header" msgstr "encabezamiento de sección inválida" -#: libelf/elf_error.c:191 src/readelf.c:9790 src/readelf.c:10390 -#: src/readelf.c:10491 src/readelf.c:10673 +#: libelf/elf_error.c:191 src/readelf.c:9898 src/readelf.c:10498 +#: src/readelf.c:10599 src/readelf.c:10781 #, c-format msgid "invalid data" msgstr "datos inválidos" @@ -1382,7 +1382,7 @@ msgstr "Valor inválido '%s' para parámetro --gaps" #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 -#: src/unstrip.c:2142 src/unstrip.c:2171 +#: src/unstrip.c:2146 src/unstrip.c:2175 #, c-format msgid "cannot open '%s'" msgstr "Imposible abrir '%s'" @@ -1510,7 +1510,7 @@ msgstr "" msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "Chequeo minucioso de ficheros ELF de acuerdo con gABI/psABI " -#: src/elflint.c:154 src/readelf.c:346 +#: src/elflint.c:154 src/readelf.c:357 #, c-format msgid "cannot open input file" msgstr "no se puede abrir el fichero de entrada" @@ -1529,7 +1529,7 @@ msgstr "error al cerrar el descriptor ELF: %s\n" msgid "No errors" msgstr "No hay errores" -#: src/elflint.c:219 src/readelf.c:545 +#: src/elflint.c:219 src/readelf.c:559 msgid "Missing file name.\n" msgstr "Falta el nombre de archivo.\n" @@ -3729,7 +3729,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: ERROR INTERNO %d (%s-%s): %s" #: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308 -#: src/strip.c:2747 +#: src/strip.c:2748 #, c-format msgid "while closing '%s'" msgstr "error al cerrar '%s'" @@ -3774,19 +3774,19 @@ msgstr "%s%s%s: no se reconoció el formato de fichero" msgid "cannot create search tree" msgstr "No se puede crear el árbol de búsqueda" -#: src/nm.c:746 src/nm.c:1207 src/objdump.c:777 src/readelf.c:605 -#: src/readelf.c:1412 src/readelf.c:1563 src/readelf.c:1764 src/readelf.c:1970 -#: src/readelf.c:2160 src/readelf.c:2338 src/readelf.c:2414 src/readelf.c:2672 -#: src/readelf.c:2748 src/readelf.c:2835 src/readelf.c:3433 src/readelf.c:3483 -#: src/readelf.c:3546 src/readelf.c:11106 src/readelf.c:12291 -#: src/readelf.c:12495 src/readelf.c:12563 src/size.c:398 src/size.c:467 +#: src/nm.c:746 src/nm.c:1205 src/objdump.c:777 src/readelf.c:619 +#: src/readelf.c:1431 src/readelf.c:1582 src/readelf.c:1783 src/readelf.c:1989 +#: src/readelf.c:2179 src/readelf.c:2357 src/readelf.c:2433 src/readelf.c:2691 +#: src/readelf.c:2767 src/readelf.c:2854 src/readelf.c:3452 src/readelf.c:3502 +#: src/readelf.c:3565 src/readelf.c:11214 src/readelf.c:12399 +#: src/readelf.c:12603 src/readelf.c:12671 src/size.c:398 src/size.c:470 #: src/strip.c:1038 #, c-format msgid "cannot get section header string table index" msgstr "no se puede obtener Ãndice de cadena de encabezamiento de sección" #. We always print this prolog. -#: src/nm.c:773 +#: src/nm.c:771 #, c-format msgid "" "\n" @@ -3800,7 +3800,7 @@ msgstr "" "\n" #. The header line. -#: src/nm.c:776 +#: src/nm.c:774 #, c-format msgid "" "%*s%-*s %-*s Class Type %-*s %*s Section\n" @@ -3809,30 +3809,30 @@ msgstr "" "%*s%-*s %-*s Clase Tipo %-*s %*s Sección\n" "\n" -#: src/nm.c:1218 +#: src/nm.c:1216 #, fuzzy, c-format msgid "%s: entry size in section %zd `%s' is not what we expect" msgstr "" "%s: el tamaño de la entrada en la sección `%s' no es el que esperábamos " -#: src/nm.c:1223 +#: src/nm.c:1221 #, fuzzy, c-format msgid "%s: size of section %zd `%s' is not multiple of entry size" msgstr "%s: Tamaño de sección `%s' no es múltiplo de tamaño de entrada" -#: src/nm.c:1302 +#: src/nm.c:1300 #, fuzzy, c-format msgid "%s: entries (%zd) in section %zd `%s' is too large" msgstr "" "%s: el tamaño de la entrada en la sección `%s' no es el que esperábamos " #. XXX Add machine specific object file types. -#: src/nm.c:1528 +#: src/nm.c:1526 #, c-format msgid "%s%s%s%s: Invalid operation" msgstr "%s%s%s%s: Operación inválida" -#: src/nm.c:1585 +#: src/nm.c:1583 #, c-format msgid "%s%s%s: no symbols" msgstr "%s%s%s: No hay sÃmbolos" @@ -3867,7 +3867,7 @@ msgstr "Sólo muestra información para NOMBRE de sección." msgid "Show information from FILEs (a.out by default)." msgstr "Muestra información de FICHEROS (a.out por defecto)." -#: src/objdump.c:218 src/readelf.c:550 +#: src/objdump.c:218 src/readelf.c:564 msgid "No operation specified.\n" msgstr "No se especificó una operación.\n" @@ -3876,11 +3876,11 @@ msgstr "No se especificó una operación.\n" msgid "while close `%s'" msgstr "mientras cierra `%s'" -#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 +#: src/objdump.c:363 src/readelf.c:2084 src/readelf.c:2276 msgid "INVALID SYMBOL" msgstr "SÃMBOLO INVÃLIDO" -#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 +#: src/objdump.c:378 src/readelf.c:2118 src/readelf.c:2312 msgid "INVALID SECTION" msgstr "SECCIÓN INVÃLIDA" @@ -4069,151 +4069,151 @@ msgstr "" "seres humanos." #. Look up once. -#: src/readelf.c:328 +#: src/readelf.c:339 msgid "yes" msgstr "sÃ" -#: src/readelf.c:329 +#: src/readelf.c:340 msgid "no" msgstr "no" -#: src/readelf.c:518 +#: src/readelf.c:532 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "Sección de depuración DWARF desconocida `%s'.\n" -#: src/readelf.c:589 src/readelf.c:700 +#: src/readelf.c:603 src/readelf.c:714 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "no se puede crear descriptor ELF: %s" -#: src/readelf.c:596 src/readelf.c:923 src/strip.c:1133 +#: src/readelf.c:610 src/readelf.c:937 src/strip.c:1133 #, c-format msgid "cannot determine number of sections: %s" msgstr "no se pudieron determinar el número de secciones: %s" -#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 +#: src/readelf.c:628 src/readelf.c:1247 src/readelf.c:1455 #, c-format msgid "cannot get section: %s" msgstr "No se puede encontrar la sección: %s" -#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12515 +#: src/readelf.c:637 src/readelf.c:1254 src/readelf.c:1463 src/readelf.c:12623 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:481 src/unstrip.c:600 -#: src/unstrip.c:621 src/unstrip.c:660 src/unstrip.c:871 src/unstrip.c:1202 -#: src/unstrip.c:1394 src/unstrip.c:1458 src/unstrip.c:1632 src/unstrip.c:1766 -#: src/unstrip.c:1909 src/unstrip.c:2004 +#: src/unstrip.c:621 src/unstrip.c:661 src/unstrip.c:873 src/unstrip.c:1204 +#: src/unstrip.c:1331 src/unstrip.c:1355 src/unstrip.c:1398 src/unstrip.c:1462 +#: src/unstrip.c:1636 src/unstrip.c:1770 src/unstrip.c:1913 src/unstrip.c:2008 #, c-format msgid "cannot get section header: %s" msgstr "No se puede obtener encabezamiento de sección: %s" -#: src/readelf.c:631 +#: src/readelf.c:645 #, fuzzy, c-format msgid "cannot get section name" msgstr "no se puede obtener encabezamiento de sección\n" -#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10378 src/readelf.c:10480 -#: src/readelf.c:10658 +#: src/readelf.c:654 src/readelf.c:6560 src/readelf.c:10486 src/readelf.c:10588 +#: src/readelf.c:10766 #, c-format msgid "cannot get %s content: %s" msgstr "No se puede obtener el contenido %s: %s" -#: src/readelf.c:656 +#: src/readelf.c:670 #, fuzzy, c-format msgid "cannot create temp file '%s'" msgstr "no se puede crear fichero nuevo '%s': %s" -#: src/readelf.c:665 +#: src/readelf.c:679 #, fuzzy, c-format msgid "cannot write section data" msgstr "no se puede leer la sección de datos: %s" -#: src/readelf.c:671 src/readelf.c:688 src/readelf.c:717 +#: src/readelf.c:685 src/readelf.c:702 src/readelf.c:731 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "error al cerrar el descriptor ELF: %s" -#: src/readelf.c:678 +#: src/readelf.c:692 #, fuzzy, c-format msgid "error while rewinding file descriptor" msgstr "error al cerrar el descriptor ELF: %s" -#: src/readelf.c:712 +#: src/readelf.c:726 #, c-format msgid "'%s' is not an archive, cannot print archive index" msgstr "'%s' no es un archivo, no se puede imprimir Ãndice de archivo" -#: src/readelf.c:816 +#: src/readelf.c:830 #, c-format msgid "cannot stat input file" msgstr "no sepudo stat archivo de entrada" -#: src/readelf.c:818 +#: src/readelf.c:832 #, c-format msgid "input file is empty" msgstr "archivo de entrada vacÃo" -#: src/readelf.c:820 +#: src/readelf.c:834 #, c-format msgid "failed reading '%s': %s" msgstr "Falló lectura de '%s': %s" -#: src/readelf.c:849 +#: src/readelf.c:863 #, fuzzy, c-format msgid "No such section '%s' in '%s'" msgstr "No se puede obtener contenido de sección %zu en '%s': %s" -#: src/readelf.c:908 +#: src/readelf.c:922 #, c-format msgid "cannot read ELF header: %s" msgstr "no se pudo leer encabezamiento ELF: %s" -#: src/readelf.c:916 +#: src/readelf.c:930 #, c-format msgid "cannot create EBL handle" msgstr "no se puede crear EBL" -#: src/readelf.c:929 +#: src/readelf.c:943 #, c-format msgid "cannot determine number of program headers: %s" msgstr "no se pudo determinar la cantidad de encabezados de programa: %s" -#: src/readelf.c:961 +#: src/readelf.c:975 #, fuzzy, c-format msgid "cannot read ELF: %s" msgstr "no sepuede leer %s: %s" -#: src/readelf.c:1022 +#: src/readelf.c:1036 msgid "NONE (None)" msgstr "NONE (Ninguno)" -#: src/readelf.c:1023 +#: src/readelf.c:1037 msgid "REL (Relocatable file)" msgstr "REL (Fichero reubicable)" -#: src/readelf.c:1024 +#: src/readelf.c:1038 msgid "EXEC (Executable file)" msgstr "EXEC (Fichero ejecutable)" -#: src/readelf.c:1025 +#: src/readelf.c:1039 msgid "DYN (Shared object file)" msgstr "DYN (Fichero objeto compartido)" -#: src/readelf.c:1026 +#: src/readelf.c:1040 msgid "CORE (Core file)" msgstr "CORE (Fichero núcleo)" -#: src/readelf.c:1031 +#: src/readelf.c:1045 #, c-format msgid "OS Specific: (%x)\n" msgstr "OS Specific: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1033 +#: src/readelf.c:1047 #, c-format msgid "Processor Specific: (%x)\n" msgstr "EspecÃfico del procesador: (%x)\n" -#: src/readelf.c:1043 +#: src/readelf.c:1057 msgid "" "ELF Header:\n" " Magic: " @@ -4221,7 +4221,7 @@ msgstr "" "Encabezamiento ELF:\n" " Mágico: " -#: src/readelf.c:1047 +#: src/readelf.c:1061 #, c-format msgid "" "\n" @@ -4230,120 +4230,125 @@ msgstr "" "\n" " Clase: %s\n" -#: src/readelf.c:1052 +#: src/readelf.c:1066 #, c-format msgid " Data: %s\n" msgstr " Datos: %s\n" -#: src/readelf.c:1058 +#: src/readelf.c:1072 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " Versión ident: %hhd %s\n" -#: src/readelf.c:1060 src/readelf.c:1077 +#: src/readelf.c:1074 src/readelf.c:1096 msgid "(current)" msgstr "(actual)" -#: src/readelf.c:1064 +#: src/readelf.c:1078 #, c-format msgid " OS/ABI: %s\n" msgstr " OS/ABI: %s\n" -#: src/readelf.c:1067 +#: src/readelf.c:1081 #, c-format msgid " ABI Version: %hhd\n" msgstr " Versión ABI: %hhd\n" -#: src/readelf.c:1070 +#: src/readelf.c:1084 msgid " Type: " msgstr " Tipo: " -#: src/readelf.c:1073 +#: src/readelf.c:1089 #, c-format msgid " Machine: %s\n" msgstr " Máquina: %s\n" -#: src/readelf.c:1075 +#: src/readelf.c:1091 +#, fuzzy, c-format +msgid " Machine: <unknown>: 0x%x\n" +msgstr " Máquina: %s\n" + +#: src/readelf.c:1094 #, c-format msgid " Version: %d %s\n" msgstr " Versión: %d %s\n" -#: src/readelf.c:1079 +#: src/readelf.c:1098 #, c-format msgid " Entry point address: %#<PRIx64>\n" msgstr " Dirección de punto de entrada: %#<PRIx64>\n" -#: src/readelf.c:1082 +#: src/readelf.c:1101 #, c-format msgid " Start of program headers: %<PRId64> %s\n" msgstr " Inicio de encabezamientos de programa: %<PRId64> %s\n" -#: src/readelf.c:1083 src/readelf.c:1086 +#: src/readelf.c:1102 src/readelf.c:1105 msgid "(bytes into file)" msgstr " (bytes en el archivo)" -#: src/readelf.c:1085 +#: src/readelf.c:1104 #, c-format msgid " Start of section headers: %<PRId64> %s\n" msgstr " Inicio de encabezamientos de sección: %<PRId64> %s\n" -#: src/readelf.c:1088 +#: src/readelf.c:1107 #, c-format msgid " Flags: %s\n" msgstr " Indicadores: %s\n" -#: src/readelf.c:1091 +#: src/readelf.c:1110 #, c-format msgid " Size of this header: %<PRId16> %s\n" msgstr " Tamaño de este encabezamiento: %<PRId16> %s\n" -#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 +#: src/readelf.c:1111 src/readelf.c:1114 src/readelf.c:1131 msgid "(bytes)" msgstr "(bytes)" -#: src/readelf.c:1094 +#: src/readelf.c:1113 #, c-format msgid " Size of program header entries: %<PRId16> %s\n" msgstr "" " Tamaño de las entradas en encabezamiento del programa: %<PRId16> %s\n" -#: src/readelf.c:1097 +#: src/readelf.c:1116 #, c-format msgid " Number of program headers entries: %<PRId16>" msgstr " Cantidad de entradas de encabezados de programa: %<PRId16>" -#: src/readelf.c:1104 +#: src/readelf.c:1123 #, c-format msgid " (%<PRIu32> in [0].sh_info)" msgstr " (%<PRIu32> in [0].sh_info)" -#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 +#: src/readelf.c:1126 src/readelf.c:1143 src/readelf.c:1157 msgid " ([0] not available)" msgstr " ([0] no disponible)" -#: src/readelf.c:1111 +#: src/readelf.c:1130 #, c-format msgid " Size of section header entries: %<PRId16> %s\n" msgstr "" " Tamaño de las entradas en el encabezamiento de sección: %<PRId16> %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1133 #, c-format msgid " Number of section headers entries: %<PRId16>" msgstr " Cantidad de entradas en los encabezamientos de sección: %<PRId16>" -#: src/readelf.c:1121 +#: src/readelf.c:1140 #, c-format msgid " (%<PRIu32> in [0].sh_size)" msgstr " (%<PRIu32> en [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1134 +#: src/readelf.c:1153 #, c-format msgid " (%<PRIu32> in [0].sh_link)" msgstr " (%<PRIu32> en [0].sh_link)" -#: src/readelf.c:1142 +#: src/readelf.c:1161 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4352,19 +4357,19 @@ msgstr "" " Ãndice de tabla de cadenas de sección de encabezamiento de : XINDEX%s\n" "\n" -#: src/readelf.c:1146 +#: src/readelf.c:1165 #, c-format msgid "" " Section header string table index: %<PRId16>\n" "\n" msgstr " Ãndice de tabla de cadenas de sección de encabezamiento: %<PRId16>\n" -#: src/readelf.c:1193 src/readelf.c:1401 +#: src/readelf.c:1212 src/readelf.c:1420 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "no se pudieron determinar el número de secciones: %s" -#: src/readelf.c:1196 +#: src/readelf.c:1215 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#<PRIx64>:\n" @@ -4373,16 +4378,16 @@ msgstr "" "Hay %d encabezamientos de sección, comenzando en compensación %#<PRIx64>:\n" "\n" -#: src/readelf.c:1205 +#: src/readelf.c:1224 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "no se puede obtener Ãndice de cadena de encabezamiento de sección" -#: src/readelf.c:1208 +#: src/readelf.c:1227 msgid "Section Headers:" msgstr "encabezamientos de sección:" -#: src/readelf.c:1211 +#: src/readelf.c:1230 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4390,7 +4395,7 @@ msgstr "" "[Nr] Nombre Tipo Dirección Off Tamaño Inf Al " "Enlace banderas ES" -#: src/readelf.c:1213 +#: src/readelf.c:1232 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4398,36 +4403,36 @@ msgstr "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" -#: src/readelf.c:1218 +#: src/readelf.c:1237 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1220 +#: src/readelf.c:1239 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1296 +#: src/readelf.c:1315 #, fuzzy, c-format msgid "bad compression header for section %zd: %s" msgstr "No se puede obtener el encabezamiento de sección %zu: %s" -#: src/readelf.c:1307 +#: src/readelf.c:1326 #, fuzzy, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "No se pueden obtener datos para la sección %d: %s" -#: src/readelf.c:1325 +#: src/readelf.c:1344 msgid "Program Headers:" msgstr "encabezamientos de programa:" -#: src/readelf.c:1327 +#: src/readelf.c:1346 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " Tipo Compensación Dirección Virtual Dirección " "FÃsica Tamaño de Fichero Tamaño de Memoria Alineación de bandera" -#: src/readelf.c:1330 +#: src/readelf.c:1349 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4435,12 +4440,12 @@ msgstr "" " Tipo Compensación Dirección Virtual Dirección " "FÃsica Tamaño de Fichero Tamaño de Memoria Alineación de bandera" -#: src/readelf.c:1387 +#: src/readelf.c:1406 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[Solicitando intérprete de programa: %s]\n" -#: src/readelf.c:1414 +#: src/readelf.c:1433 msgid "" "\n" " Section to Segment mapping:\n" @@ -4450,12 +4455,12 @@ msgstr "" " Sección para asignación de segmento:\n" " Secciones de segmento..." -#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 +#: src/readelf.c:1444 src/unstrip.c:2067 src/unstrip.c:2109 src/unstrip.c:2116 #, c-format msgid "cannot get program header: %s" msgstr "no se puede obtener memoria para encabezamiento del programa: %s" -#: src/readelf.c:1571 +#: src/readelf.c:1590 #, c-format msgid "" "\n" @@ -4470,7 +4475,7 @@ msgstr[1] "" "\n" "Grupo de sección COMDAT [%2zu] '%s' con firma '%s' contiene entradas %zu:\n" -#: src/readelf.c:1576 +#: src/readelf.c:1595 #, c-format msgid "" "\n" @@ -4485,31 +4490,31 @@ msgstr[1] "" "\n" "Grupo de sección [%2zu] '%s' con firma '%s' contiene entradas %zu:\n" -#: src/readelf.c:1584 +#: src/readelf.c:1603 msgid "<INVALID SYMBOL>" msgstr "<SÃMBOLO INVÃLIDO>" -#: src/readelf.c:1598 +#: src/readelf.c:1617 msgid "<INVALID SECTION>" msgstr "<SECCIÓN INVÃLIDA>" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12386 -#: src/readelf.c:12393 src/readelf.c:12437 src/readelf.c:12444 +#: src/readelf.c:1640 src/readelf.c:2367 src/readelf.c:3468 src/readelf.c:12494 +#: src/readelf.c:12501 src/readelf.c:12545 src/readelf.c:12552 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 +#: src/readelf.c:1645 src/readelf.c:2372 src/readelf.c:3473 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "No se puede obtener encabezamiento de sección: %s" -#: src/readelf.c:1770 src/readelf.c:2420 src/readelf.c:2678 src/readelf.c:2754 -#: src/readelf.c:3058 src/readelf.c:3132 src/readelf.c:5327 +#: src/readelf.c:1789 src/readelf.c:2439 src/readelf.c:2697 src/readelf.c:2773 +#: src/readelf.c:3077 src/readelf.c:3151 src/readelf.c:5348 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr ".debug_line section inválida" -#: src/readelf.c:1773 +#: src/readelf.c:1792 #, c-format msgid "" "\n" @@ -4530,36 +4535,36 @@ msgstr[1] "" " Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:1783 +#: src/readelf.c:1802 msgid " Type Value\n" msgstr " Tipo Valor\n" -#: src/readelf.c:1807 +#: src/readelf.c:1826 #, c-format msgid "Shared library: [%s]\n" msgstr "Biblioteca compartida: [%s]\n" -#: src/readelf.c:1812 +#: src/readelf.c:1831 #, c-format msgid "Library soname: [%s]\n" msgstr "Nombre-so de la biblioteca: [%s]\n" -#: src/readelf.c:1817 +#: src/readelf.c:1836 #, c-format msgid "Library rpath: [%s]\n" msgstr "Rpath de la biblioteca: [%s]\n" -#: src/readelf.c:1822 +#: src/readelf.c:1841 #, c-format msgid "Library runpath: [%s]\n" msgstr "Ruta de ejecución de la biblioteca: [%s]\n" -#: src/readelf.c:1842 +#: src/readelf.c:1861 #, c-format msgid "%<PRId64> (bytes)\n" msgstr "%<PRId64> (bytes)\n" -#: src/readelf.c:1955 src/readelf.c:2145 +#: src/readelf.c:1974 src/readelf.c:2164 #, c-format msgid "" "\n" @@ -4568,7 +4573,7 @@ msgstr "" "\n" "Tabla de sÃmbolos inválida en compensación %#0<PRIx64>\n" -#: src/readelf.c:1973 src/readelf.c:2163 +#: src/readelf.c:1992 src/readelf.c:2182 #, c-format msgid "" "\n" @@ -4593,7 +4598,7 @@ msgstr[1] "" #. The .rela.dyn section does not refer to a specific section but #. instead of section index zero. Do not try to print a section #. name. -#: src/readelf.c:1988 src/readelf.c:2178 +#: src/readelf.c:2007 src/readelf.c:2197 #, c-format msgid "" "\n" @@ -4610,29 +4615,29 @@ msgstr[1] "" "Sección de reubicación [%2u] '%s' en compensación %#0<PRIx64> contiene " "entradas %d:\n" -#: src/readelf.c:1998 +#: src/readelf.c:2017 msgid " Offset Type Value Name\n" msgstr " Compensación Tipo Valor Nombre\n" -#: src/readelf.c:2000 +#: src/readelf.c:2019 msgid " Offset Type Value Name\n" msgstr " Compensación Tipo Valor Nombre\n" -#: src/readelf.c:2053 src/readelf.c:2064 src/readelf.c:2077 src/readelf.c:2098 -#: src/readelf.c:2110 src/readelf.c:2244 src/readelf.c:2256 src/readelf.c:2270 -#: src/readelf.c:2292 src/readelf.c:2305 +#: src/readelf.c:2072 src/readelf.c:2083 src/readelf.c:2096 src/readelf.c:2117 +#: src/readelf.c:2129 src/readelf.c:2263 src/readelf.c:2275 src/readelf.c:2289 +#: src/readelf.c:2311 src/readelf.c:2324 msgid "<INVALID RELOC>" msgstr "<REUBIC INVÃLIDA>" -#: src/readelf.c:2188 +#: src/readelf.c:2207 msgid " Offset Type Value Addend Name\n" msgstr " Compensación Tipo Valor Nombre Adend\n" -#: src/readelf.c:2190 +#: src/readelf.c:2209 msgid " Offset Type Value Addend Name\n" msgstr " Compensación Tipo Valor Nombre Adend\n" -#: src/readelf.c:2428 +#: src/readelf.c:2447 #, c-format msgid "" "\n" @@ -4647,40 +4652,40 @@ msgstr[1] "" "\n" "La tabla de sÃmbolos [%2u] '%s' contiene entradas %u:\n" -#: src/readelf.c:2433 +#: src/readelf.c:2452 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" msgstr[0] "sÃmbolos locales %lu Tabla de cadena: [%2u] '%s'\n" msgstr[1] " SÃmbolos locales %lu Tabla de cadenas: [%2u] '%s'\n" -#: src/readelf.c:2441 +#: src/readelf.c:2460 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Núm: Valor Tamaño Tipo Unión Vis Nombre Ndx\n" -#: src/readelf.c:2443 +#: src/readelf.c:2462 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Num: Valor Tamaño Tipo Unión Vis Nombre Ndx\n" -#: src/readelf.c:2463 +#: src/readelf.c:2482 #, c-format msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" -#: src/readelf.c:2551 +#: src/readelf.c:2570 #, c-format msgid "bad dynamic symbol" msgstr "sÃmbolo dinámico erróneo" -#: src/readelf.c:2633 +#: src/readelf.c:2652 msgid "none" msgstr "nada" -#: src/readelf.c:2650 +#: src/readelf.c:2669 msgid "| <unknown>" msgstr "| <desconocido>" -#: src/readelf.c:2681 +#: src/readelf.c:2700 #, c-format msgid "" "\n" @@ -4701,17 +4706,17 @@ msgstr[1] "" " Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:2702 +#: src/readelf.c:2721 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Versión: %hu Fichero: %s Conteo: %hu\n" -#: src/readelf.c:2715 +#: src/readelf.c:2734 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Nombre: %s Banderas: %s Versión: %hu\n" -#: src/readelf.c:2758 +#: src/readelf.c:2777 #, c-format msgid "" "\n" @@ -4732,19 +4737,19 @@ msgstr[1] "" " Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:2786 +#: src/readelf.c:2805 #, c-format msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" msgstr "" " %#06x: Versión: %hd Banderas: %s Ãndice: %hd Conteo: %hd Nombre: %s\n" -#: src/readelf.c:2801 +#: src/readelf.c:2820 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: Principal %d: %s\n" #. Print the header. -#: src/readelf.c:3062 +#: src/readelf.c:3081 #, c-format msgid "" "\n" @@ -4765,15 +4770,15 @@ msgstr[1] "" " Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: " "[%2u] '%s'" -#: src/readelf.c:3090 +#: src/readelf.c:3109 msgid " 0 *local* " msgstr " 0 *local* " -#: src/readelf.c:3095 +#: src/readelf.c:3114 msgid " 1 *global* " msgstr " 1 *global* " -#: src/readelf.c:3137 +#: src/readelf.c:3156 #, c-format msgid "" "\n" @@ -4798,22 +4803,22 @@ msgstr[1] "" " Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:3159 +#: src/readelf.c:3178 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " Longitud Número % of total Cobertura\n" -#: src/readelf.c:3161 +#: src/readelf.c:3180 #, c-format msgid " 0 %6<PRIu32> %5.1f%%\n" msgstr " 0 %6<PRIu32> %5.1f%%\n" -#: src/readelf.c:3168 +#: src/readelf.c:3187 #, c-format msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" -#: src/readelf.c:3181 +#: src/readelf.c:3200 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4822,37 +4827,37 @@ msgstr "" " Número promedio de pruebas: búsqueda exitosa: %f\n" " búsqueda sin éxito: %f\n" -#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 +#: src/readelf.c:3218 src/readelf.c:3282 src/readelf.c:3348 #, c-format msgid "cannot get data for section %d: %s" msgstr "No se pueden obtener datos para la sección %d: %s" -#: src/readelf.c:3207 +#: src/readelf.c:3226 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3236 +#: src/readelf.c:3255 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3271 +#: src/readelf.c:3290 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3302 +#: src/readelf.c:3321 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3338 +#: src/readelf.c:3357 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3405 +#: src/readelf.c:3424 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4862,7 +4867,7 @@ msgstr "" " Tamaño de Bitmask: %zu bytes %<PRIuFAST32>%% bits establecen segundo " "cambio de dispersión: %u\n" -#: src/readelf.c:3494 +#: src/readelf.c:3513 #, c-format msgid "" "\n" @@ -4879,7 +4884,7 @@ msgstr[1] "" "Sección de lista de biblioteca [%2zu] '%s' en compensación %#0<PRIx64> " "contiene entradas %d:\n" -#: src/readelf.c:3508 +#: src/readelf.c:3527 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4887,7 +4892,7 @@ msgstr "" " Biblioteca Marca de tiempo Indicadores " "de versión de suma de verificación" -#: src/readelf.c:3558 +#: src/readelf.c:3579 #, c-format msgid "" "\n" @@ -4898,102 +4903,102 @@ msgstr "" "Sección de atributos de objeto [%2zu] '%s' de %<PRIu64> bytes con " "desplazamiento %#0<PRIx64>:\n" -#: src/readelf.c:3575 +#: src/readelf.c:3596 msgid " Owner Size\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:3604 +#: src/readelf.c:3625 #, c-format msgid " %-13s %4<PRIu32>\n" msgstr " %-13s %4<PRIu32>\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3643 +#: src/readelf.c:3664 #, c-format msgid " %-4u %12<PRIu32>\n" msgstr " %-4u %12<PRIu32>\n" #. Tag_File -#: src/readelf.c:3648 +#: src/readelf.c:3669 #, c-format msgid " File: %11<PRIu32>\n" msgstr " File: %11<PRIu32>\n" -#: src/readelf.c:3697 +#: src/readelf.c:3718 #, c-format msgid " %s: %<PRId64>, %s\n" msgstr " %s: %<PRId64>, %s\n" -#: src/readelf.c:3700 +#: src/readelf.c:3721 #, c-format msgid " %s: %<PRId64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:3703 +#: src/readelf.c:3724 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3713 +#: src/readelf.c:3734 #, c-format msgid " %u: %<PRId64>\n" msgstr " %u: %<PRId64>\n" -#: src/readelf.c:3716 +#: src/readelf.c:3737 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3786 +#: src/readelf.c:3807 #, fuzzy, c-format msgid "sprintf failure" msgstr "mprotect falló" -#: src/readelf.c:4268 +#: src/readelf.c:4289 msgid "empty block" msgstr "bloque vacÃo" -#: src/readelf.c:4271 +#: src/readelf.c:4292 #, c-format msgid "%zu byte block:" msgstr "bloque de byte %zu:" -#: src/readelf.c:4749 +#: src/readelf.c:4770 #, fuzzy, c-format msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n" msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n" -#: src/readelf.c:4813 +#: src/readelf.c:4834 #, c-format msgid "%s %#<PRIx64> used with different address sizes" msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño" -#: src/readelf.c:4820 +#: src/readelf.c:4841 #, c-format msgid "%s %#<PRIx64> used with different offset sizes" msgstr "%s %#<PRIx64> utilizado con offsetr de diferente tamaño" -#: src/readelf.c:4827 +#: src/readelf.c:4848 #, fuzzy, c-format msgid "%s %#<PRIx64> used with different base addresses" msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño" -#: src/readelf.c:4834 +#: src/readelf.c:4855 #, fuzzy, c-format msgid "%s %#<PRIx64> used with different attribute %s and %s" msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño" -#: src/readelf.c:4931 +#: src/readelf.c:4952 #, 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:4939 +#: src/readelf.c:4960 #, c-format msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n" msgstr " [%6tx] <MATERIAL INUTIL NO UTILIZADO> ... %<PRIu64> bytes ...\n" -#: src/readelf.c:5017 +#: src/readelf.c:5038 #, c-format msgid "" "\n" @@ -5004,7 +5009,7 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n" " [ Código]\n" -#: src/readelf.c:5025 +#: src/readelf.c:5046 #, c-format msgid "" "\n" @@ -5013,20 +5018,20 @@ msgstr "" "\n" "Sección de abreviatura en compensación %<PRIu64>:\n" -#: src/readelf.c:5038 +#: src/readelf.c:5059 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** error en lectura de abreviatura: %s\n" -#: src/readelf.c:5054 +#: src/readelf.c:5075 #, c-format msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n" msgstr " [%5u] compensación: %<PRId64>, hijos: %s, etiqueta: %s\n" -#: src/readelf.c:5087 src/readelf.c:5396 src/readelf.c:5563 src/readelf.c:5948 -#: src/readelf.c:6549 src/readelf.c:8199 src/readelf.c:8885 src/readelf.c:9321 -#: src/readelf.c:9566 src/readelf.c:9732 src/readelf.c:10119 -#: src/readelf.c:10179 +#: src/readelf.c:5108 src/readelf.c:5417 src/readelf.c:5584 src/readelf.c:5969 +#: src/readelf.c:6570 src/readelf.c:8307 src/readelf.c:8993 src/readelf.c:9429 +#: src/readelf.c:9674 src/readelf.c:9840 src/readelf.c:10227 +#: src/readelf.c:10287 #, c-format msgid "" "\n" @@ -5035,52 +5040,52 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n" -#: src/readelf.c:5100 +#: src/readelf.c:5121 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "no se pueden obtener datos de sección: %s" -#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8930 +#: src/readelf.c:5221 src/readelf.c:5245 src/readelf.c:5629 src/readelf.c:9038 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8943 +#: src/readelf.c:5223 src/readelf.c:5260 src/readelf.c:5642 src/readelf.c:9051 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8952 +#: src/readelf.c:5224 src/readelf.c:5269 src/readelf.c:5651 src/readelf.c:9060 #, fuzzy, c-format msgid " Address size: %8<PRIu64>\n" msgstr " (fin de compensación: %#<PRIx64>)" -#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8962 +#: src/readelf.c:5226 src/readelf.c:5279 src/readelf.c:5661 src/readelf.c:9070 #, fuzzy, c-format msgid " Segment size: %8<PRIu64>\n" msgstr " establecer archivo a %<PRIu64>\n" -#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8947 src/readelf.c:10311 +#: src/readelf.c:5264 src/readelf.c:5646 src/readelf.c:9055 src/readelf.c:10419 #, fuzzy, c-format msgid "Unknown version" msgstr "versión desconocida" -#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8957 +#: src/readelf.c:5274 src/readelf.c:5487 src/readelf.c:5656 src/readelf.c:9065 #, fuzzy, c-format msgid "unsupported address size" msgstr "no hay valor de dirección" -#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8967 +#: src/readelf.c:5285 src/readelf.c:5498 src/readelf.c:5666 src/readelf.c:9075 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5317 src/readelf.c:5391 +#: src/readelf.c:5338 src/readelf.c:5412 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "no se ha podido obtener contenido de .debug_aranges: %s" -#: src/readelf.c:5332 +#: src/readelf.c:5353 #, c-format msgid "" "\n" @@ -5095,12 +5100,12 @@ msgstr[1] "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entradas %zu:\n" -#: src/readelf.c:5363 +#: src/readelf.c:5384 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5365 +#: src/readelf.c:5386 #, c-format msgid "" " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n" @@ -5108,7 +5113,7 @@ msgstr "" " Inicio [%*zu]: %0#*<PRIx64>, longitud: %5<PRIu64>, compensación CU DIE: " "%6<PRId64>\n" -#: src/readelf.c:5409 src/readelf.c:8226 +#: src/readelf.c:5430 src/readelf.c:8334 #, fuzzy, c-format msgid "" "\n" @@ -5117,152 +5122,152 @@ msgstr "" "\n" "Tabla en compensación %Zu:\n" -#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 -#: src/readelf.c:8911 +#: src/readelf.c:5434 src/readelf.c:5610 src/readelf.c:6594 src/readelf.c:8345 +#: src/readelf.c:9019 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:5429 +#: src/readelf.c:5450 #, fuzzy, c-format msgid "" "\n" " Length: %6<PRIu64>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:5441 +#: src/readelf.c:5462 #, fuzzy, c-format msgid " DWARF version: %6<PRIuFAST16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5445 +#: src/readelf.c:5466 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5456 +#: src/readelf.c:5477 #, fuzzy, c-format msgid " CU offset: %6<PRIx64>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:5462 +#: src/readelf.c:5483 #, fuzzy, c-format msgid " Address size: %6<PRIu64>\n" msgstr " (fin de compensación: %#<PRIx64>)" -#: src/readelf.c:5473 +#: src/readelf.c:5494 #, fuzzy, c-format msgid "" " Segment size: %6<PRIu64>\n" "\n" msgstr " establecer archivo a %<PRIu64>\n" -#: src/readelf.c:5528 +#: src/readelf.c:5549 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5572 +#: src/readelf.c:5593 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr "no se ha podido obtener contenido de .debug_ranges: %s" -#: src/readelf.c:5595 src/readelf.c:8917 +#: src/readelf.c:5616 src/readelf.c:9025 #, fuzzy, c-format msgid "" "Table at Offset 0x%<PRIx64>:\n" "\n" msgstr " (fin de compensación: %#<PRIx64>)" -#: src/readelf.c:5650 src/readelf.c:8972 +#: src/readelf.c:5671 src/readelf.c:9080 #, fuzzy, c-format msgid " Offset entries: %8<PRIu64>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:5666 src/readelf.c:8988 +#: src/readelf.c:5687 src/readelf.c:9096 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8990 +#: src/readelf.c:5689 src/readelf.c:9098 #, c-format msgid " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5674 src/readelf.c:8996 +#: src/readelf.c:5695 src/readelf.c:9104 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5685 src/readelf.c:9007 +#: src/readelf.c:5706 src/readelf.c:9115 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5689 src/readelf.c:9011 +#: src/readelf.c:5710 src/readelf.c:9119 #, fuzzy, c-format msgid " Offsets starting at 0x%<PRIx64>:\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:5741 +#: src/readelf.c:5762 #, fuzzy, c-format msgid "invalid range list data" msgstr "datos inválidos" -#: src/readelf.c:5926 src/readelf.c:9299 +#: src/readelf.c:5947 src/readelf.c:9407 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:5943 +#: src/readelf.c:5964 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "no se ha podido obtener contenido de .debug_ranges: %s" -#: src/readelf.c:5979 src/readelf.c:9354 +#: src/readelf.c:6000 src/readelf.c:9462 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5981 src/readelf.c:9356 +#: src/readelf.c:6002 src/readelf.c:9464 #, c-format msgid "" "\n" " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5990 src/readelf.c:9382 src/readelf.c:9408 +#: src/readelf.c:6011 src/readelf.c:9490 src/readelf.c:9516 #, c-format msgid " [%6tx] <INVALID DATA>\n" msgstr " [%6tx] <DATOS INVÃLIDOS>\n" -#: src/readelf.c:6011 src/readelf.c:9488 +#: src/readelf.c:6032 src/readelf.c:9596 #, fuzzy, c-format msgid "" " [%6tx] base address\n" " " msgstr " [%6tx] (dirección base) %s\n" -#: src/readelf.c:6019 src/readelf.c:9496 +#: src/readelf.c:6040 src/readelf.c:9604 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] lista vacÃa\n" -#: src/readelf.c:6274 +#: src/readelf.c:6295 #, fuzzy msgid " <INVALID DATA>\n" msgstr " <DATOS INVÃLIDOS>\n" -#: src/readelf.c:6527 +#: src/readelf.c:6548 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "no se puede leer encabezamiento ELF: %s" -#: src/readelf.c:6545 +#: src/readelf.c:6566 #, c-format msgid "" "\n" @@ -5272,7 +5277,7 @@ msgstr "" "Sección de información de marco de llamada [%2zu] '%s' en compensación " "%#<PRIx64>:\n" -#: src/readelf.c:6595 +#: src/readelf.c:6616 #, c-format msgid "" "\n" @@ -5281,65 +5286,65 @@ msgstr "" "\n" " [%6tx] Terminator cero\n" -#: src/readelf.c:6696 src/readelf.c:6850 +#: src/readelf.c:6717 src/readelf.c:6871 #, c-format msgid "invalid augmentation length" msgstr "longitud de aumento inválida" -#: src/readelf.c:6711 +#: src/readelf.c:6732 msgid "FDE address encoding: " msgstr "Codificación de dirección FDE:" -#: src/readelf.c:6717 +#: src/readelf.c:6738 msgid "LSDA pointer encoding: " msgstr "Codificación de puntero LSDA:" -#: src/readelf.c:6827 +#: src/readelf.c:6848 #, c-format msgid " (offset: %#<PRIx64>)" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:6834 +#: src/readelf.c:6855 #, c-format msgid " (end offset: %#<PRIx64>)" msgstr " (fin de compensación: %#<PRIx64>)" -#: src/readelf.c:6871 +#: src/readelf.c:6892 #, c-format msgid " %-26sLSDA pointer: %#<PRIx64>\n" msgstr "Puntero %-26sLSDA: %#<PRIx64>\n" -#: src/readelf.c:6956 +#: src/readelf.c:6977 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute code: %s" msgstr "No se puede obtener código de atributo: %s" -#: src/readelf.c:6966 +#: src/readelf.c:6987 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute form: %s" msgstr "No se puede obtener forma de atributo: %s" -#: src/readelf.c:6988 +#: src/readelf.c:7009 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s" msgstr "No se puede obtener valor: %s" -#: src/readelf.c:7321 +#: src/readelf.c:7339 #, fuzzy, c-format msgid "invalid file (%<PRId64>): %s" msgstr "Archivo inválido" -#: src/readelf.c:7325 +#: src/readelf.c:7343 #, fuzzy, c-format msgid "no srcfiles for CU [%<PRIx64>]" msgstr " establecer archivo a %<PRIu64>\n" -#: src/readelf.c:7329 +#: src/readelf.c:7347 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "no se puede leer encabezamiento ELF: %s" -#: src/readelf.c:7552 +#: src/readelf.c:7660 #, c-format msgid "" "\n" @@ -5350,12 +5355,12 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n" " [Offset]\n" -#: src/readelf.c:7602 +#: src/readelf.c:7710 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "No se puede obtener próximo DIE: %s" -#: src/readelf.c:7621 +#: src/readelf.c:7729 #, fuzzy, c-format msgid "" " Type unit at offset %<PRIu64>:\n" @@ -5368,7 +5373,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:7633 +#: src/readelf.c:7741 #, c-format msgid "" " Compilation unit at offset %<PRIu64>:\n" @@ -5379,39 +5384,39 @@ 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:7643 src/readelf.c:7806 +#: src/readelf.c:7751 src/readelf.c:7914 #, c-format msgid " Unit type: %s (%<PRIu8>)" msgstr "" -#: src/readelf.c:7670 +#: src/readelf.c:7778 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7699 +#: src/readelf.c:7807 #, c-format msgid "cannot get DIE offset: %s" msgstr "no se puede obtener DIE en compensación: %s" -#: src/readelf.c:7708 +#: src/readelf.c:7816 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%<PRIx64>] 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:7746 +#: src/readelf.c:7854 #, c-format msgid "cannot get next DIE: %s\n" msgstr "No se puede obtener próximo DIE: %s\n" -#: src/readelf.c:7754 +#: src/readelf.c:7862 #, c-format msgid "cannot get next DIE: %s" msgstr "No se puede obtener próximo DIE: %s" -#: src/readelf.c:7798 +#: src/readelf.c:7906 #, fuzzy, c-format msgid "" " Split compilation unit at offset %<PRIu64>:\n" @@ -5422,7 +5427,7 @@ 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:7850 +#: src/readelf.c:7958 #, fuzzy, c-format msgid "" "\n" @@ -5432,18 +5437,18 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n" -#: src/readelf.c:8182 +#: src/readelf.c:8290 #, fuzzy, c-format msgid "unknown form: %s" msgstr "Forma %<PRIx64> desconocida" -#: src/readelf.c:8213 +#: src/readelf.c:8321 #, 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:8315 +#: src/readelf.c:8423 #, fuzzy, c-format msgid "" "\n" @@ -5474,34 +5479,34 @@ msgstr "" "\n" "Códigos operativos:\n" -#: src/readelf.c:8337 +#: src/readelf.c:8445 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "no se puede obtener versión de sÃmbolo: %s" -#: src/readelf.c:8345 +#: src/readelf.c:8453 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "no hay valor de dirección" -#: src/readelf.c:8353 +#: src/readelf.c:8461 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "No se puede encontrar la sección: %s" -#: src/readelf.c:8363 +#: src/readelf.c:8471 #, 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:8378 +#: src/readelf.c:8486 #, 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:8389 +#: src/readelf.c:8497 msgid "" "\n" "Directory table:" @@ -5509,12 +5514,12 @@ msgstr "" "\n" "Tabla de Directorio:" -#: src/readelf.c:8395 src/readelf.c:8472 +#: src/readelf.c:8503 src/readelf.c:8580 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8466 +#: src/readelf.c:8574 #, fuzzy msgid "" "\n" @@ -5523,7 +5528,7 @@ msgstr "" "\n" " Tabla de sitio de llamada:" -#: src/readelf.c:8527 +#: src/readelf.c:8635 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5531,7 +5536,7 @@ msgstr "" "Tabla de nombre de archivo:\n" " Directorio de entrada Tiempo Tamaño Nombre" -#: src/readelf.c:8564 +#: src/readelf.c:8672 msgid "" "\n" "Line number statements:" @@ -5539,121 +5544,121 @@ msgstr "" "\n" " Declaraciones de número de LÃnea:" -#: src/readelf.c:8587 +#: src/readelf.c:8695 #, 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:8621 +#: src/readelf.c:8729 #, fuzzy, c-format msgid " special opcode %u: address+%u = " msgstr " opcode especial %u: dirección+%u = %s, lÃnea%+d = %zu\n" -#: src/readelf.c:8625 +#: src/readelf.c:8733 #, fuzzy, c-format msgid ", 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:8628 +#: src/readelf.c:8736 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8646 +#: src/readelf.c:8754 #, c-format msgid " extended opcode %u: " msgstr " Código operativo extendido %u: " -#: src/readelf.c:8651 +#: src/readelf.c:8759 #, fuzzy msgid " end of sequence" msgstr "Fin de secuencia" -#: src/readelf.c:8669 +#: src/readelf.c:8777 #, fuzzy, c-format msgid " set address to " msgstr "Establecer dirección a %s\n" -#: src/readelf.c:8697 +#: src/readelf.c:8805 #, 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:8711 +#: src/readelf.c:8819 #, c-format msgid " set discriminator to %u\n" msgstr " establecer discriminador a %u\n" #. Unknown, ignore it. -#: src/readelf.c:8716 +#: src/readelf.c:8824 #, fuzzy msgid " unknown opcode" msgstr "código operativo desconocido " #. Takes no argument. -#: src/readelf.c:8728 +#: src/readelf.c:8836 msgid " copy" msgstr "Copiar" -#: src/readelf.c:8739 +#: src/readelf.c:8847 #, fuzzy, c-format msgid " advance address by %u to " msgstr "Dirección de avance por %u a %s\n" -#: src/readelf.c:8743 src/readelf.c:8804 +#: src/readelf.c:8851 src/readelf.c:8912 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8755 +#: src/readelf.c:8863 #, 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:8765 +#: src/readelf.c:8873 #, c-format msgid " set file to %<PRIu64>\n" msgstr " establecer archivo a %<PRIu64>\n" -#: src/readelf.c:8776 +#: src/readelf.c:8884 #, c-format msgid " set column to %<PRIu64>\n" msgstr " Establecer columna a %<PRIu64>\n" -#: src/readelf.c:8783 +#: src/readelf.c:8891 #, c-format msgid " set '%s' to %<PRIuFAST8>\n" msgstr "Establecer '%s' a %<PRIuFAST8>\n" #. Takes no argument. -#: src/readelf.c:8789 +#: src/readelf.c:8897 msgid " set basic block flag" msgstr "Establecer bandera de bloque básico" -#: src/readelf.c:8800 +#: src/readelf.c:8908 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr "Dirección de avance por constante %u a %s\n" -#: src/readelf.c:8820 +#: src/readelf.c:8928 #, fuzzy, c-format msgid " advance address by fixed value %u to \n" msgstr "dirección de avance por valor corregido %u a %s\n" #. Takes no argument. -#: src/readelf.c:8830 +#: src/readelf.c:8938 msgid " set prologue end flag" msgstr " Establecer bandera prologue_end" #. Takes no argument. -#: src/readelf.c:8835 +#: src/readelf.c:8943 msgid " set epilogue begin flag" msgstr " Establecer bandera epilogue_begin" -#: src/readelf.c:8845 +#: src/readelf.c:8953 #, c-format msgid " set isa to %u\n" msgstr " establecer isa para %u\n" @@ -5661,105 +5666,105 @@ 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:8854 +#: src/readelf.c:8962 #, 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:8894 +#: src/readelf.c:9002 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr "no es posible obtener contenido de .debug_loc: %s" -#: src/readelf.c:9063 +#: src/readelf.c:9171 #, fuzzy, c-format msgid "invalid loclists data" msgstr "datos inválidos" -#: src/readelf.c:9316 +#: src/readelf.c:9424 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "no es posible obtener contenido de .debug_loc: %s" -#: src/readelf.c:9523 src/readelf.c:10567 +#: src/readelf.c:9631 src/readelf.c:10675 msgid " <INVALID DATA>\n" msgstr " <DATOS INVÃLIDOS>\n" -#: src/readelf.c:9578 src/readelf.c:9741 +#: src/readelf.c:9686 src/readelf.c:9849 #, 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:9658 +#: src/readelf.c:9766 #, 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:9681 +#: src/readelf.c:9789 #, 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:9782 +#: src/readelf.c:9890 #, fuzzy, c-format msgid " Offset: 0x%<PRIx64>\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:9794 +#: src/readelf.c:9902 #, fuzzy, c-format msgid " Version: %<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:9800 src/readelf.c:10687 +#: src/readelf.c:9908 src/readelf.c:10795 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:9807 +#: src/readelf.c:9915 #, fuzzy, c-format msgid " Flag: 0x%<PRIx8>" msgstr " Dirección de punto de entrada: %#<PRIx64>\n" -#: src/readelf.c:9836 +#: src/readelf.c:9944 #, fuzzy, c-format msgid " Offset length: %<PRIu8>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:9844 +#: src/readelf.c:9952 #, fuzzy, c-format msgid " .debug_line offset: 0x%<PRIx64>\n" msgstr " (fin de compensación: %#<PRIx64>)" -#: src/readelf.c:9869 +#: src/readelf.c:9977 #, fuzzy, c-format msgid " extension opcode table, %<PRIu8> items:\n" msgstr " opcódigo con parámetro %<PRIu8> desconocido:" -#: src/readelf.c:9876 +#: src/readelf.c:9984 #, c-format msgid " [%<PRIx8>]" msgstr "" -#: src/readelf.c:9888 +#: src/readelf.c:9996 #, fuzzy, c-format msgid " %<PRIu8> arguments:" msgstr " [%*<PRIuFAST8>] argumento %hhu \n" -#: src/readelf.c:9903 +#: src/readelf.c:10011 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10104 +#: src/readelf.c:10212 #, 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:10148 +#: src/readelf.c:10256 #, c-format msgid "" "\n" @@ -5770,37 +5775,37 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n" " %*s String\n" -#: src/readelf.c:10163 +#: src/readelf.c:10271 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** error en lectura de cadenas: %s\n" -#: src/readelf.c:10192 +#: src/readelf.c:10300 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr "no se pueden obtener datos de sección: %s" -#: src/readelf.c:10291 +#: src/readelf.c:10399 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:10293 +#: src/readelf.c:10401 #, fuzzy, c-format msgid " Offset size: %8<PRIu8>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:10307 +#: src/readelf.c:10415 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10316 +#: src/readelf.c:10424 #, fuzzy, c-format msgid " Padding: %8<PRIx16>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:10370 +#: src/readelf.c:10478 #, c-format msgid "" "\n" @@ -5809,7 +5814,7 @@ msgstr "" "\n" "Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10472 +#: src/readelf.c:10580 #, c-format msgid "" "\n" @@ -5818,22 +5823,22 @@ msgstr "" "\n" "Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10495 +#: src/readelf.c:10603 #, c-format msgid " LPStart encoding: %#x " msgstr "Codificación LPStart: %#x " -#: src/readelf.c:10507 +#: src/readelf.c:10615 #, c-format msgid " TType encoding: %#x " msgstr "Codificación TType: %#x " -#: src/readelf.c:10522 +#: src/readelf.c:10630 #, c-format msgid " Call site encoding: %#x " msgstr "Codificación de sitio de llamada: %#x " -#: src/readelf.c:10535 +#: src/readelf.c:10643 msgid "" "\n" " Call site table:" @@ -5841,7 +5846,7 @@ msgstr "" "\n" " Tabla de sitio de llamada:" -#: src/readelf.c:10549 +#: src/readelf.c:10657 #, c-format msgid "" " [%4u] Call site start: %#<PRIx64>\n" @@ -5854,12 +5859,12 @@ msgstr "" " Landing pad: %#<PRIx64>\n" " Action: %u\n" -#: src/readelf.c:10622 +#: src/readelf.c:10730 #, c-format msgid "invalid TType encoding" msgstr "Codificación TType inválida" -#: src/readelf.c:10649 +#: src/readelf.c:10757 #, fuzzy, c-format msgid "" "\n" @@ -5868,37 +5873,37 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n" -#: src/readelf.c:10678 +#: src/readelf.c:10786 #, fuzzy, c-format msgid " Version: %<PRId32>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10696 +#: src/readelf.c:10804 #, fuzzy, c-format msgid " CU offset: %#<PRIx32>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:10703 +#: src/readelf.c:10811 #, fuzzy, c-format msgid " TU offset: %#<PRIx32>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:10710 +#: src/readelf.c:10818 #, fuzzy, c-format msgid " address offset: %#<PRIx32>\n" msgstr " (fin de compensación: %#<PRIx64>)" -#: src/readelf.c:10717 +#: src/readelf.c:10825 #, fuzzy, c-format msgid " symbol offset: %#<PRIx32>\n" msgstr " (compensación: %#<PRIx64>)" -#: src/readelf.c:10724 +#: src/readelf.c:10832 #, fuzzy, c-format msgid " constant offset: %#<PRIx32>\n" msgstr " (fin de compensación: %#<PRIx64>)" -#: src/readelf.c:10738 +#: src/readelf.c:10846 #, fuzzy, c-format msgid "" "\n" @@ -5907,7 +5912,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n" -#: src/readelf.c:10763 +#: src/readelf.c:10871 #, fuzzy, c-format msgid "" "\n" @@ -5916,7 +5921,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n" -#: src/readelf.c:10792 +#: src/readelf.c:10900 #, fuzzy, c-format msgid "" "\n" @@ -5925,7 +5930,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n" -#: src/readelf.c:10824 +#: src/readelf.c:10932 #, fuzzy, c-format msgid "" "\n" @@ -5934,18 +5939,18 @@ msgstr "" "\n" "Tabla de sÃmbolos inválida en compensación %#0<PRIx64>\n" -#: src/readelf.c:10962 +#: src/readelf.c:11070 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "no se puede depurar descriptor de contexto: %s" -#: src/readelf.c:11325 src/readelf.c:11947 src/readelf.c:12058 -#: src/readelf.c:12116 +#: src/readelf.c:11433 src/readelf.c:12055 src/readelf.c:12166 +#: src/readelf.c:12224 #, c-format msgid "cannot convert core note data: %s" msgstr "no es posible convertir datos de la nota principal: %s" -#: src/readelf.c:11688 +#: src/readelf.c:11796 #, c-format msgid "" "\n" @@ -5954,21 +5959,21 @@ msgstr "" "\n" "%*s... <repeats %u more times> ..." -#: src/readelf.c:12195 +#: src/readelf.c:12303 msgid " Owner Data size Type\n" msgstr " Owner Data size Type\n" -#: src/readelf.c:12224 +#: src/readelf.c:12332 #, c-format msgid " %-13.*s %9<PRId32> %s\n" msgstr " %-13.*s %9<PRId32> %s\n" -#: src/readelf.c:12276 +#: src/readelf.c:12384 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "no se puede obtener el contenido de sección de nota: %s" -#: src/readelf.c:12303 +#: src/readelf.c:12411 #, c-format msgid "" "\n" @@ -5977,7 +5982,7 @@ msgstr "" "\n" "Sección de nota [%2zu] '%s' de %<PRIu64> bytes en compensación %#0<PRIx64>:\n" -#: src/readelf.c:12326 +#: src/readelf.c:12434 #, c-format msgid "" "\n" @@ -5986,7 +5991,7 @@ msgstr "" "\n" "Segmento de nota de %<PRIu64> bytes en compensación %#0<PRIx64>:\n" -#: src/readelf.c:12373 +#: src/readelf.c:12481 #, fuzzy, c-format msgid "" "\n" @@ -5995,12 +6000,12 @@ msgstr "" "\n" "Sección [%Zu] '%s' no tiene datos para volcar.\n" -#: src/readelf.c:12400 src/readelf.c:12451 +#: src/readelf.c:12508 src/readelf.c:12559 #, 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:12405 +#: src/readelf.c:12513 #, fuzzy, c-format msgid "" "\n" @@ -6010,7 +6015,7 @@ msgstr "" "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación " "%#0<PRIx64>:\n" -#: src/readelf.c:12410 +#: src/readelf.c:12518 #, fuzzy, c-format msgid "" "\n" @@ -6021,7 +6026,7 @@ msgstr "" "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación " "%#0<PRIx64>:\n" -#: src/readelf.c:12424 +#: src/readelf.c:12532 #, fuzzy, c-format msgid "" "\n" @@ -6030,7 +6035,7 @@ msgstr "" "\n" "Sección [%Zu] '%s' no tiene datos para volcar.\n" -#: src/readelf.c:12456 +#: src/readelf.c:12564 #, fuzzy, c-format msgid "" "\n" @@ -6040,7 +6045,7 @@ msgstr "" "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación " "%#0<PRIx64>:\n" -#: src/readelf.c:12461 +#: src/readelf.c:12569 #, fuzzy, c-format msgid "" "\n" @@ -6051,7 +6056,7 @@ msgstr "" "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación " "%#0<PRIx64>:\n" -#: src/readelf.c:12510 +#: src/readelf.c:12618 #, c-format msgid "" "\n" @@ -6060,7 +6065,7 @@ msgstr "" "\n" "sección [%lu] no existe" -#: src/readelf.c:12539 +#: src/readelf.c:12647 #, c-format msgid "" "\n" @@ -6069,12 +6074,12 @@ msgstr "" "\n" "sección '%s' no existe" -#: src/readelf.c:12596 +#: src/readelf.c:12704 #, 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:12599 +#: src/readelf.c:12707 #, c-format msgid "" "\n" @@ -6083,7 +6088,7 @@ msgstr "" "\n" "Archivo '%s' no tiene Ãndice de sÃmbolo\n" -#: src/readelf.c:12603 +#: src/readelf.c:12711 #, fuzzy, c-format msgid "" "\n" @@ -6092,12 +6097,12 @@ msgstr "" "\n" "Ãndice de archivo '%s' tiene %Zu entradas:\n" -#: src/readelf.c:12621 +#: src/readelf.c:12729 #, 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:12626 +#: src/readelf.c:12734 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Miembro de archivo contiene '%s':\n" @@ -6164,12 +6169,17 @@ msgstr "Radical inválido: %s" msgid "%s: file format not recognized" msgstr "%s: No se reconoce el formato del fichero" -#: src/size.c:418 src/size.c:551 +#: src/size.c:418 src/size.c:557 #, c-format msgid " (ex %s)" msgstr " (ex %s)" -#: src/size.c:576 +#: src/size.c:482 +#, fuzzy, c-format +msgid "cannot get section header" +msgstr "no se puede obtener encabezamiento de sección\n" + +#: src/size.c:582 msgid "(TOTALS)\n" msgstr "(TOTALES)\n" @@ -6531,7 +6541,7 @@ msgstr "%s: error al crear encabezamiento ELF: %s" msgid "%s: error while getting shdrstrndx: %s" msgstr "%s: error al crear encabezamiento ELF: %s" -#: src/strip.c:1654 src/strip.c:2534 +#: src/strip.c:1654 src/strip.c:2535 #, fuzzy, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "%s: error al crear encabezamiento ELF: %s" @@ -6561,47 +6571,47 @@ msgstr "al crear tabla de cadenas de encabezamiento de sección: %s" msgid "no memory to create section header string table" msgstr "al crear tabla de cadenas de encabezamiento de sección: %s" -#: src/strip.c:2027 +#: src/strip.c:2028 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2450 src/strip.c:2558 +#: src/strip.c:2451 src/strip.c:2559 #, c-format msgid "while writing '%s': %s" msgstr "al escribir '%s': %s" -#: src/strip.c:2461 +#: src/strip.c:2462 #, c-format msgid "while creating '%s'" msgstr "al crear '%s'" -#: src/strip.c:2484 +#: src/strip.c:2485 #, 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:2525 +#: src/strip.c:2526 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "%s: error al crear encabezamiento ELF: %s" -#: src/strip.c:2543 +#: src/strip.c:2544 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: error al leer el fichero: %s" -#: src/strip.c:2583 src/strip.c:2603 +#: src/strip.c:2584 src/strip.c:2604 #, c-format msgid "while writing '%s'" msgstr "al escribir '%s'" -#: src/strip.c:2640 src/strip.c:2647 +#: src/strip.c:2641 src/strip.c:2648 #, c-format msgid "error while finishing '%s': %s" msgstr "Error al terminar '%s': %s" -#: src/strip.c:2664 src/strip.c:2740 +#: src/strip.c:2665 src/strip.c:2741 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "no es posible establecer acceso y fecha de modificación de '%s'" @@ -6689,7 +6699,7 @@ msgstr "no se puede crear el encabezamiento ELF: %s" msgid "cannot get shdrstrndx:%s" msgstr "No se puede encontrar la sección: %s" -#: src/unstrip.c:248 src/unstrip.c:2034 +#: src/unstrip.c:248 src/unstrip.c:2038 #, c-format msgid "cannot get ELF header: %s" msgstr "no se puede leer encabezamiento ELF: %s" @@ -6709,12 +6719,12 @@ msgstr "no se puede actualizar reubicación: %s" msgid "cannot copy ELF header: %s" msgstr "no se puede copiar encabezamiento ELF: %s" -#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 +#: src/unstrip.c:269 src/unstrip.c:2056 src/unstrip.c:2099 #, fuzzy, c-format msgid "cannot get number of program headers: %s" msgstr "no se pudo determinar la cantidad de encabezados de programa: %s" -#: src/unstrip.c:274 src/unstrip.c:2056 +#: src/unstrip.c:274 src/unstrip.c:2060 #, c-format msgid "cannot create program headers: %s" msgstr "No pueden crear encabezamientos de programa: %s" @@ -6729,12 +6739,12 @@ msgstr "no puede copiar encabezamiento de programa: %s" msgid "cannot copy section header: %s" msgstr "no se puede copiar encabezamiento de sección: %s" -#: src/unstrip.c:293 src/unstrip.c:1665 +#: src/unstrip.c:293 src/unstrip.c:1669 #, c-format msgid "cannot get section data: %s" msgstr "no se pueden obtener datos de sección: %s" -#: src/unstrip.c:295 src/unstrip.c:1667 +#: src/unstrip.c:295 src/unstrip.c:1671 #, c-format msgid "cannot copy section data: %s" msgstr "no pueden copiar datos de sección: %s" @@ -6744,13 +6754,14 @@ msgstr "no pueden copiar datos de sección: %s" msgid "cannot create directory '%s'" msgstr "no se puede crear el directorio '%s'" -#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 +#: src/unstrip.c:391 src/unstrip.c:647 src/unstrip.c:681 src/unstrip.c:847 +#: src/unstrip.c:1706 #, c-format msgid "cannot get symbol table entry: %s" msgstr "no se puede obtener entrada de tabla de sÃmbolos: %s" -#: src/unstrip.c:407 src/unstrip.c:649 src/unstrip.c:670 src/unstrip.c:682 -#: src/unstrip.c:1723 src/unstrip.c:1918 src/unstrip.c:1942 +#: src/unstrip.c:407 src/unstrip.c:650 src/unstrip.c:671 src/unstrip.c:684 +#: src/unstrip.c:1727 src/unstrip.c:1922 src/unstrip.c:1946 #, c-format msgid "cannot update symbol table: %s" msgstr "no se puede actualizar tabla de sÃmbolos: %s" @@ -6775,140 +6786,140 @@ msgstr "no se puede obtener versión de sÃmbolo: %s" msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "tipo de sección inesperado en [%Zu] con sh_link para symtab" -#: src/unstrip.c:851 +#: src/unstrip.c:853 #, fuzzy, c-format msgid "invalid string offset in symbol [%zu]" msgstr "compensación de cadena inválida en sÃmbolo [%Zu]" -#: src/unstrip.c:1009 src/unstrip.c:1398 +#: src/unstrip.c:1011 src/unstrip.c:1402 #, fuzzy, c-format msgid "cannot read section [%zu] name: %s" msgstr "no se puede leer nombre [%Zu]: %s" -#: src/unstrip.c:1024 +#: src/unstrip.c:1026 #, fuzzy, c-format msgid "bad sh_link for group section: %s" msgstr ".debug_line section inválida" -#: src/unstrip.c:1030 +#: src/unstrip.c:1032 #, fuzzy, c-format msgid "couldn't get shdr for group section: %s" msgstr "No se puede obtener encabezamiento de sección 0th: %s" -#: src/unstrip.c:1035 +#: src/unstrip.c:1037 #, fuzzy, c-format msgid "bad data for group symbol section: %s" msgstr "no se puede obtener sección para sÃmbolos\n" -#: src/unstrip.c:1041 +#: src/unstrip.c:1043 #, fuzzy, c-format msgid "couldn't get symbol for group section: %s" msgstr "no se puede obtener versión de sÃmbolo: %s" -#: src/unstrip.c:1046 +#: src/unstrip.c:1048 #, fuzzy, c-format msgid "bad symbol name for group section: %s" msgstr "No se puede obtener el encabezamiento de sección %zu: %s" -#: src/unstrip.c:1088 src/unstrip.c:1107 src/unstrip.c:1145 +#: src/unstrip.c:1090 src/unstrip.c:1109 src/unstrip.c:1147 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "no se puede leer sección '.gnu.prelink_undo': %s" -#: src/unstrip.c:1125 +#: src/unstrip.c:1127 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "" -#: src/unstrip.c:1136 +#: src/unstrip.c:1138 #, c-format msgid "invalid contents in '%s' section" msgstr "contenido inválido en sección '%s'" -#: src/unstrip.c:1192 src/unstrip.c:1524 +#: src/unstrip.c:1194 src/unstrip.c:1528 #, fuzzy, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "no se puede hallar sección coincidente para [%Zu] '%s'" -#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 +#: src/unstrip.c:1319 src/unstrip.c:1335 src/unstrip.c:1607 src/unstrip.c:1881 #, c-format msgid "cannot add section name to string table: %s" msgstr "no se puede añadir nombre de sección a tabla de cadenas: %s" -#: src/unstrip.c:1341 +#: src/unstrip.c:1344 #, c-format msgid "cannot update section header string table data: %s" msgstr "" "no se pueden actualizar datos de tabla de cadenas de encabezamiento de " "sección: %s" -#: src/unstrip.c:1369 src/unstrip.c:1373 +#: src/unstrip.c:1373 src/unstrip.c:1377 #, c-format msgid "cannot get section header string table section index: %s" msgstr "" "no se puede obtener Ãndice de sección de tabla de cadenas de encabezamiento " "de sección: %s" -#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 +#: src/unstrip.c:1381 src/unstrip.c:1385 src/unstrip.c:1622 #, c-format msgid "cannot get section count: %s" msgstr "No se puede obtener cuenta de sección: %s" -#: src/unstrip.c:1384 +#: src/unstrip.c:1388 #, c-format msgid "more sections in stripped file than debug file -- arguments reversed?" msgstr "" "más secciones en el archivo despojado que en el archivo de depuración -- " "¿argumentos invertidos?" -#: src/unstrip.c:1446 src/unstrip.c:1539 +#: src/unstrip.c:1450 src/unstrip.c:1543 #, c-format msgid "cannot read section header string table: %s" msgstr "no se puede obtener tabla de cadenas de encabezamiento de sección: %s" -#: src/unstrip.c:1597 +#: src/unstrip.c:1601 #, c-format msgid "cannot add new section: %s" msgstr "No se puede añadir nueva sección: %s" -#: src/unstrip.c:1710 +#: src/unstrip.c:1714 #, fuzzy, c-format msgid "symbol [%zu] has invalid section index" msgstr "sÃmbolo [%Zu] tiene Ãndice de sección inválido" -#: src/unstrip.c:1742 +#: src/unstrip.c:1746 #, fuzzy, c-format msgid "group has invalid section index [%zd]" msgstr "sÃmbolo [%Zu] tiene Ãndice de sección inválido" -#: src/unstrip.c:2013 +#: src/unstrip.c:2017 #, c-format msgid "cannot read section data: %s" msgstr "no se puede leer la sección de datos: %s" -#: src/unstrip.c:2042 +#: src/unstrip.c:2046 #, c-format msgid "cannot update ELF header: %s" msgstr "No se puede actualizar encabezamiento ELF: %s" -#: src/unstrip.c:2066 +#: src/unstrip.c:2070 #, c-format msgid "cannot update program header: %s" msgstr "no se puede actualizar encabezamiento de programa: %s" -#: src/unstrip.c:2071 src/unstrip.c:2153 +#: src/unstrip.c:2075 src/unstrip.c:2157 #, c-format msgid "cannot write output file: %s" msgstr "no se puede escribir al archivo de salida: %s" -#: src/unstrip.c:2122 +#: src/unstrip.c:2126 #, c-format msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" msgstr "" "datos DWARF no se ajustan para polarización de pre-enlace; considere prelink " "-u" -#: src/unstrip.c:2125 +#: src/unstrip.c:2129 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" @@ -6916,77 +6927,77 @@ msgstr "" "Datos DWARF en '%s' no se ajustan a polarización de pre-enlace; considere " "prelink -u" -#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 +#: src/unstrip.c:2148 src/unstrip.c:2199 src/unstrip.c:2211 src/unstrip.c:2297 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "no se puede crear un descriptor ELF: %s" -#: src/unstrip.c:2186 +#: src/unstrip.c:2190 msgid "WARNING: " msgstr "" -#: src/unstrip.c:2188 +#: src/unstrip.c:2192 msgid ", use --force" msgstr "" -#: src/unstrip.c:2211 +#: src/unstrip.c:2215 msgid "ELF header identification (e_ident) different" msgstr "" -#: src/unstrip.c:2214 +#: src/unstrip.c:2218 msgid "ELF header type (e_type) different" msgstr "" -#: src/unstrip.c:2217 +#: src/unstrip.c:2221 msgid "ELF header machine type (e_machine) different" msgstr "" -#: src/unstrip.c:2220 +#: src/unstrip.c:2224 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "" -#: src/unstrip.c:2250 +#: src/unstrip.c:2254 #, c-format msgid "cannot find stripped file for module '%s': %s" msgstr "no se puede hallar archivo obtenido para módulo '%s': %s " -#: src/unstrip.c:2254 +#: src/unstrip.c:2258 #, c-format msgid "cannot open stripped file '%s' for module '%s': %s" msgstr "No se puede abrir el archivo '%s' obtenido para módulo '%s': %s" -#: src/unstrip.c:2269 +#: src/unstrip.c:2273 #, c-format msgid "cannot find debug file for module '%s': %s" msgstr "no puede hallar archivo de depuración para módulo '%s': %su" -#: src/unstrip.c:2273 +#: src/unstrip.c:2277 #, c-format msgid "cannot open debug file '%s' for module '%s': %s" msgstr "No puede abrir archivo de depuración '%s' para módulo '%s': %s" -#: src/unstrip.c:2286 +#: src/unstrip.c:2290 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "No se obtuvo el archivo '%s' de módulo '%s' " -#: src/unstrip.c:2317 +#: src/unstrip.c:2321 #, c-format msgid "cannot cache section addresses for module '%s': %s" msgstr "" "No puede almacenar en cache direcciones de sección para módulo '%s': %s" -#: src/unstrip.c:2450 +#: src/unstrip.c:2454 #, c-format msgid "no matching modules found" msgstr "No se encontraron módulos coincidentes" -#: src/unstrip.c:2459 +#: src/unstrip.c:2463 #, c-format msgid "matched more than one module" msgstr "coincidió con más de un módulo" -#: src/unstrip.c:2503 +#: src/unstrip.c:2507 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" @@ -6994,7 +7005,7 @@ msgstr "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" -#: src/unstrip.c:2504 +#: src/unstrip.c:2508 #, fuzzy msgid "" "Combine stripped files with separate symbols and debug information.\n" @@ -7047,7 +7058,7 @@ msgstr "" "file. DEBUGFILE is the separate debuginfo file name, or - if no debuginfo " "was found, or . if FILE contains the debug information." -#: tests/backtrace.c:437 +#: tests/backtrace.c:436 msgid "Run executable" msgstr "" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2019-02-14 14:31+0100\n" +"POT-Creation-Date: 2019-08-13 23:38+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" @@ -50,8 +50,8 @@ msgstr "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" -#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 -#: src/readelf.c:11274 src/unstrip.c:2346 src/unstrip.c:2552 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3433 +#: src/readelf.c:11382 src/unstrip.c:2350 src/unstrip.c:2556 #, c-format msgid "memory exhausted" msgstr "メモリー消費済ã¿" @@ -293,7 +293,7 @@ msgstr "ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰" msgid ".debug_addr section missing" msgstr ".debug_ranges セクションãŒã‚ã‚Šã¾ã›ã‚“" -#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2497 msgid "Input selection options:" msgstr "é¸æŠžã‚ªãƒ—ションを入力ã—ã¦ãã ã•ã„:" @@ -599,7 +599,7 @@ msgstr " OS: %sã€ABI: " msgid "Stand alone" msgstr "スタンドアãƒãƒ¼ãƒ³" -#: libebl/eblsymbolbindingname.c:67 libebl/eblsymboltypename.c:73 +#: libebl/eblsymbolbindingname.c:68 libebl/eblsymboltypename.c:74 #, c-format msgid "<unknown>: %d" msgstr "<ä¸æ˜Ž>: %d" @@ -624,7 +624,7 @@ msgstr "ソース演算åã®å¤§ãã•ãŒç„¡åŠ¹" msgid "invalid size of destination operand" msgstr "宛先演算åã®å¤§ãã•ãŒç„¡åŠ¹" -#: libelf/elf_error.c:87 src/readelf.c:6129 +#: libelf/elf_error.c:87 src/readelf.c:6150 #, c-format msgid "invalid encoding" msgstr "無効ãªã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰" @@ -711,8 +711,8 @@ msgstr "データ/scnãŒä¸æ•´åˆã§ã™" msgid "invalid section header" msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼" -#: libelf/elf_error.c:191 src/readelf.c:9790 src/readelf.c:10390 -#: src/readelf.c:10491 src/readelf.c:10673 +#: libelf/elf_error.c:191 src/readelf.c:9898 src/readelf.c:10498 +#: src/readelf.c:10599 src/readelf.c:10781 #, c-format msgid "invalid data" msgstr "ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" @@ -1374,7 +1374,7 @@ msgstr "" #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 -#: src/unstrip.c:2142 src/unstrip.c:2171 +#: src/unstrip.c:2146 src/unstrip.c:2175 #, c-format msgid "cannot open '%s'" msgstr "'%s' ã‚’é–‹ã‘ã¾ã›ã‚“" @@ -1500,7 +1500,7 @@ msgstr "" msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "ELF ファイル㌠gABI/psABI 仕様ã¸æº–æ‹ ã—ã¦ã„ã‚‹ã‹ã®åŽ³å¯†ãªãƒã‚§ãƒƒã‚¯ã€‚" -#: src/elflint.c:154 src/readelf.c:346 +#: src/elflint.c:154 src/readelf.c:357 #, c-format msgid "cannot open input file" msgstr "入力ファイルを開ã‘ã¾ã›ã‚“" @@ -1519,7 +1519,7 @@ msgstr "Elf 記述åã‚’é–‰ã˜ã¦ã„る時ã«ã‚¨ãƒ©ãƒ¼: %s\n" msgid "No errors" msgstr "エラーã¯ã‚ã‚Šã¾ã›ã‚“" -#: src/elflint.c:219 src/readelf.c:545 +#: src/elflint.c:219 src/readelf.c:559 msgid "Missing file name.\n" msgstr "ファイルåãŒã‚ã‚Šã¾ã›ã‚“。\n" @@ -3508,7 +3508,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: 内部エラー %d (%s-%s): %s" #: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308 -#: src/strip.c:2747 +#: src/strip.c:2748 #, c-format msgid "while closing '%s'" msgstr "'%s' ã‚’é–‰ã˜ã¦ã„る最ä¸" @@ -3553,19 +3553,19 @@ msgstr "%s%s%s: ファイル形å¼ã‚’èªè˜ã§ãã¾ã›ã‚“" msgid "cannot create search tree" msgstr "検索ツリーを生æˆã§ãã¾ã›ã‚“" -#: src/nm.c:746 src/nm.c:1207 src/objdump.c:777 src/readelf.c:605 -#: src/readelf.c:1412 src/readelf.c:1563 src/readelf.c:1764 src/readelf.c:1970 -#: src/readelf.c:2160 src/readelf.c:2338 src/readelf.c:2414 src/readelf.c:2672 -#: src/readelf.c:2748 src/readelf.c:2835 src/readelf.c:3433 src/readelf.c:3483 -#: src/readelf.c:3546 src/readelf.c:11106 src/readelf.c:12291 -#: src/readelf.c:12495 src/readelf.c:12563 src/size.c:398 src/size.c:467 +#: src/nm.c:746 src/nm.c:1205 src/objdump.c:777 src/readelf.c:619 +#: src/readelf.c:1431 src/readelf.c:1582 src/readelf.c:1783 src/readelf.c:1989 +#: src/readelf.c:2179 src/readelf.c:2357 src/readelf.c:2433 src/readelf.c:2691 +#: src/readelf.c:2767 src/readelf.c:2854 src/readelf.c:3452 src/readelf.c:3502 +#: src/readelf.c:3565 src/readelf.c:11214 src/readelf.c:12399 +#: src/readelf.c:12603 src/readelf.c:12671 src/size.c:398 src/size.c:470 #: src/strip.c:1038 #, c-format msgid "cannot get section header string table index" msgstr "セクションヘッダー文å—列テーブル索引ãŒå¾—られã¾ã›ã‚“" #. We always print this prolog. -#: src/nm.c:773 +#: src/nm.c:771 #, c-format msgid "" "\n" @@ -3579,7 +3579,7 @@ msgstr "" "\n" #. The header line. -#: src/nm.c:776 +#: src/nm.c:774 #, c-format msgid "" "%*s%-*s %-*s Class Type %-*s %*s Section\n" @@ -3588,28 +3588,28 @@ msgstr "" "%*s%-*s %-*s クラス タイプ %-*s %*s セクション\n" "\n" -#: src/nm.c:1218 +#: src/nm.c:1216 #, fuzzy, c-format msgid "%s: entry size in section %zd `%s' is not what we expect" msgstr "%s: セクションã®é …ç›®ã®å¤§ãã• `%s' ã¯äºˆæœŸã—ãŸã‚‚ã®ã¨ã¯ç•°ãªã‚Šã¾ã™" -#: src/nm.c:1223 +#: src/nm.c:1221 #, fuzzy, c-format msgid "%s: size of section %zd `%s' is not multiple of entry size" msgstr "%s: セクション `%s' ã®å¤§ãã•ã¯é …ç›®ã®å¤§ãã•ã®æ•´æ•°å€ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: src/nm.c:1302 +#: src/nm.c:1300 #, fuzzy, c-format msgid "%s: entries (%zd) in section %zd `%s' is too large" msgstr "%s: セクションã®é …ç›®ã®å¤§ãã• `%s' ã¯äºˆæœŸã—ãŸã‚‚ã®ã¨ã¯ç•°ãªã‚Šã¾ã™" #. XXX Add machine specific object file types. -#: src/nm.c:1528 +#: src/nm.c:1526 #, c-format msgid "%s%s%s%s: Invalid operation" msgstr "%s%s%s%s: ä¸å½“ãªæ“作" -#: src/nm.c:1585 +#: src/nm.c:1583 #, c-format msgid "%s%s%s: no symbols" msgstr "%s%s%s: シンボルãŒã‚ã‚Šã¾ã›ã‚“" @@ -3644,7 +3644,7 @@ msgstr "" msgid "Show information from FILEs (a.out by default)." msgstr "" -#: src/objdump.c:218 src/readelf.c:550 +#: src/objdump.c:218 src/readelf.c:564 msgid "No operation specified.\n" msgstr "æ“作ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。\n" @@ -3653,11 +3653,11 @@ msgstr "æ“作ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。\n" msgid "while close `%s'" msgstr "" -#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 +#: src/objdump.c:363 src/readelf.c:2084 src/readelf.c:2276 msgid "INVALID SYMBOL" msgstr "ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«" -#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 +#: src/objdump.c:378 src/readelf.c:2118 src/readelf.c:2312 msgid "INVALID SECTION" msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³" @@ -3843,151 +3843,151 @@ msgid "Print information from ELF file in human-readable form." msgstr "ELF ファイルã‹ã‚‰äººé–“ãŒèªã‚ã‚‹å½¢ã§æƒ…å ±ã‚’å°åˆ·ã™ã‚‹ã€‚" #. Look up once. -#: src/readelf.c:328 +#: src/readelf.c:339 msgid "yes" msgstr "ã¯ã„" -#: src/readelf.c:329 +#: src/readelf.c:340 msgid "no" msgstr "ã„ã„ãˆ" -#: src/readelf.c:518 +#: src/readelf.c:532 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "ä¸æ˜Žãª DWARF デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s'.\n" -#: src/readelf.c:589 src/readelf.c:700 +#: src/readelf.c:603 src/readelf.c:714 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "Elf 記述åを生æˆã§ãã¾ã›ã‚“: %s" -#: src/readelf.c:596 src/readelf.c:923 src/strip.c:1133 +#: src/readelf.c:610 src/readelf.c:937 src/strip.c:1133 #, c-format msgid "cannot determine number of sections: %s" msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s" -#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 +#: src/readelf.c:628 src/readelf.c:1247 src/readelf.c:1455 #, c-format msgid "cannot get section: %s" msgstr "セクションを得られã¾ã›ã‚“: %s" -#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12515 +#: src/readelf.c:637 src/readelf.c:1254 src/readelf.c:1463 src/readelf.c:12623 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:481 src/unstrip.c:600 -#: src/unstrip.c:621 src/unstrip.c:660 src/unstrip.c:871 src/unstrip.c:1202 -#: src/unstrip.c:1394 src/unstrip.c:1458 src/unstrip.c:1632 src/unstrip.c:1766 -#: src/unstrip.c:1909 src/unstrip.c:2004 +#: src/unstrip.c:621 src/unstrip.c:661 src/unstrip.c:873 src/unstrip.c:1204 +#: src/unstrip.c:1331 src/unstrip.c:1355 src/unstrip.c:1398 src/unstrip.c:1462 +#: src/unstrip.c:1636 src/unstrip.c:1770 src/unstrip.c:1913 src/unstrip.c:2008 #, c-format msgid "cannot get section header: %s" msgstr "セクションヘッダーを得られã¾ã›ã‚“: %s" -#: src/readelf.c:631 +#: src/readelf.c:645 #, fuzzy, c-format msgid "cannot get section name" msgstr "セクションを得られã¾ã›ã‚“: %s" -#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10378 src/readelf.c:10480 -#: src/readelf.c:10658 +#: src/readelf.c:654 src/readelf.c:6560 src/readelf.c:10486 src/readelf.c:10588 +#: src/readelf.c:10766 #, c-format msgid "cannot get %s content: %s" msgstr "%s ã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:656 +#: src/readelf.c:670 #, fuzzy, c-format msgid "cannot create temp file '%s'" msgstr "æ–°ã—ã„ファイル '%s' を生æˆã§ãã¾ã›ã‚“: %s" -#: src/readelf.c:665 +#: src/readelf.c:679 #, fuzzy, c-format msgid "cannot write section data" msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s" -#: src/readelf.c:671 src/readelf.c:688 src/readelf.c:717 +#: src/readelf.c:685 src/readelf.c:702 src/readelf.c:731 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "Elf 記述åã‚’é–‰ã˜ã¦ã„る時ã«ã‚¨ãƒ©ãƒ¼: %s" -#: src/readelf.c:678 +#: src/readelf.c:692 #, fuzzy, c-format msgid "error while rewinding file descriptor" msgstr "Elf 記述åã‚’é–‰ã˜ã¦ã„る時ã«ã‚¨ãƒ©ãƒ¼: %s" -#: src/readelf.c:712 +#: src/readelf.c:726 #, c-format msgid "'%s' is not an archive, cannot print archive index" msgstr "'%s' ã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã§ã¯ãªãã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–索引をå°åˆ·ã§ãã¾ã›ã‚“" -#: src/readelf.c:816 +#: src/readelf.c:830 #, c-format msgid "cannot stat input file" msgstr "入力ファイルを stat ã§ãã¾ã›ã‚“" -#: src/readelf.c:818 +#: src/readelf.c:832 #, c-format msgid "input file is empty" msgstr "入力ファイルãŒç©ºã§ã™" -#: src/readelf.c:820 +#: src/readelf.c:834 #, c-format msgid "failed reading '%s': %s" msgstr "'%s' ã®èªè¾¼ã¿ã«å¤±æ•—: %s" -#: src/readelf.c:849 +#: src/readelf.c:863 #, fuzzy, c-format msgid "No such section '%s' in '%s'" msgstr "セクション [%Zu] '%s' ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãŒå¾—られã¾ã›ã‚“: %s" -#: src/readelf.c:908 +#: src/readelf.c:922 #, c-format msgid "cannot read ELF header: %s" msgstr "ELF ヘッダーãŒèªã‚ã¾ã›ã‚“: %s" -#: src/readelf.c:916 +#: src/readelf.c:930 #, c-format msgid "cannot create EBL handle" msgstr "EBL ヘッダーを生æˆã§ãã¾ã›ã‚“" -#: src/readelf.c:929 +#: src/readelf.c:943 #, fuzzy, c-format msgid "cannot determine number of program headers: %s" msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s" -#: src/readelf.c:961 +#: src/readelf.c:975 #, fuzzy, c-format msgid "cannot read ELF: %s" msgstr "%s ã‚’èªã¿ã¾ã›ã‚“: %s" -#: src/readelf.c:1022 +#: src/readelf.c:1036 msgid "NONE (None)" msgstr "ãªã— (ãªã—)" -#: src/readelf.c:1023 +#: src/readelf.c:1037 msgid "REL (Relocatable file)" msgstr "REL (リãƒã‚±ãƒ¼ã‚¿ãƒ–ルファイル)" -#: src/readelf.c:1024 +#: src/readelf.c:1038 msgid "EXEC (Executable file)" msgstr "(EXEC (実行ファイル)" -#: src/readelf.c:1025 +#: src/readelf.c:1039 msgid "DYN (Shared object file)" msgstr "DYN (共用オブジェクトファイル)" -#: src/readelf.c:1026 +#: src/readelf.c:1040 msgid "CORE (Core file)" msgstr "CORE (コアファイル)" -#: src/readelf.c:1031 +#: src/readelf.c:1045 #, c-format msgid "OS Specific: (%x)\n" msgstr "OS 固有: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1033 +#: src/readelf.c:1047 #, c-format msgid "Processor Specific: (%x)\n" msgstr "プãƒã‚»ãƒƒã‚µãƒ¼å›ºæœ‰: (%x)\n" -#: src/readelf.c:1043 +#: src/readelf.c:1057 msgid "" "ELF Header:\n" " Magic: " @@ -3995,7 +3995,7 @@ msgstr "" "ELF ヘッダー:\n" " マジック: " -#: src/readelf.c:1047 +#: src/readelf.c:1061 #, c-format msgid "" "\n" @@ -4004,118 +4004,123 @@ msgstr "" "\n" " クラス: %s\n" -#: src/readelf.c:1052 +#: src/readelf.c:1066 #, c-format msgid " Data: %s\n" msgstr " データ: %s\n" -#: src/readelf.c:1058 +#: src/readelf.c:1072 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " è˜åˆ¥ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hhd %s\n" -#: src/readelf.c:1060 src/readelf.c:1077 +#: src/readelf.c:1074 src/readelf.c:1096 msgid "(current)" msgstr "(ç¾åœ¨)" -#: src/readelf.c:1064 +#: src/readelf.c:1078 #, c-format msgid " OS/ABI: %s\n" msgstr " OS/ABI: %s\n" -#: src/readelf.c:1067 +#: src/readelf.c:1081 #, c-format msgid " ABI Version: %hhd\n" msgstr " ABI ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hhd\n" -#: src/readelf.c:1070 +#: src/readelf.c:1084 msgid " Type: " msgstr " タイプ: " -#: src/readelf.c:1073 +#: src/readelf.c:1089 #, c-format msgid " Machine: %s\n" msgstr " マシン : %s\n" -#: src/readelf.c:1075 +#: src/readelf.c:1091 +#, fuzzy, c-format +msgid " Machine: <unknown>: 0x%x\n" +msgstr " マシン : %s\n" + +#: src/readelf.c:1094 #, c-format msgid " Version: %d %s\n" msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d %s\n" -#: src/readelf.c:1079 +#: src/readelf.c:1098 #, c-format msgid " Entry point address: %#<PRIx64>\n" msgstr " å…¥å£ç‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹ : %#<PRIx64>\n" -#: src/readelf.c:1082 +#: src/readelf.c:1101 #, c-format msgid " Start of program headers: %<PRId64> %s\n" msgstr " プãƒã‚°ãƒ©ãƒ ヘッダーã®é–‹å§‹: %<PRId64> %s\n" -#: src/readelf.c:1083 src/readelf.c:1086 +#: src/readelf.c:1102 src/readelf.c:1105 msgid "(bytes into file)" msgstr "(ファイルã¸ã®ãƒã‚¤ãƒˆæ•°)" -#: src/readelf.c:1085 +#: src/readelf.c:1104 #, c-format msgid " Start of section headers: %<PRId64> %s\n" msgstr " セクションヘッダーã®é–‹å§‹: %<PRId64> %s\n" -#: src/readelf.c:1088 +#: src/readelf.c:1107 #, c-format msgid " Flags: %s\n" msgstr " フラグ: %s\n" -#: src/readelf.c:1091 +#: src/readelf.c:1110 #, c-format msgid " Size of this header: %<PRId16> %s\n" msgstr " ã“ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã®å¤§ãã•: %<PRId16> %s\n" -#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 +#: src/readelf.c:1111 src/readelf.c:1114 src/readelf.c:1131 msgid "(bytes)" msgstr "(ãƒã‚¤ãƒˆ)" -#: src/readelf.c:1094 +#: src/readelf.c:1113 #, c-format msgid " Size of program header entries: %<PRId16> %s\n" msgstr " プãƒã‚°ãƒ©ãƒ ãƒ˜ãƒƒãƒ€ãƒ¼é …ç›®ã®å¤§ãã•:%<PRId16> %s\n" -#: src/readelf.c:1097 +#: src/readelf.c:1116 #, fuzzy, c-format msgid " Number of program headers entries: %<PRId16>" msgstr " プãƒã‚°ãƒ©ãƒ ãƒ˜ãƒƒãƒ€ãƒ¼é …ç›®ã®æ•° : %<PRId16>\n" -#: src/readelf.c:1104 +#: src/readelf.c:1123 #, fuzzy, c-format msgid " (%<PRIu32> in [0].sh_info)" msgstr "([0].sh_link ã® %<PRIu32>)" -#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 +#: src/readelf.c:1126 src/readelf.c:1143 src/readelf.c:1157 msgid " ([0] not available)" msgstr "([0]ã¯ä½¿ãˆã¾ã›ã‚“)" -#: src/readelf.c:1111 +#: src/readelf.c:1130 #, c-format msgid " Size of section header entries: %<PRId16> %s\n" msgstr " ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼é …ç›®ã®å¤§ãã•:%<PRId16> %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1133 #, c-format msgid " Number of section headers entries: %<PRId16>" msgstr " ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼é …ç›®ã®æ•° : %<PRId16>" -#: src/readelf.c:1121 +#: src/readelf.c:1140 #, c-format msgid " (%<PRIu32> in [0].sh_size)" msgstr " ([0].sh_size ã® %<PRIu32>)" #. We managed to get the zeroth section. -#: src/readelf.c:1134 +#: src/readelf.c:1153 #, c-format msgid " (%<PRIu32> in [0].sh_link)" msgstr "([0].sh_link ã® %<PRIu32>)" -#: src/readelf.c:1142 +#: src/readelf.c:1161 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4124,7 +4129,7 @@ msgstr "" " セクションヘッダー文å—列テーブル索引: XINDEX%s\n" "\n" -#: src/readelf.c:1146 +#: src/readelf.c:1165 #, c-format msgid "" " Section header string table index: %<PRId16>\n" @@ -4133,12 +4138,12 @@ msgstr "" " セクションヘッダー文å—列テーブル索引: %<PRId16>\n" "\n" -#: src/readelf.c:1193 src/readelf.c:1401 +#: src/readelf.c:1212 src/readelf.c:1420 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s" -#: src/readelf.c:1196 +#: src/readelf.c:1215 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#<PRIx64>:\n" @@ -4147,16 +4152,16 @@ msgstr "" "オフセット %2$#<PRIx64> ã‹ã‚‰å§‹ã¾ã‚‹ %1$d 個ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼ãŒã‚ã‚Šã¾ã™:\n" "\n" -#: src/readelf.c:1205 +#: src/readelf.c:1224 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "セクションヘッダー文å—列テーブル索引ãŒå¾—られã¾ã›ã‚“" -#: src/readelf.c:1208 +#: src/readelf.c:1227 msgid "Section Headers:" msgstr "セクションヘッダー:" -#: src/readelf.c:1211 +#: src/readelf.c:1230 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4164,7 +4169,7 @@ msgstr "" "[番] åå‰ ã‚¿ã‚¤ãƒ— アドレス オフセ 大ãã• ES フラグLk " "Inf Al" -#: src/readelf.c:1213 +#: src/readelf.c:1232 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4172,35 +4177,35 @@ msgstr "" "[番] åå‰ ã‚¿ã‚¤ãƒ— アドレス オフセ 大ãã• ES " "フラグLk Inf Al" -#: src/readelf.c:1218 +#: src/readelf.c:1237 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1220 +#: src/readelf.c:1239 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1296 +#: src/readelf.c:1315 #, fuzzy, c-format msgid "bad compression header for section %zd: %s" msgstr "セクションヘッダー文å—列セクションを生æˆã§ãã¾ã›ã‚“: %s" -#: src/readelf.c:1307 +#: src/readelf.c:1326 #, fuzzy, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "セクションã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“ %d: %s" -#: src/readelf.c:1325 +#: src/readelf.c:1344 msgid "Program Headers:" msgstr "プãƒã‚°ãƒ©ãƒ ヘッダー:" -#: src/readelf.c:1327 +#: src/readelf.c:1346 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " タイプ オフセ 仮アドレス 物アドレス ãƒ•ã‚¡ã‚¤é‡ ãƒ¡ãƒ¢é‡ Flg 調整 " -#: src/readelf.c:1330 +#: src/readelf.c:1349 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4208,12 +4213,12 @@ msgstr "" " タイプ オフセ 仮想アドレス 物ç†ã‚¢ãƒ‰ãƒ¬ã‚¹ ファイルé‡ãƒ¡ãƒ¢" "é‡ Flg 調整 " -#: src/readelf.c:1387 +#: src/readelf.c:1406 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[プãƒã‚°ãƒ©ãƒ 割込ã¿ã‚’è¦æ±‚: %s]\n" -#: src/readelf.c:1414 +#: src/readelf.c:1433 msgid "" "\n" " Section to Segment mapping:\n" @@ -4223,12 +4228,12 @@ msgstr "" " セクションã‹ã‚‰ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã¸ã®ãƒžãƒƒãƒ“ング:\n" " セグメント セクション..." -#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 +#: src/readelf.c:1444 src/unstrip.c:2067 src/unstrip.c:2109 src/unstrip.c:2116 #, c-format msgid "cannot get program header: %s" msgstr "プãƒã‚°ãƒ©ãƒ ヘッダーを得られã¾ã›ã‚“: %s" -#: src/readelf.c:1571 +#: src/readelf.c:1590 #, c-format msgid "" "\n" @@ -4241,7 +4246,7 @@ msgstr[0] "" "ç½²å '%3$s' ã‚’æŒã¤ COMDAT セクショングループ [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®" "é …ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:1576 +#: src/readelf.c:1595 #, c-format msgid "" "\n" @@ -4254,31 +4259,31 @@ msgstr[0] "" "ç½²å '%3$s' ã‚’æŒã¤ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚°ãƒ«ãƒ¼ãƒ— [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …ç›®ãŒã‚" "ã‚Šã¾ã™:\n" -#: src/readelf.c:1584 +#: src/readelf.c:1603 msgid "<INVALID SYMBOL>" msgstr "<ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«>" -#: src/readelf.c:1598 +#: src/readelf.c:1617 msgid "<INVALID SECTION>" msgstr "<ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³>" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12386 -#: src/readelf.c:12393 src/readelf.c:12437 src/readelf.c:12444 +#: src/readelf.c:1640 src/readelf.c:2367 src/readelf.c:3468 src/readelf.c:12494 +#: src/readelf.c:12501 src/readelf.c:12545 src/readelf.c:12552 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 +#: src/readelf.c:1645 src/readelf.c:2372 src/readelf.c:3473 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "セクションヘッダーを得られã¾ã›ã‚“: %s" -#: src/readelf.c:1770 src/readelf.c:2420 src/readelf.c:2678 src/readelf.c:2754 -#: src/readelf.c:3058 src/readelf.c:3132 src/readelf.c:5327 +#: src/readelf.c:1789 src/readelf.c:2439 src/readelf.c:2697 src/readelf.c:2773 +#: src/readelf.c:3077 src/readelf.c:3151 src/readelf.c:5348 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr "ä¸å½“㪠.debug_line セクション" -#: src/readelf.c:1773 +#: src/readelf.c:1792 #, c-format msgid "" "\n" @@ -4294,36 +4299,36 @@ msgstr[0] "" " アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: " "[%2u] '%s'\n" -#: src/readelf.c:1783 +#: src/readelf.c:1802 msgid " Type Value\n" msgstr " タイプ 値\n" -#: src/readelf.c:1807 +#: src/readelf.c:1826 #, c-format msgid "Shared library: [%s]\n" msgstr "共用ライブラリー: [%s]\n" -#: src/readelf.c:1812 +#: src/readelf.c:1831 #, c-format msgid "Library soname: [%s]\n" msgstr "ライブラリー so å: [%s]\n" -#: src/readelf.c:1817 +#: src/readelf.c:1836 #, c-format msgid "Library rpath: [%s]\n" msgstr "ライブラリー rパス: [%s]\n" -#: src/readelf.c:1822 +#: src/readelf.c:1841 #, c-format msgid "Library runpath: [%s]\n" msgstr "ライブラリー run パス: [%s]\n" -#: src/readelf.c:1842 +#: src/readelf.c:1861 #, c-format msgid "%<PRId64> (bytes)\n" msgstr "%<PRId64> (ãƒã‚¤ãƒˆ)\n" -#: src/readelf.c:1955 src/readelf.c:2145 +#: src/readelf.c:1974 src/readelf.c:2164 #, c-format msgid "" "\n" @@ -4332,7 +4337,7 @@ msgstr "" "\n" "オフセット %#0<PRIx64> ã«ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«ãƒ†ãƒ¼ãƒ–ル\n" -#: src/readelf.c:1973 src/readelf.c:2163 +#: src/readelf.c:1992 src/readelf.c:2182 #, c-format msgid "" "\n" @@ -4353,7 +4358,7 @@ msgstr[0] "" #. The .rela.dyn section does not refer to a specific section but #. instead of section index zero. Do not try to print a section #. name. -#: src/readelf.c:1988 src/readelf.c:2178 +#: src/readelf.c:2007 src/readelf.c:2197 #, c-format msgid "" "\n" @@ -4366,29 +4371,29 @@ msgstr[0] "" "オフセット %3$#0<PRIx64> ã®ãƒªãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$2u] '%2$s' ã«ã¯ %4$d " "個ã®é …ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:1998 +#: src/readelf.c:2017 msgid " Offset Type Value Name\n" msgstr " オフセット タイプ 値 åå‰\n" -#: src/readelf.c:2000 +#: src/readelf.c:2019 msgid " Offset Type Value Name\n" msgstr " オフセット タイプ 値 åå‰\n" -#: src/readelf.c:2053 src/readelf.c:2064 src/readelf.c:2077 src/readelf.c:2098 -#: src/readelf.c:2110 src/readelf.c:2244 src/readelf.c:2256 src/readelf.c:2270 -#: src/readelf.c:2292 src/readelf.c:2305 +#: src/readelf.c:2072 src/readelf.c:2083 src/readelf.c:2096 src/readelf.c:2117 +#: src/readelf.c:2129 src/readelf.c:2263 src/readelf.c:2275 src/readelf.c:2289 +#: src/readelf.c:2311 src/readelf.c:2324 msgid "<INVALID RELOC>" msgstr "<ä¸å½“ãªRELOC>" -#: src/readelf.c:2188 +#: src/readelf.c:2207 msgid " Offset Type Value Addend Name\n" msgstr " オフセット タイプ 値 ä»˜åŠ å\n" -#: src/readelf.c:2190 +#: src/readelf.c:2209 msgid " Offset Type Value Addend Name\n" msgstr " オフセット タイプ 値 ä»˜åŠ å\n" -#: src/readelf.c:2428 +#: src/readelf.c:2447 #, c-format msgid "" "\n" @@ -4400,39 +4405,39 @@ msgstr[0] "" "\n" "シンボルテーブル [%2u] '%s' ã«ã¯ %u 個ã®é …ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:2433 +#: src/readelf.c:2452 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" msgstr[0] " %lu ãƒãƒ¼ã‚«ãƒ«ã‚·ãƒ³ãƒœãƒ«æ–‡å—列テーブル: [%2u] '%s'\n" -#: src/readelf.c:2441 +#: src/readelf.c:2460 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " æ•° : 値 大ã タイプ Bind Vis Ndx åå‰\n" -#: src/readelf.c:2443 +#: src/readelf.c:2462 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " æ•° : 値 大ã タイプ Bind Vis Ndx åå‰\n" -#: src/readelf.c:2463 +#: src/readelf.c:2482 #, c-format msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" -#: src/readelf.c:2551 +#: src/readelf.c:2570 #, c-format msgid "bad dynamic symbol" msgstr "ä¸æ£ãªå‹•çš„シンボル" -#: src/readelf.c:2633 +#: src/readelf.c:2652 msgid "none" msgstr "ãªã—" -#: src/readelf.c:2650 +#: src/readelf.c:2669 msgid "| <unknown>" msgstr "| <ä¸æ˜Ž>" -#: src/readelf.c:2681 +#: src/readelf.c:2700 #, c-format msgid "" "\n" @@ -4448,17 +4453,17 @@ msgstr[0] "" " アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: " "[%2u] '%s'\n" -#: src/readelf.c:2702 +#: src/readelf.c:2721 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hu ファイル: %s æ•°: %hu\n" -#: src/readelf.c:2715 +#: src/readelf.c:2734 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: åå‰: %s フラグ: %s ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hu\n" -#: src/readelf.c:2758 +#: src/readelf.c:2777 #, c-format msgid "" "\n" @@ -4474,18 +4479,18 @@ msgstr[0] "" " アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: " "[%2u] '%s'\n" -#: src/readelf.c:2786 +#: src/readelf.c:2805 #, c-format msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" msgstr " %#06x: ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hd フラグ: %s 索引: %hd æ•°: %hd åå‰: %s\n" -#: src/readelf.c:2801 +#: src/readelf.c:2820 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: 親 %d: %s\n" #. Print the header. -#: src/readelf.c:3062 +#: src/readelf.c:3081 #, c-format msgid "" "\n" @@ -4501,15 +4506,15 @@ msgstr[0] "" " アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: " "[%2u] '%s'" -#: src/readelf.c:3090 +#: src/readelf.c:3109 msgid " 0 *local* " msgstr " 0 *ãƒãƒ¼ã‚«ãƒ«* " -#: src/readelf.c:3095 +#: src/readelf.c:3114 msgid " 1 *global* " msgstr " 1 *ã‚°ãƒãƒ¼ãƒãƒ«* " -#: src/readelf.c:3137 +#: src/readelf.c:3156 #, c-format msgid "" "\n" @@ -4527,22 +4532,22 @@ msgstr[0] "" " アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: " "[%2u] '%s'\n" -#: src/readelf.c:3159 +#: src/readelf.c:3178 #, fuzzy, no-c-format msgid " Length Number % of total Coverage\n" msgstr " é•·ã• æ•° 全体ã®% 範囲 \n" -#: src/readelf.c:3161 +#: src/readelf.c:3180 #, c-format msgid " 0 %6<PRIu32> %5.1f%%\n" msgstr " 0 %6<PRIu32> %5.1f%%\n" -#: src/readelf.c:3168 +#: src/readelf.c:3187 #, c-format msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" -#: src/readelf.c:3181 +#: src/readelf.c:3200 #, fuzzy, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4551,37 +4556,37 @@ msgstr "" " テストã®å¹³å‡æ•°: 検索æˆåŠŸ: %f\n" " 検索失敗: %f\n" -#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 +#: src/readelf.c:3218 src/readelf.c:3282 src/readelf.c:3348 #, c-format msgid "cannot get data for section %d: %s" msgstr "セクションã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“ %d: %s" -#: src/readelf.c:3207 +#: src/readelf.c:3226 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:3236 +#: src/readelf.c:3255 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:3271 +#: src/readelf.c:3290 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:3302 +#: src/readelf.c:3321 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:3338 +#: src/readelf.c:3357 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:3405 +#: src/readelf.c:3424 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4591,7 +4596,7 @@ msgstr "" " ビットマスクã®å¤§ãã•: %zu ãƒã‚¤ãƒˆ %<PRIuFAST32>%% ビットè¨å®š 第2ãƒãƒƒã‚·ãƒ¥ã‚·ãƒ•" "ト: %u\n" -#: src/readelf.c:3494 +#: src/readelf.c:3513 #, c-format msgid "" "\n" @@ -4604,7 +4609,7 @@ msgstr[0] "" "オフセット %3$#0<PRIx64> ã®ãƒ©ã‚¤ãƒ–ラリー一覧セクション [%1$2zu] '%2$s' ã«ã¯ " "%4$d 個ã®é …ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:3508 +#: src/readelf.c:3527 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4612,7 +4617,7 @@ msgstr "" " ライブラリー タイムスタンプ ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãƒãƒ¼" "ジョン フラグ" -#: src/readelf.c:3558 +#: src/readelf.c:3579 #, c-format msgid "" "\n" @@ -4623,102 +4628,102 @@ msgstr "" "オフセット %4$#0<PRIx64> ã® %3$<PRIu64> ãƒã‚¤ãƒˆã®ã‚ªãƒ–ジェクト属性セクション " "[%1$2zu] '%2$s':\n" -#: src/readelf.c:3575 +#: src/readelf.c:3596 msgid " Owner Size\n" msgstr " 所有者 大ãã•\n" -#: src/readelf.c:3604 +#: src/readelf.c:3625 #, c-format msgid " %-13s %4<PRIu32>\n" msgstr " %-13s %4<PRIu32>\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3643 +#: src/readelf.c:3664 #, c-format msgid " %-4u %12<PRIu32>\n" msgstr " %-4u %12<PRIu32>\n" #. Tag_File -#: src/readelf.c:3648 +#: src/readelf.c:3669 #, c-format msgid " File: %11<PRIu32>\n" msgstr " ファイル: %11<PRIu32>\n" -#: src/readelf.c:3697 +#: src/readelf.c:3718 #, c-format msgid " %s: %<PRId64>, %s\n" msgstr " %s: %<PRId64>ã€%s\n" -#: src/readelf.c:3700 +#: src/readelf.c:3721 #, c-format msgid " %s: %<PRId64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:3703 +#: src/readelf.c:3724 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3713 +#: src/readelf.c:3734 #, c-format msgid " %u: %<PRId64>\n" msgstr " %u: %<PRId64>\n" -#: src/readelf.c:3716 +#: src/readelf.c:3737 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3786 +#: src/readelf.c:3807 #, c-format msgid "sprintf failure" msgstr "" -#: src/readelf.c:4268 +#: src/readelf.c:4289 msgid "empty block" msgstr "空ブãƒãƒƒã‚¯" -#: src/readelf.c:4271 +#: src/readelf.c:4292 #, c-format msgid "%zu byte block:" msgstr "%zu ãƒã‚¤ãƒˆã®ãƒ–ãƒãƒƒã‚¯:" -#: src/readelf.c:4749 +#: src/readelf.c:4770 #, fuzzy, c-format msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n" msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n" -#: src/readelf.c:4813 +#: src/readelf.c:4834 #, c-format msgid "%s %#<PRIx64> used with different address sizes" msgstr "" -#: src/readelf.c:4820 +#: src/readelf.c:4841 #, c-format msgid "%s %#<PRIx64> used with different offset sizes" msgstr "" -#: src/readelf.c:4827 +#: src/readelf.c:4848 #, c-format msgid "%s %#<PRIx64> used with different base addresses" msgstr "" -#: src/readelf.c:4834 +#: src/readelf.c:4855 #, c-format msgid "%s %#<PRIx64> used with different attribute %s and %s" msgstr "" -#: src/readelf.c:4931 +#: src/readelf.c:4952 #, c-format msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n" msgstr "" -#: src/readelf.c:4939 +#: src/readelf.c:4960 #, c-format msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n" msgstr "" -#: src/readelf.c:5017 +#: src/readelf.c:5038 #, c-format msgid "" "\n" @@ -4729,7 +4734,7 @@ msgstr "" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s':\n" " [ コード]\n" -#: src/readelf.c:5025 +#: src/readelf.c:5046 #, c-format msgid "" "\n" @@ -4738,20 +4743,20 @@ msgstr "" "\n" "オフセット %<PRIu64> ã®ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³:\n" -#: src/readelf.c:5038 +#: src/readelf.c:5059 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** 略語をèªã‚“ã§ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s\n" -#: src/readelf.c:5054 +#: src/readelf.c:5075 #, c-format msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n" msgstr " [%5u] オフセット: %<PRId64>ã€å: %sã€ã‚¿ã‚°: %s\n" -#: src/readelf.c:5087 src/readelf.c:5396 src/readelf.c:5563 src/readelf.c:5948 -#: src/readelf.c:6549 src/readelf.c:8199 src/readelf.c:8885 src/readelf.c:9321 -#: src/readelf.c:9566 src/readelf.c:9732 src/readelf.c:10119 -#: src/readelf.c:10179 +#: src/readelf.c:5108 src/readelf.c:5417 src/readelf.c:5584 src/readelf.c:5969 +#: src/readelf.c:6570 src/readelf.c:8307 src/readelf.c:8993 src/readelf.c:9429 +#: src/readelf.c:9674 src/readelf.c:9840 src/readelf.c:10227 +#: src/readelf.c:10287 #, c-format msgid "" "\n" @@ -4760,52 +4765,52 @@ msgstr "" "\n" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:5100 +#: src/readelf.c:5121 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s" -#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8930 +#: src/readelf.c:5221 src/readelf.c:5245 src/readelf.c:5629 src/readelf.c:9038 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8943 +#: src/readelf.c:5223 src/readelf.c:5260 src/readelf.c:5642 src/readelf.c:9051 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8952 +#: src/readelf.c:5224 src/readelf.c:5269 src/readelf.c:5651 src/readelf.c:9060 #, fuzzy, c-format msgid " Address size: %8<PRIu64>\n" msgstr " (終了オフセット: %#<PRIx64>)" -#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8962 +#: src/readelf.c:5226 src/readelf.c:5279 src/readelf.c:5661 src/readelf.c:9070 #, fuzzy, c-format msgid " Segment size: %8<PRIu64>\n" msgstr " ファイルを %<PRIu64> ã«è¨å®šã™ã‚‹\n" -#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8947 src/readelf.c:10311 +#: src/readelf.c:5264 src/readelf.c:5646 src/readelf.c:9055 src/readelf.c:10419 #, fuzzy, c-format msgid "Unknown version" msgstr "ä¸æ˜Žãªãƒãƒ¼ã‚¸ãƒ§ãƒ³" -#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8957 +#: src/readelf.c:5274 src/readelf.c:5487 src/readelf.c:5656 src/readelf.c:9065 #, fuzzy, c-format msgid "unsupported address size" msgstr "アドレス値ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8967 +#: src/readelf.c:5285 src/readelf.c:5498 src/readelf.c:5666 src/readelf.c:9075 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5317 src/readelf.c:5391 +#: src/readelf.c:5338 src/readelf.c:5412 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr ".debug_aragnes ã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:5332 +#: src/readelf.c:5353 #, c-format msgid "" "\n" @@ -4818,19 +4823,19 @@ msgstr[0] "" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …" "ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:5363 +#: src/readelf.c:5384 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5365 +#: src/readelf.c:5386 #, 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:5409 src/readelf.c:8226 +#: src/readelf.c:5430 src/readelf.c:8334 #, fuzzy, c-format msgid "" "\n" @@ -4839,154 +4844,154 @@ msgstr "" "\n" "オフセット %Zu ã®ãƒ†ãƒ¼ãƒ–ル:\n" -#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 -#: src/readelf.c:8911 +#: src/readelf.c:5434 src/readelf.c:5610 src/readelf.c:6594 src/readelf.c:8345 +#: src/readelf.c:9019 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:5429 +#: src/readelf.c:5450 #, fuzzy, c-format msgid "" "\n" " Length: %6<PRIu64>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:5441 +#: src/readelf.c:5462 #, fuzzy, c-format msgid " DWARF version: %6<PRIuFAST16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:5445 +#: src/readelf.c:5466 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5456 +#: src/readelf.c:5477 #, fuzzy, c-format msgid " CU offset: %6<PRIx64>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:5462 +#: src/readelf.c:5483 #, fuzzy, c-format msgid " Address size: %6<PRIu64>\n" msgstr " (終了オフセット: %#<PRIx64>)" -#: src/readelf.c:5473 +#: src/readelf.c:5494 #, fuzzy, c-format msgid "" " Segment size: %6<PRIu64>\n" "\n" msgstr " ファイルを %<PRIu64> ã«è¨å®šã™ã‚‹\n" -#: src/readelf.c:5528 +#: src/readelf.c:5549 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5572 +#: src/readelf.c:5593 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:5595 src/readelf.c:8917 +#: src/readelf.c:5616 src/readelf.c:9025 #, fuzzy, c-format msgid "" "Table at Offset 0x%<PRIx64>:\n" "\n" msgstr " (終了オフセット: %#<PRIx64>)" -#: src/readelf.c:5650 src/readelf.c:8972 +#: src/readelf.c:5671 src/readelf.c:9080 #, fuzzy, c-format msgid " Offset entries: %8<PRIu64>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:5666 src/readelf.c:8988 +#: src/readelf.c:5687 src/readelf.c:9096 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8990 +#: src/readelf.c:5689 src/readelf.c:9098 #, c-format msgid " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5674 src/readelf.c:8996 +#: src/readelf.c:5695 src/readelf.c:9104 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5685 src/readelf.c:9007 +#: src/readelf.c:5706 src/readelf.c:9115 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5689 src/readelf.c:9011 +#: src/readelf.c:5710 src/readelf.c:9119 #, fuzzy, c-format msgid " Offsets starting at 0x%<PRIx64>:\n" msgstr " 所有者 大ãã•\n" -#: src/readelf.c:5741 +#: src/readelf.c:5762 #, fuzzy, c-format msgid "invalid range list data" msgstr "ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:5926 src/readelf.c:9299 +#: src/readelf.c:5947 src/readelf.c:9407 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:5943 +#: src/readelf.c:5964 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:5979 src/readelf.c:9354 +#: src/readelf.c:6000 src/readelf.c:9462 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5981 src/readelf.c:9356 +#: src/readelf.c:6002 src/readelf.c:9464 #, c-format msgid "" "\n" " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5990 src/readelf.c:9382 src/readelf.c:9408 +#: src/readelf.c:6011 src/readelf.c:9490 src/readelf.c:9516 #, c-format msgid " [%6tx] <INVALID DATA>\n" msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n" -#: src/readelf.c:6011 src/readelf.c:9488 +#: src/readelf.c:6032 src/readelf.c:9596 #, fuzzy, c-format msgid "" " [%6tx] base address\n" " " msgstr " [%6tx] ベースアドレス %s\n" -#: src/readelf.c:6019 src/readelf.c:9496 +#: src/readelf.c:6040 src/readelf.c:9604 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr "" "\n" " [%6tx] ゼãƒçµ‚端\n" -#: src/readelf.c:6274 +#: src/readelf.c:6295 #, fuzzy msgid " <INVALID DATA>\n" msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n" -#: src/readelf.c:6527 +#: src/readelf.c:6548 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "次㮠DIE を得られã¾ã›ã‚“: %s" -#: src/readelf.c:6545 +#: src/readelf.c:6566 #, c-format msgid "" "\n" @@ -4995,7 +5000,7 @@ msgstr "" "\n" "オフセット %3$#<PRIx64> ã® ãƒ•ãƒ¬ãƒ¼ãƒ æƒ…å ±å‘¼å‡ºã—セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:6595 +#: src/readelf.c:6616 #, c-format msgid "" "\n" @@ -5004,65 +5009,65 @@ msgstr "" "\n" " [%6tx] ゼãƒçµ‚端\n" -#: src/readelf.c:6696 src/readelf.c:6850 +#: src/readelf.c:6717 src/readelf.c:6871 #, fuzzy, c-format msgid "invalid augmentation length" msgstr "ä¸å½“ãªæ‹¡å¤§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰" -#: src/readelf.c:6711 +#: src/readelf.c:6732 msgid "FDE address encoding: " msgstr "FDE アドレスエンコード" -#: src/readelf.c:6717 +#: src/readelf.c:6738 msgid "LSDA pointer encoding: " msgstr "LSDA ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰:" -#: src/readelf.c:6827 +#: src/readelf.c:6848 #, c-format msgid " (offset: %#<PRIx64>)" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:6834 +#: src/readelf.c:6855 #, c-format msgid " (end offset: %#<PRIx64>)" msgstr " (終了オフセット: %#<PRIx64>)" -#: src/readelf.c:6871 +#: src/readelf.c:6892 #, c-format msgid " %-26sLSDA pointer: %#<PRIx64>\n" msgstr " %-26sLSDA ãƒã‚¤ãƒ³ã‚¿ãƒ¼: %#<PRIx64>\n" -#: src/readelf.c:6956 +#: src/readelf.c:6977 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute code: %s" msgstr "属性コードを得られã¾ã›ã‚“: %s" -#: src/readelf.c:6966 +#: src/readelf.c:6987 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute form: %s" msgstr "属性様å¼ã‚’得られã¾ã›ã‚“: %s" -#: src/readelf.c:6988 +#: src/readelf.c:7009 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s" msgstr "属性値を得られã¾ã›ã‚“: %s" -#: src/readelf.c:7321 +#: src/readelf.c:7339 #, fuzzy, c-format msgid "invalid file (%<PRId64>): %s" msgstr "ä¸å½“ãªãƒ•ã‚¡ã‚¤ãƒ«" -#: src/readelf.c:7325 +#: src/readelf.c:7343 #, fuzzy, c-format msgid "no srcfiles for CU [%<PRIx64>]" msgstr " ファイルを %<PRIu64> ã«è¨å®šã™ã‚‹\n" -#: src/readelf.c:7329 +#: src/readelf.c:7347 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "次㮠DIE を得られã¾ã›ã‚“: %s" -#: src/readelf.c:7552 +#: src/readelf.c:7660 #, c-format msgid "" "\n" @@ -5073,12 +5078,12 @@ msgstr "" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s':\n" " [オフセット]\n" -#: src/readelf.c:7602 +#: src/readelf.c:7710 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "次㮠DIE を得られã¾ã›ã‚“: %s" -#: src/readelf.c:7621 +#: src/readelf.c:7729 #, fuzzy, c-format msgid "" " Type unit at offset %<PRIu64>:\n" @@ -5090,7 +5095,7 @@ msgstr "" " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %2$<PRIu16>ã€ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %3$<PRIu64>ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¤§" "ãã•: %4$<PRIu8>ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å¤§ãã•: %5$<PRIu8>\n" -#: src/readelf.c:7633 +#: src/readelf.c:7741 #, c-format msgid "" " Compilation unit at offset %<PRIu64>:\n" @@ -5101,39 +5106,39 @@ msgstr "" " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %2$<PRIu16>ã€ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %3$<PRIu64>ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¤§" "ãã•: %4$<PRIu8>ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å¤§ãã•: %5$<PRIu8>\n" -#: src/readelf.c:7643 src/readelf.c:7806 +#: src/readelf.c:7751 src/readelf.c:7914 #, c-format msgid " Unit type: %s (%<PRIu8>)" msgstr "" -#: src/readelf.c:7670 +#: src/readelf.c:7778 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7699 +#: src/readelf.c:7807 #, c-format msgid "cannot get DIE offset: %s" msgstr "DIE オフセットを得られã¾ã›ã‚“: %s" -#: src/readelf.c:7708 +#: src/readelf.c:7816 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s" msgstr "" "セクション '%2$s' ä¸ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ %1$<PRIu64> ã® DIE ã®ã‚¿ã‚°ã‚’得られã¾ã›ã‚“: " "%3$s" -#: src/readelf.c:7746 +#: src/readelf.c:7854 #, c-format msgid "cannot get next DIE: %s\n" msgstr "次㮠DIE を得られã¾ã›ã‚“: %s\n" -#: src/readelf.c:7754 +#: src/readelf.c:7862 #, c-format msgid "cannot get next DIE: %s" msgstr "次㮠DIE を得られã¾ã›ã‚“: %s" -#: src/readelf.c:7798 +#: src/readelf.c:7906 #, fuzzy, c-format msgid "" " Split compilation unit at offset %<PRIu64>:\n" @@ -5144,7 +5149,7 @@ msgstr "" " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %2$<PRIu16>ã€ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %3$<PRIu64>ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¤§" "ãã•: %4$<PRIu8>ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å¤§ãã•: %5$<PRIu8>\n" -#: src/readelf.c:7850 +#: src/readelf.c:7958 #, fuzzy, c-format msgid "" "\n" @@ -5154,18 +5159,18 @@ msgstr "" "\n" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:8182 +#: src/readelf.c:8290 #, fuzzy, c-format msgid "unknown form: %s" msgstr "ä¸æ˜Žãªæ§˜å¼ %<PRIx64>" -#: src/readelf.c:8213 +#: src/readelf.c:8321 #, c-format msgid "cannot get line data section data: %s" msgstr "ラインデータセクションデータを得られã¾ã›ã‚“: %s" #. Print what we got so far. -#: src/readelf.c:8315 +#: src/readelf.c:8423 #, fuzzy, c-format msgid "" "\n" @@ -5195,33 +5200,33 @@ msgstr "" "\n" "命令コード:\n" -#: src/readelf.c:8337 +#: src/readelf.c:8445 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:8345 +#: src/readelf.c:8453 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "アドレス値ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: src/readelf.c:8353 +#: src/readelf.c:8461 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "セクションを得られã¾ã›ã‚“: %s" -#: src/readelf.c:8363 +#: src/readelf.c:8471 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "セクション [%2$zu] '%3$s' ä¸ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ %1$tu ã«ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:8378 +#: src/readelf.c:8486 #, c-format msgid " [%*<PRIuFAST8>] %hhu argument\n" msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n" msgstr[0] " [%*<PRIuFAST8>] %hhu パラメーター\n" -#: src/readelf.c:8389 +#: src/readelf.c:8497 msgid "" "\n" "Directory table:" @@ -5229,12 +5234,12 @@ msgstr "" "\n" "ディレクトリーテーブル:" -#: src/readelf.c:8395 src/readelf.c:8472 +#: src/readelf.c:8503 src/readelf.c:8580 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8466 +#: src/readelf.c:8574 #, fuzzy msgid "" "\n" @@ -5243,7 +5248,7 @@ msgstr "" "\n" " 呼出ã—サイトテーブル:" -#: src/readelf.c:8527 +#: src/readelf.c:8635 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5251,7 +5256,7 @@ msgstr "" "ファイルåテーブル:\n" " Entry Dir 時刻 大ãã• åå‰" -#: src/readelf.c:8564 +#: src/readelf.c:8672 msgid "" "\n" "Line number statements:" @@ -5259,119 +5264,119 @@ msgstr "" "\n" "è¡Œ ç•ªå· æ–‡:" -#: src/readelf.c:8587 +#: src/readelf.c:8695 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "" -#: src/readelf.c:8621 +#: src/readelf.c:8729 #, fuzzy, c-format msgid " special opcode %u: address+%u = " msgstr " 特殊命令コード %u: アドレス+%u = %s, è¡Œ%+d = %zu\n" -#: src/readelf.c:8625 +#: src/readelf.c:8733 #, fuzzy, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr " 特殊命令コード %u: アドレス+%u = %s, è¡Œ%+d = %zu\n" -#: src/readelf.c:8628 +#: src/readelf.c:8736 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8646 +#: src/readelf.c:8754 #, c-format msgid " extended opcode %u: " msgstr " 拡張命令コード %u: " -#: src/readelf.c:8651 +#: src/readelf.c:8759 #, fuzzy msgid " end of sequence" msgstr "列ã®çµ‚ã‚ã‚Š" -#: src/readelf.c:8669 +#: src/readelf.c:8777 #, fuzzy, c-format msgid " set address to " msgstr "アドレスを %s ã«è¨å®šã™ã‚‹\n" -#: src/readelf.c:8697 +#: src/readelf.c:8805 #, 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:8711 +#: src/readelf.c:8819 #, fuzzy, c-format msgid " set discriminator to %u\n" msgstr "カラムを %<PRIu64> ã«è¨å®šã™ã‚‹\n" #. Unknown, ignore it. -#: src/readelf.c:8716 +#: src/readelf.c:8824 #, fuzzy msgid " unknown opcode" msgstr "ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰" #. Takes no argument. -#: src/readelf.c:8728 +#: src/readelf.c:8836 msgid " copy" msgstr "複写" -#: src/readelf.c:8739 +#: src/readelf.c:8847 #, fuzzy, c-format msgid " advance address by %u to " msgstr "アドレスを %u ã ã‘進ã‚㦠%s ã«ã™ã‚‹\n" -#: src/readelf.c:8743 src/readelf.c:8804 +#: src/readelf.c:8851 src/readelf.c:8912 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8755 +#: src/readelf.c:8863 #, c-format msgid " advance line by constant %d to %<PRId64>\n" msgstr "行を定数 %d ã ã‘進ã‚㦠%<PRId64> ã«ã™ã‚‹\n" -#: src/readelf.c:8765 +#: src/readelf.c:8873 #, c-format msgid " set file to %<PRIu64>\n" msgstr " ファイルを %<PRIu64> ã«è¨å®šã™ã‚‹\n" -#: src/readelf.c:8776 +#: src/readelf.c:8884 #, c-format msgid " set column to %<PRIu64>\n" msgstr "カラムを %<PRIu64> ã«è¨å®šã™ã‚‹\n" -#: src/readelf.c:8783 +#: src/readelf.c:8891 #, c-format msgid " set '%s' to %<PRIuFAST8>\n" msgstr " '%s' ã‚’ %<PRIuFAST8> ã«è¨å®šã™ã‚‹\n" #. Takes no argument. -#: src/readelf.c:8789 +#: src/readelf.c:8897 msgid " set basic block flag" msgstr "基本ブãƒãƒƒã‚¯ãƒ•ãƒ©ã‚°ã‚’è¨å®šã™ã‚‹" -#: src/readelf.c:8800 +#: src/readelf.c:8908 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr "アドレスを定数 %u ã ã‘済ã‚㦠%s ã«ã™ã‚‹\n" -#: src/readelf.c:8820 +#: src/readelf.c:8928 #, fuzzy, c-format msgid " advance address by fixed value %u to \n" msgstr "アドレスを固定値 %u ã ã‘進ã‚㦠%s ã«ã™ã‚‹\n" #. Takes no argument. -#: src/readelf.c:8830 +#: src/readelf.c:8938 msgid " set prologue end flag" msgstr "プãƒãƒãƒ¼ã‚°çµ‚了フラグをè¨å®šã™ã‚‹" #. Takes no argument. -#: src/readelf.c:8835 +#: src/readelf.c:8943 msgid " set epilogue begin flag" msgstr "エピãƒãƒ¼ã‚°é–‹å§‹ãƒ•ãƒ©ã‚°ã‚’è¨å®šã™ã‚‹" -#: src/readelf.c:8845 +#: src/readelf.c:8953 #, fuzzy, c-format msgid " set isa to %u\n" msgstr " ファイルを %<PRIu64> ã«è¨å®šã™ã‚‹\n" @@ -5379,98 +5384,98 @@ 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:8854 +#: src/readelf.c:8962 #, c-format msgid " unknown opcode with %<PRIu8> parameter:" msgid_plural " unknown opcode with %<PRIu8> parameters:" msgstr[0] " %<PRIu8> 個ã®ãƒ‘ラメーターã®ã‚ã‚‹ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰:" -#: src/readelf.c:8894 +#: src/readelf.c:9002 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr ".debug_loc ã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:9063 +#: src/readelf.c:9171 #, fuzzy, c-format msgid "invalid loclists data" msgstr "ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/readelf.c:9316 +#: src/readelf.c:9424 #, c-format msgid "cannot get .debug_loc content: %s" msgstr ".debug_loc ã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:9523 src/readelf.c:10567 +#: src/readelf.c:9631 src/readelf.c:10675 #, fuzzy msgid " <INVALID DATA>\n" msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n" -#: src/readelf.c:9578 src/readelf.c:9741 +#: src/readelf.c:9686 src/readelf.c:9849 #, c-format msgid "cannot get macro information section data: %s" msgstr "マクãƒæƒ…å ±ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“: %s" -#: src/readelf.c:9658 +#: src/readelf.c:9766 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** 最後ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®çµ‚端ã—ã¦ã„ãªã„æ–‡å—列" -#: src/readelf.c:9681 +#: src/readelf.c:9789 #, fuzzy, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** 最後ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®çµ‚端ã—ã¦ã„ãªã„æ–‡å—列" -#: src/readelf.c:9782 +#: src/readelf.c:9890 #, fuzzy, c-format msgid " Offset: 0x%<PRIx64>\n" msgstr " 所有者 大ãã•\n" -#: src/readelf.c:9794 +#: src/readelf.c:9902 #, fuzzy, c-format msgid " Version: %<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:9800 src/readelf.c:10687 +#: src/readelf.c:9908 src/readelf.c:10795 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:9807 +#: src/readelf.c:9915 #, fuzzy, c-format msgid " Flag: 0x%<PRIx8>" msgstr " å…¥å£ç‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹ : %#<PRIx64>\n" -#: src/readelf.c:9836 +#: src/readelf.c:9944 #, fuzzy, c-format msgid " Offset length: %<PRIu8>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:9844 +#: src/readelf.c:9952 #, fuzzy, c-format msgid " .debug_line offset: 0x%<PRIx64>\n" msgstr " (終了オフセット: %#<PRIx64>)" -#: src/readelf.c:9869 +#: src/readelf.c:9977 #, fuzzy, c-format msgid " extension opcode table, %<PRIu8> items:\n" msgstr " %<PRIu8> 個ã®ãƒ‘ラメーターã®ã‚ã‚‹ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰:" -#: src/readelf.c:9876 +#: src/readelf.c:9984 #, c-format msgid " [%<PRIx8>]" msgstr "" -#: src/readelf.c:9888 +#: src/readelf.c:9996 #, fuzzy, c-format msgid " %<PRIu8> arguments:" msgstr " [%*<PRIuFAST8>] %hhu パラメーター\n" -#: src/readelf.c:9903 +#: src/readelf.c:10011 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10104 +#: src/readelf.c:10212 #, c-format msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n" msgstr "" @@ -5478,7 +5483,7 @@ msgstr "" # # "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s':\n" # # " %4$*s æ–‡å—列\n" ãŒã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã®ã¯ä½•æ•…? å–ã‚Šæ•¢ãˆãš fuzzy扱ㄠ-#: src/readelf.c:10148 +#: src/readelf.c:10256 #, fuzzy, c-format msgid "" "\n" @@ -5489,37 +5494,37 @@ msgstr "" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s':\n" " %4$*s æ–‡å—列\n" -#: src/readelf.c:10163 +#: src/readelf.c:10271 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** æ–‡å—列ã®èªè¾¼ã¿ä¸ã«ã‚¨ãƒ©ãƒ¼: %s\n" -#: src/readelf.c:10192 +#: src/readelf.c:10300 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:10291 +#: src/readelf.c:10399 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:10293 +#: src/readelf.c:10401 #, fuzzy, c-format msgid " Offset size: %8<PRIu8>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:10307 +#: src/readelf.c:10415 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10316 +#: src/readelf.c:10424 #, fuzzy, c-format msgid " Padding: %8<PRIx16>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:10370 +#: src/readelf.c:10478 #, c-format msgid "" "\n" @@ -5528,7 +5533,7 @@ msgstr "" "\n" "呼出ã—フレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10472 +#: src/readelf.c:10580 #, c-format msgid "" "\n" @@ -5537,22 +5542,22 @@ msgstr "" "\n" "例外å–扱ã„テーブルセクション [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10495 +#: src/readelf.c:10603 #, c-format msgid " LPStart encoding: %#x " msgstr " LPStart コード化: %#x " -#: src/readelf.c:10507 +#: src/readelf.c:10615 #, c-format msgid " TType encoding: %#x " msgstr "TType コード化: %#x " -#: src/readelf.c:10522 +#: src/readelf.c:10630 #, c-format msgid " Call site encoding: %#x " msgstr "呼出ã—サイトコード化: %#x " -#: src/readelf.c:10535 +#: src/readelf.c:10643 msgid "" "\n" " Call site table:" @@ -5560,7 +5565,7 @@ msgstr "" "\n" " 呼出ã—サイトテーブル:" -#: src/readelf.c:10549 +#: src/readelf.c:10657 #, c-format msgid "" " [%4u] Call site start: %#<PRIx64>\n" @@ -5573,12 +5578,12 @@ msgstr "" " 離ç€é™¸å ´: %#<PRIx64>\n" " 行動: %u\n" -#: src/readelf.c:10622 +#: src/readelf.c:10730 #, c-format msgid "invalid TType encoding" msgstr "ä¸å½“㪠TType コード化" -#: src/readelf.c:10649 +#: src/readelf.c:10757 #, fuzzy, c-format msgid "" "\n" @@ -5588,37 +5593,37 @@ msgstr "" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …" "ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:10678 +#: src/readelf.c:10786 #, fuzzy, c-format msgid " Version: %<PRId32>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:10696 +#: src/readelf.c:10804 #, fuzzy, c-format msgid " CU offset: %#<PRIx32>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:10703 +#: src/readelf.c:10811 #, fuzzy, c-format msgid " TU offset: %#<PRIx32>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:10710 +#: src/readelf.c:10818 #, fuzzy, c-format msgid " address offset: %#<PRIx32>\n" msgstr " (終了オフセット: %#<PRIx64>)" -#: src/readelf.c:10717 +#: src/readelf.c:10825 #, fuzzy, c-format msgid " symbol offset: %#<PRIx32>\n" msgstr " (オフセット: %#<PRIx64>)" -#: src/readelf.c:10724 +#: src/readelf.c:10832 #, fuzzy, c-format msgid " constant offset: %#<PRIx32>\n" msgstr " (終了オフセット: %#<PRIx64>)" -#: src/readelf.c:10738 +#: src/readelf.c:10846 #, fuzzy, c-format msgid "" "\n" @@ -5628,7 +5633,7 @@ msgstr "" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …" "ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:10763 +#: src/readelf.c:10871 #, fuzzy, c-format msgid "" "\n" @@ -5638,7 +5643,7 @@ msgstr "" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …" "ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:10792 +#: src/readelf.c:10900 #, fuzzy, c-format msgid "" "\n" @@ -5648,7 +5653,7 @@ msgstr "" "オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …" "ç›®ãŒã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:10824 +#: src/readelf.c:10932 #, fuzzy, c-format msgid "" "\n" @@ -5657,18 +5662,18 @@ msgstr "" "\n" "オフセット %#0<PRIx64> ã«ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«ãƒ†ãƒ¼ãƒ–ル\n" -#: src/readelf.c:10962 +#: src/readelf.c:11070 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "デãƒãƒƒã‚°å†…容記述åを得られã¾ã›ã‚“: %s" -#: src/readelf.c:11325 src/readelf.c:11947 src/readelf.c:12058 -#: src/readelf.c:12116 +#: src/readelf.c:11433 src/readelf.c:12055 src/readelf.c:12166 +#: src/readelf.c:12224 #, c-format msgid "cannot convert core note data: %s" msgstr "コアノートデータã®å¤‰æ›ãŒã§ãã¾ã›ã‚“: %s" -#: src/readelf.c:11688 +#: src/readelf.c:11796 #, c-format msgid "" "\n" @@ -5677,21 +5682,21 @@ msgstr "" "\n" "%*s... < %u 回ã®ç¹°è¿”ã—> ..." -#: src/readelf.c:12195 +#: src/readelf.c:12303 msgid " Owner Data size Type\n" msgstr " 所有者 データ大ãã•ã‚¿ã‚¤ãƒ—\n" -#: src/readelf.c:12224 +#: src/readelf.c:12332 #, c-format msgid " %-13.*s %9<PRId32> %s\n" msgstr " %-13.*s %9<PRId32> %s\n" -#: src/readelf.c:12276 +#: src/readelf.c:12384 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "ノートセクションã®å†…容を得られã¾ã›ã‚“: %s" -#: src/readelf.c:12303 +#: src/readelf.c:12411 #, c-format msgid "" "\n" @@ -5701,7 +5706,7 @@ msgstr "" "オフセット %4$#0<PRIx64> ã® %3$<PRIu64> ãƒã‚¤ãƒˆã®ãƒŽãƒ¼ãƒˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$2zu] " "'%2$s':\n" -#: src/readelf.c:12326 +#: src/readelf.c:12434 #, c-format msgid "" "\n" @@ -5710,7 +5715,7 @@ msgstr "" "\n" "オフセット %2$#0<PRIx64> ã® %1$<PRIu64> ãƒã‚¤ãƒˆã®ãƒŽãƒ¼ãƒˆã‚»ã‚°ãƒ¡ãƒ³ãƒˆ:\n" -#: src/readelf.c:12373 +#: src/readelf.c:12481 #, fuzzy, c-format msgid "" "\n" @@ -5719,12 +5724,12 @@ msgstr "" "\n" "セクション [%Zu] '%s' ã«ã¯ãƒ€ãƒ³ãƒ—ã™ã¹ãデータãŒã‚ã‚Šã¾ã›ã‚“。\n" -#: src/readelf.c:12400 src/readelf.c:12451 +#: src/readelf.c:12508 src/readelf.c:12559 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "セクション [%Zu] '%s' ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãŒå¾—られã¾ã›ã‚“: %s" -#: src/readelf.c:12405 +#: src/readelf.c:12513 #, fuzzy, c-format msgid "" "\n" @@ -5734,7 +5739,7 @@ msgstr "" "オフセット %4$#0<PRIx64> ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$Zu] '%2$s' ã®16進ダン" "プã€%3$<PRIu64> ãƒã‚¤ãƒˆ:\n" -#: src/readelf.c:12410 +#: src/readelf.c:12518 #, fuzzy, c-format msgid "" "\n" @@ -5745,7 +5750,7 @@ msgstr "" "オフセット %4$#0<PRIx64> ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$Zu] '%2$s' ã®16進ダン" "プã€%3$<PRIu64> ãƒã‚¤ãƒˆ:\n" -#: src/readelf.c:12424 +#: src/readelf.c:12532 #, fuzzy, c-format msgid "" "\n" @@ -5754,7 +5759,7 @@ msgstr "" "\n" "セクション [%Zu] '%s' ã«ã¯ãƒ€ãƒ³ãƒ—ã™ã¹ãデータãŒã‚ã‚Šã¾ã›ã‚“。\n" -#: src/readelf.c:12456 +#: src/readelf.c:12564 #, fuzzy, c-format msgid "" "\n" @@ -5764,7 +5769,7 @@ msgstr "" "オフセット %4$#0<PRIx64> æ–‡å—列セクション [%1$Zu] '%2$s' ã«ã¯ %3$<PRIu64> ãƒ" "イトã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:12461 +#: src/readelf.c:12569 #, fuzzy, c-format msgid "" "\n" @@ -5775,7 +5780,7 @@ msgstr "" "オフセット %4$#0<PRIx64> æ–‡å—列セクション [%1$Zu] '%2$s' ã«ã¯ %3$<PRIu64> ãƒ" "イトã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:12510 +#: src/readelf.c:12618 #, c-format msgid "" "\n" @@ -5784,7 +5789,7 @@ msgstr "" "\n" "セクション [%lu] ãŒã‚ã‚Šã¾ã›ã‚“" -#: src/readelf.c:12539 +#: src/readelf.c:12647 #, c-format msgid "" "\n" @@ -5793,12 +5798,12 @@ msgstr "" "\n" "セクション '%s' ãŒã‚ã‚Šã¾ã›ã‚“" -#: src/readelf.c:12596 +#: src/readelf.c:12704 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "アーカイブã®ã‚·ãƒ³ãƒœãƒ«ç´¢å¼• '%s' を得られã¾ã›ã‚“: %s" -#: src/readelf.c:12599 +#: src/readelf.c:12707 #, c-format msgid "" "\n" @@ -5807,7 +5812,7 @@ msgstr "" "\n" "アーカイブ '%s' ã«ã¯ã‚·ãƒ³ãƒœãƒ«ç´¢å¼•ãŒã‚ã‚Šã¾ã›ã‚“\n" -#: src/readelf.c:12603 +#: src/readelf.c:12711 #, fuzzy, c-format msgid "" "\n" @@ -5816,12 +5821,12 @@ msgstr "" "\n" "アーカイブ '%s' ã®ç´¢å¼•ã«ã¯ %Zu é …ç›®ã‚ã‚Šã¾ã™:\n" -#: src/readelf.c:12621 +#: src/readelf.c:12729 #, fuzzy, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "'%2$s' 㮠オフセット %1$Zu ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’抽出ã§ãã¾ã›ã‚“: %3$s" -#: src/readelf.c:12626 +#: src/readelf.c:12734 #, c-format msgid "Archive member '%s' contains:\n" msgstr "アーカイブメンãƒãƒ¼ '%s' ã«ã¯ä»¥ä¸‹ãŒã‚ã‚Šã¾ã™:\n" @@ -5886,12 +5891,17 @@ msgstr "ä¸å½“ãªåŸºæ•°: %s" msgid "%s: file format not recognized" msgstr "%s: ファイル形å¼ã‚’èªè˜ã§ãã¾ã›ã‚“" -#: src/size.c:418 src/size.c:551 +#: src/size.c:418 src/size.c:557 #, c-format msgid " (ex %s)" msgstr " (ex %s)" -#: src/size.c:576 +#: src/size.c:482 +#, fuzzy, c-format +msgid "cannot get section header" +msgstr "セクションヘッダーを得られã¾ã›ã‚“: %s" + +#: src/size.c:582 msgid "(TOTALS)\n" msgstr "(åˆè¨ˆ)\n" @@ -6252,7 +6262,7 @@ msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s" msgid "%s: error while getting shdrstrndx: %s" msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s" -#: src/strip.c:1654 src/strip.c:2534 +#: src/strip.c:1654 src/strip.c:2535 #, fuzzy, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s" @@ -6282,47 +6292,47 @@ msgstr "セクションヘッダー文å—列テーブルを生æˆä¸: %s" msgid "no memory to create section header string table" msgstr "セクションヘッダー文å—列テーブルを生æˆä¸: %s" -#: src/strip.c:2027 +#: src/strip.c:2028 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2450 src/strip.c:2558 +#: src/strip.c:2451 src/strip.c:2559 #, c-format msgid "while writing '%s': %s" msgstr "'%s' を書込ã¿ä¸: %s" -#: src/strip.c:2461 +#: src/strip.c:2462 #, c-format msgid "while creating '%s'" msgstr "'%s' を生æˆä¸" -#: src/strip.c:2484 +#: src/strip.c:2485 #, c-format msgid "while computing checksum for debug information" msgstr "デãƒãƒƒã‚°æƒ…å ±ã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ を計算ä¸" -#: src/strip.c:2525 +#: src/strip.c:2526 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s" -#: src/strip.c:2543 +#: src/strip.c:2544 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: ファイルをèªè¾¼ã¿ä¸ã«ã‚¨ãƒ©ãƒ¼: %s" -#: src/strip.c:2583 src/strip.c:2603 +#: src/strip.c:2584 src/strip.c:2604 #, fuzzy, c-format msgid "while writing '%s'" msgstr "'%s' を書込ã¿ä¸: %s" -#: src/strip.c:2640 src/strip.c:2647 +#: src/strip.c:2641 src/strip.c:2648 #, c-format msgid "error while finishing '%s': %s" msgstr "'%s' ã®çµ‚了ä¸ã«ã‚¨ãƒ©ãƒ¼: %s" -#: src/strip.c:2664 src/strip.c:2740 +#: src/strip.c:2665 src/strip.c:2741 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "'%s' ã®ã‚¢ã‚¯ã‚»ã‚¹ã¨å¤‰æ›´æ—¥ä»˜ã‚’è¨å®šã§ãã¾ã›ã‚“" @@ -6408,7 +6418,7 @@ msgstr "" msgid "cannot get shdrstrndx:%s" msgstr "セクションを得られã¾ã›ã‚“: %s" -#: src/unstrip.c:248 src/unstrip.c:2034 +#: src/unstrip.c:248 src/unstrip.c:2038 #, c-format msgid "cannot get ELF header: %s" msgstr "" @@ -6428,12 +6438,12 @@ msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s" msgid "cannot copy ELF header: %s" msgstr "" -#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 +#: src/unstrip.c:269 src/unstrip.c:2056 src/unstrip.c:2099 #, fuzzy, c-format msgid "cannot get number of program headers: %s" msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s" -#: src/unstrip.c:274 src/unstrip.c:2056 +#: src/unstrip.c:274 src/unstrip.c:2060 #, c-format msgid "cannot create program headers: %s" msgstr "" @@ -6448,12 +6458,12 @@ msgstr "" msgid "cannot copy section header: %s" msgstr "" -#: src/unstrip.c:293 src/unstrip.c:1665 +#: src/unstrip.c:293 src/unstrip.c:1669 #, c-format msgid "cannot get section data: %s" msgstr "" -#: src/unstrip.c:295 src/unstrip.c:1667 +#: src/unstrip.c:295 src/unstrip.c:1671 #, c-format msgid "cannot copy section data: %s" msgstr "" @@ -6463,13 +6473,14 @@ msgstr "" msgid "cannot create directory '%s'" msgstr "" -#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 +#: src/unstrip.c:391 src/unstrip.c:647 src/unstrip.c:681 src/unstrip.c:847 +#: src/unstrip.c:1706 #, c-format msgid "cannot get symbol table entry: %s" msgstr "" -#: src/unstrip.c:407 src/unstrip.c:649 src/unstrip.c:670 src/unstrip.c:682 -#: src/unstrip.c:1723 src/unstrip.c:1918 src/unstrip.c:1942 +#: src/unstrip.c:407 src/unstrip.c:650 src/unstrip.c:671 src/unstrip.c:684 +#: src/unstrip.c:1727 src/unstrip.c:1922 src/unstrip.c:1946 #, c-format msgid "cannot update symbol table: %s" msgstr "" @@ -6494,213 +6505,213 @@ msgstr "" msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "" -#: src/unstrip.c:851 +#: src/unstrip.c:853 #, fuzzy, c-format msgid "invalid string offset in symbol [%zu]" msgstr "シンボル %2$sã®ä¸æ£ãªã‚ªãƒ•ã‚»ãƒƒãƒˆ %1$zu " -#: src/unstrip.c:1009 src/unstrip.c:1398 +#: src/unstrip.c:1011 src/unstrip.c:1402 #, fuzzy, c-format msgid "cannot read section [%zu] name: %s" msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s" -#: src/unstrip.c:1024 +#: src/unstrip.c:1026 #, fuzzy, c-format msgid "bad sh_link for group section: %s" msgstr "ä¸å½“㪠.debug_line セクション" -#: src/unstrip.c:1030 +#: src/unstrip.c:1032 #, fuzzy, c-format msgid "couldn't get shdr for group section: %s" msgstr "セクションã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“ %d: %s" -#: src/unstrip.c:1035 +#: src/unstrip.c:1037 #, fuzzy, c-format msgid "bad data for group symbol section: %s" msgstr "セクションã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“ %d: %s" -#: src/unstrip.c:1041 +#: src/unstrip.c:1043 #, fuzzy, c-format msgid "couldn't get symbol for group section: %s" msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s" -#: src/unstrip.c:1046 +#: src/unstrip.c:1048 #, fuzzy, c-format msgid "bad symbol name for group section: %s" msgstr "セクションヘッダー文å—列セクションを生æˆã§ãã¾ã›ã‚“: %s" -#: src/unstrip.c:1088 src/unstrip.c:1107 src/unstrip.c:1145 +#: src/unstrip.c:1090 src/unstrip.c:1109 src/unstrip.c:1147 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "" -#: src/unstrip.c:1125 +#: src/unstrip.c:1127 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "" -#: src/unstrip.c:1136 +#: src/unstrip.c:1138 #, c-format msgid "invalid contents in '%s' section" msgstr "" -#: src/unstrip.c:1192 src/unstrip.c:1524 +#: src/unstrip.c:1194 src/unstrip.c:1528 #, fuzzy, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿" -#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 +#: src/unstrip.c:1319 src/unstrip.c:1335 src/unstrip.c:1607 src/unstrip.c:1881 #, c-format msgid "cannot add section name to string table: %s" msgstr "" -#: src/unstrip.c:1341 +#: src/unstrip.c:1344 #, c-format msgid "cannot update section header string table data: %s" msgstr "" -#: src/unstrip.c:1369 src/unstrip.c:1373 +#: src/unstrip.c:1373 src/unstrip.c:1377 #, c-format msgid "cannot get section header string table section index: %s" msgstr "" -#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 +#: src/unstrip.c:1381 src/unstrip.c:1385 src/unstrip.c:1622 #, c-format msgid "cannot get section count: %s" msgstr "" -#: src/unstrip.c:1384 +#: src/unstrip.c:1388 #, c-format msgid "more sections in stripped file than debug file -- arguments reversed?" msgstr "" -#: src/unstrip.c:1446 src/unstrip.c:1539 +#: src/unstrip.c:1450 src/unstrip.c:1543 #, c-format msgid "cannot read section header string table: %s" msgstr "" -#: src/unstrip.c:1597 +#: src/unstrip.c:1601 #, c-format msgid "cannot add new section: %s" msgstr "" -#: src/unstrip.c:1710 +#: src/unstrip.c:1714 #, fuzzy, c-format msgid "symbol [%zu] has invalid section index" msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ç´¢å¼•" -#: src/unstrip.c:1742 +#: src/unstrip.c:1746 #, fuzzy, c-format msgid "group has invalid section index [%zd]" msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ç´¢å¼•" -#: src/unstrip.c:2013 +#: src/unstrip.c:2017 #, fuzzy, c-format msgid "cannot read section data: %s" msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s" -#: src/unstrip.c:2042 +#: src/unstrip.c:2046 #, c-format msgid "cannot update ELF header: %s" msgstr "ELF ヘッダーを更新ã§ãã¾ã›ã‚“: %s" -#: src/unstrip.c:2066 +#: src/unstrip.c:2070 #, c-format msgid "cannot update program header: %s" msgstr "" -#: src/unstrip.c:2071 src/unstrip.c:2153 +#: src/unstrip.c:2075 src/unstrip.c:2157 #, c-format msgid "cannot write output file: %s" msgstr "" -#: src/unstrip.c:2122 +#: src/unstrip.c:2126 #, c-format msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" msgstr "" -#: src/unstrip.c:2125 +#: src/unstrip.c:2129 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" msgstr "" -#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 +#: src/unstrip.c:2148 src/unstrip.c:2199 src/unstrip.c:2211 src/unstrip.c:2297 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "" -#: src/unstrip.c:2186 +#: src/unstrip.c:2190 msgid "WARNING: " msgstr "" -#: src/unstrip.c:2188 +#: src/unstrip.c:2192 msgid ", use --force" msgstr "" -#: src/unstrip.c:2211 +#: src/unstrip.c:2215 msgid "ELF header identification (e_ident) different" msgstr "" -#: src/unstrip.c:2214 +#: src/unstrip.c:2218 msgid "ELF header type (e_type) different" msgstr "" -#: src/unstrip.c:2217 +#: src/unstrip.c:2221 msgid "ELF header machine type (e_machine) different" msgstr "" -#: src/unstrip.c:2220 +#: src/unstrip.c:2224 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "" -#: src/unstrip.c:2250 +#: src/unstrip.c:2254 #, c-format msgid "cannot find stripped file for module '%s': %s" msgstr "" -#: src/unstrip.c:2254 +#: src/unstrip.c:2258 #, c-format msgid "cannot open stripped file '%s' for module '%s': %s" msgstr "" -#: src/unstrip.c:2269 +#: src/unstrip.c:2273 #, c-format msgid "cannot find debug file for module '%s': %s" msgstr "" -#: src/unstrip.c:2273 +#: src/unstrip.c:2277 #, c-format msgid "cannot open debug file '%s' for module '%s': %s" msgstr "" -#: src/unstrip.c:2286 +#: src/unstrip.c:2290 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "" -#: src/unstrip.c:2317 +#: src/unstrip.c:2321 #, c-format msgid "cannot cache section addresses for module '%s': %s" msgstr "" -#: src/unstrip.c:2450 +#: src/unstrip.c:2454 #, c-format msgid "no matching modules found" msgstr "" -#: src/unstrip.c:2459 +#: src/unstrip.c:2463 #, c-format msgid "matched more than one module" msgstr "" -#: src/unstrip.c:2503 +#: src/unstrip.c:2507 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" msgstr "" -#: src/unstrip.c:2504 +#: src/unstrip.c:2508 msgid "" "Combine stripped files with separate symbols and debug information.\n" "\n" @@ -6728,7 +6739,7 @@ msgid "" "was found, or . if FILE contains the debug information." msgstr "" -#: tests/backtrace.c:437 +#: tests/backtrace.c:436 msgid "Run executable" msgstr "" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2019-02-14 14:31+0100\n" +"POT-Creation-Date: 2019-08-13 23:38+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" @@ -59,8 +59,8 @@ msgstr "" "BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyÅ›lnej gwarancji PRZYDATNOÅšCI\n" "HANDLOWEJ albo PRZYDATNOÅšCI DO OKREÅšLONYCH ZASTOSOWAŃ.\n" -#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 -#: src/readelf.c:11274 src/unstrip.c:2346 src/unstrip.c:2552 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3433 +#: src/readelf.c:11382 src/unstrip.c:2350 src/unstrip.c:2556 #, c-format msgid "memory exhausted" msgstr "pamięć wyczerpana" @@ -301,7 +301,7 @@ msgstr " nieznana instrukcja" msgid ".debug_addr section missing" msgstr "brak sekcji .debug_ranges" -#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2497 msgid "Input selection options:" msgstr "Opcje wyboru wejÅ›cia:" @@ -595,7 +595,7 @@ msgstr " System operacyjny: %s, ABI: " msgid "Stand alone" msgstr "Samodzielny" -#: libebl/eblsymbolbindingname.c:67 libebl/eblsymboltypename.c:73 +#: libebl/eblsymbolbindingname.c:68 libebl/eblsymboltypename.c:74 #, c-format msgid "<unknown>: %d" msgstr "<nieznany>: %d" @@ -620,7 +620,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:6129 +#: libelf/elf_error.c:87 src/readelf.c:6150 #, c-format msgid "invalid encoding" msgstr "nieprawidÅ‚owe kodowanie" @@ -706,8 +706,8 @@ msgstr "dane/scn nie zgadzajÄ… siÄ™" msgid "invalid section header" msgstr "nieprawidÅ‚owy nagłówek sekcji" -#: libelf/elf_error.c:191 src/readelf.c:9790 src/readelf.c:10390 -#: src/readelf.c:10491 src/readelf.c:10673 +#: libelf/elf_error.c:191 src/readelf.c:9898 src/readelf.c:10498 +#: src/readelf.c:10599 src/readelf.c:10781 #, c-format msgid "invalid data" msgstr "nieprawidÅ‚owe dane" @@ -1366,7 +1366,7 @@ msgstr "NieprawidÅ‚owa wartość „%s†dla parametru --gaps." #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 -#: src/unstrip.c:2142 src/unstrip.c:2171 +#: src/unstrip.c:2146 src/unstrip.c:2175 #, c-format msgid "cannot open '%s'" msgstr "nie można otworzyć „%sâ€" @@ -1498,7 +1498,7 @@ msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "" "Szczegółowe sprawdzanie zgodnoÅ›ci plików ELF ze specyfikacjÄ… gABI/psABI." -#: src/elflint.c:154 src/readelf.c:346 +#: src/elflint.c:154 src/readelf.c:357 #, c-format msgid "cannot open input file" msgstr "nie można otworzyć pliku wejÅ›ciowego" @@ -1517,7 +1517,7 @@ msgstr "bÅ‚Ä…d podczas zamykania deskryptora ELF: %s\n" msgid "No errors" msgstr "Brak bÅ‚Ä™dów" -#: src/elflint.c:219 src/readelf.c:545 +#: src/elflint.c:219 src/readelf.c:559 msgid "Missing file name.\n" msgstr "Brak nazwy pliku.\n" @@ -3648,7 +3648,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: BÅÄ„D WEWNĘTRZNY %d (%s): %s" #: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308 -#: src/strip.c:2747 +#: src/strip.c:2748 #, c-format msgid "while closing '%s'" msgstr "podczas zamykania „%sâ€" @@ -3692,19 +3692,19 @@ msgstr "%s%s%s: nie rozpoznano formatu pliku" msgid "cannot create search tree" msgstr "nie można utworzyć drzewa wyszukiwania" -#: src/nm.c:746 src/nm.c:1207 src/objdump.c:777 src/readelf.c:605 -#: src/readelf.c:1412 src/readelf.c:1563 src/readelf.c:1764 src/readelf.c:1970 -#: src/readelf.c:2160 src/readelf.c:2338 src/readelf.c:2414 src/readelf.c:2672 -#: src/readelf.c:2748 src/readelf.c:2835 src/readelf.c:3433 src/readelf.c:3483 -#: src/readelf.c:3546 src/readelf.c:11106 src/readelf.c:12291 -#: src/readelf.c:12495 src/readelf.c:12563 src/size.c:398 src/size.c:467 +#: src/nm.c:746 src/nm.c:1205 src/objdump.c:777 src/readelf.c:619 +#: src/readelf.c:1431 src/readelf.c:1582 src/readelf.c:1783 src/readelf.c:1989 +#: src/readelf.c:2179 src/readelf.c:2357 src/readelf.c:2433 src/readelf.c:2691 +#: src/readelf.c:2767 src/readelf.c:2854 src/readelf.c:3452 src/readelf.c:3502 +#: src/readelf.c:3565 src/readelf.c:11214 src/readelf.c:12399 +#: src/readelf.c:12603 src/readelf.c:12671 src/size.c:398 src/size.c:470 #: src/strip.c:1038 #, c-format msgid "cannot get section header string table index" msgstr "nie można uzyskać indeksu tabeli ciÄ…gów nagłówków sekcji" #. We always print this prolog. -#: src/nm.c:773 +#: src/nm.c:771 #, c-format msgid "" "\n" @@ -3718,7 +3718,7 @@ msgstr "" "\n" #. The header line. -#: src/nm.c:776 +#: src/nm.c:774 #, c-format msgid "" "%*s%-*s %-*s Class Type %-*s %*s Section\n" @@ -3727,28 +3727,28 @@ msgstr "" "%*s%-*s %-*s Klasa Typ %-*s %*s Sekcja\n" "\n" -#: src/nm.c:1218 +#: src/nm.c:1216 #, c-format msgid "%s: entry size in section %zd `%s' is not what we expect" msgstr "%s: rozmiar wpisu w sekcji %zd „%s†nie jest tym, czego oczekiwano" -#: src/nm.c:1223 +#: src/nm.c:1221 #, c-format msgid "%s: size of section %zd `%s' is not multiple of entry size" msgstr "%s: rozmiar sekcji %zd „%s†nie jest wielokrotnoÅ›ciÄ… rozmiaru wpisu" -#: src/nm.c:1302 +#: src/nm.c:1300 #, c-format msgid "%s: entries (%zd) in section %zd `%s' is too large" msgstr "%s: wpisy (%zd) w sekcji %zd „%s†sÄ… za duże" #. XXX Add machine specific object file types. -#: src/nm.c:1528 +#: src/nm.c:1526 #, c-format msgid "%s%s%s%s: Invalid operation" msgstr "%s%s%s%s: nieprawidÅ‚owe dziaÅ‚anie" -#: src/nm.c:1585 +#: src/nm.c:1583 #, c-format msgid "%s%s%s: no symbols" msgstr "%s%s%s: brak symboli" @@ -3782,7 +3782,7 @@ msgstr "WyÅ›wietla tylko informacje o sekcji NAZWA." msgid "Show information from FILEs (a.out by default)." msgstr "WyÅ›wietla informacje z PLIKÓW (domyÅ›lnie a.out)." -#: src/objdump.c:218 src/readelf.c:550 +#: src/objdump.c:218 src/readelf.c:564 msgid "No operation specified.\n" msgstr "Nie podano dziaÅ‚ania.\n" @@ -3791,11 +3791,11 @@ msgstr "Nie podano dziaÅ‚ania.\n" msgid "while close `%s'" msgstr "podczas zamykania „%sâ€" -#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 +#: src/objdump.c:363 src/readelf.c:2084 src/readelf.c:2276 msgid "INVALID SYMBOL" msgstr "NIEPRAWIDÅOWY SYMBOL" -#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 +#: src/objdump.c:378 src/readelf.c:2118 src/readelf.c:2312 msgid "INVALID SECTION" msgstr "NIEPRAWIDÅOWA SEKCJA" @@ -3984,151 +3984,151 @@ msgid "Print information from ELF file in human-readable form." msgstr "WyÅ›wietla informacje z pliku ELF w postaci czytelnej dla czÅ‚owieka." #. Look up once. -#: src/readelf.c:328 +#: src/readelf.c:339 msgid "yes" msgstr "tak" -#: src/readelf.c:329 +#: src/readelf.c:340 msgid "no" msgstr "nie" -#: src/readelf.c:518 +#: src/readelf.c:532 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "Nieznana sekcja debugowania DWARF „%sâ€.\n" -#: src/readelf.c:589 src/readelf.c:700 +#: src/readelf.c:603 src/readelf.c:714 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "nie można utworzyć deskryptora ELF: %s" -#: src/readelf.c:596 src/readelf.c:923 src/strip.c:1133 +#: src/readelf.c:610 src/readelf.c:937 src/strip.c:1133 #, c-format msgid "cannot determine number of sections: %s" msgstr "nie można okreÅ›lić liczby sekcji: %s" -#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 +#: src/readelf.c:628 src/readelf.c:1247 src/readelf.c:1455 #, c-format msgid "cannot get section: %s" msgstr "nie można uzyskać sekcji: %s" -#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12515 +#: src/readelf.c:637 src/readelf.c:1254 src/readelf.c:1463 src/readelf.c:12623 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:481 src/unstrip.c:600 -#: src/unstrip.c:621 src/unstrip.c:660 src/unstrip.c:871 src/unstrip.c:1202 -#: src/unstrip.c:1394 src/unstrip.c:1458 src/unstrip.c:1632 src/unstrip.c:1766 -#: src/unstrip.c:1909 src/unstrip.c:2004 +#: src/unstrip.c:621 src/unstrip.c:661 src/unstrip.c:873 src/unstrip.c:1204 +#: src/unstrip.c:1331 src/unstrip.c:1355 src/unstrip.c:1398 src/unstrip.c:1462 +#: src/unstrip.c:1636 src/unstrip.c:1770 src/unstrip.c:1913 src/unstrip.c:2008 #, c-format msgid "cannot get section header: %s" msgstr "nie można uzyskać nagłówka sekcji: %s" -#: src/readelf.c:631 +#: src/readelf.c:645 #, c-format msgid "cannot get section name" msgstr "nie można uzyskać nazwy sekcji" -#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10378 src/readelf.c:10480 -#: src/readelf.c:10658 +#: src/readelf.c:654 src/readelf.c:6560 src/readelf.c:10486 src/readelf.c:10588 +#: src/readelf.c:10766 #, c-format msgid "cannot get %s content: %s" msgstr "nie można uzyskać zwartoÅ›ci %s: %s" -#: src/readelf.c:656 +#: src/readelf.c:670 #, c-format msgid "cannot create temp file '%s'" msgstr "nie można utworzyć pliku tymczasowego „%sâ€" -#: src/readelf.c:665 +#: src/readelf.c:679 #, c-format msgid "cannot write section data" msgstr "nie można zapisać danych sekcji" -#: src/readelf.c:671 src/readelf.c:688 src/readelf.c:717 +#: src/readelf.c:685 src/readelf.c:702 src/readelf.c:731 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "bÅ‚Ä…d podczas zamykania deskryptora ELF: %s" -#: src/readelf.c:678 +#: src/readelf.c:692 #, c-format msgid "error while rewinding file descriptor" msgstr "bÅ‚Ä…d podczas przewijania deskryptora pliku" -#: src/readelf.c:712 +#: src/readelf.c:726 #, c-format msgid "'%s' is not an archive, cannot print archive index" msgstr "„%s†nie jest archiwum, nie można wyÅ›wietlić indeksu archiwum" -#: src/readelf.c:816 +#: src/readelf.c:830 #, c-format msgid "cannot stat input file" msgstr "nie można wykonać stat na pliku wejÅ›ciowym" -#: src/readelf.c:818 +#: src/readelf.c:832 #, c-format msgid "input file is empty" msgstr "plik wejÅ›ciowy jest pusty" -#: src/readelf.c:820 +#: src/readelf.c:834 #, c-format msgid "failed reading '%s': %s" msgstr "odczytanie „%s†siÄ™ nie powiodÅ‚o: %s" -#: src/readelf.c:849 +#: src/readelf.c:863 #, c-format msgid "No such section '%s' in '%s'" msgstr "Brak sekcji „%s†w „%sâ€" -#: src/readelf.c:908 +#: src/readelf.c:922 #, c-format msgid "cannot read ELF header: %s" msgstr "nie można odczytać nagłówka ELF: %s" -#: src/readelf.c:916 +#: src/readelf.c:930 #, c-format msgid "cannot create EBL handle" msgstr "nie można utworzyć uchwytu EBL" -#: src/readelf.c:929 +#: src/readelf.c:943 #, c-format msgid "cannot determine number of program headers: %s" msgstr "nie można okreÅ›lić liczby nagłówków programu: %s" -#: src/readelf.c:961 +#: src/readelf.c:975 #, fuzzy, c-format msgid "cannot read ELF: %s" msgstr "nie można odczytać %s: %s" -#: src/readelf.c:1022 +#: src/readelf.c:1036 msgid "NONE (None)" msgstr "NONE (żaden)" -#: src/readelf.c:1023 +#: src/readelf.c:1037 msgid "REL (Relocatable file)" msgstr "REL (plik relokowalny)" -#: src/readelf.c:1024 +#: src/readelf.c:1038 msgid "EXEC (Executable file)" msgstr "EXEC (plik wykonywalny)" -#: src/readelf.c:1025 +#: src/readelf.c:1039 msgid "DYN (Shared object file)" msgstr "DYN (plik obiektu współdzielonego)" -#: src/readelf.c:1026 +#: src/readelf.c:1040 msgid "CORE (Core file)" msgstr "CORE (plik core)" -#: src/readelf.c:1031 +#: src/readelf.c:1045 #, c-format msgid "OS Specific: (%x)\n" msgstr "Zależny od systemu: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1033 +#: src/readelf.c:1047 #, c-format msgid "Processor Specific: (%x)\n" msgstr "Zależny od procesora: (%x)\n" -#: src/readelf.c:1043 +#: src/readelf.c:1057 msgid "" "ELF Header:\n" " Magic: " @@ -4136,7 +4136,7 @@ msgstr "" "Nagłówek ELF:\n" " Magic: " -#: src/readelf.c:1047 +#: src/readelf.c:1061 #, c-format msgid "" "\n" @@ -4145,118 +4145,123 @@ msgstr "" "\n" " Klasa: %s\n" -#: src/readelf.c:1052 +#: src/readelf.c:1066 #, c-format msgid " Data: %s\n" msgstr " Dane: %s\n" -#: src/readelf.c:1058 +#: src/readelf.c:1072 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " Wersja Ident: %hhd %s\n" -#: src/readelf.c:1060 src/readelf.c:1077 +#: src/readelf.c:1074 src/readelf.c:1096 msgid "(current)" msgstr "(bieżąca)" -#: src/readelf.c:1064 +#: src/readelf.c:1078 #, c-format msgid " OS/ABI: %s\n" msgstr " System operacyjny/ABI: %s\n" -#: src/readelf.c:1067 +#: src/readelf.c:1081 #, c-format msgid " ABI Version: %hhd\n" msgstr " Wersja ABI: %hhd\n" -#: src/readelf.c:1070 +#: src/readelf.c:1084 msgid " Type: " msgstr " Typ: " -#: src/readelf.c:1073 +#: src/readelf.c:1089 #, c-format msgid " Machine: %s\n" msgstr " Komputer: %s\n" -#: src/readelf.c:1075 +#: src/readelf.c:1091 +#, fuzzy, c-format +msgid " Machine: <unknown>: 0x%x\n" +msgstr " Komputer: %s\n" + +#: src/readelf.c:1094 #, c-format msgid " Version: %d %s\n" msgstr " Wersja: %d %s\n" -#: src/readelf.c:1079 +#: src/readelf.c:1098 #, c-format msgid " Entry point address: %#<PRIx64>\n" msgstr " Adres punktu wejÅ›ciowego: %#<PRIx64>\n" -#: src/readelf.c:1082 +#: src/readelf.c:1101 #, c-format msgid " Start of program headers: %<PRId64> %s\n" msgstr " PoczÄ…tek nagłówków programu: %<PRId64> %s\n" -#: src/readelf.c:1083 src/readelf.c:1086 +#: src/readelf.c:1102 src/readelf.c:1105 msgid "(bytes into file)" msgstr "(bajtów w pliku)" -#: src/readelf.c:1085 +#: src/readelf.c:1104 #, c-format msgid " Start of section headers: %<PRId64> %s\n" msgstr " PoczÄ…tek nagłówków sekcji: %<PRId64> %s\n" -#: src/readelf.c:1088 +#: src/readelf.c:1107 #, c-format msgid " Flags: %s\n" msgstr " Flagi: %s\n" -#: src/readelf.c:1091 +#: src/readelf.c:1110 #, c-format msgid " Size of this header: %<PRId16> %s\n" msgstr " Rozmiar tego nagłówka: %<PRId16> %s\n" -#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 +#: src/readelf.c:1111 src/readelf.c:1114 src/readelf.c:1131 msgid "(bytes)" msgstr "(bajtów)" -#: src/readelf.c:1094 +#: src/readelf.c:1113 #, c-format msgid " Size of program header entries: %<PRId16> %s\n" msgstr " Rozmiar wpisów nagłówka programu: %<PRId16> %s\n" -#: src/readelf.c:1097 +#: src/readelf.c:1116 #, c-format msgid " Number of program headers entries: %<PRId16>" msgstr " Liczba wpisów nagłówków programu: %<PRId16>" -#: src/readelf.c:1104 +#: src/readelf.c:1123 #, c-format msgid " (%<PRIu32> in [0].sh_info)" msgstr " (%<PRIu32> w [0].sh_info)" -#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 +#: src/readelf.c:1126 src/readelf.c:1143 src/readelf.c:1157 msgid " ([0] not available)" msgstr " ([0] niedostÄ™pny)" -#: src/readelf.c:1111 +#: src/readelf.c:1130 #, c-format msgid " Size of section header entries: %<PRId16> %s\n" msgstr " Rozmiar wpisów nagłówka sekcji: %<PRId16> %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1133 #, c-format msgid " Number of section headers entries: %<PRId16>" msgstr " Liczba wpisów nagłówków sekcji: %<PRId16>" -#: src/readelf.c:1121 +#: src/readelf.c:1140 #, c-format msgid " (%<PRIu32> in [0].sh_size)" msgstr " (%<PRIu32> w [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1134 +#: src/readelf.c:1153 #, c-format msgid " (%<PRIu32> in [0].sh_link)" msgstr " (%<PRIu32> w [0].sh_link)" -#: src/readelf.c:1142 +#: src/readelf.c:1161 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4265,7 +4270,7 @@ msgstr "" " Indeks tabeli ciÄ…gów nagłówków sekcji: XINDEX%s\n" "\n" -#: src/readelf.c:1146 +#: src/readelf.c:1165 #, c-format msgid "" " Section header string table index: %<PRId16>\n" @@ -4274,12 +4279,12 @@ msgstr "" " Indeks tabeli ciÄ…gów nagłówków sekcji: %<PRId16>\n" "\n" -#: src/readelf.c:1193 src/readelf.c:1401 +#: src/readelf.c:1212 src/readelf.c:1420 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "nie można okreÅ›lić liczby sekcji: %s" -#: src/readelf.c:1196 +#: src/readelf.c:1215 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#<PRIx64>:\n" @@ -4288,16 +4293,16 @@ msgstr "" "Jest %d nagłówków sekcji, rozpoczynajÄ…cych siÄ™ od offsetu %#<PRIx64>:\n" "\n" -#: src/readelf.c:1205 +#: src/readelf.c:1224 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "nie można uzyskać indeksu tabeli ciÄ…gów nagłówków sekcji" -#: src/readelf.c:1208 +#: src/readelf.c:1227 msgid "Section Headers:" msgstr "Nagłówki sekcji:" -#: src/readelf.c:1211 +#: src/readelf.c:1230 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4305,7 +4310,7 @@ msgstr "" "[Nr] Nazwa Typ Adres Offset Rozm. ES Flagi Lk " "Inf Al" -#: src/readelf.c:1213 +#: src/readelf.c:1232 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4313,36 +4318,36 @@ msgstr "" "[Nr] Nazwa Typ Adres Offset Rozmiar ES " "Flagi Lk Inf Al" -#: src/readelf.c:1218 +#: src/readelf.c:1237 msgid " [Compression Size Al]" msgstr " [Kompresja Rozmiar Al]" -#: src/readelf.c:1220 +#: src/readelf.c:1239 msgid " [Compression Size Al]" msgstr " [Kompresja Rozmiar Al]" -#: src/readelf.c:1296 +#: src/readelf.c:1315 #, c-format msgid "bad compression header for section %zd: %s" msgstr "bÅ‚Ä™dny nagłówek kompresji dla sekcji %zd: %s" -#: src/readelf.c:1307 +#: src/readelf.c:1326 #, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "bÅ‚Ä™dny rozmiar kompresji gnu dla sekcji %zd: %s" -#: src/readelf.c:1325 +#: src/readelf.c:1344 msgid "Program Headers:" msgstr "Nagłówki programu:" -#: src/readelf.c:1327 +#: src/readelf.c:1346 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " Typ Offset AdresWirt AdresFiz RozmPlik RozmPam Flg " "Wyrównanie" -#: src/readelf.c:1330 +#: src/readelf.c:1349 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4350,12 +4355,12 @@ msgstr "" " Typ Offset AdresWirtualny AdresFizyczny RozmPlik " "RozmPam Flg Wyrównanie" -#: src/readelf.c:1387 +#: src/readelf.c:1406 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[WywoÅ‚anie interpretera programu: %s]\n" -#: src/readelf.c:1414 +#: src/readelf.c:1433 msgid "" "\n" " Section to Segment mapping:\n" @@ -4365,12 +4370,12 @@ msgstr "" " Mapowanie sekcji do segmentów:\n" " Segment sekcji…" -#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 +#: src/readelf.c:1444 src/unstrip.c:2067 src/unstrip.c:2109 src/unstrip.c:2116 #, c-format msgid "cannot get program header: %s" msgstr "nie można uzyskać nagłówka programu: %s" -#: src/readelf.c:1571 +#: src/readelf.c:1590 #, c-format msgid "" "\n" @@ -4388,7 +4393,7 @@ msgstr[2] "" "\n" "Grupa sekcji COMDAT [%2zu] „%s†z podpisem „%s†zawiera %zu wpisów:\n" -#: src/readelf.c:1576 +#: src/readelf.c:1595 #, c-format msgid "" "\n" @@ -4406,31 +4411,31 @@ msgstr[2] "" "\n" "Grupa sekcji [%2zu] „%s†z podpisem „%s†zawiera %zu wpisów:\n" -#: src/readelf.c:1584 +#: src/readelf.c:1603 msgid "<INVALID SYMBOL>" msgstr "<NIEPRAWIDÅOWY SYMBOL>" -#: src/readelf.c:1598 +#: src/readelf.c:1617 msgid "<INVALID SECTION>" msgstr "<NIEPRAWIDÅOWY SEKCJA>" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12386 -#: src/readelf.c:12393 src/readelf.c:12437 src/readelf.c:12444 +#: src/readelf.c:1640 src/readelf.c:2367 src/readelf.c:3468 src/readelf.c:12494 +#: src/readelf.c:12501 src/readelf.c:12545 src/readelf.c:12552 msgid "Couldn't uncompress section" msgstr "Nie można dekompresować sekcji" -#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 +#: src/readelf.c:1645 src/readelf.c:2372 src/readelf.c:3473 #, c-format msgid "cannot get section [%zd] header: %s" msgstr "nie można uzyskać nagłówka sekcji [%zd]: %s" -#: src/readelf.c:1770 src/readelf.c:2420 src/readelf.c:2678 src/readelf.c:2754 -#: src/readelf.c:3058 src/readelf.c:3132 src/readelf.c:5327 +#: src/readelf.c:1789 src/readelf.c:2439 src/readelf.c:2697 src/readelf.c:2773 +#: src/readelf.c:3077 src/readelf.c:3151 src/readelf.c:5348 #, c-format msgid "invalid sh_link value in section %zu" msgstr "nieprawidÅ‚owa wartość sh_link w sekcji %zu" -#: src/readelf.c:1773 +#: src/readelf.c:1792 #, c-format msgid "" "\n" @@ -4456,36 +4461,36 @@ msgstr[2] "" " Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] " "'%s'\n" -#: src/readelf.c:1783 +#: src/readelf.c:1802 msgid " Type Value\n" msgstr " Typ Wartość\n" -#: src/readelf.c:1807 +#: src/readelf.c:1826 #, c-format msgid "Shared library: [%s]\n" msgstr "Biblioteka współdzielona: [%s]\n" -#: src/readelf.c:1812 +#: src/readelf.c:1831 #, c-format msgid "Library soname: [%s]\n" msgstr "soname biblioteki: [%s]\n" -#: src/readelf.c:1817 +#: src/readelf.c:1836 #, c-format msgid "Library rpath: [%s]\n" msgstr "rpath biblioteki: [%s]\n" -#: src/readelf.c:1822 +#: src/readelf.c:1841 #, c-format msgid "Library runpath: [%s]\n" msgstr "runpath biblioteki: [%s]\n" -#: src/readelf.c:1842 +#: src/readelf.c:1861 #, c-format msgid "%<PRId64> (bytes)\n" msgstr "%<PRId64> (bajtów)\n" -#: src/readelf.c:1955 src/readelf.c:2145 +#: src/readelf.c:1974 src/readelf.c:2164 #, c-format msgid "" "\n" @@ -4494,7 +4499,7 @@ msgstr "" "\n" "NieprawidÅ‚owa tabela symboli pod offsetem %#0<PRIx64>\n" -#: src/readelf.c:1973 src/readelf.c:2163 +#: src/readelf.c:1992 src/readelf.c:2182 #, c-format msgid "" "\n" @@ -4523,7 +4528,7 @@ msgstr[2] "" #. The .rela.dyn section does not refer to a specific section but #. instead of section index zero. Do not try to print a section #. name. -#: src/readelf.c:1988 src/readelf.c:2178 +#: src/readelf.c:2007 src/readelf.c:2197 #, c-format msgid "" "\n" @@ -4541,30 +4546,30 @@ msgstr[2] "" "\n" "Sekcja relokacji [%2u] „%s†pod offsetem %#0<PRIx64> zawiera %d wpisów:\n" -#: src/readelf.c:1998 +#: src/readelf.c:2017 msgid " Offset Type Value Name\n" msgstr " Offset Typ Wartość Nazwa\n" -#: src/readelf.c:2000 +#: src/readelf.c:2019 msgid " Offset Type Value Name\n" msgstr " Offset Typ Wartość Nazwa\n" -#: src/readelf.c:2053 src/readelf.c:2064 src/readelf.c:2077 src/readelf.c:2098 -#: src/readelf.c:2110 src/readelf.c:2244 src/readelf.c:2256 src/readelf.c:2270 -#: src/readelf.c:2292 src/readelf.c:2305 +#: src/readelf.c:2072 src/readelf.c:2083 src/readelf.c:2096 src/readelf.c:2117 +#: src/readelf.c:2129 src/readelf.c:2263 src/readelf.c:2275 src/readelf.c:2289 +#: src/readelf.c:2311 src/readelf.c:2324 msgid "<INVALID RELOC>" msgstr "<NIEPRAWIDÅOWA RELOKACJA>" -#: src/readelf.c:2188 +#: src/readelf.c:2207 msgid " Offset Type Value Addend Name\n" msgstr " Offset Typ Wartość Koniec Nazwa\n" -#: src/readelf.c:2190 +#: src/readelf.c:2209 msgid " Offset Type Value Addend Name\n" msgstr "" " Offset Typ Wartość Koniec Nazwa\n" -#: src/readelf.c:2428 +#: src/readelf.c:2447 #, c-format msgid "" "\n" @@ -4582,7 +4587,7 @@ msgstr[2] "" "\n" "Tabela symboli [%2u] „%s†zawiera %u wpisów:\n" -#: src/readelf.c:2433 +#: src/readelf.c:2452 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" @@ -4590,33 +4595,33 @@ msgstr[0] " %lu symbol lokalny Tabela ciÄ…gów: [%2u] „%sâ€\n" msgstr[1] " %lu symbole lokalne Tabela ciÄ…gów: [%2u] „%sâ€\n" msgstr[2] " %lu symboli lokalnych Tabela ciÄ…gów: [%2u] „%sâ€\n" -#: src/readelf.c:2441 +#: src/readelf.c:2460 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n" -#: src/readelf.c:2443 +#: src/readelf.c:2462 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n" -#: src/readelf.c:2463 +#: src/readelf.c:2482 #, c-format msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" -#: src/readelf.c:2551 +#: src/readelf.c:2570 #, c-format msgid "bad dynamic symbol" msgstr "bÅ‚Ä™dny symbol dynamiczny" -#: src/readelf.c:2633 +#: src/readelf.c:2652 msgid "none" msgstr "brak" -#: src/readelf.c:2650 +#: src/readelf.c:2669 msgid "| <unknown>" msgstr "| <nieznany>" -#: src/readelf.c:2681 +#: src/readelf.c:2700 #, c-format msgid "" "\n" @@ -4642,17 +4647,17 @@ msgstr[2] "" " Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] " "„%sâ€\n" -#: src/readelf.c:2702 +#: src/readelf.c:2721 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Wersja: %hu Plik: %s Licznik: %hu\n" -#: src/readelf.c:2715 +#: src/readelf.c:2734 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Nazwa: %s Flagi: %s Wersja: %hu\n" -#: src/readelf.c:2758 +#: src/readelf.c:2777 #, c-format msgid "" "\n" @@ -4678,19 +4683,19 @@ msgstr[2] "" " Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] " "„%sâ€\n" -#: src/readelf.c:2786 +#: src/readelf.c:2805 #, c-format msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" msgstr "" " %#06x: Wersja: %hd Flagi: %s Indeks: %hd Licznik: %hd Nazwa: %s\n" -#: src/readelf.c:2801 +#: src/readelf.c:2820 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: Rodzic %d: %s\n" #. Print the header. -#: src/readelf.c:3062 +#: src/readelf.c:3081 #, c-format msgid "" "\n" @@ -4713,15 +4718,15 @@ msgstr[2] "" "Sekcja symboli wersji [%2u] „%s†zawiera %d wpisów:\n" " Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] „%sâ€" -#: src/readelf.c:3090 +#: src/readelf.c:3109 msgid " 0 *local* " msgstr " 0 *lokalny* " -#: src/readelf.c:3095 +#: src/readelf.c:3114 msgid " 1 *global* " msgstr " 1 *globalny* " -#: src/readelf.c:3137 +#: src/readelf.c:3156 #, c-format msgid "" "\n" @@ -4752,22 +4757,22 @@ msgstr[2] "" " Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] " "„%sâ€\n" -#: src/readelf.c:3159 +#: src/readelf.c:3178 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " DÅ‚ugość Liczba % caÅ‚oÅ›ci Pokrycie\n" -#: src/readelf.c:3161 +#: src/readelf.c:3180 #, c-format msgid " 0 %6<PRIu32> %5.1f%%\n" msgstr " 0 %6<PRIu32> %5.1f%%\n" -#: src/readelf.c:3168 +#: src/readelf.c:3187 #, c-format msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" -#: src/readelf.c:3181 +#: src/readelf.c:3200 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4776,37 +4781,37 @@ msgstr "" " Åšrednia liczba testów: udane wyszukania: %f\n" "\t\t\t nieudane wyszukania: %f\n" -#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 +#: src/readelf.c:3218 src/readelf.c:3282 src/readelf.c:3348 #, c-format msgid "cannot get data for section %d: %s" msgstr "nie można uzyskać danych dla sekcji %d: %s" -#: src/readelf.c:3207 +#: src/readelf.c:3226 #, c-format msgid "invalid data in sysv.hash section %d" msgstr "nieprawidÅ‚owe dane w sekcji sysv.hash %d" -#: src/readelf.c:3236 +#: src/readelf.c:3255 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "nieprawidÅ‚owe dane w sekcji sysv.hash %d" -#: src/readelf.c:3271 +#: src/readelf.c:3290 #, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "nieprawidÅ‚owe dane w sekcji sysv.hash64 %d" -#: src/readelf.c:3302 +#: src/readelf.c:3321 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "nieprawidÅ‚owe dane w sekcji sysv.hash64 %d" -#: src/readelf.c:3338 +#: src/readelf.c:3357 #, c-format msgid "invalid data in gnu.hash section %d" msgstr "nieprawidÅ‚owe dane w sekcji gnu.hash %d" -#: src/readelf.c:3405 +#: src/readelf.c:3424 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4816,7 +4821,7 @@ msgstr "" " Rozmiar maski bitowej: %zu bajtów %<PRIuFAST32>%% bitów ustawionych " "drugie przesuniÄ™cie skrótu: %u\n" -#: src/readelf.c:3494 +#: src/readelf.c:3513 #, c-format msgid "" "\n" @@ -4837,7 +4842,7 @@ msgstr[2] "" "Sekcja listy bibliotek [%2zu] „%s†pod offsetem %#0<PRIx64> zawiera %d " "wpisów:\n" -#: src/readelf.c:3508 +#: src/readelf.c:3527 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4845,7 +4850,7 @@ msgstr "" " Biblioteka Oznaczenie czasu Suma k. Wersja " "Flagi" -#: src/readelf.c:3558 +#: src/readelf.c:3579 #, c-format msgid "" "\n" @@ -4856,102 +4861,102 @@ msgstr "" "Sekcja atrybutów obiektu [%2zu] „%s†%<PRIu64> bajtów pod offsetem " "%#0<PRIx64>:\n" -#: src/readelf.c:3575 +#: src/readelf.c:3596 msgid " Owner Size\n" msgstr " WÅ‚aÅ›ciciel Rozmiar\n" -#: src/readelf.c:3604 +#: src/readelf.c:3625 #, c-format msgid " %-13s %4<PRIu32>\n" msgstr " %-13s %4<PRIu32>\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3643 +#: src/readelf.c:3664 #, c-format msgid " %-4u %12<PRIu32>\n" msgstr " %-4u %12<PRIu32>\n" #. Tag_File -#: src/readelf.c:3648 +#: src/readelf.c:3669 #, c-format msgid " File: %11<PRIu32>\n" msgstr " Plik: %11<PRIu32>\n" -#: src/readelf.c:3697 +#: src/readelf.c:3718 #, c-format msgid " %s: %<PRId64>, %s\n" msgstr " %s: %<PRId64>, %s\n" -#: src/readelf.c:3700 +#: src/readelf.c:3721 #, c-format msgid " %s: %<PRId64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:3703 +#: src/readelf.c:3724 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3713 +#: src/readelf.c:3734 #, c-format msgid " %u: %<PRId64>\n" msgstr " %u: %<PRId64>\n" -#: src/readelf.c:3716 +#: src/readelf.c:3737 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3786 +#: src/readelf.c:3807 #, fuzzy, c-format msgid "sprintf failure" msgstr "mprotect siÄ™ nie powiodÅ‚o" -#: src/readelf.c:4268 +#: src/readelf.c:4289 msgid "empty block" msgstr "pusty blok" -#: src/readelf.c:4271 +#: src/readelf.c:4292 #, c-format msgid "%zu byte block:" msgstr "%zu bajtowy blok:" -#: src/readelf.c:4749 +#: src/readelf.c:4770 #, fuzzy, c-format msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n" msgstr "%*s[%4<PRIuMAX>] %s <SKRÓCONE>\n" -#: src/readelf.c:4813 +#: src/readelf.c:4834 #, 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:4820 +#: src/readelf.c:4841 #, 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:4827 +#: src/readelf.c:4848 #, 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:4834 +#: src/readelf.c:4855 #, fuzzy, c-format msgid "%s %#<PRIx64> used with different attribute %s and %s" msgstr "%s %#<PRIx64> zostaÅ‚o użyte z różnymi rozmiarami adresu" -#: src/readelf.c:4931 +#: src/readelf.c:4952 #, c-format msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n" msgstr " [%6tx] <NIEUÅ»YWANE ÅšMIECIE W RESZCIE SEKCJI>\n" -#: src/readelf.c:4939 +#: src/readelf.c:4960 #, c-format msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n" msgstr " [%6tx] <NIEUÅ»YWANE ÅšMIECIE>… %<PRIu64> bajtów…\n" -#: src/readelf.c:5017 +#: src/readelf.c:5038 #, c-format msgid "" "\n" @@ -4962,7 +4967,7 @@ msgstr "" "Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n" " [ Kod]\n" -#: src/readelf.c:5025 +#: src/readelf.c:5046 #, c-format msgid "" "\n" @@ -4971,20 +4976,20 @@ msgstr "" "\n" "Sekcja skrótów pod offsetem %<PRIu64>:\n" -#: src/readelf.c:5038 +#: src/readelf.c:5059 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** bÅ‚Ä…d podczas odczytywania skrótu: %s\n" -#: src/readelf.c:5054 +#: src/readelf.c:5075 #, c-format msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n" msgstr " [%5u] offset: %<PRId64>, potomek: %s, znacznik: %s\n" -#: src/readelf.c:5087 src/readelf.c:5396 src/readelf.c:5563 src/readelf.c:5948 -#: src/readelf.c:6549 src/readelf.c:8199 src/readelf.c:8885 src/readelf.c:9321 -#: src/readelf.c:9566 src/readelf.c:9732 src/readelf.c:10119 -#: src/readelf.c:10179 +#: src/readelf.c:5108 src/readelf.c:5417 src/readelf.c:5584 src/readelf.c:5969 +#: src/readelf.c:6570 src/readelf.c:8307 src/readelf.c:8993 src/readelf.c:9429 +#: src/readelf.c:9674 src/readelf.c:9840 src/readelf.c:10227 +#: src/readelf.c:10287 #, c-format msgid "" "\n" @@ -4993,56 +4998,56 @@ msgstr "" "\n" "Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n" -#: src/readelf.c:5100 +#: src/readelf.c:5121 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "nie można uzyskać danych sekcji: %s" -#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8930 +#: src/readelf.c:5221 src/readelf.c:5245 src/readelf.c:5629 src/readelf.c:9038 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr "" "\n" " DÅ‚ugość: %6<PRIu64>\n" -#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8943 +#: src/readelf.c:5223 src/readelf.c:5260 src/readelf.c:5642 src/readelf.c:9051 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " Wersja DWARF: %6<PRIuFAST16>\n" -#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8952 +#: src/readelf.c:5224 src/readelf.c:5269 src/readelf.c:5651 src/readelf.c:9060 #, fuzzy, c-format msgid " Address size: %8<PRIu64>\n" msgstr " Offset adresu: %6<PRIu64>\n" -#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8962 +#: src/readelf.c:5226 src/readelf.c:5279 src/readelf.c:5661 src/readelf.c:9070 #, fuzzy, c-format msgid " Segment size: %8<PRIu64>\n" msgstr "" " Rozmiar segmentu: %6<PRIu64>\n" "\n" -#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8947 src/readelf.c:10311 +#: src/readelf.c:5264 src/readelf.c:5646 src/readelf.c:9055 src/readelf.c:10419 #, fuzzy, c-format msgid "Unknown version" msgstr "nieznana wersja" -#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8957 +#: src/readelf.c:5274 src/readelf.c:5487 src/readelf.c:5656 src/readelf.c:9065 #, c-format msgid "unsupported address size" msgstr "nieobsÅ‚ugiwany rozmiar adresu" -#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8967 +#: src/readelf.c:5285 src/readelf.c:5498 src/readelf.c:5666 src/readelf.c:9075 #, c-format msgid "unsupported segment size" msgstr "nieobsÅ‚ugiwany rozmiar segmentu" -#: src/readelf.c:5317 src/readelf.c:5391 +#: src/readelf.c:5338 src/readelf.c:5412 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "nie można uzyskać zawartoÅ›ci .debug_aranges: %s" -#: src/readelf.c:5332 +#: src/readelf.c:5353 #, c-format msgid "" "\n" @@ -5060,12 +5065,12 @@ msgstr[2] "" "\n" "Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64> zawiera %zu wpisów:\n" -#: src/readelf.c:5363 +#: src/readelf.c:5384 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5365 +#: src/readelf.c:5386 #, c-format msgid "" " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n" @@ -5073,7 +5078,7 @@ msgstr "" " [%*zu] poczÄ…tek: %0#*<PRIx64>, dÅ‚ugość: %5<PRIu64>, offset CU DIE: " "%6<PRId64>\n" -#: src/readelf.c:5409 src/readelf.c:8226 +#: src/readelf.c:5430 src/readelf.c:8334 #, c-format msgid "" "\n" @@ -5082,13 +5087,13 @@ msgstr "" "\n" "Tabela pod offsetem %zu:\n" -#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 -#: src/readelf.c:8911 +#: src/readelf.c:5434 src/readelf.c:5610 src/readelf.c:6594 src/readelf.c:8345 +#: src/readelf.c:9019 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "nieprawidÅ‚owe dane w sekcji [%zu] „%sâ€" -#: src/readelf.c:5429 +#: src/readelf.c:5450 #, c-format msgid "" "\n" @@ -5097,27 +5102,27 @@ msgstr "" "\n" " DÅ‚ugość: %6<PRIu64>\n" -#: src/readelf.c:5441 +#: src/readelf.c:5462 #, c-format msgid " DWARF version: %6<PRIuFAST16>\n" msgstr " Wersja DWARF: %6<PRIuFAST16>\n" -#: src/readelf.c:5445 +#: src/readelf.c:5466 #, c-format msgid "unsupported aranges version" msgstr "nieobsÅ‚ugiwana wersja aranges" -#: src/readelf.c:5456 +#: src/readelf.c:5477 #, c-format msgid " CU offset: %6<PRIx64>\n" msgstr " Offset CU: %6<PRIx64>\n" -#: src/readelf.c:5462 +#: src/readelf.c:5483 #, c-format msgid " Address size: %6<PRIu64>\n" msgstr " Offset adresu: %6<PRIu64>\n" -#: src/readelf.c:5473 +#: src/readelf.c:5494 #, c-format msgid "" " Segment size: %6<PRIu64>\n" @@ -5126,111 +5131,111 @@ msgstr "" " Rozmiar segmentu: %6<PRIu64>\n" "\n" -#: src/readelf.c:5528 +#: src/readelf.c:5549 #, c-format msgid " %zu padding bytes\n" msgstr " bajty wypeÅ‚nienia: %zu\n" -#: src/readelf.c:5572 +#: src/readelf.c:5593 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr "nie można uzyskać zawartoÅ›ci .debug_ranges: %s" -#: src/readelf.c:5595 src/readelf.c:8917 +#: src/readelf.c:5616 src/readelf.c:9025 #, fuzzy, c-format msgid "" "Table at Offset 0x%<PRIx64>:\n" "\n" msgstr " Offset .debug_line: 0x%<PRIx64>\n" -#: src/readelf.c:5650 src/readelf.c:8972 +#: src/readelf.c:5671 src/readelf.c:9080 #, fuzzy, c-format msgid " Offset entries: %8<PRIu64>\n" msgstr " DÅ‚ugość offsetu: %<PRIu8>\n" -#: src/readelf.c:5666 src/readelf.c:8988 +#: src/readelf.c:5687 src/readelf.c:9096 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8990 +#: src/readelf.c:5689 src/readelf.c:9098 #, c-format msgid " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5674 src/readelf.c:8996 +#: src/readelf.c:5695 src/readelf.c:9104 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5685 src/readelf.c:9007 +#: src/readelf.c:5706 src/readelf.c:9115 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5689 src/readelf.c:9011 +#: src/readelf.c:5710 src/readelf.c:9119 #, fuzzy, c-format msgid " Offsets starting at 0x%<PRIx64>:\n" msgstr " Offset: 0x%<PRIx64>\n" -#: src/readelf.c:5741 +#: src/readelf.c:5762 #, fuzzy, c-format msgid "invalid range list data" msgstr "nieprawidÅ‚owe dane" -#: src/readelf.c:5926 src/readelf.c:9299 +#: src/readelf.c:5947 src/readelf.c:9407 #, fuzzy, c-format msgid "" " %zu padding bytes\n" "\n" msgstr " bajty wypeÅ‚nienia: %zu\n" -#: src/readelf.c:5943 +#: src/readelf.c:5964 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "nie można uzyskać zawartoÅ›ci .debug_ranges: %s" -#: src/readelf.c:5979 src/readelf.c:9354 +#: src/readelf.c:6000 src/readelf.c:9462 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5981 src/readelf.c:9356 +#: src/readelf.c:6002 src/readelf.c:9464 #, c-format msgid "" "\n" " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5990 src/readelf.c:9382 src/readelf.c:9408 +#: src/readelf.c:6011 src/readelf.c:9490 src/readelf.c:9516 #, c-format msgid " [%6tx] <INVALID DATA>\n" msgstr " [%6tx] <NIEPRAWIDÅOWE DANE>\n" -#: src/readelf.c:6011 src/readelf.c:9488 +#: src/readelf.c:6032 src/readelf.c:9596 #, fuzzy, c-format msgid "" " [%6tx] base address\n" " " msgstr " [%6tx] adres podstawowy %s\n" -#: src/readelf.c:6019 src/readelf.c:9496 +#: src/readelf.c:6040 src/readelf.c:9604 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] pusta lista\n" -#: src/readelf.c:6274 +#: src/readelf.c:6295 msgid " <INVALID DATA>\n" msgstr " <NIEPRAWIDÅOWE DANE>\n" -#: src/readelf.c:6527 +#: src/readelf.c:6548 #, c-format msgid "cannot get ELF: %s" msgstr "nie można uzyskać ELF: %s" -#: src/readelf.c:6545 +#: src/readelf.c:6566 #, c-format msgid "" "\n" @@ -5239,7 +5244,7 @@ msgstr "" "\n" "Sekcja informacji o ramce wywoÅ‚ania [%2zu] „%s†pod offsetem %#<PRIx64>:\n" -#: src/readelf.c:6595 +#: src/readelf.c:6616 #, c-format msgid "" "\n" @@ -5248,65 +5253,65 @@ msgstr "" "\n" " [%6tx] Zerowy koniec\n" -#: src/readelf.c:6696 src/readelf.c:6850 +#: src/readelf.c:6717 src/readelf.c:6871 #, c-format msgid "invalid augmentation length" msgstr "nieprawidÅ‚owa dÅ‚ugość powiÄ™kszenia" -#: src/readelf.c:6711 +#: src/readelf.c:6732 msgid "FDE address encoding: " msgstr "Kodowanie adresu FDE: " -#: src/readelf.c:6717 +#: src/readelf.c:6738 msgid "LSDA pointer encoding: " msgstr "Kodowanie wskaźnika LSDA: " -#: src/readelf.c:6827 +#: src/readelf.c:6848 #, c-format msgid " (offset: %#<PRIx64>)" msgstr " (offset: %#<PRIx64>)" -#: src/readelf.c:6834 +#: src/readelf.c:6855 #, c-format msgid " (end offset: %#<PRIx64>)" msgstr " (koÅ„czÄ…cy offset: %#<PRIx64>)" -#: src/readelf.c:6871 +#: src/readelf.c:6892 #, c-format msgid " %-26sLSDA pointer: %#<PRIx64>\n" msgstr " %-26sWskaźnik LSDA: %#<PRIx64>\n" -#: src/readelf.c:6956 +#: src/readelf.c:6977 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute code: %s" msgstr "nie można uzyskać kodu atrybutu: %s" -#: src/readelf.c:6966 +#: src/readelf.c:6987 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute form: %s" msgstr "nie można uzyskać formy atrybutu: %s" -#: src/readelf.c:6988 +#: src/readelf.c:7009 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s" msgstr "nie można uzyskać wartoÅ›ci atrybutu: %s" -#: src/readelf.c:7321 +#: src/readelf.c:7339 #, fuzzy, c-format msgid "invalid file (%<PRId64>): %s" msgstr "nieprawidÅ‚owy plik" -#: src/readelf.c:7325 +#: src/readelf.c:7343 #, fuzzy, c-format msgid "no srcfiles for CU [%<PRIx64>]" msgstr " ustawienie pliku na %<PRIu64>\n" -#: src/readelf.c:7329 +#: src/readelf.c:7347 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "nie można uzyskać ELF: %s" -#: src/readelf.c:7552 +#: src/readelf.c:7660 #, c-format msgid "" "\n" @@ -5317,12 +5322,12 @@ msgstr "" "Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n" " [Offset]\n" -#: src/readelf.c:7602 +#: src/readelf.c:7710 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "nie można uzyskać nastÄ™pnego DIE: %s" -#: src/readelf.c:7621 +#: src/readelf.c:7729 #, fuzzy, c-format msgid "" " Type unit at offset %<PRIu64>:\n" @@ -5335,7 +5340,7 @@ msgstr "" "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n" " Podpis typu: %#<PRIx64>, offset typu: %#<PRIx64>\n" -#: src/readelf.c:7633 +#: src/readelf.c:7741 #, c-format msgid "" " Compilation unit at offset %<PRIu64>:\n" @@ -5346,38 +5351,38 @@ msgstr "" " Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: " "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n" -#: src/readelf.c:7643 src/readelf.c:7806 +#: src/readelf.c:7751 src/readelf.c:7914 #, c-format msgid " Unit type: %s (%<PRIu8>)" msgstr "" -#: src/readelf.c:7670 +#: src/readelf.c:7778 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7699 +#: src/readelf.c:7807 #, c-format msgid "cannot get DIE offset: %s" msgstr "nie można uzyskać offsetu DIE: %s" -#: src/readelf.c:7708 +#: src/readelf.c:7816 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s" msgstr "" "nie można uzyskać znacznika DIE pod offsetem %<PRIu64> w sekcji „%sâ€: %s" -#: src/readelf.c:7746 +#: src/readelf.c:7854 #, c-format msgid "cannot get next DIE: %s\n" msgstr "nie można uzyskać nastÄ™pnego DIE: %s\n" -#: src/readelf.c:7754 +#: src/readelf.c:7862 #, c-format msgid "cannot get next DIE: %s" msgstr "nie można uzyskać nastÄ™pnego DIE: %s" -#: src/readelf.c:7798 +#: src/readelf.c:7906 #, fuzzy, c-format msgid "" " Split compilation unit at offset %<PRIu64>:\n" @@ -5388,7 +5393,7 @@ msgstr "" " Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: " "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n" -#: src/readelf.c:7850 +#: src/readelf.c:7958 #, c-format msgid "" "\n" @@ -5399,18 +5404,18 @@ msgstr "" "Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n" "\n" -#: src/readelf.c:8182 +#: src/readelf.c:8290 #, fuzzy, c-format msgid "unknown form: %s" msgstr "nieznany bÅ‚Ä…d" -#: src/readelf.c:8213 +#: src/readelf.c:8321 #, 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:8315 +#: src/readelf.c:8423 #, fuzzy, c-format msgid "" "\n" @@ -5441,27 +5446,27 @@ msgstr "" "\n" "Instrukcje:\n" -#: src/readelf.c:8337 +#: src/readelf.c:8445 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "nie można uzyskać wersji symbolu: %s" -#: src/readelf.c:8345 +#: src/readelf.c:8453 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "nieobsÅ‚ugiwany rozmiar adresu" -#: src/readelf.c:8353 +#: src/readelf.c:8461 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "nie można uzyskać sekcji: %s" -#: src/readelf.c:8363 +#: src/readelf.c:8471 #, 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:8378 +#: src/readelf.c:8486 #, c-format msgid " [%*<PRIuFAST8>] %hhu argument\n" msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n" @@ -5469,7 +5474,7 @@ msgstr[0] " [%*<PRIuFAST8>] %hhu parametr\n" msgstr[1] " [%*<PRIuFAST8>] %hhu parametry\n" msgstr[2] " [%*<PRIuFAST8>] %hhu parametrów\n" -#: src/readelf.c:8389 +#: src/readelf.c:8497 msgid "" "\n" "Directory table:" @@ -5477,12 +5482,12 @@ msgstr "" "\n" "Tabela katalogu:" -#: src/readelf.c:8395 src/readelf.c:8472 +#: src/readelf.c:8503 src/readelf.c:8580 #, fuzzy, c-format msgid " [" msgstr " PC: " -#: src/readelf.c:8466 +#: src/readelf.c:8574 #, fuzzy msgid "" "\n" @@ -5491,7 +5496,7 @@ msgstr "" "\n" " Tabela strony wywoÅ‚ania:" -#: src/readelf.c:8527 +#: src/readelf.c:8635 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5499,7 +5504,7 @@ msgstr "" "Tabela nazw plików:\n" " Wpis Kat Czas Rozmiar Nazwa" -#: src/readelf.c:8564 +#: src/readelf.c:8672 msgid "" "\n" "Line number statements:" @@ -5507,119 +5512,119 @@ msgstr "" "\n" "Instrukcje numerów wierszy:" -#: src/readelf.c:8587 +#: src/readelf.c:8695 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "nieprawidÅ‚owe maksimum operacji na instrukcjÄ™ wynosi zero" -#: src/readelf.c:8621 +#: src/readelf.c:8729 #, fuzzy, c-format msgid " special opcode %u: address+%u = " msgstr " instrukcja specjalna %u: adres+%u = %s, wiersz%+d = %zu\n" -#: src/readelf.c:8625 +#: src/readelf.c:8733 #, fuzzy, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr "" " instrukcja specjalna %u: adres+%u = %s, op_index = %u, wiersz%+d = %zu\n" -#: src/readelf.c:8628 +#: src/readelf.c:8736 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8646 +#: src/readelf.c:8754 #, c-format msgid " extended opcode %u: " msgstr " instrukcja rozszerzona %u: " -#: src/readelf.c:8651 +#: src/readelf.c:8759 msgid " end of sequence" msgstr " koniec sekwencji" -#: src/readelf.c:8669 +#: src/readelf.c:8777 #, fuzzy, c-format msgid " set address to " msgstr " ustawienie adresu na %s\n" -#: src/readelf.c:8697 +#: src/readelf.c:8805 #, 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:8711 +#: src/readelf.c:8819 #, c-format msgid " set discriminator to %u\n" msgstr " ustawienie dyskryminatora na %u\n" #. Unknown, ignore it. -#: src/readelf.c:8716 +#: src/readelf.c:8824 msgid " unknown opcode" msgstr " nieznana instrukcja" #. Takes no argument. -#: src/readelf.c:8728 +#: src/readelf.c:8836 msgid " copy" msgstr " kopiowanie" -#: src/readelf.c:8739 +#: src/readelf.c:8847 #, fuzzy, c-format msgid " advance address by %u to " msgstr " zwiÄ™kszenie adresu o %u do %s\n" -#: src/readelf.c:8743 src/readelf.c:8804 +#: src/readelf.c:8851 src/readelf.c:8912 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8755 +#: src/readelf.c:8863 #, c-format msgid " advance line by constant %d to %<PRId64>\n" msgstr " zwiÄ™kszenie wiersza o staÅ‚Ä… %d do %<PRId64>\n" -#: src/readelf.c:8765 +#: src/readelf.c:8873 #, c-format msgid " set file to %<PRIu64>\n" msgstr " ustawienie pliku na %<PRIu64>\n" -#: src/readelf.c:8776 +#: src/readelf.c:8884 #, c-format msgid " set column to %<PRIu64>\n" msgstr " ustawienie kolumny na %<PRIu64>\n" -#: src/readelf.c:8783 +#: src/readelf.c:8891 #, c-format msgid " set '%s' to %<PRIuFAST8>\n" msgstr " ustawienie „%s†na %<PRIuFAST8>\n" #. Takes no argument. -#: src/readelf.c:8789 +#: src/readelf.c:8897 msgid " set basic block flag" msgstr " ustawienie podstawowej flagi bloku" -#: src/readelf.c:8800 +#: src/readelf.c:8908 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr " zwiÄ™kszenie adresu o staÅ‚Ä… %u do %s\n" -#: src/readelf.c:8820 +#: src/readelf.c:8928 #, fuzzy, c-format msgid " advance address by fixed value %u to \n" msgstr " zwiÄ™kszenie adresu o staÅ‚Ä… wartość %u do %s\n" #. Takes no argument. -#: src/readelf.c:8830 +#: src/readelf.c:8938 msgid " set prologue end flag" msgstr " ustawienie flagi koÅ„ca prologu" #. Takes no argument. -#: src/readelf.c:8835 +#: src/readelf.c:8943 msgid " set epilogue begin flag" msgstr " ustawienie flagi poczÄ…tku epilogu" -#: src/readelf.c:8845 +#: src/readelf.c:8953 #, c-format msgid " set isa to %u\n" msgstr " ustawienie isa na %u\n" @@ -5627,7 +5632,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:8854 +#: src/readelf.c:8962 #, c-format msgid " unknown opcode with %<PRIu8> parameter:" msgid_plural " unknown opcode with %<PRIu8> parameters:" @@ -5635,96 +5640,96 @@ msgstr[0] " nieznana instrukcja z %<PRIu8> parametrem:" msgstr[1] " nieznana instrukcja z %<PRIu8> parametrami:" msgstr[2] " nieznana instrukcja z %<PRIu8> parametrami:" -#: src/readelf.c:8894 +#: src/readelf.c:9002 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr "nie można uzyskać zawartoÅ›ci .debug_log: %s" -#: src/readelf.c:9063 +#: src/readelf.c:9171 #, fuzzy, c-format msgid "invalid loclists data" msgstr "nieprawidÅ‚owe dane" -#: src/readelf.c:9316 +#: src/readelf.c:9424 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "nie można uzyskać zawartoÅ›ci .debug_log: %s" -#: src/readelf.c:9523 src/readelf.c:10567 +#: src/readelf.c:9631 src/readelf.c:10675 msgid " <INVALID DATA>\n" msgstr " <NIEPRAWIDÅOWE DANE>\n" -#: src/readelf.c:9578 src/readelf.c:9741 +#: src/readelf.c:9686 src/readelf.c:9849 #, c-format msgid "cannot get macro information section data: %s" msgstr "nie można uzyskać danych sekcji informacji o makrach: %s" -#: src/readelf.c:9658 +#: src/readelf.c:9766 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** niezakoÅ„czony ciÄ…g na koÅ„cu sekcji" -#: src/readelf.c:9681 +#: src/readelf.c:9789 #, 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:9782 +#: src/readelf.c:9890 #, c-format msgid " Offset: 0x%<PRIx64>\n" msgstr " Offset: 0x%<PRIx64>\n" -#: src/readelf.c:9794 +#: src/readelf.c:9902 #, c-format msgid " Version: %<PRIu16>\n" msgstr " Wersja: %<PRIu16>\n" -#: src/readelf.c:9800 src/readelf.c:10687 +#: src/readelf.c:9908 src/readelf.c:10795 #, c-format msgid " unknown version, cannot parse section\n" msgstr " nieznana wersja, nie można przetworzyć sekcji\n" -#: src/readelf.c:9807 +#: src/readelf.c:9915 #, fuzzy, c-format msgid " Flag: 0x%<PRIx8>" msgstr " Flaga: 0x%<PRIx8>\n" -#: src/readelf.c:9836 +#: src/readelf.c:9944 #, c-format msgid " Offset length: %<PRIu8>\n" msgstr " DÅ‚ugość offsetu: %<PRIu8>\n" -#: src/readelf.c:9844 +#: src/readelf.c:9952 #, c-format msgid " .debug_line offset: 0x%<PRIx64>\n" msgstr " Offset .debug_line: 0x%<PRIx64>\n" -#: src/readelf.c:9869 +#: src/readelf.c:9977 #, c-format msgid " extension opcode table, %<PRIu8> items:\n" msgstr " tabela instrukcji rozszerzenia, %<PRIu8> elementów:\n" -#: src/readelf.c:9876 +#: src/readelf.c:9984 #, c-format msgid " [%<PRIx8>]" msgstr " [%<PRIx8>]" -#: src/readelf.c:9888 +#: src/readelf.c:9996 #, c-format msgid " %<PRIu8> arguments:" msgstr " Parametry %<PRIu8>:" -#: src/readelf.c:9903 +#: src/readelf.c:10011 #, c-format msgid " no arguments." msgstr " brak parametrów." -#: src/readelf.c:10104 +#: src/readelf.c:10212 #, 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:10148 +#: src/readelf.c:10256 #, c-format msgid "" "\n" @@ -5735,41 +5740,41 @@ msgstr "" "Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n" " %*s CiÄ…g\n" -#: src/readelf.c:10163 +#: src/readelf.c:10271 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** bÅ‚Ä…d podczas odczytywania ciÄ…gów: %s\n" -#: src/readelf.c:10192 +#: src/readelf.c:10300 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr "nie można uzyskać danych sekcji: %s" -#: src/readelf.c:10291 +#: src/readelf.c:10399 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr "" "\n" " DÅ‚ugość: %6<PRIu64>\n" -#: src/readelf.c:10293 +#: src/readelf.c:10401 #, fuzzy, c-format msgid " Offset size: %8<PRIu8>\n" msgstr " DÅ‚ugość offsetu: %<PRIu8>\n" -#: src/readelf.c:10307 +#: src/readelf.c:10415 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " Wersja DWARF: %6<PRIuFAST16>\n" -#: src/readelf.c:10316 +#: src/readelf.c:10424 #, fuzzy, c-format msgid " Padding: %8<PRIx16>\n" msgstr "" "\n" " DÅ‚ugość: %6<PRIu64>\n" -#: src/readelf.c:10370 +#: src/readelf.c:10478 #, c-format msgid "" "\n" @@ -5778,7 +5783,7 @@ msgstr "" "\n" "Sekcja tabeli wyszukiwania ramki wywoÅ‚ania [%2zu] „.eh_frame_hdrâ€:\n" -#: src/readelf.c:10472 +#: src/readelf.c:10580 #, c-format msgid "" "\n" @@ -5787,22 +5792,22 @@ msgstr "" "\n" "Sekcja tabeli obsÅ‚ugiwania wyjÄ…tków [%2zu] „.gcc_except_tableâ€:\n" -#: src/readelf.c:10495 +#: src/readelf.c:10603 #, c-format msgid " LPStart encoding: %#x " msgstr " Kodowanie LPStart: %#x " -#: src/readelf.c:10507 +#: src/readelf.c:10615 #, c-format msgid " TType encoding: %#x " msgstr " Kodowanie TType: %#x " -#: src/readelf.c:10522 +#: src/readelf.c:10630 #, c-format msgid " Call site encoding: %#x " msgstr " Kodowanie strony wywoÅ‚ania: %#x " -#: src/readelf.c:10535 +#: src/readelf.c:10643 msgid "" "\n" " Call site table:" @@ -5810,7 +5815,7 @@ msgstr "" "\n" " Tabela strony wywoÅ‚ania:" -#: src/readelf.c:10549 +#: src/readelf.c:10657 #, c-format msgid "" " [%4u] Call site start: %#<PRIx64>\n" @@ -5823,12 +5828,12 @@ msgstr "" " LÄ…dowisko: %#<PRIx64>\n" " DziaÅ‚anie: %u\n" -#: src/readelf.c:10622 +#: src/readelf.c:10730 #, c-format msgid "invalid TType encoding" msgstr "nieprawidÅ‚owe kodowanie TType" -#: src/readelf.c:10649 +#: src/readelf.c:10757 #, c-format msgid "" "\n" @@ -5837,37 +5842,37 @@ msgstr "" "\n" "Sekcja GDB [%2zu] „%s†pod offsetem %#<PRIx64> zawiera %<PRId64> bajtów:\n" -#: src/readelf.c:10678 +#: src/readelf.c:10786 #, c-format msgid " Version: %<PRId32>\n" msgstr " Wersja: %<PRId32>\n" -#: src/readelf.c:10696 +#: src/readelf.c:10804 #, c-format msgid " CU offset: %#<PRIx32>\n" msgstr " offset CU: %#<PRIx32>\n" -#: src/readelf.c:10703 +#: src/readelf.c:10811 #, c-format msgid " TU offset: %#<PRIx32>\n" msgstr " offset TU: %#<PRIx32>\n" -#: src/readelf.c:10710 +#: src/readelf.c:10818 #, c-format msgid " address offset: %#<PRIx32>\n" msgstr " offset adresu: %#<PRIx32>\n" -#: src/readelf.c:10717 +#: src/readelf.c:10825 #, c-format msgid " symbol offset: %#<PRIx32>\n" msgstr " offset symbolu: %#<PRIx32>\n" -#: src/readelf.c:10724 +#: src/readelf.c:10832 #, c-format msgid " constant offset: %#<PRIx32>\n" msgstr " offset staÅ‚ej: %#<PRIx32>\n" -#: src/readelf.c:10738 +#: src/readelf.c:10846 #, c-format msgid "" "\n" @@ -5876,7 +5881,7 @@ msgstr "" "\n" " Lista CU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n" -#: src/readelf.c:10763 +#: src/readelf.c:10871 #, c-format msgid "" "\n" @@ -5885,7 +5890,7 @@ msgstr "" "\n" " Lista TU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n" -#: src/readelf.c:10792 +#: src/readelf.c:10900 #, c-format msgid "" "\n" @@ -5894,7 +5899,7 @@ msgstr "" "\n" " Lista adresów pod offsetem %#<PRIx32> zawiera %zu wpisów:\n" -#: src/readelf.c:10824 +#: src/readelf.c:10932 #, c-format msgid "" "\n" @@ -5903,18 +5908,18 @@ msgstr "" "\n" " Tabela symboli pod offsetem %#<PRIx32> zawiera %zu gniazd:\n" -#: src/readelf.c:10962 +#: src/readelf.c:11070 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s" -#: src/readelf.c:11325 src/readelf.c:11947 src/readelf.c:12058 -#: src/readelf.c:12116 +#: src/readelf.c:11433 src/readelf.c:12055 src/readelf.c:12166 +#: src/readelf.c:12224 #, c-format msgid "cannot convert core note data: %s" msgstr "nie można konwertować danych notatki core: %s" -#: src/readelf.c:11688 +#: src/readelf.c:11796 #, c-format msgid "" "\n" @@ -5923,21 +5928,21 @@ msgstr "" "\n" "%*s… <powtarza siÄ™ jeszcze %u razy>…" -#: src/readelf.c:12195 +#: src/readelf.c:12303 msgid " Owner Data size Type\n" msgstr " WÅ‚aÅ›ciciel Rozmiar danych Typ\n" -#: src/readelf.c:12224 +#: src/readelf.c:12332 #, c-format msgid " %-13.*s %9<PRId32> %s\n" msgstr " %-13.*s %9<PRId32> %s\n" -#: src/readelf.c:12276 +#: src/readelf.c:12384 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "nie można uzyskać zawartoÅ›ci sekcji notatki: %s" -#: src/readelf.c:12303 +#: src/readelf.c:12411 #, c-format msgid "" "\n" @@ -5947,7 +5952,7 @@ msgstr "" "Segment notatki [%2zu] „%s†o dÅ‚ugoÅ›ci %<PRIu64> bajtów pod offsetem " "%#0<PRIx64>:\n" -#: src/readelf.c:12326 +#: src/readelf.c:12434 #, c-format msgid "" "\n" @@ -5956,7 +5961,7 @@ msgstr "" "\n" "Segment notatki o dÅ‚ugoÅ›ci %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n" -#: src/readelf.c:12373 +#: src/readelf.c:12481 #, c-format msgid "" "\n" @@ -5965,12 +5970,12 @@ msgstr "" "\n" "Sekcja [%zu] „%s†nie ma danych do zrzucenia.\n" -#: src/readelf.c:12400 src/readelf.c:12451 +#: src/readelf.c:12508 src/readelf.c:12559 #, 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:12405 +#: src/readelf.c:12513 #, c-format msgid "" "\n" @@ -5980,7 +5985,7 @@ msgstr "" "Segment zrzutu szesnastkowego [%zu] „%sâ€, %<PRIu64> bajtów pod offsetem " "%#0<PRIx64>:\n" -#: src/readelf.c:12410 +#: src/readelf.c:12518 #, c-format msgid "" "\n" @@ -5991,7 +5996,7 @@ msgstr "" "Zrzut szesnastkowy sekcji [%zu] „%sâ€, %<PRIu64> bajtów (%zd " "nieskompresowanych) pod offsetem %#0<PRIx64>:\n" -#: src/readelf.c:12424 +#: src/readelf.c:12532 #, c-format msgid "" "\n" @@ -6000,7 +6005,7 @@ msgstr "" "\n" "Sekcja [%zu] „%s†nie ma ciÄ…gów do zrzucenia.\n" -#: src/readelf.c:12456 +#: src/readelf.c:12564 #, c-format msgid "" "\n" @@ -6009,7 +6014,7 @@ msgstr "" "\n" "Sekcja ciÄ…gów [%zu] „%s†zawiera %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n" -#: src/readelf.c:12461 +#: src/readelf.c:12569 #, c-format msgid "" "\n" @@ -6020,7 +6025,7 @@ msgstr "" "Sekcja ciÄ…gów [%zu] „%s†zawiera %<PRIu64> bajtów (%zd nieskompresowanych) " "pod offsetem %#0<PRIx64>:\n" -#: src/readelf.c:12510 +#: src/readelf.c:12618 #, c-format msgid "" "\n" @@ -6029,7 +6034,7 @@ msgstr "" "\n" "sekcja [%lu] nie istnieje" -#: src/readelf.c:12539 +#: src/readelf.c:12647 #, c-format msgid "" "\n" @@ -6038,12 +6043,12 @@ msgstr "" "\n" "sekcja „%s†nie istnieje" -#: src/readelf.c:12596 +#: src/readelf.c:12704 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "nie można uzyskać indeksu symboli archiwum „%sâ€: %s" -#: src/readelf.c:12599 +#: src/readelf.c:12707 #, c-format msgid "" "\n" @@ -6052,7 +6057,7 @@ msgstr "" "\n" "Archiwum „%s†nie ma indeksu symboli\n" -#: src/readelf.c:12603 +#: src/readelf.c:12711 #, c-format msgid "" "\n" @@ -6061,12 +6066,12 @@ msgstr "" "\n" "Indeks archiwum „%s†ma %zu wpisów:\n" -#: src/readelf.c:12621 +#: src/readelf.c:12729 #, 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:12626 +#: src/readelf.c:12734 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Element archiwum „%s†zawiera:\n" @@ -6130,12 +6135,17 @@ msgstr "NieprawidÅ‚owa baza: %s" msgid "%s: file format not recognized" msgstr "%s: nie rozpoznano formatu pliku" -#: src/size.c:418 src/size.c:551 +#: src/size.c:418 src/size.c:557 #, c-format msgid " (ex %s)" msgstr " (ex %s)" -#: src/size.c:576 +#: src/size.c:482 +#, fuzzy, c-format +msgid "cannot get section header" +msgstr "nie można uzyskać nagłówka sekcji\n" + +#: src/size.c:582 msgid "(TOTALS)\n" msgstr "(CAÅKOWITE)\n" @@ -6518,7 +6528,7 @@ msgstr "%s: bÅ‚Ä…d podczas tworzenia nagłówka ELF: %s" msgid "%s: error while getting shdrstrndx: %s" msgstr "%s: bÅ‚Ä…d podczas tworzenia nagłówka ELF: %s" -#: src/strip.c:1654 src/strip.c:2534 +#: src/strip.c:1654 src/strip.c:2535 #, fuzzy, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "%s: bÅ‚Ä…d podczas tworzenia nagłówka ELF: %s" @@ -6548,47 +6558,47 @@ msgstr "podczas tworzenia tabeli ciÄ…gów nagłówka sekcji: %s" 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:2027 +#: src/strip.c:2028 #, 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:2450 src/strip.c:2558 +#: src/strip.c:2451 src/strip.c:2559 #, c-format msgid "while writing '%s': %s" msgstr "podczas zapisywania „%sâ€: %s" -#: src/strip.c:2461 +#: src/strip.c:2462 #, c-format msgid "while creating '%s'" msgstr "podczas tworzenia „%sâ€" -#: src/strip.c:2484 +#: src/strip.c:2485 #, c-format msgid "while computing checksum for debug information" msgstr "podczas obliczania sumy kontrolnej dla informacji debugowania" -#: src/strip.c:2525 +#: src/strip.c:2526 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "%s: bÅ‚Ä…d podczas tworzenia nagłówka ELF: %s" -#: src/strip.c:2543 +#: src/strip.c:2544 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: bÅ‚Ä…d podczas odczytywania pliku: %s" -#: src/strip.c:2583 src/strip.c:2603 +#: src/strip.c:2584 src/strip.c:2604 #, c-format msgid "while writing '%s'" msgstr "podczas zapisywania „%sâ€" -#: src/strip.c:2640 src/strip.c:2647 +#: src/strip.c:2641 src/strip.c:2648 #, c-format msgid "error while finishing '%s': %s" msgstr "bÅ‚Ä…d podczas koÅ„czenia „%sâ€: %s" -#: src/strip.c:2664 src/strip.c:2740 +#: src/strip.c:2665 src/strip.c:2741 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "nie można ustawić czasu dostÄ™pu i modyfikacji „%sâ€" @@ -6676,7 +6686,7 @@ msgstr "nie można utworzyć nagłówka ELF: %s" msgid "cannot get shdrstrndx:%s" msgstr "nie można uzyskać sekcji: %s" -#: src/unstrip.c:248 src/unstrip.c:2034 +#: src/unstrip.c:248 src/unstrip.c:2038 #, c-format msgid "cannot get ELF header: %s" msgstr "nie można uzyskać nagłówka ELF: %s" @@ -6696,12 +6706,12 @@ msgstr "nie można zaktualizować relokacji: %s" msgid "cannot copy ELF header: %s" msgstr "nie można skopiować nagłówka ELF: %s" -#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 +#: src/unstrip.c:269 src/unstrip.c:2056 src/unstrip.c:2099 #, c-format msgid "cannot get number of program headers: %s" msgstr "nie można uzyskać liczby nagłówków programu: %s" -#: src/unstrip.c:274 src/unstrip.c:2056 +#: src/unstrip.c:274 src/unstrip.c:2060 #, c-format msgid "cannot create program headers: %s" msgstr "nie można utworzyć nagłówków programu: %s" @@ -6716,12 +6726,12 @@ msgstr "nie można skopiować nagłówka programu: %s" msgid "cannot copy section header: %s" msgstr "nie można skopiować nagłówka sekcji: %s" -#: src/unstrip.c:293 src/unstrip.c:1665 +#: src/unstrip.c:293 src/unstrip.c:1669 #, c-format msgid "cannot get section data: %s" msgstr "nie można uzyskać danych sekcji: %s" -#: src/unstrip.c:295 src/unstrip.c:1667 +#: src/unstrip.c:295 src/unstrip.c:1671 #, c-format msgid "cannot copy section data: %s" msgstr "nie można skopiować danych sekcji: %s" @@ -6731,13 +6741,14 @@ msgstr "nie można skopiować danych sekcji: %s" msgid "cannot create directory '%s'" msgstr "nie można utworzyć katalogu „%sâ€" -#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 +#: src/unstrip.c:391 src/unstrip.c:647 src/unstrip.c:681 src/unstrip.c:847 +#: src/unstrip.c:1706 #, c-format msgid "cannot get symbol table entry: %s" msgstr "nie można uzyskać wpisu tabeli symboli: %s" -#: src/unstrip.c:407 src/unstrip.c:649 src/unstrip.c:670 src/unstrip.c:682 -#: src/unstrip.c:1723 src/unstrip.c:1918 src/unstrip.c:1942 +#: src/unstrip.c:407 src/unstrip.c:650 src/unstrip.c:671 src/unstrip.c:684 +#: src/unstrip.c:1727 src/unstrip.c:1922 src/unstrip.c:1946 #, c-format msgid "cannot update symbol table: %s" msgstr "nie można zaktualizować tabeli symboli: %s" @@ -6762,136 +6773,136 @@ msgstr "nie można uzyskać wersji symbolu: %s" msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "nieoczekiwany typ sekcji w [%zu] z sh_link do tabeli symboli" -#: src/unstrip.c:851 +#: src/unstrip.c:853 #, c-format msgid "invalid string offset in symbol [%zu]" msgstr "nieprawidÅ‚owy offset ciÄ…gu w symbolu [%zu]" -#: src/unstrip.c:1009 src/unstrip.c:1398 +#: src/unstrip.c:1011 src/unstrip.c:1402 #, c-format msgid "cannot read section [%zu] name: %s" msgstr "nie można odczytać nazwy sekcji [%zu]: %s" -#: src/unstrip.c:1024 +#: src/unstrip.c:1026 #, fuzzy, c-format msgid "bad sh_link for group section: %s" msgstr "nieprawidÅ‚owa wartość sh_link w sekcji %zu" -#: src/unstrip.c:1030 +#: src/unstrip.c:1032 #, fuzzy, c-format msgid "couldn't get shdr for group section: %s" msgstr "nie można uzyskać danych dla sekcji %d: %s" -#: src/unstrip.c:1035 +#: src/unstrip.c:1037 #, fuzzy, c-format msgid "bad data for group symbol section: %s" msgstr "nie można uzyskać danych dla sekcji symboli\n" -#: src/unstrip.c:1041 +#: src/unstrip.c:1043 #, fuzzy, c-format msgid "couldn't get symbol for group section: %s" msgstr "nie można uzyskać wersji symbolu: %s" -#: src/unstrip.c:1046 +#: src/unstrip.c:1048 #, fuzzy, c-format msgid "bad symbol name for group section: %s" msgstr "bÅ‚Ä™dny nagłówek kompresji dla sekcji %zd: %s" -#: src/unstrip.c:1088 src/unstrip.c:1107 src/unstrip.c:1145 +#: src/unstrip.c:1090 src/unstrip.c:1109 src/unstrip.c:1147 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "nie można odczytać sekcji „.gnu.prelink_undoâ€: %s" -#: src/unstrip.c:1125 +#: src/unstrip.c:1127 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "przepeÅ‚nienie z shnum = %zu w sekcji „%sâ€" -#: src/unstrip.c:1136 +#: src/unstrip.c:1138 #, c-format msgid "invalid contents in '%s' section" msgstr "nieprawidÅ‚owa zawartość w sekcji „%sâ€" -#: src/unstrip.c:1192 src/unstrip.c:1524 +#: src/unstrip.c:1194 src/unstrip.c:1528 #, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "nie można odnaleźć pasujÄ…cej sekcji dla [%zu] „%sâ€" -#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 +#: src/unstrip.c:1319 src/unstrip.c:1335 src/unstrip.c:1607 src/unstrip.c:1881 #, c-format msgid "cannot add section name to string table: %s" msgstr "nie można nazwy sekcji do tabeli ciÄ…gów: %s" -#: src/unstrip.c:1341 +#: src/unstrip.c:1344 #, c-format msgid "cannot update section header string table data: %s" msgstr "nie można zaktualizować danych tabeli ciÄ…gów nagłówków sekcji: %s" -#: src/unstrip.c:1369 src/unstrip.c:1373 +#: src/unstrip.c:1373 src/unstrip.c:1377 #, c-format msgid "cannot get section header string table section index: %s" msgstr "nie można uzyskać indeksu sekcji tabeli ciÄ…gów nagłówków sekcji: %s" -#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 +#: src/unstrip.c:1381 src/unstrip.c:1385 src/unstrip.c:1622 #, c-format msgid "cannot get section count: %s" msgstr "nie można uzyskać licznika sekcji: %s" -#: src/unstrip.c:1384 +#: src/unstrip.c:1388 #, c-format msgid "more sections in stripped file than debug file -- arguments reversed?" msgstr "" "wiÄ™cej sekcji w okrojonym pliku niż w pliku debugowania — odwrócono " "parametry?" -#: src/unstrip.c:1446 src/unstrip.c:1539 +#: src/unstrip.c:1450 src/unstrip.c:1543 #, c-format msgid "cannot read section header string table: %s" msgstr "nie można odczytać tabeli ciÄ…gów nagłówków sekcji: %s" -#: src/unstrip.c:1597 +#: src/unstrip.c:1601 #, c-format msgid "cannot add new section: %s" msgstr "nie można dodać nowej sekcji: %s" -#: src/unstrip.c:1710 +#: src/unstrip.c:1714 #, c-format msgid "symbol [%zu] has invalid section index" msgstr "symbol [%zu] ma nieprawidÅ‚owy indeks sekcji" -#: src/unstrip.c:1742 +#: src/unstrip.c:1746 #, fuzzy, c-format msgid "group has invalid section index [%zd]" msgstr "symbol [%zu] ma nieprawidÅ‚owy indeks sekcji" -#: src/unstrip.c:2013 +#: src/unstrip.c:2017 #, c-format msgid "cannot read section data: %s" msgstr "nie można odczytać danych sekcji: %s" -#: src/unstrip.c:2042 +#: src/unstrip.c:2046 #, c-format msgid "cannot update ELF header: %s" msgstr "nie można zaktualizować nagłówka ELF: %s" -#: src/unstrip.c:2066 +#: src/unstrip.c:2070 #, c-format msgid "cannot update program header: %s" msgstr "nie można zaktualizować nagłówka programu: %s" -#: src/unstrip.c:2071 src/unstrip.c:2153 +#: src/unstrip.c:2075 src/unstrip.c:2157 #, c-format msgid "cannot write output file: %s" msgstr "nie można zapisać pliku wyjÅ›ciowego: %s" -#: src/unstrip.c:2122 +#: src/unstrip.c:2126 #, c-format msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" msgstr "" "Dane DWARF nie zostaÅ‚y dostosowane do przesuniÄ™cia wczesnego konsolidowania; " "proszÄ™ rozważyć polecenie prelink -u" -#: src/unstrip.c:2125 +#: src/unstrip.c:2129 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" @@ -6899,77 +6910,77 @@ msgstr "" "Dane DWARF w „%s†nie zostaÅ‚y dostosowane do przesuniÄ™cia wczesnego " "konsolidowania; proszÄ™ rozważyć polecenie prelink -u" -#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 +#: src/unstrip.c:2148 src/unstrip.c:2199 src/unstrip.c:2211 src/unstrip.c:2297 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "nie można utworzyć deskryptora ELF: %s" -#: src/unstrip.c:2186 +#: src/unstrip.c:2190 msgid "WARNING: " msgstr "OSTRZEÅ»ENIE: " -#: src/unstrip.c:2188 +#: src/unstrip.c:2192 msgid ", use --force" msgstr ", należy użyć opcji --force" -#: src/unstrip.c:2211 +#: src/unstrip.c:2215 msgid "ELF header identification (e_ident) different" msgstr "Różna identyfikacja nagłówka ELF (e_ident)" -#: src/unstrip.c:2214 +#: src/unstrip.c:2218 msgid "ELF header type (e_type) different" msgstr "Różne typy nagłówka ELF (e_type)" -#: src/unstrip.c:2217 +#: src/unstrip.c:2221 msgid "ELF header machine type (e_machine) different" msgstr "Różne typy maszyny nagłówka ELF (e_machine)" -#: src/unstrip.c:2220 +#: src/unstrip.c:2224 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "okrojony nagłówek programu (e_phnum) jest mniejszy niż nieokrojony" -#: src/unstrip.c:2250 +#: src/unstrip.c:2254 #, c-format msgid "cannot find stripped file for module '%s': %s" msgstr "nie można odnaleźć okrojonego pliku dla moduÅ‚u „%sâ€: %s" -#: src/unstrip.c:2254 +#: src/unstrip.c:2258 #, c-format msgid "cannot open stripped file '%s' for module '%s': %s" msgstr "nie można otworzyć okrojonego pliku „%s†dla moduÅ‚u „%sâ€: %s" -#: src/unstrip.c:2269 +#: src/unstrip.c:2273 #, c-format msgid "cannot find debug file for module '%s': %s" msgstr "nie można odnaleźć pliku debugowania dla moduÅ‚u „%sâ€: %s" -#: src/unstrip.c:2273 +#: src/unstrip.c:2277 #, c-format msgid "cannot open debug file '%s' for module '%s': %s" msgstr "nie można otworzyć pliku debugowania „%s†dla moduÅ‚u „%sâ€: %s" -#: src/unstrip.c:2286 +#: src/unstrip.c:2290 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "moduÅ‚ „%s†pliku „%s†nie zostaÅ‚ okrojony" -#: src/unstrip.c:2317 +#: src/unstrip.c:2321 #, c-format msgid "cannot cache section addresses for module '%s': %s" msgstr "" "nie można utworzyć pamiÄ™ci podrÄ™cznej adresów sekcji dla moduÅ‚u „%sâ€: %s" -#: src/unstrip.c:2450 +#: src/unstrip.c:2454 #, c-format msgid "no matching modules found" msgstr "nie odnaleziono pasujÄ…cych modułów" -#: src/unstrip.c:2459 +#: src/unstrip.c:2463 #, c-format msgid "matched more than one module" msgstr "pasuje wiÄ™cej niż jeden moduÅ‚" -#: src/unstrip.c:2503 +#: src/unstrip.c:2507 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" @@ -6977,7 +6988,7 @@ msgstr "" "OKROJONY-PLIK PLIK-DEBUGOWANIA\n" "[MODUÅ…]" -#: src/unstrip.c:2504 +#: src/unstrip.c:2508 #, fuzzy msgid "" "Combine stripped files with separate symbols and debug information.\n" @@ -7033,7 +7044,7 @@ msgstr "" "jest nazwÄ… oddzielnego pliku debuginfo lub „-â€, jeÅ›li nie odnaleziono " "debuginfo lub „.â€, jeÅ›li PLIK zawiera informacje debugowania." -#: tests/backtrace.c:437 +#: tests/backtrace.c:436 msgid "Run executable" msgstr "Uruchamia plik wykonywalny" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2019-02-14 14:31+0100\n" +"POT-Creation-Date: 2019-08-13 23:38+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" @@ -58,8 +58,8 @@ msgstr "" "початкових кодах. Умовами Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ ÐЕ передбачено жодних " "гарантій, зокрема гарантій працездатноÑÑ‚Ñ– або придатноÑÑ‚Ñ– Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ñ— мети.\n" -#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 -#: src/readelf.c:11274 src/unstrip.c:2346 src/unstrip.c:2552 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3433 +#: src/readelf.c:11382 src/unstrip.c:2350 src/unstrip.c:2556 #, c-format msgid "memory exhausted" msgstr "пам’ÑÑ‚ÑŒ вичерпано" @@ -300,7 +300,7 @@ msgstr " невідомий код операції" msgid ".debug_addr section missing" msgstr "немає розділу .debug_ranges" -#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2497 msgid "Input selection options:" msgstr "Вибір параметрів Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…:" @@ -596,7 +596,7 @@ msgstr " ОС: %s, ABI: " msgid "Stand alone" msgstr "Окремий" -#: libebl/eblsymbolbindingname.c:67 libebl/eblsymboltypename.c:73 +#: libebl/eblsymbolbindingname.c:68 libebl/eblsymboltypename.c:74 #, c-format msgid "<unknown>: %d" msgstr "<невідомий>: %d" @@ -621,7 +621,7 @@ msgstr "некоректна розмірніÑÑ‚ÑŒ вхідного парамРmsgid "invalid size of destination operand" msgstr "некоректна розмірніÑÑ‚ÑŒ вихідного параметра" -#: libelf/elf_error.c:87 src/readelf.c:6129 +#: libelf/elf_error.c:87 src/readelf.c:6150 #, c-format msgid "invalid encoding" msgstr "некоректне кодуваннÑ" @@ -707,8 +707,8 @@ msgstr "невідповідніÑÑ‚ÑŒ полів data/scn" msgid "invalid section header" msgstr "некоректний заголовок розділу" -#: libelf/elf_error.c:191 src/readelf.c:9790 src/readelf.c:10390 -#: src/readelf.c:10491 src/readelf.c:10673 +#: libelf/elf_error.c:191 src/readelf.c:9898 src/readelf.c:10498 +#: src/readelf.c:10599 src/readelf.c:10781 #, c-format msgid "invalid data" msgstr "некоректні дані" @@ -1376,7 +1376,7 @@ msgstr "Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» параметра --gaps." #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 -#: src/unstrip.c:2142 src/unstrip.c:2171 +#: src/unstrip.c:2146 src/unstrip.c:2175 #, c-format msgid "cannot open '%s'" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ «%s»" @@ -1507,7 +1507,7 @@ msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "" "Педантична перевірка файлів ELF на ÑуміÑніÑÑ‚ÑŒ зі ÑпецифікаціÑми gABI/psABI." -#: src/elflint.c:154 src/readelf.c:346 +#: src/elflint.c:154 src/readelf.c:357 #, c-format msgid "cannot open input file" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ вхідний файл." @@ -1526,7 +1526,7 @@ msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÐµÑкриРmsgid "No errors" msgstr "Без помилок" -#: src/elflint.c:219 src/readelf.c:545 +#: src/elflint.c:219 src/readelf.c:559 msgid "Missing file name.\n" msgstr "Ðе вказано назви файла.\n" @@ -3703,7 +3703,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: Ð’ÐУТРІШÐЯ ПОМИЛКР%d (%s): %s" #: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308 -#: src/strip.c:2747 +#: src/strip.c:2748 #, c-format msgid "while closing '%s'" msgstr "під Ñ‡Ð°Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Â«%s»" @@ -3747,19 +3747,19 @@ msgstr "%s%s%s: не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ формат файла msgid "cannot create search tree" msgstr "не вдалоÑÑ Ñтворити дерево пошуку" -#: src/nm.c:746 src/nm.c:1207 src/objdump.c:777 src/readelf.c:605 -#: src/readelf.c:1412 src/readelf.c:1563 src/readelf.c:1764 src/readelf.c:1970 -#: src/readelf.c:2160 src/readelf.c:2338 src/readelf.c:2414 src/readelf.c:2672 -#: src/readelf.c:2748 src/readelf.c:2835 src/readelf.c:3433 src/readelf.c:3483 -#: src/readelf.c:3546 src/readelf.c:11106 src/readelf.c:12291 -#: src/readelf.c:12495 src/readelf.c:12563 src/size.c:398 src/size.c:467 +#: src/nm.c:746 src/nm.c:1205 src/objdump.c:777 src/readelf.c:619 +#: src/readelf.c:1431 src/readelf.c:1582 src/readelf.c:1783 src/readelf.c:1989 +#: src/readelf.c:2179 src/readelf.c:2357 src/readelf.c:2433 src/readelf.c:2691 +#: src/readelf.c:2767 src/readelf.c:2854 src/readelf.c:3452 src/readelf.c:3502 +#: src/readelf.c:3565 src/readelf.c:11214 src/readelf.c:12399 +#: src/readelf.c:12603 src/readelf.c:12671 src/size.c:398 src/size.c:470 #: src/strip.c:1038 #, c-format msgid "cannot get section header string table index" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків" #. We always print this prolog. -#: src/nm.c:773 +#: src/nm.c:771 #, c-format msgid "" "\n" @@ -3773,7 +3773,7 @@ msgstr "" "\n" #. The header line. -#: src/nm.c:776 +#: src/nm.c:774 #, c-format msgid "" "%*s%-*s %-*s Class Type %-*s %*s Section\n" @@ -3782,28 +3782,28 @@ msgstr "" "%*s%-*s %-*s ÐšÐ»Ð°Ñ Ð¢Ð¸Ð¿ %-*s %*s Розділ\n" "\n" -#: src/nm.c:1218 +#: src/nm.c:1216 #, c-format msgid "%s: entry size in section %zd `%s' is not what we expect" msgstr "%s: розмір запиÑу у розділі %zd «%s» не Ñ” очікуваним" -#: src/nm.c:1223 +#: src/nm.c:1221 #, c-format msgid "%s: size of section %zd `%s' is not multiple of entry size" msgstr "%s: розмір розділу %zd «%s» не Ñ” кратним до розміру запиÑу" -#: src/nm.c:1302 +#: src/nm.c:1300 #, fuzzy, c-format msgid "%s: entries (%zd) in section %zd `%s' is too large" msgstr "%s: розмір запиÑу у розділі %zd «%s» не Ñ” очікуваним" #. XXX Add machine specific object file types. -#: src/nm.c:1528 +#: src/nm.c:1526 #, c-format msgid "%s%s%s%s: Invalid operation" msgstr "%s%s%s%s: некоректна діÑ" -#: src/nm.c:1585 +#: src/nm.c:1583 #, c-format msgid "%s%s%s: no symbols" msgstr "%s%s%s: немає Ñимволів" @@ -3837,7 +3837,7 @@ msgstr "Показати інформацію лише з розділу ÐÐЗРmsgid "Show information from FILEs (a.out by default)." msgstr "Показати інформацію з ФÐЙЛів (типово a.out)." -#: src/objdump.c:218 src/readelf.c:550 +#: src/objdump.c:218 src/readelf.c:564 msgid "No operation specified.\n" msgstr "Ðе вказано дії.\n" @@ -3846,11 +3846,11 @@ msgstr "Ðе вказано дії.\n" msgid "while close `%s'" msgstr "під Ñ‡Ð°Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Â«%s»" -#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 +#: src/objdump.c:363 src/readelf.c:2084 src/readelf.c:2276 msgid "INVALID SYMBOL" msgstr "ÐЕКОРЕКТÐИЙ СИМВОЛ" -#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 +#: src/objdump.c:378 src/readelf.c:2118 src/readelf.c:2312 msgid "INVALID SECTION" msgstr "ÐЕКОРЕКТÐИЙ РОЗДІЛ" @@ -4037,151 +4037,151 @@ msgid "Print information from ELF file in human-readable form." msgstr "Виводити відомоÑÑ‚Ñ– з файла ELF у придатному Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–." #. Look up once. -#: src/readelf.c:328 +#: src/readelf.c:339 msgid "yes" msgstr "так" -#: src/readelf.c:329 +#: src/readelf.c:340 msgid "no" msgstr "ні" -#: src/readelf.c:518 +#: src/readelf.c:532 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "Ðевідомий діагноÑтичний розділ DWARF «%s».\n" -#: src/readelf.c:589 src/readelf.c:700 +#: src/readelf.c:603 src/readelf.c:714 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "не вдалоÑÑ Ñтворити деÑкриптор Elf: %s" -#: src/readelf.c:596 src/readelf.c:923 src/strip.c:1133 +#: src/readelf.c:610 src/readelf.c:937 src/strip.c:1133 #, c-format msgid "cannot determine number of sections: %s" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділів: %s" -#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 +#: src/readelf.c:628 src/readelf.c:1247 src/readelf.c:1455 #, c-format msgid "cannot get section: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ розділ: %s" -#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12515 +#: src/readelf.c:637 src/readelf.c:1254 src/readelf.c:1463 src/readelf.c:12623 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:481 src/unstrip.c:600 -#: src/unstrip.c:621 src/unstrip.c:660 src/unstrip.c:871 src/unstrip.c:1202 -#: src/unstrip.c:1394 src/unstrip.c:1458 src/unstrip.c:1632 src/unstrip.c:1766 -#: src/unstrip.c:1909 src/unstrip.c:2004 +#: src/unstrip.c:621 src/unstrip.c:661 src/unstrip.c:873 src/unstrip.c:1204 +#: src/unstrip.c:1331 src/unstrip.c:1355 src/unstrip.c:1398 src/unstrip.c:1462 +#: src/unstrip.c:1636 src/unstrip.c:1770 src/unstrip.c:1913 src/unstrip.c:2008 #, c-format msgid "cannot get section header: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу: %s" -#: src/readelf.c:631 +#: src/readelf.c:645 #, c-format msgid "cannot get section name" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву розділу" -#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10378 src/readelf.c:10480 -#: src/readelf.c:10658 +#: src/readelf.c:654 src/readelf.c:6560 src/readelf.c:10486 src/readelf.c:10588 +#: src/readelf.c:10766 #, c-format msgid "cannot get %s content: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані %s: %s" -#: src/readelf.c:656 +#: src/readelf.c:670 #, c-format msgid "cannot create temp file '%s'" msgstr "не вдалоÑÑ Ñтворити файл тимчаÑових даних «%s»" -#: src/readelf.c:665 +#: src/readelf.c:679 #, c-format msgid "cannot write section data" msgstr "не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати дані розділу" -#: src/readelf.c:671 src/readelf.c:688 src/readelf.c:717 +#: src/readelf.c:685 src/readelf.c:702 src/readelf.c:731 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÐµÑкриптора Elf: %s" -#: src/readelf.c:678 +#: src/readelf.c:692 #, c-format msgid "error while rewinding file descriptor" msgstr "помилка під Ñ‡Ð°Ñ Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ початкового Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла" -#: src/readelf.c:712 +#: src/readelf.c:726 #, c-format msgid "'%s' is not an archive, cannot print archive index" msgstr "«%s» не Ñ” архівом, Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° архіву неможливе" -#: src/readelf.c:816 +#: src/readelf.c:830 #, c-format msgid "cannot stat input file" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані з вхідного файла за допомогою stat" -#: src/readelf.c:818 +#: src/readelf.c:832 #, c-format msgid "input file is empty" msgstr "вхідний файл Ñ” порожнім" -#: src/readelf.c:820 +#: src/readelf.c:834 #, c-format msgid "failed reading '%s': %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ «%s»: %s" -#: src/readelf.c:849 +#: src/readelf.c:863 #, c-format msgid "No such section '%s' in '%s'" msgstr "У «%2$s» немає розділу «%1$s»" -#: src/readelf.c:908 +#: src/readelf.c:922 #, c-format msgid "cannot read ELF header: %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ заголовок ELF: %s" -#: src/readelf.c:916 +#: src/readelf.c:930 #, c-format msgid "cannot create EBL handle" msgstr "не вдалоÑÑ Ñтворити деÑкриптор EBL" -#: src/readelf.c:929 +#: src/readelf.c:943 #, c-format msgid "cannot determine number of program headers: %s" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ заголовків програми: %s" -#: src/readelf.c:961 +#: src/readelf.c:975 #, fuzzy, c-format msgid "cannot read ELF: %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ %s: %s" -#: src/readelf.c:1022 +#: src/readelf.c:1036 msgid "NONE (None)" msgstr "NONE (Ðемає)" -#: src/readelf.c:1023 +#: src/readelf.c:1037 msgid "REL (Relocatable file)" msgstr "REL (Придатний до переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»)" -#: src/readelf.c:1024 +#: src/readelf.c:1038 msgid "EXEC (Executable file)" msgstr "EXEC (Виконуваний файл)" -#: src/readelf.c:1025 +#: src/readelf.c:1039 msgid "DYN (Shared object file)" msgstr "DYN (Файл об’єктів Ñпільного викориÑтаннÑ)" -#: src/readelf.c:1026 +#: src/readelf.c:1040 msgid "CORE (Core file)" msgstr "CORE (Файл Ñдра)" -#: src/readelf.c:1031 +#: src/readelf.c:1045 #, c-format msgid "OS Specific: (%x)\n" msgstr "ОС-Ñпецифічне: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1033 +#: src/readelf.c:1047 #, c-format msgid "Processor Specific: (%x)\n" msgstr "Специфічне Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора: (%x)\n" -#: src/readelf.c:1043 +#: src/readelf.c:1057 msgid "" "ELF Header:\n" " Magic: " @@ -4189,7 +4189,7 @@ msgstr "" "Заголовок ELF:\n" " Magic: " -#: src/readelf.c:1047 +#: src/readelf.c:1061 #, c-format msgid "" "\n" @@ -4198,118 +4198,123 @@ msgstr "" "\n" " КлаÑ: %s\n" -#: src/readelf.c:1052 +#: src/readelf.c:1066 #, c-format msgid " Data: %s\n" msgstr " Дані: %s\n" -#: src/readelf.c:1058 +#: src/readelf.c:1072 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " ВерÑÑ–Ñ Ident: %hhd %s\n" -#: src/readelf.c:1060 src/readelf.c:1077 +#: src/readelf.c:1074 src/readelf.c:1096 msgid "(current)" msgstr "(поточний)" -#: src/readelf.c:1064 +#: src/readelf.c:1078 #, c-format msgid " OS/ABI: %s\n" msgstr " ОС/ABI: %s\n" -#: src/readelf.c:1067 +#: src/readelf.c:1081 #, c-format msgid " ABI Version: %hhd\n" msgstr " ВерÑÑ–Ñ ABI: %hhd\n" -#: src/readelf.c:1070 +#: src/readelf.c:1084 msgid " Type: " msgstr " Тип: " -#: src/readelf.c:1073 +#: src/readelf.c:1089 #, c-format msgid " Machine: %s\n" msgstr " Ðрхітектура: %s\n" -#: src/readelf.c:1075 +#: src/readelf.c:1091 +#, fuzzy, c-format +msgid " Machine: <unknown>: 0x%x\n" +msgstr " Ðрхітектура: %s\n" + +#: src/readelf.c:1094 #, c-format msgid " Version: %d %s\n" msgstr " ВерÑÑ–Ñ: %d %s\n" -#: src/readelf.c:1079 +#: src/readelf.c:1098 #, c-format msgid " Entry point address: %#<PRIx64>\n" msgstr " ÐдреÑа вхідної точки: %#<PRIx64>\n" -#: src/readelf.c:1082 +#: src/readelf.c:1101 #, c-format msgid " Start of program headers: %<PRId64> %s\n" msgstr " Початок заголовків програм: %<PRId64> %s\n" -#: src/readelf.c:1083 src/readelf.c:1086 +#: src/readelf.c:1102 src/readelf.c:1105 msgid "(bytes into file)" msgstr "(байтів у файл)" -#: src/readelf.c:1085 +#: src/readelf.c:1104 #, c-format msgid " Start of section headers: %<PRId64> %s\n" msgstr " Початок заголовків розділів: %<PRId64> %s\n" -#: src/readelf.c:1088 +#: src/readelf.c:1107 #, c-format msgid " Flags: %s\n" msgstr " Прапорці: %s\n" -#: src/readelf.c:1091 +#: src/readelf.c:1110 #, c-format msgid " Size of this header: %<PRId16> %s\n" msgstr " Розмір цього заголовка: %<PRId16> %s\n" -#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 +#: src/readelf.c:1111 src/readelf.c:1114 src/readelf.c:1131 msgid "(bytes)" msgstr "(байтів)" -#: src/readelf.c:1094 +#: src/readelf.c:1113 #, c-format msgid " Size of program header entries: %<PRId16> %s\n" msgstr " Розмір запиÑів заголовка програми: %<PRId16> %s\n" -#: src/readelf.c:1097 +#: src/readelf.c:1116 #, c-format msgid " Number of program headers entries: %<PRId16>" msgstr " КількіÑÑ‚ÑŒ запиÑів заголовків програми: %<PRId16>" -#: src/readelf.c:1104 +#: src/readelf.c:1123 #, c-format msgid " (%<PRIu32> in [0].sh_info)" msgstr " (%<PRIu32> у [0].sh_info)" -#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 +#: src/readelf.c:1126 src/readelf.c:1143 src/readelf.c:1157 msgid " ([0] not available)" msgstr " ([0] недоÑтупний)" -#: src/readelf.c:1111 +#: src/readelf.c:1130 #, c-format msgid " Size of section header entries: %<PRId16> %s\n" msgstr " Розмір запиÑів заголовків розділів: %<PRId16> %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1133 #, c-format msgid " Number of section headers entries: %<PRId16>" msgstr " КількіÑÑ‚ÑŒ запиÑів заголовків розділів: %<PRId16>" -#: src/readelf.c:1121 +#: src/readelf.c:1140 #, c-format msgid " (%<PRIu32> in [0].sh_size)" msgstr " (%<PRIu32> у [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1134 +#: src/readelf.c:1153 #, c-format msgid " (%<PRIu32> in [0].sh_link)" msgstr " (%<PRIu32> у [0].sh_link)" -#: src/readelf.c:1142 +#: src/readelf.c:1161 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4318,7 +4323,7 @@ msgstr "" " Ð†Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків: XINDEX%s\n" "\n" -#: src/readelf.c:1146 +#: src/readelf.c:1165 #, c-format msgid "" " Section header string table index: %<PRId16>\n" @@ -4327,12 +4332,12 @@ msgstr "" " Ð†Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків: %<PRId16>\n" "\n" -#: src/readelf.c:1193 src/readelf.c:1401 +#: src/readelf.c:1212 src/readelf.c:1420 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділів: %s" -#: src/readelf.c:1196 +#: src/readelf.c:1215 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#<PRIx64>:\n" @@ -4341,16 +4346,16 @@ msgstr "" "ВиÑвлено %d заголовків розділів, Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ — %#<PRIx64>:\n" "\n" -#: src/readelf.c:1205 +#: src/readelf.c:1224 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків" -#: src/readelf.c:1208 +#: src/readelf.c:1227 msgid "Section Headers:" msgstr "Заголовки розділів:" -#: src/readelf.c:1211 +#: src/readelf.c:1230 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4358,7 +4363,7 @@ msgstr "" "[â„– ] Ðазва Тип Ðдр Змі Розмір ES Прап Lk " "Інф Al" -#: src/readelf.c:1213 +#: src/readelf.c:1232 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4366,35 +4371,35 @@ msgstr "" "[â„– ] Ðазва Тип Ðдр Змі Розмір ES " "Прап Lk Інф Al" -#: src/readelf.c:1218 +#: src/readelf.c:1237 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1220 +#: src/readelf.c:1239 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1296 +#: src/readelf.c:1315 #, fuzzy, c-format msgid "bad compression header for section %zd: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу %zu: %s" -#: src/readelf.c:1307 +#: src/readelf.c:1326 #, fuzzy, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d: %s" -#: src/readelf.c:1325 +#: src/readelf.c:1344 msgid "Program Headers:" msgstr "Заголовки програми:" -#: src/readelf.c:1327 +#: src/readelf.c:1346 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " Тип Зміщен ВіртÐдр ФізÐдр РозмФайл РозмПам Пра Вирів" -#: src/readelf.c:1330 +#: src/readelf.c:1349 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4402,12 +4407,12 @@ msgstr "" " Тип Зміщен ВіртÐдр ФізÐдр " "РозмФайлРозмПам Пра Вирів" -#: src/readelf.c:1387 +#: src/readelf.c:1406 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[Запит щодо інтерпретатора програми: %s]\n" -#: src/readelf.c:1414 +#: src/readelf.c:1433 msgid "" "\n" " Section to Segment mapping:\n" @@ -4417,12 +4422,12 @@ msgstr "" " Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² на Ñегмент:\n" " Розділи Ñегмента..." -#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 +#: src/readelf.c:1444 src/unstrip.c:2067 src/unstrip.c:2109 src/unstrip.c:2116 #, c-format msgid "cannot get program header: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок програми: %s" -#: src/readelf.c:1571 +#: src/readelf.c:1590 #, c-format msgid "" "\n" @@ -4440,7 +4445,7 @@ msgstr[2] "" "\n" "Група розділів COMDAT [%2zu] «%s» з підпиÑом «%s» міÑтить %zu запиÑів:\n" -#: src/readelf.c:1576 +#: src/readelf.c:1595 #, c-format msgid "" "\n" @@ -4458,31 +4463,31 @@ msgstr[2] "" "\n" "Група розділів [%2zu] «%s» з підпиÑом «%s» міÑтить %zu запиÑів:\n" -#: src/readelf.c:1584 +#: src/readelf.c:1603 msgid "<INVALID SYMBOL>" msgstr "<ÐЕКОРЕКТÐИЙ СИМВОЛ>" -#: src/readelf.c:1598 +#: src/readelf.c:1617 msgid "<INVALID SECTION>" msgstr "<ÐЕКОРЕКТÐИЙ РОЗДІЛ>" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12386 -#: src/readelf.c:12393 src/readelf.c:12437 src/readelf.c:12444 +#: src/readelf.c:1640 src/readelf.c:2367 src/readelf.c:3468 src/readelf.c:12494 +#: src/readelf.c:12501 src/readelf.c:12545 src/readelf.c:12552 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 +#: src/readelf.c:1645 src/readelf.c:2372 src/readelf.c:3473 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу: %s" -#: src/readelf.c:1770 src/readelf.c:2420 src/readelf.c:2678 src/readelf.c:2754 -#: src/readelf.c:3058 src/readelf.c:3132 src/readelf.c:5327 +#: src/readelf.c:1789 src/readelf.c:2439 src/readelf.c:2697 src/readelf.c:2773 +#: src/readelf.c:3077 src/readelf.c:3151 src/readelf.c:5348 #, c-format msgid "invalid sh_link value in section %zu" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_link у розділі %zu" -#: src/readelf.c:1773 +#: src/readelf.c:1792 #, c-format msgid "" "\n" @@ -4505,36 +4510,36 @@ msgstr[2] "" "Динамічний Ñегмент міÑтить %lu запиÑів:\n" " Ðдр: %#0*<PRIx64> ЗміщеннÑ: %#08<PRIx64> ПоÑ. на розділ: [%2u] '%s'\n" -#: src/readelf.c:1783 +#: src/readelf.c:1802 msgid " Type Value\n" msgstr " Тип ЗначеннÑ\n" -#: src/readelf.c:1807 +#: src/readelf.c:1826 #, c-format msgid "Shared library: [%s]\n" msgstr "Спільна бібліотека: [%s]\n" -#: src/readelf.c:1812 +#: src/readelf.c:1831 #, c-format msgid "Library soname: [%s]\n" msgstr "Ðазва so бібліотеки: [%s]\n" -#: src/readelf.c:1817 +#: src/readelf.c:1836 #, c-format msgid "Library rpath: [%s]\n" msgstr "Rpath бібліотеки: [%s]\n" -#: src/readelf.c:1822 +#: src/readelf.c:1841 #, c-format msgid "Library runpath: [%s]\n" msgstr "Runpath бібліотеки: [%s]\n" -#: src/readelf.c:1842 +#: src/readelf.c:1861 #, c-format msgid "%<PRId64> (bytes)\n" msgstr "%<PRId64> (байт)\n" -#: src/readelf.c:1955 src/readelf.c:2145 +#: src/readelf.c:1974 src/readelf.c:2164 #, c-format msgid "" "\n" @@ -4543,7 +4548,7 @@ msgstr "" "\n" "Ðекоректна Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів за зміщеннÑм %#0<PRIx64>\n" -#: src/readelf.c:1973 src/readelf.c:2163 +#: src/readelf.c:1992 src/readelf.c:2182 #, c-format msgid "" "\n" @@ -4572,7 +4577,7 @@ msgstr[2] "" #. The .rela.dyn section does not refer to a specific section but #. instead of section index zero. Do not try to print a section #. name. -#: src/readelf.c:1988 src/readelf.c:2178 +#: src/readelf.c:2007 src/readelf.c:2197 #, c-format msgid "" "\n" @@ -4590,30 +4595,30 @@ msgstr[2] "" "\n" "Розділ переÑÑƒÐ²Ð°Ð½Ð½Ñ [%2u] «%s» за зміщеннÑм %#0<PRIx64> міÑтить %d запиÑів:\n" -#: src/readelf.c:1998 +#: src/readelf.c:2017 msgid " Offset Type Value Name\n" msgstr " Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¢Ð¸Ð¿ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва\n" -#: src/readelf.c:2000 +#: src/readelf.c:2019 msgid " Offset Type Value Name\n" msgstr " Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¢Ð¸Ð¿ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва\n" -#: src/readelf.c:2053 src/readelf.c:2064 src/readelf.c:2077 src/readelf.c:2098 -#: src/readelf.c:2110 src/readelf.c:2244 src/readelf.c:2256 src/readelf.c:2270 -#: src/readelf.c:2292 src/readelf.c:2305 +#: src/readelf.c:2072 src/readelf.c:2083 src/readelf.c:2096 src/readelf.c:2117 +#: src/readelf.c:2129 src/readelf.c:2263 src/readelf.c:2275 src/readelf.c:2289 +#: src/readelf.c:2311 src/readelf.c:2324 msgid "<INVALID RELOC>" msgstr "<ÐЕКОРЕКТÐЕ ПЕРЕМІЩЕÐÐЯ>" -#: src/readelf.c:2188 +#: src/readelf.c:2207 msgid " Offset Type Value Addend Name\n" msgstr " Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¢Ð¸Ð¿ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва додатка\n" -#: src/readelf.c:2190 +#: src/readelf.c:2209 msgid " Offset Type Value Addend Name\n" msgstr "" " Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¢Ð¸Ð¿ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва додатка\n" -#: src/readelf.c:2428 +#: src/readelf.c:2447 #, c-format msgid "" "\n" @@ -4631,7 +4636,7 @@ msgstr[2] "" "\n" "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів [%2u] «%s» міÑтить %u запиÑів:\n" -#: src/readelf.c:2433 +#: src/readelf.c:2452 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" @@ -4639,33 +4644,33 @@ msgstr[0] " %lu лок. Ñимвол Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів: [%2u] « msgstr[1] " %lu лок. Ñимволи Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів: [%2u] «%s»\n" msgstr[2] " %lu лок. Ñимволів Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів: [%2u] «%s»\n" -#: src/readelf.c:2441 +#: src/readelf.c:2460 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " â„–â„– Знач. Роз. Тип Зв’Ñз Вид. Інд Ðазва\n" -#: src/readelf.c:2443 +#: src/readelf.c:2462 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " â„–â„– Знач. Роз. Тип Зв’Ñз Вид. Інд Ðазва\n" -#: src/readelf.c:2463 +#: src/readelf.c:2482 #, c-format msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" -#: src/readelf.c:2551 +#: src/readelf.c:2570 #, c-format msgid "bad dynamic symbol" msgstr "помилковий динамічний Ñимвол" -#: src/readelf.c:2633 +#: src/readelf.c:2652 msgid "none" msgstr "немає" -#: src/readelf.c:2650 +#: src/readelf.c:2669 msgid "| <unknown>" msgstr "| <невідомо>" -#: src/readelf.c:2681 +#: src/readelf.c:2700 #, c-format msgid "" "\n" @@ -4688,17 +4693,17 @@ msgstr[2] "" "Розділ потреби у верÑÑ–ÑÑ… [%2u] «%s», що міÑтить %d запиÑів:\n" " Ðдр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: [%2u] «%s»\n" -#: src/readelf.c:2702 +#: src/readelf.c:2721 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: ВерÑÑ–Ñ: %hu Файл: %s Кть: %hu\n" -#: src/readelf.c:2715 +#: src/readelf.c:2734 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Ðазва: %s Прап: %s ВерÑÑ–Ñ: %hu\n" -#: src/readelf.c:2758 +#: src/readelf.c:2777 #, c-format msgid "" "\n" @@ -4721,18 +4726,18 @@ msgstr[2] "" "Розділ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— [%2u] «%s», що міÑтить %d запиÑів:\n" " Ðдр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: [%2u] «%s»\n" -#: src/readelf.c:2786 +#: src/readelf.c:2805 #, c-format msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" msgstr " %#06x: ВерÑÑ–Ñ: %hd Прап.: %s ІндекÑ: %hd К-Ñ‚ÑŒ: %hd Ðазва: %s\n" -#: src/readelf.c:2801 +#: src/readelf.c:2820 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: батьківÑький %d: %s\n" #. Print the header. -#: src/readelf.c:3062 +#: src/readelf.c:3081 #, c-format msgid "" "\n" @@ -4755,15 +4760,15 @@ msgstr[2] "" "Розділ Ñимволів верÑій [%2u] «%s», що міÑтить %d запиÑів:\n" " Ðдр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: [%2u] «%s»" -#: src/readelf.c:3090 +#: src/readelf.c:3109 msgid " 0 *local* " msgstr " 0 *локальний* " -#: src/readelf.c:3095 +#: src/readelf.c:3114 msgid " 1 *global* " msgstr " 1 *загальний* " -#: src/readelf.c:3137 +#: src/readelf.c:3156 #, c-format msgid "" "\n" @@ -4791,22 +4796,22 @@ msgstr[2] "" "блоками):\n" " Ðдр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: [%2u] «%s»\n" -#: src/readelf.c:3159 +#: src/readelf.c:3178 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " Довжина Ðомер % від загал. ПокриттÑ\n" -#: src/readelf.c:3161 +#: src/readelf.c:3180 #, c-format msgid " 0 %6<PRIu32> %5.1f%%\n" msgstr " 0 %6<PRIu32> %5.1f%%\n" -#: src/readelf.c:3168 +#: src/readelf.c:3187 #, c-format msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" -#: src/readelf.c:3181 +#: src/readelf.c:3200 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4815,37 +4820,37 @@ msgstr "" " Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ÐºÑ–Ð»ÑŒÐºÑ–ÑÑ‚ÑŒ теÑтів: уÑпішний пошук: %f\n" "\t\t\t неуÑпішний пошук: %f\n" -#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 +#: src/readelf.c:3218 src/readelf.c:3282 src/readelf.c:3348 #, c-format msgid "cannot get data for section %d: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d: %s" -#: src/readelf.c:3207 +#: src/readelf.c:3226 #, c-format msgid "invalid data in sysv.hash section %d" msgstr "некоректні дані у розділі sysv.hash %d" -#: src/readelf.c:3236 +#: src/readelf.c:3255 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "некоректні дані у розділі sysv.hash %d" -#: src/readelf.c:3271 +#: src/readelf.c:3290 #, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "некоректні дані у розділі sysv.hash64 %d" -#: src/readelf.c:3302 +#: src/readelf.c:3321 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "некоректні дані у розділі sysv.hash64 %d" -#: src/readelf.c:3338 +#: src/readelf.c:3357 #, c-format msgid "invalid data in gnu.hash section %d" msgstr "некоректні дані у розділі gnu.hash %d" -#: src/readelf.c:3405 +#: src/readelf.c:3424 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4855,7 +4860,7 @@ msgstr "" " Розмір бітової маÑки: %zu байтів %<PRIuFAST32>%% вÑтановлених бітів зÑув " "2-го хешу: %u\n" -#: src/readelf.c:3494 +#: src/readelf.c:3513 #, c-format msgid "" "\n" @@ -4876,7 +4881,7 @@ msgstr[2] "" "Розділ ÑпиÑку бібліотек [%2zu] «%s» за зміщеннÑм %#0<PRIx64> міÑтить %d " "запиÑів:\n" -#: src/readelf.c:3508 +#: src/readelf.c:3527 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4884,7 +4889,7 @@ msgstr "" " Бібліотека ЧаÑовий штамп ВерÑÑ–Ñ Ñуми " "Прапорці" -#: src/readelf.c:3558 +#: src/readelf.c:3579 #, c-format msgid "" "\n" @@ -4895,102 +4900,102 @@ msgstr "" "Розділ атрибутів об’єктів [%2zu] «%s» з %<PRIu64> байтів за зміщеннÑм " "%#0<PRIx64>:\n" -#: src/readelf.c:3575 +#: src/readelf.c:3596 msgid " Owner Size\n" msgstr " ВлаÑник Розмір\n" -#: src/readelf.c:3604 +#: src/readelf.c:3625 #, c-format msgid " %-13s %4<PRIu32>\n" msgstr " %-13s %4<PRIu32>\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3643 +#: src/readelf.c:3664 #, c-format msgid " %-4u %12<PRIu32>\n" msgstr " %-4u %12<PRIu32>\n" #. Tag_File -#: src/readelf.c:3648 +#: src/readelf.c:3669 #, c-format msgid " File: %11<PRIu32>\n" msgstr " Файл: %11<PRIu32>\n" -#: src/readelf.c:3697 +#: src/readelf.c:3718 #, c-format msgid " %s: %<PRId64>, %s\n" msgstr " %s: %<PRId64>, %s\n" -#: src/readelf.c:3700 +#: src/readelf.c:3721 #, c-format msgid " %s: %<PRId64>\n" msgstr " %s: %<PRId64>\n" -#: src/readelf.c:3703 +#: src/readelf.c:3724 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3713 +#: src/readelf.c:3734 #, c-format msgid " %u: %<PRId64>\n" msgstr " %u: %<PRId64>\n" -#: src/readelf.c:3716 +#: src/readelf.c:3737 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3786 +#: src/readelf.c:3807 #, fuzzy, c-format msgid "sprintf failure" msgstr "помилка mprotect" -#: src/readelf.c:4268 +#: src/readelf.c:4289 msgid "empty block" msgstr "порожній блок" -#: src/readelf.c:4271 +#: src/readelf.c:4292 #, c-format msgid "%zu byte block:" msgstr "%zu-байтовий блок:" -#: src/readelf.c:4749 +#: src/readelf.c:4770 #, fuzzy, c-format msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n" msgstr "%*s[%4<PRIuMAX>] %s <ОБРІЗÐÐО>\n" -#: src/readelf.c:4813 +#: src/readelf.c:4834 #, c-format msgid "%s %#<PRIx64> used with different address sizes" msgstr "%s %#<PRIx64> викориÑтано з різними розмірами адреÑ" -#: src/readelf.c:4820 +#: src/readelf.c:4841 #, c-format msgid "%s %#<PRIx64> used with different offset sizes" msgstr "%s %#<PRIx64> викориÑтано з різними розмірами зміщень" -#: src/readelf.c:4827 +#: src/readelf.c:4848 #, c-format msgid "%s %#<PRIx64> used with different base addresses" msgstr "%s %#<PRIx64> викориÑтано з різними базовими адреÑами" -#: src/readelf.c:4834 +#: src/readelf.c:4855 #, fuzzy, c-format msgid "%s %#<PRIx64> used with different attribute %s and %s" msgstr "%s %#<PRIx64> викориÑтано з різними розмірами адреÑ" -#: src/readelf.c:4931 +#: src/readelf.c:4952 #, c-format msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n" msgstr " [%6tx] <ÐЕВИКОРИСТОВУВÐÐІ ДÐÐІ У РЕШТІ РОЗДІЛУ>\n" -#: src/readelf.c:4939 +#: src/readelf.c:4960 #, c-format msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n" msgstr " [%6tx] <ÐЕВИКОРИСТОВУВÐÐІ ДÐÐІ> ... %<PRIu64> байтів ...\n" -#: src/readelf.c:5017 +#: src/readelf.c:5038 #, c-format msgid "" "\n" @@ -5001,7 +5006,7 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n" " [ Код]\n" -#: src/readelf.c:5025 +#: src/readelf.c:5046 #, c-format msgid "" "\n" @@ -5010,20 +5015,20 @@ msgstr "" "\n" "Розділ Ñкорочень за зміщеннÑм %<PRIu64>:\n" -#: src/readelf.c:5038 +#: src/readelf.c:5059 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ ÑкороченнÑ: %s\n" -#: src/readelf.c:5054 +#: src/readelf.c:5075 #, c-format msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n" msgstr " [%5u] зміщеннÑ: %<PRId64>, дочірній: %s, мітка: %s\n" -#: src/readelf.c:5087 src/readelf.c:5396 src/readelf.c:5563 src/readelf.c:5948 -#: src/readelf.c:6549 src/readelf.c:8199 src/readelf.c:8885 src/readelf.c:9321 -#: src/readelf.c:9566 src/readelf.c:9732 src/readelf.c:10119 -#: src/readelf.c:10179 +#: src/readelf.c:5108 src/readelf.c:5417 src/readelf.c:5584 src/readelf.c:5969 +#: src/readelf.c:6570 src/readelf.c:8307 src/readelf.c:8993 src/readelf.c:9429 +#: src/readelf.c:9674 src/readelf.c:9840 src/readelf.c:10227 +#: src/readelf.c:10287 #, c-format msgid "" "\n" @@ -5032,56 +5037,56 @@ msgstr "" "\n" "Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n" -#: src/readelf.c:5100 +#: src/readelf.c:5121 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу: %s" -#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8930 +#: src/readelf.c:5221 src/readelf.c:5245 src/readelf.c:5629 src/readelf.c:9038 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr "" "\n" " Довжина: %6<PRIu64>\n" -#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8943 +#: src/readelf.c:5223 src/readelf.c:5260 src/readelf.c:5642 src/readelf.c:9051 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " верÑÑ–Ñ DWARF: %6<PRIuFAST16>\n" -#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8952 +#: src/readelf.c:5224 src/readelf.c:5269 src/readelf.c:5651 src/readelf.c:9060 #, fuzzy, c-format msgid " Address size: %8<PRIu64>\n" msgstr " Розмір адреÑи: %6<PRIu64>\n" -#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8962 +#: src/readelf.c:5226 src/readelf.c:5279 src/readelf.c:5661 src/readelf.c:9070 #, fuzzy, c-format msgid " Segment size: %8<PRIu64>\n" msgstr "" " Розмір Ñегмента: %6<PRIu64>\n" "\n" -#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8947 src/readelf.c:10311 +#: src/readelf.c:5264 src/readelf.c:5646 src/readelf.c:9055 src/readelf.c:10419 #, fuzzy, c-format msgid "Unknown version" msgstr "невідома верÑÑ–Ñ" -#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8957 +#: src/readelf.c:5274 src/readelf.c:5487 src/readelf.c:5656 src/readelf.c:9065 #, c-format msgid "unsupported address size" msgstr "непідтримуваний розмір адреÑи" -#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8967 +#: src/readelf.c:5285 src/readelf.c:5498 src/readelf.c:5666 src/readelf.c:9075 #, c-format msgid "unsupported segment size" msgstr "непідтримуваний розмір Ñегмента" -#: src/readelf.c:5317 src/readelf.c:5391 +#: src/readelf.c:5338 src/readelf.c:5412 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані get .debug_aranges: %s" -#: src/readelf.c:5332 +#: src/readelf.c:5353 #, c-format msgid "" "\n" @@ -5099,12 +5104,12 @@ msgstr[2] "" "\n" "Розділ DWARF [%2zu] «%s» за зміщеннÑм %#<PRIx64> міÑтить %zu запиÑів:\n" -#: src/readelf.c:5363 +#: src/readelf.c:5384 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5365 +#: src/readelf.c:5386 #, c-format msgid "" " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n" @@ -5112,7 +5117,7 @@ msgstr "" " [%*zu] початок: %0#*<PRIx64>, довжина: %5<PRIu64>, Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU DIE: " "%6<PRId64>\n" -#: src/readelf.c:5409 src/readelf.c:8226 +#: src/readelf.c:5430 src/readelf.c:8334 #, c-format msgid "" "\n" @@ -5121,13 +5126,13 @@ msgstr "" "\n" "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð·Ð° зміщеннÑм %zu:\n" -#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 -#: src/readelf.c:8911 +#: src/readelf.c:5434 src/readelf.c:5610 src/readelf.c:6594 src/readelf.c:8345 +#: src/readelf.c:9019 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "некоректні дані у розділі [%zu] «%s»" -#: src/readelf.c:5429 +#: src/readelf.c:5450 #, c-format msgid "" "\n" @@ -5136,27 +5141,27 @@ msgstr "" "\n" " Довжина: %6<PRIu64>\n" -#: src/readelf.c:5441 +#: src/readelf.c:5462 #, c-format msgid " DWARF version: %6<PRIuFAST16>\n" msgstr " верÑÑ–Ñ DWARF: %6<PRIuFAST16>\n" -#: src/readelf.c:5445 +#: src/readelf.c:5466 #, c-format msgid "unsupported aranges version" msgstr "непідтримувана верÑÑ–Ñ aranges" -#: src/readelf.c:5456 +#: src/readelf.c:5477 #, c-format msgid " CU offset: %6<PRIx64>\n" msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU: %6<PRIx64>\n" -#: src/readelf.c:5462 +#: src/readelf.c:5483 #, c-format msgid " Address size: %6<PRIu64>\n" msgstr " Розмір адреÑи: %6<PRIu64>\n" -#: src/readelf.c:5473 +#: src/readelf.c:5494 #, c-format msgid "" " Segment size: %6<PRIu64>\n" @@ -5165,111 +5170,111 @@ msgstr "" " Розмір Ñегмента: %6<PRIu64>\n" "\n" -#: src/readelf.c:5528 +#: src/readelf.c:5549 #, c-format msgid " %zu padding bytes\n" msgstr " %zu байтів доповненнÑ\n" -#: src/readelf.c:5572 +#: src/readelf.c:5593 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані .debug_ranges: %s" -#: src/readelf.c:5595 src/readelf.c:8917 +#: src/readelf.c:5616 src/readelf.c:9025 #, fuzzy, c-format msgid "" "Table at Offset 0x%<PRIx64>:\n" "\n" msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ .debug_line: 0x%<PRIx64>\n" -#: src/readelf.c:5650 src/readelf.c:8972 +#: src/readelf.c:5671 src/readelf.c:9080 #, fuzzy, c-format msgid " Offset entries: %8<PRIu64>\n" msgstr " Довжина зміщеннÑ: %<PRIu8>\n" -#: src/readelf.c:5666 src/readelf.c:8988 +#: src/readelf.c:5687 src/readelf.c:9096 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8990 +#: src/readelf.c:5689 src/readelf.c:9098 #, c-format msgid " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5674 src/readelf.c:8996 +#: src/readelf.c:5695 src/readelf.c:9104 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5685 src/readelf.c:9007 +#: src/readelf.c:5706 src/readelf.c:9115 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5689 src/readelf.c:9011 +#: src/readelf.c:5710 src/readelf.c:9119 #, fuzzy, c-format msgid " Offsets starting at 0x%<PRIx64>:\n" msgstr " ЗміщеннÑ: 0x%<PRIx64>\n" -#: src/readelf.c:5741 +#: src/readelf.c:5762 #, fuzzy, c-format msgid "invalid range list data" msgstr "некоректні дані" -#: src/readelf.c:5926 src/readelf.c:9299 +#: src/readelf.c:5947 src/readelf.c:9407 #, fuzzy, c-format msgid "" " %zu padding bytes\n" "\n" msgstr " %zu байтів доповненнÑ\n" -#: src/readelf.c:5943 +#: src/readelf.c:5964 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані .debug_ranges: %s" -#: src/readelf.c:5979 src/readelf.c:9354 +#: src/readelf.c:6000 src/readelf.c:9462 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5981 src/readelf.c:9356 +#: src/readelf.c:6002 src/readelf.c:9464 #, c-format msgid "" "\n" " CU [%6<PRIx64>] base: " msgstr "" -#: src/readelf.c:5990 src/readelf.c:9382 src/readelf.c:9408 +#: src/readelf.c:6011 src/readelf.c:9490 src/readelf.c:9516 #, c-format msgid " [%6tx] <INVALID DATA>\n" msgstr " [%6tx] <ÐЕКОРЕКТÐІ ДÐÐІ>\n" -#: src/readelf.c:6011 src/readelf.c:9488 +#: src/readelf.c:6032 src/readelf.c:9596 #, fuzzy, c-format msgid "" " [%6tx] base address\n" " " msgstr " [%6tx] базова адреÑа %s\n" -#: src/readelf.c:6019 src/readelf.c:9496 +#: src/readelf.c:6040 src/readelf.c:9604 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] порожній ÑпиÑок\n" -#: src/readelf.c:6274 +#: src/readelf.c:6295 msgid " <INVALID DATA>\n" msgstr " <ÐЕКОРЕКТÐІ ДÐÐІ>\n" -#: src/readelf.c:6527 +#: src/readelf.c:6548 #, c-format msgid "cannot get ELF: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ELF: %s" -#: src/readelf.c:6545 +#: src/readelf.c:6566 #, c-format msgid "" "\n" @@ -5278,7 +5283,7 @@ msgstr "" "\n" "Розділ відомоÑтей щодо вікна викликів [%2zu] «%s» за зміщеннÑм %#<PRIx64>:\n" -#: src/readelf.c:6595 +#: src/readelf.c:6616 #, c-format msgid "" "\n" @@ -5287,65 +5292,65 @@ msgstr "" "\n" " [%6tx] нульовий переривач\n" -#: src/readelf.c:6696 src/readelf.c:6850 +#: src/readelf.c:6717 src/readelf.c:6871 #, c-format msgid "invalid augmentation length" msgstr "некоректна довжина збільшеннÑ" -#: src/readelf.c:6711 +#: src/readelf.c:6732 msgid "FDE address encoding: " msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð´Ñ€ÐµÑи FDE: " -#: src/readelf.c:6717 +#: src/readelf.c:6738 msgid "LSDA pointer encoding: " msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° LSDA: " -#: src/readelf.c:6827 +#: src/readelf.c:6848 #, c-format msgid " (offset: %#<PRIx64>)" msgstr " (зміщеннÑ: %#<PRIx64>)" -#: src/readelf.c:6834 +#: src/readelf.c:6855 #, c-format msgid " (end offset: %#<PRIx64>)" msgstr " (Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ кінцÑ: %#<PRIx64>)" -#: src/readelf.c:6871 +#: src/readelf.c:6892 #, c-format msgid " %-26sLSDA pointer: %#<PRIx64>\n" msgstr " %-26sвказівник LSDA: %#<PRIx64>\n" -#: src/readelf.c:6956 +#: src/readelf.c:6977 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute code: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ код атрибута: %s" -#: src/readelf.c:6966 +#: src/readelf.c:6987 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute form: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ форму атрибута: %s" -#: src/readelf.c:6988 +#: src/readelf.c:7009 #, fuzzy, c-format msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°: %s" -#: src/readelf.c:7321 +#: src/readelf.c:7339 #, fuzzy, c-format msgid "invalid file (%<PRId64>): %s" msgstr "некоректний файл" -#: src/readelf.c:7325 +#: src/readelf.c:7343 #, fuzzy, c-format msgid "no srcfiles for CU [%<PRIx64>]" msgstr " вÑтановити файл у %<PRIu64>\n" -#: src/readelf.c:7329 +#: src/readelf.c:7347 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ELF: %s" -#: src/readelf.c:7552 +#: src/readelf.c:7660 #, c-format msgid "" "\n" @@ -5356,12 +5361,12 @@ msgstr "" "Розділ DWARF [%2zu] «%s» за зміщеннÑм %#<PRIx64>:\n" " [ЗміщеннÑ]\n" -#: src/readelf.c:7602 +#: src/readelf.c:7710 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ наÑтупний DIE: %s" -#: src/readelf.c:7621 +#: src/readelf.c:7729 #, fuzzy, c-format msgid "" " Type unit at offset %<PRIu64>:\n" @@ -5374,7 +5379,7 @@ msgstr "" "ЗміщеннÑ: %<PRIu8>\n" " ÐŸÑ–Ð´Ð¿Ð¸Ñ Ñ‚Ð¸Ð¿Ñƒ: %#<PRIx64>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ: %#<PRIx64>\n" -#: src/readelf.c:7633 +#: src/readelf.c:7741 #, c-format msgid "" " Compilation unit at offset %<PRIu64>:\n" @@ -5385,38 +5390,38 @@ msgstr "" " ВерÑÑ–Ñ: %<PRIu16>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñкорочень: %<PRIu64>, ÐдреÑа: %<PRIu8>, " "ЗміщеннÑ: %<PRIu8>\n" -#: src/readelf.c:7643 src/readelf.c:7806 +#: src/readelf.c:7751 src/readelf.c:7914 #, c-format msgid " Unit type: %s (%<PRIu8>)" msgstr "" -#: src/readelf.c:7670 +#: src/readelf.c:7778 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7699 +#: src/readelf.c:7807 #, c-format msgid "cannot get DIE offset: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ DIE: %s" -#: src/readelf.c:7708 +#: src/readelf.c:7816 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s" msgstr "" "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ мітку DIE за зміщеннÑм %<PRIu64> у розділі «%s»: %s" -#: src/readelf.c:7746 +#: src/readelf.c:7854 #, c-format msgid "cannot get next DIE: %s\n" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ наÑтупний DIE: %s\n" -#: src/readelf.c:7754 +#: src/readelf.c:7862 #, c-format msgid "cannot get next DIE: %s" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ наÑтупний DIE: %s" -#: src/readelf.c:7798 +#: src/readelf.c:7906 #, fuzzy, c-format msgid "" " Split compilation unit at offset %<PRIu64>:\n" @@ -5427,7 +5432,7 @@ msgstr "" " ВерÑÑ–Ñ: %<PRIu16>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñкорочень: %<PRIu64>, ÐдреÑа: %<PRIu8>, " "ЗміщеннÑ: %<PRIu8>\n" -#: src/readelf.c:7850 +#: src/readelf.c:7958 #, c-format msgid "" "\n" @@ -5438,18 +5443,18 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n" "\n" -#: src/readelf.c:8182 +#: src/readelf.c:8290 #, fuzzy, c-format msgid "unknown form: %s" msgstr "невідома форма %#<PRIx64>" -#: src/readelf.c:8213 +#: src/readelf.c:8321 #, c-format msgid "cannot get line data section data: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу лінійних даних: %s" #. Print what we got so far. -#: src/readelf.c:8315 +#: src/readelf.c:8423 #, fuzzy, c-format msgid "" "\n" @@ -5480,27 +5485,27 @@ msgstr "" "\n" "Коди операцій:\n" -#: src/readelf.c:8337 +#: src/readelf.c:8445 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ верÑÑ–ÑŽ Ñимволу: %s" -#: src/readelf.c:8345 +#: src/readelf.c:8453 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "непідтримуваний розмір адреÑи" -#: src/readelf.c:8353 +#: src/readelf.c:8461 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ розділ: %s" -#: src/readelf.c:8363 +#: src/readelf.c:8471 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "некоректні дані зі зміщеннÑм %tu у розділі [%zu] «%s»" -#: src/readelf.c:8378 +#: src/readelf.c:8486 #, c-format msgid " [%*<PRIuFAST8>] %hhu argument\n" msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n" @@ -5508,7 +5513,7 @@ msgstr[0] " [%*<PRIuFAST8>] %hhu аргумент\n" msgstr[1] " [%*<PRIuFAST8>] %hhu аргументи\n" msgstr[2] " [%*<PRIuFAST8>] %hhu аргументів\n" -#: src/readelf.c:8389 +#: src/readelf.c:8497 msgid "" "\n" "Directory table:" @@ -5516,12 +5521,12 @@ msgstr "" "\n" "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ:" -#: src/readelf.c:8395 src/readelf.c:8472 +#: src/readelf.c:8503 src/readelf.c:8580 #, fuzzy, c-format msgid " [" msgstr " PC: " -#: src/readelf.c:8466 +#: src/readelf.c:8574 #, fuzzy msgid "" "\n" @@ -5530,7 +5535,7 @@ msgstr "" "\n" " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¼Ñ–ÑÑ†Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ:" -#: src/readelf.c:8527 +#: src/readelf.c:8635 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5538,7 +5543,7 @@ msgstr "" "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð½Ð°Ð·Ð² файлів:\n" " Ð—Ð°Ð¿Ð¸Ñ ÐšÐ°Ñ‚ Ð§Ð°Ñ Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ðазва" -#: src/readelf.c:8564 +#: src/readelf.c:8672 msgid "" "\n" "Line number statements:" @@ -5546,120 +5551,120 @@ msgstr "" "\n" "Оператори номерів Ñ€Ñдків:" -#: src/readelf.c:8587 +#: src/readelf.c:8695 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "некоректну кількіÑÑ‚ÑŒ операцій на інÑтрукцію прирівнÑно до нулÑ" -#: src/readelf.c:8621 +#: src/readelf.c:8729 #, fuzzy, c-format msgid " special opcode %u: address+%u = " msgstr " Ñпеціальний код операції %u: адреÑа+%u = %s, Ñ€Ñдок%+d = %zu\n" -#: src/readelf.c:8625 +#: src/readelf.c:8733 #, fuzzy, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr "" " Ñпеціальний код операції %u: адреÑа+%u = %s, індекÑ_оп = %u, Ñ€Ñдок%+d = " "%zu\n" -#: src/readelf.c:8628 +#: src/readelf.c:8736 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8646 +#: src/readelf.c:8754 #, c-format msgid " extended opcode %u: " msgstr " розширений код операції %u: " -#: src/readelf.c:8651 +#: src/readelf.c:8759 msgid " end of sequence" msgstr " кінець поÑлідовноÑÑ‚Ñ–" -#: src/readelf.c:8669 +#: src/readelf.c:8777 #, fuzzy, c-format msgid " set address to " msgstr " вÑтановити адреÑу у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s\n" -#: src/readelf.c:8697 +#: src/readelf.c:8805 #, 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:8711 +#: src/readelf.c:8819 #, c-format msgid " set discriminator to %u\n" msgstr " вÑтановити Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ %u\n" #. Unknown, ignore it. -#: src/readelf.c:8716 +#: src/readelf.c:8824 msgid " unknown opcode" msgstr " невідомий код операції" #. Takes no argument. -#: src/readelf.c:8728 +#: src/readelf.c:8836 msgid " copy" msgstr " копіÑ" -#: src/readelf.c:8739 +#: src/readelf.c:8847 #, fuzzy, c-format msgid " advance address by %u to " msgstr " Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи на %u до %s\n" -#: src/readelf.c:8743 src/readelf.c:8804 +#: src/readelf.c:8851 src/readelf.c:8912 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8755 +#: src/readelf.c:8863 #, c-format msgid " advance line by constant %d to %<PRId64>\n" msgstr " проÑувати Ñ€Ñдок на Ñталу %d до %<PRId64>\n" -#: src/readelf.c:8765 +#: src/readelf.c:8873 #, c-format msgid " set file to %<PRIu64>\n" msgstr " вÑтановити файл у %<PRIu64>\n" -#: src/readelf.c:8776 +#: src/readelf.c:8884 #, c-format msgid " set column to %<PRIu64>\n" msgstr " вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñтовпчика %<PRIu64>\n" -#: src/readelf.c:8783 +#: src/readelf.c:8891 #, c-format msgid " set '%s' to %<PRIuFAST8>\n" msgstr " вÑтановити «%s» у %<PRIuFAST8>\n" #. Takes no argument. -#: src/readelf.c:8789 +#: src/readelf.c:8897 msgid " set basic block flag" msgstr " вÑтановити прапорець базового блоку" -#: src/readelf.c:8800 +#: src/readelf.c:8908 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr " збільшити адреÑу на Ñталу величину %u до %s\n" -#: src/readelf.c:8820 +#: src/readelf.c:8928 #, fuzzy, c-format msgid " advance address by fixed value %u to \n" msgstr " збільшити адреÑу на фікÑовану величину %u до %s\n" #. Takes no argument. -#: src/readelf.c:8830 +#: src/readelf.c:8938 msgid " set prologue end flag" msgstr " вÑтановити прапорець ÐºÑ–Ð½Ñ†Ñ Ð²Ñтупу" #. Takes no argument. -#: src/readelf.c:8835 +#: src/readelf.c:8943 msgid " set epilogue begin flag" msgstr " вÑтановити прапорець початку епілогу" -#: src/readelf.c:8845 +#: src/readelf.c:8953 #, c-format msgid " set isa to %u\n" msgstr " вÑтановити isa у %u\n" @@ -5667,7 +5672,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:8854 +#: src/readelf.c:8962 #, c-format msgid " unknown opcode with %<PRIu8> parameter:" msgid_plural " unknown opcode with %<PRIu8> parameters:" @@ -5675,97 +5680,97 @@ msgstr[0] " невідомий код операції з %<PRIu8> Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ msgstr[1] " невідомий код операції з %<PRIu8> параметрами:" msgstr[2] " невідомий код операції з %<PRIu8> параметрами:" -#: src/readelf.c:8894 +#: src/readelf.c:9002 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ .debug_loc: %s" -#: src/readelf.c:9063 +#: src/readelf.c:9171 #, fuzzy, c-format msgid "invalid loclists data" msgstr "некоректні дані" -#: src/readelf.c:9316 +#: src/readelf.c:9424 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ .debug_loc: %s" -#: src/readelf.c:9523 src/readelf.c:10567 +#: src/readelf.c:9631 src/readelf.c:10675 msgid " <INVALID DATA>\n" msgstr " <ÐЕКОРЕКТÐІ ДÐÐІ>\n" -#: src/readelf.c:9578 src/readelf.c:9741 +#: src/readelf.c:9686 src/readelf.c:9849 #, c-format msgid "cannot get macro information section data: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу відомоÑтей щодо макроÑів: %s" -#: src/readelf.c:9658 +#: src/readelf.c:9766 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** незавершений Ñ€Ñдок наприкінці розділу" -#: src/readelf.c:9681 +#: src/readelf.c:9789 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** пропущено аргумент DW_MACINFO_start_file наприкінці розділу" -#: src/readelf.c:9782 +#: src/readelf.c:9890 #, c-format msgid " Offset: 0x%<PRIx64>\n" msgstr " ЗміщеннÑ: 0x%<PRIx64>\n" -#: src/readelf.c:9794 +#: src/readelf.c:9902 #, c-format msgid " Version: %<PRIu16>\n" msgstr " ВерÑÑ–Ñ: %<PRIu16>\n" -#: src/readelf.c:9800 src/readelf.c:10687 +#: src/readelf.c:9908 src/readelf.c:10795 #, c-format msgid " unknown version, cannot parse section\n" msgstr " невідома верÑÑ–Ñ, не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ розділ\n" -#: src/readelf.c:9807 +#: src/readelf.c:9915 #, fuzzy, c-format msgid " Flag: 0x%<PRIx8>" msgstr " Прапорець: 0x%<PRIx8>\n" -#: src/readelf.c:9836 +#: src/readelf.c:9944 #, c-format msgid " Offset length: %<PRIu8>\n" msgstr " Довжина зміщеннÑ: %<PRIu8>\n" -#: src/readelf.c:9844 +#: src/readelf.c:9952 #, c-format msgid " .debug_line offset: 0x%<PRIx64>\n" msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ .debug_line: 0x%<PRIx64>\n" -#: src/readelf.c:9869 +#: src/readelf.c:9977 #, c-format msgid " extension opcode table, %<PRIu8> items:\n" msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ¾Ð´Ñ–Ð² операцій розширень, запиÑів — %<PRIu8>:\n" -#: src/readelf.c:9876 +#: src/readelf.c:9984 #, c-format msgid " [%<PRIx8>]" msgstr " [%<PRIx8>]" -#: src/readelf.c:9888 +#: src/readelf.c:9996 #, c-format msgid " %<PRIu8> arguments:" msgstr " %<PRIu8> аргументів:" -#: src/readelf.c:9903 +#: src/readelf.c:10011 #, c-format msgid " no arguments." msgstr " немає аргументів." -#: src/readelf.c:10104 +#: src/readelf.c:10212 #, 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:10148 +#: src/readelf.c:10256 #, c-format msgid "" "\n" @@ -5776,41 +5781,41 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n" " %*s Ð Ñдок\n" -#: src/readelf.c:10163 +#: src/readelf.c:10271 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ€Ñдків: %s\n" -#: src/readelf.c:10192 +#: src/readelf.c:10300 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу: %s" -#: src/readelf.c:10291 +#: src/readelf.c:10399 #, fuzzy, c-format msgid " Length: %8<PRIu64>\n" msgstr "" "\n" " Довжина: %6<PRIu64>\n" -#: src/readelf.c:10293 +#: src/readelf.c:10401 #, fuzzy, c-format msgid " Offset size: %8<PRIu8>\n" msgstr " Довжина зміщеннÑ: %<PRIu8>\n" -#: src/readelf.c:10307 +#: src/readelf.c:10415 #, fuzzy, c-format msgid " DWARF version: %8<PRIu16>\n" msgstr " верÑÑ–Ñ DWARF: %6<PRIuFAST16>\n" -#: src/readelf.c:10316 +#: src/readelf.c:10424 #, fuzzy, c-format msgid " Padding: %8<PRIx16>\n" msgstr "" "\n" " Довжина: %6<PRIu64>\n" -#: src/readelf.c:10370 +#: src/readelf.c:10478 #, c-format msgid "" "\n" @@ -5819,7 +5824,7 @@ msgstr "" "\n" "Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10472 +#: src/readelf.c:10580 #, c-format msgid "" "\n" @@ -5828,22 +5833,22 @@ msgstr "" "\n" "Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10495 +#: src/readelf.c:10603 #, c-format msgid " LPStart encoding: %#x " msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ LPStart: %#x " -#: src/readelf.c:10507 +#: src/readelf.c:10615 #, c-format msgid " TType encoding: %#x " msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ TType: %#x " -#: src/readelf.c:10522 +#: src/readelf.c:10630 #, c-format msgid " Call site encoding: %#x " msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–ÑÑ†Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ:%#x " -#: src/readelf.c:10535 +#: src/readelf.c:10643 msgid "" "\n" " Call site table:" @@ -5851,7 +5856,7 @@ msgstr "" "\n" " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¼Ñ–ÑÑ†Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ:" -#: src/readelf.c:10549 +#: src/readelf.c:10657 #, c-format msgid "" " [%4u] Call site start: %#<PRIx64>\n" @@ -5864,12 +5869,12 @@ msgstr "" " МіÑце заÑтоÑуваннÑ: %#<PRIx64>\n" " ДіÑ: %u\n" -#: src/readelf.c:10622 +#: src/readelf.c:10730 #, c-format msgid "invalid TType encoding" msgstr "некоректне ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ TType" -#: src/readelf.c:10649 +#: src/readelf.c:10757 #, c-format msgid "" "\n" @@ -5878,37 +5883,37 @@ msgstr "" "\n" "Розділ GDB [%2zu] «%s» за зміщеннÑм %#<PRIx64> міÑтить %<PRId64> байтів:\n" -#: src/readelf.c:10678 +#: src/readelf.c:10786 #, c-format msgid " Version: %<PRId32>\n" msgstr " ВерÑÑ–Ñ: %<PRId32>\n" -#: src/readelf.c:10696 +#: src/readelf.c:10804 #, c-format msgid " CU offset: %#<PRIx32>\n" msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU: %#<PRIx32>\n" -#: src/readelf.c:10703 +#: src/readelf.c:10811 #, c-format msgid " TU offset: %#<PRIx32>\n" msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ TU: %#<PRIx32>\n" -#: src/readelf.c:10710 +#: src/readelf.c:10818 #, c-format msgid " address offset: %#<PRIx32>\n" msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи: %#<PRIx32>\n" -#: src/readelf.c:10717 +#: src/readelf.c:10825 #, c-format msgid " symbol offset: %#<PRIx32>\n" msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñимволу: %#<PRIx32>\n" -#: src/readelf.c:10724 +#: src/readelf.c:10832 #, c-format msgid " constant offset: %#<PRIx32>\n" msgstr " Ñтале зміщеннÑ: %#<PRIx32>\n" -#: src/readelf.c:10738 +#: src/readelf.c:10846 #, c-format msgid "" "\n" @@ -5917,7 +5922,7 @@ msgstr "" "\n" " СпиÑок CU зі зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n" -#: src/readelf.c:10763 +#: src/readelf.c:10871 #, c-format msgid "" "\n" @@ -5926,7 +5931,7 @@ msgstr "" "\n" " СпиÑок TU зі зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n" -#: src/readelf.c:10792 +#: src/readelf.c:10900 #, c-format msgid "" "\n" @@ -5935,7 +5940,7 @@ msgstr "" "\n" " СпиÑок Ð°Ð´Ñ€ÐµÑ Ð·Ñ– зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n" -#: src/readelf.c:10824 +#: src/readelf.c:10932 #, c-format msgid "" "\n" @@ -5944,18 +5949,18 @@ msgstr "" "\n" " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів за зміщеннÑм %#<PRIx32> міÑтить %zu позицій:\n" -#: src/readelf.c:10962 +#: src/readelf.c:11070 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ деÑкриптор контекÑту зневаджуваннÑ: %s" -#: src/readelf.c:11325 src/readelf.c:11947 src/readelf.c:12058 -#: src/readelf.c:12116 +#: src/readelf.c:11433 src/readelf.c:12055 src/readelf.c:12166 +#: src/readelf.c:12224 #, c-format msgid "cannot convert core note data: %s" msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ дані запиÑу Ñдра: %s" -#: src/readelf.c:11688 +#: src/readelf.c:11796 #, c-format msgid "" "\n" @@ -5964,21 +5969,21 @@ msgstr "" "\n" "%*s... <повторюєтьÑÑ %u разів> ..." -#: src/readelf.c:12195 +#: src/readelf.c:12303 msgid " Owner Data size Type\n" msgstr " ВлаÑник Розм. даних Тип\n" -#: src/readelf.c:12224 +#: src/readelf.c:12332 #, c-format msgid " %-13.*s %9<PRId32> %s\n" msgstr " %-13.*s %9<PRId32> %s\n" -#: src/readelf.c:12276 +#: src/readelf.c:12384 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ розділу запиÑів: %s" -#: src/readelf.c:12303 +#: src/readelf.c:12411 #, c-format msgid "" "\n" @@ -5988,7 +5993,7 @@ msgstr "" "Розділ запиÑів (note) [%2zu] «%s» з %<PRIu64> байтів за зміщеннÑм " "%#0<PRIx64>:\n" -#: src/readelf.c:12326 +#: src/readelf.c:12434 #, c-format msgid "" "\n" @@ -5997,7 +6002,7 @@ msgstr "" "\n" "Сегмент запиÑів з %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n" -#: src/readelf.c:12373 +#: src/readelf.c:12481 #, c-format msgid "" "\n" @@ -6006,12 +6011,12 @@ msgstr "" "\n" "У розділі [%zu] «%s» не міÑтитьÑÑ Ð´Ð°Ð½Ð¸Ñ… Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð°Ð¼Ð¿Ñƒ.\n" -#: src/readelf.c:12400 src/readelf.c:12451 +#: src/readelf.c:12508 src/readelf.c:12559 #, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ [%zu] «%s»: %s" -#: src/readelf.c:12405 +#: src/readelf.c:12513 #, c-format msgid "" "\n" @@ -6020,7 +6025,7 @@ msgstr "" "\n" "ШіÑÑ‚. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n" -#: src/readelf.c:12410 +#: src/readelf.c:12518 #, fuzzy, c-format msgid "" "\n" @@ -6030,7 +6035,7 @@ msgstr "" "\n" "ШіÑÑ‚. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n" -#: src/readelf.c:12424 +#: src/readelf.c:12532 #, c-format msgid "" "\n" @@ -6039,7 +6044,7 @@ msgstr "" "\n" "У розділі [%zu] «%s» не міÑтитьÑÑ Ñ€Ñдків Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð°Ð¼Ð¿Ñƒ.\n" -#: src/readelf.c:12456 +#: src/readelf.c:12564 #, c-format msgid "" "\n" @@ -6048,7 +6053,7 @@ msgstr "" "\n" "Розділ Ñ€Ñдків [%zu] «%s» міÑтить %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n" -#: src/readelf.c:12461 +#: src/readelf.c:12569 #, fuzzy, c-format msgid "" "\n" @@ -6058,7 +6063,7 @@ msgstr "" "\n" "Розділ Ñ€Ñдків [%zu] «%s» міÑтить %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n" -#: src/readelf.c:12510 +#: src/readelf.c:12618 #, c-format msgid "" "\n" @@ -6067,7 +6072,7 @@ msgstr "" "\n" "розділу [%lu] не Ñ–Ñнує" -#: src/readelf.c:12539 +#: src/readelf.c:12647 #, c-format msgid "" "\n" @@ -6076,12 +6081,12 @@ msgstr "" "\n" "розділу «%s» не Ñ–Ñнує" -#: src/readelf.c:12596 +#: src/readelf.c:12704 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ покажчик Ñимволів архіву «%s»: %s" -#: src/readelf.c:12599 +#: src/readelf.c:12707 #, c-format msgid "" "\n" @@ -6090,7 +6095,7 @@ msgstr "" "\n" "У архіві «%s» немає покажчика Ñимволів\n" -#: src/readelf.c:12603 +#: src/readelf.c:12711 #, c-format msgid "" "\n" @@ -6099,12 +6104,12 @@ msgstr "" "\n" "Покажчик архіву «%s» міÑтить %zu запиÑів:\n" -#: src/readelf.c:12621 +#: src/readelf.c:12729 #, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "не вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ елемент за зміщеннÑм %zu у «%s»: %s" -#: src/readelf.c:12626 +#: src/readelf.c:12734 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Елемент архіву «%s» міÑтить:\n" @@ -6171,12 +6176,17 @@ msgstr "Ðекоректна оÑнова чиÑленнÑ: %s" msgid "%s: file format not recognized" msgstr "%s: не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ формат файла" -#: src/size.c:418 src/size.c:551 +#: src/size.c:418 src/size.c:557 #, c-format msgid " (ex %s)" msgstr " (прикл. %s)" -#: src/size.c:576 +#: src/size.c:482 +#, fuzzy, c-format +msgid "cannot get section header" +msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу\n" + +#: src/size.c:582 msgid "(TOTALS)\n" msgstr "(ЗÐГÐЛОМ)\n" @@ -6564,7 +6574,7 @@ msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° E msgid "%s: error while getting shdrstrndx: %s" msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s" -#: src/strip.c:1654 src/strip.c:2534 +#: src/strip.c:1654 src/strip.c:2535 #, fuzzy, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s" @@ -6594,47 +6604,47 @@ msgstr "під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків заголРmsgid "no memory to create section header string table" msgstr "під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків заголовка розділу: %s" -#: src/strip.c:2027 +#: src/strip.c:2028 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2450 src/strip.c:2558 +#: src/strip.c:2451 src/strip.c:2559 #, c-format msgid "while writing '%s': %s" msgstr "під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу «%s»: %s" -#: src/strip.c:2461 +#: src/strip.c:2462 #, c-format msgid "while creating '%s'" msgstr "під Ñ‡Ð°Ñ Ñпроби ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Â«%s»" -#: src/strip.c:2484 +#: src/strip.c:2485 #, c-format msgid "while computing checksum for debug information" msgstr "під Ñ‡Ð°Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ñ— Ñуми Ð´Ð»Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичних даних" -#: src/strip.c:2525 +#: src/strip.c:2526 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s" -#: src/strip.c:2543 +#: src/strip.c:2544 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°: %s" -#: src/strip.c:2583 src/strip.c:2603 +#: src/strip.c:2584 src/strip.c:2604 #, c-format msgid "while writing '%s'" msgstr "під Ñ‡Ð°Ñ Ñпроби запиÑу «%s»" -#: src/strip.c:2640 src/strip.c:2647 +#: src/strip.c:2641 src/strip.c:2648 #, c-format msgid "error while finishing '%s': %s" msgstr "помилка під Ñ‡Ð°Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Â«%s»: %s" -#: src/strip.c:2664 src/strip.c:2740 +#: src/strip.c:2665 src/strip.c:2741 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "не вдалоÑÑ Ð²Ñтановити права доÑтупу та дату зміни «%s»" @@ -6727,7 +6737,7 @@ msgstr "не вдалоÑÑ Ñтворити заголовок ELF: %s" msgid "cannot get shdrstrndx:%s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ розділ: %s" -#: src/unstrip.c:248 src/unstrip.c:2034 +#: src/unstrip.c:248 src/unstrip.c:2038 #, c-format msgid "cannot get ELF header: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок ELF: %s" @@ -6747,12 +6757,12 @@ msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ переÑуваннÑ: %s" msgid "cannot copy ELF header: %s" msgstr "не вдалоÑÑ Ñкопіювати заголовок ELF: %s" -#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 +#: src/unstrip.c:269 src/unstrip.c:2056 src/unstrip.c:2099 #, c-format msgid "cannot get number of program headers: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ кількіÑÑ‚ÑŒ заголовків програми: %s" -#: src/unstrip.c:274 src/unstrip.c:2056 +#: src/unstrip.c:274 src/unstrip.c:2060 #, c-format msgid "cannot create program headers: %s" msgstr "не вдалоÑÑ Ñтворити заголовки програми: %s" @@ -6767,12 +6777,12 @@ msgstr "не вдалоÑÑ Ñкопіювати заголовок програ msgid "cannot copy section header: %s" msgstr "не вдалоÑÑ Ñкопіювати заголовок розділу: %s" -#: src/unstrip.c:293 src/unstrip.c:1665 +#: src/unstrip.c:293 src/unstrip.c:1669 #, c-format msgid "cannot get section data: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу: %s" -#: src/unstrip.c:295 src/unstrip.c:1667 +#: src/unstrip.c:295 src/unstrip.c:1671 #, c-format msgid "cannot copy section data: %s" msgstr "не вдалоÑÑ Ñкопіювати дані розділу: %s" @@ -6782,13 +6792,14 @@ msgstr "не вдалоÑÑ Ñкопіювати дані розділу: %s" msgid "cannot create directory '%s'" msgstr "не вдалоÑÑ Ñтворити каталог «%s»" -#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 +#: src/unstrip.c:391 src/unstrip.c:647 src/unstrip.c:681 src/unstrip.c:847 +#: src/unstrip.c:1706 #, c-format msgid "cannot get symbol table entry: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñимволів: %s" -#: src/unstrip.c:407 src/unstrip.c:649 src/unstrip.c:670 src/unstrip.c:682 -#: src/unstrip.c:1723 src/unstrip.c:1918 src/unstrip.c:1942 +#: src/unstrip.c:407 src/unstrip.c:650 src/unstrip.c:671 src/unstrip.c:684 +#: src/unstrip.c:1727 src/unstrip.c:1922 src/unstrip.c:1946 #, c-format msgid "cannot update symbol table: %s" msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ таблицю Ñимволів: %s" @@ -6813,137 +6824,137 @@ msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ верÑÑ–ÑŽ Ñимволу: %s" msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "неочікуваний тип розділу у [%zu] з поÑиланнÑм sh_link на symtab" -#: src/unstrip.c:851 +#: src/unstrip.c:853 #, c-format msgid "invalid string offset in symbol [%zu]" msgstr "некоректне Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ñдка у Ñимволі [%zu]" -#: src/unstrip.c:1009 src/unstrip.c:1398 +#: src/unstrip.c:1011 src/unstrip.c:1402 #, c-format msgid "cannot read section [%zu] name: %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ назву розділу [%zu]: %s" -#: src/unstrip.c:1024 +#: src/unstrip.c:1026 #, fuzzy, c-format msgid "bad sh_link for group section: %s" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_link у розділі %zu" -#: src/unstrip.c:1030 +#: src/unstrip.c:1032 #, fuzzy, c-format msgid "couldn't get shdr for group section: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок 0-го розділу: %s" -#: src/unstrip.c:1035 +#: src/unstrip.c:1037 #, fuzzy, c-format msgid "bad data for group symbol section: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñимволів\n" -#: src/unstrip.c:1041 +#: src/unstrip.c:1043 #, fuzzy, c-format msgid "couldn't get symbol for group section: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ верÑÑ–ÑŽ Ñимволу: %s" -#: src/unstrip.c:1046 +#: src/unstrip.c:1048 #, fuzzy, c-format msgid "bad symbol name for group section: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу %zu: %s" -#: src/unstrip.c:1088 src/unstrip.c:1107 src/unstrip.c:1145 +#: src/unstrip.c:1090 src/unstrip.c:1109 src/unstrip.c:1147 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ розділ «.gnu.prelink_undo»: %s" -#: src/unstrip.c:1125 +#: src/unstrip.c:1127 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "" -#: src/unstrip.c:1136 +#: src/unstrip.c:1138 #, c-format msgid "invalid contents in '%s' section" msgstr "некоректний вміÑÑ‚ розділу «%s»" -#: src/unstrip.c:1192 src/unstrip.c:1524 +#: src/unstrip.c:1194 src/unstrip.c:1528 #, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідний розділ Ð´Ð»Ñ [%zu] «%s»" -#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 +#: src/unstrip.c:1319 src/unstrip.c:1335 src/unstrip.c:1607 src/unstrip.c:1881 #, c-format msgid "cannot add section name to string table: %s" msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ назву розділу до таблиці Ñ€Ñдків: %s" -#: src/unstrip.c:1341 +#: src/unstrip.c:1344 #, c-format msgid "cannot update section header string table data: %s" msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ дані заголовка розділу у таблиці Ñ€Ñдків: %s" -#: src/unstrip.c:1369 src/unstrip.c:1373 +#: src/unstrip.c:1373 src/unstrip.c:1377 #, c-format msgid "cannot get section header string table section index: %s" msgstr "" "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ заголовка розділу у таблиці Ñ€Ñдків: %s" -#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 +#: src/unstrip.c:1381 src/unstrip.c:1385 src/unstrip.c:1622 #, c-format msgid "cannot get section count: %s" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділів: %s" -#: src/unstrip.c:1384 +#: src/unstrip.c:1388 #, c-format msgid "more sections in stripped file than debug file -- arguments reversed?" msgstr "" "у очищеному файлі більше розділів ніж у файлі з даними Ð´Ð»Ñ Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ â€” " "помилковий порÑдок параметрів?" -#: src/unstrip.c:1446 src/unstrip.c:1539 +#: src/unstrip.c:1450 src/unstrip.c:1543 #, c-format msgid "cannot read section header string table: %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ таблицю Ñ€Ñдків заголовка розділу: %s" -#: src/unstrip.c:1597 +#: src/unstrip.c:1601 #, c-format msgid "cannot add new section: %s" msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ новий розділ: %s" -#: src/unstrip.c:1710 +#: src/unstrip.c:1714 #, c-format msgid "symbol [%zu] has invalid section index" msgstr "Ñимвол [%zu] має некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ" -#: src/unstrip.c:1742 +#: src/unstrip.c:1746 #, fuzzy, c-format msgid "group has invalid section index [%zd]" msgstr "Ñимвол [%zu] має некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ" -#: src/unstrip.c:2013 +#: src/unstrip.c:2017 #, c-format msgid "cannot read section data: %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ дані розділу: %s" -#: src/unstrip.c:2042 +#: src/unstrip.c:2046 #, c-format msgid "cannot update ELF header: %s" msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ заголовок ELF: %s" -#: src/unstrip.c:2066 +#: src/unstrip.c:2070 #, c-format msgid "cannot update program header: %s" msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ заголовок програми: %s" -#: src/unstrip.c:2071 src/unstrip.c:2153 +#: src/unstrip.c:2075 src/unstrip.c:2157 #, c-format msgid "cannot write output file: %s" msgstr "не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл виведених даних: %s" -#: src/unstrip.c:2122 +#: src/unstrip.c:2126 #, c-format msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" msgstr "" "Дані DWARF не Ñкориговано відповідно до Ð²Ñ–Ð´Ñ…Ð¸Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ компонуваннÑм; " "Ñпробуйте виправити це командою prelink -u" -#: src/unstrip.c:2125 +#: src/unstrip.c:2129 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" @@ -6951,76 +6962,76 @@ msgstr "" "Дані DWARF у «%s» не Ñкориговано відповідно до Ð²Ñ–Ð´Ñ…Ð¸Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ " "компонуваннÑм; Ñпробуйте виправити це командою prelink -u" -#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 +#: src/unstrip.c:2148 src/unstrip.c:2199 src/unstrip.c:2211 src/unstrip.c:2297 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "не вдалоÑÑ Ñтворити деÑкриптор ELF: %s" -#: src/unstrip.c:2186 +#: src/unstrip.c:2190 msgid "WARNING: " msgstr "УВÐГÐ: " -#: src/unstrip.c:2188 +#: src/unstrip.c:2192 msgid ", use --force" msgstr ", ÑкориÑтайтеÑÑ --force" -#: src/unstrip.c:2211 +#: src/unstrip.c:2215 msgid "ELF header identification (e_ident) different" msgstr "Різні ідентифікатори заголовків ELF (e_ident)" -#: src/unstrip.c:2214 +#: src/unstrip.c:2218 msgid "ELF header type (e_type) different" msgstr "Різні типи заголовків ELF (e_type)" -#: src/unstrip.c:2217 +#: src/unstrip.c:2221 msgid "ELF header machine type (e_machine) different" msgstr "Різні типи архітектур заголовків ELF (e_machine)" -#: src/unstrip.c:2220 +#: src/unstrip.c:2224 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "очищений заголовок програми (e_phnum) Ñ” меншим за неочищений" -#: src/unstrip.c:2250 +#: src/unstrip.c:2254 #, c-format msgid "cannot find stripped file for module '%s': %s" msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ очищений файл Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s" -#: src/unstrip.c:2254 +#: src/unstrip.c:2258 #, c-format msgid "cannot open stripped file '%s' for module '%s': %s" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ очищений файл «%s» Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s" -#: src/unstrip.c:2269 +#: src/unstrip.c:2273 #, c-format msgid "cannot find debug file for module '%s': %s" msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ файл діагноÑтичних даних Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s" -#: src/unstrip.c:2273 +#: src/unstrip.c:2277 #, c-format msgid "cannot open debug file '%s' for module '%s': %s" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл діагноÑтичних даних «%s» Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s" -#: src/unstrip.c:2286 +#: src/unstrip.c:2290 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "у модулі «%s» файл «%s» не очищено strip" -#: src/unstrip.c:2317 +#: src/unstrip.c:2321 #, c-format msgid "cannot cache section addresses for module '%s': %s" msgstr "не вдалоÑÑ ÐºÐµÑˆÑƒÐ²Ð°Ñ‚Ð¸ адреÑи розділів Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s" -#: src/unstrip.c:2450 +#: src/unstrip.c:2454 #, c-format msgid "no matching modules found" msgstr "відповідних модулів не виÑвлено" -#: src/unstrip.c:2459 +#: src/unstrip.c:2463 #, c-format msgid "matched more than one module" msgstr "вÑтановлено відповідніÑÑ‚ÑŒ декількох модулів" -#: src/unstrip.c:2503 +#: src/unstrip.c:2507 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" @@ -7028,7 +7039,7 @@ msgstr "" "ОЧИЩЕÐИЙ-ФÐЙЛ ФÐЙЛ-DEBUG\n" "[МОДУЛЬ...]" -#: src/unstrip.c:2504 +#: src/unstrip.c:2508 #, fuzzy msgid "" "Combine stripped files with separate symbols and debug information.\n" @@ -7088,7 +7099,7 @@ msgstr "" "окремого файла діагноÑтичних даних або «-», Ñкщо файла діагноÑтичних даних " "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸, Ñ– «.», Ñкщо ФÐЙЛ Ñам міÑтить діагноÑтичні дані." -#: tests/backtrace.c:437 +#: tests/backtrace.c:436 msgid "Run executable" msgstr "ЗапуÑтити виконуваний файл" diff --git a/src/ChangeLog b/src/ChangeLog index 0544fceb..c2102fcd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,76 @@ +2019-07-26 Florian Weimer <fweimer@redhat.com> + Mark Wielaard <mark@klomp.org> + + * Makefile.am (bin_PROGRAMS): Add elfclassify. + (elfclassify_LDADD): New variable. + * elfclassify.c: New tool. + +2019-07-13 Mao Han <han_mao@c-sky.com> + + * elflint.c: Add C-SKY. + +2019-06-28 Mark Wielaard <mark@klomp.org> + + * readelf.c (print_ehdr): Use dwelf_elf_e_machine_string instead of + ebl->name. If unknown print hex value. + +2019-06-25 Mark Wielaard <mark@klomp.org> + + * stack.c (parse_opt): Fix dwfl_core_file_attach error message. + +2019-06-18 Mark Wielaard <mark@klomp.org> + + * strip.c (handle_elf): Use elf_begin ELF_C_WRITE, instead of + ELF_C_WRITE_MMAP. + +2019-05-10 Mark Wielaard <mark@klomp.org> + + * readelf.c (struct attrcb_args): Rename die to dies. + (attr_callback): Get current current die using dies[level]. + Handle DW_AT_discr_list as block, not as constant. + (print_debug_units): pass dies, not dies[level] as args. + +2019-05-09 Mark Wielaard <mark@klomp.org> + + * readelf.c (cleanup_list): New function. + (main): Call cleanup_list for dump_data_sections and string_sections. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * unstrip.c (add_new_section_symbols): Call ELF_CHECK after + gelf_getsymshndx. + (new_shstrtab): Call ELF_CHECK after gelf_getshdr. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * size.c (show_sysv): Call INTERNAL_ERROR if gelf_getshdr + returns NULL. + (show_sysv_one_line): Call error with EXIT_FAILURE if + gelf_getshdr returns NULL. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * nm.c (show_symbols_sysv): Check gelf_getshdr doesn't return + NULL. Simplify naming of invalid sections, don't use alloca. + +2019-04-28 Mark Wielaard <mark@klomp.org> + + * elfcmp.c (main): Check shdr1 and shdr2 are not NULL. + +2019-04-03 Mark Wielaard <mark@klomp.org> + + * readelf.c (attr_callback): Print DW_AT_data_member_location as + decimal offset, not hex number. + +2019-03-29 Mark Wielaard <mark@klomp.org> + + * readelf.c (print_debug_macinfo_section): Check cus[0] is not the + sentinel. + +2019-03-27 Mark Wielaard <mark@klomp.org> + + * strip.c (handle_elf): Assert that symbol section number exists. + 2019-01-24 Mark Wielaard <mark@klomp.org> * strip.c (handle_elf): Fix check test for SHN_XINDEX symbol. diff --git a/src/Makefile.am b/src/Makefile.am index 657b21a2..3956b12a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -26,7 +26,8 @@ AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \ AM_LDFLAGS = -Wl,-rpath-link,../libelf:../libdw bin_PROGRAMS = readelf nm size strip elflint findtextrel addr2line \ - elfcmp objdump ranlib strings ar unstrip stack elfcompress + elfcmp objdump ranlib strings ar unstrip stack elfcompress \ + elfclassify noinst_LIBRARIES = libar.a @@ -85,6 +86,7 @@ ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl $(demanglelib) elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) +elfclassify_LDADD = $(libelf) $(libdw) $(libeu) $(argp_LDADD) installcheck-binPROGRAMS: $(bin_PROGRAMS) bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ diff --git a/src/elfclassify.c b/src/elfclassify.c new file mode 100644 index 00000000..535cc49f --- /dev/null +++ b/src/elfclassify.c @@ -0,0 +1,1046 @@ +/* Classification of ELF files. + Copyright (C) 2019 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <argp.h> +#include <error.h> +#include <fcntl.h> +#include <gelf.h> +#include <stdbool.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <unistd.h> + +#include ELFUTILS_HEADER(elf) +#include ELFUTILS_HEADER(dwelf) +#include "printversion.h" + +/* Name and version of program. */ +ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; + +/* Bug report address. */ +ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT; + +/* Set by parse_opt. */ +static int verbose; + +/* Set by the main function. */ +static const char *current_path; + +/* Set by open_file. */ +static int file_fd = -1; + +/* Set by issue or elf_issue. */ +static bool issue_found; + +/* Non-fatal issue occured while processing the current_path. */ +static void +issue (int e, const char *msg) +{ + if (verbose >= 0) + { + if (current_path == NULL) + error (0, e, "%s", msg); + else + error (0, e, "%s '%s'", msg, current_path); + } + issue_found = true; +} + +/* Non-fatal issue occured while processing the current ELF. */ +static void +elf_issue (const char *msg) +{ + if (verbose >= 0) + error (0, 0, "%s: %s: '%s'", msg, elf_errmsg (-1), current_path); + issue_found = true; +} + +/* Set by parse_opt. */ +static bool flag_only_regular_files; + +static bool +open_file (void) +{ + if (verbose > 1) + fprintf (stderr, "debug: processing file: %s\n", current_path); + + file_fd = open (current_path, O_RDONLY | (flag_only_regular_files + ? O_NOFOLLOW : 0)); + if (file_fd < 0) + { + if (!flag_only_regular_files || errno != ELOOP) + issue (errno, N_("opening")); + return false; + } + + struct stat st; + if (fstat (file_fd, &st) != 0) + { + issue (errno, N_("reading")); + return false; + } + + /* Don't even bother with directories. */ + if (S_ISDIR (st.st_mode) + || (flag_only_regular_files && !S_ISREG (st.st_mode))) + return false; + + return true; +} + +static void +close_file (void) +{ + if (file_fd >= 0) + { + close (file_fd); + file_fd = -1; + } +} + +/* Set by open_elf. */ +static Elf *elf; + +/* Set by parse_opt. */ +static bool flag_compressed; + +static bool +open_elf (void) +{ + if (!open_file ()) + { + /* Make sure the file descriptor is gone. */ + close_file (); + return false; + } + + if (flag_compressed) + elf = dwelf_elf_begin (file_fd); + else + elf = elf_begin (file_fd, ELF_C_READ, NULL); + + if (elf == NULL) + { + elf_issue ("opening ELF file"); + close_file (); + return false; + } + + return true; +} + +static void +close_elf (void) +{ + if (elf != NULL) + { + elf_end (elf); + elf = NULL; + } + + close_file (); +} + +static const char * +elf_kind_string (int kind) +{ + switch (kind) + { + case ELF_K_NONE: + return "ELF_K_NONE"; + case ELF_K_AR: + return "ELF_K_AR"; + case ELF_K_COFF: + return "ELF_K_COFF"; /* libelf doesn't really support this. */ + case ELF_K_ELF: + return "ELF_K_ELF"; + default: + return "<unknown>"; + } +} + +static const char * +elf_type_string (int type) +{ + switch (type) + { + case ET_NONE: + return "ET_NONE"; + case ET_REL: + return "ET_REL"; + case ET_EXEC: + return "ET_EXEC"; + case ET_DYN: + return "ET_DYN"; + case ET_CORE: + return "ET_CORE"; + default: + return "<unknown>"; + } +} + +static int elf_type; +static bool has_program_load; +static bool has_sections; +static bool has_bits_alloc; +static bool has_program_interpreter; +static bool has_dynamic; +static bool has_soname; +static bool has_pie_flag; +static bool has_dt_debug; +static bool has_symtab; +static bool has_debug_sections; +static bool has_modinfo; +static bool has_gnu_linkonce_this_module; + +static bool +run_classify (void) +{ + /* Reset to unanalyzed default. */ + elf_type = 0; + has_program_load = false; + has_sections = false; + has_bits_alloc = false; + has_program_interpreter = false; + has_dynamic = false; + has_soname = false; + has_pie_flag = false; + has_dt_debug = false; + has_symtab = false; + has_debug_sections = false; + has_modinfo = false; + has_gnu_linkonce_this_module = false; + + int kind = elf_kind (elf); + if (verbose > 0) + fprintf (stderr, "info: %s: ELF kind: %s (0x%x)\n", current_path, + elf_kind_string (kind), kind); + if (kind != ELF_K_ELF) + return true; + + GElf_Ehdr ehdr_storage; + GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_storage); + if (ehdr == NULL) + { + elf_issue (N_("ELF header")); + return false; + } + elf_type = ehdr->e_type; + + /* Examine program headers. */ + GElf_Phdr dyn_seg = { .p_type = 0 }; + { + size_t nphdrs; + if (elf_getphdrnum (elf, &nphdrs) != 0) + { + elf_issue (N_("program headers")); + return false; + } + for (size_t phdr_idx = 0; phdr_idx < nphdrs; ++phdr_idx) + { + GElf_Phdr phdr_storage; + GElf_Phdr *phdr = gelf_getphdr (elf, phdr_idx, &phdr_storage); + if (phdr == NULL) + { + elf_issue (N_("program header")); + return false; + } + if (phdr->p_type == PT_DYNAMIC) + { + dyn_seg = *phdr; + has_dynamic = true; + } + if (phdr->p_type == PT_INTERP) + has_program_interpreter = true; + if (phdr->p_type == PT_LOAD) + has_program_load = true; + } + } + + /* Do we have sections? */ + { + size_t nshdrs; + if (elf_getshdrnum (elf, &nshdrs) != 0) + { + elf_issue (N_("section headers")); + return false; + } + if (nshdrs > 0) + has_sections = true; + } + + { + size_t shstrndx; + if (unlikely (elf_getshdrstrndx (elf, &shstrndx) < 0)) + { + elf_issue (N_("section header string table index")); + return false; + } + + Elf_Scn *scn = NULL; + while (true) + { + scn = elf_nextscn (elf, scn); + if (scn == NULL) + break; + GElf_Shdr shdr_storage; + GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_storage); + if (shdr == NULL) + { + elf_issue (N_("could not obtain section header")); + return false; + } + const char *section_name = elf_strptr (elf, shstrndx, shdr->sh_name); + if (section_name == NULL) + { + elf_issue(N_("could not obtain section name")); + return false; + } + if (verbose > 2) + fprintf (stderr, "debug: section header %s (type %d) found\n", + section_name, shdr->sh_type); + if (shdr->sh_type == SHT_SYMTAB) + { + if (verbose > 1) + fputs ("debug: symtab section found\n", stderr); + has_symtab = true; + } + /* NOBITS and NOTE sections can be in any file. We want to be + sure there is at least one other allocated section. */ + if (shdr->sh_type != SHT_NOBITS + && shdr->sh_type != SHT_NOTE + && (shdr->sh_flags & SHF_ALLOC) != 0) + { + if (verbose > 1 && !has_bits_alloc) + fputs ("debug: allocated (non-nobits/note) section found\n", + stderr); + has_bits_alloc = true; + } + const char *debug_prefix = ".debug_"; + const char *zdebug_prefix = ".zdebug_"; + if (strncmp (section_name, debug_prefix, strlen (debug_prefix)) == 0 + || strncmp (section_name, zdebug_prefix, + strlen (zdebug_prefix)) == 0) + { + if (verbose > 1 && !has_debug_sections) + fputs ("debug: .debug_* section found\n", stderr); + has_debug_sections = true; + } + if (strcmp (section_name, ".modinfo") == 0) + { + if (verbose > 1) + fputs ("debug: .modinfo section found\n", stderr); + has_modinfo = true; + } + if (strcmp (section_name, ".gnu.linkonce.this_module") == 0) + { + if (verbose > 1) + fputs ("debug: .gnu.linkonce.this_module section found\n", + stderr); + has_gnu_linkonce_this_module = true; + } + } + } + + /* Examine the dynamic section. */ + if (has_dynamic) + { + Elf_Data *data = elf_getdata_rawchunk (elf, dyn_seg.p_offset, + dyn_seg.p_filesz, + ELF_T_DYN); + if (data != NULL) + for (int dyn_idx = 0; ; ++dyn_idx) + { + GElf_Dyn dyn_storage; + GElf_Dyn *dyn = gelf_getdyn (data, dyn_idx, &dyn_storage); + if (dyn == NULL) + break; + if (verbose > 2) + fprintf (stderr, "debug: dynamic entry %d" + " with tag %llu found\n", + dyn_idx, (unsigned long long int) dyn->d_tag); + if (dyn->d_tag == DT_SONAME) + has_soname = true; + if (dyn->d_tag == DT_FLAGS_1 && (dyn->d_un.d_val & DF_1_PIE)) + has_pie_flag = true; + if (dyn->d_tag == DT_DEBUG) + has_dt_debug = true; + if (dyn->d_tag == DT_NULL) + break; + } + } + + if (verbose > 0) + { + fprintf (stderr, "info: %s: ELF type: %s (0x%x)\n", current_path, + elf_type_string (elf_type), elf_type); + if (has_program_load) + fprintf (stderr, "info: %s: PT_LOAD found\n", current_path); + if (has_sections) + fprintf (stderr, "info: %s: has sections\n", current_path); + if (has_bits_alloc) + fprintf (stderr, "info: %s: allocated (real) section found\n", + current_path); + if (has_program_interpreter) + fprintf (stderr, "info: %s: program interpreter found\n", + current_path); + if (has_dynamic) + fprintf (stderr, "info: %s: dynamic segment found\n", current_path); + if (has_soname) + fprintf (stderr, "info: %s: soname found\n", current_path); + if (has_pie_flag) + fprintf (stderr, "info: %s: DF_1_PIE flag found\n", current_path); + if (has_dt_debug) + fprintf (stderr, "info: %s: DT_DEBUG found\n", current_path); + if (has_symtab) + fprintf (stderr, "info: %s: symbol table found\n", current_path); + if (has_debug_sections) + fprintf (stderr, "info: %s: .debug_* section found\n", current_path); + if (has_modinfo) + fprintf (stderr, "info: %s: .modinfo section found\n", current_path); + if (has_gnu_linkonce_this_module) + fprintf (stderr, + "info: %s: .gnu.linkonce.this_module section found\n", + current_path); + } + + return true; +} + +static bool +is_elf (void) +{ + return elf_kind (elf) != ELF_K_NONE; +} + +static bool +is_elf_file (void) +{ + return elf_kind (elf) == ELF_K_ELF; +} + +static bool +is_elf_archive (void) +{ + return elf_kind (elf) == ELF_K_AR; +} + +static bool +is_core (void) +{ + return elf_kind (elf) == ELF_K_ELF && elf_type == ET_CORE; +} + +/* Return true if the file is a loadable object, which basically means + it is an ELF file, but not a relocatable object or a core dump + file. (The kernel and various userspace components can load ET_REL + files, but we disregard that for our classification purposes.) */ +static bool +is_loadable (void) +{ + return elf_kind (elf) == ELF_K_ELF + && (elf_type == ET_EXEC || elf_type == ET_DYN) + && has_program_load + && (!has_sections || has_bits_alloc); /* It isn't debug-only. */ +} + +/* Return true if the file is an ELF file which has a symbol table or + .debug_* sections (and thus can be stripped futher). */ +static bool +is_unstripped (void) +{ + return elf_kind (elf) != ELF_K_NONE + && (elf_type == ET_REL || elf_type == ET_EXEC || elf_type == ET_DYN) + && (has_symtab || has_debug_sections); +} + +/* Return true if the file contains only debuginfo, but no loadable + program bits. Then it is most likely a separate .debug file, a dwz + multi-file or a .dwo file. Note that it can still be loadable, + but in that case the phdrs shouldn't be trusted. */ +static bool +is_debug_only (void) +{ + return elf_kind (elf) != ELF_K_NONE + && (elf_type == ET_REL || elf_type == ET_EXEC || elf_type == ET_DYN) + && (has_debug_sections || has_symtab) + && !has_bits_alloc; +} + +static bool +is_shared (void) +{ + if (!is_loadable ()) + return false; + + /* The ELF type is very clear: this is an executable. */ + if (elf_type == ET_EXEC) + return false; + + /* If there is no dynamic section, the file cannot be loaded as a + shared object. */ + if (!has_dynamic) + return false; + + /* If the object is marked as PIE, it is definitely an executable, + and not a loadlable shared object. */ + if (has_pie_flag) + return false; + + /* Treat a DT_SONAME tag as a strong indicator that this is a shared + object. */ + if (has_soname) + return true; + + /* This is probably a PIE program: there is no soname, but a program + interpreter. In theory, this file could be also a DSO with a + soname implied by its file name that can be run as a program. + This situation is impossible to resolve in the general case. */ + if (has_program_interpreter) + return false; + + /* Roland McGrath mentions in + <https://www.sourceware.org/ml/libc-alpha/2015-03/msg00605.html>, + that “we defined a PIE as an ET_DYN with a DT_DEBUGâ€. This + matches current binutils behavior (version 2.32). DT_DEBUG is + added if bfd_link_executable returns true or if bfd_link_pic + returns false, depending on the architectures. However, DT_DEBUG + is not documented as being specific to executables, therefore use + it only as a low-priority discriminator. */ + if (has_dt_debug) + return false; + + return true; +} + +static bool +is_executable (void) +{ + if (!is_loadable ()) + return false; + + /* A loadable object which is not a shared object is treated as an + executable. */ + return !is_shared (); +} + +/* Like is_executable, but the object can also be a shared library at + the same time. */ +static bool +is_program (void) +{ + if (!is_loadable ()) + return false; + + /* The ELF type is very clear: this is an executable. */ + if (elf_type == ET_EXEC) + return true; + + /* If the object is marked as PIE, it is definitely an executable, + and not a loadlable shared object. */ + if (has_pie_flag) + return true; + + /* This is probably a PIE program. It isn't ET_EXEC, but has a + program interpreter. In theory, this file could be also a DSO + with a soname. This situation is impossible to resolve in the + general case. See is_shared. This is different from + is_executable. */ + if (has_program_interpreter) + return true; + + /* Roland McGrath mentions in + <https://www.sourceware.org/ml/libc-alpha/2015-03/msg00605.html>, + that “we defined a PIE as an ET_DYN with a DT_DEBUGâ€. This + matches current binutils behavior (version 2.32). DT_DEBUG is + added if bfd_link_executable returns true or if bfd_link_pic + returns false, depending on the architectures. However, DT_DEBUG + is not documented as being specific to executables, therefore use + it only as a low-priority discriminator. */ + if (has_dt_debug) + return true; + + return false; +} + +/* Like is_shared but the library could also be an executable. */ +static bool +is_library (void) +{ + /* Only ET_DYN can be shared libraries. */ + if (elf_type != ET_DYN) + return false; + + if (!is_loadable ()) + return false; + + /* Without a PT_DYNAMIC segment the library cannot be loaded. */ + if (!has_dynamic) + return false; + + /* This really is a (PIE) executable. See is_shared. */ + if (has_pie_flag || has_dt_debug) + return false; + + /* It could still (also) be a (PIE) executable, but most likely you + can dlopen it just fine. */ + return true; +} + +/* Returns true if the file is a linux kernel module (is ET_REL and + has the two magic sections .modinfo and .gnu.linkonce.this_module). */ +static bool +is_linux_kernel_module (void) +{ + return (elf_kind (elf) == ELF_K_ELF + && elf_type == ET_REL + && has_modinfo + && has_gnu_linkonce_this_module); +} + +enum classify_requirement { do_not_care, required, forbidden }; + +enum classify_check +{ + classify_elf, + classify_elf_file, + classify_elf_archive, + classify_core, + classify_unstripped, + classify_executable, + classify_program, + classify_shared, + classify_library, + classify_linux_kernel_module, + classify_debug_only, + classify_loadable, + + classify_check_last = classify_loadable +}; + +enum +{ + classify_check_offset = 1000, + classify_check_not_offset = 2000, + + classify_flag_stdin = 3000, + classify_flag_stdin0, + classify_flag_no_stdin, + classify_flag_print, + classify_flag_print0, + classify_flag_no_print, + classify_flag_matching, + classify_flag_not_matching, +}; + +static bool +classify_check_positive (int key) +{ + return key >= classify_check_offset + && key <= classify_check_offset + classify_check_last; +} + +static bool +classify_check_negative (int key) +{ + return key >= classify_check_not_offset + && key <= classify_check_not_offset + classify_check_last; +} + +/* Set by parse_opt. */ +static enum classify_requirement requirements[classify_check_last + 1]; +static enum { no_stdin, do_stdin, do_stdin0 } flag_stdin; +static enum { no_print, do_print, do_print0 } flag_print; +static bool flag_print_matching = true; + +static error_t +parse_opt (int key, char *arg __attribute__ ((unused)), + struct argp_state *state __attribute__ ((unused))) +{ + if (classify_check_positive (key)) + requirements[key - classify_check_offset] = required; + else if (classify_check_negative (key)) + requirements[key - classify_check_not_offset] = forbidden; + else + switch (key) + { + case 'v': + ++verbose; + break; + + case 'q': + --verbose; + break; + + case 'z': + flag_compressed = true; + break; + + case 'f': + flag_only_regular_files = true; + break; + + case classify_flag_stdin: + flag_stdin = do_stdin; + break; + + case classify_flag_stdin0: + flag_stdin = do_stdin0; + break; + + case classify_flag_no_stdin: + flag_stdin = no_stdin; + break; + + case classify_flag_print: + flag_print = do_print; + break; + + case classify_flag_print0: + flag_print = do_print0; + break; + + case classify_flag_no_print: + flag_print = no_print; + break; + + case classify_flag_matching: + flag_print_matching = true; + break; + + case classify_flag_not_matching: + flag_print_matching = false; + break; + + default: + return ARGP_ERR_UNKNOWN; + } + + return 0; +} + +/* Perform requested checks against the file at current_path. If + necessary, sets *STATUS to 1 if checks failed. */ +static void +process_current_path (int *status) +{ + bool checks_passed = true; + + if (open_elf () && run_classify ()) + { + bool checks[] = + { + [classify_elf] = is_elf (), + [classify_elf_file] = is_elf_file (), + [classify_elf_archive] = is_elf_archive (), + [classify_core] = is_core (), + [classify_unstripped] = is_unstripped (), + [classify_executable] = is_executable (), + [classify_program] = is_program (), + [classify_shared] = is_shared (), + [classify_library] = is_library (), + [classify_linux_kernel_module] = is_linux_kernel_module (), + [classify_debug_only] = is_debug_only (), + [classify_loadable] = is_loadable (), + }; + + if (verbose > 1) + { + if (checks[classify_elf]) + fprintf (stderr, "debug: %s: elf\n", current_path); + if (checks[classify_elf_file]) + fprintf (stderr, "debug: %s: elf_file\n", current_path); + if (checks[classify_elf_archive]) + fprintf (stderr, "debug: %s: elf_archive\n", current_path); + if (checks[classify_core]) + fprintf (stderr, "debug: %s: core\n", current_path); + if (checks[classify_unstripped]) + fprintf (stderr, "debug: %s: unstripped\n", current_path); + if (checks[classify_executable]) + fprintf (stderr, "debug: %s: executable\n", current_path); + if (checks[classify_program]) + fprintf (stderr, "debug: %s: program\n", current_path); + if (checks[classify_shared]) + fprintf (stderr, "debug: %s: shared\n", current_path); + if (checks[classify_library]) + fprintf (stderr, "debug: %s: library\n", current_path); + if (checks[classify_linux_kernel_module]) + fprintf (stderr, "debug: %s: linux kernel module\n", current_path); + if (checks[classify_debug_only]) + fprintf (stderr, "debug: %s: debug-only\n", current_path); + if (checks[classify_loadable]) + fprintf (stderr, "debug: %s: loadable\n", current_path); + } + + for (enum classify_check check = 0; + check <= classify_check_last; ++check) + switch (requirements[check]) + { + case required: + if (!checks[check]) + checks_passed = false; + break; + case forbidden: + if (checks[check]) + checks_passed = false; + break; + case do_not_care: + break; + } + } + else if (file_fd == -1) + checks_passed = false; /* There is nothing to check, bad file. */ + else + { + for (enum classify_check check = 0; + check <= classify_check_last; ++check) + if (requirements[check] == required) + checks_passed = false; + } + + close_elf (); + + switch (flag_print) + { + case do_print: + if (checks_passed == flag_print_matching) + puts (current_path); + break; + case do_print0: + if (checks_passed == flag_print_matching) + fwrite (current_path, strlen (current_path) + 1, 1, stdout); + break; + case no_print: + if (!checks_passed) + *status = 1; + break; + } +} + +/* Called to process standard input if flag_stdin is not no_stdin. */ +static void +process_stdin (int *status) +{ + char delim; + if (flag_stdin == do_stdin0) + delim = '\0'; + else + delim = '\n'; + + char *buffer = NULL; + size_t buffer_size = 0; + while (true) + { + ssize_t ret = getdelim (&buffer, &buffer_size, delim, stdin); + if (ferror (stdin)) + { + current_path = NULL; + issue (errno, N_("reading from standard input")); + break; + } + if (feof (stdin)) + break; + if (ret < 0) + abort (); /* Cannot happen due to error checks above. */ + if (delim != '\0' && ret > 0 && buffer[ret - 1] == '\n') + buffer[ret - 1] = '\0'; + current_path = buffer; + process_current_path (status); + } + + free (buffer); +} + +int +main (int argc, char **argv) +{ + const struct argp_option options[] = + { + { NULL, 0, NULL, OPTION_DOC, N_("Classification options"), 1 }, + { "elf", classify_check_offset + classify_elf, NULL, 0, + N_("File looks like an ELF object or archive/static library (default)") + , 1 }, + { "elf-file", classify_check_offset + classify_elf_file, NULL, 0, + N_("File is an regular ELF object (not an archive/static library)") + , 1 }, + { "elf-archive", classify_check_offset + classify_elf_archive, NULL, 0, + N_("File is an ELF archive or static library") + , 1 }, + { "core", classify_check_offset + classify_core, NULL, 0, + N_("File is an ELF core dump file") + , 1 }, + { "unstripped", classify_check_offset + classify_unstripped, NULL, 0, + N_("File is an ELF file with symbol table or .debug_* sections \ +and can be stripped further"), 1 }, + { "executable", classify_check_offset + classify_executable, NULL, 0, + N_("File is (primarily) an ELF program executable \ +(not primarily a DSO)"), 1 }, + { "program", classify_check_offset + classify_program, NULL, 0, + N_("File is an ELF program executable \ +(might also be a DSO)"), 1 }, + { "shared", classify_check_offset + classify_shared, NULL, 0, + N_("File is (primarily) an ELF shared object (DSO) \ +(not primarily an executable)"), 1 }, + { "library", classify_check_offset + classify_library, NULL, 0, + N_("File is an ELF shared object (DSO) \ +(might also be an executable)"), 1 }, + { "linux-kernel-module", (classify_check_offset + + classify_linux_kernel_module), NULL, 0, + N_("File is a linux kernel module"), 1 }, + { "debug-only", (classify_check_offset + classify_debug_only), NULL, 0, + N_("File is a debug only ELF file \ +(separate .debug, .dwo or dwz multi-file)"), 1 }, + { "loadable", classify_check_offset + classify_loadable, NULL, 0, + N_("File is a loadable ELF object (program or shared object)"), 1 }, + + /* Negated versions of the above. */ + { "not-elf", classify_check_not_offset + classify_elf, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-elf-file", classify_check_not_offset + classify_elf_file, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-elf-archive", classify_check_not_offset + classify_elf_archive, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-core", classify_check_not_offset + classify_core, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-unstripped", classify_check_not_offset + classify_unstripped, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-executable", classify_check_not_offset + classify_executable, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-program", classify_check_not_offset + classify_program, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-shared", classify_check_not_offset + classify_shared, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-library", classify_check_not_offset + classify_library, + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-linux-kernel-module", (classify_check_not_offset + + classify_linux_kernel_module), + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-debug-only", (classify_check_not_offset + classify_debug_only), + NULL, OPTION_HIDDEN, NULL, 1 }, + { "not-loadable", classify_check_not_offset + classify_loadable, + NULL, OPTION_HIDDEN, NULL, 1 }, + + { NULL, 0, NULL, OPTION_DOC, N_("Input flags"), 2 }, + { "file", 'f', NULL, 0, + N_("Only classify regular (not symlink nor special device) files"), 2 }, + { "stdin", classify_flag_stdin, NULL, 0, + N_("Also read file names to process from standard input, \ +separated by newlines"), 2 }, + { "stdin0", classify_flag_stdin0, NULL, 0, + N_("Also read file names to process from standard input, \ +separated by ASCII NUL bytes"), 2 }, + { "no-stdin", classify_flag_stdin, NULL, 0, + N_("Do not read files from standard input (default)"), 2 }, + { "compressed", 'z', NULL, 0, + N_("Try to open compressed files or embedded (kernel) ELF images"), + 2 }, + + { NULL, 0, NULL, OPTION_DOC, N_("Output flags"), 3 }, + { "print", classify_flag_print, NULL, 0, + N_("Output names of files, separated by newline"), 3 }, + { "print0", classify_flag_print0, NULL, 0, + N_("Output names of files, separated by ASCII NUL"), 3 }, + { "no-print", classify_flag_no_print, NULL, 0, + N_("Do not output file names"), 3 }, + { "matching", classify_flag_matching, NULL, 0, + N_("If printing file names, print matching files (default)"), 3 }, + { "not-matching", classify_flag_not_matching, NULL, 0, + N_("If printing file names, print files that do not match"), 3 }, + + { NULL, 0, NULL, OPTION_DOC, N_("Additional flags"), 4 }, + { "verbose", 'v', NULL, 0, + N_("Output additional information (can be specified multiple times)"), 4 }, + { "quiet", 'q', NULL, 0, + N_("Suppress some error output (counterpart to --verbose)"), 4 }, + { NULL, 0, NULL, 0, NULL, 0 } + }; + + const struct argp argp = + { + .options = options, + .parser = parse_opt, + .args_doc = N_("FILE..."), + .doc = N_("\ +Determine the type of an ELF file.\ +\n\n\ +All of the classification options must apply at the same time to a \ +particular file. Classification options can be negated using a \ +\"--not-\" prefix.\ +\n\n\ +Since modern ELF does not clearly distinguish between programs and \ +dynamic shared objects, you should normally use either --executable or \ +--shared to identify the primary purpose of a file. \ +Only one of the --shared and --executable checks can pass for a file.\ +\n\n\ +If you want to know whether an ELF object might a program or a \ +shared library (but could be both), then use --program or --library. \ +Some ELF files will classify as both a program and a library.\ +\n\n\ +If you just want to know whether an ELF file is loadable (as program \ +or library) use --loadable. Note that files that only contain \ +(separate) debug information (--debug-only) are never --loadable (even \ +though they might contain program headers). Linux kernel modules are \ +also not --loadable (in the normal sense).\ +\n\n\ +Without any of the --print options, the program exits with status 0 \ +if the requested checks pass for all input files, with 1 if a check \ +fails for any file, and 2 if there is an environmental issue (such \ +as a file read error or a memory allocation error).\ +\n\n\ +When printing file names, the program exits with status 0 even if \ +no file names are printed, and exits with status 2 if there is an \ +environmental issue.\ +\n\n\ +On usage error (e.g. a bad option was given), the program exits with \ +a status code larger than 2.\ +\n\n\ +The --quiet or -q option suppresses some error warning output, but \ +doesn't change the exit status.\ +") + }; + + /* Require that the file is an ELF file by default. User can + disable with --not-elf. */ + requirements[classify_elf] = required; + + int remaining; + if (argp_parse (&argp, argc, argv, 0, &remaining, NULL) != 0) + return 2; + + elf_version (EV_CURRENT); + + int status = 0; + + for (int i = remaining; i < argc; ++i) + { + current_path = argv[i]; + process_current_path (&status); + } + + if (flag_stdin != no_stdin) + process_stdin (&status); + + if (issue_found) + return 2; + + return status; +} diff --git a/src/elfcmp.c b/src/elfcmp.c index d5dc1ff2..c07fdfd7 100644 --- a/src/elfcmp.c +++ b/src/elfcmp.c @@ -269,7 +269,7 @@ main (int argc, char *argv[]) if (shdr1 != NULL) sname1 = elf_strptr (elf1, shstrndx1, shdr1->sh_name); } - while (scn1 != NULL + while (scn1 != NULL && shdr1 != NULL && ebl_section_strip_p (ebl1, shdr1, sname1, true, false)); GElf_Shdr shdr2_mem; @@ -282,10 +282,10 @@ main (int argc, char *argv[]) if (shdr2 != NULL) sname2 = elf_strptr (elf2, shstrndx2, shdr2->sh_name); } - while (scn2 != NULL + while (scn2 != NULL && shdr2 != NULL && ebl_section_strip_p (ebl2, shdr2, sname2, true, false)); - if (scn1 == NULL || scn2 == NULL) + if (scn1 == NULL || scn2 == NULL || shdr1 == NULL || shdr2 == NULL) break; if (gaps != gaps_ignore && (shdr1->sh_flags & SHF_ALLOC) != 0) diff --git a/src/elflint.c b/src/elflint.c index 810c8bd7..edb466dd 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -330,7 +330,7 @@ static const int valid_e_machine[] = EM_CRIS, EM_JAVELIN, EM_FIREPATH, EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM, EM_AVR, EM_FR30, EM_D10V, EM_D30V, EM_V850, EM_M32R, EM_MN10300, EM_MN10200, EM_PJ, EM_OPENRISC, EM_ARC_A5, EM_XTENSA, EM_ALPHA, - EM_TILEGX, EM_TILEPRO, EM_AARCH64, EM_BPF, EM_RISCV + EM_TILEGX, EM_TILEPRO, EM_AARCH64, EM_BPF, EM_RISCV, EM_CSKY }; #define nvalid_e_machine \ (sizeof (valid_e_machine) / sizeof (valid_e_machine[0])) @@ -751,19 +751,17 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname, while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) { GElf_Shdr shdr_mem; + GElf_Shdr *shdr; assert (elf_ndxscn (scn) == cnt); cnt++; - char *name = elf_strptr (ebl->elf, shstrndx, - gelf_getshdr (scn, &shdr_mem)->sh_name); + char *name = NULL; + shdr = gelf_getshdr (scn, &shdr_mem); + if (shdr != NULL) + name = elf_strptr (ebl->elf, shstrndx, shdr->sh_name); if (unlikely (name == NULL)) - { - const size_t bufsz = sizeof "[invalid sh_name 0x12345678]"; - name = alloca (bufsz); - snprintf (name, bufsz, "[invalid sh_name %#" PRIx32 "]", - gelf_getshdr (scn, &shdr_mem)->sh_name); - } + name = "[invalid section name]"; scnnames[elf_ndxscn (scn)] = name; } diff --git a/src/readelf.c b/src/readelf.c index 33706bde..2084fb1f 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -312,6 +312,17 @@ static void dump_archive_index (Elf *, const char *); static char *yes_str; static char *no_str; +static void +cleanup_list (struct section_argument *list) +{ + while (list != NULL) + { + struct section_argument *a = list; + list = a->next; + free (a); + } +} + int main (int argc, char *argv[]) { @@ -353,6 +364,9 @@ main (int argc, char *argv[]) } while (++remaining < argc); + cleanup_list (dump_data_sections); + cleanup_list (string_sections); + return error_message_count != 0; } @@ -1070,7 +1084,12 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr) fputs_unlocked (gettext (" Type: "), stdout); print_file_type (ehdr->e_type); - printf (gettext (" Machine: %s\n"), ebl->name); + const char *machine = dwelf_elf_e_machine_string (ehdr->e_machine); + if (machine != NULL) + printf (gettext (" Machine: %s\n"), machine); + else + printf (gettext (" Machine: <unknown>: 0x%x\n"), + ehdr->e_machine); printf (gettext (" Version: %d %s\n"), ehdr->e_version, @@ -3552,7 +3571,9 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr) if (shdr == NULL || (shdr->sh_type != SHT_GNU_ATTRIBUTES && (shdr->sh_type != SHT_ARM_ATTRIBUTES - || ehdr->e_machine != EM_ARM))) + || ehdr->e_machine != EM_ARM) + && (shdr->sh_type != SHT_CSKY_ATTRIBUTES + || ehdr->e_machine != EM_CSKY))) continue; printf (gettext ("\ @@ -6930,7 +6951,7 @@ struct attrcb_args { Dwfl_Module *dwflmod; Dwarf *dbg; - Dwarf_Die *die; + Dwarf_Die *dies; int level; bool silent; bool is_split; @@ -6946,7 +6967,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) { struct attrcb_args *cbargs = (struct attrcb_args *) arg; const int level = cbargs->level; - Dwarf_Die *die = cbargs->die; + Dwarf_Die *die = &cbargs->dies[level]; bool is_split = cbargs->is_split; unsigned int attr = dwarf_whatattr (attrp); @@ -7092,7 +7113,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) || (form != DW_FORM_data4 && form != DW_FORM_data8))) { if (!cbargs->silent) - printf (" %*s%-20s (%s) %" PRIxMAX "\n", + printf (" %*s%-20s (%s) %" PRIuMAX "\n", (int) (level * 2), "", dwarf_attr_name (attr), dwarf_form_name (form), (uintmax_t) num); return DWARF_CB_OK; @@ -7290,9 +7311,6 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) case DW_AT_ordering: valuestr = dwarf_ordering_name (num); break; - case DW_AT_discr_list: - valuestr = dwarf_discr_list_name (num); - break; case DW_AT_decl_file: case DW_AT_call_file: { @@ -7347,7 +7365,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) /* When highpc is in constant form it is relative to lowpc. In that case also show the address. */ Dwarf_Addr highpc; - if (attr == DW_AT_high_pc && dwarf_highpc (cbargs->die, &highpc) == 0) + if (attr == DW_AT_high_pc && dwarf_highpc (die, &highpc) == 0) { printf (" %*s%-20s (%s) %" PRIuMAX " (", (int) (level * 2), "", dwarf_attr_name (attr), @@ -7369,7 +7387,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) bool is_signed; int bytes = 0; if (attr == DW_AT_const_value) - die_type_sign_bytes (cbargs->die, &is_signed, &bytes); + die_type_sign_bytes (die, &is_signed, &bytes); else is_signed = (form == DW_FORM_sdata || form == DW_FORM_implicit_const); @@ -7524,6 +7542,96 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) else print_block (block.length, block.data); break; + + case DW_AT_discr_list: + if (block.length == 0) + puts ("<default>"); + else if (form != DW_FORM_data16) + { + const unsigned char *readp = block.data; + const unsigned char *readendp = readp + block.length; + + /* See if we are dealing with a signed or unsigned + values. If the parent of this variant DIE is a + variant_part then it will either have a discriminant + which points to the member which type is the + discriminant type. Or the variant_part itself has a + type representing the discriminant. */ + bool is_signed = false; + if (level > 0) + { + Dwarf_Die *parent = &cbargs->dies[level - 1]; + if (dwarf_tag (die) == DW_TAG_variant + && dwarf_tag (parent) == DW_TAG_variant_part) + { + Dwarf_Die member; + Dwarf_Attribute discr_attr; + int bytes; + if (dwarf_formref_die (dwarf_attr (parent, + DW_AT_discr, + &discr_attr), + &member) != NULL) + die_type_sign_bytes (&member, &is_signed, &bytes); + else + die_type_sign_bytes (parent, &is_signed, &bytes); + } + } + while (readp < readendp) + { + int d = (int) *readp++; + printf ("%s ", dwarf_discr_list_name (d)); + if (readp >= readendp) + goto attrval_out; + + Dwarf_Word val; + Dwarf_Sword sval; + if (d == DW_DSC_label) + { + if (is_signed) + { + get_sleb128 (sval, readp, readendp); + printf ("%" PRId64 "", sval); + } + else + { + get_uleb128 (val, readp, readendp); + printf ("%" PRIu64 "", val); + } + } + else if (d == DW_DSC_range) + { + if (is_signed) + { + get_sleb128 (sval, readp, readendp); + printf ("%" PRId64 "..", sval); + if (readp >= readendp) + goto attrval_out; + get_sleb128 (sval, readp, readendp); + printf ("%" PRId64 "", sval); + } + else + { + get_uleb128 (val, readp, readendp); + printf ("%" PRIu64 "..", val); + if (readp >= readendp) + goto attrval_out; + get_uleb128 (val, readp, readendp); + printf ("%" PRIu64 "", val); + } + } + else + { + print_block (readendp - readp, readp); + break; + } + if (readp < readendp) + printf (", "); + } + putchar ('\n'); + } + else + print_block (block.length, block.data); + break; } break; @@ -7724,7 +7832,7 @@ print_debug_units (Dwfl_Module *dwflmod, /* Print the attribute values. */ args.level = level; - args.die = &dies[level]; + args.dies = dies; (void) dwarf_getattrs (&dies[level], attr_callback, &args, 0); /* Make room for the next level's DIE. */ @@ -9688,13 +9796,13 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)), /* Find the CU DIE for this file. */ size_t macoff = readp - (const unsigned char *) data->d_buf; const char *fname = "???"; - if (macoff >= cus[0].offset) + if (macoff >= cus[0].offset && cus[0].offset != data->d_size) { while (macoff >= cus[1].offset && cus[1].offset != data->d_size) ++cus; if (cus[0].files == NULL - && dwarf_getsrcfiles (&cus[0].die, &cus[0].files, NULL) != 0) + && dwarf_getsrcfiles (&cus[0].die, &cus[0].files, NULL) != 0) cus[0].files = (Dwarf_Files *) -1l; if (cus[0].files != (Dwarf_Files *) -1l) @@ -428,6 +428,9 @@ show_sysv (Elf *elf, const char *prefix, const char *fname, GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); + if (shdr == NULL) + INTERNAL_ERROR (fullname); + /* Ignore all sections which are not used at runtime. */ if ((shdr->sh_flags & SHF_ALLOC) != 0) { @@ -475,6 +478,9 @@ show_sysv_one_line (Elf *elf) GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); + if (unlikely (shdr == NULL)) + error (EXIT_FAILURE, 0, gettext ("cannot get section header")); + /* Ignore all sections which are not used at runtime. */ if ((shdr->sh_flags & SHF_ALLOC) == 0) continue; diff --git a/src/stack.c b/src/stack.c index c5f347e1..4daabce7 100644 --- a/src/stack.c +++ b/src/stack.c @@ -608,7 +608,7 @@ parse_opt (int key, char *arg __attribute__ ((unused)), if (core != NULL) { if (dwfl_core_file_attach (dwfl, core) < 0) - error (EXIT_BAD, 0, "dwfl_core_file_report: %s", dwfl_errmsg (-1)); + error (EXIT_BAD, 0, "dwfl_core_file_attach: %s", dwfl_errmsg (-1)); } /* Makes sure we are properly attached. */ diff --git a/src/strip.c b/src/strip.c index a73009d9..48792a70 100644 --- a/src/strip.c +++ b/src/strip.c @@ -1097,7 +1097,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, if (debug_fname != NULL) { /* Also create an ELF descriptor for the debug file */ - debugelf = elf_begin (debug_fd, ELF_C_WRITE_MMAP, NULL); + debugelf = elf_begin (debug_fd, ELF_C_WRITE, NULL); if (unlikely (gelf_newehdr (debugelf, gelf_getclass (elf)) == 0)) { error (0, 0, gettext ("cannot create new ehdr for file '%s': %s"), @@ -1975,6 +1975,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, && shndxdata->d_buf != NULL); size_t sidx = (sym->st_shndx != SHN_XINDEX ? sym->st_shndx : xshndx); + elf_assert (sidx < shnum); sec = shdr_info[sidx].idx; if (sec != 0) diff --git a/src/unstrip.c b/src/unstrip.c index 3495b1d9..fc878325 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -644,6 +644,7 @@ add_new_section_symbols (Elf_Scn *old_symscn, size_t old_shnum, GElf_Word shndx = SHN_UNDEF; GElf_Sym *sym = gelf_getsymshndx (old_symdata, shndxdata, i, &sym_mem, &shndx); + ELF_CHECK (sym != NULL, _("cannot get symbol table entry: %s")); ELF_CHECK (gelf_update_symshndx (symdata, shndxdata, i, sym, shndx), _("cannot update symbol table: %s")); @@ -677,6 +678,7 @@ add_new_section_symbols (Elf_Scn *old_symscn, size_t old_shnum, GElf_Word shndx = SHN_UNDEF; GElf_Sym *sym = gelf_getsymshndx (old_symdata, shndxdata, i, &sym_mem, &shndx); + ELF_CHECK (sym != NULL, _("cannot get symbol table entry: %s")); ELF_CHECK (gelf_update_symshndx (symdata, shndxdata, i + added, sym, shndx), _("cannot update symbol table: %s")); @@ -1326,6 +1328,7 @@ new_shstrtab (Elf *unstripped, size_t unstripped_shnum, Elf_Scn *scn = elf_getscn (unstripped, i + 1); GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); + ELF_CHECK (shdr != NULL, _("cannot get section header: %s")); const char *name = get_section_name (i + 1, shdr, shstrtab); unstripped_strent[i] = dwelf_strtab_add (strtab, name); ELF_CHECK (unstripped_strent[i] != NULL, @@ -1349,6 +1352,7 @@ new_shstrtab (Elf *unstripped, size_t unstripped_shnum, Elf_Scn *scn = elf_getscn (unstripped, i + 1); GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); + ELF_CHECK (shdr != NULL, _("cannot get section header: %s")); shdr->sh_name = dwelf_strent_off (unstripped_strent[i]); if (i + 1 == unstripped_shstrndx) shdr->sh_size = strtab_data->d_size; diff --git a/tests/ChangeLog b/tests/ChangeLog index b76c44d9..2900bd82 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,95 @@ +2019-07-26 Florian Weimer <fweimer@redhat.com> + Mark Wielaard <mark@klomp.org> + + * run-elfclassify.sh: New test. + * run-elfclassify-self.sh: Likewise. + * Makefile.sh (TESTS): Add run-elfclassify.sh and + run-elfclassify-self.sh. + (EXTRA_DIST): Likewise. + +2019-07-16 Mao Han <han_mao@c-sky.com> + + * hello_csky.ko.bz2: New testfile. + * run-addrcfi.sh: Add C-SKY testfile. + * run-strip-reloc.sh: Likewise. + * testfilecsky.bz2: New testfile. + * Makefile.am (EXTRA_DIST): Add hello_csky.ko.bz2 and + testfilecsky.bz2. + +2019-06-28 Mark Wielaard <mark@klomp.org> + + * Makefile.am (check_PROGRAMS): Add dwelf_elf_e_machine_string. + (TESTS): Add run-dwelf_elf_e_machine_string.sh. + (EXTRA_DIST): Likewise. + (dwelf_elf_e_machine_string_LDADD): New variable. + * dwelf_elf_e_machine_string.c: New file. + * run-dwelf_elf_e_machine_string.sh: New test. + +2019-07-01 Mark Wielaard <mark@klomp.org> + + * run-large-elf-file.sh: Add 2GB to mem_needed when running under + valgrind. + +2019-06-18 Mark Wielaard <mark@klomp.org> + + * Makefile.am (TESTS): Add run-large-elf-file.sh. + (EXTRA_DIST): Likewise. + * addsections.c (add_sections): Add sec_size argument, use it + as the size of the section data. + (main): Handle extra sec_size argument. Pass to add_sections. + * run-large-elf-file.sh: New test. + +2019-06-03 Mark Wielaard <mark@klomp.org> + + * elfcopy.c (copy_elf): When swapping the sh_offsets of two sections, + make sure they are actually next to each other. + +2019-05-12 Mark Wielaard <mark@klomp.org> + + * Makefile.am (check_PROGRAMS): Add elfrdwrnop. + (TESTS): Add run-reverse-sections.sh and + run-reverse-sections-self.sh. + (EXTRA_DIST): Likewise. + (elfrdwrnop): New variable. + * elfcopy.c (copy_elf): Add reverse_off argument. Record offsets + of sections and swap them when possible. + (main): Check for --reverse-off argument. Pass reverse_offs to + copy_elf. + * run-reverse-sections.sh: New test. + * run-reverse-sections-self.sh: Likewise. + * elfrdwrnop.c: New file. + +2019-05-10 Mark Wielaard <mark@klomp.org> + + * Makefile.am (TESTS): Add run-readelf-discr.sh. + (EXTRA_DIST): Likewise and add testfile-rng.debug.bz2 and + testfile-urng.debug.bz2. + * run-readelf-discr.sh: New test. + * testfile-rng.debug.bz2: New test file. + * testfile-urng.debug.bz2: Likewise. + +2019-04-30 Mark Wielaard <mark@klomp.org> + + * xlate_notes.c: New file. + * run-xlate-note.sh: New test. + * Makefile.am (check_PROGRAMS): Add xlate_notes. + (TESTS): Add run-xlate-note.sh. + (EXTRA_DIST): Likewise. + (xlate_notes_LDADD): New variable. + +2019-04-30 Mark Wielaard <mark@klomp.org> + + * backtrace-dwarf.c (frame_callback): Explicitly check symname is + NULL. + +2019-04-30 Mark Wielaard <mark@klomp.org> + + * backtrace.c (frame_callback): Explicitly check symname is NULL. + +2019-03-04 Mark Wielaard <mark@klomp.org> + + * backtrace.c (tgkill): Remove define. + 2019-01-24 Mark Wielaard <mark@klomp.org> * Makefile.am (system_elf_libelf_test_CPPFLAGS): Guard by diff --git a/tests/Makefile.am b/tests/Makefile.am index c74a6c1e..64857623 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -60,7 +60,8 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ fillfile dwarf_default_lower_bound dwarf-die-addr-die \ get-units-invalid get-units-split attr-integrate-skel \ all-dwarf-ranges unit-info next_cfi \ - elfcopy addsections + elfcopy addsections xlate_notes elfrdwrnop \ + dwelf_elf_e_machine_string asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \ asm-tst6 asm-tst7 asm-tst8 asm-tst9 @@ -83,6 +84,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-next-files.sh run-next-lines.sh \ run-get-pubnames.sh run-get-aranges.sh run-allfcts.sh \ run-show-abbrev.sh run-line2addr.sh hash \ + run-large-elf-file.sh \ newscn run-strip-test.sh run-strip-test2.sh \ run-strip-test3.sh run-strip-test4.sh run-strip-test5.sh \ run-strip-test6.sh run-strip-test7.sh run-strip-test8.sh \ @@ -156,9 +158,13 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-all-dwarf-ranges.sh run-unit-info.sh \ run-reloc-bpf.sh \ run-next-cfi.sh run-next-cfi-self.sh \ + run-reverse-sections.sh run-reverse-sections-self.sh \ run-copyadd-sections.sh run-copymany-sections.sh \ run-typeiter-many.sh run-strip-test-many.sh \ - run-strip-version.sh + run-strip-version.sh run-xlate-note.sh \ + run-readelf-discr.sh \ + run-dwelf_elf_e_machine_string.sh \ + run-elfclassify.sh run-elfclassify-self.sh if !BIARCH export ELFUTILS_DISABLE_BIARCH = 1 @@ -206,7 +212,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ testfile-nobitsalign.bz2 testfile-nobitsalign.strip.bz2 \ run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \ hello_ppc64.ko.bz2 hello_s390.ko.bz2 hello_aarch64.ko.bz2 \ - hello_m68k.ko.bz2 hello_riscv64.ko.bz2 \ + hello_m68k.ko.bz2 hello_riscv64.ko.bz2 hello_csky.ko.bz2 \ run-unstrip-test.sh run-unstrip-test2.sh \ testfile-info-link.bz2 testfile-info-link.debuginfo.bz2 \ testfile-info-link.stripped.bz2 run-unstrip-test3.sh \ @@ -223,6 +229,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ testfile11-debugframe.bz2 testfile12-debugframe.bz2 \ testfileaarch64-debugframe.bz2 testfilearm-debugframe.bz2 \ testfileppc32-debugframe.bz2 testfileppc64-debugframe.bz2 \ + testfilecsky.bz2 \ run-varlocs-self.sh run-exprlocs-self.sh \ run-find-prologues.sh run-allregs.sh run-native-test.sh \ run-addrname-test.sh run-dwfl-bug-offline-rel.sh \ @@ -417,12 +424,19 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-unit-info.sh run-next-cfi.sh run-next-cfi-self.sh \ testfile-riscv64.bz2 testfile-riscv64-s.bz2 \ testfile-riscv64-core.bz2 \ + run-reverse-sections.sh run-reverse-sections-self.sh \ run-copyadd-sections.sh run-copymany-sections.sh \ + run-large-elf-file.sh \ run-typeiter-many.sh run-strip-test-many.sh \ testfile-debug-rel-ppc64-g.o.bz2 \ testfile-debug-rel-ppc64-z.o.bz2 \ testfile-debug-rel-ppc64.o.bz2 \ - run-strip-version.sh testfile-version.bz2 + run-strip-version.sh testfile-version.bz2 \ + run-xlate-note.sh \ + run-readelf-discr.sh \ + testfile-rng.debug.bz2 testfile-urng.debug.bz2 \ + run-dwelf_elf_e_machine_string.sh \ + run-elfclassify.sh run-elfclassify-self.sh if USE_VALGRIND valgrind_cmd='valgrind -q --leak-check=full --error-exitcode=1' @@ -594,6 +608,9 @@ unit_info_LDADD = $(libdw) next_cfi_LDADD = $(libelf) $(libdw) elfcopy_LDADD = $(libelf) addsections_LDADD = $(libelf) +xlate_notes_LDADD = $(libelf) +elfrdwrnop_LDADD = $(libelf) +dwelf_elf_e_machine_string_LDADD = $(libelf) $(libdw) # We want to test the libelf header against the system elf.h header. # Don't include any -I CPPFLAGS. Except when we install our own elf.h. diff --git a/tests/addsections.c b/tests/addsections.c index cc8d0655..c1b0fa81 100644 --- a/tests/addsections.c +++ b/tests/addsections.c @@ -70,9 +70,9 @@ setshstrndx (Elf *elf, size_t ndx) /* Will add nr new '.extra' sections and a new '.new_shstrtab' section at the end. */ static void -add_sections (const char *name, size_t nr, int use_mmap) +add_sections (const char *name, size_t nr, int use_mmap, size_t sec_size) { - printf ("add_sections '%s': %zd\n", name, nr); + printf ("add_sections '%s': %zd (sec_size: %zd)\n", name, nr, sec_size); int fd = open (name, O_RDWR); if (fd < 0) @@ -149,6 +149,25 @@ add_sections (const char *name, size_t nr, int use_mmap) exit (1); } + void *buf; + size_t bufsz; + if (sec_size == 0) + { + buf = strdup ("extra"); + bufsz = strlen ("extra") + 1; + } + else + { + buf = malloc (sec_size); + if (buf == NULL) + { + printf ("cannot allocate buffer data of %zd bytes\n", sec_size); + exit (1); + } + memset (buf, 0xAA, sec_size); + bufsz = sec_size; + } + // Add lots of .extra sections... size_t cnt = 0; while (cnt++ < nr) @@ -169,8 +188,8 @@ add_sections (const char *name, size_t nr, int use_mmap) exit (1); } - data->d_size = strlen ("extra") + 1; - data->d_buf = "extra"; + data->d_size = bufsz; + data->d_buf = buf; data->d_type = ELF_T_BYTE; data->d_align = 1; @@ -274,6 +293,7 @@ add_sections (const char *name, size_t nr, int use_mmap) exit (1); } + free (buf); free (new_shstrtab_buf); } @@ -282,10 +302,11 @@ main (int argc, char *argv[]) { elf_version (EV_CURRENT); - /* Takes the given file, and adds the given number of sections. */ - if (argc < 3 || argc > 4) + /* Takes the given file, and adds the given number of sections. + Optionally using mmap and optionally using a given section size. */ + if (argc < 3 || argc > 5) { - fprintf (stderr, "addsections [--mmap] nr elf.file\n"); + fprintf (stderr, "addsections [--mmap] nr elf.file [sec_size]\n"); exit (1); } @@ -298,8 +319,13 @@ main (int argc, char *argv[]) } size_t nr = atoi (argv[argn++]); - const char *file = argv[argn]; - add_sections (file, nr, use_mmap); + const char *file = argv[argn++]; + + size_t sec_size = 0; + if (argn < argc) + sec_size = atol (argv[argn++]); + + add_sections (file, nr, use_mmap, sec_size); return 0; } diff --git a/tests/backtrace-dwarf.c b/tests/backtrace-dwarf.c index dfbf1856..f446bc3b 100644 --- a/tests/backtrace-dwarf.c +++ b/tests/backtrace-dwarf.c @@ -101,7 +101,7 @@ frame_callback (Dwfl_Frame *state, void *frame_arg) if (mod) symname = dwfl_module_addrname (mod, pc_adjusted); - printf ("%#" PRIx64 "\t%s\n", (uint64_t) pc, symname); + printf ("%#" PRIx64 "\t%s\n", (uint64_t) pc, symname ?: "<null>"); if (symname && (strcmp (symname, "main") == 0 || strcmp (symname, ".main") == 0)) diff --git a/tests/backtrace.c b/tests/backtrace.c index 05e8ef82..36c8b8c4 100644 --- a/tests/backtrace.c +++ b/tests/backtrace.c @@ -185,7 +185,7 @@ frame_callback (Dwfl_Frame *state, void *frame_arg) symname = dwfl_module_addrname (mod, pc_adjusted); printf ("#%2d %#" PRIx64 "%4s\t%s\n", *framenop, (uint64_t) pc, - ! isactivation ? "- 1" : "", symname); + ! isactivation ? "- 1" : "", symname ?: "<null>"); pid_t tid = dwfl_thread_tid (thread); callback_verify (tid, *framenop, pc, symname, dwfl); (*framenop)++; @@ -296,7 +296,6 @@ prepare_thread (pid_t pid2 __attribute__ ((unused)), #include <asm/unistd.h> #include <unistd.h> -#define tgkill(pid, tid, sig) syscall (__NR_tgkill, (pid), (tid), (sig)) static void report_pid (Dwfl *dwfl, pid_t pid) diff --git a/tests/dwelf_elf_e_machine_string.c b/tests/dwelf_elf_e_machine_string.c new file mode 100644 index 00000000..1df2b233 --- /dev/null +++ b/tests/dwelf_elf_e_machine_string.c @@ -0,0 +1,64 @@ +/* Test program for dwelf_elf_e_machine_string + Copyright (C) 2019 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <errno.h> +#include <inttypes.h> +#include <stdio.h> +#include <stdlib.h> +#include <limits.h> +#include <string.h> +#include <unistd.h> + +#include ELFUTILS_HEADER(dwelf) + +int +main (int argc, char **argv) +{ + int i; + for (i = 1; i < argc; i++) + { + long val; + int em; + const char *machine; + + if (strncmp ("0x", argv[i], 2) == 0) + val = strtol (&argv[i][2], NULL, 16); + else + val = strtol (argv[i], NULL, 10); + + if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN)) + || (errno != 0 && val == 0)) + { + perror ("strtol"); + exit (EXIT_FAILURE); + } + + em = val; + assert (em == val); + + machine = dwelf_elf_e_machine_string (em); + printf ("0x%x %s\n", em, machine); + assert (machine != NULL); + } + + return 0; +} diff --git a/tests/elfcopy.c b/tests/elfcopy.c index 9000cc96..4542222e 100644 --- a/tests/elfcopy.c +++ b/tests/elfcopy.c @@ -69,9 +69,11 @@ setshstrndx (Elf *elf, size_t ndx) /* Copies all elements of an ELF file either using mmap or read. */ static void -copy_elf (const char *in, const char *out, bool use_mmap) +copy_elf (const char *in, const char *out, bool use_mmap, bool reverse_offs) { - printf ("\ncopy_elf: %s -> %s (%s)\n", in, out, use_mmap ? "mmap" : "read"); + printf ("\ncopy_elf: %s -> %s (%s,%s)\n", in, out, + use_mmap ? "mmap" : "read", + reverse_offs ? "reverse" : "same"); /* Existing ELF file. */ int fda = open (in, O_RDONLY); @@ -182,8 +184,28 @@ copy_elf (const char *in, const char *out, bool use_mmap) } } + GElf_Off *offs = NULL; + size_t shnum; + if (reverse_offs) + { + if (elf_getshdrnum (elfa, &shnum) < 0) + { + printf ("couldn't get shdrnum: %s\n", elf_errmsg (-1)); + exit (1); + } + + offs = (GElf_Off *) malloc (shnum * sizeof (GElf_Off)); + if (offs == NULL) + { + printf ("couldn't allocate memory for offs\n"); + exit (1); + } + } + /* Copy all sections, headers and data. */ Elf_Scn *scn = NULL; + size_t last_off = 0; + GElf_Shdr last_shdr = { .sh_type = SHT_NULL }; while ((scn = elf_nextscn (elfa, scn)) != NULL) { /* Get the header. */ @@ -194,6 +216,35 @@ copy_elf (const char *in, const char *out, bool use_mmap) exit (1); } + if (reverse_offs) + { + offs[last_off] = shdr.sh_offset; + + if (last_shdr.sh_type != SHT_NULL + && last_shdr.sh_addralign == shdr.sh_addralign + && shdr.sh_addralign == 1 + && last_shdr.sh_type != SHT_NOBITS + && shdr.sh_type != SHT_NOBITS + && last_shdr.sh_offset + last_shdr.sh_size == shdr.sh_offset + && (phnum == 0 + || ((shdr.sh_flags & SHF_ALLOC) == 0 + && (last_shdr.sh_flags & SHF_ALLOC) == 0))) + { + printf ("Swapping offsets of section %zd and %zd\n", + last_off, last_off + 1); + GElf_Word off = offs[last_off - 1]; + offs[last_off - 1] = off + shdr.sh_size; + offs[last_off] = off; + last_shdr.sh_type = SHT_NULL; + } + else + { + last_shdr = shdr; + offs[last_off] = shdr.sh_offset; + } + last_off++; + } + /* Create new section. */ Elf_Scn *new_scn = elf_newscn (elfb); if (new_scn == NULL) @@ -223,9 +274,34 @@ copy_elf (const char *in, const char *out, bool use_mmap) } } - /* Write everything to disk. If there are any phdrs then we want - the exact same layout. Do we want ELF_F_PERMISSIVE? */ - if (phnum > 0) + if (reverse_offs) + { + last_off = 0; + scn = NULL; + while ((scn = elf_nextscn (elfb, scn)) != NULL) + { + GElf_Shdr shdr; + if (gelf_getshdr (scn, &shdr) == NULL) + { + printf ("couldn't get shdr for updating: %s\n", elf_errmsg (-1)); + exit (1); + } + + shdr.sh_offset = offs[last_off++]; + + if (gelf_update_shdr (scn, &shdr) == 0) + { + printf ("couldn't update shdr sh_off: %s\n", elf_errmsg (-1)); + exit (1); + } + } + free (offs); + } + + /* Write everything to disk. If there are any phdrs, or we want to + update the offsets, then we want the exact same layout. Do we + want ELF_F_PERMISSIVE? */ + if (phnum > 0 || reverse_offs) elf_flagelf (elfb, ELF_C_SET, ELF_F_LAYOUT); if (elf_update (elfb, ELF_C_WRITE) < 0) { @@ -264,9 +340,9 @@ main (int argc, const char *argv[]) elf_version (EV_CURRENT); /* Takes the given file, and create a new identical one. */ - if (argc < 3 || argc > 4) + if (argc < 3 || argc > 5) { - fprintf (stderr, "elfcopy [--mmap] in.elf out.elf\n"); + fprintf (stderr, "elfcopy [--mmap] [--reverse-offs] in.elf out.elf\n"); exit (1); } @@ -278,9 +354,16 @@ main (int argc, const char *argv[]) argn++; } + bool reverse_offs = false; + if (strcmp (argv[argn], "--reverse-offs") == 0) + { + reverse_offs = true; + argn++; + } + const char *in = argv[argn++]; const char *out = argv[argn]; - copy_elf (in, out, use_mmap); + copy_elf (in, out, use_mmap, reverse_offs); return 0; } diff --git a/tests/elfrdwrnop.c b/tests/elfrdwrnop.c new file mode 100644 index 00000000..997150b9 --- /dev/null +++ b/tests/elfrdwrnop.c @@ -0,0 +1,100 @@ +/* Test program for reading and writing out the same file in-place + Copyright (C) 2019 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <errno.h> +#include <fcntl.h> +#include <inttypes.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include ELFUTILS_HEADER(elf) +#include <gelf.h> + + +int +main (int argc, const char *argv[]) +{ + /* Takes the given file, and create a new identical one. */ + if (argc != 2) + { + fprintf (stderr, "elfrdwrnop elf-file\n"); + exit (1); + } + + elf_version (EV_CURRENT); + + const char *name = argv[1]; + printf ("elfrdwrdnop %s\n", name); + + int fd = open (name, O_RDWR); + if (fd < 0) + { + fprintf (stderr, "Couldn't open file '%s': %s\n", + name, strerror (errno)); + exit (1); + } + + Elf *elf = elf_begin (fd, ELF_C_RDWR, NULL); + if (elf == NULL) + { + fprintf (stderr, "Couldn't open ELF file '%s': %s\n", + name, elf_errmsg (-1)); + exit (1); + } + + /* Write everything to disk. If there are any phdrs, then we want + the exact same layout. */ + size_t phnum; + if (elf_getphdrnum (elf, &phnum) != 0) + { + printf ("cannot get phdrs: %s\n", elf_errmsg (-1)); + exit (1); + } + + if (phnum > 0) + elf_flagelf (elf, ELF_C_SET, ELF_F_LAYOUT); + + if (elf_update (elf, ELF_C_WRITE) < 0) + { + printf ("failure in elf_update: %s\n", elf_errmsg (-1)); + exit (1); + } + + if (elf_end (elf) != 0) + { + printf ("couldn't cleanup elf '%s': %s\n", name, elf_errmsg (-1)); + exit (1); + } + + if (close (fd) != 0) + { + printf ("couldn't close '%s': %s\n", name, strerror (errno)); + exit (1); + } + + return 0; +} diff --git a/tests/hello_csky.ko.bz2 b/tests/hello_csky.ko.bz2 Binary files differnew file mode 100644 index 00000000..ed98c7f6 --- /dev/null +++ b/tests/hello_csky.ko.bz2 diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh index 76db7d2d..e9f55644 100755 --- a/tests/run-addrcfi.sh +++ b/tests/run-addrcfi.sh @@ -3671,3 +3671,4 @@ testrun_compare ${abs_builddir}/addrcfi -e testfile-x32 0x00400390 <<\EOF control reg66 (%fsw): undefined handle_cfi no CFI (.debug_frame): no error EOF + diff --git a/tests/run-dwelf_elf_e_machine_string.sh b/tests/run-dwelf_elf_e_machine_string.sh new file mode 100755 index 00000000..ba6d0e63 --- /dev/null +++ b/tests/run-dwelf_elf_e_machine_string.sh @@ -0,0 +1,31 @@ +#! /bin/bash +# Test to make sure all EM values in elf.h are recognized +# Copyright (C) 2019 Red Hat, 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 + +# Get all known EM values from elf.h and pass them through the +# preprocessor to get the numbers. Call dwelf_elf_e_machine_string on +# all of them. +EM_VALUES=$(grep ^\#define\ EM_ ${abs_srcdir}/../libelf/elf.h \ + | cut -f2 -d\ | cut -f1 | grep -v ^EM_NUM$ | xargs echo) +# echo "EM_VALUES: $EM_VALUES" +EM_NUMBERS=$((cat ${abs_srcdir}/../libelf/elf.h; echo "$EM_VALUES") \ + | gcc -E - | tail -1) +# echo "EM_NUMBERS: $EM_NUMBERS" + +testrun ${abs_top_builddir}/tests/dwelf_elf_e_machine_string $EM_NUMBERS diff --git a/tests/run-elfclassify-self.sh b/tests/run-elfclassify-self.sh new file mode 100755 index 00000000..c48ab9c9 --- /dev/null +++ b/tests/run-elfclassify-self.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# Copyright (C) 2019 Red Hat, 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 + +testrun_on_self ${abs_top_builddir}/src/elfclassify --elf-file +testrun_on_self ${abs_top_builddir}/src/elfclassify --not-core +testrun_on_self ${abs_top_builddir}/src/elfclassify --unstripped +testrun_on_self ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module + +testrun_on_self_lib ${abs_top_builddir}/src/elfclassify --shared +testrun_on_self_lib ${abs_top_builddir}/src/elfclassify --loadable +testrun_on_self_lib ${abs_top_builddir}/src/elfclassify --not-executable +testrun_on_self_lib ${abs_top_builddir}/src/elfclassify --not-program + +testrun_on_self_exe ${abs_top_builddir}/src/elfclassify --executable +testrun_on_self_exe ${abs_top_builddir}/src/elfclassify --program +testrun_on_self_exe ${abs_top_builddir}/src/elfclassify --loadable +testrun_on_self_exe ${abs_top_builddir}/src/elfclassify --not-shared + +testrun ${abs_top_builddir}/src/elfclassify --not-shared $self_test_files_obj +testrun ${abs_top_builddir}/src/elfclassify --not-executable $self_test_files_obj diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh new file mode 100755 index 00000000..5a849bbd --- /dev/null +++ b/tests/run-elfclassify.sh @@ -0,0 +1,327 @@ +#!/bin/sh +# Copyright (C) 2019 Red Hat, 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 + +core_files=\ +"testfile_aarch64_core \ + testfile-backtrace-demangle.core \ + testfiledwarfinlines.core \ + testfile_i686_core \ + testfile-m68k-core \ + testfile-riscv64-core \ + backtrace.aarch64.core \ + backtrace.i386.core \ + backtrace.ppc.core \ + backtrace.s390.core" + +testfiles $core_files + +echo "elfclassify --core" +testrun ${abs_top_builddir}/src/elfclassify --core $core_files +testrun_compare ${abs_top_builddir}/src/elfclassify --core --print $core_files <<EOF +$(echo $core_files | sed -e "s/ /\n/g") +EOF + +echo "core files are not programs" +testrun ${abs_top_builddir}/src/elfclassify --not-program $core_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-program --print $core_files <<EOF +$(echo $core_files | sed -e "s/ /\n/g") +EOF + +echo "core files are not shared" +testrun ${abs_top_builddir}/src/elfclassify --not-shared $core_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-shared --print $core_files <<EOF +$(echo $core_files | sed -e "s/ /\n/g") +EOF + +echo "core files are not kernel-modules" +testrun ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module $core_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module --print $core_files <<EOF +$(echo $core_files | sed -e "s/ /\n/g") +EOF + +echo "core files are not debug-only" +testrun ${abs_top_builddir}/src/elfclassify --not-debug-only $core_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-debug-only --print $core_files <<EOF +$(echo $core_files | sed -e "s/ /\n/g") +EOF + +object_files=\ +"debug-ranges-no-lowpc.o \ + testfile-annobingroup-i386.o \ + testfile-bpf-dis1.o \ + testfile-debug-rel-g.o \ + testfile-gnu-property-note.o" + +testfiles $object_files + +echo "elfclassify --elf-file" +testrun ${abs_top_builddir}/src/elfclassify --elf-file $object_files +testrun_compare ${abs_top_builddir}/src/elfclassify --elf-file --print $object_files <<EOF +$(echo $object_files | sed -e "s/ /\n/g") +EOF + +echo "object files are not archives" +testrun ${abs_top_builddir}/src/elfclassify --not-elf-archive $object_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-elf-archive --print $object_files <<EOF +$(echo $object_files | sed -e "s/ /\n/g") +EOF + +echo "object files are not core files" +testrun ${abs_top_builddir}/src/elfclassify --not-core $object_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-core --print $object_files <<EOF +$(echo $object_files | sed -e "s/ /\n/g") +EOF + +echo "object files are not program files" +testrun ${abs_top_builddir}/src/elfclassify --not-program $object_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-program --print $object_files <<EOF +$(echo $object_files | sed -e "s/ /\n/g") +EOF + +echo "object files are not shared files" +testrun ${abs_top_builddir}/src/elfclassify --not-shared $object_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-shared --print $object_files <<EOF +$(echo $object_files | sed -e "s/ /\n/g") +EOF + +echo "object files are not kernel modules" +testrun ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module $object_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module --print $object_files <<EOF +$(echo $object_files | sed -e "s/ /\n/g") +EOF + +echo "object files are not debug-only files" +testrun ${abs_top_builddir}/src/elfclassify --not-debug-only $object_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-debug-only --print $object_files <<EOF +$(echo $object_files | sed -e "s/ /\n/g") +EOF + +ar_files="testarchive64.a" + +testfiles $ar_files + +echo "elfclassify --elf-archive" +testrun ${abs_top_builddir}/src/elfclassify --elf-archive $ar_files +testrun_compare ${abs_top_builddir}/src/elfclassify --elf-archive --print $ar_files <<EOF +$(echo $ar_files | sed -e "s/ /\n/g") +EOF + +echo "archives are not elf-files" +testrun ${abs_top_builddir}/src/elfclassify --not-elf-file $ar_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-elf-file --print $ar_files <<EOF +$(echo $ar_files | sed -e "s/ /\n/g") +EOF + +echo "archives are not core files" +testrun ${abs_top_builddir}/src/elfclassify --not-core $ar_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-core --print $ar_files <<EOF +$(echo $ar_files | sed -e "s/ /\n/g") +EOF + +echo "archives are not program files" +testrun ${abs_top_builddir}/src/elfclassify --not-program $ar_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-program --print $ar_files <<EOF +$(echo $ar_files | sed -e "s/ /\n/g") +EOF + +echo "archives are not shared files" +testrun ${abs_top_builddir}/src/elfclassify --not-shared $ar_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-shared --print $ar_files <<EOF +$(echo $ar_files | sed -e "s/ /\n/g") +EOF + +lib_files=\ +"testfile52-32.noshdrs.so \ + libtestfile_multi_shared.so \ + testfile52-32.prelink.so \ + testfile52-32.so + testfile54-64.noshdrs.so \ + testfile54-64.prelink.so \ + testfile54-64.so \ + testlib_dynseg.so" + +testfiles $lib_files + +echo "elfclassify --shared" +testrun ${abs_top_builddir}/src/elfclassify --shared $lib_files +testrun_compare ${abs_top_builddir}/src/elfclassify --shared --print $lib_files <<EOF +$(echo $lib_files | sed -e "s/ /\n/g") +EOF + +echo "shared files are loadable" +testrun ${abs_top_builddir}/src/elfclassify --loadable $lib_files +testrun_compare ${abs_top_builddir}/src/elfclassify --loadable --print $lib_files <<EOF +$(echo $lib_files | sed -e "s/ /\n/g") +EOF + +echo "shared files are not executables" +testrun ${abs_top_builddir}/src/elfclassify --not-executable $lib_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-executable --print $lib_files <<EOF +$(echo $lib_files | sed -e "s/ /\n/g") +EOF + +echo "shared files are not debug-only" +testrun ${abs_top_builddir}/src/elfclassify --not-debug-only $lib_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-debug-only --print $lib_files <<EOF +$(echo $lib_files | sed -e "s/ /\n/g") +EOF + +echo "shared files are not kernel modules" +testrun ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module $lib_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module --print $lib_files <<EOF +$(echo $lib_files | sed -e "s/ /\n/g") +EOF + +exe_files=\ +"backtrace.aarch64.exec \ + backtrace.i386.exec \ + backtrace.ppc.exec \ + backtrace.s390x.exec \ + testfile70.exec \ + test-offset-loop \ + testfilebaztab \ + testfilebaztabppc64" + +testfiles $exe_files + +echo "elfclassify --program" +testrun ${abs_top_builddir}/src/elfclassify --program $exe_files +testrun_compare ${abs_top_builddir}/src/elfclassify --program --print $exe_files <<EOF +$(echo $exe_files | sed -e "s/ /\n/g") +EOF + +echo "programs are executables (in this case)" +testrun ${abs_top_builddir}/src/elfclassify --executable $exe_files +testrun_compare ${abs_top_builddir}/src/elfclassify --executable --print $exe_files <<EOF +$(echo $exe_files | sed -e "s/ /\n/g") +EOF + +echo "programs are not shared libraries (in this case)" +testrun ${abs_top_builddir}/src/elfclassify --not-shared $exe_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-shared --print $exe_files <<EOF +$(echo $exe_files | sed -e "s/ /\n/g") +EOF + +echo "programs are not kernel-modules" +testrun ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module $exe_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-linux-kernel-module --print $exe_files <<EOF +$(echo $exe_files | sed -e "s/ /\n/g") +EOF + +echo "programs are not debug-only" +testrun ${abs_top_builddir}/src/elfclassify --not-debug-only $exe_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-debug-only --print $exe_files <<EOF +$(echo $exe_files | sed -e "s/ /\n/g") +EOF + +kmod_files=\ +"hello_aarch64.ko \ + hello_csky.ko \ + hello_i386.ko \ + hello_m68k.ko \ + hello_ppc64.ko \ + hello_riscv64.ko \ + hello_s390.ko \ + hello_x86_64.ko" + +testfiles $kmod_files + +echo "elfclassify --linux-kernel-module" +testrun ${abs_top_builddir}/src/elfclassify --linux-kernel-module $kmod_files +testrun_compare ${abs_top_builddir}/src/elfclassify --linux-kernel-module --print $kmod_files <<EOF +$(echo $kmod_files | sed -e "s/ /\n/g") +EOF + +echo "kmods are unstripped" +testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files +testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <<EOF +$(echo $kmod_files | sed -e "s/ /\n/g") +EOF + +echo "kmods are not debug-only" +testrun ${abs_top_builddir}/src/elfclassify --not-debug-only $kmod_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-debug-only --print $kmod_files <<EOF +$(echo $kmod_files | sed -e "s/ /\n/g") +EOF + +echo "kmods are not loabable (in the normal sense)" +testrun ${abs_top_builddir}/src/elfclassify --not-loadable $kmod_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-loadable --print $kmod_files <<EOF +$(echo $kmod_files | sed -e "s/ /\n/g") +EOF + +echo "gnu compressed kmods are unstripped" +${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files +testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files +testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <<EOF +$(echo $kmod_files | sed -e "s/ /\n/g") +EOF + +debug_files=\ +"testfile15.debug \ + testfile35.debug \ + testfile40.debug \ + testfile48.debug \ + testfile53-32.debug \ + testfile53-64.debug \ + testfilebazdbg.debug \ + testfilebazdbgppc64.debug \ + addrx_constx-4.dwo \ + addrx_constx-5.dwo" + +testfiles $debug_files + +echo "elfclassify --debug-only" +testrun ${abs_top_builddir}/src/elfclassify --debug-only $debug_files +testrun_compare ${abs_top_builddir}/src/elfclassify --debug-only --print $debug_files <<EOF +$(echo $debug_files | sed -e "s/ /\n/g") +EOF + +echo "debug-only files are unstripped" +testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files +testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $debug_files <<EOF +$(echo $debug_files | sed -e "s/ /\n/g") +EOF + +echo "debug-only files are not programs" +testrun ${abs_top_builddir}/src/elfclassify --not-program $debug_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-program --print $debug_files <<EOF +$(echo $debug_files | sed -e "s/ /\n/g") +EOF + +echo "debug-only files are not shared" +testrun ${abs_top_builddir}/src/elfclassify --not-shared $debug_files +testrun_compare ${abs_top_builddir}/src/elfclassify --not-shared --print $debug_files <<EOF +$(echo $debug_files | sed -e "s/ /\n/g") +EOF + +echo "compress the debug sections and try again" +${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files + +echo "again unstripped" +testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files +testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $debug_files <<EOF +$(echo $debug_files | sed -e "s/ /\n/g") +EOF + +echo "again debug-only" +testrun ${abs_top_builddir}/src/elfclassify --debug-only $debug_files +testrun_compare ${abs_top_builddir}/src/elfclassify --debug-only --print $debug_files <<EOF +$(echo $debug_files | sed -e "s/ /\n/g") +EOF diff --git a/tests/run-large-elf-file.sh b/tests/run-large-elf-file.sh new file mode 100755 index 00000000..6146cfed --- /dev/null +++ b/tests/run-large-elf-file.sh @@ -0,0 +1,114 @@ +#! /bin/bash +# Copyright (C) 2019 Red Hat, 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 + +# Only run on 64bit systems, 32bit systems don't support > 4GB +# ELF files. +long_bit=$(getconf LONG_BIT) +echo "long_bit: $long_bit" +if test $long_bit -ne 64; then + echo "Only 64bit systems can create > 4GB ELF files" + exit 77 +fi + +# These tests need lots of disk space since they test files > 4GB. +# Skip if there just isn't enough (2.5 * 4 = 10GB). +space_available=$[$(stat -f --format="%a*%S" .)/(1024 * 1024 * 1024)] +echo "space_available: $space_available" +if test $space_available -lt 10; then + echo "Not enough disk space, need at least 10GB available" + exit 77 +fi + +# Make sure the files fit into memory, assume 6GB needed (2.5 * 2 + 1 extra). +# Running under valgrind might need even more. +mem_needed=6 +if [ "x$VALGRIND_CMD" != "x" ]; then + mem_needed=$[${mem_needed} + 2] +fi +echo "mem_needed: $mem_needed" +mem_available=$(free -g | grep ^Mem: | awk -F ' +' '{print $7}') +echo "mem_available: $mem_available" +if test $mem_available -lt $mem_needed; then + echo "Need at least ${mem_needed}GB free available memory" + exit 77 +fi + +# Make sure the disk is reasonably fast, should be able to write 100MB/s +fast_disk=1 +timeout -s9 10s dd conv=fsync if=/dev/zero of=tempfile bs=1M count=1K \ + || fast_disk=0; rm tempfile +if test $fast_disk -eq 0; then + echo "File system not fast enough, need at least 100MB/s" + exit 77 +fi + +# NOTE: test file will be mangled and removed! +test_file () +{ + in_file="$1" + readelf_out="${in_file}.readelf.out" + out_file_strip="${in_file}.strip" + out_file_debug="${in_file}.debug" + + testfiles ${in_file} + tempfiles ${readelf_out} ${out_file_mmap} ${out_file_strip} ${out_file_debug} + + # Add two 2GB sections to the file. + echo "addsections 2 ${in_file} 2147483648" + testrun ${abs_builddir}/addsections 2 ${in_file} 2147483648 + testrun ${abs_top_builddir}/src/readelf -S ${in_file} > ${readelf_out} + nr=$(grep '.extra' ${readelf_out} | wc -l) + if test ${nr} != 2; then + # Show what went wrong + cat ${readelf_out} + exit 1 + fi + + echo "strip -o ${out_file_strip} -f ${out_file_debug} ${in_file}" + testrun ${abs_top_builddir}/src/strip -o ${out_file_strip} \ + -f ${out_file_debug} ${in_file} + + echo "elflint --gnu ${out_file_strip}" + testrun ${abs_top_builddir}/src/elflint --gnu ${out_file_strip} + + echo "elflint --gnu -d ${out_file_debug}" + testrun ${abs_top_builddir}/src/elflint --gnu -d ${out_file_debug} + + # Now test unstrip recombining those files. + echo "unstrip ${out_file_strip} ${out_file_debug}" + testrun ${abs_top_builddir}/src/unstrip ${out_file_strip} ${out_file_debug} + + echo "elfcmp ${out_file} ${out_file_strip}" + testrun ${abs_top_builddir}/src/elfcmp ${in_file} ${out_file_debug} + + # Remove the temp files immediately, they are big... + rm -f ${in_file} ${out_file_strip} ${out_file_debug} +} + +# A collection of random testfiles to test 64bit, little/big endian +# and non-ET_REL (with phdrs)/ET_REL (without phdrs). +# Don't test 32bit, they cannot go beyond 4GB. + +# 64bit, little endian, rel +test_file testfile38 + +# 64bit, big endian, non-rel +test_file testfile27 + +exit 0 diff --git a/tests/run-readelf-discr.sh b/tests/run-readelf-discr.sh new file mode 100755 index 00000000..dc84d827 --- /dev/null +++ b/tests/run-readelf-discr.sh @@ -0,0 +1,337 @@ +#! /bin/sh +# Copyright (C) 2019 Red Hat, 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 + +# = rng.ads = +# package Rng is +# +# type Rec (I : Integer) is record +# case I is +# when Positive => +# case I is +# when 1..15 | 17 | 23 => +# null; +# when others => +# J : Integer; +# end case; +# when -52..-1 => +# Q: Integer; +# when -64 => +# R: Boolean; +# when others => +# null; +# end case; +# end record; +# +# R : Rec (1); +# +# end Rng; + +# = urng.ads = +# +# package Urng is +# +# type Unsigned is mod 65536; +# type Rec (U : Unsigned) is record +# case U is +# when 17 | 23 | 32768..65535 => +# null; +# when 256 => +# B: Boolean; +# when others => +# I : Integer; +# end case; +# end record; +# +# R : Rec (1); +# +# end Urng; + +# gcc -c -g -fgnat-encodings=minimal -gstrict-dwarf rng.ads +# eu-strip -g -f rng.debug rng.o +# gcc -c -g -fgnat-encodings=minimal -gstrict-dwarf urng.ads +# eu-strip -g -f urng.debug urng.o + +testfiles testfile-rng.debug testfile-urng.debug + +testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-rng.debug testfile-urng.debug <<EOF + +testfile-rng.debug: + + +DWARF section [ 5] '.debug_info' at offset 0x40: + [Offset] + Compilation unit at offset 0: + Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4 + [ b] compile_unit abbrev: 1 + producer (strp) "GNU Ada 9.1.1 20190503 (Red Hat 9.1.1-1) -g -fgnat-encodings=minimal -gstrict-dwarf -mtune=generic -march=x86-64" + language (data1) Ada95 (13) + name (strp) "rng.ads" + comp_dir (strp) "/home/mark" + low_pc (addr) 000000000000000000 + high_pc (data8) 2016 (0x00000000000007e0) + stmt_list (sec_offset) 0 + [ 2d] structure_type abbrev: 2 + name (strp) "rng__rec" + byte_size (exprloc) + [ 0] push_object_address + [ 1] deref_size 4 + [ 3] call4 [ c6] + [ 8] plus_uconst 7 + [10] const1s -4 + [12] and + decl_file (data1) rng.ads (1) + decl_line (data1) 3 + decl_column (data1) 9 + sibling (ref4) [ ab] + [ 47] member abbrev: 3 + name (string) "i" + decl_file (data1) rng.ads (1) + decl_line (data1) 3 + decl_column (data1) 14 + type (ref4) [ fe] + data_member_location (data1) 0 + [ 52] variant_part abbrev: 4 + discr (ref4) [ 47] + [ 57] variant abbrev: 5 + discr_list (block1) range 1..2147483647 + sibling (ref4) [ 81] + [ 64] variant_part abbrev: 4 + discr (ref4) [ 47] + [ 69] variant abbrev: 6 + discr_list (block1) range 1..15, label 17, label 23 + [ 72] variant abbrev: 7 + [ 73] member abbrev: 3 + name (string) "j" + decl_file (data1) rng.ads (1) + decl_line (data1) 10 + decl_column (data1) 19 + type (ref4) [ fe] + data_member_location (data1) 4 + [ 81] variant abbrev: 5 + discr_list (block1) range -52..-1 + sibling (ref4) [ 96] + [ 8a] member abbrev: 3 + name (string) "q" + decl_file (data1) rng.ads (1) + decl_line (data1) 13 + decl_column (data1) 13 + type (ref4) [ fe] + data_member_location (data1) 4 + [ 96] variant abbrev: 8 + discr_value (sdata) -64 + sibling (ref4) [ a8] + [ 9c] member abbrev: 3 + name (string) "r" + decl_file (data1) rng.ads (1) + decl_line (data1) 15 + decl_column (data1) 13 + type (ref4) [ 105] + data_member_location (data1) 4 + [ a8] variant abbrev: 9 + [ ab] dwarf_procedure abbrev: 10 + location (exprloc) + [ 0] dup + [ 1] lit0 + [ 2] gt + [ 3] over + [ 4] lit15 + [ 5] le + [ 6] and + [ 7] over + [ 8] lit17 + [ 9] eq + [10] or + [11] over + [12] lit23 + [13] eq + [14] or + [15] bra 22 + [18] lit4 + [19] skip 23 + [22] lit0 + [23] swap + [24] drop + [ c6] dwarf_procedure abbrev: 10 + location (exprloc) + [ 0] dup + [ 1] lit0 + [ 2] gt + [ 3] bra 36 + [ 6] dup + [ 7] const1s -52 + [ 9] lt + [10] over + [11] lit0 + [12] ge + [13] or + [14] bra 21 + [17] lit4 + [18] skip 33 + [21] dup + [22] const1s -64 + [24] eq + [25] bra 32 + [28] lit0 + [29] skip 33 + [32] lit4 + [33] skip 52 + [36] dup + [37] call4 [ ab] + [42] plus_uconst 3 + [44] const1s -4 + [46] and + [47] plus_uconst 3 + [49] const1s -4 + [51] and + [52] swap + [53] drop + [ fe] base_type abbrev: 11 + byte_size (data1) 4 + encoding (data1) signed (5) + name (strp) "integer" + artificial (flag_present) yes + [ 105] base_type abbrev: 12 + byte_size (data1) 1 + encoding (data1) boolean (2) + name (strp) "boolean" + [ 10c] variable abbrev: 13 + name (strp) "rng__r" + decl_file (data1) rng.ads (1) + decl_line (data1) 21 + decl_column (data1) 4 + type (ref4) [ 2d] + external (flag_present) yes + location (exprloc) + [ 0] addr 0x7e4 + [ 122] subprogram abbrev: 14 + external (flag_present) yes + name (strp) "rng___elabs" + artificial (flag_present) yes + low_pc (addr) 0x0000000000000734 + high_pc (data8) 22 (0x000000000000074a) + frame_base (exprloc) + [ 0] call_frame_cfa + +testfile-urng.debug: + + +DWARF section [ 5] '.debug_info' at offset 0x40: + [Offset] + Compilation unit at offset 0: + Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4 + [ b] compile_unit abbrev: 1 + producer (strp) "GNU Ada 9.1.1 20190503 (Red Hat 9.1.1-1) -g -fgnat-encodings=minimal -gstrict-dwarf -mtune=generic -march=x86-64" + language (data1) Ada95 (13) + name (strp) "urng.ads" + comp_dir (strp) "/home/mark" + low_pc (addr) 000000000000000000 + high_pc (data8) 977 (0x00000000000003d1) + stmt_list (sec_offset) 0 + [ 2d] base_type abbrev: 2 + byte_size (data1) 2 + encoding (data1) unsigned (7) + name (strp) "urng__unsigned" + [ 34] structure_type abbrev: 3 + name (strp) "urng__rec" + byte_size (exprloc) + [ 0] push_object_address + [ 1] deref_size 2 + [ 3] call4 [ 8d] + [ 8] plus_uconst 7 + [10] const1s -4 + [12] and + decl_file (data1) urng.ads (1) + decl_line (data1) 4 + decl_column (data1) 9 + sibling (ref4) [ 8d] + [ 4e] member abbrev: 4 + name (string) "u" + decl_file (data1) urng.ads (1) + decl_line (data1) 4 + decl_column (data1) 14 + type (ref4) [ 2d] + data_member_location (data1) 0 + [ 59] variant_part abbrev: 5 + discr (ref4) [ 4e] + [ 5e] variant abbrev: 6 + discr_list (block1) label 17, label 23, range 32768..65535 + [ 6b] variant abbrev: 7 + discr_value (udata) 256 + sibling (ref4) [ 7e] + [ 72] member abbrev: 4 + name (string) "b" + decl_file (data1) urng.ads (1) + decl_line (data1) 9 + decl_column (data1) 13 + type (ref4) [ a4] + data_member_location (data1) 4 + [ 7e] variant abbrev: 8 + [ 7f] member abbrev: 4 + name (string) "i" + decl_file (data1) urng.ads (1) + decl_line (data1) 11 + decl_column (data1) 13 + type (ref4) [ ab] + data_member_location (data1) 4 + [ 8d] dwarf_procedure abbrev: 9 + location (exprloc) + [ 0] dup + [ 1] lit17 + [ 2] ne + [ 3] over + [ 4] lit23 + [ 5] ne + [ 6] and + [ 7] over + [ 8] lit0 + [ 9] ge + [10] and + [11] bra 18 + [14] lit0 + [15] skip 19 + [18] lit4 + [19] swap + [20] drop + [ a4] base_type abbrev: 2 + byte_size (data1) 1 + encoding (data1) boolean (2) + name (strp) "boolean" + [ ab] base_type abbrev: 10 + byte_size (data1) 4 + encoding (data1) signed (5) + name (strp) "integer" + artificial (flag_present) yes + [ b2] variable abbrev: 11 + name (strp) "urng__r" + decl_file (data1) urng.ads (1) + decl_line (data1) 15 + decl_column (data1) 4 + type (ref4) [ 34] + external (flag_present) yes + location (exprloc) + [ 0] addr 0x3d8 + [ c8] subprogram abbrev: 12 + external (flag_present) yes + name (strp) "urng___elabs" + artificial (flag_present) yes + low_pc (addr) 0x0000000000000386 + high_pc (data8) 22 (0x000000000000039c) + frame_base (exprloc) + [ 0] call_frame_cfa +EOF diff --git a/tests/run-reverse-sections-self.sh b/tests/run-reverse-sections-self.sh new file mode 100755 index 00000000..71afd6ac --- /dev/null +++ b/tests/run-reverse-sections-self.sh @@ -0,0 +1,45 @@ +#! /bin/sh +# Copyright (C) 2019 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. $srcdir/test-subr.sh + +test_reverse_self () +{ + in_file="$1" + base_name="$(basename ${in_file})" + out_file="${base_name}.rev" + out_file_mmap="${out_file}.mmap" + + tempfiles ${out_file} ${out_file_mmap} + + # Reverse the offsets (the files should still be the same otherwise) + testrun ${abs_builddir}/elfcopy --reverse-offs ${in_file} ${out_file} + testrun ${abs_top_builddir}/src/elfcmp ${in_file} ${out_file} + testrun ${abs_top_builddir}/src/elflint --gnu ${out_file} + # An in-place nop will likely revert them back + testrun ${abs_builddir}/elfrdwrnop ${out_file} + testrun ${abs_top_builddir}/src/elfcmp ${in_file} ${out_file} + testrun ${abs_top_builddir}/src/elflint --gnu ${out_file} +} + +# Only really makes sense for ET_REL files, but try all, just to check +# it also works if we keep the order for the allocated sections. +for file in $self_test_files; do + test_reverse_self $file +done + +exit 0 diff --git a/tests/run-reverse-sections.sh b/tests/run-reverse-sections.sh new file mode 100755 index 00000000..102a1261 --- /dev/null +++ b/tests/run-reverse-sections.sh @@ -0,0 +1,69 @@ +#! /bin/sh +# Copyright (C) 2019 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. $srcdir/test-subr.sh + +test_reverse () +{ + in_file="$1" + out_file="${in_file}.rev" + out_file_mmap="${out_file}.mmap" + + testfiles ${in_file} + tempfiles ${out_file} ${out_file_mmap} + + # Reverse the offsets (the files should still be the same otherwise) + testrun ${abs_builddir}/elfcopy --reverse-offs ${in_file} ${out_file} + testrun ${abs_top_builddir}/src/elfcmp ${in_file} ${out_file} + testrun ${abs_top_builddir}/src/elflint --gnu ${out_file} + # An in-place nop will likely revert them back + testrun ${abs_builddir}/elfrdwrnop ${out_file} + testrun ${abs_top_builddir}/src/elfcmp ${in_file} ${out_file} + testrun ${abs_top_builddir}/src/elflint --gnu ${out_file} +} + +# A collection of random testfiles to test 32/64bit, little/big endian +# and non-ET_REL (with phdrs)/ET_REL (without phdrs). + +# 32bit, big endian, rel +test_reverse testfile29 + +# 64bit, big endian, rel +test_reverse testfile23 + +# 32bit, little endian, rel +test_reverse testfile9 + +# 64bit, little endian, rel +test_reverse testfile38 + +# 32bit, big endian, non-rel +test_reverse testfile26 + +# 64bit, big endian, non-rel +test_reverse testfile27 + +# 32bit, little endian, non-rel +test_reverse testfile + +# 64bit, little endian, non-rel +# Don't use testfile10. It has section headers in the middle of the file. +# Same for testfile12. It is legal, but not the point of this testcase. +# test_reverse testfile10 +test_reverse testfile13 + +exit 0 diff --git a/tests/run-xlate-note.sh b/tests/run-xlate-note.sh new file mode 100755 index 00000000..a9074182 --- /dev/null +++ b/tests/run-xlate-note.sh @@ -0,0 +1,93 @@ +# Copyright (C) 2019 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. $srcdir/test-subr.sh + +testfiles testfileppc32 +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfileppc32 << EOF +Notes in section 2: +type: 1,1, namesz: 4,4, descsz: 16,16 +Notes in section 3: +type: 3,3, namesz: 4,4, descsz: 20,20 +EOF + +testfiles testfileppc64 +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfileppc64 << EOF +Notes in section 2: +type: 1,1, namesz: 4,4, descsz: 16,16 +Notes in section 3: +type: 3,3, namesz: 4,4, descsz: 20,20 +EOF + +testfiles testfiles390 +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfiles390 << EOF +Notes in section 2: +type: 1,1, namesz: 4,4, descsz: 16,16 +Notes in section 3: +type: 3,3, namesz: 4,4, descsz: 20,20 +EOF + +testfiles testfiles390x +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfiles390x << EOF +Notes in section 2: +type: 1,1, namesz: 4,4, descsz: 16,16 +Notes in section 3: +type: 3,3, namesz: 4,4, descsz: 20,20 +EOF + +testfiles testfileaarch64 +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfileaarch64 << EOF +Notes in section 2: +type: 1,1, namesz: 4,4, descsz: 16,16 +Notes in section 3: +type: 3,3, namesz: 4,4, descsz: 20,20 +EOF + +testfiles testfilearm +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfilearm << EOF +Notes in section 2: +type: 1,1, namesz: 4,4, descsz: 16,16 +Notes in section 3: +type: 3,3, namesz: 4,4, descsz: 20,20 +EOF + +testfiles testfile_gnu_props.32be.o +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfile_gnu_props.32be.o << EOF +Notes in section 4: +type: 5,5, namesz: 4,4, descsz: 12,12 +type: 5,5, namesz: 4,4, descsz: 8,8 +EOF + +testfiles testfile_gnu_props.32le.o +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfile_gnu_props.32le.o << EOF +Notes in section 4: +type: 5,5, namesz: 4,4, descsz: 12,12 +type: 5,5, namesz: 4,4, descsz: 8,8 +EOF + +testfiles testfile_gnu_props.64be.o +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfile_gnu_props.64be.o << EOF +Notes in section 4: +type: 5,5, namesz: 4,4, descsz: 16,16 +type: 5,5, namesz: 4,4, descsz: 8,8 +EOF + +testfiles testfile_gnu_props.64le.o +testrun_compare ${abs_top_builddir}/tests/xlate_notes testfile_gnu_props.64le.o << EOF +Notes in section 4: +type: 5,5, namesz: 4,4, descsz: 16,16 +type: 5,5, namesz: 4,4, descsz: 8,8 +EOF diff --git a/tests/testfile-rng.debug.bz2 b/tests/testfile-rng.debug.bz2 Binary files differnew file mode 100644 index 00000000..58c1b76b --- /dev/null +++ b/tests/testfile-rng.debug.bz2 diff --git a/tests/testfile-urng.debug.bz2 b/tests/testfile-urng.debug.bz2 Binary files differnew file mode 100644 index 00000000..4697f364 --- /dev/null +++ b/tests/testfile-urng.debug.bz2 diff --git a/tests/testfilecsky.bz2 b/tests/testfilecsky.bz2 Binary files differnew file mode 100644 index 00000000..dfee449e --- /dev/null +++ b/tests/testfilecsky.bz2 diff --git a/tests/xlate_notes.c b/tests/xlate_notes.c new file mode 100644 index 00000000..90a4ae27 --- /dev/null +++ b/tests/xlate_notes.c @@ -0,0 +1,157 @@ +/* Test program for extracting ELF Note headers and getting whole notes. + Copyright (C) 2019 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <errno.h> +#include <fcntl.h> +#include <inttypes.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include ELFUTILS_HEADER(elf) +#include <gelf.h> + +int +main (int argc, char *argv[]) +{ + if (argc != 2) + { + printf ("No ELF file given as argument\n"); + exit (1); + } + + const char *fname = argv[1]; + + // Initialize libelf. + elf_version (EV_CURRENT); + + /* Read the ELF from disk now. */ + int fd = open (fname, O_RDONLY); + if (fd == -1) + { + printf ("cannot open '%s': %s\n", fname, strerror (errno)); + exit (1); + } + + Elf *elf = elf_begin (fd, ELF_C_READ, NULL); + if (elf == NULL) + { + printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); + exit (1); + } + + GElf_Ehdr ehdr; + if (gelf_getehdr (elf, &ehdr) == NULL) + { + printf ("cannot get Ehdr: %s\n", elf_errmsg (-1)); + exit (1); + } + + /* Search for all SHT_NOTE sections. */ + Elf_Scn *scn = NULL; + while ((scn = elf_nextscn (elf, scn)) != NULL) + { + /* Get the header. */ + GElf_Shdr shdr; + if (gelf_getshdr (scn, &shdr) == NULL) + { + printf ("couldn't get shdr: %s\n", elf_errmsg (-1)); + exit (1); + } + + if (shdr.sh_type == SHT_NOTE) + { + printf ("Notes in section %zd:\n", elf_ndxscn (scn)); + + Elf_Data *raw = elf_rawdata (scn, NULL); + if (raw == NULL) + { + printf ("couldn't get raw data: %s\n", elf_errmsg (-1)); + exit (1); + } + + Elf_Data *data = elf_getdata (scn, NULL); + if (data == NULL) + { + printf ("couldn't get data: %s\n", elf_errmsg (-1)); + exit (1); + } + + size_t off = 0; + size_t next; + GElf_Nhdr nhdr; + size_t n_off; + size_t d_off; + while ((next = gelf_getnote (data, off, &nhdr, &n_off, &d_off)) > 0) + { + /* Now just get the note header "raw" (don't + copy/translate the note data). This only handles + traditional GNU ELF Notes, so we still use the next + from gelf_getnote (padding is different for new style + ELF_T_NHDR8 notes). */ + Elf32_Nhdr nh; + Elf_Data src = + { + .d_version = EV_CURRENT, .d_type = ELF_T_NHDR, + .d_size = sizeof nh + }; + Elf_Data dst = src; + src.d_buf = raw->d_buf + off; + dst.d_buf = &nh; + + if (elf32_xlatetom (&dst, &src, ehdr.e_ident[EI_DATA]) == NULL) + { + printf ("couldn't xlate note: %s\n", elf_errmsg (-1)); + exit (1); + } + + printf ("type: %" PRId32 ",%" PRId32 + ", namesz: %" PRId32 ",%" PRId32 + ", descsz: %" PRId32 ",%" PRId32 "\n", + nhdr.n_type, nh.n_type, + nhdr.n_namesz, nh.n_namesz, + nhdr.n_descsz, nh.n_descsz); + + if (nhdr.n_type != nh.n_type + || nhdr.n_namesz != nh.n_namesz + || nhdr.n_descsz != nh.n_descsz) + { + printf ("Nhdrs not equal!\n"); + exit (1); + } + + off = next; + } + } + + } + + if (elf_end (elf) != 0) + { + printf ("failure in elf_end: %s\n", elf_errmsg (-1)); + exit (1); + } + + close (fd); + + return 0; +} |