From 69d6e67eee30c483ba53a8e1da1b3568033e3dde Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 21 Sep 2018 13:47:45 +0200 Subject: tests: backtrace-dwarf.c improve error handling in test framework. To debug https://sourceware.org/bugzilla/show_bug.cgi?id=23673 clean up the test framework so we know what exactly failed. Suggested-by: Dmitry V. Levin Signed-off-by: Mark Wielaard --- tests/ChangeLog | 7 +++++++ tests/backtrace-dwarf.c | 38 ++++++++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/tests/ChangeLog b/tests/ChangeLog index 4e8b8144..04eeb4ac 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,10 @@ +2018-09-18 Mark Wielaard + + * backtrace-dwarf.c (thread_callback): Only error when + dwfl_thread_getframes returns an error. + (main): Don't call abort or assert but print an error when + something unexpected happens. + 2018-09-13 Mark Wielaard * run-strip-test-many.sh: New test. diff --git a/tests/backtrace-dwarf.c b/tests/backtrace-dwarf.c index 35f25ed6..dfbf1856 100644 --- a/tests/backtrace-dwarf.c +++ b/tests/backtrace-dwarf.c @@ -1,5 +1,5 @@ /* Test program for unwinding of complicated DWARF expressions. - Copyright (C) 2013, 2015 Red Hat, Inc. + Copyright (C) 2013, 2015, 2018 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -16,7 +16,6 @@ along with this program. If not, see . */ #include -#include #include #include #include @@ -117,9 +116,11 @@ frame_callback (Dwfl_Frame *state, void *frame_arg) static int thread_callback (Dwfl_Thread *thread, void *thread_arg) { - dwfl_thread_getframes (thread, frame_callback, NULL); + if (dwfl_thread_getframes (thread, frame_callback, NULL) == -1) + error (1, 0, "dwfl_thread_getframes: %s", dwfl_errmsg (-1)); + /* frame_callback shall exit (0) on success. */ - error (1, 0, "dwfl_thread_getframes: %s", dwfl_errmsg (-1)); + printf ("dwfl_thread_getframes returned, main not found\n"); return DWARF_CB_ABORT; } @@ -141,13 +142,18 @@ main (int argc __attribute__ ((unused)), char **argv) switch (pid) { case -1: - abort (); + perror ("fork failed"); + exit (-1); case 0:; long l = ptrace (PTRACE_TRACEME, 0, NULL, NULL); - assert (errno == 0); - assert (l == 0); + if (l != 0) + { + perror ("PTRACE_TRACEME failed"); + exit (-1); + } cleanup_13_main (); - abort (); + printf ("cleanup_13_main returned, impossible...\n"); + exit (-1); default: break; } @@ -155,16 +161,20 @@ main (int argc __attribute__ ((unused)), char **argv) errno = 0; int status; pid_t got = waitpid (pid, &status, 0); - assert (errno == 0); - assert (got == pid); - assert (WIFSTOPPED (status)); - assert (WSTOPSIG (status) == SIGABRT); + if (got != pid) + error (1, errno, "waitpid returned %d", got); + if (!WIFSTOPPED (status)) + error (1, 0, "unexpected wait status %u", status); + if (WSTOPSIG (status) != SIGABRT) + error (1, 0, "unexpected signal %u", WSTOPSIG (status)); Dwfl *dwfl = pid_to_dwfl (pid); - dwfl_getthreads (dwfl, thread_callback, NULL); + if (dwfl_getthreads (dwfl, thread_callback, NULL) == -1) + error (1, 0, "dwfl_getthreads: %s", dwfl_errmsg (-1)); /* There is an exit (0) call if we find the "main" frame, */ - error (1, 0, "dwfl_getthreads: %s", dwfl_errmsg (-1)); + printf ("dwfl_getthreads returned, main not found\n"); + exit (-1); } #endif /* ! __linux__ */ -- cgit v1.2.3 From 2876b3b648f665736ac9c879d34de5e3866ba8f9 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Tue, 2 Oct 2018 14:46:51 +0200 Subject: Handle ADD/SUB relocations This adds support for ADD and SUB relocations as seen on RISC-V. Signed-off-by: Andreas Schwab --- backends/ChangeLog | 20 ++++++++++++++++++++ backends/aarch64_symbol.c | 3 ++- backends/alpha_symbol.c | 3 ++- backends/arm_symbol.c | 3 ++- backends/bpf_symbol.c | 3 ++- backends/i386_symbol.c | 3 ++- backends/ia64_symbol.c | 3 ++- backends/m68k_symbol.c | 3 ++- backends/ppc64_symbol.c | 3 ++- backends/ppc_symbol.c | 3 ++- backends/riscv_symbol.c | 26 +++++++++++++++++++++++++- backends/s390_symbol.c | 3 ++- backends/sh_symbol.c | 3 ++- backends/sparc_symbol.c | 3 ++- backends/tilegx_symbol.c | 3 ++- backends/x86_64_symbol.c | 3 ++- libdwfl/ChangeLog | 4 ++++ libdwfl/relocate.c | 21 +++++++++++++++++++-- libebl/ChangeLog | 7 +++++++ libebl/ebl-hooks.h | 2 +- libebl/eblopenbackend.c | 5 +++-- libebl/eblrelocsimpletype.c | 4 ++-- libebl/libebl.h | 6 ++++-- src/ChangeLog | 4 ++++ src/strip.c | 23 +++++++++++++++++++---- 25 files changed, 136 insertions(+), 28 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index fdff3021..a7434dd2 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,23 @@ +2018-10-02 Andreas Schwab + + * riscv_symbol.c (riscv_reloc_simple_type): Add parameter addsub. + Set it for ADD and SUB relocations. + * aarch64_symbol.c (aarch64_reloc_simple_type): Add and ignore + third parameter. + * alpha_symbol.c (alpha_reloc_simple_type): Likewise. + * arm_symbol.c (arm_reloc_simple_type): Likewise. + * bpf_symbol.c (bpf_reloc_simple_type): Likewise. + * i386_symbol.c (i386_reloc_simple_type): Likewise. + * ia64_symbol.c (ia64_reloc_simple_type): Likewise. + * m68k_symbol.c (m68k_reloc_simple_type): Likewise. + * ppc64_symbol.c (ppc64_reloc_simple_type): Likewise. + * ppc_symbol.c (ppc_reloc_simple_type): Likewise. + * s390_symbol.c (s390_reloc_simple_type): Likewise. + * sh_symbol.c (sh_reloc_simple_type): Likewise. + * sparc_symbol.c (sparc_reloc_simple_type): Likewise. + * tilegx_symbol.c (tilegx_reloc_simple_type): Likewise. + * x86_64_symbol.c (x86_64_reloc_simple_type): Likewise. + 2018-09-12 Mark Wielaard * ppc64_init.c (ppc64_init): Use elf_getshdrstrndx. diff --git a/backends/aarch64_symbol.c b/backends/aarch64_symbol.c index dfd755a5..e30c409d 100644 --- a/backends/aarch64_symbol.c +++ b/backends/aarch64_symbol.c @@ -40,7 +40,8 @@ /* Check for the simple reloc types. */ Elf_Type -aarch64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +aarch64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/alpha_symbol.c b/backends/alpha_symbol.c index b7f7c17a..53a9e7b7 100644 --- a/backends/alpha_symbol.c +++ b/backends/alpha_symbol.c @@ -61,7 +61,8 @@ alpha_dynamic_tag_check (int64_t tag) /* Check for the simple reloc types. */ Elf_Type -alpha_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +alpha_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/arm_symbol.c b/backends/arm_symbol.c index 3edda724..c8e1d7f9 100644 --- a/backends/arm_symbol.c +++ b/backends/arm_symbol.c @@ -109,7 +109,8 @@ arm_machine_flag_check (GElf_Word flags) /* Check for the simple reloc types. */ Elf_Type -arm_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +arm_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/bpf_symbol.c b/backends/bpf_symbol.c index c9856f26..85c948ab 100644 --- a/backends/bpf_symbol.c +++ b/backends/bpf_symbol.c @@ -40,7 +40,8 @@ /* Check for the simple reloc types. */ Elf_Type -bpf_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +bpf_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/i386_symbol.c b/backends/i386_symbol.c index 7dbf899f..a4b6ec08 100644 --- a/backends/i386_symbol.c +++ b/backends/i386_symbol.c @@ -49,7 +49,8 @@ i386_gotpc_reloc_check (Elf *elf __attribute__ ((unused)), int type) /* Check for the simple reloc types. */ Elf_Type -i386_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +i386_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/ia64_symbol.c b/backends/ia64_symbol.c index f928b0b7..0c038f0d 100644 --- a/backends/ia64_symbol.c +++ b/backends/ia64_symbol.c @@ -115,7 +115,8 @@ ia64_section_type_name (int type, /* Check for the simple reloc types. */ Elf_Type -ia64_reloc_simple_type (Ebl *ebl, int type) +ia64_reloc_simple_type (Ebl *ebl, int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/m68k_symbol.c b/backends/m68k_symbol.c index 269d12e5..9551cdfe 100644 --- a/backends/m68k_symbol.c +++ b/backends/m68k_symbol.c @@ -54,7 +54,8 @@ m68k_gotpc_reloc_check (Elf *elf __attribute__ ((unused)), int type) /* Check for the simple reloc types. */ Elf_Type -m68k_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +m68k_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/ppc64_symbol.c b/backends/ppc64_symbol.c index 40ba4f74..81b94cfd 100644 --- a/backends/ppc64_symbol.c +++ b/backends/ppc64_symbol.c @@ -42,7 +42,8 @@ /* Check for the simple reloc types. */ Elf_Type -ppc64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +ppc64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/ppc_symbol.c b/backends/ppc_symbol.c index 35b14319..5a169d54 100644 --- a/backends/ppc_symbol.c +++ b/backends/ppc_symbol.c @@ -42,7 +42,8 @@ /* Check for the simple reloc types. */ Elf_Type -ppc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +ppc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/riscv_symbol.c b/backends/riscv_symbol.c index 866a2d7a..c34b7702 100644 --- a/backends/riscv_symbol.c +++ b/backends/riscv_symbol.c @@ -40,14 +40,38 @@ /* Check for the simple reloc types. */ Elf_Type -riscv_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +riscv_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub) { switch (type) { + case R_RISCV_SET8: + return ELF_T_BYTE; + case R_RISCV_SET16: + return ELF_T_HALF; case R_RISCV_32: + case R_RISCV_SET32: return ELF_T_WORD; case R_RISCV_64: return ELF_T_XWORD; + case R_RISCV_ADD16: + *addsub = 1; + return ELF_T_HALF; + case R_RISCV_SUB16: + *addsub = -1; + return ELF_T_HALF; + case R_RISCV_ADD32: + *addsub = 1; + return ELF_T_WORD; + case R_RISCV_SUB32: + *addsub = -1; + return ELF_T_WORD; + case R_RISCV_ADD64: + *addsub = 1; + return ELF_T_XWORD; + case R_RISCV_SUB64: + *addsub = -1; + return ELF_T_XWORD; default: return ELF_T_NUM; } diff --git a/backends/s390_symbol.c b/backends/s390_symbol.c index a0a4fafa..f91e1373 100644 --- a/backends/s390_symbol.c +++ b/backends/s390_symbol.c @@ -38,7 +38,8 @@ /* Check for the simple reloc types. */ Elf_Type -s390_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +s390_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/sh_symbol.c b/backends/sh_symbol.c index 8101e96f..2761d92c 100644 --- a/backends/sh_symbol.c +++ b/backends/sh_symbol.c @@ -47,7 +47,8 @@ sh_gotpc_reloc_check (Elf *elf __attribute__ ((unused)), int type) /* Check for the simple reloc types. */ Elf_Type -sh_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +sh_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/sparc_symbol.c b/backends/sparc_symbol.c index ec11dc97..e8ee3911 100644 --- a/backends/sparc_symbol.c +++ b/backends/sparc_symbol.c @@ -39,7 +39,8 @@ /* Check for the simple reloc types. */ Elf_Type -sparc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +sparc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/tilegx_symbol.c b/backends/tilegx_symbol.c index b6533266..62a46907 100644 --- a/backends/tilegx_symbol.c +++ b/backends/tilegx_symbol.c @@ -39,7 +39,8 @@ /* Check for the simple reloc types. */ Elf_Type -tilegx_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +tilegx_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/backends/x86_64_symbol.c b/backends/x86_64_symbol.c index 1622461d..e07b1806 100644 --- a/backends/x86_64_symbol.c +++ b/backends/x86_64_symbol.c @@ -40,7 +40,8 @@ /* Check for the simple reloc types. */ Elf_Type -x86_64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) +x86_64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) { switch (type) { diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 5e9b986d..c5ea5634 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,7 @@ +2018-10-02 Andreas Schwab + + * relocate.c (relocate): Handle ADD/SUB relocations. + 2018-09-13 Mark Wielaard * dwfl_segment_report_module.c (dwfl_segment_report_module): diff --git a/libdwfl/relocate.c b/libdwfl/relocate.c index 9afcdebe..58c56786 100644 --- a/libdwfl/relocate.c +++ b/libdwfl/relocate.c @@ -338,7 +338,8 @@ relocate (Dwfl_Module * const mod, So we just pretend it's OK without further relocation. */ return DWFL_E_NOERROR; - Elf_Type type = ebl_reloc_simple_type (mod->ebl, rtype); + int addsub = 0; + Elf_Type type = ebl_reloc_simple_type (mod->ebl, rtype, &addsub); if (unlikely (type == ELF_T_NUM)) return DWFL_E_BADRELTYPE; @@ -383,6 +384,9 @@ relocate (Dwfl_Module * const mod, { #define DO_TYPE(NAME, Name) \ case ELF_T_##NAME: \ + if (addsub != 0 && addend == NULL) \ + /* These do not make sense with SHT_REL. */ \ + return DWFL_E_BADRELTYPE; \ size = sizeof (GElf_##Name); \ break TYPES; @@ -417,11 +421,24 @@ relocate (Dwfl_Module * const mod, { /* For the addend form, we have the value already. */ value += *addend; + /* For ADD/SUB relocations we need to fetch the section + contents. */ + if (addsub != 0) + { + Elf_Data *d = gelf_xlatetom (relocated, &tmpdata, &rdata, + ehdr->e_ident[EI_DATA]); + if (d == NULL) + return DWFL_E_LIBELF; + assert (d == &tmpdata); + } switch (type) { #define DO_TYPE(NAME, Name) \ case ELF_T_##NAME: \ - tmpbuf.Name = value; \ + if (addsub != 0) \ + tmpbuf.Name += value * addsub; \ + else \ + tmpbuf.Name = value; \ break TYPES; #undef DO_TYPE diff --git a/libebl/ChangeLog b/libebl/ChangeLog index d36a2681..aec848b9 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,10 @@ +2018-10-02 Andreas Schwab + + * ebl-hooks.h (EBLHOOK(reloc_simple_type)): Add third parameter. + * libebl.h (ebl_reloc_simple_type): Likewise. + * eblopenbackend.c (default_reloc_simple_type): Likewise. + * eblrelocsimpletype.c (ebl_reloc_simple_type): Pass it down. + 2018-09-12 Mark Wielaard * eblsectionstripp.c (ebl_section_strip_p): Drop ehdr argument. diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h index 7a355cd1..1e7960b8 100644 --- a/libebl/ebl-hooks.h +++ b/libebl/ebl-hooks.h @@ -33,7 +33,7 @@ const char *EBLHOOK(reloc_type_name) (int, char *, size_t); bool EBLHOOK(reloc_type_check) (int); /* Check if relocation type is for simple absolute relocations. */ -Elf_Type EBLHOOK(reloc_simple_type) (Ebl *, int); +Elf_Type EBLHOOK(reloc_simple_type) (Ebl *, int, int *); /* Check relocation type use. */ bool EBLHOOK(reloc_valid_use) (Elf *, int); diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index f5b3de29..d54b7207 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -145,7 +145,7 @@ static const struct static const char *default_reloc_type_name (int ignore, char *buf, size_t len); static bool default_reloc_type_check (int ignore); static bool default_reloc_valid_use (Elf *elf, int ignore); -static Elf_Type default_reloc_simple_type (Ebl *ebl, int ignore); +static Elf_Type default_reloc_simple_type (Ebl *ebl, int ignore, int *addsub); static bool default_gotpc_reloc_check (Elf *elf, int ignore); static const char *default_segment_type_name (int ignore, char *buf, size_t len); @@ -452,7 +452,8 @@ default_reloc_valid_use (Elf *elf __attribute__ ((unused)), static Elf_Type default_reloc_simple_type (Ebl *eh __attribute__ ((unused)), - int ignore __attribute__ ((unused))) + int ignore __attribute__ ((unused)), + int *addsub __attribute__ ((unused))) { return ELF_T_NUM; } diff --git a/libebl/eblrelocsimpletype.c b/libebl/eblrelocsimpletype.c index 9bd29285..12292804 100644 --- a/libebl/eblrelocsimpletype.c +++ b/libebl/eblrelocsimpletype.c @@ -34,7 +34,7 @@ Elf_Type -ebl_reloc_simple_type (Ebl *ebl, int reloc) +ebl_reloc_simple_type (Ebl *ebl, int reloc, int *addsub) { - return ebl != NULL ? ebl->reloc_simple_type (ebl, reloc) : ELF_T_NUM; + return ebl != NULL ? ebl->reloc_simple_type (ebl, reloc, addsub) : ELF_T_NUM; } diff --git a/libebl/libebl.h b/libebl/libebl.h index 5abc02d8..a34fe48d 100644 --- a/libebl/libebl.h +++ b/libebl/libebl.h @@ -99,8 +99,10 @@ extern bool ebl_reloc_type_check (Ebl *ebl, int reloc); extern bool ebl_reloc_valid_use (Ebl *ebl, int reloc); /* Check if relocation type is for simple absolute relocations. - Return ELF_T_{BYTE,HALF,SWORD,SXWORD} for a simple type, else ELF_T_NUM. */ -extern Elf_Type ebl_reloc_simple_type (Ebl *ebl, int reloc); + Return ELF_T_{BYTE,HALF,SWORD,SXWORD} for a simple type, else ELF_T_NUM. + If the relocation type is an ADD or SUB relocation, set *ADDSUB to 1 or -1, + resp. */ +extern Elf_Type ebl_reloc_simple_type (Ebl *ebl, int reloc, int *addsub); /* Return true if the symbol type is that referencing the GOT. E.g., R_386_GOTPC. */ diff --git a/src/ChangeLog b/src/ChangeLog index 6a702ee1..7b59ed60 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-10-02 Andreas Schwab + + * strip.c (handle_elf): Handle ADD/SUB relocation. + 2018-09-13 Mark Wielaard * readelf.c (print_shdr): Get number of section with elf_getshdrnum. diff --git a/src/strip.c b/src/strip.c index 4a3db1b5..1f7b3cab 100644 --- a/src/strip.c +++ b/src/strip.c @@ -2030,7 +2030,8 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, return true; /* We only do simple absolute relocations. */ - Elf_Type type = ebl_reloc_simple_type (ebl, rtype); + int addsub = 0; + Elf_Type type = ebl_reloc_simple_type (ebl, rtype, &addsub); if (type == ELF_T_NUM) return false; @@ -2109,6 +2110,17 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, /* For SHT_RELA sections we just take the given addend and add it to the value. */ value += addend; + /* For ADD/SUB relocations we need to fetch the + current section contents. */ + if (addsub != 0) + { + Elf_Data *d = gelf_xlatetom (debugelf, &tmpdata, + &rdata, + ehdr->e_ident[EI_DATA]); + if (d == NULL) + INTERNAL_ERROR (fname); + assert (d == &tmpdata); + } } else { @@ -2125,9 +2137,12 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, switch (type) { -#define DO_TYPE(NAME, Name) \ - case ELF_T_##NAME: \ - tmpbuf.Name += (GElf_##Name) value; \ +#define DO_TYPE(NAME, Name) \ + case ELF_T_##NAME: \ + if (addsub < 0) \ + tmpbuf.Name -= (GElf_##Name) value; \ + else \ + tmpbuf.Name += (GElf_##Name) value; \ break; TYPES; #undef DO_TYPE -- cgit v1.2.3 From c06ab0bbb4761a69d2f188675d21d1a9131e9ecb Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 13 Oct 2018 10:27:47 +0200 Subject: strip, unstrip: Handle SHT_GROUP correctly. The usage of annobin in Fedora showed a couple of bugs when using eu-strip and eu-unstrip on ET_REL files that contain multiple group sections. When stripping we should not remove the SHF_GROUP flag from sections even if the group section itself might be removed. Either the section itself gets removed, and so the flag doesn't matter. Or it gets moved together with the group section into the debug file, and then it still needs to have the flag set. Also we would "renumber" the section group flag field (which isn't a section index, and so shouldn't be changed). Often the group sections have the exact same name (".group"), flags (none) and sometimes the same sizes. Which makes matching them hard. Extract the group signature and compare those when comparing two group sections. Signed-off-by: Mark Wielaard --- src/ChangeLog | 12 +++++++ src/strip.c | 12 +++++-- src/unstrip.c | 60 ++++++++++++++++++++++++++++--- tests/ChangeLog | 6 ++++ tests/Makefile.am | 1 + tests/run-annobingroup.sh | 33 +++++++++++++++++ tests/testfile-annobingroup-x86_64.o.bz2 | Bin 0 -> 1437 bytes 7 files changed, 116 insertions(+), 8 deletions(-) create mode 100644 tests/testfile-annobingroup-x86_64.o.bz2 diff --git a/src/ChangeLog b/src/ChangeLog index 7b59ed60..d151e0d9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2018-10-12 Mark Wielaard + + * strip.c (handle_elf): Don't remove SHF_GROUP flag from sections. + Skip group section flag when renumbering section indexes. + * unstrip.c (struct section): Add sig field. + (compare_unalloc_sections): Take and use sig1 and sig2 as arguments. + (compare_sections): Pass signatures to compare_unalloc_sections. + (get_group_sig): New function. + (find_alloc_sections_prelink): Set signature. + (copy_elided_sections): Likewise and pass them on. + (find_unalloc_section): Take and pass signatures. + 2018-10-02 Andreas Schwab * strip.c (handle_elf): Handle ADD/SUB relocation. diff --git a/src/strip.c b/src/strip.c index 1f7b3cab..fdebc5e2 100644 --- a/src/strip.c +++ b/src/strip.c @@ -792,9 +792,13 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, if (shdr_info[shdr_info[cnt].group_idx].idx == 0) { - /* The section group section will be removed. */ + /* The section group section might be removed. + Don't remove the SHF_GROUP flag. The section is + either also removed, in which case the flag doesn't matter. + Or it moves with the group into the debug file, then + it will be reconnected with the new group and should + still have the flag set. */ shdr_info[cnt].group_idx = 0; - shdr_info[cnt].shdr.sh_flags &= ~SHF_GROUP; } } @@ -1368,7 +1372,9 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, && shdr_info[cnt].data->d_buf != NULL); Elf32_Word *grpref = (Elf32_Word *) shdr_info[cnt].data->d_buf; - for (size_t inner = 0; + /* First word is the section group flag. + Followed by section indexes, that need to be renumbered. */ + for (size_t inner = 1; inner < shdr_info[cnt].data->d_size / sizeof (Elf32_Word); ++inner) if (grpref[inner] < shnum) diff --git a/src/unstrip.c b/src/unstrip.c index e6f09478..03a03462 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -696,6 +696,7 @@ struct section { Elf_Scn *scn; const char *name; + const char *sig; Elf_Scn *outscn; Dwelf_Strent *strent; GElf_Shdr shdr; @@ -720,7 +721,8 @@ compare_alloc_sections (const struct section *s1, const struct section *s2, static int compare_unalloc_sections (const GElf_Shdr *shdr1, const GElf_Shdr *shdr2, - const char *name1, const char *name2) + const char *name1, const char *name2, + const char *sig1, const char *sig2) { /* Sort by sh_flags as an arbitrary ordering. */ if (shdr1->sh_flags < shdr2->sh_flags) @@ -734,6 +736,10 @@ compare_unalloc_sections (const GElf_Shdr *shdr1, const GElf_Shdr *shdr2, if (shdr1->sh_size > shdr2->sh_size) return 1; + /* Are they both SHT_GROUP sections? Then compare signatures. */ + if (sig1 != NULL && sig2 != NULL) + return strcmp (sig1, sig2); + /* Sort by name as last resort. */ return strcmp (name1, name2); } @@ -751,7 +757,8 @@ compare_sections (const void *a, const void *b, bool rel) return ((s1->shdr.sh_flags & SHF_ALLOC) ? compare_alloc_sections (s1, s2, rel) : compare_unalloc_sections (&s1->shdr, &s2->shdr, - s1->name, s2->name)); + s1->name, s2->name, + s1->sig, s2->sig)); } static int @@ -986,6 +993,44 @@ get_section_name (size_t ndx, const GElf_Shdr *shdr, const Elf_Data *shstrtab) return shstrtab->d_buf + shdr->sh_name; } +/* Returns the signature of a group section, or NULL if the given + section isn't a group. */ +static const char * +get_group_sig (Elf *elf, GElf_Shdr *shdr) +{ + if (shdr->sh_type != SHT_GROUP) + return NULL; + + Elf_Scn *symscn = elf_getscn (elf, shdr->sh_link); + if (symscn == NULL) + error (EXIT_FAILURE, 0, _("bad sh_link for group section: %s"), + elf_errmsg (-1)); + + GElf_Shdr symshdr_mem; + GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem); + if (symshdr == NULL) + error (EXIT_FAILURE, 0, _("couldn't get shdr for group section: %s"), + elf_errmsg (-1)); + + Elf_Data *symdata = elf_getdata (symscn, NULL); + if (symdata == NULL) + error (EXIT_FAILURE, 0, _("bad data for group symbol section: %s"), + elf_errmsg (-1)); + + GElf_Sym sym_mem; + GElf_Sym *sym = gelf_getsym (symdata, shdr->sh_info, &sym_mem); + if (sym == NULL) + error (EXIT_FAILURE, 0, _("couldn't get symbol for group section: %s"), + elf_errmsg (-1)); + + const char *sig = elf_strptr (elf, symshdr->sh_link, sym->st_name); + if (sig == NULL) + error (EXIT_FAILURE, 0, _("bad symbol name for group section: %s"), + elf_errmsg (-1)); + + return sig; +} + /* Fix things up when prelink has moved some allocated sections around and the debuginfo file's section headers no longer match up. This fills in SECTIONS[0..NALLOC-1].outscn or exits. @@ -1111,6 +1156,7 @@ find_alloc_sections_prelink (Elf *debug, Elf_Data *debug_shstrtab, sec->scn = elf_getscn (main, i + 1); /* Really just for ndx. */ sec->outscn = NULL; sec->strent = NULL; + sec->sig = get_group_sig (main, &sec->shdr); ++undo_nalloc; } } @@ -1336,6 +1382,7 @@ more sections in stripped file than debug file -- arguments reversed?")); sections[i].scn = scn; sections[i].outscn = NULL; sections[i].strent = NULL; + sections[i].sig = get_group_sig (stripped, shdr); } const struct section *stripped_symtab = NULL; @@ -1354,7 +1401,8 @@ more sections in stripped file than debug file -- arguments reversed?")); /* Locate a matching unallocated section in SECTIONS. */ inline struct section *find_unalloc_section (const GElf_Shdr *shdr, - const char *name) + const char *name, + const char *sig) { size_t l = nalloc, u = stripped_shnum - 1; while (l < u) @@ -1362,7 +1410,8 @@ more sections in stripped file than debug file -- arguments reversed?")); size_t i = (l + u) / 2; struct section *sec = §ions[i]; int cmp = compare_unalloc_sections (shdr, &sec->shdr, - name, sec->name); + name, sec->name, + sig, sec->sig); if (cmp < 0) u = i; else if (cmp > 0) @@ -1435,7 +1484,8 @@ more sections in stripped file than debug file -- arguments reversed?")); else { /* Look for the section that matches. */ - sec = find_unalloc_section (shdr, name); + sec = find_unalloc_section (shdr, name, + get_group_sig (unstripped, shdr)); if (sec == NULL) { /* An additional unallocated section is fine if not SHT_NOBITS. diff --git a/tests/ChangeLog b/tests/ChangeLog index 04eeb4ac..c5f0d774 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2018-09-12 Mark Wielaard + + * run-annobingroup.sh: Add x86_64 ET_REL testcase. + * testfile-annobingroup-x86_64.o.bz2: New test file. + * Makefile.am (EXTRA_DIST): Add testfile-annobingroup-x86_64.o.bz2. + 2018-09-18 Mark Wielaard * backtrace-dwarf.c (thread_callback): Only error when diff --git a/tests/Makefile.am b/tests/Makefile.am index 74c477e5..15b429b7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -199,6 +199,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-strip-nothing.sh run-strip-remove-keep.sh run-strip-g.sh \ run-annobingroup.sh testfile-annobingroup.o.bz2 \ testfile-annobingroup-i386.o.bz2 \ + testfile-annobingroup-x86_64.o.bz2 \ run-strip-strmerge.sh run-strip-nobitsalign.sh \ testfile-nobitsalign.bz2 testfile-nobitsalign.strip.bz2 \ run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \ diff --git a/tests/run-annobingroup.sh b/tests/run-annobingroup.sh index 700df321..fd36e4ac 100755 --- a/tests/run-annobingroup.sh +++ b/tests/run-annobingroup.sh @@ -120,4 +120,37 @@ EOF testrun ${abs_top_builddir}/src/elfcmp testfile-annobingroup-i386.o remerged.elf +# echo "void * foo (void) { return foo; }" > testfile-annobingroup-x86_64.c +# gcc -g -O2 -fplugin=annobin -c testfile-annobingroup-x86_64.c +testfiles testfile-annobingroup-x86_64.o + +testrun_compare ${abs_top_builddir}/src/readelf -g testfile-annobingroup-x86_64.o << EOF + +Section group [ 1] '.group' with signature '.text.hot.group' contains 3 entries: + [11] .text.hot + [12] .gnu.build.attributes.hot + [13] .rela.gnu.build.attributes.hot + +Section group [ 2] '.group' with signature '.text.unlikely.group' contains 3 entries: + [14] .text.unlikely + [15] .gnu.build.attributes.unlikely + [16] .rela.gnu.build.attributes.unlikely + +Section group [ 3] '.group' with signature '.text.hot..group' contains 1 entry: + [26] .text.hot + +Section group [ 4] '.group' with signature '.text.unlikely..group' contains 1 entry: + [27] .text.unlikely +EOF + +testrun ${abs_top_builddir}/src/strip -o stripped.elf -f debugfile.elf testfile-annobingroup-x86_64.o + +# This would/should work, except for the unknown NOTEs. +# testrun ${abs_top_builddir}/src/elflint --gnu stripped.elf +# testrun ${abs_top_builddir}/src/elflint --gnu --debug debugfile.elf + +testrun ${abs_top_builddir}/src/unstrip -o remerged.elf stripped.elf debugfile.elf + +testrun ${abs_top_builddir}/src/elfcmp testfile-annobingroup-x86_64.o remerged.elf + exit 0 diff --git a/tests/testfile-annobingroup-x86_64.o.bz2 b/tests/testfile-annobingroup-x86_64.o.bz2 new file mode 100644 index 00000000..ec389db2 Binary files /dev/null and b/tests/testfile-annobingroup-x86_64.o.bz2 differ -- cgit v1.2.3 From eee4269e53154daaf0251371aacd91ec5db3eb30 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 13 Oct 2018 10:27:47 +0200 Subject: unstrip: Renumber the group section indexes. When unstripping we might need to renumber the group section indexes. Just like we do when stripping. Signed-off-by: Mark Wielaard --- src/ChangeLog | 4 ++++ src/unstrip.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index d151e0d9..5aa31fc7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-10-19 Mark Wielaard + + * unstrip.c (copy_elided_sections): Renumber group section indexes. + 2018-10-12 Mark Wielaard * strip.c (handle_elf): Don't remove SHF_GROUP flag from sections. diff --git a/src/unstrip.c b/src/unstrip.c index 03a03462..2cfd3b37 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -1708,6 +1708,20 @@ more sections in stripped file than debug file -- arguments reversed?")); if (shdr_mem.sh_type == SHT_DYNSYM) stripped_dynsym = sec; } + + if (shdr_mem.sh_type == SHT_GROUP) + { + /* We must adjust all the section indices in the group. + Skip the first word, which is the section group flag. + Everything else is a section index. */ + Elf32_Word *shndx = (Elf32_Word *) outdata->d_buf; + for (size_t i = 1; i < shdr_mem.sh_size / sizeof (Elf32_Word); ++i) + if (shndx[i] == SHN_UNDEF || shndx[i] >= stripped_shnum) + error (EXIT_FAILURE, 0, + _("group has invalid section index [%zd]"), i); + else + shndx[i] = ndx_section[shndx[i] - 1]; + } } /* We may need to update the symbol table. */ -- cgit v1.2.3 From 2f4a040fab520a97480f6ca6fa9fcef88bc55255 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 13 Oct 2018 15:08:16 +0200 Subject: readelf: Handle multiple .debug_macro sections and decode header flag. In object files there could be multiple .debug_macro sections. These are COMDAT sections used as imports. Note that the output for DW_MACRO_import isn't ideal since the offset is printed against the start of the .debug_macro section, but it doesn't show which one. We currently don't have that information and no interface yet for libdw users. Also decode the macro header flag byte for convenience. Signed-off-by: Mark Wielaard --- src/ChangeLog | 6 + src/readelf.c | 31 ++- tests/ChangeLog | 10 + tests/run-readelf-macro.sh | 4 +- tests/run-readelf-macros.sh | 435 +++++++++++++++++++++++++++++++++++++ tests/run-readelf-zdebug.sh | 2 +- tests/testfile-macros-object.o.bz2 | Bin 0 -> 5718 bytes 7 files changed, 482 insertions(+), 6 deletions(-) create mode 100755 tests/run-readelf-macros.sh create mode 100644 tests/testfile-macros-object.o.bz2 diff --git a/src/ChangeLog b/src/ChangeLog index 5aa31fc7..680291be 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2018-09-13 Mark Wielaard + + * readelf.c (print_debug_macro_section): Use elf_getdata. Print + decoded flag string. +2018-09-13 Mark Wielaard + 2018-10-19 Mark Wielaard * unstrip.c (copy_elided_sections): Renumber group section indexes. diff --git a/src/readelf.c b/src/readelf.c index bddcd703..366e2c3d 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -9702,8 +9702,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), (uint64_t) shdr->sh_offset); putc_unlocked ('\n', stdout); - Elf_Data *data = (dbg->sectiondata[IDX_debug_macro] - ?: elf_rawdata (scn, NULL)); + Elf_Data *data = elf_getdata (scn, NULL); if (unlikely (data == NULL)) { error (0, 0, gettext ("cannot get macro information section data: %s"), @@ -9772,7 +9771,33 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), if (readp + 1 > readendp) goto invalid_data; const unsigned char flag = *readp++; - printf (gettext (" Flag: 0x%" PRIx8 "\n"), flag); + printf (gettext (" Flag: 0x%" PRIx8), flag); + if (flag != 0) + { + printf (" ("); + if ((flag & 0x01) != 0) + { + printf ("offset_size"); + if ((flag & 0xFE) != 0) + printf (", "); + } + if ((flag & 0x02) != 0) + { + printf ("debug_line_offset"); + if ((flag & 0xFC) != 0) + printf (", "); + } + if ((flag & 0x04) != 0) + { + printf ("operands_table"); + if ((flag & 0xF8) != 0) + printf (", "); + } + if ((flag & 0xF8) != 0) + printf ("unknown"); + printf (")"); + } + printf ("\n"); unsigned int offset_len = (flag & 0x01) ? 8 : 4; printf (gettext (" Offset length: %" PRIu8 "\n"), offset_len); diff --git a/tests/ChangeLog b/tests/ChangeLog index c5f0d774..751a0810 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,13 @@ +2018-10-12 Mark Wielaard + + * run-readelf-zdebug.sh: Adjust flags output. + * run-readelf-macro.sh: Likewise. + * run-readelf-macros.sh: New test. + * testfile-macros-object.o.bz2: New test file. + * Makefile.am (TESTS): Add run-readelf-macros.sh. + (EXTRA_DIST): Add run-readelf-macros.sh and + testfile-macros-object.o.bz2. + 2018-09-12 Mark Wielaard * run-annobingroup.sh: Add x86_64 ET_REL testcase. diff --git a/tests/run-readelf-macro.sh b/tests/run-readelf-macro.sh index 86932033..8b17f7da 100755 --- a/tests/run-readelf-macro.sh +++ b/tests/run-readelf-macro.sh @@ -65,7 +65,7 @@ DWARF section [32] '.debug_macro' at offset 0x2480: Offset: 0x0 Version: 4 - Flag: 0x2 + Flag: 0x2 (debug_line_offset) Offset length: 4 .debug_line offset: 0x0 @@ -329,7 +329,7 @@ DWARF section [32] '.debug_macro' at offset 0x2480: Offset: 0x5bc Version: 4 - Flag: 0x2 + Flag: 0x2 (debug_line_offset) Offset length: 4 .debug_line offset: 0x47 diff --git a/tests/run-readelf-macros.sh b/tests/run-readelf-macros.sh new file mode 100755 index 00000000..cc311b75 --- /dev/null +++ b/tests/run-readelf-macros.sh @@ -0,0 +1,435 @@ +#! /bin/sh +# Copyright (C) 2018 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 . + +. $srcdir/test-subr.sh + +# - testfile-macros-object.c +# +# #define SUCCESS 0 +# #define FAILURE 0 +# +# #include +# +# bool foo (int input) +# { +# return input == SUCCESS ? SUCCESS : FAILURE; +# } + +# gcc -g3 -gdwarf-5 -O2 -c testfile-macros-object.c + +testfiles testfile-macros-object.o + +testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=macro testfile-macros-object.o <<\EOF + +DWARF section [12] '.debug_macro' at offset 0x16f: + + Offset: 0x0 + Version: 5 + Flag: 0x2 (debug_line_offset) + Offset length: 4 + .debug_line offset: 0x0 + + #include offset 0x0 + start_file 0, [1] /home/mark/build/elfutils-obj/testfile-macros-object.c + start_file 31, [2] /usr/include/stdc-predef.h + #include offset 0x0 + end_file + #define SUCCESS 0, line 1 (indirect) + #define FAILURE 0, line 2 (indirect) + start_file 4, [3] /opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8/include/stdbool.h + #include offset 0x0 + end_file + end_file + + +DWARF section [14] '.debug_macro' at offset 0x19e: + + Offset: 0x0 + Version: 5 + Flag: 0x0 + Offset length: 4 + + #define __STDC__ 1, line 0 (indirect) + #define __STDC_VERSION__ 201710L, line 0 (indirect) + #define __STDC_UTF_16__ 1, line 0 (indirect) + #define __STDC_UTF_32__ 1, line 0 (indirect) + #define __STDC_HOSTED__ 1, line 0 (indirect) + #define __GNUC__ 8, line 0 (indirect) + #define __GNUC_MINOR__ 2, line 0 (indirect) + #define __GNUC_PATCHLEVEL__ 1, line 0 (indirect) + #define __VERSION__ "8.2.1 20180905 (Red Hat 8.2.1-3)", line 0 (indirect) + #define __GNUC_RH_RELEASE__ 3, line 0 (indirect) + #define __ATOMIC_RELAXED 0, line 0 (indirect) + #define __ATOMIC_SEQ_CST 5, line 0 (indirect) + #define __ATOMIC_ACQUIRE 2, line 0 (indirect) + #define __ATOMIC_RELEASE 3, line 0 (indirect) + #define __ATOMIC_ACQ_REL 4, line 0 (indirect) + #define __ATOMIC_CONSUME 1, line 0 (indirect) + #define __OPTIMIZE__ 1, line 0 (indirect) + #define __FINITE_MATH_ONLY__ 0, line 0 (indirect) + #define _LP64 1, line 0 (indirect) + #define __LP64__ 1, line 0 (indirect) + #define __SIZEOF_INT__ 4, line 0 (indirect) + #define __SIZEOF_LONG__ 8, line 0 (indirect) + #define __SIZEOF_LONG_LONG__ 8, line 0 (indirect) + #define __SIZEOF_SHORT__ 2, line 0 (indirect) + #define __SIZEOF_FLOAT__ 4, line 0 (indirect) + #define __SIZEOF_DOUBLE__ 8, line 0 (indirect) + #define __SIZEOF_LONG_DOUBLE__ 16, line 0 (indirect) + #define __SIZEOF_SIZE_T__ 8, line 0 (indirect) + #define __CHAR_BIT__ 8, line 0 (indirect) + #define __BIGGEST_ALIGNMENT__ 16, line 0 (indirect) + #define __ORDER_LITTLE_ENDIAN__ 1234, line 0 (indirect) + #define __ORDER_BIG_ENDIAN__ 4321, line 0 (indirect) + #define __ORDER_PDP_ENDIAN__ 3412, line 0 (indirect) + #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__, line 0 (indirect) + #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__, line 0 (indirect) + #define __SIZEOF_POINTER__ 8, line 0 (indirect) + #define __SIZE_TYPE__ long unsigned int, line 0 (indirect) + #define __PTRDIFF_TYPE__ long int, line 0 (indirect) + #define __WCHAR_TYPE__ int, line 0 (indirect) + #define __WINT_TYPE__ unsigned int, line 0 (indirect) + #define __INTMAX_TYPE__ long int, line 0 (indirect) + #define __UINTMAX_TYPE__ long unsigned int, line 0 (indirect) + #define __CHAR16_TYPE__ short unsigned int, line 0 (indirect) + #define __CHAR32_TYPE__ unsigned int, line 0 (indirect) + #define __SIG_ATOMIC_TYPE__ int, line 0 (indirect) + #define __INT8_TYPE__ signed char, line 0 (indirect) + #define __INT16_TYPE__ short int, line 0 (indirect) + #define __INT32_TYPE__ int, line 0 (indirect) + #define __INT64_TYPE__ long int, line 0 (indirect) + #define __UINT8_TYPE__ unsigned char, line 0 (indirect) + #define __UINT16_TYPE__ short unsigned int, line 0 (indirect) + #define __UINT32_TYPE__ unsigned int, line 0 (indirect) + #define __UINT64_TYPE__ long unsigned int, line 0 (indirect) + #define __INT_LEAST8_TYPE__ signed char, line 0 (indirect) + #define __INT_LEAST16_TYPE__ short int, line 0 (indirect) + #define __INT_LEAST32_TYPE__ int, line 0 (indirect) + #define __INT_LEAST64_TYPE__ long int, line 0 (indirect) + #define __UINT_LEAST8_TYPE__ unsigned char, line 0 (indirect) + #define __UINT_LEAST16_TYPE__ short unsigned int, line 0 (indirect) + #define __UINT_LEAST32_TYPE__ unsigned int, line 0 (indirect) + #define __UINT_LEAST64_TYPE__ long unsigned int, line 0 (indirect) + #define __INT_FAST8_TYPE__ signed char, line 0 (indirect) + #define __INT_FAST16_TYPE__ long int, line 0 (indirect) + #define __INT_FAST32_TYPE__ long int, line 0 (indirect) + #define __INT_FAST64_TYPE__ long int, line 0 (indirect) + #define __UINT_FAST8_TYPE__ unsigned char, line 0 (indirect) + #define __UINT_FAST16_TYPE__ long unsigned int, line 0 (indirect) + #define __UINT_FAST32_TYPE__ long unsigned int, line 0 (indirect) + #define __UINT_FAST64_TYPE__ long unsigned int, line 0 (indirect) + #define __INTPTR_TYPE__ long int, line 0 (indirect) + #define __UINTPTR_TYPE__ long unsigned int, line 0 (indirect) + #define __has_include(STR) __has_include__(STR), line 0 (indirect) + #define __has_include_next(STR) __has_include_next__(STR), line 0 (indirect) + #define __GXX_ABI_VERSION 1013, line 0 (indirect) + #define __SCHAR_MAX__ 0x7f, line 0 (indirect) + #define __SHRT_MAX__ 0x7fff, line 0 (indirect) + #define __INT_MAX__ 0x7fffffff, line 0 (indirect) + #define __LONG_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __LONG_LONG_MAX__ 0x7fffffffffffffffLL, line 0 (indirect) + #define __WCHAR_MAX__ 0x7fffffff, line 0 (indirect) + #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1), line 0 (indirect) + #define __WINT_MAX__ 0xffffffffU, line 0 (indirect) + #define __WINT_MIN__ 0U, line 0 (indirect) + #define __PTRDIFF_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __SIZE_MAX__ 0xffffffffffffffffUL, line 0 (indirect) + #define __SCHAR_WIDTH__ 8, line 0 (indirect) + #define __SHRT_WIDTH__ 16, line 0 (indirect) + #define __INT_WIDTH__ 32, line 0 (indirect) + #define __LONG_WIDTH__ 64, line 0 (indirect) + #define __LONG_LONG_WIDTH__ 64, line 0 (indirect) + #define __WCHAR_WIDTH__ 32, line 0 (indirect) + #define __WINT_WIDTH__ 32, line 0 (indirect) + #define __PTRDIFF_WIDTH__ 64, line 0 (indirect) + #define __SIZE_WIDTH__ 64, line 0 (indirect) + #define __INTMAX_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __INTMAX_C(c) c ## L, line 0 (indirect) + #define __UINTMAX_MAX__ 0xffffffffffffffffUL, line 0 (indirect) + #define __UINTMAX_C(c) c ## UL, line 0 (indirect) + #define __INTMAX_WIDTH__ 64, line 0 (indirect) + #define __SIG_ATOMIC_MAX__ 0x7fffffff, line 0 (indirect) + #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1), line 0 (indirect) + #define __SIG_ATOMIC_WIDTH__ 32, line 0 (indirect) + #define __INT8_MAX__ 0x7f, line 0 (indirect) + #define __INT16_MAX__ 0x7fff, line 0 (indirect) + #define __INT32_MAX__ 0x7fffffff, line 0 (indirect) + #define __INT64_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __UINT8_MAX__ 0xff, line 0 (indirect) + #define __UINT16_MAX__ 0xffff, line 0 (indirect) + #define __UINT32_MAX__ 0xffffffffU, line 0 (indirect) + #define __UINT64_MAX__ 0xffffffffffffffffUL, line 0 (indirect) + #define __INT_LEAST8_MAX__ 0x7f, line 0 (indirect) + #define __INT8_C(c) c, line 0 (indirect) + #define __INT_LEAST8_WIDTH__ 8, line 0 (indirect) + #define __INT_LEAST16_MAX__ 0x7fff, line 0 (indirect) + #define __INT16_C(c) c, line 0 (indirect) + #define __INT_LEAST16_WIDTH__ 16, line 0 (indirect) + #define __INT_LEAST32_MAX__ 0x7fffffff, line 0 (indirect) + #define __INT32_C(c) c, line 0 (indirect) + #define __INT_LEAST32_WIDTH__ 32, line 0 (indirect) + #define __INT_LEAST64_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __INT64_C(c) c ## L, line 0 (indirect) + #define __INT_LEAST64_WIDTH__ 64, line 0 (indirect) + #define __UINT_LEAST8_MAX__ 0xff, line 0 (indirect) + #define __UINT8_C(c) c, line 0 (indirect) + #define __UINT_LEAST16_MAX__ 0xffff, line 0 (indirect) + #define __UINT16_C(c) c, line 0 (indirect) + #define __UINT_LEAST32_MAX__ 0xffffffffU, line 0 (indirect) + #define __UINT32_C(c) c ## U, line 0 (indirect) + #define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL, line 0 (indirect) + #define __UINT64_C(c) c ## UL, line 0 (indirect) + #define __INT_FAST8_MAX__ 0x7f, line 0 (indirect) + #define __INT_FAST8_WIDTH__ 8, line 0 (indirect) + #define __INT_FAST16_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __INT_FAST16_WIDTH__ 64, line 0 (indirect) + #define __INT_FAST32_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __INT_FAST32_WIDTH__ 64, line 0 (indirect) + #define __INT_FAST64_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __INT_FAST64_WIDTH__ 64, line 0 (indirect) + #define __UINT_FAST8_MAX__ 0xff, line 0 (indirect) + #define __UINT_FAST16_MAX__ 0xffffffffffffffffUL, line 0 (indirect) + #define __UINT_FAST32_MAX__ 0xffffffffffffffffUL, line 0 (indirect) + #define __UINT_FAST64_MAX__ 0xffffffffffffffffUL, line 0 (indirect) + #define __INTPTR_MAX__ 0x7fffffffffffffffL, line 0 (indirect) + #define __INTPTR_WIDTH__ 64, line 0 (indirect) + #define __UINTPTR_MAX__ 0xffffffffffffffffUL, line 0 (indirect) + #define __GCC_IEC_559 2, line 0 (indirect) + #define __GCC_IEC_559_COMPLEX 2, line 0 (indirect) + #define __FLT_EVAL_METHOD__ 0, line 0 (indirect) + #define __FLT_EVAL_METHOD_TS_18661_3__ 0, line 0 (indirect) + #define __DEC_EVAL_METHOD__ 2, line 0 (indirect) + #define __FLT_RADIX__ 2, line 0 (indirect) + #define __FLT_MANT_DIG__ 24, line 0 (indirect) + #define __FLT_DIG__ 6, line 0 (indirect) + #define __FLT_MIN_EXP__ (-125), line 0 (indirect) + #define __FLT_MIN_10_EXP__ (-37), line 0 (indirect) + #define __FLT_MAX_EXP__ 128, line 0 (indirect) + #define __FLT_MAX_10_EXP__ 38, line 0 (indirect) + #define __FLT_DECIMAL_DIG__ 9, line 0 (indirect) + #define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F, line 0 (indirect) + #define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F, line 0 (indirect) + #define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F, line 0 (indirect) + #define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F, line 0 (indirect) + #define __FLT_HAS_DENORM__ 1, line 0 (indirect) + #define __FLT_HAS_INFINITY__ 1, line 0 (indirect) + #define __FLT_HAS_QUIET_NAN__ 1, line 0 (indirect) + #define __DBL_MANT_DIG__ 53, line 0 (indirect) + #define __DBL_DIG__ 15, line 0 (indirect) + #define __DBL_MIN_EXP__ (-1021), line 0 (indirect) + #define __DBL_MIN_10_EXP__ (-307), line 0 (indirect) + #define __DBL_MAX_EXP__ 1024, line 0 (indirect) + #define __DBL_MAX_10_EXP__ 308, line 0 (indirect) + #define __DBL_DECIMAL_DIG__ 17, line 0 (indirect) + #define __DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L), line 0 (indirect) + #define __DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L), line 0 (indirect) + #define __DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L), line 0 (indirect) + #define __DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L), line 0 (indirect) + #define __DBL_HAS_DENORM__ 1, line 0 (indirect) + #define __DBL_HAS_INFINITY__ 1, line 0 (indirect) + #define __DBL_HAS_QUIET_NAN__ 1, line 0 (indirect) + #define __LDBL_MANT_DIG__ 64, line 0 (indirect) + #define __LDBL_DIG__ 18, line 0 (indirect) + #define __LDBL_MIN_EXP__ (-16381), line 0 (indirect) + #define __LDBL_MIN_10_EXP__ (-4931), line 0 (indirect) + #define __LDBL_MAX_EXP__ 16384, line 0 (indirect) + #define __LDBL_MAX_10_EXP__ 4932, line 0 (indirect) + #define __DECIMAL_DIG__ 21, line 0 (indirect) + #define __LDBL_DECIMAL_DIG__ 21, line 0 (indirect) + #define __LDBL_MAX__ 1.18973149535723176502126385303097021e+4932L, line 0 (indirect) + #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L, line 0 (indirect) + #define __LDBL_EPSILON__ 1.08420217248550443400745280086994171e-19L, line 0 (indirect) + #define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L, line 0 (indirect) + #define __LDBL_HAS_DENORM__ 1, line 0 (indirect) + #define __LDBL_HAS_INFINITY__ 1, line 0 (indirect) + #define __LDBL_HAS_QUIET_NAN__ 1, line 0 (indirect) + #define __FLT32_MANT_DIG__ 24, line 0 (indirect) + #define __FLT32_DIG__ 6, line 0 (indirect) + #define __FLT32_MIN_EXP__ (-125), line 0 (indirect) + #define __FLT32_MIN_10_EXP__ (-37), line 0 (indirect) + #define __FLT32_MAX_EXP__ 128, line 0 (indirect) + #define __FLT32_MAX_10_EXP__ 38, line 0 (indirect) + #define __FLT32_DECIMAL_DIG__ 9, line 0 (indirect) + #define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32, line 0 (indirect) + #define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32, line 0 (indirect) + #define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32, line 0 (indirect) + #define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32, line 0 (indirect) + #define __FLT32_HAS_DENORM__ 1, line 0 (indirect) + #define __FLT32_HAS_INFINITY__ 1, line 0 (indirect) + #define __FLT32_HAS_QUIET_NAN__ 1, line 0 (indirect) + #define __FLT64_MANT_DIG__ 53, line 0 (indirect) + #define __FLT64_DIG__ 15, line 0 (indirect) + #define __FLT64_MIN_EXP__ (-1021), line 0 (indirect) + #define __FLT64_MIN_10_EXP__ (-307), line 0 (indirect) + #define __FLT64_MAX_EXP__ 1024, line 0 (indirect) + #define __FLT64_MAX_10_EXP__ 308, line 0 (indirect) + #define __FLT64_DECIMAL_DIG__ 17, line 0 (indirect) + #define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64, line 0 (indirect) + #define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64, line 0 (indirect) + #define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64, line 0 (indirect) + #define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64, line 0 (indirect) + #define __FLT64_HAS_DENORM__ 1, line 0 (indirect) + #define __FLT64_HAS_INFINITY__ 1, line 0 (indirect) + #define __FLT64_HAS_QUIET_NAN__ 1, line 0 (indirect) + #define __FLT128_MANT_DIG__ 113, line 0 (indirect) + #define __FLT128_DIG__ 33, line 0 (indirect) + #define __FLT128_MIN_EXP__ (-16381), line 0 (indirect) + #define __FLT128_MIN_10_EXP__ (-4931), line 0 (indirect) + #define __FLT128_MAX_EXP__ 16384, line 0 (indirect) + #define __FLT128_MAX_10_EXP__ 4932, line 0 (indirect) + #define __FLT128_DECIMAL_DIG__ 36, line 0 (indirect) + #define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128, line 0 (indirect) + #define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128, line 0 (indirect) + #define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128, line 0 (indirect) + #define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128, line 0 (indirect) + #define __FLT128_HAS_DENORM__ 1, line 0 (indirect) + #define __FLT128_HAS_INFINITY__ 1, line 0 (indirect) + #define __FLT128_HAS_QUIET_NAN__ 1, line 0 (indirect) + #define __FLT32X_MANT_DIG__ 53, line 0 (indirect) + #define __FLT32X_DIG__ 15, line 0 (indirect) + #define __FLT32X_MIN_EXP__ (-1021), line 0 (indirect) + #define __FLT32X_MIN_10_EXP__ (-307), line 0 (indirect) + #define __FLT32X_MAX_EXP__ 1024, line 0 (indirect) + #define __FLT32X_MAX_10_EXP__ 308, line 0 (indirect) + #define __FLT32X_DECIMAL_DIG__ 17, line 0 (indirect) + #define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x, line 0 (indirect) + #define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x, line 0 (indirect) + #define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x, line 0 (indirect) + #define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x, line 0 (indirect) + #define __FLT32X_HAS_DENORM__ 1, line 0 (indirect) + #define __FLT32X_HAS_INFINITY__ 1, line 0 (indirect) + #define __FLT32X_HAS_QUIET_NAN__ 1, line 0 (indirect) + #define __FLT64X_MANT_DIG__ 64, line 0 (indirect) + #define __FLT64X_DIG__ 18, line 0 (indirect) + #define __FLT64X_MIN_EXP__ (-16381), line 0 (indirect) + #define __FLT64X_MIN_10_EXP__ (-4931), line 0 (indirect) + #define __FLT64X_MAX_EXP__ 16384, line 0 (indirect) + #define __FLT64X_MAX_10_EXP__ 4932, line 0 (indirect) + #define __FLT64X_DECIMAL_DIG__ 21, line 0 (indirect) + #define __FLT64X_MAX__ 1.18973149535723176502126385303097021e+4932F64x, line 0 (indirect) + #define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x, line 0 (indirect) + #define __FLT64X_EPSILON__ 1.08420217248550443400745280086994171e-19F64x, line 0 (indirect) + #define __FLT64X_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951F64x, line 0 (indirect) + #define __FLT64X_HAS_DENORM__ 1, line 0 (indirect) + #define __FLT64X_HAS_INFINITY__ 1, line 0 (indirect) + #define __FLT64X_HAS_QUIET_NAN__ 1, line 0 (indirect) + #define __DEC32_MANT_DIG__ 7, line 0 (indirect) + #define __DEC32_MIN_EXP__ (-94), line 0 (indirect) + #define __DEC32_MAX_EXP__ 97, line 0 (indirect) + #define __DEC32_MIN__ 1E-95DF, line 0 (indirect) + #define __DEC32_MAX__ 9.999999E96DF, line 0 (indirect) + #define __DEC32_EPSILON__ 1E-6DF, line 0 (indirect) + #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF, line 0 (indirect) + #define __DEC64_MANT_DIG__ 16, line 0 (indirect) + #define __DEC64_MIN_EXP__ (-382), line 0 (indirect) + #define __DEC64_MAX_EXP__ 385, line 0 (indirect) + #define __DEC64_MIN__ 1E-383DD, line 0 (indirect) + #define __DEC64_MAX__ 9.999999999999999E384DD, line 0 (indirect) + #define __DEC64_EPSILON__ 1E-15DD, line 0 (indirect) + #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD, line 0 (indirect) + #define __DEC128_MANT_DIG__ 34, line 0 (indirect) + #define __DEC128_MIN_EXP__ (-6142), line 0 (indirect) + #define __DEC128_MAX_EXP__ 6145, line 0 (indirect) + #define __DEC128_MIN__ 1E-6143DL, line 0 (indirect) + #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL, line 0 (indirect) + #define __DEC128_EPSILON__ 1E-33DL, line 0 (indirect) + #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL, line 0 (indirect) + #define __REGISTER_PREFIX__ , line 0 (indirect) + #define __USER_LABEL_PREFIX__ , line 0 (indirect) + #define __GNUC_STDC_INLINE__ 1, line 0 (indirect) + #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1, line 0 (indirect) + #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1, line 0 (indirect) + #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1, line 0 (indirect) + #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1, line 0 (indirect) + #define __GCC_ATOMIC_BOOL_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_CHAR_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_SHORT_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_INT_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_LONG_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_LLONG_LOCK_FREE 2, line 0 (indirect) + #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1, line 0 (indirect) + #define __GCC_ATOMIC_POINTER_LOCK_FREE 2, line 0 (indirect) + #define __GCC_HAVE_DWARF2_CFI_ASM 1, line 0 (indirect) + #define __PRAGMA_REDEFINE_EXTNAME 1, line 0 (indirect) + #define __SIZEOF_INT128__ 16, line 0 (indirect) + #define __SIZEOF_WCHAR_T__ 4, line 0 (indirect) + #define __SIZEOF_WINT_T__ 4, line 0 (indirect) + #define __SIZEOF_PTRDIFF_T__ 8, line 0 (indirect) + #define __amd64 1, line 0 (indirect) + #define __amd64__ 1, line 0 (indirect) + #define __x86_64 1, line 0 (indirect) + #define __x86_64__ 1, line 0 (indirect) + #define __SIZEOF_FLOAT80__ 16, line 0 (indirect) + #define __SIZEOF_FLOAT128__ 16, line 0 (indirect) + #define __ATOMIC_HLE_ACQUIRE 65536, line 0 (indirect) + #define __ATOMIC_HLE_RELEASE 131072, line 0 (indirect) + #define __GCC_ASM_FLAG_OUTPUTS__ 1, line 0 (indirect) + #define __k8 1, line 0 (indirect) + #define __k8__ 1, line 0 (indirect) + #define __code_model_small__ 1, line 0 (indirect) + #define __MMX__ 1, line 0 (indirect) + #define __SSE__ 1, line 0 (indirect) + #define __SSE2__ 1, line 0 (indirect) + #define __FXSR__ 1, line 0 (indirect) + #define __SSE_MATH__ 1, line 0 (indirect) + #define __SSE2_MATH__ 1, line 0 (indirect) + #define __SEG_FS 1, line 0 (indirect) + #define __SEG_GS 1, line 0 (indirect) + #define __gnu_linux__ 1, line 0 (indirect) + #define __linux 1, line 0 (indirect) + #define __linux__ 1, line 0 (indirect) + #define linux 1, line 0 (indirect) + #define __unix 1, line 0 (indirect) + #define __unix__ 1, line 0 (indirect) + #define unix 1, line 0 (indirect) + #define __ELF__ 1, line 0 (indirect) + #define __DECIMAL_BID_FORMAT__ 1, line 0 (indirect) + + +DWARF section [16] '.debug_macro' at offset 0x98e: + + Offset: 0x0 + Version: 5 + Flag: 0x0 + Offset length: 4 + + #define _STDC_PREDEF_H 1, line 19 (indirect) + #define __STDC_IEC_559__ 1, line 30 (indirect) + #define __STDC_IEC_559_COMPLEX__ 1, line 31 (indirect) + #define __STDC_ISO_10646__ 201103L, line 35 (indirect) + #define __STDC_NO_THREADS__ 1, line 38 (indirect) + + +DWARF section [18] '.debug_macro' at offset 0x9b0: + + Offset: 0x0 + Version: 5 + Flag: 0x0 + Offset length: 4 + + #define _STDBOOL_H , line 29 (indirect) + #define bool _Bool, line 33 (indirect) + #define true 1, line 34 (indirect) + #define false 0, line 35 (indirect) + #define __bool_true_false_are_defined 1, line 52 (indirect) + +EOF + +exit 0 diff --git a/tests/run-readelf-zdebug.sh b/tests/run-readelf-zdebug.sh index 878e0ba8..9de68deb 100755 --- a/tests/run-readelf-zdebug.sh +++ b/tests/run-readelf-zdebug.sh @@ -100,7 +100,7 @@ DWARF section [33] '.debug_macro' at offset 0xab5: Offset: 0x0 Version: 4 - Flag: 0x2 + Flag: 0x2 (debug_line_offset) Offset length: 4 .debug_line offset: 0x0 diff --git a/tests/testfile-macros-object.o.bz2 b/tests/testfile-macros-object.o.bz2 new file mode 100644 index 00000000..de5fa1a0 Binary files /dev/null and b/tests/testfile-macros-object.o.bz2 differ -- cgit v1.2.3 From 20f9de9b5f704cec55df92406a50bcbcfca96acd Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 14 Oct 2018 16:45:48 +0200 Subject: libdwfl: Sanity check partial core file data reads. There were two issues when reading note data from a core file. We didn't check if the data we already had in a buffer was big enough. And if we did get the data, we should check if we got everything, or just a part of the data. https://sourceware.org/bugzilla/show_bug.cgi?id=23752 Signed-off-by: Mark Wielaard --- libdwfl/ChangeLog | 7 +++++++ libdwfl/dwfl_segment_report_module.c | 13 +++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index c5ea5634..2e7efd45 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,10 @@ +2018-10-14 Mark Wielaard + + * dwfl_segment_report_module.c (read_portion): Check requested + filesz isn't larger than buffer_available. + (dwfl_segment_report_module): Check data_size vs filesz after + read_portion call. + 2018-10-02 Andreas Schwab * relocate.c (relocate): Handle ADD/SUB relocations. diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c index 36e5c823..87498846 100644 --- a/libdwfl/dwfl_segment_report_module.c +++ b/libdwfl/dwfl_segment_report_module.c @@ -1,5 +1,5 @@ /* Sniff out modules from ELF headers visible in memory segments. - Copyright (C) 2008-2012, 2014, 2015 Red Hat, Inc. + Copyright (C) 2008-2012, 2014, 2015, 2018 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -301,7 +301,10 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, inline bool read_portion (void **data, size_t *data_size, GElf_Addr vaddr, size_t filesz) { - if (vaddr - start + filesz > buffer_available + /* Check whether we will have to read the segment data, or if it + can be returned from the existing buffer. */ + if (filesz > buffer_available + || vaddr - start > buffer_available - filesz /* If we're in string mode, then don't consider the buffer we have sufficient unless it contains the terminator of the string. */ || (filesz == 0 && memchr (vaddr - start + buffer, '\0', @@ -459,6 +462,12 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, if (read_portion (&data, &data_size, vaddr, filesz)) return; + /* data_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 (data_size != 0) + filesz = data_size; + assert (sizeof (Elf32_Nhdr) == sizeof (Elf64_Nhdr)); void *notes; -- cgit v1.2.3 From 577511f66842c324c811d1530eea32792f2bee29 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 14 Oct 2018 16:58:51 +0200 Subject: findtextrel: Check that sh_entsize isn't zero. A bogus ELF file could have sh_entsize as zero. Don't divide by zero, but just assume there are no entries in the section. https://sourceware.org/bugzilla/show_bug.cgi?id=23755 Signed-off-by: Mark Wielaard --- src/ChangeLog | 4 ++++ src/findtextrel.c | 23 +++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 680291be..d057669c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-10-14 Mark Wielaard + + * findtextrel.c (process_file): Check that sh_entsize is not zero. + 2018-09-13 Mark Wielaard * readelf.c (print_debug_macro_section): Use elf_getdata. Print diff --git a/src/findtextrel.c b/src/findtextrel.c index 49731592..f48752e5 100644 --- a/src/findtextrel.c +++ b/src/findtextrel.c @@ -1,5 +1,5 @@ /* Locate source files or functions which caused text relocations. - Copyright (C) 2005-2010, 2012, 2014 Red Hat, Inc. + Copyright (C) 2005-2010, 2012, 2014, 2018 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2005. @@ -263,9 +263,10 @@ process_file (const char *fname, bool more_than_one) seen_dynamic = true; Elf_Data *data = elf_getdata (scn, NULL); + size_t entries = (shdr->sh_entsize == 0 + ? 0 : shdr->sh_size / shdr->sh_entsize); - for (size_t cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; - ++cnt) + for (size_t cnt = 0; cnt < entries; ++cnt) { GElf_Dyn dynmem; GElf_Dyn *dyn; @@ -413,10 +414,11 @@ cannot get symbol table section %zu in '%s': %s"), if (shdr->sh_type == SHT_REL) { Elf_Data *data = elf_getdata (scn, NULL); + size_t entries = (shdr->sh_entsize == 0 + ? 0 : shdr->sh_size / shdr->sh_entsize); for (int cnt = 0; - (size_t) cnt < shdr->sh_size / shdr->sh_entsize; - ++cnt) + (size_t) cnt < entries; ++cnt) { GElf_Rel rel_mem; GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem); @@ -436,10 +438,10 @@ cannot get relocation at index %d in section %zu in '%s': %s"), else if (shdr->sh_type == SHT_RELA) { Elf_Data *data = elf_getdata (scn, NULL); + size_t entries = (shdr->sh_entsize == 0 + ? 0 : shdr->sh_size / shdr->sh_entsize); - for (int cnt = 0; - (size_t) cnt < shdr->sh_size / shdr->sh_entsize; - ++cnt) + for (int cnt = 0; (size_t) cnt < entries; ++cnt) { GElf_Rela rela_mem; GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem); @@ -531,9 +533,10 @@ check_rel (size_t nsegments, struct segments segments[nsegments], int highidx = -1; GElf_Sym sym_mem; GElf_Sym *sym; + size_t entries = (shdr->sh_entsize == 0 + ? 0 : shdr->sh_size / shdr->sh_entsize); - for (int i = 0; (size_t) i < shdr->sh_size / shdr->sh_entsize; - ++i) + for (int i = 0; (size_t) i < entries; ++i) { sym = gelf_getsym (symdata, i, &sym_mem); if (sym == NULL) -- cgit v1.2.3 From 4cdb0fd0d3b4255a9994ce302d6df76d251f7b75 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 14 Oct 2018 17:29:51 +0200 Subject: ar: Assume epoch if ar_date is bogus. If the ar header contains a bogus ar_date then in verbose mode we would get a NULL pointer from localtime. Just assume the entry was created during the epoch. https://sourceware.org/bugzilla/show_bug.cgi?id=23754 Signed-off-by: Mark Wielaard --- src/ChangeLog | 4 ++++ src/ar.c | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index d057669c..40de5a09 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-10-14 Mark Wielaard + + * ar.c (do_oper_extract): Assume epoch if ar_date is bogus. + 2018-10-14 Mark Wielaard * findtextrel.c (process_file): Check that sh_entsize is not zero. diff --git a/src/ar.c b/src/ar.c index 6f98f75d..d70f1f46 100644 --- a/src/ar.c +++ b/src/ar.c @@ -539,8 +539,14 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc, else if (oper == oper_list) { char datestr[100]; - strftime (datestr, sizeof (datestr), "%b %e %H:%M %Y", - localtime (&arhdr->ar_date)); + struct tm *tp = localtime (&arhdr->ar_date); + if (tp == NULL) + { + time_t time = 0; + tp = localtime (&time); + } + + strftime (datestr, sizeof (datestr), "%b %e %H:%M %Y", tp); printf ("%c%c%c%c%c%c%c%c%c %u/%u %6ju %s %s\n", (arhdr->ar_mode & S_IRUSR) ? 'r' : '-', -- cgit v1.2.3 From 2b16a9be69939822dcafe075413468daac98b327 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 18 Oct 2018 19:01:52 +0200 Subject: arlib: Check that sh_entsize isn't zero. A bogus ELF file could have sh_entsize as zero. Don't divide by zero, but just assume there are no symbols in the section. https://sourceware.org/bugzilla/show_bug.cgi?id=23786 Signed-off-by: Mark Wielaard --- src/ChangeLog | 4 ++++ src/arlib.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 40de5a09..92beb1bb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-10-18 Mark Wielaard + + * arlib.c (arlib_add_symbols): Check that sh_entsize is not zero. + 2018-10-14 Mark Wielaard * ar.c (do_oper_extract): Assume epoch if ar_date is bogus. diff --git a/src/arlib.c b/src/arlib.c index 778e0878..a6521e30 100644 --- a/src/arlib.c +++ b/src/arlib.c @@ -252,6 +252,9 @@ arlib_add_symbols (Elf *elf, const char *arfname, const char *membername, if (data == NULL) continue; + if (shdr->sh_entsize == 0) + continue; + int nsyms = shdr->sh_size / shdr->sh_entsize; for (int ndx = shdr->sh_info; ndx < nsyms; ++ndx) { -- cgit v1.2.3 From 22d2d082d57a7470fadc0eae67179553f4919209 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 18 Oct 2018 23:15:48 +0200 Subject: size: Handle recursive ELF ar files. eu-size didn't handle an ELF ar file that contained an ar file itself correctly. handle_ar would recursively call itself but close the ELF file before returning. Only close the ELF file at the top-level. https://sourceware.org/bugzilla/show_bug.cgi?id=23787 Signed-off-by: Mark Wielaard --- src/ChangeLog | 4 ++++ src/size.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 92beb1bb..a6ab0931 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-10-18 Mark Wielaard + + * size.c (handle_ar): Only close elf if prefix was NULL. + 2018-10-18 Mark Wielaard * arlib.c (arlib_add_symbols): Check that sh_entsize is not zero. diff --git a/src/size.c b/src/size.c index 5ff3f2af..f01fd880 100644 --- a/src/size.c +++ b/src/size.c @@ -374,8 +374,10 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname) INTERNAL_ERROR (fname); } - if (unlikely (elf_end (elf) != 0)) - INTERNAL_ERROR (fname); + /* Only close ELF handle if this was a "top level" ar file. */ + if (prefix == NULL) + if (unlikely (elf_end (elf) != 0)) + INTERNAL_ERROR (fname); return result; } -- cgit v1.2.3 From 1e7c230b277b6eb82577a3bc4b56ca291c28964d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 19 Oct 2018 15:01:29 +0200 Subject: Check sh_entsize is not zero. There were some recent bug reports where we trusted the ELF section header to be sane and divided the sh_size by the sh_entsize to get the number of objects in the section. This would cause a divide by zero if the file was corrupt and the sh_entsize was zero. Add checks for any such code. Signed-off-by: Mark Wielaard --- libasm/ChangeLog | 4 ++++ libasm/disasm_cb.c | 2 ++ libdwfl/ChangeLog | 4 ++++ libdwfl/dwfl_module_getdwarf.c | 2 ++ src/ChangeLog | 7 +++++++ src/unstrip.c | 27 ++++++++++++++++++++++++++- 6 files changed, 45 insertions(+), 1 deletion(-) diff --git a/libasm/ChangeLog b/libasm/ChangeLog index 2efd85fa..92dfd729 100644 --- a/libasm/ChangeLog +++ b/libasm/ChangeLog @@ -1,3 +1,7 @@ +2018-10-19 Mark Wielaard + + * disasm_cb.c (read_symtab_exec): Check sh_entsize is not zero. + 2018-07-04 Ross Burton * asm_end.c: Remove error.h include. diff --git a/libasm/disasm_cb.c b/libasm/disasm_cb.c index cf278c71..80f8b25b 100644 --- a/libasm/disasm_cb.c +++ b/libasm/disasm_cb.c @@ -93,6 +93,8 @@ read_symtab_exec (DisasmCtx_t *ctx) xndxdata = elf_getdata (elf_getscn (ctx->elf, xndxscnidx), NULL); /* Iterate over all symbols. Add all defined symbols. */ + if (shdr->sh_entsize == 0) + continue; int nsyms = shdr->sh_size / shdr->sh_entsize; for (int cnt = 1; cnt < nsyms; ++cnt) { diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 2e7efd45..6c333d83 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,7 @@ +2018-10-19 Mark Wielaard + + * dwfl_module_getdwarf.c (find_aux_sym): Check sh_entsize is not zero. + 2018-10-14 Mark Wielaard * dwfl_segment_report_module.c (read_portion): Check requested diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c index af6838a6..56e61054 100644 --- a/libdwfl/dwfl_module_getdwarf.c +++ b/libdwfl/dwfl_module_getdwarf.c @@ -1007,6 +1007,8 @@ find_aux_sym (Dwfl_Module *mod __attribute__ ((unused)), switch (shdr->sh_type) { case SHT_SYMTAB: + if (shdr->sh_entsize == 0) + return; minisymtab = true; *aux_symscn = scn; *aux_strshndx = shdr->sh_link; diff --git a/src/ChangeLog b/src/ChangeLog index a6ab0931..0cbcf80c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2018-10-19 Mark Wielaard + + * dwfl_module_getdwarf.c (adjust_relocs): Check sh_entsize is not + zero. + (add_new_section_symbols): Likewise. + (copy_elided_sections): Likewise. + 2018-10-18 Mark Wielaard * size.c (handle_ar): Only close elf if prefix was NULL. diff --git a/src/unstrip.c b/src/unstrip.c index 2cfd3b37..32da89d7 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -446,6 +446,9 @@ adjust_relocs (Elf_Scn *outscn, Elf_Scn *inscn, const GElf_Shdr *shdr, switch (shdr->sh_type) { case SHT_REL: + if (shdr->sh_entsize == 0) + error (EXIT_FAILURE, 0, "REL section cannot have zero sh_entsize"); + for (size_t i = 0; i < shdr->sh_size / shdr->sh_entsize; ++i) { GElf_Rel rel_mem; @@ -457,6 +460,9 @@ adjust_relocs (Elf_Scn *outscn, Elf_Scn *inscn, const GElf_Shdr *shdr, break; case SHT_RELA: + if (shdr->sh_entsize == 0) + error (EXIT_FAILURE, 0, "RELA section cannot have zero sh_entsize"); + for (size_t i = 0; i < shdr->sh_size / shdr->sh_entsize; ++i) { GElf_Rela rela_mem; @@ -483,6 +489,10 @@ adjust_relocs (Elf_Scn *outscn, Elf_Scn *inscn, const GElf_Shdr *shdr, case SHT_HASH: /* We must expand the table and rejigger its contents. */ { + if (shdr->sh_entsize == 0) + error (EXIT_FAILURE, 0, "HASH section cannot have zero sh_entsize"); + if (symshdr->sh_entsize == 0) + error (EXIT_FAILURE, 0, "Symbol table cannot have zero sh_entsize"); const size_t nsym = symshdr->sh_size / symshdr->sh_entsize; const size_t onent = shdr->sh_size / shdr->sh_entsize; assert (data->d_size == shdr->sh_size); @@ -538,6 +548,11 @@ adjust_relocs (Elf_Scn *outscn, Elf_Scn *inscn, const GElf_Shdr *shdr, case SHT_GNU_versym: /* We must expand the table and move its elements around. */ { + if (shdr->sh_entsize == 0) + error (EXIT_FAILURE, 0, + "GNU_versym section cannot have zero sh_entsize"); + if (symshdr->sh_entsize == 0) + error (EXIT_FAILURE, 0, "Symbol table cannot have zero sh_entsize"); const size_t nent = symshdr->sh_size / symshdr->sh_entsize; const size_t onent = shdr->sh_size / shdr->sh_entsize; assert (nent >= onent); @@ -603,6 +618,8 @@ add_new_section_symbols (Elf_Scn *old_symscn, size_t old_shnum, GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (symscn, &shdr_mem); ELF_CHECK (shdr != NULL, _("cannot get section header: %s")); + if (shdr->sh_entsize == 0) + error (EXIT_FAILURE, 0, "Symbol table section cannot have zero sh_entsize"); const size_t nsym = shdr->sh_size / shdr->sh_entsize; size_t symndx_map[nsym - 1]; @@ -1671,6 +1688,9 @@ more sections in stripped file than debug file -- arguments reversed?")); Elf_Data *shndxdata = NULL; /* XXX */ + if (shdr_mem.sh_entsize == 0) + error (EXIT_FAILURE, 0, + "SYMTAB section cannot have zero sh_entsize"); for (size_t i = 1; i < shdr_mem.sh_size / shdr_mem.sh_entsize; ++i) { GElf_Sym sym_mem; @@ -1736,11 +1756,16 @@ more sections in stripped file than debug file -- arguments reversed?")); /* Merge the stripped file's symbol table into the unstripped one. */ const size_t stripped_nsym = (stripped_symtab == NULL ? 1 : (stripped_symtab->shdr.sh_size - / stripped_symtab->shdr.sh_entsize)); + / (stripped_symtab->shdr.sh_entsize == 0 + ? 1 + : stripped_symtab->shdr.sh_entsize))); GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (unstripped_symtab, &shdr_mem); ELF_CHECK (shdr != NULL, _("cannot get section header: %s")); + if (shdr->sh_entsize == 0) + error (EXIT_FAILURE, 0, + "unstripped SYMTAB section cannot have zero sh_entsize"); const size_t unstripped_nsym = shdr->sh_size / shdr->sh_entsize; /* First collect all the symbols from both tables. */ -- cgit v1.2.3 From dce0b3b63ba05e2bebd4543ac9248cc0d48b2d2a Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 16 Oct 2018 14:22:33 +0200 Subject: readelf: Make sure readp is smaller than cieend in print_debug_frame_section. We could end up with a negative length in a call to memchr. https://sourceware.org/bugzilla/show_bug.cgi?id=23782 Signed-off-by: Mark Wielaard --- src/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 0cbcf80c..602312e7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2018-10-16 Mark Wielaard + + * readelf.c (print_debug_frame_section): Make sure readp is never + greater than cieend. + 2018-10-19 Mark Wielaard * dwfl_module_getdwarf.c (adjust_relocs): Check sh_entsize is not -- cgit v1.2.3 From 72d023b35f3639864b61bd1c11aaadc4957e6286 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 16 Oct 2018 14:22:33 +0200 Subject: readelf: Make sure readp is smaller than cieend in print_debug_frame_section. We could end up with a negative length in a call to memchr. https://sourceware.org/bugzilla/show_bug.cgi?id=23782 Signed-off-by: Mark Wielaard --- src/readelf.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/readelf.c b/src/readelf.c index 366e2c3d..dfbb3d0b 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -6598,18 +6598,24 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, ptrdiff_t start = readp - (unsigned char *) data->d_buf; const unsigned char *const cieend = readp + unit_length; - if (unlikely (cieend > dataend || readp + 8 > dataend)) + if (unlikely (cieend > dataend)) goto invalid_data; Dwarf_Off cie_id; if (length == 4) { + if (unlikely (cieend - readp < 4)) + goto invalid_data; cie_id = read_4ubyte_unaligned_inc (dbg, readp); if (!is_eh_frame && cie_id == DW_CIE_ID_32) cie_id = DW_CIE_ID_64; } else - cie_id = read_8ubyte_unaligned_inc (dbg, readp); + { + if (unlikely (cieend - readp < 8)) + goto invalid_data; + cie_id = read_8ubyte_unaligned_inc (dbg, readp); + } uint_fast8_t version = 2; unsigned int code_alignment_factor; @@ -6621,6 +6627,8 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, if (cie_id == (is_eh_frame ? 0 : DW_CIE_ID_64)) { + if (unlikely (cieend - readp < 2)) + goto invalid_data; version = *readp++; const char *const augmentation = (const char *) readp; readp = memchr (readp, '\0', cieend - readp); -- cgit v1.2.3 From 9a74c190a2b357c6318e6222ff08c5bcee2f9291 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 20 Oct 2018 13:20:30 +0200 Subject: backends: ppc use define instead of const for size of dwarf_regs array. The size of the dwarf_regs is a constant, but when building without optimizations the compiler doesn't see that and will warn that it cannot proof the stack size is bounded. Use a define instead of a const, so the compiler will use a constant expression everywhere. Signed-off-by: Mark Wielaard --- backends/ChangeLog | 5 +++++ backends/ppc_initreg.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index a7434dd2..768c270b 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,8 @@ +2018-10-20 Mark Wielaard + + * ppc_initreg.c (ppc_set_initial_registers_tid): Use define instead of + const for size of dwarf_regs array. + 2018-10-02 Andreas Schwab * riscv_symbol.c (riscv_reloc_simple_type): Add parameter addsub. diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c index 3e4432f6..0e0d3599 100644 --- a/backends/ppc_initreg.c +++ b/backends/ppc_initreg.c @@ -93,11 +93,11 @@ ppc_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), if (errno != 0) return false; } - const size_t gprs = sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr); - Dwarf_Word dwarf_regs[gprs]; - for (unsigned gpr = 0; gpr < gprs; gpr++) +#define GPRS (sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr)) + Dwarf_Word dwarf_regs[GPRS]; + for (unsigned gpr = 0; gpr < GPRS; gpr++) dwarf_regs[gpr] = user_regs.r.gpr[gpr]; - if (! setfunc (0, gprs, dwarf_regs, arg)) + if (! setfunc (0, GPRS, dwarf_regs, arg)) return false; dwarf_regs[0] = user_regs.r.link; // LR uses both 65 and 108 numbers, there is no consistency for it. -- cgit v1.2.3 From 35197ea4c43ef2101b06e03ef6b3c6778bd986bc Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 24 Oct 2018 15:59:32 +0200 Subject: readelf: Use shstrndx to lookup section names. The function section_name would use the Ehdr e_shstrndx field to find the index of the section index string table directly. But it should use elf_getshdrstrndx. Adjust all callers. Signed-off-by: Mark Wielaard --- src/ChangeLog | 21 +++++++++++++++ src/readelf.c | 82 ++++++++++++++++++++++++++++++++++------------------------- 2 files changed, 68 insertions(+), 35 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 602312e7..bd6751ad 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,24 @@ +2018-10-24 Mark Wielaard + + * readelf.c (section_name): Remove ehdr argument, lookup shstrndx. + (print_debug_abbrev_section): Don't pass ehdr. + (print_debug_addr_section): Likewise. + (print_decoded_aranges_section): Likewise. + (print_debug_aranges_section): Likewise. + (print_debug_rnglists_section): Likewise. + (print_debug_ranges_section): Likewise. + (print_debug_units): Likewise. + (print_decoded_line_section): Likewise. + (print_debug_line_section): Likewise. + (print_debug_loclists_section): Likewise. + (print_debug_loc_section): Likewise. + (print_debug_macinfo_section): Likewise. + (print_debug_macro_section): Likewise. + (print_debug_pubnames_section): Likewise. + (print_debug_str_section): Liekwise. + (print_debug_str_offsets_section): Likewise. + (print_gdb_index_section): Likewise. + 2018-10-16 Mark Wielaard * readelf.c (print_debug_frame_section): Make sure readp is never diff --git a/src/readelf.c b/src/readelf.c index dfbb3d0b..72ae04ec 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -1530,9 +1530,12 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr) static const char * -section_name (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr) +section_name (Ebl *ebl, GElf_Shdr *shdr) { - return elf_strptr (ebl->elf, ehdr->e_shstrndx, shdr->sh_name) ?: "???"; + size_t shstrndx; + if (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0) + return "???"; + return elf_strptr (ebl->elf, shstrndx, shdr->sh_name) ?: "???"; } @@ -5003,7 +5006,7 @@ listptr_cu (struct listptr_table *table, size_t *idxp, static void print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)), - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { const size_t sh_size = (dbg->sectiondata[IDX_debug_abbrev] ? @@ -5011,7 +5014,7 @@ print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)), printf (gettext ("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n" " [ Code]\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); Dwarf_Off offset = 0; @@ -5081,7 +5084,7 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)), { printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); if (shdr->sh_size == 0) @@ -5329,7 +5332,7 @@ print_decoded_aranges_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, "\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 " contains %zu entries:\n", cnt), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset, cnt); /* Compute floor(log16(cnt)). */ @@ -5390,7 +5393,7 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)), printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); const unsigned char *readp = data->d_buf; @@ -5406,7 +5409,7 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)), { invalid_data: error (0, 0, gettext ("invalid data in section [%zu] '%s'"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr)); + elf_ndxscn (scn), section_name (ebl, shdr)); return; } @@ -5550,13 +5553,14 @@ split_dwarf_cu_base (Dwarf *dbg, Dwarf_CU **cu, Dwarf_Addr *cu_base) /* Print content of DWARF .debug_rnglists section. */ static void print_debug_rnglists_section (Dwfl_Module *dwflmod, - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg __attribute__((unused))) { printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); Elf_Data *data =(dbg->sectiondata[IDX_debug_rnglists] @@ -5581,7 +5585,7 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod, { invalid_data: error (0, 0, gettext ("invalid data in section [%zu] '%s'"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr)); + elf_ndxscn (scn), section_name (ebl, shdr)); return; } @@ -5941,7 +5945,7 @@ print_debug_ranges_section (Dwfl_Module *dwflmod, printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); sort_listptr (&known_rangelistptr, "rangelistptr"); @@ -7535,12 +7539,12 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) static void print_debug_units (Dwfl_Module *dwflmod, - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg, bool debug_types) { const bool silent = !(print_debug_sections & section_info) && !debug_types; - const char *secname = section_name (ebl, ehdr, shdr); + const char *secname = section_name (ebl, shdr); if (!silent) printf (gettext ("\ @@ -7837,12 +7841,13 @@ print_debug_types_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, static void -print_decoded_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, +print_decoded_line_section (Dwfl_Module *dwflmod, Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); size_t address_size @@ -8191,7 +8196,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); if (shdr->sh_size == 0) @@ -8228,7 +8233,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, { invalid_data: error (0, 0, gettext ("invalid data in section [%zu] '%s'"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr)); + elf_ndxscn (scn), section_name (ebl, shdr)); return; } unit_length = read_8ubyte_unaligned_inc (dbg, linep); @@ -8355,7 +8360,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, error (0, 0, gettext ("invalid data at offset %tu in section [%zu] '%s'"), linep - (const unsigned char *) data->d_buf, - elf_ndxscn (scn), section_name (ebl, ehdr, shdr)); + elf_ndxscn (scn), section_name (ebl, shdr)); linep = lineendp; continue; } @@ -8855,13 +8860,14 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, static void print_debug_loclists_section (Dwfl_Module *dwflmod, - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); Elf_Data *data = (dbg->sectiondata[IDX_debug_loclists] @@ -8886,7 +8892,7 @@ print_debug_loclists_section (Dwfl_Module *dwflmod, { invalid_data: error (0, 0, gettext ("invalid data in section [%zu] '%s'"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr)); + elf_ndxscn (scn), section_name (ebl, shdr)); return; } @@ -9297,7 +9303,7 @@ print_debug_loc_section (Dwfl_Module *dwflmod, printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); sort_listptr (&known_locsptr, "loclistptr"); @@ -9536,12 +9542,13 @@ mac_compare (const void *p1, const void *p2) static void print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)), - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); putc_unlocked ('\n', stdout); @@ -9701,12 +9708,13 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)), static void print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); putc_unlocked ('\n', stdout); @@ -10087,11 +10095,12 @@ print_pubnames (Dwarf *dbg __attribute__ ((unused)), Dwarf_Global *global, /* Print the known exported symbols in the DWARF section '.debug_pubnames'. */ static void print_debug_pubnames_section (Dwfl_Module *dwflmod __attribute__ ((unused)), - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { printf (gettext ("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); int n = 0; @@ -10101,7 +10110,8 @@ print_debug_pubnames_section (Dwfl_Module *dwflmod __attribute__ ((unused)), /* Print the content of the DWARF string section '.debug_str'. */ static void print_debug_str_section (Dwfl_Module *dwflmod __attribute__ ((unused)), - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg __attribute__ ((unused))) { @@ -10121,7 +10131,7 @@ print_debug_str_section (Dwfl_Module *dwflmod __attribute__ ((unused)), printf (gettext ("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n" " %*s String\n"), elf_ndxscn (scn), - section_name (ebl, ehdr, shdr), (uint64_t) shdr->sh_offset, + section_name (ebl, shdr), (uint64_t) shdr->sh_offset, /* TRANS: the debugstr| prefix makes the string unique. */ digits + 2, sgettext ("debugstr|Offset")); @@ -10145,12 +10155,13 @@ print_debug_str_section (Dwfl_Module *dwflmod __attribute__ ((unused)), static void print_debug_str_offsets_section (Dwfl_Module *dwflmod __attribute__ ((unused)), - Ebl *ebl, GElf_Ehdr *ehdr, + Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { printf (gettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); if (shdr->sh_size == 0) @@ -10614,12 +10625,13 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)), http://sourceware.org/gdb/current/onlinedocs/gdb/Index-Section-Format.html */ static void -print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, +print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl, + GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { printf (gettext ("\nGDB section [%2zu] '%s' at offset %#" PRIx64 " contains %" PRId64 " bytes :\n"), - elf_ndxscn (scn), section_name (ebl, ehdr, shdr), + elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset, (uint64_t) shdr->sh_size); Elf_Data *data = elf_rawdata (scn, NULL); -- cgit v1.2.3 From b75ff1bbd060404565fa28d72441a9b02f331bae Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 24 Oct 2018 16:15:04 +0200 Subject: addr2line: Use elf_getshdrstrndx not Ehdr field to print section name. Using the Ehdr field directly doesn't work when there are a large number of sections. Signed-off-by: Mark Wielaard --- src/ChangeLog | 5 +++++ src/addr2line.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index bd6751ad..5061cc11 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2018-10-24 Mark Wielaard + + * addr2line.c (print_addrsym): Use elf_getshdrstrndx instead of + Ehdr field. + 2018-10-24 Mark Wielaard * readelf.c (section_name): Remove ehdr argument, lookup shstrndx. diff --git a/src/addr2line.c b/src/addr2line.c index b7eb893e..69d8d995 100644 --- a/src/addr2line.c +++ b/src/addr2line.c @@ -446,9 +446,9 @@ print_addrsym (Dwfl_Module *mod, GElf_Addr addr) if (shdr != NULL) { Elf *elf = dwfl_module_getelf (mod, &ebias); - GElf_Ehdr ehdr; - if (gelf_getehdr (elf, &ehdr) != NULL) - printf (" (%s)", elf_strptr (elf, ehdr.e_shstrndx, + size_t shstrndx; + if (elf_getshdrstrndx (elf, &shstrndx) >= 0) + printf (" (%s)", elf_strptr (elf, shstrndx, shdr->sh_name)); } } -- cgit v1.2.3 From 5199e15870e05e5b0b9f98c20fc9b5427aa6dd6a Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Mon, 15 Oct 2018 23:35:47 +0200 Subject: Recognize and parse GNU Property notes. GNU Property notes are different from normal notes because they use variable alignment/padding of their fields. They are 8 byte aligned, but use 4 byte fields. The name is aligned at 4 bytes and padded so that, the desc is aligned at 8 bytes. The whole note is padded to 8 bytes again. For normal notes all fields are both 4 bytes wide and 4 bytes aligned. To recognize these new kind of ELF Notes a new Elf_Type is introduced, ELF_T_NHDR8. This type is used in the xlate functions to determine how to align and pad the various fields. Since the fields themselves can now have different alignments we will have to keep track of the current alignement and use either NOTE_ALIGN4 or NOTE_ALIGN8 to determine the padding. To set the correct Elf_Type on the Elf_Data we use either the section sh_addralign or the segment p_align values. Assuming 8 means the section or segment contains the new style notes, otherwise normal notes. When we cannot determine the "alignment" directly, like when parsing special kernel sys files, we check the name "GNU" and type "GNU_PROPERTY_TYPE_0" fields. ebl_object_note now parses the new NT_GNU_PROPERTY_TYPE_0 and can extract the GNU_PROPERTY_STACK_SIZE, GNU_PROPERTY_NO_COPY_ON_PROTECTED and GNU_PROPERTY_X86_FEATURE_1_AND types GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK. Tests are added for extracting the note from sections or segments as set by gcc -fcf-protection. Signed-off-by: Mark Wielaard --- libdwelf/ChangeLog | 5 + libdwelf/dwelf_elf_gnu_build_id.c | 4 +- libdwfl/ChangeLog | 10 ++ libdwfl/core-file.c | 4 +- libdwfl/dwfl_segment_report_module.c | 36 ++++--- libdwfl/linux-core-attach.c | 4 +- libdwfl/linux-kernel-modules.c | 35 ++++++- libebl/ChangeLog | 6 ++ libebl/eblobjnote.c | 185 ++++++++++++++++++++++++++++++++- libebl/eblobjnotetypename.c | 1 + libelf/ChangeLog | 28 +++++ libelf/elf32_xlatetom.c | 2 +- libelf/elf_compress.c | 3 +- libelf/elf_compress_gnu.c | 2 +- libelf/elf_getdata.c | 19 +++- libelf/gelf_fsize.c | 2 + libelf/gelf_getnote.c | 47 ++++++--- libelf/gelf_xlate.c | 3 +- libelf/libelf.h | 2 + libelf/libelfP.h | 12 ++- libelf/note_xlate.h | 52 ++++++--- src/ChangeLog | 7 ++ src/elflint.c | 4 +- src/readelf.c | 3 +- tests/ChangeLog | 9 ++ tests/Makefile.am | 3 + tests/run-readelf-n.sh | 55 ++++++++++ tests/testfile-gnu-property-note.bz2 | Bin 0 -> 1146 bytes tests/testfile-gnu-property-note.o.bz2 | Bin 0 -> 482 bytes 29 files changed, 478 insertions(+), 65 deletions(-) create mode 100755 tests/run-readelf-n.sh create mode 100755 tests/testfile-gnu-property-note.bz2 create mode 100644 tests/testfile-gnu-property-note.o.bz2 diff --git a/libdwelf/ChangeLog b/libdwelf/ChangeLog index a3326556..ba921347 100644 --- a/libdwelf/ChangeLog +++ b/libdwelf/ChangeLog @@ -1,3 +1,8 @@ +2018-10-18 Mark Wielaard + + * dwelf_elf_gnu_build_id.c (find_elf_build_id): Check p_align to + set ELF type. + 2015-10-11 Akihiko Odaki * dwelf_strtab.c: Remove sys/param.h include. diff --git a/libdwelf/dwelf_elf_gnu_build_id.c b/libdwelf/dwelf_elf_gnu_build_id.c index 8c78c700..dbcfc829 100644 --- a/libdwelf/dwelf_elf_gnu_build_id.c +++ b/libdwelf/dwelf_elf_gnu_build_id.c @@ -88,7 +88,9 @@ find_elf_build_id (Dwfl_Module *mod, int e_type, Elf *elf, result = check_notes (elf_getdata_rawchunk (elf, phdr->p_offset, phdr->p_filesz, - ELF_T_NHDR), + (phdr->p_align == 8 + ? ELF_T_NHDR8 + : ELF_T_NHDR)), phdr->p_vaddr, build_id_bits, build_id_elfaddr, diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 6c333d83..9e7bb316 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,13 @@ +2018-10-18 Mark Wielaard + + * dwfl_segment_report_module.c (consider_note): Take align as new + argument. Use align to set d_type and calculate padding. + (dwfl_segment_report_module): Pass align to consider_notes. + * core-file.c (dwfl_core_file_report): Check p_align to set ELF + type. + * linux-kernel-modules.c (check_notes): Check name and type of note + to determine padding. + 2018-10-19 Mark Wielaard * dwfl_module_getdwarf.c (find_aux_sym): Check sh_entsize is not zero. diff --git a/libdwfl/core-file.c b/libdwfl/core-file.c index 84cb89ac..01109f4b 100644 --- a/libdwfl/core-file.c +++ b/libdwfl/core-file.c @@ -496,7 +496,9 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable) Elf_Data *notes = elf_getdata_rawchunk (elf, notes_phdr.p_offset, notes_phdr.p_filesz, - ELF_T_NHDR); + (notes_phdr.p_align == 8 + ? ELF_T_NHDR8 + : ELF_T_NHDR)); if (likely (notes != NULL)) { size_t pos = 0; diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c index 87498846..0d633ffe 100644 --- a/libdwfl/dwfl_segment_report_module.c +++ b/libdwfl/dwfl_segment_report_module.c @@ -27,7 +27,7 @@ not, see . */ #include -#include "../libelf/libelfP.h" /* For NOTE_ALIGN. */ +#include "../libelf/libelfP.h" /* For NOTE_ALIGN4 and NOTE_ALIGN8. */ #undef _ #include "libdwflP.h" #include "common.h" @@ -451,7 +451,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, GElf_Addr build_id_vaddr = 0; /* Consider a PT_NOTE we've found in the image. */ - inline void consider_notes (GElf_Addr vaddr, GElf_Xword filesz) + inline void consider_notes (GElf_Addr vaddr, GElf_Xword filesz, + GElf_Xword align) { /* If we have already seen a build ID, we don't care any more. */ if (build_id != NULL || filesz == 0) @@ -478,7 +479,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, notes = malloc (filesz); if (unlikely (notes == NULL)) return; - xlatefrom.d_type = xlateto.d_type = ELF_T_NHDR; + xlatefrom.d_type = xlateto.d_type = (align == 8 + ? ELF_T_NHDR8 : ELF_T_NHDR); xlatefrom.d_buf = (void *) data; xlatefrom.d_size = filesz; xlateto.d_buf = notes; @@ -489,15 +491,23 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, } const GElf_Nhdr *nh = notes; - while ((const void *) nh < (const void *) notes + filesz) - { - const void *note_name = nh + 1; - const void *note_desc = note_name + NOTE_ALIGN (nh->n_namesz); - if (unlikely ((size_t) ((const void *) notes + filesz - - note_desc) < nh->n_descsz)) + size_t len = 0; + while (filesz > len + sizeof (*nh)) + { + const void *note_name; + const void *note_desc; + + len += sizeof (*nh); + note_name = notes + len; + + len += nh->n_namesz; + len = align == 8 ? NOTE_ALIGN8 (len) : NOTE_ALIGN4 (len); + note_desc = notes + len; + + if (unlikely (filesz < len + nh->n_descsz)) break; - if (nh->n_type == NT_GNU_BUILD_ID + if (nh->n_type == NT_GNU_BUILD_ID && nh->n_descsz > 0 && nh->n_namesz == sizeof "GNU" && !memcmp (note_name, "GNU", sizeof "GNU")) @@ -510,7 +520,9 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, break; } - nh = note_desc + NOTE_ALIGN (nh->n_descsz); + len += nh->n_descsz; + len = align == 8 ? NOTE_ALIGN8 (len) : NOTE_ALIGN4 (len); + nh = (void *) notes + len; } done: @@ -535,7 +547,7 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, case PT_NOTE: /* We calculate from the p_offset of the note segment, because we don't yet know the bias for its p_vaddr. */ - consider_notes (start + offset, filesz); + consider_notes (start + offset, filesz, align); break; case PT_LOAD: diff --git a/libdwfl/linux-core-attach.c b/libdwfl/linux-core-attach.c index 9f05f72a..6c99b9e2 100644 --- a/libdwfl/linux-core-attach.c +++ b/libdwfl/linux-core-attach.c @@ -355,7 +355,9 @@ dwfl_core_file_attach (Dwfl *dwfl, Elf *core) if (phdr != NULL && phdr->p_type == PT_NOTE) { note_data = elf_getdata_rawchunk (core, phdr->p_offset, - phdr->p_filesz, ELF_T_NHDR); + phdr->p_filesz, (phdr->p_align == 8 + ? ELF_T_NHDR8 + : ELF_T_NHDR)); break; } } diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c index 9d0fef2c..360e4ee9 100644 --- a/libdwfl/linux-kernel-modules.c +++ b/libdwfl/linux-kernel-modules.c @@ -39,6 +39,7 @@ #include #include +#include "libelfP.h" #include "libdwflP.h" #include #include @@ -554,15 +555,41 @@ check_notes (Dwfl_Module *mod, const char *notesfile, return 1; unsigned char *p = buf.data; + size_t len = 0; while (p < &buf.data[n]) { /* No translation required since we are reading the native kernel. */ GElf_Nhdr *nhdr = (void *) p; - p += sizeof *nhdr; + len += sizeof *nhdr; + p += len; unsigned char *name = p; - p += (nhdr->n_namesz + 3) & -4U; - unsigned char *bits = p; - p += (nhdr->n_descsz + 3) & -4U; + unsigned char *bits; + /* This is somewhat ugly, GNU Property notes use different padding, + but all we have is the file content, so we have to actually check + the name and type. */ + if (nhdr->n_type == NT_GNU_PROPERTY_TYPE_0 + && nhdr->n_namesz == sizeof "GNU" + && name + nhdr->n_namesz < &buf.data[n] + && !memcmp (name, "GNU", sizeof "GNU")) + { + len += nhdr->n_namesz; + len = NOTE_ALIGN8 (len); + p = buf.data + len; + bits = p; + len += nhdr->n_descsz; + len = NOTE_ALIGN8 (len); + p = buf.data + len; + } + else + { + len += nhdr->n_namesz; + len = NOTE_ALIGN4 (len); + p = buf.data + len; + bits = p; + len += nhdr->n_descsz; + len = NOTE_ALIGN4 (len); + p = buf.data + len; + } if (p <= &buf.data[n] && nhdr->n_type == NT_GNU_BUILD_ID diff --git a/libebl/ChangeLog b/libebl/ChangeLog index aec848b9..120c84c0 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,9 @@ +2018-10-18 Mark Wielaard + + * eblobjnote.c (ebl_object_note): Handle NT_GNU_PROPERTY_TYPE_0. + * eblobjnotetypename.c (ebl_object_note_type_name): Add + GNU_PROPERTY_TYPE_0. + 2018-10-02 Andreas Schwab * ebl-hooks.h (EBLHOOK(reloc_simple_type)): Add third parameter. diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c index ca4f155d..57e9f52f 100644 --- a/libebl/eblobjnote.c +++ b/libebl/eblobjnote.c @@ -1,5 +1,5 @@ /* Print contents of object file note. - Copyright (C) 2002, 2007, 2009, 2011, 2015, 2016 Red Hat, Inc. + Copyright (C) 2002, 2007, 2009, 2011, 2015, 2016, 2018 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2002. @@ -37,6 +37,8 @@ #include #include +#include "libelfP.h" + void ebl_object_note (Ebl *ebl, const char *name, uint32_t type, @@ -153,6 +155,187 @@ ebl_object_note (Ebl *ebl, const char *name, uint32_t type, (int) descsz, desc); break; + case NT_GNU_PROPERTY_TYPE_0: + if (strcmp (name, "GNU") == 0 && descsz > 0) + { + /* There are at least 2 words. type and datasz. */ + while (descsz >= 8) + { + struct pr_prop + { + GElf_Word pr_type; + GElf_Word pr_datasz; + } prop; + + Elf_Data in = + { + .d_version = EV_CURRENT, + .d_type = ELF_T_WORD, + .d_size = 8, + .d_buf = (void *) desc + }; + Elf_Data out = + { + .d_version = EV_CURRENT, + .d_type = ELF_T_WORD, + .d_size = descsz, + .d_buf = (void *) &prop + }; + + if (gelf_xlatetom (ebl->elf, &out, &in, + elf_getident (ebl->elf, + NULL)[EI_DATA]) == NULL) + { + printf ("%s\n", elf_errmsg (-1)); + return; + } + + desc += 8; + descsz -= 8; + + int elfclass = gelf_getclass (ebl->elf); + char *elfident = elf_getident (ebl->elf, NULL); + GElf_Ehdr ehdr; + gelf_getehdr (ebl->elf, &ehdr); + + /* Prefix. */ + printf (" "); + if (prop.pr_type == GNU_PROPERTY_STACK_SIZE) + { + printf ("STACK_SIZE "); + if (prop.pr_datasz == 4 || prop.pr_datasz == 8) + { + GElf_Addr addr; + in.d_type = ELF_T_ADDR; + out.d_type = ELF_T_ADDR; + in.d_size = prop.pr_datasz; + out.d_size = sizeof (addr); + in.d_buf = (void *) desc; + out.d_buf = (void *) &addr; + + if (gelf_xlatetom (ebl->elf, &out, &in, + elfident[EI_DATA]) == NULL) + { + printf ("%s\n", elf_errmsg (-1)); + return; + } + printf ("%#" PRIx64 "\n", addr); + } + else + printf (" (garbage datasz: %" PRIx32 ")\n", + prop.pr_datasz); + } + else if (prop.pr_type == GNU_PROPERTY_NO_COPY_ON_PROTECTED) + { + printf ("NO_COPY_ON_PROTECTION"); + if (prop.pr_datasz == 0) + printf ("\n"); + else + printf (" (garbage datasz: %" PRIx32 ")\n", + prop.pr_datasz); + } + else if (prop.pr_type >= GNU_PROPERTY_LOPROC + && prop.pr_type <= GNU_PROPERTY_HIPROC + && (ehdr.e_machine == EM_386 + || ehdr.e_machine == EM_X86_64)) + { + printf ("X86 "); + if (prop.pr_type == GNU_PROPERTY_X86_FEATURE_1_AND) + { + printf ("FEATURE_1_AND: "); + + if (prop.pr_datasz == 4) + { + GElf_Word data; + in.d_type = ELF_T_WORD; + out.d_type = ELF_T_WORD; + in.d_size = 4; + out.d_size = 4; + in.d_buf = (void *) desc; + out.d_buf = (void *) &data; + + if (gelf_xlatetom (ebl->elf, &out, &in, + elfident[EI_DATA]) == NULL) + { + printf ("%s\n", elf_errmsg (-1)); + return; + } + printf ("%08" PRIx32 " ", data); + + if ((data & GNU_PROPERTY_X86_FEATURE_1_IBT) + != 0) + { + printf ("IBT"); + data &= ~GNU_PROPERTY_X86_FEATURE_1_IBT; + if (data != 0) + printf (" "); + } + + if ((data & GNU_PROPERTY_X86_FEATURE_1_SHSTK) + != 0) + { + printf ("SHSTK"); + data &= ~GNU_PROPERTY_X86_FEATURE_1_SHSTK; + if (data != 0) + printf (" "); + } + + if (data != 0) + printf ("UNKNOWN"); + } + else + printf ("", + prop.pr_datasz); + + printf ("\n"); + } + else + { + printf ("%#" PRIx32, prop.pr_type); + if (prop.pr_datasz > 0) + { + printf (" data: "); + size_t i; + for (i = 0; i < prop.pr_datasz - 1; i++) + printf ("%02" PRIx8 " ", (uint8_t) desc[i]); + printf ("%02" PRIx8 "\n", (uint8_t) desc[i]); + } + } + } + else + { + if (prop.pr_type >= GNU_PROPERTY_LOPROC + && prop.pr_type <= GNU_PROPERTY_HIPROC) + printf ("proc_type %#" PRIx32, prop.pr_type); + else if (prop.pr_type >= GNU_PROPERTY_LOUSER + && prop.pr_type <= GNU_PROPERTY_HIUSER) + printf ("app_type %#" PRIx32, prop.pr_type); + else + printf ("unknown_type %#" PRIx32, prop.pr_type); + + if (prop.pr_datasz > 0) + { + printf (" data: "); + size_t i; + for (i = 0; i < prop.pr_datasz - 1; i++) + printf ("%02" PRIx8 " ", (uint8_t) desc[i]); + printf ("%02" PRIx8 "\n", (uint8_t) desc[i]); + } + } + if (elfclass == ELFCLASS32) + { + desc += NOTE_ALIGN4 (prop.pr_datasz); + descsz -= NOTE_ALIGN4 (prop.pr_datasz); + } + else + { + desc += NOTE_ALIGN8 (prop.pr_datasz); + descsz -= NOTE_ALIGN8 (prop.pr_datasz); + } + } + } + break; + case NT_GNU_ABI_TAG: if (strcmp (name, "GNU") == 0 && descsz >= 8 && descsz % 4 == 0) { diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c index db040d29..af23caea 100644 --- a/libebl/eblobjnotetypename.c +++ b/libebl/eblobjnotetypename.c @@ -91,6 +91,7 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type, KNOWNSTYPE (GNU_HWCAP), KNOWNSTYPE (GNU_BUILD_ID), KNOWNSTYPE (GNU_GOLD_VERSION), + KNOWNSTYPE (GNU_PROPERTY_TYPE_0), }; /* Handle standard names. */ diff --git a/libelf/ChangeLog b/libelf/ChangeLog index be37ab60..af565036 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,31 @@ +2018-10-18 Mark Wielaard + + * libelf.h (Elf_Type): Add ELF_T_NHDR8. + * libelfP.h (__libelf_data_type): Add align argument. + (NOTE_ALIGN): Split into... + (NOTE_ALIGN4): ... and ... + (NOTE_ALIGN8): this. + * elf32_xlatetom.c (xlatetom): Recognize both ELF_T_NHDR and + ELF_T_NHDR8. + * elf_compress.c (elf_compress): Pass zdata_align to + __libelf_data_type. + * elf_compress_gnu.c (elf_compress_gnu): Pass sh_addralign to + __libelf_data_type. + * elf_getdata.c (shtype_map): Add ELF_T_NHDR8. + (__libelf_data_type): Take align as extra argument, use it to + determine Elf_Type. + (__libelf_set_rawdata_wrlock): Recognize ELF_T_NHDR8. Pass align to + __libelf_data_type. + * gelf_fsize.c (__libelf_type_sizes): Add ELF_T_NHDR8. + * gelf_getnote.c (gelf_getnote): Use Elf_Type of Elf_Data to calculate + padding. + * gelf_xlate.c (__elf_xfctstom): Set ELF_T_NHDR to elf_cvt_note4, + add ELF_T_NHDR8. + * note_xlate.h (elf_cvt_note): Take nhdr8 argument and use it to + determine padding. + (elf_cvt_note4): New function. + (elf_cvt_note8): Likewise. + 2018-09-13 Mark Wielaard * elf32_updatefile.c (updatemmap): Use shnum, not ehdr->e_shnum. diff --git a/libelf/elf32_xlatetom.c b/libelf/elf32_xlatetom.c index 13cd485d..3b94cac7 100644 --- a/libelf/elf32_xlatetom.c +++ b/libelf/elf32_xlatetom.c @@ -60,7 +60,7 @@ elfw2(LIBELFBITS, xlatetom) (Elf_Data *dest, const Elf_Data *src, /* We shouldn't require integer number of records when processing notes. Payload bytes follow the header immediately, it's not an array of records as is the case otherwise. */ - if (src->d_type != ELF_T_NHDR + if (src->d_type != ELF_T_NHDR && src->d_type != ELF_T_NHDR8 && src->d_size % recsize != 0) { __libelf_seterrno (ELF_E_INVALID_DATA); diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c index 711be591..fd412e8a 100644 --- a/libelf/elf_compress.c +++ b/libelf/elf_compress.c @@ -513,7 +513,8 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags) __libelf_reset_rawdata (scn, scn->zdata_base, scn->zdata_size, scn->zdata_align, - __libelf_data_type (elf, sh_type)); + __libelf_data_type (elf, sh_type, + scn->zdata_align)); return 1; } diff --git a/libelf/elf_compress_gnu.c b/libelf/elf_compress_gnu.c index dfa7c571..198dc7d5 100644 --- a/libelf/elf_compress_gnu.c +++ b/libelf/elf_compress_gnu.c @@ -196,7 +196,7 @@ elf_compress_gnu (Elf_Scn *scn, int inflate, unsigned int flags) } __libelf_reset_rawdata (scn, buf_out, size, sh_addralign, - __libelf_data_type (elf, sh_type)); + __libelf_data_type (elf, sh_type, sh_addralign)); scn->zdata_base = buf_out; diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index 278dfa8f..4f80aaf2 100644 --- a/libelf/elf_getdata.c +++ b/libelf/elf_getdata.c @@ -65,7 +65,7 @@ static const Elf_Type shtype_map[EV_NUM - 1][TYPEIDX (SHT_HISUNW) + 1] = [SHT_PREINIT_ARRAY] = ELF_T_ADDR, [SHT_GROUP] = ELF_T_WORD, [SHT_SYMTAB_SHNDX] = ELF_T_WORD, - [SHT_NOTE] = ELF_T_NHDR, + [SHT_NOTE] = ELF_T_NHDR, /* Need alignment to guess ELF_T_NHDR8. */ [TYPEIDX (SHT_GNU_verdef)] = ELF_T_VDEF, [TYPEIDX (SHT_GNU_verneed)] = ELF_T_VNEED, [TYPEIDX (SHT_GNU_versym)] = ELF_T_HALF, @@ -106,6 +106,7 @@ const uint_fast8_t __libelf_type_aligns[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] [ELF_T_GNUHASH] = __alignof__ (Elf32_Word), \ [ELF_T_AUXV] = __alignof__ (ElfW2(Bits,auxv_t)), \ [ELF_T_CHDR] = __alignof__ (ElfW2(Bits,Chdr)), \ + [ELF_T_NHDR8] = 8 /* Special case for GNU Property note. */ \ } [EV_CURRENT - 1] = { @@ -118,7 +119,7 @@ const uint_fast8_t __libelf_type_aligns[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] Elf_Type internal_function -__libelf_data_type (Elf *elf, int sh_type) +__libelf_data_type (Elf *elf, int sh_type, GElf_Xword align) { /* Some broken ELF ABI for 64-bit machines use the wrong hash table entry size. See elf-knowledge.h for more information. */ @@ -129,7 +130,13 @@ __libelf_data_type (Elf *elf, int sh_type) return (SH_ENTSIZE_HASH (ehdr) == 4 ? ELF_T_WORD : ELF_T_XWORD); } else - return shtype_map[LIBELF_EV_IDX][TYPEIDX (sh_type)]; + { + Elf_Type t = shtype_map[LIBELF_EV_IDX][TYPEIDX (sh_type)]; + /* Special case for GNU Property notes. */ + if (t == ELF_T_NHDR && align == 8) + t = ELF_T_NHDR8; + return t; + } } /* Convert the data in the current section. */ @@ -272,7 +279,9 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn) else { Elf_Type t = shtype_map[LIBELF_EV_IDX][TYPEIDX (type)]; - if (t == ELF_T_VDEF || t == ELF_T_NHDR + 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 @@ -357,7 +366,7 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn) if ((flags & SHF_COMPRESSED) != 0) scn->rawdata.d.d_type = ELF_T_CHDR; else - scn->rawdata.d.d_type = __libelf_data_type (elf, type); + scn->rawdata.d.d_type = __libelf_data_type (elf, type, align); scn->rawdata.d.d_off = 0; /* Make sure the alignment makes sense. d_align should be aligned both diff --git a/libelf/gelf_fsize.c b/libelf/gelf_fsize.c index 0c509265..d04ec5d5 100644 --- a/libelf/gelf_fsize.c +++ b/libelf/gelf_fsize.c @@ -64,6 +64,8 @@ const size_t __libelf_type_sizes[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] = [ELF_T_VNEED] = sizeof (ElfW2(LIBELFBITS, Ext_Verneed)), \ [ELF_T_VNAUX] = sizeof (ElfW2(LIBELFBITS, Ext_Vernaux)), \ [ELF_T_NHDR] = sizeof (ElfW2(LIBELFBITS, Ext_Nhdr)), \ + /* Note the header size is the same, but padding is different. */ \ + [ELF_T_NHDR8] = sizeof (ElfW2(LIBELFBITS, Ext_Nhdr)), \ [ELF_T_SYMINFO] = sizeof (ElfW2(LIBELFBITS, Ext_Syminfo)), \ [ELF_T_MOVE] = sizeof (ElfW2(LIBELFBITS, Ext_Move)), \ [ELF_T_LIB] = sizeof (ElfW2(LIBELFBITS, Ext_Lib)), \ diff --git a/libelf/gelf_getnote.c b/libelf/gelf_getnote.c index c75eddab..6d33b355 100644 --- a/libelf/gelf_getnote.c +++ b/libelf/gelf_getnote.c @@ -1,5 +1,5 @@ /* Get note information at the supplied offset. - Copyright (C) 2007, 2014, 2015 Red Hat, Inc. + Copyright (C) 2007, 2014, 2015, 2018 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -43,7 +43,7 @@ gelf_getnote (Elf_Data *data, size_t offset, GElf_Nhdr *result, if (data == NULL) return 0; - if (unlikely (data->d_type != ELF_T_NHDR)) + if (unlikely (data->d_type != ELF_T_NHDR && data->d_type != ELF_T_NHDR8)) { __libelf_seterrno (ELF_E_INVALID_HANDLE); return 0; @@ -69,27 +69,42 @@ gelf_getnote (Elf_Data *data, size_t offset, GElf_Nhdr *result, const GElf_Nhdr *n = data->d_buf + offset; offset += sizeof *n; - /* Include padding. Check below for overflow. */ - GElf_Word namesz = NOTE_ALIGN (n->n_namesz); - GElf_Word descsz = NOTE_ALIGN (n->n_descsz); - - if (unlikely (offset > data->d_size - || data->d_size - offset < namesz - || (namesz == 0 && n->n_namesz != 0))) + if (offset > data->d_size) offset = 0; else { + /* This is slightly tricky, offset is guaranteed to be 4 + byte aligned, which is what we need for the name_offset. + And normally desc_offset is also 4 byte aligned, but not + for GNU Property notes, then it should be 8. So align + the offset, after adding the namesz, and include padding + in descsz to get to the end. */ *name_offset = offset; - offset += namesz; - if (unlikely (offset > data->d_size - || data->d_size - offset < descsz - || (descsz == 0 && n->n_descsz != 0))) + offset += n->n_namesz; + if (offset > data->d_size) offset = 0; else { - *desc_offset = offset; - offset += descsz; - *result = *n; + /* Include padding. Check below for overflow. */ + GElf_Word descsz = (data->d_type == ELF_T_NHDR8 + ? NOTE_ALIGN8 (n->n_descsz) + : NOTE_ALIGN4 (n->n_descsz)); + + if (data->d_type == ELF_T_NHDR8) + offset = NOTE_ALIGN8 (offset); + else + offset = NOTE_ALIGN4 (offset); + + if (unlikely (offset > data->d_size + || data->d_size - offset < descsz + || (descsz == 0 && n->n_descsz != 0))) + offset = 0; + else + { + *desc_offset = offset; + offset += descsz; + *result = *n; + } } } } diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c index 479f1436..b5d6ef3d 100644 --- a/libelf/gelf_xlate.c +++ b/libelf/gelf_xlate.c @@ -195,7 +195,8 @@ const xfct_t __elf_xfctstom[EV_NUM - 1][EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] [ELF_T_VDAUX] = elf_cvt_Verdef, \ [ELF_T_VNEED] = elf_cvt_Verneed, \ [ELF_T_VNAUX] = elf_cvt_Verneed, \ - [ELF_T_NHDR] = elf_cvt_note, \ + [ELF_T_NHDR] = elf_cvt_note4, \ + [ELF_T_NHDR8] = elf_cvt_note8, \ [ELF_T_SYMINFO] = ElfW2(Bits, cvt_Syminfo), \ [ELF_T_MOVE] = ElfW2(Bits, cvt_Move), \ [ELF_T_LIB] = ElfW2(Bits, cvt_Lib), \ diff --git a/libelf/libelf.h b/libelf/libelf.h index d11358cc..1ff11c95 100644 --- a/libelf/libelf.h +++ b/libelf/libelf.h @@ -117,6 +117,8 @@ typedef enum ELF_T_GNUHASH, /* GNU-style hash section. */ ELF_T_AUXV, /* Elf32_auxv_t, Elf64_auxv_t, ... */ ELF_T_CHDR, /* Compressed, Elf32_Chdr, Elf64_Chdr, ... */ + ELF_T_NHDR8, /* Special GNU Properties note. Same as Nhdr, + except padding. */ /* Keep this the last entry. */ ELF_T_NUM } Elf_Type; diff --git a/libelf/libelfP.h b/libelf/libelfP.h index ed216c8c..fa6d55d8 100644 --- a/libelf/libelfP.h +++ b/libelf/libelfP.h @@ -452,7 +452,8 @@ extern const uint_fast8_t __libelf_type_aligns[EV_NUM - 1][ELFCLASSNUM - 1][ELF_ /* 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 be ELF_T_BYTE. */ -extern Elf_Type __libelf_data_type (Elf *elf, int sh_type) internal_function; +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. @@ -624,8 +625,13 @@ extern void __libelf_reset_rawdata (Elf_Scn *scn, void *buf, size_t size, } \ } while (0) -/* Align offset to 4 bytes as needed for note name and descriptor data. */ -#define NOTE_ALIGN(n) (((n) + 3) & -4U) +/* Align offset to 4 bytes as needed for note name and descriptor data. + This is almost always used, except for GNU Property notes, which use + 8 byte padding... */ +#define NOTE_ALIGN4(n) (((n) + 3) & -4U) + +/* Special note padding rule for GNU Property notes. */ +#define NOTE_ALIGN8(n) (((n) + 7) & -8U) /* Convenience macro. */ #define INVALID_NDX(ndx, type, data) \ diff --git a/libelf/note_xlate.h b/libelf/note_xlate.h index 62c6f63d..9bdc3e2c 100644 --- a/libelf/note_xlate.h +++ b/libelf/note_xlate.h @@ -1,5 +1,5 @@ /* Conversion functions for notes. - Copyright (C) 2007, 2009, 2014 Red Hat, Inc. + Copyright (C) 2007, 2009, 2014, 2018 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -27,38 +27,60 @@ not, see . */ static void -elf_cvt_note (void *dest, const void *src, size_t len, int encode) +elf_cvt_note (void *dest, const void *src, size_t len, int encode, + bool nhdr8) { + /* Note that the header is always the same size, but the padding + differs for GNU Property notes. */ assert (sizeof (Elf32_Nhdr) == sizeof (Elf64_Nhdr)); while (len >= sizeof (Elf32_Nhdr)) { + /* Convert the header. */ (1 ? Elf32_cvt_Nhdr : Elf64_cvt_Nhdr) (dest, src, sizeof (Elf32_Nhdr), encode); const Elf32_Nhdr *n = encode ? src : dest; - Elf32_Word namesz = NOTE_ALIGN (n->n_namesz); - Elf32_Word descsz = NOTE_ALIGN (n->n_descsz); - len -= sizeof *n; - src += sizeof *n; - dest += sizeof *n; + size_t note_len = sizeof *n; - if (namesz > len) + /* desc needs to be aligned. */ + note_len += n->n_namesz; + note_len = nhdr8 ? NOTE_ALIGN8 (note_len) : NOTE_ALIGN4 (note_len); + if (note_len > len || note_len < 8) break; - len -= namesz; - if (descsz > len) + + /* 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 < 8) break; - len -= descsz; + /* Copy or skip the note data. */ + size_t note_data_len = note_len - sizeof *n; + src += sizeof *n; + dest += sizeof *n; if (src != dest) - memcpy (dest, src, namesz + descsz); + memcpy (dest, src, note_data_len); - src += namesz + descsz; - dest += namesz + descsz; + src += note_data_len; + dest += note_data_len; + len -= note_len; } - /* Copy opver any leftover data unconcerted. Probably part of + /* Copy over any leftover data unconverted. Probably part of truncated name/desc data. */ if (unlikely (len > 0) && src != dest) memcpy (dest, src, len); } + +static void +elf_cvt_note4 (void *dest, const void *src, size_t len, int encode) +{ + elf_cvt_note (dest, src, len, encode, false); +} + +static void +elf_cvt_note8 (void *dest, const void *src, size_t len, int encode) +{ + elf_cvt_note (dest, src, len, encode, true); +} diff --git a/src/ChangeLog b/src/ChangeLog index 5061cc11..758534de 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2018-10-18 Mark Wielaard + + * elflint.c (check_note_data): Recognize NT_GNU_PROPERTY_TYPE_0. + (check_note): Use p_align to pass either ELF_T_NHDR or ELF_T_NHDR8 to + elf_getdata_rawchunk. + * readelf (handle_notes): Likewise. + 2018-10-24 Mark Wielaard * addr2line.c (print_addrsym): Use elf_getshdrstrndx instead of diff --git a/src/elflint.c b/src/elflint.c index 3d445954..fa3af4c5 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -4331,6 +4331,7 @@ section [%2d] '%s': unknown core file note type %" PRIu32 case NT_GNU_HWCAP: case NT_GNU_BUILD_ID: case NT_GNU_GOLD_VERSION: + case NT_GNU_PROPERTY_TYPE_0: break; case 0: @@ -4376,7 +4377,8 @@ phdr[%d]: no note entries defined for the type of file\n"), GElf_Off notes_size = 0; Elf_Data *data = elf_getdata_rawchunk (ebl->elf, phdr->p_offset, phdr->p_filesz, - ELF_T_NHDR); + (phdr->p_align == 8 + ? ELF_T_NHDR8 : ELF_T_NHDR)); if (data != NULL && data->d_buf != NULL) notes_size = check_note_data (ebl, ehdr, data, 0, cnt, phdr->p_offset); diff --git a/src/readelf.c b/src/readelf.c index 72ae04ec..ccd07eb7 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -12300,7 +12300,8 @@ handle_notes (Ebl *ebl, GElf_Ehdr *ehdr) handle_notes_data (ebl, ehdr, phdr->p_offset, elf_getdata_rawchunk (ebl->elf, phdr->p_offset, phdr->p_filesz, - ELF_T_NHDR)); + (phdr->p_align == 8 + ? ELF_T_NHDR8 : ELF_T_NHDR))); } } diff --git a/tests/ChangeLog b/tests/ChangeLog index 751a0810..d5a06563 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,12 @@ +2018-10-18 Mark Wielaard + + * run-readelf-n.sh: New test. + * testfile-gnu-property-note.bz2: New testfile. + * testfile-gnu-property-note.o.bz2: Likewise. + * Makefile.am (TESTS): Add run-readelf-n.sh. + (EXTRA_DIST): Likewise and testfile-gnu-property-note.bz2, + testfile-gnu-property-note.o.bz2. + 2018-10-12 Mark Wielaard * run-readelf-zdebug.sh: Adjust flags output. diff --git a/tests/Makefile.am b/tests/Makefile.am index 15b429b7..a2a381ac 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -106,6 +106,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-readelf-test4.sh run-readelf-twofiles.sh \ run-readelf-macro.sh run-readelf-loc.sh run-readelf-ranges.sh \ run-readelf-aranges.sh run-readelf-line.sh run-readelf-z.sh \ + run-readelf-n.sh \ run-native-test.sh run-bug1-test.sh \ run-debuglink.sh run-debugaltlink.sh run-buildid.sh \ dwfl-bug-addr-overflow run-addrname-test.sh \ @@ -272,6 +273,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ testfile-dwzstr.bz2 testfile-dwzstr.multi.bz2 \ run-readelf-addr.sh run-readelf-str.sh \ run-readelf-types.sh \ + run-readelf-n.sh \ + testfile-gnu-property-note.bz2 testfile-gnu-property-note.o.bz2 \ run-allfcts-multi.sh \ test-offset-loop.bz2 test-offset-loop.alt.bz2 \ run-prelink-addr-test.sh \ diff --git a/tests/run-readelf-n.sh b/tests/run-readelf-n.sh new file mode 100755 index 00000000..3ae7cf02 --- /dev/null +++ b/tests/run-readelf-n.sh @@ -0,0 +1,55 @@ +# Copyright (C) 2018 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 . + +. $srcdir/test-subr.sh + +# - testfile-gnu-property-note.c +# int +# main () +# { +# return 0; +# } +# +# gcc -fcf-protection -c testfile-gnu-property-note.c +# gcc -o testfile-gnu-property-note testfile-gnu-property-note.o +# eu-strip --strip-sections testfile-gnu-property-note + +testfiles testfile-gnu-property-note.o testfile-gnu-property-note + +# Test reading notes through sections +testrun_compare ${abs_top_builddir}/src/readelf -n testfile-gnu-property-note.o << EOF + +Note section [ 6] '.note.gnu.property' of 32 bytes at offset 0x80: + Owner Data size Type + GNU 16 GNU_PROPERTY_TYPE_0 + X86 FEATURE_1_AND: 00000003 IBT SHSTK +EOF + +# Test reading notes through segments +testrun_compare ${abs_top_builddir}/src/readelf -n testfile-gnu-property-note << EOF + +Note segment of 32 bytes at offset 0x300: + Owner Data size Type + GNU 16 GNU_PROPERTY_TYPE_0 + X86 FEATURE_1_AND: 00000003 IBT SHSTK + +Note segment of 68 bytes at offset 0x320: + Owner Data size Type + GNU 16 VERSION + OS: Linux, ABI: 3.2.0 + GNU 20 GNU_BUILD_ID + Build ID: 83cb2229fabd2065d1361f5b46424cd75270f94b +EOF diff --git a/tests/testfile-gnu-property-note.bz2 b/tests/testfile-gnu-property-note.bz2 new file mode 100755 index 00000000..c03bd9bb Binary files /dev/null and b/tests/testfile-gnu-property-note.bz2 differ diff --git a/tests/testfile-gnu-property-note.o.bz2 b/tests/testfile-gnu-property-note.o.bz2 new file mode 100644 index 00000000..5147c64f Binary files /dev/null and b/tests/testfile-gnu-property-note.o.bz2 differ -- cgit v1.2.3 From e574889d92b123a2e62aa2f32bab00af86bfe5fd Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 2 Nov 2018 23:17:05 +0100 Subject: unstrip: Add ELF_CHECK to make sure gelf_getehdr () doesn't return NULL. Signed-off-by: Mark Wielaard --- src/ChangeLog | 5 +++++ src/unstrip.c | 1 + 2 files changed, 6 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 758534de..ca1533d3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2018-11-02 Mark Wielaard + + * unstrip.c (copy_elf): Add ELF_CHECK to make sure gelf_getehdr () + doesn't return NULL. + 2018-10-18 Mark Wielaard * elflint.c (check_note_data): Recognize NT_GNU_PROPERTY_TYPE_0. diff --git a/src/unstrip.c b/src/unstrip.c index 32da89d7..3495b1d9 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -245,6 +245,7 @@ copy_elf (Elf *outelf, Elf *inelf) GElf_Ehdr ehdr_mem; GElf_Ehdr *ehdr = gelf_getehdr (inelf, &ehdr_mem); + ELF_CHECK (ehdr != NULL, _("cannot get ELF header: %s")); if (shstrndx < SHN_LORESERVE) ehdr->e_shstrndx = shstrndx; else -- cgit v1.2.3 From b15ee95bcee45482e5d864c0048804117c1ada63 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 25 Oct 2018 12:37:04 +0200 Subject: strip: Always copy over any phdrs if there are any. Ignore the type of ELF file, just copy over any phdrs if the original file contained any. Also refuse to move around any allocated sections based on whether there are any phdrs instead of on ELF file type. Signed-off-by: Mark Wielaard --- src/ChangeLog | 6 +++++ src/strip.c | 70 +++++++++++++++++++++++++++++++++++------------------------ 2 files changed, 48 insertions(+), 28 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index ca1533d3..3a893b71 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2018-10-24 Mark Wielaard + + * strip.c (handle_elf): Always copy over phdrs if there are any + and check phnum instead of e_type to determine whether to move + allocated sections. + 2018-11-02 Mark Wielaard * unstrip.c (copy_elf): Add ELF_CHECK to make sure gelf_getehdr () diff --git a/src/strip.c b/src/strip.c index fdebc5e2..cb479deb 100644 --- a/src/strip.c +++ b/src/strip.c @@ -588,49 +588,63 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, else newelf = elf_clone (elf, ELF_C_EMPTY); - if (unlikely (gelf_newehdr (newelf, gelf_getclass (elf)) == 0) - || (ehdr->e_type != ET_REL - && unlikely (gelf_newphdr (newelf, phnum) == 0))) + if (unlikely (gelf_newehdr (newelf, gelf_getclass (elf)) == 0)) { - error (0, 0, gettext ("cannot create new file '%s': %s"), + error (0, 0, gettext ("cannot create new ehdr for file '%s': %s"), output_fname ?: fname, elf_errmsg (-1)); goto fail; } /* Copy over the old program header if needed. */ - if (ehdr->e_type != ET_REL) - for (cnt = 0; cnt < phnum; ++cnt) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &phdr_mem); - if (phdr == NULL - || unlikely (gelf_update_phdr (newelf, cnt, phdr) == 0)) - INTERNAL_ERROR (fname); - } + if (phnum > 0) + { + if (unlikely (gelf_newphdr (newelf, phnum) == 0)) + { + error (0, 0, gettext ("cannot create new phdr for file '%s': %s"), + output_fname ?: fname, elf_errmsg (-1)); + goto fail; + } + + for (cnt = 0; cnt < phnum; ++cnt) + { + GElf_Phdr phdr_mem; + GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &phdr_mem); + if (phdr == NULL + || unlikely (gelf_update_phdr (newelf, cnt, phdr) == 0)) + INTERNAL_ERROR (fname); + } + } if (debug_fname != NULL) { /* Also create an ELF descriptor for the debug file */ debugelf = elf_begin (debug_fd, ELF_C_WRITE_MMAP, NULL); - if (unlikely (gelf_newehdr (debugelf, gelf_getclass (elf)) == 0) - || (ehdr->e_type != ET_REL - && unlikely (gelf_newphdr (debugelf, phnum) == 0))) + if (unlikely (gelf_newehdr (debugelf, gelf_getclass (elf)) == 0)) { - error (0, 0, gettext ("cannot create new file '%s': %s"), + error (0, 0, gettext ("cannot create new ehdr for file '%s': %s"), debug_fname, elf_errmsg (-1)); goto fail_close; } /* Copy over the old program header if needed. */ - if (ehdr->e_type != ET_REL) - for (cnt = 0; cnt < phnum; ++cnt) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &phdr_mem); - if (phdr == NULL - || unlikely (gelf_update_phdr (debugelf, cnt, phdr) == 0)) - INTERNAL_ERROR (fname); - } + if (phnum > 0) + { + if (unlikely (gelf_newphdr (debugelf, phnum) == 0)) + { + error (0, 0, gettext ("cannot create new phdr for file '%s': %s"), + debug_fname, elf_errmsg (-1)); + goto fail_close; + } + + for (cnt = 0; cnt < phnum; ++cnt) + { + GElf_Phdr phdr_mem; + GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &phdr_mem); + if (phdr == NULL + || unlikely (gelf_update_phdr (debugelf, cnt, phdr) == 0)) + INTERNAL_ERROR (fname); + } + } } /* Number of sections. */ @@ -738,7 +752,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, to keep the layout of all allocated sections as similar as possible to the original file. In relocatable object files everything can be moved. */ - if (ehdr->e_type == ET_REL + if (phnum == 0 || (shdr_info[cnt].shdr.sh_flags & SHF_ALLOC) == 0) shdr_info[cnt].shdr.sh_offset = 0; @@ -2328,7 +2342,7 @@ while computing checksum for debug information")); /* The ELF library better follows our layout when this is not a relocatable object file. */ elf_flagelf (newelf, ELF_C_SET, - (ehdr->e_type != ET_REL ? ELF_F_LAYOUT : 0) + (phnum > 0 ? ELF_F_LAYOUT : 0) | (permissive ? ELF_F_PERMISSIVE : 0)); /* Finally write the file. */ -- cgit v1.2.3 From f6ae0ab9350eae1f879e2239c83b93e0a5887d8e Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 25 Oct 2018 13:30:19 +0200 Subject: strip: Split out debug section relocation into separate helper functions. Extract a couple of helper functions out of handle_elf (secndx_name, get_xndxdata and remove_debug_relocations) so they can be reused more easily in the future. Signed-off-by: Mark Wielaard --- src/ChangeLog | 7 + src/strip.c | 541 +++++++++++++++++++++++++++++++--------------------------- 2 files changed, 299 insertions(+), 249 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 3a893b71..5832714d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2018-10-24 Mark Wielaard + + * strip.c (handle_elf): Extract code into separate functions... + (secndx_name): ... new function. + (get_xndxdata): Likewise. + (remove_debug_relocations): Likewise. + 2018-10-24 Mark Wielaard * strip.c (handle_elf): Always copy over phdrs if there are any diff --git a/src/strip.c b/src/strip.c index cb479deb..a7b69a6a 100644 --- a/src/strip.c +++ b/src/strip.c @@ -354,6 +354,297 @@ parse_opt (int key, char *arg, struct argp_state *state) return 0; } +static const char * +secndx_name (Elf *elf, size_t ndx) +{ + size_t shstrndx; + GElf_Shdr mem; + Elf_Scn *sec = elf_getscn (elf, ndx); + GElf_Shdr *shdr = gelf_getshdr (sec, &mem); + if (shdr == NULL || elf_getshdrstrndx (elf, &shstrndx) < 0) + return "???"; + return elf_strptr (elf, shstrndx, shdr->sh_name) ?: "???"; +} + +/* Get the extended section index table data for a symbol table section. */ +static Elf_Data * +get_xndxdata (Elf *elf, Elf_Scn *symscn) +{ + Elf_Data *xndxdata = NULL; + GElf_Shdr shdr_mem; + GElf_Shdr *shdr = gelf_getshdr (symscn, &shdr_mem); + if (shdr != NULL && shdr->sh_type == SHT_SYMTAB) + { + size_t scnndx = elf_ndxscn (symscn); + Elf_Scn *xndxscn = NULL; + while ((xndxscn = elf_nextscn (elf, xndxscn)) != NULL) + { + GElf_Shdr xndxshdr_mem; + GElf_Shdr *xndxshdr = gelf_getshdr (xndxscn, &xndxshdr_mem); + + if (xndxshdr != NULL + && xndxshdr->sh_type == SHT_SYMTAB_SHNDX + && xndxshdr->sh_link == scnndx) + { + xndxdata = elf_getdata (xndxscn, NULL); + break; + } + } + } + + return xndxdata; +} + +/* Remove any relocations between debug sections in ET_REL + for the debug file when requested. These relocations are always + zero based between the unallocated sections. */ +static void +remove_debug_relocations (Ebl *ebl, Elf *elf, GElf_Ehdr *ehdr, + const char *fname, size_t shstrndx) +{ + Elf_Scn *scn = NULL; + while ((scn = elf_nextscn (elf, scn)) != NULL) + { + /* We need the actual section and header from the elf + not just the cached original in shdr_info because we + might want to change the size. */ + GElf_Shdr shdr_mem; + GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); + if (shdr->sh_type == SHT_REL || shdr->sh_type == SHT_RELA) + { + /* Make sure that this relocation section points to a + section to relocate with contents, that isn't + allocated and that is a debug section. */ + Elf_Scn *tscn = elf_getscn (elf, shdr->sh_info); + GElf_Shdr tshdr_mem; + GElf_Shdr *tshdr = gelf_getshdr (tscn, &tshdr_mem); + if (tshdr->sh_type == SHT_NOBITS + || tshdr->sh_size == 0 + || (tshdr->sh_flags & SHF_ALLOC) != 0) + continue; + + const char *tname = elf_strptr (elf, shstrndx, + tshdr->sh_name); + if (! tname || ! ebl_debugscn_p (ebl, tname)) + continue; + + /* OK, lets relocate all trivial cross debug section + relocations. */ + Elf_Data *reldata = elf_getdata (scn, NULL); + if (reldata == NULL || reldata->d_buf == NULL) + INTERNAL_ERROR (fname); + + /* Make sure we adjust the uncompressed debug data + (and recompress if necessary at the end). */ + GElf_Chdr tchdr; + int tcompress_type = 0; + if (gelf_getchdr (tscn, &tchdr) != NULL) + { + tcompress_type = tchdr.ch_type; + if (elf_compress (tscn, 0, 0) != 1) + INTERNAL_ERROR (fname); + } + + Elf_Data *tdata = elf_getdata (tscn, NULL); + if (tdata == NULL || tdata->d_buf == NULL + || tdata->d_type != ELF_T_BYTE) + INTERNAL_ERROR (fname); + + /* Pick up the symbol table and shndx table to + resolve relocation symbol indexes. */ + Elf64_Word symt = shdr->sh_link; + Elf_Data *symdata, *xndxdata; + Elf_Scn * symscn = elf_getscn (elf, symt); + symdata = elf_getdata (symscn, NULL); + xndxdata = get_xndxdata (elf, symscn); + if (symdata == NULL) + INTERNAL_ERROR (fname); + + /* Apply one relocation. Returns true when trivial + relocation actually done. */ + bool relocate (GElf_Addr offset, const GElf_Sxword addend, + bool is_rela, int rtype, int symndx) + { + /* R_*_NONE relocs can always just be removed. */ + if (rtype == 0) + return true; + + /* We only do simple absolute relocations. */ + int addsub = 0; + Elf_Type type = ebl_reloc_simple_type (ebl, rtype, &addsub); + if (type == ELF_T_NUM) + return false; + + /* These are the types we can relocate. */ +#define TYPES DO_TYPE (BYTE, Byte); DO_TYPE (HALF, Half); \ + DO_TYPE (WORD, Word); DO_TYPE (SWORD, Sword); \ + DO_TYPE (XWORD, Xword); DO_TYPE (SXWORD, Sxword) + + /* And only for relocations against other debug sections. */ + GElf_Sym sym_mem; + Elf32_Word xndx; + GElf_Sym *sym = gelf_getsymshndx (symdata, xndxdata, + symndx, &sym_mem, + &xndx); + Elf32_Word sec = (sym->st_shndx == SHN_XINDEX + ? xndx : sym->st_shndx); + + if (ebl_debugscn_p (ebl, secndx_name (elf, sec))) + { + size_t size; + +#define DO_TYPE(NAME, Name) GElf_##Name Name; + union { TYPES; } tmpbuf; +#undef DO_TYPE + + switch (type) + { +#define DO_TYPE(NAME, Name) \ + case ELF_T_##NAME: \ + size = sizeof (GElf_##Name); \ + tmpbuf.Name = 0; \ + break; + TYPES; +#undef DO_TYPE + default: + return false; + } + + if (offset > tdata->d_size + || tdata->d_size - offset < size) + { + cleanup_debug (); + error (EXIT_FAILURE, 0, gettext ("bad relocation")); + } + + /* When the symbol value is zero then for SHT_REL + sections this is all that needs to be checked. + The addend is contained in the original data at + the offset already. So if the (section) symbol + address is zero and the given addend is zero + just remove the relocation, it isn't needed + anymore. */ + if (addend == 0 && sym->st_value == 0) + return true; + + Elf_Data tmpdata = + { + .d_type = type, + .d_buf = &tmpbuf, + .d_size = size, + .d_version = EV_CURRENT, + }; + Elf_Data rdata = + { + .d_type = type, + .d_buf = tdata->d_buf + offset, + .d_size = size, + .d_version = EV_CURRENT, + }; + + GElf_Addr value = sym->st_value; + if (is_rela) + { + /* For SHT_RELA sections we just take the + given addend and add it to the value. */ + value += addend; + /* For ADD/SUB relocations we need to fetch the + current section contents. */ + if (addsub != 0) + { + Elf_Data *d = gelf_xlatetom (elf, &tmpdata, + &rdata, + ehdr->e_ident[EI_DATA]); + if (d == NULL) + INTERNAL_ERROR (fname); + assert (d == &tmpdata); + } + } + else + { + /* For SHT_REL sections we have to peek at + what is already in the section at the given + offset to get the addend. */ + Elf_Data *d = gelf_xlatetom (elf, &tmpdata, + &rdata, + ehdr->e_ident[EI_DATA]); + if (d == NULL) + INTERNAL_ERROR (fname); + assert (d == &tmpdata); + } + + switch (type) + { +#define DO_TYPE(NAME, Name) \ + case ELF_T_##NAME: \ + if (addsub < 0) \ + tmpbuf.Name -= (GElf_##Name) value; \ + else \ + tmpbuf.Name += (GElf_##Name) value; \ + break; + TYPES; +#undef DO_TYPE + default: + abort (); + } + + /* Now finally put in the new value. */ + Elf_Data *s = gelf_xlatetof (elf, &rdata, + &tmpdata, + ehdr->e_ident[EI_DATA]); + if (s == NULL) + INTERNAL_ERROR (fname); + assert (s == &rdata); + + return true; + } + return false; + } + + if (shdr->sh_entsize == 0) + INTERNAL_ERROR (fname); + + size_t nrels = shdr->sh_size / shdr->sh_entsize; + size_t next = 0; + if (shdr->sh_type == SHT_REL) + for (size_t relidx = 0; relidx < nrels; ++relidx) + { + GElf_Rel rel_mem; + GElf_Rel *r = gelf_getrel (reldata, relidx, &rel_mem); + if (! relocate (r->r_offset, 0, false, + GELF_R_TYPE (r->r_info), + GELF_R_SYM (r->r_info))) + { + if (relidx != next) + gelf_update_rel (reldata, next, r); + ++next; + } + } + else + for (size_t relidx = 0; relidx < nrels; ++relidx) + { + GElf_Rela rela_mem; + GElf_Rela *r = gelf_getrela (reldata, relidx, &rela_mem); + if (! relocate (r->r_offset, r->r_addend, true, + GELF_R_TYPE (r->r_info), + GELF_R_SYM (r->r_info))) + { + if (relidx != next) + gelf_update_rela (reldata, next, r); + ++next; + } + } + + nrels = next; + shdr->sh_size = reldata->d_size = nrels * shdr->sh_entsize; + gelf_update_shdr (scn, shdr); + + if (tcompress_type != 0) + if (elf_compress (tscn, tcompress_type, ELF_CHF_FORCE) != 1) + INTERNAL_ERROR (fname); + } + } +} static int process_file (const char *fname) @@ -1978,255 +2269,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, zero based between the unallocated sections. */ if (debug_fname != NULL && removing_sections && reloc_debug && ehdr->e_type == ET_REL) - { - scn = NULL; - cnt = 0; - while ((scn = elf_nextscn (debugelf, scn)) != NULL) - { - cnt++; - /* We need the actual section and header from the debugelf - not just the cached original in shdr_info because we - might want to change the size. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr->sh_type == SHT_REL || shdr->sh_type == SHT_RELA) - { - /* Make sure that this relocation section points to a - section to relocate with contents, that isn't - allocated and that is a debug section. */ - Elf_Scn *tscn = elf_getscn (debugelf, shdr->sh_info); - GElf_Shdr tshdr_mem; - GElf_Shdr *tshdr = gelf_getshdr (tscn, &tshdr_mem); - if (tshdr->sh_type == SHT_NOBITS - || tshdr->sh_size == 0 - || (tshdr->sh_flags & SHF_ALLOC) != 0) - continue; - - const char *tname = elf_strptr (debugelf, shstrndx, - tshdr->sh_name); - if (! tname || ! ebl_debugscn_p (ebl, tname)) - continue; - - /* OK, lets relocate all trivial cross debug section - relocations. */ - Elf_Data *reldata = elf_getdata (scn, NULL); - if (reldata == NULL || reldata->d_buf == NULL) - INTERNAL_ERROR (fname); - - /* Make sure we adjust the uncompressed debug data - (and recompress if necessary at the end). */ - GElf_Chdr tchdr; - int tcompress_type = 0; - if (gelf_getchdr (tscn, &tchdr) != NULL) - { - tcompress_type = tchdr.ch_type; - if (elf_compress (tscn, 0, 0) != 1) - INTERNAL_ERROR (fname); - } - - Elf_Data *tdata = elf_getdata (tscn, NULL); - if (tdata == NULL || tdata->d_buf == NULL - || tdata->d_type != ELF_T_BYTE) - INTERNAL_ERROR (fname); - - /* Pick up the symbol table and shndx table to - resolve relocation symbol indexes. */ - Elf64_Word symt = shdr->sh_link; - Elf_Data *symdata, *xndxdata; - elf_assert (symt < shnum + 2); - elf_assert (shdr_info[symt].symtab_idx < shnum + 2); - symdata = (shdr_info[symt].debug_data - ?: shdr_info[symt].data); - xndxdata = (shdr_info[shdr_info[symt].symtab_idx].debug_data - ?: shdr_info[shdr_info[symt].symtab_idx].data); - - /* Apply one relocation. Returns true when trivial - relocation actually done. */ - bool relocate (GElf_Addr offset, const GElf_Sxword addend, - bool is_rela, int rtype, int symndx) - { - /* R_*_NONE relocs can always just be removed. */ - if (rtype == 0) - return true; - - /* We only do simple absolute relocations. */ - int addsub = 0; - Elf_Type type = ebl_reloc_simple_type (ebl, rtype, &addsub); - if (type == ELF_T_NUM) - return false; - - /* These are the types we can relocate. */ -#define TYPES DO_TYPE (BYTE, Byte); DO_TYPE (HALF, Half); \ - DO_TYPE (WORD, Word); DO_TYPE (SWORD, Sword); \ - DO_TYPE (XWORD, Xword); DO_TYPE (SXWORD, Sxword) - - /* And only for relocations against other debug sections. */ - GElf_Sym sym_mem; - Elf32_Word xndx; - GElf_Sym *sym = gelf_getsymshndx (symdata, xndxdata, - symndx, &sym_mem, - &xndx); - Elf32_Word sec = (sym->st_shndx == SHN_XINDEX - ? xndx : sym->st_shndx); - if (sec >= shnum + 2) - INTERNAL_ERROR (fname); - - if (ebl_debugscn_p (ebl, shdr_info[sec].name)) - { - size_t size; - -#define DO_TYPE(NAME, Name) GElf_##Name Name; - union { TYPES; } tmpbuf; -#undef DO_TYPE - - switch (type) - { -#define DO_TYPE(NAME, Name) \ - case ELF_T_##NAME: \ - size = sizeof (GElf_##Name); \ - tmpbuf.Name = 0; \ - break; - TYPES; -#undef DO_TYPE - default: - return false; - } - - if (offset > tdata->d_size - || tdata->d_size - offset < size) - { - cleanup_debug (); - error (EXIT_FAILURE, 0, gettext ("bad relocation")); - } - - /* When the symbol value is zero then for SHT_REL - sections this is all that needs to be checked. - The addend is contained in the original data at - the offset already. So if the (section) symbol - address is zero and the given addend is zero - just remove the relocation, it isn't needed - anymore. */ - if (addend == 0 && sym->st_value == 0) - return true; - - Elf_Data tmpdata = - { - .d_type = type, - .d_buf = &tmpbuf, - .d_size = size, - .d_version = EV_CURRENT, - }; - Elf_Data rdata = - { - .d_type = type, - .d_buf = tdata->d_buf + offset, - .d_size = size, - .d_version = EV_CURRENT, - }; - - GElf_Addr value = sym->st_value; - if (is_rela) - { - /* For SHT_RELA sections we just take the - given addend and add it to the value. */ - value += addend; - /* For ADD/SUB relocations we need to fetch the - current section contents. */ - if (addsub != 0) - { - Elf_Data *d = gelf_xlatetom (debugelf, &tmpdata, - &rdata, - ehdr->e_ident[EI_DATA]); - if (d == NULL) - INTERNAL_ERROR (fname); - assert (d == &tmpdata); - } - } - else - { - /* For SHT_REL sections we have to peek at - what is already in the section at the given - offset to get the addend. */ - Elf_Data *d = gelf_xlatetom (debugelf, &tmpdata, - &rdata, - ehdr->e_ident[EI_DATA]); - if (d == NULL) - INTERNAL_ERROR (fname); - assert (d == &tmpdata); - } - - switch (type) - { -#define DO_TYPE(NAME, Name) \ - case ELF_T_##NAME: \ - if (addsub < 0) \ - tmpbuf.Name -= (GElf_##Name) value; \ - else \ - tmpbuf.Name += (GElf_##Name) value; \ - break; - TYPES; -#undef DO_TYPE - default: - abort (); - } - - /* Now finally put in the new value. */ - Elf_Data *s = gelf_xlatetof (debugelf, &rdata, - &tmpdata, - ehdr->e_ident[EI_DATA]); - if (s == NULL) - INTERNAL_ERROR (fname); - assert (s == &rdata); - - return true; - } - return false; - } - - if (shdr->sh_entsize == 0) - INTERNAL_ERROR (fname); - - size_t nrels = shdr->sh_size / shdr->sh_entsize; - size_t next = 0; - if (shdr->sh_type == SHT_REL) - for (size_t relidx = 0; relidx < nrels; ++relidx) - { - GElf_Rel rel_mem; - GElf_Rel *r = gelf_getrel (reldata, relidx, &rel_mem); - if (! relocate (r->r_offset, 0, false, - GELF_R_TYPE (r->r_info), - GELF_R_SYM (r->r_info))) - { - if (relidx != next) - gelf_update_rel (reldata, next, r); - ++next; - } - } - else - for (size_t relidx = 0; relidx < nrels; ++relidx) - { - GElf_Rela rela_mem; - GElf_Rela *r = gelf_getrela (reldata, relidx, &rela_mem); - if (! relocate (r->r_offset, r->r_addend, true, - GELF_R_TYPE (r->r_info), - GELF_R_SYM (r->r_info))) - { - if (relidx != next) - gelf_update_rela (reldata, next, r); - ++next; - } - } - - nrels = next; - shdr->sh_size = reldata->d_size = nrels * shdr->sh_entsize; - gelf_update_shdr (scn, shdr); - - if (tcompress_type != 0) - if (elf_compress (tscn, tcompress_type, ELF_CHF_FORCE) != 1) - INTERNAL_ERROR (fname); - } - } - } + remove_debug_relocations (ebl, debugelf, ehdr, fname, shstrndx); /* Now that we have done all adjustments to the data, we can actually write out the debug file. */ -- cgit v1.2.3 From f2d59180b90b56b32240f0ba106add050a1b7d09 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 25 Oct 2018 16:55:18 +0200 Subject: strip: Extract code to update shdrstrndx into new common function. Signed-off-by: Mark Wielaard --- src/ChangeLog | 5 ++++ src/strip.c | 94 +++++++++++++++++++++++++++++++---------------------------- 2 files changed, 54 insertions(+), 45 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 5832714d..23990c31 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2018-10-24 Mark Wielaard + + * strip.c (handle_elf): Extract code to update shdrstrndx into... + (update_shdrstrndx): ... this new function. + 2018-10-24 Mark Wielaard * strip.c (handle_elf): Extract code into separate functions... diff --git a/src/strip.c b/src/strip.c index a7b69a6a..11512067 100644 --- a/src/strip.c +++ b/src/strip.c @@ -395,6 +395,37 @@ get_xndxdata (Elf *elf, Elf_Scn *symscn) return xndxdata; } +/* Updates the shdrstrndx for the given Elf by updating the Ehdr and + possibly the section zero extension field. Returns zero on success. */ +static int +update_shdrstrndx (Elf *elf, size_t shdrstrndx) +{ + GElf_Ehdr ehdr; + if (gelf_getehdr (elf, &ehdr) == 0) + return 1; + + if (shdrstrndx < SHN_LORESERVE) + ehdr.e_shstrndx = shdrstrndx; + else + { + ehdr.e_shstrndx = SHN_XINDEX; + Elf_Scn *scn0 = elf_getscn (elf, 0); + GElf_Shdr shdr0_mem; + GElf_Shdr *shdr0 = gelf_getshdr (scn0, &shdr0_mem); + if (shdr0 == NULL) + return 1; + + shdr0->sh_link = shdrstrndx; + if (gelf_update_shdr (scn0, shdr0) == 0) + return 1; + } + + if (unlikely (gelf_update_ehdr (elf, &ehdr) == 0)) + return 1; + + return 0; +} + /* Remove any relocations between debug sections in ET_REL for the debug file when requested. These relocations are always zero based between the unallocated sections. */ @@ -1444,6 +1475,14 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, debugehdr->e_entry = ehdr->e_entry; debugehdr->e_flags = ehdr->e_flags; + if (unlikely (gelf_update_ehdr (debugelf, debugehdr) == 0)) + { + error (0, 0, gettext ("%s: error while updating ELF header: %s"), + debug_fname, elf_errmsg (-1)); + result = 1; + goto fail_close; + } + size_t shdrstrndx; if (elf_getshdrstrndx (elf, &shdrstrndx) < 0) { @@ -1453,36 +1492,9 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, goto fail_close; } - if (shstrndx < SHN_LORESERVE) - debugehdr->e_shstrndx = shdrstrndx; - else + if (update_shdrstrndx (debugelf, shdrstrndx) != 0) { - debugehdr->e_shstrndx = SHN_XINDEX; - Elf_Scn *scn0 = elf_getscn (debugelf, 0); - GElf_Shdr shdr0_mem; - GElf_Shdr *shdr0 = gelf_getshdr (scn0, &shdr0_mem); - if (shdr0 == NULL) - { - error (0, 0, gettext ("%s: error getting zero section: %s"), - debug_fname, elf_errmsg (-1)); - result = 1; - goto fail_close; - } - - shdr0->sh_link = shdrstrndx; - if (gelf_update_shdr (scn0, shdr0) == 0) - { - error (0, 0, gettext ("%s: error while updating zero section: %s"), - debug_fname, elf_errmsg (-1)); - result = 1; - goto fail_close; - } - - } - - if (unlikely (gelf_update_ehdr (debugelf, debugehdr) == 0)) - { - error (0, 0, gettext ("%s: error while creating ELF header: %s"), + error (0, 0, gettext ("%s: error updating shdrstrndx: %s"), debug_fname, elf_errmsg (-1)); result = 1; goto fail_close; @@ -2348,26 +2360,18 @@ while computing checksum for debug information")); & ~((GElf_Off) (offsize - 1))); newehdr->e_shentsize = gelf_fsize (elf, ELF_T_SHDR, 1, EV_CURRENT); - /* The new section header string table index. */ - if (likely (idx < SHN_HIRESERVE) && likely (idx != SHN_XINDEX)) - newehdr->e_shstrndx = idx; - else + if (gelf_update_ehdr (newelf, newehdr) == 0) { - /* The index does not fit in the ELF header field. */ - shdr_info[0].scn = elf_getscn (elf, 0); - - if (gelf_getshdr (shdr_info[0].scn, &shdr_info[0].shdr) == NULL) - INTERNAL_ERROR (fname); - - shdr_info[0].shdr.sh_link = idx; - (void) gelf_update_shdr (shdr_info[0].scn, &shdr_info[0].shdr); - - newehdr->e_shstrndx = SHN_XINDEX; + error (0, 0, gettext ("%s: error while creating ELF header: %s"), + output_fname ?: fname, elf_errmsg (-1)); + cleanup_debug (); + return 1; } - if (gelf_update_ehdr (newelf, newehdr) == 0) + /* The new section header string table index. */ + if (update_shdrstrndx (newelf, idx) != 0) { - error (0, 0, gettext ("%s: error while creating ELF header: %s"), + error (0, 0, gettext ("%s: error updating shdrstrndx: %s"), output_fname ?: fname, elf_errmsg (-1)); cleanup_debug (); return 1; -- cgit v1.2.3 From 1628254ba2157ac2b78fc9e103fe0b16fa288a26 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 25 Oct 2018 13:35:25 +0200 Subject: strip: Add --reloc-debug-sections-only option. This option does the same thing as --reloc-debug-sections without doing any other strip operation. This is useful when you want to remove the debug section relocations in a separate ET_REL debug file that was created without --reloc-debug-sections, or for a file (like the linux debug vmlinux) that you don't want to strip, but for which the debug section relocations can be resolved already. Signed-off-by: Mark Wielaard --- src/ChangeLog | 11 ++++ src/strip.c | 155 +++++++++++++++++++++++++++++++++++++++++++++-- tests/ChangeLog | 4 ++ tests/run-strip-reloc.sh | 11 ++++ 4 files changed, 175 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 23990c31..79e6872a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +2018-10-26 Mark Wielaard + + * strip.c (OPT_RELOC_DEBUG_ONLY): New define. + (options): Add reloc-debug-sections-only. + (reloc_debug_only): New static bool. + (main): Check reloc_debug_only is the only strip option used. + (parse_opt): Handle OPT_RELOC_DEBUG_ONLY. + (handle_debug_relocs): New function. + (handle_elf): Add local variables lastsec_offset and lastsec_size. + Handle reloc_debug_only. + 2018-10-24 Mark Wielaard * strip.c (handle_elf): Extract code to update shdrstrndx into... diff --git a/src/strip.c b/src/strip.c index 11512067..e953c4d5 100644 --- a/src/strip.c +++ b/src/strip.c @@ -1,5 +1,5 @@ /* Discard section not used at runtime from object files. - Copyright (C) 2000-2012, 2014, 2015, 2016, 2017 Red Hat, Inc. + Copyright (C) 2000-2012, 2014, 2015, 2016, 2017, 2018 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2000. @@ -61,6 +61,7 @@ ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT; #define OPT_STRIP_SECTIONS 0x102 #define OPT_RELOC_DEBUG 0x103 #define OPT_KEEP_SECTION 0x104 +#define OPT_RELOC_DEBUG_ONLY 0x105 /* Definitions of arguments for argp functions. */ @@ -82,6 +83,8 @@ static const struct argp_option options[] = N_("Copy modified/access timestamps to the output"), 0 }, { "reloc-debug-sections", OPT_RELOC_DEBUG, NULL, 0, N_("Resolve all trivial relocations between debug sections if the removed sections are placed in a debug file (only relevant for ET_REL files, operation is not reversable, needs -f)"), 0 }, + { "reloc-debug-sections-only", OPT_RELOC_DEBUG_ONLY, NULL, 0, + N_("Similar to --reloc-debug-sections, but resolve all trivial relocations between debug sections in place. No other stripping is performed (operation is not reversable, incompatible with -f, -g, --remove-comment and --remove-section)"), 0 }, { "remove-comment", OPT_REMOVE_COMMENT, NULL, 0, N_("Remove .comment section"), 0 }, { "remove-section", 'R', "SECTION", 0, N_("Remove the named section. SECTION is an extended wildcard pattern. May be given more than once. Only non-allocated sections can be removed."), 0 }, @@ -159,6 +162,9 @@ static bool permissive; /* If true perform relocations between debug sections. */ static bool reloc_debug; +/* If true perform relocations between debug sections only. */ +static bool reloc_debug_only; + /* Sections the user explicitly wants to keep or remove. */ struct section_pattern { @@ -240,6 +246,12 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, 0, gettext ("--reloc-debug-sections used without -f")); + if (reloc_debug_only && + (debug_fname != NULL || remove_secs != NULL + || remove_comment == true || remove_debug == true)) + error (EXIT_FAILURE, 0, + gettext ("--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --remove-section")); + /* Tell the library which version we are expecting. */ elf_version (EV_CURRENT); @@ -307,6 +319,10 @@ parse_opt (int key, char *arg, struct argp_state *state) reloc_debug = true; break; + case OPT_RELOC_DEBUG_ONLY: + reloc_debug_only = true; + break; + case OPT_REMOVE_COMMENT: remove_comment = true; break; @@ -774,6 +790,116 @@ process_file (const char *fname) return result; } +/* Processing for --reloc-debug-sections-only. */ +static int +handle_debug_relocs (Elf *elf, Ebl *ebl, Elf *new_elf, + GElf_Ehdr *ehdr, const char *fname, size_t shstrndx, + GElf_Off *last_offset, GElf_Xword *last_size) +{ + + /* Copy over the ELF header. */ + if (gelf_update_ehdr (new_elf, ehdr) == 0) + { + error (0, 0, "couldn't update new ehdr: %s", elf_errmsg (-1)); + return 1; + } + + /* Copy over sections and record end of allocated sections. */ + GElf_Off lastoffset = 0; + Elf_Scn *scn = NULL; + while ((scn = elf_nextscn (elf, scn)) != NULL) + { + /* Get the header. */ + GElf_Shdr shdr; + if (gelf_getshdr (scn, &shdr) == NULL) + { + error (0, 0, "couldn't get shdr: %s", elf_errmsg (-1)); + return 1; + } + + /* Create new section. */ + Elf_Scn *new_scn = elf_newscn (new_elf); + if (new_scn == NULL) + { + error (0, 0, "couldn't create new section: %s", elf_errmsg (-1)); + return 1; + } + + if (gelf_update_shdr (new_scn, &shdr) == 0) + { + error (0, 0, "couldn't update shdr: %s", elf_errmsg (-1)); + return 1; + } + + /* Copy over section data. */ + Elf_Data *data = NULL; + while ((data = elf_getdata (scn, data)) != NULL) + { + Elf_Data *new_data = elf_newdata (new_scn); + if (new_data == NULL) + { + error (0, 0, "couldn't create new section data: %s", + elf_errmsg (-1)); + return 1; + } + *new_data = *data; + } + + /* Record last offset of allocated section. */ + if ((shdr.sh_flags & SHF_ALLOC) != 0) + { + GElf_Off filesz = (shdr.sh_type != SHT_NOBITS + ? shdr.sh_size : 0); + if (lastoffset < shdr.sh_offset + filesz) + lastoffset = shdr.sh_offset + filesz; + } + } + + /* Make sure section header name table is setup correctly, we'll + need it to determine whether to relocate sections. */ + if (update_shdrstrndx (new_elf, shstrndx) != 0) + { + error (0, 0, "error updating shdrstrndx: %s", elf_errmsg (-1)); + return 1; + } + + /* Adjust the relocation sections. */ + remove_debug_relocations (ebl, new_elf, ehdr, fname, shstrndx); + + /* Adjust the offsets of the non-allocated sections, so they come after + the allocated sections. */ + scn = NULL; + while ((scn = elf_nextscn (new_elf, scn)) != NULL) + { + /* Get the header. */ + GElf_Shdr shdr; + if (gelf_getshdr (scn, &shdr) == NULL) + { + error (0, 0, "couldn't get shdr: %s", elf_errmsg (-1)); + return 1; + } + + /* Adjust non-allocated section offsets to be after any allocated. */ + if ((shdr.sh_flags & SHF_ALLOC) == 0) + { + shdr.sh_offset = ((lastoffset + shdr.sh_addralign - 1) + & ~((GElf_Off) (shdr.sh_addralign - 1))); + if (gelf_update_shdr (scn, &shdr) == 0) + { + error (0, 0, "couldn't update shdr: %s", elf_errmsg (-1)); + return 1; + } + + GElf_Off filesz = (shdr.sh_type != SHT_NOBITS + ? shdr.sh_size : 0); + lastoffset = shdr.sh_offset + filesz; + *last_offset = shdr.sh_offset; + *last_size = filesz; + } + } + + return 0; +} /* Maximum size of array allocated on stack. */ #define MAX_STACK_ALLOC (400 * 1024) @@ -790,6 +916,8 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, tmp_debug_fname = NULL; int result = 0; size_t shdridx = 0; + GElf_Off lastsec_offset = 0; + Elf64_Xword lastsec_size = 0; size_t shstrndx; struct shdr_info { @@ -848,7 +976,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, the --reloc-debug-sections option are currently the only reasons we need EBL so don't open the backend unless necessary. */ Ebl *ebl = NULL; - if (remove_debug || reloc_debug) + if (remove_debug || reloc_debug || reloc_debug_only) { ebl = ebl_openbackend (elf); if (ebl == NULL) @@ -937,6 +1065,18 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, } } + if (reloc_debug_only) + { + if (handle_debug_relocs (elf, ebl, newelf, ehdr, fname, shstrndx, + &lastsec_offset, &lastsec_size) != 0) + { + result = 1; + goto fail_close; + } + idx = shstrndx; + goto done; /* Skip all actual stripping operations. */ + } + if (debug_fname != NULL) { /* Also create an ELF descriptor for the debug file */ @@ -2339,6 +2479,10 @@ while computing checksum for debug information")); } } + lastsec_offset = shdr_info[shdridx].shdr.sh_offset; + lastsec_size = shdr_info[shdridx].shdr.sh_size; + + done: /* Finally finish the ELF header. Fill in the fields not handled by libelf from the old file. */ newehdr = gelf_getehdr (newelf, &newehdr_mem); @@ -2355,8 +2499,7 @@ while computing checksum for debug information")); /* We need to position the section header table. */ const size_t offsize = gelf_fsize (elf, ELF_T_OFF, 1, EV_CURRENT); - newehdr->e_shoff = ((shdr_info[shdridx].shdr.sh_offset - + shdr_info[shdridx].shdr.sh_size + offsize - 1) + newehdr->e_shoff = ((lastsec_offset + lastsec_size + offsize - 1) & ~((GElf_Off) (offsize - 1))); newehdr->e_shentsize = gelf_fsize (elf, ELF_T_SHDR, 1, EV_CURRENT); @@ -2418,7 +2561,7 @@ while computing checksum for debug information")); || (pwrite_retry (fd, zero, sizeof zero, offsetof (Elf32_Ehdr, e_shentsize)) != sizeof zero) - || ftruncate (fd, shdr_info[shdridx].shdr.sh_offset) < 0) + || ftruncate (fd, lastsec_offset) < 0) { error (0, errno, gettext ("while writing '%s'"), output_fname ?: fname); @@ -2438,7 +2581,7 @@ while computing checksum for debug information")); || (pwrite_retry (fd, zero, sizeof zero, offsetof (Elf64_Ehdr, e_shentsize)) != sizeof zero) - || ftruncate (fd, shdr_info[shdridx].shdr.sh_offset) < 0) + || ftruncate (fd, lastsec_offset) < 0) { error (0, errno, gettext ("while writing '%s'"), output_fname ?: fname); diff --git a/tests/ChangeLog b/tests/ChangeLog index d5a06563..23e91133 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2018-10-26 Mark Wielaard + + * run-strip-reloc.sh: Add a test for --reloc-debug-sections-only. + 2018-10-18 Mark Wielaard * run-readelf-n.sh: New test. diff --git a/tests/run-strip-reloc.sh b/tests/run-strip-reloc.sh index bbc9f586..6e54ab4a 100755 --- a/tests/run-strip-reloc.sh +++ b/tests/run-strip-reloc.sh @@ -32,6 +32,8 @@ runtest() { outfile2=out.stripped2 debugfile2=out.debug2 + echo "runtest $infile" + rm -f $outfile1 $debugfile1 $outfile2 $debugfile2 testrun ${abs_top_builddir}/src/strip -o $outfile1 -f $debugfile1 $infile || @@ -67,6 +69,15 @@ runtest() { testrun_compare cat readelf.out1 < readelf.out2 || { echo "*** failure readelf -w compare $infile"; status=1; } + + testrun ${abs_top_builddir}/src/strip --reloc-debug-sections-only \ + $debugfile1 || + { echo "*** failure strip --reloc-debug-sections-only $debugfile1"; \ + status=1; } + + cmp $debugfile1 $debugfile2 || + { echo "*** failure --reloc-debug-sections[-only] $debugfile1 $debugfile2"; \ + status=1; } } # Most simple hello world kernel module for various architectures. -- cgit v1.2.3 From 4789e0fb92b03c3d8de548489c871d17f8f35cd0 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 9 Nov 2018 08:18:22 +0000 Subject: libelf: Explicitly update section data after (de)compression. We need to explictly trigger a section data reload after updating the ELF section rawdata to make sure it gets written out to disk on an elf_update. Doing this showed one bug/inefficiently when the underlying file has a different endianness. In that case for debug sections we would convert by allocating a new buffer and just copying over the raw data into a new buffer. This is not really necessary and would hide any relocations done on the rawdata by libdwfl. Added a couple of new ppc64 big endian testfiles that show the issue. Signed-off-by: Mark Wielaard --- libelf/ChangeLog | 7 +++ libelf/elf_compress.c | 6 ++ libelf/elf_getdata.c | 3 +- tests/ChangeLog | 10 ++++ tests/Makefile.am | 5 +- tests/run-readelf-zdebug-rel.sh | 106 +++++++++++++++++++++++++++++++++ tests/run-strip-reloc.sh | 4 ++ tests/testfile-debug-rel-ppc64-g.o.bz2 | Bin 0 -> 1400 bytes tests/testfile-debug-rel-ppc64-z.o.bz2 | Bin 0 -> 1420 bytes tests/testfile-debug-rel-ppc64.o.bz2 | Bin 0 -> 1103 bytes 10 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 tests/testfile-debug-rel-ppc64-g.o.bz2 create mode 100644 tests/testfile-debug-rel-ppc64-z.o.bz2 create mode 100644 tests/testfile-debug-rel-ppc64.o.bz2 diff --git a/libelf/ChangeLog b/libelf/ChangeLog index af565036..53da9a65 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,10 @@ +2018-11-09 Mark Wielaard + + * elf_compress.c (__libelf_reset_rawdata): Make rawdata change + explicit by calling __libelf_set_data_list. + * elf_getdata.c (convert_data): Don't convert if type is ELF_T_BYTE + even if endianness is different. + 2018-10-18 Mark Wielaard * libelf.h (Elf_Type): Add ELF_T_NHDR8. diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c index fd412e8a..d96245df 100644 --- a/libelf/elf_compress.c +++ b/libelf/elf_compress.c @@ -326,6 +326,12 @@ __libelf_reset_rawdata (Elf_Scn *scn, void *buf, size_t size, size_t align, scn->rawdata_base = buf; scn->flags |= ELF_F_MALLOCED; + + /* Pretend we (tried to) read the data from the file and setup the + data (might have to convert the Chdr to native format). */ + scn->data_read = 1; + scn->flags |= ELF_F_FILEDATA; + __libelf_set_data_list_rdlock (scn, 1); } int diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index 4f80aaf2..2043bba2 100644 --- a/libelf/elf_getdata.c +++ b/libelf/elf_getdata.c @@ -146,7 +146,8 @@ convert_data (Elf_Scn *scn, int version __attribute__ ((unused)), int eclass, { const size_t align = __libelf_type_align (eclass, type); - if (data == MY_ELFDATA) + /* Do we need to convert the data and/or adjust for alignment? */ + if (data == MY_ELFDATA || type == ELF_T_BYTE) { if (((((size_t) (char *) scn->rawdata_base)) & (align - 1)) == 0) /* No need to copy, we can use the raw data. */ diff --git a/tests/ChangeLog b/tests/ChangeLog index 23e91133..7ce39808 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,13 @@ +2018-11-09 Mark Wielaard + + * testfile-debug-rel-ppc64-g.o.bz2: New test file. + * testfile-debug-rel-ppc64-z.o.bz2: Likewise. + * testfile-debug-rel-ppc64.o.bz2: Likewise. + * Makefile.am (EXTRA_DIST): Add testfile-debug-rel-ppc64-g.o.bz2, + testfile-debug-rel-ppc64-z.o.bz2 and testfile-debug-rel-ppc64.o.bz2. + * run-strip-reloc.sh: Also test on testfile-debug-rel-ppc64.o. + * run-readelf-zdebug-rel.sh: Also test on testfile-debug-rel-ppc64*.o. + 2018-10-26 Mark Wielaard * run-strip-reloc.sh: Add a test for --reloc-debug-sections-only. diff --git a/tests/Makefile.am b/tests/Makefile.am index a2a381ac..d3ac345d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -412,7 +412,10 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ testfile-riscv64.bz2 testfile-riscv64-s.bz2 \ testfile-riscv64-core.bz2 \ run-copyadd-sections.sh run-copymany-sections.sh \ - run-typeiter-many.sh run-strip-test-many.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 if USE_VALGRIND valgrind_cmd='valgrind -q --leak-check=full --error-exitcode=1' diff --git a/tests/run-readelf-zdebug-rel.sh b/tests/run-readelf-zdebug-rel.sh index 3f20078c..53fa42a2 100755 --- a/tests/run-readelf-zdebug-rel.sh +++ b/tests/run-readelf-zdebug-rel.sh @@ -146,4 +146,110 @@ cat loc.out | sed -e "s/'.debug_loc' at offset 0x185/'.zdebug_loc' at offset 0x1 cat loc.out | sed -e "s/at offset 0x185/at offset 0x150/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-z.o +# Same as above, but on ppc64 +testfiles testfile-debug-rel-ppc64.o +testfiles testfile-debug-rel-ppc64-g.o testfile-debug-rel-ppc64-z.o + +cat > info.out << \EOF + +DWARF section [ 6] '.debug_info' at offset 0x80: + [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 C11 7.3.1 20180712 (Red Hat 7.3.1-6) -Asystem=linux -Asystem=unix -Asystem=posix -msecure-plt -g -Og" + language (data1) C99 (12) + name (strp) "testfile-zdebug-rel.c" + comp_dir (strp) "/home/mjw" + low_pc (addr) 000000000000000000 + high_pc (data8) 44 (0x000000000000002c) + stmt_list (sec_offset) 0 + [ 2d] subprogram abbrev: 2 + external (flag_present) yes + name (strp) "main" + decl_file (data1) testfile-zdebug-rel.c (1) + decl_line (data1) 4 + prototyped (flag_present) yes + type (ref4) [ 82] + low_pc (addr) 000000000000000000 + high_pc (data8) 44 (0x000000000000002c) + frame_base (exprloc) + [ 0] call_frame_cfa + GNU_all_call_sites (flag_present) yes + sibling (ref4) [ 82] + [ 4e] formal_parameter abbrev: 3 + name (strp) "argc" + decl_file (data1) testfile-zdebug-rel.c (1) + decl_line (data1) 4 + type (ref4) [ 82] + location (sec_offset) location list [ 0] + [ 5d] formal_parameter abbrev: 4 + name (strp) "argv" + decl_file (data1) testfile-zdebug-rel.c (1) + decl_line (data1) 4 + type (ref4) [ 89] + location (exprloc) + [ 0] reg4 + [ 6a] variable abbrev: 5 + name (string) "a" + decl_file (data1) testfile-zdebug-rel.c (1) + decl_line (data1) 6 + type (ref4) [ 9c] + const_value (sdata) 18446744073709551607 (-9) + [ 74] variable abbrev: 6 + name (string) "b" + decl_file (data1) testfile-zdebug-rel.c (1) + decl_line (data1) 7 + type (ref4) [ 9c] + location (sec_offset) location list [ 4e] + [ 82] base_type abbrev: 7 + byte_size (data1) 4 + encoding (data1) signed (5) + name (string) "int" + [ 89] pointer_type abbrev: 8 + byte_size (data1) 8 + type (ref4) [ 8f] + [ 8f] pointer_type abbrev: 8 + byte_size (data1) 8 + type (ref4) [ 95] + [ 95] base_type abbrev: 9 + byte_size (data1) 1 + encoding (data1) unsigned_char (8) + name (strp) "char" + [ 9c] base_type abbrev: 9 + byte_size (data1) 8 + encoding (data1) unsigned (7) + name (strp) "long unsigned int" +EOF + +cat info.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel-ppc64.o + +cat info.out | sed -e "s/'.debug_info'/'.zdebug_info'/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel-ppc64-g.o + +cat info.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel-ppc64-z.o + +cat > loc.out << \EOF + +DWARF section [ 9] '.debug_loc' at offset 0x1af: + + CU [ b] base: 000000000000000000 + [ 0] range 0, 4 + [ 0] reg3 + range 4, 14 + [ 0] breg3 -42 + [ 2] stack_value + range 14, 2c + [ 0] GNU_entry_value: + [ 0] reg3 + [ 3] stack_value + [ 4e] range 8, 18 + [ 0] reg3 +EOF + +cat loc.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-ppc64.o + +cat loc.out | sed -e "s/'.debug_loc' at offset 0x1af/'.zdebug_loc' at offset 0x15f/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-ppc64-g.o + +cat loc.out | sed -e "s/at offset 0x1af/at offset 0x177/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-ppc64-z.o + exit 0 diff --git a/tests/run-strip-reloc.sh b/tests/run-strip-reloc.sh index 6e54ab4a..6f299aba 100755 --- a/tests/run-strip-reloc.sh +++ b/tests/run-strip-reloc.sh @@ -135,4 +135,8 @@ testrun ${abs_top_builddir}/src/elfcompress -o strip-compressed.o -t zlib \ runtest strip-uncompressed.o 1 runtest strip-compressed.o 1 +# See run-readelf-zdebug-rel.sh +testfiles testfile-debug-rel-ppc64.o +runtest testfile-debug-rel-ppc64.o 1 + exit $status diff --git a/tests/testfile-debug-rel-ppc64-g.o.bz2 b/tests/testfile-debug-rel-ppc64-g.o.bz2 new file mode 100644 index 00000000..8c5ec99e Binary files /dev/null and b/tests/testfile-debug-rel-ppc64-g.o.bz2 differ diff --git a/tests/testfile-debug-rel-ppc64-z.o.bz2 b/tests/testfile-debug-rel-ppc64-z.o.bz2 new file mode 100644 index 00000000..df50465f Binary files /dev/null and b/tests/testfile-debug-rel-ppc64-z.o.bz2 differ diff --git a/tests/testfile-debug-rel-ppc64.o.bz2 b/tests/testfile-debug-rel-ppc64.o.bz2 new file mode 100644 index 00000000..8340d0ce Binary files /dev/null and b/tests/testfile-debug-rel-ppc64.o.bz2 differ -- cgit v1.2.3 From 825e48c4e942e3cbdab1b75c04b8c014867d66ab Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Mon, 29 Oct 2018 16:21:26 +0100 Subject: Also find CFI in sections of type SHT_X86_64_UNWIND On my system with g++ (GCC) 8.2.1 20180831 with GNU gold (GNU Binutils 2.31.1) 1.16, the .eh_frame section does not have type PROGBITS but rather is using X86_64_UNWIND nowadays: ``` $ echo "int main(){ return 0; }" > test.c $ gcc test.c $ readelf --sections a.out | grep .eh_frame [14] .eh_frame X86_64_UNWIND 0000000000000670 00000670 [15] .eh_frame_hdr X86_64_UNWIND 0000000000000724 00000724 ``` Without this patch, libdw refuses to use the available unwind information, leading to broken backtraces while unwinding. With the patch applied, unwinding works once more in such situations. Signed-off-by: Milian Wolff Signed-off-by: Mark Wielaard Tested-by: Milian Wolff --- libdw/ChangeLog | 4 ++++ libdw/dwarf_getcfi_elf.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index ebe002cd..627fddeb 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,7 @@ +2018-10-29 Milian Wolff + + * dwarf_getcfi_elf.c (getcfi_shdr): Check sh_type != SHT_NOBITS. + 2018-09-13 Mark Wielaard * dwarf_begin_elf.c (check_section): Drop ehdr argument, add and diff --git a/libdw/dwarf_getcfi_elf.c b/libdw/dwarf_getcfi_elf.c index 315cc02f..adcaea03 100644 --- a/libdw/dwarf_getcfi_elf.c +++ b/libdw/dwarf_getcfi_elf.c @@ -298,7 +298,7 @@ getcfi_shdr (Elf *elf, const GElf_Ehdr *ehdr) } else if (!strcmp (name, ".eh_frame")) { - if (shdr->sh_type == SHT_PROGBITS) + if (shdr->sh_type != SHT_NOBITS) return getcfi_scn_eh_frame (elf, ehdr, scn, shdr, hdr_scn, hdr_vaddr); else -- cgit v1.2.3 From 4b0342b85b5b1a3d3636e06e3b5320954828dfb1 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 6 Nov 2018 12:01:25 +0100 Subject: backends: Add x86_64 section_type_name for SHT_X86_64_UNWIND. Makes sure that eu-readelf and eu-elflint recognize and show the x86_64 specific section type correctly. Signed-off-by: Mark Wielaard Tested-by: Milian Wolff --- backends/ChangeLog | 5 +++++ backends/x86_64_init.c | 3 ++- backends/x86_64_symbol.c | 14 +++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index 768c270b..e2a02812 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,8 @@ +2018-11-06 Mark Wielaard + + * x86_64_symbol.c (x86_64_section_type_name): New function. + * x86_64_init.c (x86_64_int): Hook section_type_name. + 2018-10-20 Mark Wielaard * ppc_initreg.c (ppc_set_initial_registers_tid): Use define instead of diff --git a/backends/x86_64_init.c b/backends/x86_64_init.c index adfa4791..49f6c6c7 100644 --- a/backends/x86_64_init.c +++ b/backends/x86_64_init.c @@ -1,5 +1,5 @@ /* Initialization of x86-64 specific backend library. - Copyright (C) 2002-2009, 2013 Red Hat, Inc. + Copyright (C) 2002-2009, 2013, 2018 Red Hat, Inc. Copyright (C) H.J. Lu , 2015. This file is part of elfutils. Written by Ulrich Drepper , 2002. @@ -55,6 +55,7 @@ x86_64_init (Elf *elf __attribute__ ((unused)), eh->name = "AMD x86-64"; x86_64_init_reloc (eh); HOOK (eh, reloc_simple_type); + HOOK (eh, section_type_name); if (eh->class == ELFCLASS32) eh->core_note = x32_core_note; else diff --git a/backends/x86_64_symbol.c b/backends/x86_64_symbol.c index e07b1806..98457bcb 100644 --- a/backends/x86_64_symbol.c +++ b/backends/x86_64_symbol.c @@ -1,5 +1,5 @@ /* x86_64 specific symbolic name handling. - Copyright (C) 2002, 2005 Red Hat, Inc. + Copyright (C) 2002, 2005, 2018 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2002. @@ -59,3 +59,15 @@ x86_64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, return ELF_T_NUM; } } + +/* Return symbolic representation of section type. */ +const char * +x86_64_section_type_name (int type, + char *buf __attribute__ ((unused)), + size_t len __attribute__ ((unused))) +{ + if (type == SHT_X86_64_UNWIND) + return "X86_64_UNWIND"; + + return NULL; +} -- cgit v1.2.3 From ecbe3120cddb1b9597a19a68c4265e4f2c530444 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 21 Oct 2018 23:41:32 +0200 Subject: libdwelf: New function dwelf_elf_begin. This introduces a new function dwelf_elf_begin which creates a (read-only) ELF handle from a possibly compressed file handle or a file that start with a linux kernel header. This can be used in eu-readelf to (re)open a (pure) ELF. eu-readelf uses libdwfl to relocate addresses in the original file in case it is ET_REL. But to show the "raw" data it might need to (re)open the file. Which could fail if the file was compressed. And produced an obscure error message: "cannot create EBL handle". This rewrites __libdw_open_file a little so that the given file handle will never be closed (whether on success or failure) and introduces a new internal function __libdw_open_elf that dwelf_elf_begin wraps. Signed-off-by: Mark Wielaard --- libdw/ChangeLog | 4 +++ libdw/libdw.map | 5 ++++ libdwelf/ChangeLog | 8 +++++- libdwelf/Makefile.am | 2 +- libdwelf/dwelf_elf_begin.c | 62 +++++++++++++++++++++++++++++++++++++++++ libdwelf/libdwelf.h | 10 ++++++- libdwfl/ChangeLog | 8 ++++++ libdwfl/libdwflP.h | 4 +++ libdwfl/open.c | 30 ++++++++++++++------ src/ChangeLog | 7 +++-- src/readelf.c | 8 ++++-- tests/ChangeLog | 6 ++++ tests/Makefile.am | 2 ++ tests/run-readelf-compressed.sh | 34 ++++++++++++++++++++++ 14 files changed, 174 insertions(+), 16 deletions(-) create mode 100644 libdwelf/dwelf_elf_begin.c create mode 100755 tests/run-readelf-compressed.sh diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 627fddeb..7caa2234 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,7 @@ +2018-10-20 Mark Wielaard + + * libdw.map (ELFUTILS_0.175): New section. Add dwelf_elf_begin. + 2018-10-29 Milian Wolff * dwarf_getcfi_elf.c (getcfi_shdr): Check sh_type != SHT_NOBITS. diff --git a/libdw/libdw.map b/libdw/libdw.map index 3fef2ede..55482d58 100644 --- a/libdw/libdw.map +++ b/libdw/libdw.map @@ -356,3 +356,8 @@ ELFUTILS_0.173 { global: dwarf_next_lines; } ELFUTILS_0.171; + +ELFUTILS_0.175 { + global: + dwelf_elf_begin; +} ELFUTILS_0.173; \ No newline at end of file diff --git a/libdwelf/ChangeLog b/libdwelf/ChangeLog index ba921347..88be3421 100644 --- a/libdwelf/ChangeLog +++ b/libdwelf/ChangeLog @@ -1,9 +1,15 @@ +2018-10-21 Mark Wielaard + + * libdwelf.h (dwelf_elf_begin): Add function declaration. + * dwelf_elf_begin.c: New file. + * Makefile.am (libdwelf_a_SOURCES): Add dwelf_elf_begin.c. + 2018-10-18 Mark Wielaard * dwelf_elf_gnu_build_id.c (find_elf_build_id): Check p_align to set ELF type. -2015-10-11 Akihiko Odaki +2016-10-11 Akihiko Odaki * dwelf_strtab.c: Remove sys/param.h include. (MIN): Remove definition. diff --git a/libdwelf/Makefile.am b/libdwelf/Makefile.am index 7ca767a9..a7933fda 100644 --- a/libdwelf/Makefile.am +++ b/libdwelf/Makefile.am @@ -41,7 +41,7 @@ noinst_HEADERS = libdwelfP.h 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_strtab.c dwelf_elf_begin.c libdwelf = $(libdw) diff --git a/libdwelf/dwelf_elf_begin.c b/libdwelf/dwelf_elf_begin.c new file mode 100644 index 00000000..79825338 --- /dev/null +++ b/libdwelf/dwelf_elf_begin.c @@ -0,0 +1,62 @@ +/* Creates an ELF handle from a possibly compressed file descriptor. + Copyright (C) 2018 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 . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libdwelfP.h" +#include "libdwflP.h" +#include "libelfP.h" + +#include + +Elf * +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) + return elf; + + /* Elf wasn't usable. Make sure there is a proper elf error message. */ + + if (elf != NULL) + elf_end (elf); + + if (e != DWFL_E_LIBELF) + { + /* Force a bad ELF error. */ + char badelf[EI_NIDENT] = { }; + Elf *belf = elf_memory (badelf, EI_NIDENT); + elf32_getehdr (belf); + elf_end (belf); + } + + return NULL; +} diff --git a/libdwelf/libdwelf.h b/libdwelf/libdwelf.h index 72089dbf..6d491847 100644 --- a/libdwelf/libdwelf.h +++ b/libdwelf/libdwelf.h @@ -1,5 +1,5 @@ /* Interfaces for libdwelf. DWARF ELF Low-level Functions. - Copyright (C) 2014, 2015, 2016 Red Hat, Inc. + Copyright (C) 2014, 2015, 2016, 2018 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -125,6 +125,14 @@ extern const char *dwelf_strent_str (Dwelf_Strent *se) extern void dwelf_strtab_free (Dwelf_Strtab *st) __nonnull_attribute__ (1); +/* 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. */ +extern Elf *dwelf_elf_begin (int fd); + #ifdef __cplusplus } #endif diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 9e7bb316..45cc1b4e 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,11 @@ +2018-10-20 Mark Wielaard + + * libdwflP.h (__libdw_open_elf): New internal function declaration. + * open.c (what_kind): Rename close_fd to may_close_fd. + (__libdw_open_file): Replaced (and renamed) by a call to ... + (libdw_open_elf): this. And add never_close_fd argument. + (__libdw_open_elf): New function that calls libdw_open_elf. + 2018-10-18 Mark Wielaard * dwfl_segment_report_module.c (consider_note): Take align as new diff --git a/libdwfl/libdwflP.h b/libdwfl/libdwflP.h index 31e6e190..941a8b66 100644 --- a/libdwfl/libdwflP.h +++ b/libdwfl/libdwflP.h @@ -626,6 +626,10 @@ extern Dwfl_Error __libdw_open_file (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok) internal_function; +/* Same as __libdw_open_file, but never closes the given file + descriptor and ELF_K_AR is always an acceptable type. */ +extern Dwfl_Error __libdw_open_elf (int fd, Elf **elfp) internal_function; + /* Fetch PT_DYNAMIC P_VADDR from ELF and store it to *VADDRP. Return success. *VADDRP is not modified if the function fails. */ extern bool __libdwfl_dynamic_vaddr_get (Elf *elf, GElf_Addr *vaddrp) diff --git a/libdwfl/open.c b/libdwfl/open.c index 4e0461bd..74367359 100644 --- a/libdwfl/open.c +++ b/libdwfl/open.c @@ -95,7 +95,7 @@ decompress (int fd __attribute__ ((unused)), Elf **elf) } static Dwfl_Error -what_kind (int fd, Elf **elfp, Elf_Kind *kind, bool *close_fd) +what_kind (int fd, Elf **elfp, Elf_Kind *kind, bool *may_close_fd) { Dwfl_Error error = DWFL_E_NOERROR; *kind = elf_kind (*elfp); @@ -108,7 +108,7 @@ what_kind (int fd, Elf **elfp, Elf_Kind *kind, bool *close_fd) error = decompress (fd, elfp); if (error == DWFL_E_NOERROR) { - *close_fd = true; + *may_close_fd = true; *kind = elf_kind (*elfp); } } @@ -116,15 +116,16 @@ what_kind (int fd, Elf **elfp, Elf_Kind *kind, bool *close_fd) return error; } -Dwfl_Error internal_function -__libdw_open_file (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok) +static Dwfl_Error +libdw_open_elf (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok, + bool never_close_fd) { - bool close_fd = false; + bool may_close_fd = false; Elf *elf = elf_begin (*fdp, ELF_C_READ_MMAP_PRIVATE, NULL); Elf_Kind kind; - Dwfl_Error error = what_kind (*fdp, &elf, &kind, &close_fd); + Dwfl_Error error = what_kind (*fdp, &elf, &kind, &may_close_fd); if (error == DWFL_E_BADELF) { /* It's not an ELF file or a compressed file. @@ -153,7 +154,7 @@ __libdw_open_file (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok) elf->flags &= ~(ELF_F_MMAPPED | ELF_F_MALLOCED); elf_end (elf); elf = subelf; - error = what_kind (*fdp, &elf, &kind, &close_fd); + error = what_kind (*fdp, &elf, &kind, &may_close_fd); } } } @@ -169,7 +170,8 @@ __libdw_open_file (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok) elf = NULL; } - if (error == DWFL_E_NOERROR ? close_fd : close_on_fail) + if (! never_close_fd + && error == DWFL_E_NOERROR ? may_close_fd : close_on_fail) { close (*fdp); *fdp = -1; @@ -178,3 +180,15 @@ __libdw_open_file (int *fdp, Elf **elfp, bool close_on_fail, bool archive_ok) *elfp = elf; return error; } + +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); +} + +Dwfl_Error internal_function +__libdw_open_elf (int fd, Elf **elfp) +{ + return libdw_open_elf (&fd, elfp, false, true, true); +} diff --git a/src/ChangeLog b/src/ChangeLog index 79e6872a..f1a35798 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-10-20 Mark Wielaard + + * readelf.c (process_elf_file): Use dwelf_elf_begin to open pure_elf. + 2018-10-26 Mark Wielaard * strip.c (OPT_RELOC_DEBUG_ONLY): New define. @@ -93,11 +97,10 @@ * findtextrel.c (process_file): Check that sh_entsize is not zero. -2018-09-13 Mark Wielaard +2018-10-13 Mark Wielaard * readelf.c (print_debug_macro_section): Use elf_getdata. Print decoded flag string. -2018-09-13 Mark Wielaard 2018-10-19 Mark Wielaard diff --git a/src/readelf.c b/src/readelf.c index ccd07eb7..c6c3fb32 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -905,7 +905,6 @@ process_elf_file (Dwfl_Module *dwflmod, int fd) if (ehdr == NULL) { - elf_error: error (0, 0, gettext ("cannot read ELF header: %s"), elf_errmsg (-1)); return; } @@ -948,7 +947,7 @@ process_elf_file (Dwfl_Module *dwflmod, int fd) { /* Read the file afresh. */ off_t aroff = elf_getaroff (elf); - pure_elf = elf_begin (fd, ELF_C_READ_MMAP, NULL); + pure_elf = dwelf_elf_begin (fd); if (aroff > 0) { /* Archive member. */ @@ -958,7 +957,10 @@ process_elf_file (Dwfl_Module *dwflmod, int fd) pure_elf = armem; } if (pure_elf == NULL) - goto elf_error; + { + error (0, 0, gettext ("cannot read ELF: %s"), elf_errmsg (-1)); + return; + } pure_ebl = ebl_openbackend (pure_elf); if (pure_ebl == NULL) goto ebl_error; diff --git a/tests/ChangeLog b/tests/ChangeLog index 7ce39808..b0da4c79 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2018-10-20 Mark Wielaard + + * run-readelf-compressed.sh: New test. + * Makefile.am (TESTS): Add run-readelf-compressed.sh. + (EXTRA_DIST): Likewise. + 2018-11-09 Mark Wielaard * testfile-debug-rel-ppc64-g.o.bz2: New test file. diff --git a/tests/Makefile.am b/tests/Makefile.am index d3ac345d..ac467d93 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -100,6 +100,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-find-prologues.sh run-allregs.sh run-addrcfi.sh \ run-dwarfcfi.sh \ run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \ + run-readelf-compressed.sh \ run-readelf-const-values.sh \ run-varlocs-self.sh run-exprlocs-self.sh \ run-readelf-test1.sh run-readelf-test2.sh run-readelf-test3.sh \ @@ -216,6 +217,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-ranlib-test3.sh run-ranlib-test4.sh \ run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \ run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \ + run-readelf-compressed.sh \ run-readelf-const-values.sh testfile-const-values.debug.bz2 \ run-addrcfi.sh run-dwarfcfi.sh \ testfile11-debugframe.bz2 testfile12-debugframe.bz2 \ diff --git a/tests/run-readelf-compressed.sh b/tests/run-readelf-compressed.sh new file mode 100755 index 00000000..a2a04a2a --- /dev/null +++ b/tests/run-readelf-compressed.sh @@ -0,0 +1,34 @@ +#! /bin/sh +# Copyright (C) 2018 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 . + +. $srcdir/test-subr.sh + +# See run-strip-reloc.sh +testfiles hello_i386.ko + +tempfiles hello_i386.ko.bz2 readelf.out.1 readelf.out.2 + +testrun ${abs_top_builddir}/src/readelf -a hello_i386.ko > readelf.out.1 +bzip2 hello_i386.ko +testrun ${abs_top_builddir}/src/readelf -a hello_i386.ko.bz2 > readelf.out.2 + +diff -u readelf.out.1 readelf.out.2 +if [ $? != 0 ]; then + exit 1; +fi + +exit 0 -- cgit v1.2.3 From cff53f1784c9a4344604bedf41b7d499b3eb30d5 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 4 Nov 2018 21:34:38 +0100 Subject: libcpu: Recognize bpf jump variants BPF_JLT, BPF_JLE, BPF_JSLT and BPF_JSLE Linux kernel 4.13 introduced 4 more jump class variants. commit 92b31a9af73b3a3fc801899335d6c47966351830 Author: Daniel Borkmann Date: Thu Aug 10 01:39:55 2017 +0200 bpf: add BPF_J{LT,LE,SLT,SLE} instructions For conditional jumping on unsigned and signed < and <= between a register and another register or immediate. Add these new constants to bpf.h, recognize them in bpf_disasm and update the testfile-bpf-dis1.expect file. Signed-off-by: Mark Wielaard --- lib/ChangeLog | 4 ++++ lib/bpf.h | 4 ++++ libcpu/ChangeLog | 5 +++++ libcpu/bpf_disasm.c | 26 +++++++++++++++++++++++++- tests/ChangeLog | 5 +++++ tests/testfile-bpf-dis1.expect.bz2 | Bin 1467 -> 1516 bytes 6 files changed, 43 insertions(+), 1 deletion(-) diff --git a/lib/ChangeLog b/lib/ChangeLog index 86a53d2c..0914b2c6 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2018-11-04 Mark Wielaard + + * bpf.h: Add BPF_JLT, BPF_JLE, BPF_JSLT and BPF_JSLE. + 2018-07-04 Ross Burton * color.c: Remove error.h, add system.h include. diff --git a/lib/bpf.h b/lib/bpf.h index db80a51e..efb26f8f 100644 --- a/lib/bpf.h +++ b/lib/bpf.h @@ -23,6 +23,10 @@ #define BPF_JSGE 0x70 #define BPF_CALL 0x80 #define BPF_EXIT 0x90 +#define BPF_JLT 0xa0 +#define BPF_JLE 0xb0 +#define BPF_JSLT 0xc0 +#define BPF_JSLE 0xd0 #define BPF_W 0x00 #define BPF_H 0x08 diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 86d29478..adebbef8 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,8 @@ +2018-11-04 Mark Wielaard + + * bpf_disasm.c (bpf_disasm): Recognize BPF_JLT, BPF_JLE, BPF_JSLT + and BPF_JSLE. + 2018-02-09 Joshua Watt * i386_disasm.c (i386_disasm): Use FALLTHOUGH macro instead of diff --git a/libcpu/bpf_disasm.c b/libcpu/bpf_disasm.c index 054aba2b..3d92d014 100644 --- a/libcpu/bpf_disasm.c +++ b/libcpu/bpf_disasm.c @@ -1,5 +1,5 @@ /* Disassembler for BPF. - Copyright (C) 2016 Red Hat, Inc. + Copyright (C) 2016, 2018 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -346,6 +346,18 @@ bpf_disasm (Ebl *ebl, const uint8_t **startp, const uint8_t *end, case BPF_JMP | BPF_JSGE | BPF_K: code_fmt = J64(REGS(1), >=, IMMS(2)); goto do_dst_imm_jmp; + case BPF_JMP | BPF_JLT | BPF_K: + code_fmt = J64(REG(1), <, IMMS(2)); + goto do_dst_imm_jmp; + case BPF_JMP | BPF_JLE | BPF_K: + code_fmt = J64(REG(1), <=, IMMS(2)); + goto do_dst_imm_jmp; + case BPF_JMP | BPF_JSLT | BPF_K: + code_fmt = J64(REGS(1), <, IMMS(2)); + goto do_dst_imm_jmp; + case BPF_JMP | BPF_JSLE | BPF_K: + code_fmt = J64(REGS(1), <=, IMMS(2)); + goto do_dst_imm_jmp; case BPF_JMP | BPF_JEQ | BPF_X: code_fmt = J64(REG(1), ==, REG(2)); @@ -368,6 +380,18 @@ bpf_disasm (Ebl *ebl, const uint8_t **startp, const uint8_t *end, case BPF_JMP | BPF_JSGE | BPF_X: code_fmt = J64(REGS(1), >=, REGS(2)); goto do_dst_src_jmp; + case BPF_JMP | BPF_JLT | BPF_X: + code_fmt = J64(REG(1), <, REG(2)); + goto do_dst_src_jmp; + case BPF_JMP | BPF_JLE | BPF_X: + code_fmt = J64(REG(1), <=, REG(2)); + goto do_dst_src_jmp; + case BPF_JMP | BPF_JSLT | BPF_X: + code_fmt = J64(REGS(1), <, REGS(2)); + goto do_dst_src_jmp; + case BPF_JMP | BPF_JSLE | BPF_X: + code_fmt = J64(REGS(1), <=, REGS(2)); + goto do_dst_src_jmp; case BPF_LDX | BPF_MEM | BPF_B: code_fmt = LOAD(u8); diff --git a/tests/ChangeLog b/tests/ChangeLog index b0da4c79..92dfb95d 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2018-11-04 Mark Wielaard + + * testfile-bpf-reloc.expect.bz2: Update with new expected jump + variants. + 2018-10-20 Mark Wielaard * run-readelf-compressed.sh: New test. diff --git a/tests/testfile-bpf-dis1.expect.bz2 b/tests/testfile-bpf-dis1.expect.bz2 index 21b55e94..61a8afb1 100644 Binary files a/tests/testfile-bpf-dis1.expect.bz2 and b/tests/testfile-bpf-dis1.expect.bz2 differ -- cgit v1.2.3 From 7a3f6fe60b8519b5372f5a5521ccbac59411f33f Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 11 Nov 2018 23:50:41 +0100 Subject: Recognize NT_VERSION notes. NT_VERSION notes are emitted by the gas .version directive. They have an empty description and (ab)use the owner name to store the version data string. Signed-off-by: Mark Wielaard --- libebl/ChangeLog | 9 +++++++++ libebl/eblobjnote.c | 10 +++++++++- libebl/eblobjnotetypename.c | 8 +++++++- libebl/libebl.h | 4 ++-- src/ChangeLog | 7 +++++++ src/elflint.c | 27 +++++++++++++++++++++------ src/readelf.c | 1 + tests/ChangeLog | 5 +++++ tests/run-readelf-n.sh | 19 ++++++++++++++++++- 9 files changed, 79 insertions(+), 11 deletions(-) diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 120c84c0..076596f0 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,12 @@ +2018-11-11 Mark Wielaard + + * eblobjnote.c (ebl_object_note): Recognize NT_VERSION with zero + descriptor. Add explicit "GNU" name check. + * eblobjnotetypename.c (ebl_object_note_type_name): Add extra + argument descsz. Recognize NT_VERSION using descsz. With "GNU" + name it is NT_GNU_ABI_TAG. + * libebl.h (ebl_object_note_type_name): Add extra argument descsz. + 2018-10-18 Mark Wielaard * eblobjnote.c (ebl_object_note): Handle NT_GNU_PROPERTY_TYPE_0. diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c index 57e9f52f..8fda7d99 100644 --- a/libebl/eblobjnote.c +++ b/libebl/eblobjnote.c @@ -135,6 +135,14 @@ ebl_object_note (Ebl *ebl, const char *name, uint32_t type, return; } + /* NT_VERSION doesn't have any info. All data is in the name. */ + if (descsz == 0 && type == NT_VERSION) + return; + + /* Everything else should have the "GNU" owner name. */ + if (strcmp ("GNU", name) != 0) + return; + switch (type) { case NT_GNU_BUILD_ID: @@ -337,7 +345,7 @@ ebl_object_note (Ebl *ebl, const char *name, uint32_t type, break; case NT_GNU_ABI_TAG: - if (strcmp (name, "GNU") == 0 && descsz >= 8 && descsz % 4 == 0) + if (descsz >= 8 && descsz % 4 == 0) { Elf_Data in = { diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c index af23caea..8cdd7819 100644 --- a/libebl/eblobjnotetypename.c +++ b/libebl/eblobjnotetypename.c @@ -39,6 +39,7 @@ const char * ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type, + GElf_Word descsz, char *buf, size_t len) { const char *res = ebl->object_note_type_name (name, type, buf, len); @@ -80,14 +81,19 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type, if (strcmp (name, "GNU") != 0) { + /* NT_VERSION is special, all data is in the name. */ + if (descsz == 0 && type == NT_VERSION) + return "VERSION"; + snprintf (buf, len, "%s: %" PRIu32, gettext (""), type); return buf; } + /* And finally all the "GNU" note types. */ static const char *knowntypes[] = { #define KNOWNSTYPE(name) [NT_##name] = #name - KNOWNSTYPE (VERSION), + KNOWNSTYPE (GNU_ABI_TAG), KNOWNSTYPE (GNU_HWCAP), KNOWNSTYPE (GNU_BUILD_ID), KNOWNSTYPE (GNU_GOLD_VERSION), diff --git a/libebl/libebl.h b/libebl/libebl.h index a34fe48d..58306547 100644 --- a/libebl/libebl.h +++ b/libebl/libebl.h @@ -175,8 +175,8 @@ extern const char *ebl_core_note_type_name (Ebl *ebl, uint32_t type, char *buf, /* Return name of the note section type for an object file. */ extern const char *ebl_object_note_type_name (Ebl *ebl, const char *name, - uint32_t type, char *buf, - size_t len); + uint32_t type, GElf_Word descsz, + char *buf, size_t len); /* Print information about object note if available. */ extern void ebl_object_note (Ebl *ebl, const char *name, uint32_t type, diff --git a/src/ChangeLog b/src/ChangeLog index f1a35798..0ed86bbf 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2018-11-11 Mark Wielaard + + * readelf.c (handle_notes_data): Pass n_descsz to + ebl_object_note_type_name. + * elflint.c (check_note_data): Recognize NT_VERSION, add owner + name to unknown note error. + 2018-10-20 Mark Wielaard * readelf.c (process_elf_file): Use dwelf_elf_begin to open pure_elf. diff --git a/src/elflint.c b/src/elflint.c index fa3af4c5..dff74eee 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -1,5 +1,5 @@ /* Pedantic checking of ELF files compliance with gABI/psABI spec. - Copyright (C) 2001-2015, 2017 Red Hat, Inc. + Copyright (C) 2001-2015, 2017, 2018 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2001. @@ -4332,7 +4332,17 @@ section [%2d] '%s': unknown core file note type %" PRIu32 case NT_GNU_BUILD_ID: case NT_GNU_GOLD_VERSION: case NT_GNU_PROPERTY_TYPE_0: - break; + if (nhdr.n_namesz == sizeof ELF_NOTE_GNU + && strcmp (data->d_buf + name_offset, ELF_NOTE_GNU) == 0) + break; + else + { + /* NT_VERSION is 1, same as NT_GNU_ABI_TAG. It has no + descriptor and (ab)uses the name as version string. */ + if (nhdr.n_descsz == 0 && nhdr.n_type == NT_VERSION) + break; + } + goto unknown_note; case 0: /* Linux vDSOs use a type 0 note for the kernel version word. */ @@ -4341,16 +4351,21 @@ section [%2d] '%s': unknown core file note type %" PRIu32 break; FALLTHROUGH; default: + { + unknown_note: if (shndx == 0) ERROR (gettext ("\ -phdr[%d]: unknown object file note type %" PRIu32 " at offset %zu\n"), - phndx, (uint32_t) nhdr.n_type, offset); +phdr[%d]: unknown object file note type %" PRIu32 " with owner name '%s' at offset %zu\n"), + phndx, (uint32_t) nhdr.n_type, + (char *) data->d_buf + name_offset, offset); else ERROR (gettext ("\ section [%2d] '%s': unknown object file note type %" PRIu32 - " at offset %zu\n"), + " with owner name '%s' at offset %zu\n"), shndx, section_name (ebl, shndx), - (uint32_t) nhdr.n_type, offset); + (uint32_t) nhdr.n_type, + (char *) data->d_buf + name_offset, offset); + } } } diff --git a/src/readelf.c b/src/readelf.c index c6c3fb32..659e34fb 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -12201,6 +12201,7 @@ handle_notes_data (Ebl *ebl, const GElf_Ehdr *ehdr, ? ebl_core_note_type_name (ebl, nhdr.n_type, buf, sizeof (buf)) : ebl_object_note_type_name (ebl, name, nhdr.n_type, + nhdr.n_descsz, buf2, sizeof (buf2))); /* Filter out invalid entries. */ diff --git a/tests/ChangeLog b/tests/ChangeLog index 92dfb95d..d92b8e3a 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2018-11-11 Mark Wielaard + + * run-readelf-n.sh: Fix NT_GNU_ABI_TAG type. Add testfile11 test + for NT_VERSION. + 2018-11-04 Mark Wielaard * testfile-bpf-reloc.expect.bz2: Update with new expected jump diff --git a/tests/run-readelf-n.sh b/tests/run-readelf-n.sh index 3ae7cf02..7e2a845e 100755 --- a/tests/run-readelf-n.sh +++ b/tests/run-readelf-n.sh @@ -48,8 +48,25 @@ Note segment of 32 bytes at offset 0x300: Note segment of 68 bytes at offset 0x320: Owner Data size Type - GNU 16 VERSION + GNU 16 GNU_ABI_TAG OS: Linux, ABI: 3.2.0 GNU 20 GNU_BUILD_ID Build ID: 83cb2229fabd2065d1361f5b46424cd75270f94b EOF + +# NT_VERSION note type clashes with "GNU" owner type NT_GNU_ABI_TAG. +# Uses owner name (with zero desc) for version string. +testfiles testfile11 +testrun_compare ${abs_top_builddir}/src/readelf -n testfile11 << EOF + +Note section [ 2] '.note.ABI-tag' of 32 bytes at offset 0x128: + Owner Data size Type + GNU 16 GNU_ABI_TAG + OS: Linux, ABI: 2.2.5 + +Note section [35] '.note' of 60 bytes at offset 0x13364: + Owner Data size Type + 01.01 0 VERSION + 01.01 0 VERSION + 01.01 0 VERSION +EOF -- cgit v1.2.3 From 72e30c2e0cb49a9a300667fdd5ff09082f717950 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Mon, 12 Nov 2018 23:34:24 +0100 Subject: Handle GNU Build Attribute ELF Notes. GNU Build Attribute ELF Notes are generated by the GCC annobin plugin and described at https://fedoraproject.org/wiki/Toolchain/Watermark Unfortunately the constants aren't yet described in the standard glibc elf.h so they have been added to the elfutils specific elf-knowledge.h. The notes abuse the name owner field to encode some data not in the description. This makes it a bit hard to parse. We have to match the note owner name prefix (to "GA") to be sure the type is valid. We also cannot rely on the owner name being a valid C string since the attribute name and value can contain zero (terminators). So pass around namesz to the ebl note parsing functions. eu-elflint will recognize and eu-readelf -n will now show the notes: Note section [27] '.gnu.build.attributes' of 56080 bytes at offset 0x114564: Owner Data size Type GA 16 GNU Build Attribute OPEN Address Range: 0x2f30f - 0x2f30f VERSION: "3p8" GA 0 GNU Build Attribute OPEN TOOL: "gcc 8.2.1 20180801" GA 0 GNU Build Attribute OPEN "GOW": 45 GA 0 GNU Build Attribute OPEN STACK_PROT: 0 GA 0 GNU Build Attribute OPEN "stack_clash": TRUE GA 0 GNU Build Attribute OPEN "cf_protection": 0 GA 0 GNU Build Attribute OPEN "GLIBCXX_ASSERTIONS": TRUE GA 0 GNU Build Attribute OPEN "FORTIFY": 0 GA 0 GNU Build Attribute OPEN PIC: 3 GA 0 GNU Build Attribute OPEN SHORT_ENUM: FALSE GA 0 GNU Build Attribute OPEN ABI: c001100000012 GA 0 GNU Build Attribute OPEN "stack_realign": FALSE A new test was added to run-readelf -n for the existing annobin file. Signed-off-by: Mark Wielaard --- libebl/ChangeLog | 8 +++ libebl/eblobjnote.c | 151 +++++++++++++++++++++++++++++++++++++++++++- libebl/eblobjnotetypename.c | 25 +++++++- libebl/libebl.h | 4 +- libelf/ChangeLog | 9 +++ libelf/elf-knowledge.h | 21 ++++++ src/ChangeLog | 8 +++ src/elflint.c | 13 ++++ src/readelf.c | 16 ++++- tests/ChangeLog | 4 ++ tests/run-readelf-n.sh | 55 ++++++++++++++++ 11 files changed, 308 insertions(+), 6 deletions(-) diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 076596f0..79a2ff4c 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,11 @@ +2018-11-12 Mark Wielaard + + * libebl.h (ebl_object_note): Add new argument namesz. + * eblobjnote.c (ebl_object_note): Likewise and handle GNU Build + Attribute notes. + * eblobjnotetypename.c (ebl_object_note_type_name): Handle GNU + Build Attribute notes. + 2018-11-11 Mark Wielaard * eblobjnote.c (ebl_object_note): Recognize NT_VERSION with zero diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c index 8fda7d99..58ac86d7 100644 --- a/libebl/eblobjnote.c +++ b/libebl/eblobjnote.c @@ -37,11 +37,14 @@ #include #include +#include "common.h" #include "libelfP.h" +#include "libdwP.h" +#include "memory-access.h" void -ebl_object_note (Ebl *ebl, const char *name, uint32_t type, +ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type, uint32_t descsz, const char *desc) { if (! ebl->object_note (name, type, descsz, desc)) @@ -135,6 +138,152 @@ ebl_object_note (Ebl *ebl, const char *name, uint32_t type, return; } + if (strncmp (name, ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX, + strlen (ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX)) == 0 + && (type == NT_GNU_BUILD_ATTRIBUTE_OPEN + || type == NT_GNU_BUILD_ATTRIBUTE_FUNC)) + { + /* There might or might not be a pair of addresses in the desc. */ + if (descsz > 0) + { + printf (" Address Range: "); + + union + { + Elf64_Addr a64[2]; + Elf32_Addr a32[2]; + } addrs; + + size_t addr_size = gelf_fsize (ebl->elf, ELF_T_ADDR, + 2, EV_CURRENT); + if (descsz != addr_size) + printf ("\n"); + else + { + Elf_Data src = + { + .d_type = ELF_T_ADDR, .d_version = EV_CURRENT, + .d_buf = (void *) desc, .d_size = descsz + }; + + Elf_Data dst = + { + .d_type = ELF_T_ADDR, .d_version = EV_CURRENT, + .d_buf = &addrs, .d_size = descsz + }; + + if (gelf_xlatetom (ebl->elf, &dst, &src, + elf_getident (ebl->elf, + NULL)[EI_DATA]) == NULL) + printf ("%s\n", elf_errmsg (-1)); + else + { + if (addr_size == 4) + printf ("%#" PRIx32 " - %#" PRIx32 "\n", + addrs.a32[0], addrs.a32[1]); + else + printf ("%#" PRIx64 " - %#" PRIx64 "\n", + addrs.a64[0], addrs.a64[1]); + } + } + } + + /* Most data actually is inside the name. + https://fedoraproject.org/wiki/Toolchain/Watermark */ + + /* We need at least 2 chars of data to describe the + attribute and value encodings. */ + const char *data = (name + + strlen (ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX)); + if (namesz < 2) + { + printf ("\n"); + return; + } + + printf (" "); + + /* In most cases the value comes right after the encoding bytes. */ + const char *value = &data[2]; + switch (data[1]) + { + case GNU_BUILD_ATTRIBUTE_VERSION: + printf ("VERSION: "); + break; + case GNU_BUILD_ATTRIBUTE_STACK_PROT: + printf ("STACK_PROT: "); + break; + case GNU_BUILD_ATTRIBUTE_RELRO: + printf ("RELRO: "); + break; + case GNU_BUILD_ATTRIBUTE_STACK_SIZE: + printf ("STACK_SIZE: "); + break; + case GNU_BUILD_ATTRIBUTE_TOOL: + printf ("TOOL: "); + break; + case GNU_BUILD_ATTRIBUTE_ABI: + printf ("ABI: "); + break; + case GNU_BUILD_ATTRIBUTE_PIC: + printf ("PIC: "); + break; + case GNU_BUILD_ATTRIBUTE_SHORT_ENUM: + printf ("SHORT_ENUM: "); + break; + case 32 ... 126: + printf ("\"%s\": ", &data[1]); + value += strlen (&data[1]) + 1; + break; + default: + printf (": "); + break; + } + + switch (data[0]) + { + case GNU_BUILD_ATTRIBUTE_TYPE_NUMERIC: + { + /* Any numbers are always in (unsigned) little endian. */ + static const Dwarf dbg + = { .other_byte_order = MY_ELFDATA != ELFDATA2LSB }; + size_t bytes = namesz - (value - name); + uint64_t val; + if (bytes == 1) + val = *(unsigned char *) value; + else if (bytes == 2) + val = read_2ubyte_unaligned (&dbg, value); + else if (bytes == 4) + val = read_4ubyte_unaligned (&dbg, value); + else if (bytes == 8) + val = read_8ubyte_unaligned (&dbg, value); + else + goto unknown; + printf ("%" PRIx64, val); + } + break; + case GNU_BUILD_ATTRIBUTE_TYPE_STRING: + printf ("\"%s\"", value); + break; + case GNU_BUILD_ATTRIBUTE_TYPE_BOOL_TRUE: + printf ("TRUE"); + break; + case GNU_BUILD_ATTRIBUTE_TYPE_BOOL_FALSE: + printf ("FALSE"); + break; + default: + { + unknown: + printf (""); + } + break; + } + + printf ("\n"); + + return; + } + /* NT_VERSION doesn't have any info. All data is in the name. */ if (descsz == 0 && type == NT_VERSION) return; diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c index 8cdd7819..29a5391c 100644 --- a/libebl/eblobjnotetypename.c +++ b/libebl/eblobjnotetypename.c @@ -1,5 +1,5 @@ /* Return note type name. - Copyright (C) 2002, 2007, 2009, 2011, 2016 Red Hat, Inc. + Copyright (C) 2002, 2007, 2009, 2011, 2016, 2018 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2002. @@ -79,6 +79,29 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type, } } + if (strncmp (name, ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX, + strlen (ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX)) == 0) + { + /* GNU Build Attribute notes (ab)use the owner name to store + most of their data. Don't decode everything here. Just + the type.*/ + char *t = buf; + const char *gba = "GNU Build Attribute"; + int w = snprintf (t, len, "%s ", gba); + t += w; + len -= w; + if (type == NT_GNU_BUILD_ATTRIBUTE_OPEN) + w = snprintf (t, len, "OPEN"); + else if (type == NT_GNU_BUILD_ATTRIBUTE_FUNC) + w = snprintf (t, len, "FUNC"); + else + w = snprintf (t, len, "%x", type); + t += w; + len -= w; + + return buf; + } + if (strcmp (name, "GNU") != 0) { /* NT_VERSION is special, all data is in the name. */ diff --git a/libebl/libebl.h b/libebl/libebl.h index 58306547..ca9b9fec 100644 --- a/libebl/libebl.h +++ b/libebl/libebl.h @@ -179,8 +179,8 @@ extern const char *ebl_object_note_type_name (Ebl *ebl, const char *name, char *buf, size_t len); /* Print information about object note if available. */ -extern void ebl_object_note (Ebl *ebl, const char *name, uint32_t type, - uint32_t descsz, const char *desc); +extern void ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, + uint32_t type, uint32_t descsz, const char *desc); /* Check whether an attribute in a .gnu_attributes section is recognized. Fills in *TAG_NAME with the name for this tag. diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 53da9a65..2675ba55 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,12 @@ +2018-11-12 Mark Wielaard + + * elf-knowledge.c (ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX): New define. + (NT_GNU_BUILD_ATTRIBUTE_{OPEN,FUNC}): Likewise. + (GNU_BUILD_ATTRIBUTE_TYPE_{NUMERIC,STRING,BOOL_TRUE,BOOL_FALSE}): + Likewise. + (GNU_BUILD_ATTRIBUTE_{VERSION,STACK_PROT,RELRO,STACK_SIZE,TOOL,ABI, + PIC,SHORT_ENUM}): Likewise. + 2018-11-09 Mark Wielaard * elf_compress.c (__libelf_reset_rawdata): Make rawdata change diff --git a/libelf/elf-knowledge.h b/libelf/elf-knowledge.h index 64f58878..9d3be0ff 100644 --- a/libelf/elf-knowledge.h +++ b/libelf/elf-knowledge.h @@ -77,4 +77,25 @@ || ((Ehdr)->e_machine == EM_S390 \ && (Ehdr)->e_ident[EI_CLASS] == ELFCLASS64) ? 8 : 4) +/* GNU Annobin notes are not fully standardized and abuses the owner name. */ + +#define ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX "GA" + +#define NT_GNU_BUILD_ATTRIBUTE_OPEN 0x100 +#define NT_GNU_BUILD_ATTRIBUTE_FUNC 0x101 + +#define GNU_BUILD_ATTRIBUTE_TYPE_NUMERIC '*' +#define GNU_BUILD_ATTRIBUTE_TYPE_STRING '$' +#define GNU_BUILD_ATTRIBUTE_TYPE_BOOL_TRUE '+' +#define GNU_BUILD_ATTRIBUTE_TYPE_BOOL_FALSE '!' + +#define GNU_BUILD_ATTRIBUTE_VERSION 1 +#define GNU_BUILD_ATTRIBUTE_STACK_PROT 2 +#define GNU_BUILD_ATTRIBUTE_RELRO 3 +#define GNU_BUILD_ATTRIBUTE_STACK_SIZE 4 +#define GNU_BUILD_ATTRIBUTE_TOOL 5 +#define GNU_BUILD_ATTRIBUTE_ABI 6 +#define GNU_BUILD_ATTRIBUTE_PIC 7 +#define GNU_BUILD_ATTRIBUTE_SHORT_ENUM 8 + #endif /* elf-knowledge.h */ diff --git a/src/ChangeLog b/src/ChangeLog index 0ed86bbf..f014de8f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2018-11-12 Mark Wielaard + + * elflint.c (check_note_data): Recognize NT_GNU_BUILD_ATTRIBUTE_OPEN + and NT_GNU_BUILD_ATTRIBUTE_OPEN. + * readelf.c (handle_notes_data): Handle + ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX. Pass nhdr.n_namesz to + ebl_object_note. + 2018-11-11 Mark Wielaard * readelf.c (handle_notes_data): Pass n_descsz to diff --git a/src/elflint.c b/src/elflint.c index dff74eee..184ca125 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -4344,6 +4344,19 @@ section [%2d] '%s': unknown core file note type %" PRIu32 } goto unknown_note; + case NT_GNU_BUILD_ATTRIBUTE_OPEN: + case NT_GNU_BUILD_ATTRIBUTE_FUNC: + /* GNU Build Attributes store most data in the owner + name, which must start with the + ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX "GA". */ + if (nhdr.n_namesz >= sizeof ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX + && strncmp (data->d_buf + name_offset, + ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX, + strlen (ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX)) == 0) + break; + else + goto unknown_note; + case 0: /* Linux vDSOs use a type 0 note for the kernel version word. */ if (nhdr.n_namesz == sizeof "Linux" diff --git a/src/readelf.c b/src/readelf.c index 659e34fb..3a73710f 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -12193,10 +12193,21 @@ handle_notes_data (Ebl *ebl, const GElf_Ehdr *ehdr, const char *name = nhdr.n_namesz == 0 ? "" : data->d_buf + name_offset; const char *desc = data->d_buf + desc_offset; + /* GNU Build Attributes are weird, they store most of their data + into the owner name field. Extract just the owner name + prefix here, then use the rest later as data. */ + bool is_gnu_build_attr + = strncmp (name, ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX, + strlen (ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX)) == 0; + const char *print_name = (is_gnu_build_attr + ? ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX : name); + size_t print_namesz = (is_gnu_build_attr + ? strlen (print_name) : nhdr.n_namesz); + char buf[100]; char buf2[100]; printf (gettext (" %-13.*s %9" PRId32 " %s\n"), - (int) nhdr.n_namesz, name, nhdr.n_descsz, + (int) print_namesz, print_name, nhdr.n_descsz, ehdr->e_type == ET_CORE ? ebl_core_note_type_name (ebl, nhdr.n_type, buf, sizeof (buf)) @@ -12237,7 +12248,8 @@ handle_notes_data (Ebl *ebl, const GElf_Ehdr *ehdr, handle_core_note (ebl, &nhdr, name, desc); } else - ebl_object_note (ebl, name, nhdr.n_type, nhdr.n_descsz, desc); + ebl_object_note (ebl, nhdr.n_namesz, name, nhdr.n_type, + nhdr.n_descsz, desc); } } diff --git a/tests/ChangeLog b/tests/ChangeLog index d92b8e3a..e6a9bde4 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2018-11-12 Mark Wielaard + + * run-readelf-n.sh: Add testfile-annobingroup.o test. + 2018-11-11 Mark Wielaard * run-readelf-n.sh: Fix NT_GNU_ABI_TAG type. Add testfile11 test diff --git a/tests/run-readelf-n.sh b/tests/run-readelf-n.sh index 7e2a845e..c2db2ce2 100755 --- a/tests/run-readelf-n.sh +++ b/tests/run-readelf-n.sh @@ -70,3 +70,58 @@ Note section [35] '.note' of 60 bytes at offset 0x13364: 01.01 0 VERSION 01.01 0 VERSION EOF + +# See run-annobingroup.sh +testfiles testfile-annobingroup.o +testrun_compare ${abs_top_builddir}/src/readelf -n testfile-annobingroup.o << EOF + +Note section [ 5] '.gnu.build.attributes' of 272 bytes at offset 0x50: + Owner Data size Type + GA 16 GNU Build Attribute OPEN + Address Range: 0 - 0 + VERSION: "3p8" + GA 0 GNU Build Attribute OPEN + TOOL: "gcc 8.1.1 20180712" + GA 0 GNU Build Attribute OPEN + "GOW": 5 + GA 0 GNU Build Attribute OPEN + STACK_PROT: 0 + GA 0 GNU Build Attribute OPEN + "stack_clash": FALSE + GA 0 GNU Build Attribute OPEN + "cf_protection": 0 + GA 0 GNU Build Attribute OPEN + PIC: 0 + GA 0 GNU Build Attribute OPEN + SHORT_ENUM: FALSE + GA 0 GNU Build Attribute OPEN + ABI: c001100000012 + GA 0 GNU Build Attribute OPEN + "stack_realign": FALSE + +Note section [ 7] '.gnu.build.attributes..text.unlikely' of 216 bytes at offset 0x160: + Owner Data size Type + GA 16 GNU Build Attribute FUNC + Address Range: 0 - 0 + ABI: c001100000012 + GA 0 GNU Build Attribute FUNC + "stack_realign": FALSE + GA 0 GNU Build Attribute FUNC + STACK_PROT: 0 + GA 0 GNU Build Attribute FUNC + "stack_clash": FALSE + GA 0 GNU Build Attribute FUNC + "cf_protection": 0 + GA 0 GNU Build Attribute FUNC + PIC: 0 + GA 0 GNU Build Attribute FUNC + "GOW": 5 + GA 0 GNU Build Attribute FUNC + SHORT_ENUM: FALSE + +Note section [22] '.note.gnu.property' of 48 bytes at offset 0x40c: + Owner Data size Type + GNU 32 GNU_PROPERTY_TYPE_0 + X86 0xc0000000 data: 00 00 00 00 + X86 0xc0000001 data: 00 00 00 00 +EOF -- cgit v1.2.3 From d3e6266754b95244063aa1e40c531fdd57259332 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 9 Nov 2018 15:19:07 +0100 Subject: strip: Also handle gnu compressed debug sections with --reloc-debug-sections Check whether a section was gnu compressed and decompress it first before trying to resolve relocations. Recompress it afterwards. This found a bug in elf_compress_gnu which would use the "raw" file contents even if the user had just created the section (copying over the section from the original input file). Add compressed ET_REL tests to run-strip-reloc.sh testcase. Signed-off-by: Mark Wielaard --- libelf/ChangeLog | 4 ++++ libelf/elf_compress_gnu.c | 7 ++++--- src/ChangeLog | 5 +++++ src/strip.c | 29 +++++++++++++++++++++++------ tests/ChangeLog | 5 +++++ tests/run-strip-reloc.sh | 6 ++++++ 6 files changed, 47 insertions(+), 9 deletions(-) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 2675ba55..ab078cb5 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2018-11-09 Mark Wielaard + + * elf_compress_gnu.c (elf_compress_gnu): Use elf_getdata. + 2018-11-12 Mark Wielaard * elf-knowledge.c (ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX): New define. diff --git a/libelf/elf_compress_gnu.c b/libelf/elf_compress_gnu.c index 198dc7d5..1ecd6a08 100644 --- a/libelf/elf_compress_gnu.c +++ b/libelf/elf_compress_gnu.c @@ -144,9 +144,10 @@ elf_compress_gnu (Elf_Scn *scn, int inflate, unsigned int flags) else if (inflate == 0) { /* In theory the user could have constucted a compressed section - by hand. But we always just take the rawdata directly and - decompress that. */ - Elf_Data *data = elf_rawdata (scn, NULL); + by hand. And in practice they do. For example when copying + a section from one file to another using elf_newdata. So we + have to use elf_getdata (not elf_rawdata). */ + Elf_Data *data = elf_getdata (scn, NULL); if (data == NULL) return -1; diff --git a/src/ChangeLog b/src/ChangeLog index f014de8f..7eecfcb5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2018-11-09 Mark Wielaard + + * strip.c (remove_debug_relocations): Check if section is gnu + compressed and decompress and recompress it. + 2018-11-12 Mark Wielaard * elflint.c (check_note_data): Recognize NT_GNU_BUILD_ATTRIBUTE_OPEN diff --git a/src/strip.c b/src/strip.c index e953c4d5..15180737 100644 --- a/src/strip.c +++ b/src/strip.c @@ -485,12 +485,22 @@ remove_debug_relocations (Ebl *ebl, Elf *elf, GElf_Ehdr *ehdr, (and recompress if necessary at the end). */ GElf_Chdr tchdr; int tcompress_type = 0; - if (gelf_getchdr (tscn, &tchdr) != NULL) + bool is_gnu_compressed = false; + if (strncmp (tname, ".zdebug", strlen ("zdebug")) == 0) { - tcompress_type = tchdr.ch_type; - if (elf_compress (tscn, 0, 0) != 1) + is_gnu_compressed = true; + if (elf_compress_gnu (tscn, 0, 0) != 1) INTERNAL_ERROR (fname); } + else + { + if (gelf_getchdr (tscn, &tchdr) != NULL) + { + tcompress_type = tchdr.ch_type; + if (elf_compress (tscn, 0, 0) != 1) + INTERNAL_ERROR (fname); + } + } Elf_Data *tdata = elf_getdata (tscn, NULL); if (tdata == NULL || tdata->d_buf == NULL @@ -686,9 +696,16 @@ remove_debug_relocations (Ebl *ebl, Elf *elf, GElf_Ehdr *ehdr, shdr->sh_size = reldata->d_size = nrels * shdr->sh_entsize; gelf_update_shdr (scn, shdr); - if (tcompress_type != 0) - if (elf_compress (tscn, tcompress_type, ELF_CHF_FORCE) != 1) - INTERNAL_ERROR (fname); + if (is_gnu_compressed) + { + if (elf_compress_gnu (tscn, 1, ELF_CHF_FORCE) != 1) + INTERNAL_ERROR (fname); + } + else if (tcompress_type != 0) + { + if (elf_compress (tscn, tcompress_type, ELF_CHF_FORCE) != 1) + INTERNAL_ERROR (fname); + } } } } diff --git a/tests/ChangeLog b/tests/ChangeLog index e6a9bde4..514229b7 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2018-11-09 Mark Wielaard + + * run-strip-reloc.sh: Also test testfile-debug-rel-ppc64-z.o + testfile-debug-rel-ppc64-g.o. + 2018-11-12 Mark Wielaard * run-readelf-n.sh: Add testfile-annobingroup.o test. diff --git a/tests/run-strip-reloc.sh b/tests/run-strip-reloc.sh index 6f299aba..0c6b1c2c 100755 --- a/tests/run-strip-reloc.sh +++ b/tests/run-strip-reloc.sh @@ -139,4 +139,10 @@ runtest strip-compressed.o 1 testfiles testfile-debug-rel-ppc64.o runtest testfile-debug-rel-ppc64.o 1 +testfiles testfile-debug-rel-ppc64-z.o +runtest testfile-debug-rel-ppc64-z.o 1 + +testfiles testfile-debug-rel-ppc64-g.o +runtest testfile-debug-rel-ppc64-g.o 1 + exit $status -- cgit v1.2.3 From cf10453f8252df81225796d98548ba6eac113df3 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 13 Nov 2018 21:18:09 +0100 Subject: libelf: Correctly setup alignment of SHF_COMPRESSED section data. We didn't set the alignment of SHF_COMPRESSED sections correctly. Those sections start with an Elf(32|64)_Chdr. Make sure sh_addralign is setup to be able to read such a struct directly. Likewise don't trust the alignment set on any SHF_COMPRESSED section, but always make the (raw) compressed data aligned correctly for the reading the Elf(32|64)_Chdr directly. Signed-off-by: Mark Wielaard --- libelf/ChangeLog | 7 +++++++ libelf/elf_compress.c | 4 ++-- libelf/elf_getdata.c | 10 ++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index ab078cb5..93820d19 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,10 @@ +2018-11-13 Mark Wielaard + + * elf_getdata.c (__libelf_set_rawdata_wrlock): Explicitly set the + alignment of SHF_COMPRESSED data to the alignment of ELF_T_CHDR. + * elf_compress.c (elf_compress): After compression set sh_addralign + to the alignment of ELF_T_CHDR. + 2018-11-09 Mark Wielaard * elf_compress_gnu.c (elf_compress_gnu): Use elf_getdata. diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c index d96245df..be9eeaba 100644 --- a/libelf/elf_compress.c +++ b/libelf/elf_compress.c @@ -455,14 +455,14 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags) { Elf32_Shdr *shdr = elf32_getshdr (scn); shdr->sh_size = new_size; - shdr->sh_addralign = 1; + shdr->sh_addralign = __libelf_type_align (ELFCLASS32, ELF_T_CHDR); shdr->sh_flags |= SHF_COMPRESSED; } else { Elf64_Shdr *shdr = elf64_getshdr (scn); shdr->sh_size = new_size; - shdr->sh_addralign = 1; + shdr->sh_addralign = __libelf_type_align (ELFCLASS64, ELF_T_CHDR); shdr->sh_flags |= SHF_COMPRESSED; } diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index 2043bba2..639a798e 100644 --- a/libelf/elf_getdata.c +++ b/libelf/elf_getdata.c @@ -268,9 +268,15 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn) /* First a test whether the section is valid at all. */ size_t entsize; - /* Compressed data has a header, but then compressed data. */ + /* Compressed data has a header, but then compressed data. + Make sure to set the alignment of the header explicitly, + don't trust the file alignment for the section, it is + often wrong. */ if ((flags & SHF_COMPRESSED) != 0) - entsize = 1; + { + entsize = 1; + align = __libelf_type_align (elf->class, ELF_T_CHDR); + } else if (type == SHT_HASH) { GElf_Ehdr ehdr_mem; -- cgit v1.2.3 From 22ec8efc1dd87cdc7892523457eb55990b967224 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 10 Nov 2018 23:33:03 +0100 Subject: elflint: Allow PT_GNU_EH_FRAME segment to match SHT_X86_64_UNWIND section. The gold linker might generate an .eh_frame_hdr with a SHT_X86_64_UNWIND type instead of a SHT_PROGBITS type. Signed-off-by: Mark Wielaard --- src/ChangeLog | 5 +++++ src/elflint.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 7eecfcb5..803ac95f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2018-11-10 Mark Wielaard + + * elflint.c (check_program_header): Allow PT_GNU_EH_FRAME segment + to be matched against SHT_X86_64_UNWIND section. + 2018-11-09 Mark Wielaard * strip.c (remove_debug_relocations): Check if section is gnu diff --git a/src/elflint.c b/src/elflint.c index 184ca125..810c8bd7 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -4633,8 +4633,10 @@ program header offset in ELF header and PHDR entry do not match")); any = true; shdr = gelf_getshdr (scn, &shdr_mem); if (shdr != NULL - && shdr->sh_type == (is_debuginfo - ? SHT_NOBITS : SHT_PROGBITS) + && ((is_debuginfo && shdr->sh_type == SHT_NOBITS) + || (! is_debuginfo + && (shdr->sh_type == SHT_PROGBITS + || shdr->sh_type == SHT_X86_64_UNWIND))) && elf_strptr (ebl->elf, shstrndx, shdr->sh_name) != NULL && ! strcmp (".eh_frame_hdr", elf_strptr (ebl->elf, shstrndx, shdr->sh_name))) -- cgit v1.2.3 From 422b549007f61f5577844d6e4590fdd2895fbee2 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 14 Nov 2018 13:12:24 +0100 Subject: Prepare for 0.175 Set version to 0.175 Update NEWS and elfutils.spec.in. Regenerate po/*.po files. Signed-off-by: Mark Wielaard --- NEWS | 18 + config/elfutils.spec.in | 14 + configure.ac | 2 +- po/de.po | 1162 ++++++++++++++++++++++++---------------------- po/es.po | 1169 ++++++++++++++++++++++++---------------------- po/ja.po | 1166 ++++++++++++++++++++++++---------------------- po/pl.po | 1172 ++++++++++++++++++++++++---------------------- po/uk.po | 1175 +++++++++++++++++++++++++---------------------- 8 files changed, 3113 insertions(+), 2765 deletions(-) diff --git a/NEWS b/NEWS index 0b7994e2..95fbac02 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,21 @@ +Version 0.175 + +readelf: Handle mutliple .debug_macro sections. + Recognize and parse GNU Property notes, NT_VERSION notes + and GNU Build Attribute ELF Notes. + +strip: Handle SHT_GROUP correctly. + Add strip --reloc-debug-sections-only option. + Handle relocations against GNU compressed sections. + +libdwelf: New function dwelf_elf_begin. + +libcpu: Recognize bpf jump variants BPF_JLT, BPF_JLE, BPF_JSLT and BPF_JSLE. + +backends: RISCV handles ADD/SUB relocations. Handle SHT_X86_64_UNWIND. + +Fixes CVE-2018-18310, CVE-2018-18520 and CVE-2018-18521. + Version 0.174 libelf, libdw and all tools now handle extended shnum and shstrndx correctly. diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in index 0f9687d4..e2fb0e4d 100644 --- a/config/elfutils.spec.in +++ b/config/elfutils.spec.in @@ -227,6 +227,20 @@ rm -rf ${RPM_BUILD_ROOT} %{_sysctldir}/10-default-yama-scope.conf %changelog +* Wed Nov 14 2018 Mark Wielaard 0.175-1 +- readelf: Handle mutliple .debug_macro sections. + Recognize and parse GNU Property notes, NT_VERSION notes and + GNU Build Attribute ELF Notes. +- strip: Handle SHT_GROUP correctly. + Add strip --reloc-debug-sections-only option. + Handle relocations against GNU compressed sections. +- libdwelf: New function dwelf_elf_begin. +- libcpu: Recognize bpf jump variants BPF_JLT, BPF_JLE, BPF_JSLT + and BPF_JSLE. +- backends: RISCV handles ADD/SUB relocations. + Handle SHT_X86_64_UNWIND. +- Fixes CVE-2018-18310, CVE-2018-18520 and CVE-2018-18521. + * Fri Sep 14 2018 Mark Wielaard 0.174-1 - libelf, libdw and all tools now handle extended shnum and shstrndx correctly. diff --git a/configure.ac b/configure.ac index da9f8cb4..b89b8679 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 . -AC_INIT([elfutils],[0.174],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/]) +AC_INIT([elfutils],[0.175],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/]) dnl Workaround for older autoconf < 2.64 m4_ifndef([AC_PACKAGE_URL], diff --git a/po/de.po b/po/de.po index c3aecf43..3aac9b6c 100644 --- a/po/de.po +++ b/po/de.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils VERSION\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-09-14 12:05+0200\n" +"POT-Creation-Date: 2018-11-14 13:04+0100\n" "PO-Revision-Date: 2009-06-29 15:15+0200\n" "Last-Translator: Michael Münch \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:3409 -#: src/readelf.c:11212 src/unstrip.c:2256 src/unstrip.c:2462 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 +#: src/readelf.c:11259 src/unstrip.c:2346 src/unstrip.c:2552 #, 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:2403 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 msgid "Input selection options:" msgstr "Eingabeauswahloptionen:" @@ -530,8 +530,8 @@ msgstr "Ungültige ELF Datei" msgid "No backend" msgstr "Kein Backend" -#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 -#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 +#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" @@ -542,58 +542,58 @@ msgstr "" msgid ": %#" msgstr ": %#" -#: libebl/eblobjnote.c:53 +#: libebl/eblobjnote.c:58 #, fuzzy, c-format msgid "unknown SDT version %u\n" msgstr "unbekannte Version" -#: libebl/eblobjnote.c:71 +#: libebl/eblobjnote.c:76 #, fuzzy, c-format msgid "invalid SDT probe descriptor\n" msgstr "ungültiger Datei-Deskriptor" -#: libebl/eblobjnote.c:121 +#: libebl/eblobjnote.c:126 #, c-format msgid " PC: " msgstr "" -#: libebl/eblobjnote.c:123 +#: libebl/eblobjnote.c:128 #, c-format msgid " Base: " msgstr "" -#: libebl/eblobjnote.c:125 +#: libebl/eblobjnote.c:130 #, c-format msgid " Semaphore: " msgstr "" -#: libebl/eblobjnote.c:127 +#: libebl/eblobjnote.c:132 #, c-format msgid " Provider: " msgstr "" -#: libebl/eblobjnote.c:129 +#: libebl/eblobjnote.c:134 #, c-format msgid " Name: " msgstr "" -#: libebl/eblobjnote.c:131 +#: libebl/eblobjnote.c:136 #, c-format msgid " Args: " msgstr "" -#: libebl/eblobjnote.c:141 +#: libebl/eblobjnote.c:300 #, c-format msgid " Build ID: " msgstr " Build ID: " #. A non-null terminated version string. -#: libebl/eblobjnote.c:152 +#: libebl/eblobjnote.c:311 #, c-format msgid " Linker version: %.*s\n" msgstr "" -#: libebl/eblobjnote.c:213 +#: libebl/eblobjnote.c:553 #, c-format msgid " OS: %s, ABI: " msgstr " OS: %s, ABI: " @@ -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:6123 +#: libelf/elf_error.c:87 src/readelf.c:6129 #, 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:9758 src/readelf.c:10329 -#: src/readelf.c:10430 src/readelf.c:10611 +#: libelf/elf_error.c:191 src/readelf.c:9775 src/readelf.c:10375 +#: src/readelf.c:10476 src/readelf.c:10658 #, c-format msgid "invalid data" msgstr "Ungültige Daten" @@ -1048,12 +1048,12 @@ msgstr "" msgid "no entry %s in archive\n" msgstr "Kein Eintrag %s in Archiv\n" -#: src/ar.c:472 src/ar.c:917 src/ar.c:1121 +#: src/ar.c:472 src/ar.c:923 src/ar.c:1127 #, c-format msgid "cannot create hash table" msgstr "Konnte Hash-Tabelle nicht erstellen" -#: src/ar.c:479 src/ar.c:924 src/ar.c:1130 +#: src/ar.c:479 src/ar.c:930 src/ar.c:1136 #, c-format msgid "cannot insert into hash table" msgstr "Konnte nicht in Hash-Tabelle einfügen" @@ -1063,97 +1063,97 @@ msgstr "Konnte nicht in Hash-Tabelle einfügen" msgid "cannot stat '%s'" msgstr "" -#: src/ar.c:583 +#: src/ar.c:589 #, c-format msgid "cannot read content of %s: %s" msgstr "Konnte Inhalt von %s: %s nicht lesen" -#: src/ar.c:626 +#: src/ar.c:632 #, c-format msgid "cannot open %.*s" msgstr "Konnte %.*s nicht öffnen" -#: src/ar.c:648 +#: src/ar.c:654 #, c-format msgid "failed to write %s" msgstr "Konnte %s nicht schreiben" -#: src/ar.c:660 +#: src/ar.c:666 #, c-format msgid "cannot change mode of %s" msgstr "" -#: src/ar.c:676 +#: src/ar.c:682 #, c-format msgid "cannot change modification time of %s" msgstr "Konnte Bearbeitungszeit von %s nicht ändern" -#: src/ar.c:722 +#: src/ar.c:728 #, c-format msgid "cannot rename temporary file to %.*s" msgstr "Konnte temporäre Datei nicht in %.*s umbenennen" -#: src/ar.c:758 src/ar.c:1009 src/ar.c:1410 src/ranlib.c:222 +#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222 #, c-format msgid "cannot create new file" msgstr "neue Datei konnte nicht angelegt werden" -#: src/ar.c:1212 +#: src/ar.c:1218 #, c-format msgid "position member %s not found" msgstr "" -#: src/ar.c:1222 +#: src/ar.c:1228 #, c-format msgid "%s: no entry %s in archive!\n" msgstr "%s: Kein Eintrag %s in dem Archiv!\n" -#: src/ar.c:1251 src/objdump.c:241 +#: src/ar.c:1257 src/objdump.c:241 #, c-format msgid "cannot open %s" msgstr "Konnte %s nicht öffnen" -#: src/ar.c:1256 +#: src/ar.c:1262 #, c-format msgid "cannot stat %s" msgstr "" -#: src/ar.c:1262 +#: src/ar.c:1268 #, c-format msgid "%s is no regular file" msgstr "%s ist keine reguläre Datei" -#: src/ar.c:1275 +#: src/ar.c:1281 #, c-format msgid "cannot get ELF descriptor for %s: %s\n" msgstr "" -#: src/ar.c:1295 +#: src/ar.c:1301 #, c-format msgid "cannot read %s: %s" msgstr "Konnte %s: %s nicht lesen" -#: src/ar.c:1470 +#: src/ar.c:1476 #, fuzzy, c-format msgid "cannot represent ar_date" msgstr "konnte Abschnittsdaten nicht kopieren: %s" -#: src/ar.c:1476 +#: src/ar.c:1482 #, fuzzy, c-format msgid "cannot represent ar_uid" msgstr "konnte Abschnittsdaten nicht kopieren: %s" -#: src/ar.c:1482 +#: src/ar.c:1488 #, fuzzy, c-format msgid "cannot represent ar_gid" msgstr "konnte Abschnittsdaten nicht kopieren: %s" -#: src/ar.c:1488 +#: src/ar.c:1494 #, fuzzy, c-format msgid "cannot represent ar_mode" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/ar.c:1494 +#: src/ar.c:1500 #, fuzzy, c-format msgid "cannot represent ar_size" msgstr "Konnte %s nicht öffnen" @@ -1374,8 +1374,8 @@ msgid "Invalid value '%s' for --gaps parameter." 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:517 src/strip.c:554 -#: src/unstrip.c:2052 src/unstrip.c:2081 +#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 +#: src/unstrip.c:2142 src/unstrip.c:2171 #, c-format msgid "cannot open '%s'" msgstr "'%s' kann nicht geöffnet werden" @@ -1390,7 +1390,7 @@ msgstr "" msgid "cannot create EBL descriptor for '%s'" msgstr "" -#: src/elfcmp.c:761 src/findtextrel.c:393 +#: src/elfcmp.c:761 src/findtextrel.c:394 #, c-format msgid "cannot get section header of section %zu: %s" msgstr "" @@ -1405,7 +1405,7 @@ msgstr "" msgid "cannot get relocation: %s" msgstr "" -#: src/elfcompress.c:115 src/strip.c:296 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "" @@ -1458,7 +1458,7 @@ msgid "" "rewrite the file even if no section would be (de)compressed" msgstr "" -#: src/elfcompress.c:1324 src/strip.c:90 +#: src/elfcompress.c:1324 src/strip.c:93 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "" @@ -1673,7 +1673,7 @@ msgstr "" #: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651 #: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095 -#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4401 +#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431 #, c-format msgid "section [%2d] '%s': cannot get section data\n" msgstr "" @@ -3027,194 +3027,197 @@ msgid "" "section [%2d] '%s': unknown core file note type % at offset %zu\n" msgstr "" -#: src/elflint.c:4344 +#: src/elflint.c:4370 #, c-format -msgid "phdr[%d]: unknown object file note type % at offset %zu\n" +msgid "" +"phdr[%d]: unknown object file note type % with owner name '%s' at " +"offset %zu\n" msgstr "" -#: src/elflint.c:4348 +#: src/elflint.c:4375 #, c-format msgid "" -"section [%2d] '%s': unknown object file note type % at offset %zu\n" +"section [%2d] '%s': unknown object file note type % with owner name " +"'%s' at offset %zu\n" msgstr "" -#: src/elflint.c:4365 +#: src/elflint.c:4394 #, c-format msgid "phdr[%d]: no note entries defined for the type of file\n" msgstr "" -#: src/elflint.c:4384 +#: src/elflint.c:4414 #, c-format msgid "phdr[%d]: cannot get content of note section: %s\n" msgstr "" -#: src/elflint.c:4387 +#: src/elflint.c:4417 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "" -#: src/elflint.c:4408 +#: src/elflint.c:4438 #, c-format msgid "section [%2d] '%s': no note entries defined for the type of file\n" msgstr "" -#: src/elflint.c:4415 +#: src/elflint.c:4445 #, c-format msgid "section [%2d] '%s': cannot get content of note section\n" msgstr "" -#: src/elflint.c:4418 +#: src/elflint.c:4448 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "" -#: src/elflint.c:4436 +#: src/elflint.c:4466 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" msgstr "" -#: src/elflint.c:4451 +#: src/elflint.c:4481 #, c-format msgid "cannot get program header entry %d: %s\n" msgstr "" -#: src/elflint.c:4460 +#: src/elflint.c:4490 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" -#: src/elflint.c:4471 +#: src/elflint.c:4501 #, c-format msgid "more than one INTERP entry in program header\n" msgstr "" -#: src/elflint.c:4479 +#: src/elflint.c:4509 #, c-format msgid "more than one TLS entry in program header\n" msgstr "" -#: src/elflint.c:4486 +#: src/elflint.c:4516 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "" -#: src/elflint.c:4500 +#: src/elflint.c:4530 #, c-format msgid "dynamic section reference in program header has wrong offset\n" msgstr "" -#: src/elflint.c:4503 +#: src/elflint.c:4533 #, c-format msgid "dynamic section size mismatch in program and section header\n" msgstr "" -#: src/elflint.c:4513 +#: src/elflint.c:4543 #, c-format msgid "more than one GNU_RELRO entry in program header\n" msgstr "" -#: src/elflint.c:4534 +#: src/elflint.c:4564 #, c-format msgid "loadable segment GNU_RELRO applies to is not writable\n" msgstr "" -#: src/elflint.c:4545 +#: src/elflint.c:4575 #, c-format msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" msgstr "" -#: src/elflint.c:4552 +#: src/elflint.c:4582 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" msgstr "" -#: src/elflint.c:4561 src/elflint.c:4584 +#: src/elflint.c:4591 src/elflint.c:4614 #, c-format msgid "%s segment not contained in a loaded segment\n" msgstr "" -#: src/elflint.c:4590 +#: src/elflint.c:4620 #, c-format msgid "program header offset in ELF header and PHDR entry do not match" msgstr "" -#: src/elflint.c:4615 +#: src/elflint.c:4647 #, c-format msgid "call frame search table reference in program header has wrong offset\n" msgstr "" -#: src/elflint.c:4618 +#: src/elflint.c:4650 #, c-format msgid "call frame search table size mismatch in program and section header\n" msgstr "" -#: src/elflint.c:4631 +#: src/elflint.c:4663 #, c-format msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" msgstr "" -#: src/elflint.c:4639 +#: src/elflint.c:4671 #, c-format msgid "call frame search table must be allocated\n" msgstr "" -#: src/elflint.c:4642 +#: src/elflint.c:4674 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "" -#: src/elflint.c:4646 +#: src/elflint.c:4678 #, c-format msgid "call frame search table must not be writable\n" msgstr "" -#: src/elflint.c:4649 +#: src/elflint.c:4681 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "" -#: src/elflint.c:4654 +#: src/elflint.c:4686 #, c-format msgid "call frame search table must not be executable\n" msgstr "" -#: src/elflint.c:4657 +#: src/elflint.c:4689 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "" -#: src/elflint.c:4668 +#: src/elflint.c:4700 #, c-format msgid "program header entry %d: file size greater than memory size\n" msgstr "" -#: src/elflint.c:4675 +#: src/elflint.c:4707 #, c-format msgid "program header entry %d: alignment not a power of 2\n" msgstr "" -#: src/elflint.c:4678 +#: src/elflint.c:4710 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " "alignment\n" msgstr "" -#: src/elflint.c:4691 +#: src/elflint.c:4723 #, c-format msgid "" "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " "program header entry" msgstr "" -#: src/elflint.c:4725 +#: src/elflint.c:4757 #, c-format msgid "cannot read ELF header: %s\n" msgstr "" -#: src/elflint.c:4751 +#: src/elflint.c:4783 #, c-format msgid "text relocation flag set but not needed\n" msgstr "" @@ -3238,7 +3241,7 @@ msgstr "" #. Strings for arguments in help texts. #: src/findtextrel.c:74 src/nm.c:108 src/objdump.c:71 src/size.c:80 -#: src/strings.c:87 src/strip.c:98 +#: src/strings.c:87 src/strip.c:101 msgid "[FILE...]" msgstr "" @@ -3257,73 +3260,73 @@ msgstr "" msgid "getting get section header of section %zu: %s" msgstr "" -#: src/findtextrel.c:276 +#: src/findtextrel.c:277 #, c-format msgid "cannot read dynamic section: %s" msgstr "" -#: src/findtextrel.c:297 +#: src/findtextrel.c:298 #, c-format msgid "no text relocations reported in '%s'" msgstr "" -#: src/findtextrel.c:309 +#: src/findtextrel.c:310 #, c-format msgid "while reading ELF file" msgstr "" -#: src/findtextrel.c:313 +#: src/findtextrel.c:314 #, fuzzy, c-format msgid "cannot get program header count: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/findtextrel.c:324 src/findtextrel.c:341 +#: src/findtextrel.c:325 src/findtextrel.c:342 #, fuzzy, c-format msgid "cannot get program header index at offset %zd: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/findtextrel.c:405 +#: src/findtextrel.c:406 #, c-format msgid "cannot get symbol table section %zu in '%s': %s" msgstr "" -#: src/findtextrel.c:425 src/findtextrel.c:448 +#: src/findtextrel.c:427 src/findtextrel.c:450 #, c-format msgid "cannot get relocation at index %d in section %zu in '%s': %s" msgstr "" -#: src/findtextrel.c:514 +#: src/findtextrel.c:516 #, c-format msgid "%s not compiled with -fpic/-fPIC\n" msgstr "" -#: src/findtextrel.c:567 +#: src/findtextrel.c:570 #, c-format msgid "" "the file containing the function '%s' is not compiled with -fpic/-fPIC\n" msgstr "" -#: src/findtextrel.c:574 src/findtextrel.c:594 +#: src/findtextrel.c:577 src/findtextrel.c:597 #, c-format msgid "" "the file containing the function '%s' might not be compiled with -fpic/-" "fPIC\n" msgstr "" -#: src/findtextrel.c:582 +#: src/findtextrel.c:585 #, c-format msgid "" "either the file containing the function '%s' or the file containing the " "function '%s' is not compiled with -fpic/-fPIC\n" msgstr "" -#: src/findtextrel.c:602 +#: src/findtextrel.c:605 #, c-format msgid "" "a relocation modifies memory at offset %llu in a write-protected segment\n" msgstr "" -#: src/nm.c:66 src/strip.c:69 +#: src/nm.c:66 src/strip.c:70 msgid "Output selection:" msgstr "" @@ -3390,7 +3393,7 @@ msgstr "Kennzeichne schwache Symbole" msgid "Print size of defined symbols" msgstr "Zeige Grösse der definierten Symbole" -#: src/nm.c:91 src/size.c:68 src/strip.c:74 src/unstrip.c:73 +#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "Ausgabeoptionen:" @@ -3420,18 +3423,18 @@ msgstr "" msgid "Output formatting" msgstr "Ausgabeformat:" -#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:130 +#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:133 #, fuzzy, c-format 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:2505 +#: src/strip.c:2747 #, c-format msgid "while closing '%s'" msgstr "beim Schliessen von '%s'" -#: src/nm.c:403 src/objdump.c:280 src/strip.c:442 +#: src/nm.c:403 src/objdump.c:280 src/strip.c:797 #, c-format msgid "%s: File format not recognized" msgstr "%s: Dateiformat nicht erkannt" @@ -3472,12 +3475,12 @@ 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:1410 src/readelf.c:1558 src/readelf.c:1759 src/readelf.c:1965 -#: src/readelf.c:2155 src/readelf.c:2333 src/readelf.c:2409 src/readelf.c:2667 -#: src/readelf.c:2743 src/readelf.c:2830 src/readelf.c:3428 src/readelf.c:3478 -#: src/readelf.c:3541 src/readelf.c:11044 src/readelf.c:12216 -#: src/readelf.c:12419 src/readelf.c:12487 src/size.c:396 src/size.c:465 -#: src/strip.c:571 +#: 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:11091 src/readelf.c:12276 +#: src/readelf.c:12480 src/readelf.c:12548 src/size.c:398 src/size.c:467 +#: src/strip.c:1038 #, c-format msgid "cannot get section header string table index" msgstr "" @@ -3569,11 +3572,11 @@ msgstr "Keine Operation angegeben.\n" msgid "while close `%s'" msgstr "" -#: src/objdump.c:363 src/readelf.c:2060 src/readelf.c:2252 +#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 msgid "INVALID SYMBOL" msgstr "" -#: src/objdump.c:378 src/readelf.c:2094 src/readelf.c:2288 +#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 msgid "INVALID SECTION" msgstr "" @@ -3773,21 +3776,21 @@ msgstr "" msgid "cannot generate Elf descriptor: %s" msgstr "konnte Elf-Deskriptor nicht erzeugen: %s" -#: src/readelf.c:596 src/readelf.c:924 src/strip.c:640 +#: src/readelf.c:596 src/readelf.c:923 src/strip.c:1133 #, c-format msgid "cannot determine number of sections: %s" msgstr "" -#: src/readelf.c:614 src/readelf.c:1226 src/readelf.c:1434 +#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 #, c-format msgid "cannot get section: %s" msgstr "" -#: src/readelf.c:623 src/readelf.c:1233 src/readelf.c:1442 src/readelf.c:12439 -#: src/unstrip.c:394 src/unstrip.c:425 src/unstrip.c:474 src/unstrip.c:584 -#: src/unstrip.c:605 src/unstrip.c:642 src/unstrip.c:846 src/unstrip.c:1138 -#: src/unstrip.c:1330 src/unstrip.c:1391 src/unstrip.c:1564 src/unstrip.c:1679 -#: src/unstrip.c:1819 src/unstrip.c:1914 +#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12500 +#: 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 #, c-format msgid "cannot get section header: %s" msgstr "" @@ -3797,8 +3800,8 @@ msgstr "" msgid "cannot get section name" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:640 src/readelf.c:6533 src/readelf.c:10317 src/readelf.c:10419 -#: src/readelf.c:10596 +#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10363 src/readelf.c:10465 +#: src/readelf.c:10643 #, c-format msgid "cannot get %s content: %s" msgstr "" @@ -3848,274 +3851,279 @@ msgstr "Konnte '%s' nicht lesen: %s" msgid "No such section '%s' in '%s'" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:909 +#: src/readelf.c:908 #, c-format msgid "cannot read ELF header: %s" msgstr "" -#: src/readelf.c:917 +#: src/readelf.c:916 #, c-format msgid "cannot create EBL handle" msgstr "" -#: src/readelf.c:930 +#: src/readelf.c:929 #, fuzzy, c-format msgid "cannot determine number of program headers: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:1020 +#: src/readelf.c:961 +#, fuzzy, c-format +msgid "cannot read ELF: %s" +msgstr "Konnte %s: %s nicht lesen" + +#: src/readelf.c:1022 msgid "NONE (None)" msgstr "" -#: src/readelf.c:1021 +#: src/readelf.c:1023 msgid "REL (Relocatable file)" msgstr "" -#: src/readelf.c:1022 +#: src/readelf.c:1024 msgid "EXEC (Executable file)" msgstr "" -#: src/readelf.c:1023 +#: src/readelf.c:1025 msgid "DYN (Shared object file)" msgstr "" -#: src/readelf.c:1024 +#: src/readelf.c:1026 msgid "CORE (Core file)" msgstr "" -#: src/readelf.c:1029 +#: src/readelf.c:1031 #, c-format msgid "OS Specific: (%x)\n" msgstr "" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1031 +#: src/readelf.c:1033 #, c-format msgid "Processor Specific: (%x)\n" msgstr "" -#: src/readelf.c:1041 +#: src/readelf.c:1043 msgid "" "ELF Header:\n" " Magic: " msgstr "" -#: src/readelf.c:1045 +#: src/readelf.c:1047 #, c-format msgid "" "\n" " Class: %s\n" msgstr "" -#: src/readelf.c:1050 +#: src/readelf.c:1052 #, fuzzy, c-format msgid " Data: %s\n" msgstr " Daten: %s\n" -#: src/readelf.c:1056 +#: src/readelf.c:1058 #, c-format msgid " Ident Version: %hhd %s\n" msgstr "" -#: src/readelf.c:1058 src/readelf.c:1075 +#: src/readelf.c:1060 src/readelf.c:1077 msgid "(current)" msgstr "(aktuell)" -#: src/readelf.c:1062 +#: src/readelf.c:1064 #, c-format msgid " OS/ABI: %s\n" msgstr "" -#: src/readelf.c:1065 +#: src/readelf.c:1067 #, c-format msgid " ABI Version: %hhd\n" msgstr "" -#: src/readelf.c:1068 +#: src/readelf.c:1070 msgid " Type: " msgstr " Typ: " -#: src/readelf.c:1071 +#: src/readelf.c:1073 #, c-format msgid " Machine: %s\n" msgstr "" -#: src/readelf.c:1073 +#: src/readelf.c:1075 #, c-format msgid " Version: %d %s\n" msgstr "" -#: src/readelf.c:1077 +#: src/readelf.c:1079 #, c-format msgid " Entry point address: %#\n" msgstr "" -#: src/readelf.c:1080 +#: src/readelf.c:1082 #, c-format msgid " Start of program headers: % %s\n" msgstr "" -#: src/readelf.c:1081 src/readelf.c:1084 +#: src/readelf.c:1083 src/readelf.c:1086 msgid "(bytes into file)" msgstr "" -#: src/readelf.c:1083 +#: src/readelf.c:1085 #, c-format msgid " Start of section headers: % %s\n" msgstr "" -#: src/readelf.c:1086 +#: src/readelf.c:1088 #, c-format msgid " Flags: %s\n" msgstr "" -#: src/readelf.c:1089 +#: src/readelf.c:1091 #, c-format msgid " Size of this header: % %s\n" msgstr "" -#: src/readelf.c:1090 src/readelf.c:1093 src/readelf.c:1110 +#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 msgid "(bytes)" msgstr "(Bytes)" -#: src/readelf.c:1092 +#: src/readelf.c:1094 #, c-format msgid " Size of program header entries: % %s\n" msgstr "" -#: src/readelf.c:1095 +#: src/readelf.c:1097 #, c-format msgid " Number of program headers entries: %" msgstr "" -#: src/readelf.c:1102 +#: src/readelf.c:1104 #, c-format msgid " (% in [0].sh_info)" msgstr "" -#: src/readelf.c:1105 src/readelf.c:1122 src/readelf.c:1136 +#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 msgid " ([0] not available)" msgstr "" -#: src/readelf.c:1109 +#: src/readelf.c:1111 #, c-format msgid " Size of section header entries: % %s\n" msgstr "" -#: src/readelf.c:1112 +#: src/readelf.c:1114 #, c-format msgid " Number of section headers entries: %" msgstr "" -#: src/readelf.c:1119 +#: src/readelf.c:1121 #, c-format msgid " (% in [0].sh_size)" msgstr "" #. We managed to get the zeroth section. -#: src/readelf.c:1132 +#: src/readelf.c:1134 #, c-format msgid " (% in [0].sh_link)" msgstr "" -#: src/readelf.c:1140 +#: src/readelf.c:1142 #, c-format msgid "" " Section header string table index: XINDEX%s\n" "\n" msgstr "" -#: src/readelf.c:1144 +#: src/readelf.c:1146 #, c-format msgid "" " Section header string table index: %\n" "\n" msgstr "" -#: src/readelf.c:1191 src/readelf.c:1399 +#: src/readelf.c:1193 src/readelf.c:1401 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:1194 +#: src/readelf.c:1196 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" "\n" msgstr " %s: %\n" -#: src/readelf.c:1203 +#: src/readelf.c:1205 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:1206 +#: src/readelf.c:1208 msgid "Section Headers:" msgstr "" -#: src/readelf.c:1209 +#: src/readelf.c:1211 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" msgstr "" -#: src/readelf.c:1211 +#: src/readelf.c:1213 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" msgstr "" -#: src/readelf.c:1216 +#: src/readelf.c:1218 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1218 +#: src/readelf.c:1220 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1294 +#: src/readelf.c:1296 #, c-format msgid "bad compression header for section %zd: %s" msgstr "" -#: src/readelf.c:1305 +#: src/readelf.c:1307 #, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "" -#: src/readelf.c:1323 +#: src/readelf.c:1325 msgid "Program Headers:" msgstr "Programm-Köpfe:" -#: src/readelf.c:1325 +#: src/readelf.c:1327 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" -#: src/readelf.c:1328 +#: src/readelf.c:1330 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" msgstr "" -#: src/readelf.c:1385 +#: src/readelf.c:1387 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "" -#: src/readelf.c:1412 +#: src/readelf.c:1414 msgid "" "\n" " Section to Segment mapping:\n" " Segment Sections..." msgstr "" -#: src/readelf.c:1423 src/unstrip.c:1973 src/unstrip.c:2015 src/unstrip.c:2022 +#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 #, c-format msgid "cannot get program header: %s" msgstr "" -#: src/readelf.c:1566 +#: src/readelf.c:1571 #, c-format msgid "" "\n" @@ -4126,7 +4134,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1571 +#: src/readelf.c:1576 #, c-format msgid "" "\n" @@ -4137,31 +4145,31 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1579 +#: src/readelf.c:1584 msgid "" msgstr "" -#: src/readelf.c:1593 +#: src/readelf.c:1598 msgid "" msgstr "" -#: src/readelf.c:1616 src/readelf.c:2343 src/readelf.c:3444 src/readelf.c:12310 -#: src/readelf.c:12317 src/readelf.c:12361 src/readelf.c:12368 +#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12371 +#: src/readelf.c:12378 src/readelf.c:12422 src/readelf.c:12429 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 +#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:1765 src/readelf.c:2415 src/readelf.c:2673 src/readelf.c:2749 -#: src/readelf.c:3053 src/readelf.c:3127 src/readelf.c:5322 +#: 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 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:1768 +#: src/readelf.c:1773 #, c-format msgid "" "\n" @@ -4174,43 +4182,43 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1778 +#: src/readelf.c:1783 msgid " Type Value\n" msgstr "" -#: src/readelf.c:1802 +#: src/readelf.c:1807 #, c-format msgid "Shared library: [%s]\n" msgstr "" -#: src/readelf.c:1807 +#: src/readelf.c:1812 #, c-format msgid "Library soname: [%s]\n" msgstr "" -#: src/readelf.c:1812 +#: src/readelf.c:1817 #, c-format msgid "Library rpath: [%s]\n" msgstr "" -#: src/readelf.c:1817 +#: src/readelf.c:1822 #, c-format msgid "Library runpath: [%s]\n" msgstr "" -#: src/readelf.c:1837 +#: src/readelf.c:1842 #, c-format msgid "% (bytes)\n" msgstr "" -#: src/readelf.c:1950 src/readelf.c:2140 +#: src/readelf.c:1955 src/readelf.c:2145 #, c-format msgid "" "\n" "Invalid symbol table at offset %#0\n" msgstr "" -#: src/readelf.c:1968 src/readelf.c:2158 +#: src/readelf.c:1973 src/readelf.c:2163 #, c-format msgid "" "\n" @@ -4229,7 +4237,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:1983 src/readelf.c:2173 +#: src/readelf.c:1988 src/readelf.c:2178 #, c-format msgid "" "\n" @@ -4240,29 +4248,29 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1993 +#: src/readelf.c:1998 msgid " Offset Type Value Name\n" msgstr "" -#: src/readelf.c:1995 +#: src/readelf.c:2000 msgid " Offset Type Value Name\n" msgstr "" -#: src/readelf.c:2048 src/readelf.c:2059 src/readelf.c:2072 src/readelf.c:2093 -#: src/readelf.c:2105 src/readelf.c:2239 src/readelf.c:2251 src/readelf.c:2265 -#: src/readelf.c:2287 src/readelf.c:2300 +#: 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 msgid "" msgstr "" -#: src/readelf.c:2183 +#: src/readelf.c:2188 msgid " Offset Type Value Addend Name\n" msgstr "" -#: src/readelf.c:2185 +#: src/readelf.c:2190 msgid " Offset Type Value Addend Name\n" msgstr "" -#: src/readelf.c:2423 +#: src/readelf.c:2428 #, c-format msgid "" "\n" @@ -4273,40 +4281,40 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2428 +#: src/readelf.c:2433 #, 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:2436 +#: src/readelf.c:2441 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: src/readelf.c:2438 +#: src/readelf.c:2443 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: src/readelf.c:2458 +#: src/readelf.c:2463 #, c-format msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" msgstr "" -#: src/readelf.c:2546 +#: src/readelf.c:2551 #, c-format msgid "bad dynamic symbol" msgstr "" -#: src/readelf.c:2628 +#: src/readelf.c:2633 msgid "none" msgstr "keine" -#: src/readelf.c:2645 +#: src/readelf.c:2650 msgid "| " msgstr "| " -#: src/readelf.c:2676 +#: src/readelf.c:2681 #, c-format msgid "" "\n" @@ -4319,17 +4327,17 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2697 +#: src/readelf.c:2702 #, fuzzy, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Version: %hu Datei: %s Cnt: %hu\n" -#: src/readelf.c:2710 +#: src/readelf.c:2715 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Name: %s Flags: %s Version: %hu\n" -#: src/readelf.c:2753 +#: src/readelf.c:2758 #, c-format msgid "" "\n" @@ -4342,18 +4350,18 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2781 +#: src/readelf.c:2786 #, c-format msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" msgstr "" -#: src/readelf.c:2796 +#: src/readelf.c:2801 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr "" #. Print the header. -#: src/readelf.c:3057 +#: src/readelf.c:3062 #, c-format msgid "" "\n" @@ -4366,15 +4374,15 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3085 +#: src/readelf.c:3090 msgid " 0 *local* " msgstr " 0 *lokal* " -#: src/readelf.c:3090 +#: src/readelf.c:3095 msgid " 1 *global* " msgstr " 1 *global* " -#: src/readelf.c:3132 +#: src/readelf.c:3137 #, c-format msgid "" "\n" @@ -4389,66 +4397,66 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3154 +#: src/readelf.c:3159 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr "" -#: src/readelf.c:3156 +#: src/readelf.c:3161 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3163 +#: src/readelf.c:3168 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3176 +#: src/readelf.c:3181 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" "\t\t\t unsuccessful lookup: %f\n" msgstr "" -#: src/readelf.c:3194 src/readelf.c:3258 src/readelf.c:3324 +#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 #, c-format msgid "cannot get data for section %d: %s" msgstr "" -#: src/readelf.c:3202 +#: src/readelf.c:3207 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3231 +#: src/readelf.c:3236 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3266 +#: src/readelf.c:3271 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3297 +#: src/readelf.c:3302 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3333 +#: src/readelf.c:3338 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3400 +#: src/readelf.c:3405 #, c-format msgid "" " Symbol Bias: %u\n" " Bitmask Size: %zu bytes %%% bits set 2nd hash shift: %u\n" msgstr "" -#: src/readelf.c:3489 +#: src/readelf.c:3494 #, c-format msgid "" "\n" @@ -4459,13 +4467,13 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3503 +#: src/readelf.c:3508 msgid "" " Library Time Stamp Checksum Version " "Flags" msgstr "" -#: src/readelf.c:3553 +#: src/readelf.c:3558 #, c-format msgid "" "\n" @@ -4473,102 +4481,102 @@ msgid "" "%#0:\n" msgstr "" -#: src/readelf.c:3570 +#: src/readelf.c:3575 msgid " Owner Size\n" msgstr "" -#: src/readelf.c:3599 +#: src/readelf.c:3604 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3638 +#: src/readelf.c:3643 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3643 +#: src/readelf.c:3648 #, c-format msgid " File: %11\n" msgstr " File: %11\n" -#: src/readelf.c:3692 +#: src/readelf.c:3697 #, c-format msgid " %s: %, %s\n" msgstr " %s: %, %s\n" -#: src/readelf.c:3695 +#: src/readelf.c:3700 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3698 +#: src/readelf.c:3703 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3708 +#: src/readelf.c:3713 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3711 +#: src/readelf.c:3716 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3781 +#: src/readelf.c:3786 #, fuzzy, c-format msgid "sprintf failure" msgstr "mprotect fehlgeschlagen" -#: src/readelf.c:4263 +#: src/readelf.c:4268 msgid "empty block" msgstr "" -#: src/readelf.c:4266 +#: src/readelf.c:4271 #, c-format msgid "%zu byte block:" msgstr "" -#: src/readelf.c:4744 +#: src/readelf.c:4749 #, c-format msgid "%*s[%2] %s \n" msgstr "" -#: src/readelf.c:4808 +#: src/readelf.c:4813 #, c-format msgid "%s %# used with different address sizes" msgstr "" -#: src/readelf.c:4815 +#: src/readelf.c:4820 #, c-format msgid "%s %# used with different offset sizes" msgstr "" -#: src/readelf.c:4822 +#: src/readelf.c:4827 #, c-format msgid "%s %# used with different base addresses" msgstr "" -#: src/readelf.c:4829 +#: src/readelf.c:4834 #, c-format msgid "%s %# used with different attribute %s and %s" msgstr "" -#: src/readelf.c:4926 +#: src/readelf.c:4931 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:4934 +#: src/readelf.c:4939 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr "" -#: src/readelf.c:5012 +#: src/readelf.c:5017 #, c-format msgid "" "\n" @@ -4576,79 +4584,79 @@ msgid "" " [ Code]\n" msgstr "" -#: src/readelf.c:5020 +#: src/readelf.c:5025 #, c-format msgid "" "\n" "Abbreviation section at offset %:\n" msgstr "" -#: src/readelf.c:5033 +#: src/readelf.c:5038 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr "" -#: src/readelf.c:5049 +#: src/readelf.c:5054 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr "" -#: src/readelf.c:5082 src/readelf.c:5391 src/readelf.c:5557 src/readelf.c:5942 -#: src/readelf.c:6543 src/readelf.c:8184 src/readelf.c:8854 src/readelf.c:9290 -#: src/readelf.c:9534 src/readelf.c:9699 src/readelf.c:10060 -#: src/readelf.c:10118 +#: 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:8870 src/readelf.c:9306 +#: src/readelf.c:9551 src/readelf.c:9717 src/readelf.c:10104 +#: src/readelf.c:10164 #, c-format msgid "" "\n" "DWARF section [%2zu] '%s' at offset %#:\n" msgstr "" -#: src/readelf.c:5095 +#: src/readelf.c:5100 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:5195 src/readelf.c:5219 src/readelf.c:5602 src/readelf.c:8899 +#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8915 #, fuzzy, c-format msgid " Length: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5197 src/readelf.c:5234 src/readelf.c:5615 src/readelf.c:8912 +#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8928 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5198 src/readelf.c:5243 src/readelf.c:5624 src/readelf.c:8921 +#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8937 #, fuzzy, c-format msgid " Address size: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5200 src/readelf.c:5253 src/readelf.c:5634 src/readelf.c:8931 +#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8947 #, fuzzy, c-format msgid " Segment size: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5238 src/readelf.c:5619 src/readelf.c:8916 src/readelf.c:10250 +#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8932 src/readelf.c:10296 #, fuzzy, c-format msgid "Unknown version" msgstr "unbekannte Version" -#: src/readelf.c:5248 src/readelf.c:5461 src/readelf.c:5629 src/readelf.c:8926 +#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8942 #, fuzzy, c-format msgid "unsupported address size" msgstr "Kein Adress-Wert" -#: src/readelf.c:5259 src/readelf.c:5472 src/readelf.c:5639 src/readelf.c:8936 +#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8952 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5312 src/readelf.c:5386 +#: src/readelf.c:5317 src/readelf.c:5391 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "" -#: src/readelf.c:5327 +#: src/readelf.c:5332 #, c-format msgid "" "\n" @@ -4659,241 +4667,241 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:5358 +#: src/readelf.c:5363 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5360 +#: src/readelf.c:5365 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" msgstr "" -#: src/readelf.c:5404 src/readelf.c:8211 +#: src/readelf.c:5409 src/readelf.c:8226 #, c-format msgid "" "\n" "Table at offset %zu:\n" msgstr "" -#: src/readelf.c:5408 src/readelf.c:5583 src/readelf.c:6567 src/readelf.c:8222 -#: src/readelf.c:8880 +#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 +#: src/readelf.c:8896 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "" -#: src/readelf.c:5424 +#: src/readelf.c:5429 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5436 +#: src/readelf.c:5441 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5440 +#: src/readelf.c:5445 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5451 +#: src/readelf.c:5456 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5457 +#: src/readelf.c:5462 #, c-format msgid " Address size: %6\n" msgstr "" -#: src/readelf.c:5468 +#: src/readelf.c:5473 #, c-format msgid "" " Segment size: %6\n" "\n" msgstr "" -#: src/readelf.c:5523 +#: src/readelf.c:5528 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5566 +#: src/readelf.c:5572 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:5589 src/readelf.c:8886 +#: src/readelf.c:5595 src/readelf.c:8902 #, fuzzy, c-format msgid "" "Table at Offset 0x%:\n" "\n" msgstr " %s: %\n" -#: src/readelf.c:5644 src/readelf.c:8941 +#: src/readelf.c:5650 src/readelf.c:8957 #, fuzzy, c-format msgid " Offset entries: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5660 src/readelf.c:8957 +#: src/readelf.c:5666 src/readelf.c:8973 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5662 src/readelf.c:8959 +#: src/readelf.c:5668 src/readelf.c:8975 #, c-format msgid " CU [%6] base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8965 +#: src/readelf.c:5674 src/readelf.c:8981 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5679 src/readelf.c:8976 +#: src/readelf.c:5685 src/readelf.c:8992 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5683 src/readelf.c:8980 +#: src/readelf.c:5689 src/readelf.c:8996 #, fuzzy, c-format msgid " Offsets starting at 0x%:\n" msgstr " %s: %\n" -#: src/readelf.c:5735 +#: src/readelf.c:5741 #, fuzzy, c-format msgid "invalid range list data" msgstr "Ungültige Daten" -#: src/readelf.c:5920 src/readelf.c:9268 +#: src/readelf.c:5926 src/readelf.c:9284 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:5937 +#: src/readelf.c:5943 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "" -#: src/readelf.c:5973 src/readelf.c:9323 +#: src/readelf.c:5979 src/readelf.c:9339 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5975 src/readelf.c:9325 +#: src/readelf.c:5981 src/readelf.c:9341 #, c-format msgid "" "\n" " CU [%6] base: " msgstr "" -#: src/readelf.c:5984 src/readelf.c:9351 src/readelf.c:9377 +#: src/readelf.c:5990 src/readelf.c:9367 src/readelf.c:9393 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:6005 src/readelf.c:9457 +#: src/readelf.c:6011 src/readelf.c:9473 #, c-format msgid "" " [%6tx] base address\n" " " msgstr "" -#: src/readelf.c:6013 src/readelf.c:9465 +#: src/readelf.c:6019 src/readelf.c:9481 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:6268 +#: src/readelf.c:6274 msgid " \n" msgstr "" -#: src/readelf.c:6521 +#: src/readelf.c:6527 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "ELF Kopf konnte nicht ausgelesen werden" -#: src/readelf.c:6539 +#: src/readelf.c:6545 #, c-format msgid "" "\n" "Call frame information section [%2zu] '%s' at offset %#:\n" msgstr "" -#: src/readelf.c:6589 +#: src/readelf.c:6595 #, c-format msgid "" "\n" " [%6tx] Zero terminator\n" msgstr "" -#: src/readelf.c:6682 src/readelf.c:6836 +#: src/readelf.c:6696 src/readelf.c:6850 #, fuzzy, c-format msgid "invalid augmentation length" msgstr "ungültige Abschnittsausrichtung" -#: src/readelf.c:6697 +#: src/readelf.c:6711 msgid "FDE address encoding: " msgstr "" -#: src/readelf.c:6703 +#: src/readelf.c:6717 msgid "LSDA pointer encoding: " msgstr "" -#: src/readelf.c:6813 +#: src/readelf.c:6827 #, c-format msgid " (offset: %#)" msgstr "" -#: src/readelf.c:6820 +#: src/readelf.c:6834 #, c-format msgid " (end offset: %#)" msgstr "" -#: src/readelf.c:6857 +#: src/readelf.c:6871 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr "" -#: src/readelf.c:6942 +#: src/readelf.c:6956 #, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "" -#: src/readelf.c:6952 +#: src/readelf.c:6966 #, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "" -#: src/readelf.c:6974 +#: src/readelf.c:6988 #, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "" -#: src/readelf.c:7307 +#: src/readelf.c:7321 #, fuzzy, c-format msgid "invalid file (%): %s" msgstr "Ungültige Datei" -#: src/readelf.c:7311 +#: src/readelf.c:7325 #, fuzzy, c-format msgid "no srcfiles for CU [%]" msgstr "unbekannte Form %" -#: src/readelf.c:7315 +#: src/readelf.c:7329 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "ELF Kopf konnte nicht ausgelesen werden" -#: src/readelf.c:7538 +#: src/readelf.c:7552 #, c-format msgid "" "\n" @@ -4901,12 +4909,12 @@ msgid "" " [Offset]\n" msgstr "" -#: src/readelf.c:7588 +#: src/readelf.c:7602 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:7607 +#: src/readelf.c:7621 #, c-format msgid "" " Type unit at offset %:\n" @@ -4915,7 +4923,7 @@ msgid "" " Type signature: %#, Type offset: %# [%]\n" msgstr "" -#: src/readelf.c:7619 +#: src/readelf.c:7633 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -4923,37 +4931,37 @@ msgid "" "%, Offset size: %\n" msgstr "" -#: src/readelf.c:7629 src/readelf.c:7792 +#: src/readelf.c:7643 src/readelf.c:7806 #, c-format msgid " Unit type: %s (%)" msgstr "" -#: src/readelf.c:7656 +#: src/readelf.c:7670 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7685 +#: src/readelf.c:7699 #, c-format msgid "cannot get DIE offset: %s" msgstr "" -#: src/readelf.c:7694 +#: src/readelf.c:7708 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:7732 +#: src/readelf.c:7746 #, c-format msgid "cannot get next DIE: %s\n" msgstr "" -#: src/readelf.c:7740 +#: src/readelf.c:7754 #, c-format msgid "cannot get next DIE: %s" msgstr "" -#: src/readelf.c:7784 +#: src/readelf.c:7798 #, c-format msgid "" " Split compilation unit at offset %:\n" @@ -4961,7 +4969,7 @@ msgid "" "%, Offset size: %\n" msgstr "" -#: src/readelf.c:7835 +#: src/readelf.c:7850 #, c-format msgid "" "\n" @@ -4969,18 +4977,18 @@ msgid "" "\n" msgstr "" -#: src/readelf.c:8167 +#: src/readelf.c:8182 #, fuzzy, c-format msgid "unknown form: %s" msgstr "unbekannte Form %" -#: src/readelf.c:8198 +#: src/readelf.c:8213 #, c-format msgid "cannot get line data section data: %s" msgstr "" #. Print what we got so far. -#: src/readelf.c:8300 +#: src/readelf.c:8315 #, c-format msgid "" "\n" @@ -4999,171 +5007,171 @@ msgid "" "Opcodes:\n" msgstr "" -#: src/readelf.c:8322 +#: src/readelf.c:8337 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:8330 +#: src/readelf.c:8345 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "Kein Adress-Wert" -#: src/readelf.c:8338 +#: src/readelf.c:8353 #, c-format msgid "cannot handle segment selector size: %u\n" msgstr "" -#: src/readelf.c:8348 +#: src/readelf.c:8363 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "" -#: src/readelf.c:8363 +#: src/readelf.c:8378 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:8374 +#: src/readelf.c:8389 msgid "" "\n" "Directory table:" msgstr "" -#: src/readelf.c:8380 src/readelf.c:8455 +#: src/readelf.c:8395 src/readelf.c:8470 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8449 +#: src/readelf.c:8464 msgid "" "\n" "File name table:" msgstr "" -#: src/readelf.c:8510 +#: src/readelf.c:8525 msgid " Entry Dir Time Size Name" msgstr "" -#: src/readelf.c:8545 +#: src/readelf.c:8560 msgid "" "\n" "Line number statements:" msgstr "" -#: src/readelf.c:8568 +#: src/readelf.c:8583 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "" -#: src/readelf.c:8602 +#: src/readelf.c:8617 #, c-format msgid " special opcode %u: address+%u = " msgstr "" -#: src/readelf.c:8606 +#: src/readelf.c:8621 #, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr "" -#: src/readelf.c:8609 +#: src/readelf.c:8624 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8627 +#: src/readelf.c:8642 #, c-format msgid " extended opcode %u: " msgstr "" -#: src/readelf.c:8632 +#: src/readelf.c:8647 msgid " end of sequence" msgstr "" -#: src/readelf.c:8650 +#: src/readelf.c:8665 #, fuzzy, c-format msgid " set address to " msgstr "Außerhalb des Adressbereiches" -#: src/readelf.c:8678 +#: src/readelf.c:8693 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" -#: src/readelf.c:8691 +#: src/readelf.c:8706 #, c-format msgid " set discriminator to %u\n" msgstr "" #. Unknown, ignore it. -#: src/readelf.c:8696 +#: src/readelf.c:8711 #, fuzzy msgid " unknown opcode" msgstr "unbekannter Typ" #. Takes no argument. -#: src/readelf.c:8708 +#: src/readelf.c:8723 msgid " copy" msgstr "" -#: src/readelf.c:8717 +#: src/readelf.c:8732 #, c-format msgid " advance address by %u to " msgstr "" -#: src/readelf.c:8721 src/readelf.c:8777 +#: src/readelf.c:8736 src/readelf.c:8792 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8731 +#: src/readelf.c:8746 #, c-format msgid " advance line by constant %d to %\n" msgstr "" -#: src/readelf.c:8739 +#: src/readelf.c:8754 #, c-format msgid " set file to %\n" msgstr "" -#: src/readelf.c:8749 +#: src/readelf.c:8764 #, c-format msgid " set column to %\n" msgstr "" -#: src/readelf.c:8756 +#: src/readelf.c:8771 #, c-format msgid " set '%s' to %\n" msgstr "" #. Takes no argument. -#: src/readelf.c:8762 +#: src/readelf.c:8777 msgid " set basic block flag" msgstr "" -#: src/readelf.c:8773 +#: src/readelf.c:8788 #, c-format msgid " advance address by constant %u to " msgstr "" -#: src/readelf.c:8792 +#: src/readelf.c:8807 #, c-format msgid " advance address by fixed value %u to \n" msgstr "" #. Takes no argument. -#: src/readelf.c:8802 +#: src/readelf.c:8817 msgid " set prologue end flag" msgstr "" #. Takes no argument. -#: src/readelf.c:8807 +#: src/readelf.c:8822 msgid " set epilogue begin flag" msgstr "" -#: src/readelf.c:8816 +#: src/readelf.c:8831 #, c-format msgid " set isa to %u\n" msgstr "" @@ -5171,103 +5179,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:8825 +#: src/readelf.c:8840 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:8863 +#: src/readelf.c:8879 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s" -#: src/readelf.c:9032 +#: src/readelf.c:9048 #, fuzzy, c-format msgid "invalid loclists data" msgstr "Ungültige Daten" -#: src/readelf.c:9285 +#: src/readelf.c:9301 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "" -#: src/readelf.c:9492 src/readelf.c:10506 +#: src/readelf.c:9508 src/readelf.c:10552 msgid " \n" msgstr "" -#: src/readelf.c:9546 src/readelf.c:9709 +#: src/readelf.c:9563 src/readelf.c:9726 #, c-format msgid "cannot get macro information section data: %s" msgstr "" -#: src/readelf.c:9626 +#: src/readelf.c:9643 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "" -#: src/readelf.c:9649 +#: src/readelf.c:9666 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "" -#: src/readelf.c:9750 +#: src/readelf.c:9767 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " %s: %\n" -#: src/readelf.c:9762 +#: src/readelf.c:9779 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:9768 src/readelf.c:10625 +#: src/readelf.c:9785 src/readelf.c:10672 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:9775 +#: src/readelf.c:9792 #, fuzzy, c-format -msgid " Flag: 0x%\n" +msgid " Flag: 0x%" msgstr " %s: %\n" -#: src/readelf.c:9778 +#: src/readelf.c:9821 #, c-format msgid " Offset length: %\n" msgstr "" -#: src/readelf.c:9786 +#: src/readelf.c:9829 #, c-format msgid " .debug_line offset: 0x%\n" msgstr "" -#: src/readelf.c:9811 +#: src/readelf.c:9854 #, c-format msgid " extension opcode table, % items:\n" msgstr "" -#: src/readelf.c:9818 +#: src/readelf.c:9861 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:9830 +#: src/readelf.c:9873 #, c-format msgid " % arguments:" msgstr "" -#: src/readelf.c:9845 +#: src/readelf.c:9888 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10046 +#: src/readelf.c:10089 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" -#: src/readelf.c:10088 +#: src/readelf.c:10133 #, c-format msgid "" "\n" @@ -5275,72 +5283,72 @@ msgid "" " %*s String\n" msgstr "" -#: src/readelf.c:10103 +#: src/readelf.c:10148 #, c-format msgid " *** error, missing string terminator\n" msgstr "" -#: src/readelf.c:10131 +#: src/readelf.c:10177 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:10230 +#: src/readelf.c:10276 #, fuzzy, c-format msgid " Length: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10232 +#: src/readelf.c:10278 #, fuzzy, c-format msgid " Offset size: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10246 +#: src/readelf.c:10292 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10255 +#: src/readelf.c:10301 #, fuzzy, c-format msgid " Padding: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10309 +#: src/readelf.c:10355 #, c-format msgid "" "\n" "Call frame search table section [%2zu] '.eh_frame_hdr':\n" msgstr "" -#: src/readelf.c:10411 +#: src/readelf.c:10457 #, c-format msgid "" "\n" "Exception handling table section [%2zu] '.gcc_except_table':\n" msgstr "" -#: src/readelf.c:10434 +#: src/readelf.c:10480 #, c-format msgid " LPStart encoding: %#x " msgstr "" -#: src/readelf.c:10446 +#: src/readelf.c:10492 #, c-format msgid " TType encoding: %#x " msgstr "" -#: src/readelf.c:10461 +#: src/readelf.c:10507 #, c-format msgid " Call site encoding: %#x " msgstr "" -#: src/readelf.c:10474 +#: src/readelf.c:10520 msgid "" "\n" " Call site table:" msgstr "" -#: src/readelf.c:10488 +#: src/readelf.c:10534 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5349,142 +5357,142 @@ msgid "" " Action: %u\n" msgstr "" -#: src/readelf.c:10561 +#: src/readelf.c:10607 #, c-format msgid "invalid TType encoding" msgstr "" -#: src/readelf.c:10587 +#: src/readelf.c:10634 #, c-format msgid "" "\n" "GDB section [%2zu] '%s' at offset %# contains % bytes :\n" msgstr "" -#: src/readelf.c:10616 +#: src/readelf.c:10663 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:10634 +#: src/readelf.c:10681 #, c-format msgid " CU offset: %#\n" msgstr "" -#: src/readelf.c:10641 +#: src/readelf.c:10688 #, c-format msgid " TU offset: %#\n" msgstr "" -#: src/readelf.c:10648 +#: src/readelf.c:10695 #, c-format msgid " address offset: %#\n" msgstr "" -#: src/readelf.c:10655 +#: src/readelf.c:10702 #, c-format msgid " symbol offset: %#\n" msgstr "" -#: src/readelf.c:10662 +#: src/readelf.c:10709 #, c-format msgid " constant offset: %#\n" msgstr "" -#: src/readelf.c:10676 +#: src/readelf.c:10723 #, c-format msgid "" "\n" " CU list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:10701 +#: src/readelf.c:10748 #, c-format msgid "" "\n" " TU list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:10730 +#: src/readelf.c:10777 #, c-format msgid "" "\n" " Address list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:10762 +#: src/readelf.c:10809 #, c-format msgid "" "\n" " Symbol table at offset %# contains %zu slots:\n" msgstr "" -#: src/readelf.c:10900 +#: src/readelf.c:10947 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "" -#: src/readelf.c:11263 src/readelf.c:11885 src/readelf.c:11996 -#: src/readelf.c:12054 +#: src/readelf.c:11310 src/readelf.c:11932 src/readelf.c:12043 +#: src/readelf.c:12101 #, c-format msgid "cannot convert core note data: %s" msgstr "" -#: src/readelf.c:11626 +#: src/readelf.c:11673 #, c-format msgid "" "\n" "%*s... ..." msgstr "" -#: src/readelf.c:12133 +#: src/readelf.c:12180 msgid " Owner Data size Type\n" msgstr "" -#: src/readelf.c:12151 +#: src/readelf.c:12209 #, c-format msgid " %-13.*s %9 %s\n" msgstr "" -#: src/readelf.c:12201 +#: src/readelf.c:12261 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "Konnte Inhalt von %s: %s nicht lesen" -#: src/readelf.c:12228 +#: src/readelf.c:12288 #, c-format msgid "" "\n" "Note section [%2zu] '%s' of % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:12251 +#: src/readelf.c:12311 #, c-format msgid "" "\n" "Note segment of % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:12297 +#: src/readelf.c:12358 #, fuzzy, c-format msgid "" "\n" "Section [%zu] '%s' has no data to dump.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12324 src/readelf.c:12375 +#: src/readelf.c:12385 src/readelf.c:12436 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12329 +#: src/readelf.c:12390 #, c-format msgid "" "\n" "Hex dump of section [%zu] '%s', % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:12334 +#: src/readelf.c:12395 #, c-format msgid "" "\n" @@ -5492,21 +5500,21 @@ msgid "" "%#0:\n" msgstr "" -#: src/readelf.c:12348 +#: src/readelf.c:12409 #, fuzzy, c-format msgid "" "\n" "Section [%zu] '%s' has no strings to dump.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12380 +#: src/readelf.c:12441 #, c-format msgid "" "\n" "String section [%zu] '%s' contains % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:12385 +#: src/readelf.c:12446 #, c-format msgid "" "\n" @@ -5514,45 +5522,45 @@ msgid "" "offset %#0:\n" msgstr "" -#: src/readelf.c:12434 +#: src/readelf.c:12495 #, c-format msgid "" "\n" "section [%lu] does not exist" msgstr "" -#: src/readelf.c:12463 +#: src/readelf.c:12524 #, c-format msgid "" "\n" "section '%s' does not exist" msgstr "" -#: src/readelf.c:12520 +#: src/readelf.c:12581 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "" -#: src/readelf.c:12523 +#: src/readelf.c:12584 #, c-format msgid "" "\n" "Archive '%s' has no symbol index\n" msgstr "" -#: src/readelf.c:12527 +#: src/readelf.c:12588 #, c-format msgid "" "\n" "Index of archive '%s' has %zu entries:\n" msgstr "" -#: src/readelf.c:12545 +#: src/readelf.c:12606 #, fuzzy, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:12550 +#: src/readelf.c:12611 #, c-format msgid "Archive member '%s' contains:\n" msgstr "" @@ -5615,12 +5623,12 @@ msgstr "" msgid "%s: file format not recognized" msgstr "" -#: src/size.c:416 src/size.c:549 +#: src/size.c:418 src/size.c:551 #, c-format msgid " (ex %s)" msgstr "" -#: src/size.c:574 +#: src/size.c:576 msgid "(TOTALS)\n" msgstr "" @@ -5806,94 +5814,114 @@ msgstr "mprotect fehlgeschlagen" msgid "Skipping section %zd '%s' data outside file" msgstr "" -#: src/strip.c:70 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "" -#: src/strip.c:71 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "" -#: src/strip.c:72 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "" -#: src/strip.c:76 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "" -#: src/strip.c:80 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "" -#: src/strip.c:82 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "" -#: src/strip.c:84 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " "operation is not reversable, needs -f)" msgstr "" -#: src/strip.c:86 +#: src/strip.c:87 +msgid "" +"Similar to --reloc-debug-sections, but resolve all trivial relocations " +"between debug sections in place. No other stripping is performed (operation " +"is not reversable, incompatible with -f, -g, --remove-comment and --remove-" +"section)" +msgstr "" + +#: src/strip.c:89 msgid "Remove .comment section" msgstr "" -#: src/strip.c:87 +#: src/strip.c:90 msgid "" "Remove the named section. SECTION is an extended wildcard pattern. May be " "given more than once. Only non-allocated sections can be removed." msgstr "" -#: src/strip.c:88 +#: src/strip.c:91 msgid "" "Keep the named section. SECTION is an extended wildcard pattern. May be " "given more than once." msgstr "" #. Short description of program. -#: src/strip.c:95 +#: src/strip.c:98 msgid "Discard symbols from object files." msgstr "" -#: src/strip.c:241 +#: src/strip.c:247 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "" -#: src/strip.c:255 +#: src/strip.c:253 +#, c-format +msgid "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" +msgstr "" + +#: src/strip.c:267 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "" -#: src/strip.c:278 +#: src/strip.c:290 #, c-format msgid "-f option specified twice" msgstr "" -#: src/strip.c:287 +#: src/strip.c:299 #, c-format msgid "-F option specified twice" msgstr "" -#: src/strip.c:346 +#: src/strip.c:362 #, c-format msgid "cannot both keep and remove .comment section" msgstr "" -#: src/strip.c:371 src/strip.c:395 +#: src/strip.c:574 +#, fuzzy, c-format +msgid "bad relocation" +msgstr "Relocations anzeigen" + +#: src/strip.c:726 src/strip.c:750 #, c-format msgid "cannot stat input file '%s'" msgstr "" -#: src/strip.c:385 +#: src/strip.c:740 #, c-format msgid "while opening '%s'" msgstr "" -#: src/strip.c:423 +#: src/strip.c:778 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "" @@ -5904,132 +5932,132 @@ msgstr "" #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:435 +#: src/strip.c:790 #, fuzzy, c-format msgid "%s: no support for stripping archive" msgstr "%s: Kein Eintrag %s in dem Archiv!\n" -#: src/strip.c:534 +#: src/strip.c:1001 #, c-format msgid "cannot open EBL backend" msgstr "" -#: src/strip.c:579 +#: src/strip.c:1046 #, fuzzy, c-format msgid "cannot get number of phdrs" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/strip.c:595 src/strip.c:619 -#, c-format -msgid "cannot create new file '%s': %s" -msgstr "" +#: src/strip.c:1060 src/strip.c:1103 +#, fuzzy, c-format +msgid "cannot create new ehdr for file '%s': %s" +msgstr "neue Datei konnte nicht angelegt werden" + +#: src/strip.c:1070 src/strip.c:1113 +#, fuzzy, c-format +msgid "cannot create new phdr for file '%s': %s" +msgstr "neue Datei konnte nicht angelegt werden" -#: src/strip.c:701 +#: src/strip.c:1194 #, c-format msgid "illformed file '%s'" msgstr "" -#: src/strip.c:711 +#: src/strip.c:1204 #, fuzzy, c-format msgid "Cannot remove allocated section '%s'" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/strip.c:720 +#: src/strip.c:1213 #, fuzzy, c-format msgid "Cannot both keep and remove section '%s'" msgstr "Konnte Archiv '%s' nicht öffnen" -#: src/strip.c:1076 src/strip.c:1210 +#: src/strip.c:1573 src/strip.c:1688 #, c-format msgid "while generating output file: %s" msgstr "" -#: src/strip.c:1141 +#: src/strip.c:1637 #, fuzzy, c-format -msgid "%s: error while getting shdrstrndx: %s" +msgid "%s: error while updating ELF header: %s" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" -#: src/strip.c:1157 -#, c-format -msgid "%s: error getting zero section: %s" -msgstr "" - -#: src/strip.c:1166 +#: src/strip.c:1646 #, fuzzy, c-format -msgid "%s: error while updating zero section: %s" +msgid "%s: error while getting shdrstrndx: %s" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" -#: src/strip.c:1176 src/strip.c:2292 -#, c-format -msgid "%s: error while creating ELF header: %s" -msgstr "" +#: src/strip.c:1654 src/strip.c:2534 +#, fuzzy, c-format +msgid "%s: error updating shdrstrndx: %s" +msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" -#: src/strip.c:1193 +#: src/strip.c:1671 #, c-format msgid "while preparing output for '%s'" msgstr "" -#: src/strip.c:1255 src/strip.c:1318 +#: src/strip.c:1733 src/strip.c:1796 #, c-format msgid "while create section header section: %s" msgstr "" -#: src/strip.c:1264 +#: src/strip.c:1742 #, c-format msgid "cannot allocate section data: %s" msgstr "" -#: src/strip.c:1330 +#: src/strip.c:1808 #, c-format msgid "while create section header string table: %s" msgstr "" -#: src/strip.c:1337 +#: src/strip.c:1815 #, c-format msgid "no memory to create section header string table" msgstr "" -#: src/strip.c:1547 +#: src/strip.c:2027 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2078 -#, fuzzy, c-format -msgid "bad relocation" -msgstr "Relocations anzeigen" - -#: src/strip.c:2203 src/strip.c:2316 +#: src/strip.c:2450 src/strip.c:2558 #, c-format msgid "while writing '%s': %s" msgstr "" -#: src/strip.c:2214 +#: src/strip.c:2461 #, c-format msgid "while creating '%s'" msgstr "" -#: src/strip.c:2237 +#: src/strip.c:2484 #, c-format msgid "while computing checksum for debug information" msgstr "" -#: src/strip.c:2301 +#: src/strip.c:2525 +#, c-format +msgid "%s: error while creating ELF header: %s" +msgstr "" + +#: src/strip.c:2543 #, c-format msgid "%s: error while reading the file: %s" msgstr "" -#: src/strip.c:2341 src/strip.c:2361 +#: src/strip.c:2583 src/strip.c:2603 #, fuzzy, c-format msgid "while writing '%s'" msgstr "beim Schliessen von '%s'" -#: src/strip.c:2398 src/strip.c:2405 +#: src/strip.c:2640 src/strip.c:2647 #, c-format msgid "error while finishing '%s': %s" msgstr "" -#: src/strip.c:2422 src/strip.c:2498 +#: src/strip.c:2664 src/strip.c:2740 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "" @@ -6115,269 +6143,299 @@ msgstr "" msgid "cannot get shdrstrndx:%s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:257 +#: src/unstrip.c:248 src/unstrip.c:2034 +#, c-format +msgid "cannot get ELF header: %s" +msgstr "" + +#: src/unstrip.c:258 #, fuzzy, c-format msgid "cannot get new zero section: %s" msgstr "konnte Versionierungsabschnitt nicht erstellen: %s" -#: src/unstrip.c:260 +#: src/unstrip.c:261 #, fuzzy, c-format msgid "cannot update new zero section: %s" msgstr "konnte Versionierungsabschnitt nicht erstellen: %s" -#: src/unstrip.c:264 +#: src/unstrip.c:265 #, c-format msgid "cannot copy ELF header: %s" msgstr "" -#: src/unstrip.c:268 src/unstrip.c:1962 src/unstrip.c:2005 +#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 #, fuzzy, c-format msgid "cannot get number of program headers: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/unstrip.c:273 src/unstrip.c:1966 +#: src/unstrip.c:274 src/unstrip.c:2056 #, c-format msgid "cannot create program headers: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/unstrip.c:279 +#: src/unstrip.c:280 #, c-format msgid "cannot copy program header: %s" msgstr "konnte Programm-Kopf nicht kopieren: %s" -#: src/unstrip.c:289 +#: src/unstrip.c:290 #, c-format msgid "cannot copy section header: %s" msgstr "" -#: src/unstrip.c:292 src/unstrip.c:1597 +#: src/unstrip.c:293 src/unstrip.c:1665 #, c-format msgid "cannot get section data: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:294 src/unstrip.c:1599 +#: src/unstrip.c:295 src/unstrip.c:1667 #, c-format msgid "cannot copy section data: %s" msgstr "konnte Abschnittsdaten nicht kopieren: %s" -#: src/unstrip.c:318 +#: src/unstrip.c:319 #, c-format msgid "cannot create directory '%s'" msgstr "konnte Verzeichnis nicht erstellen: %s" -#: src/unstrip.c:390 src/unstrip.c:820 src/unstrip.c:1631 +#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 #, c-format msgid "cannot get symbol table entry: %s" msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s" -#: src/unstrip.c:406 src/unstrip.c:631 src/unstrip.c:652 src/unstrip.c:664 -#: src/unstrip.c:1652 src/unstrip.c:1828 src/unstrip.c:1852 +#: 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 #, c-format msgid "cannot update symbol table: %s" msgstr "konnte Symboltabelle nicht aktualisieren: %s" -#: src/unstrip.c:416 +#: src/unstrip.c:417 #, c-format msgid "cannot update section header: %s" msgstr "" -#: src/unstrip.c:455 src/unstrip.c:466 +#: src/unstrip.c:459 src/unstrip.c:473 #, c-format msgid "cannot update relocation: %s" msgstr "" -#: src/unstrip.c:554 +#: src/unstrip.c:570 #, c-format msgid "cannot get symbol version: %s" msgstr "" -#: src/unstrip.c:567 +#: src/unstrip.c:583 #, c-format msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "" -#: src/unstrip.c:826 +#: src/unstrip.c:851 #, fuzzy, c-format msgid "invalid string offset in symbol [%zu]" msgstr "ungültiger Offset %zu für Symbol %s" -#: src/unstrip.c:984 src/unstrip.c:1334 +#: src/unstrip.c:1009 src/unstrip.c:1398 #, fuzzy, c-format msgid "cannot read section [%zu] name: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:1025 src/unstrip.c:1044 src/unstrip.c:1082 +#: src/unstrip.c:1024 +#, fuzzy, c-format +msgid "bad sh_link for group section: %s" +msgstr "ungültige .debug_line Sektion" + +#: src/unstrip.c:1030 +#, fuzzy, c-format +msgid "couldn't get shdr for group section: %s" +msgstr "konnte Versionierungsabschnitt nicht erstellen: %s" + +#: src/unstrip.c:1035 +#, fuzzy, c-format +msgid "bad data for group symbol section: %s" +msgstr "ungültige .debug_line Sektion" + +#: src/unstrip.c:1041 +#, fuzzy, c-format +msgid "couldn't get symbol for group section: %s" +msgstr "konnte Programm-Kopf nicht erstellen: %s" + +#: src/unstrip.c:1046 +#, 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 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "" -#: src/unstrip.c:1062 +#: src/unstrip.c:1125 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "" -#: src/unstrip.c:1073 +#: src/unstrip.c:1136 #, c-format msgid "invalid contents in '%s' section" msgstr "" -#: src/unstrip.c:1128 src/unstrip.c:1456 +#: src/unstrip.c:1192 src/unstrip.c:1524 #, fuzzy, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:1253 src/unstrip.c:1268 src/unstrip.c:1535 src/unstrip.c:1787 +#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 #, c-format msgid "cannot add section name to string table: %s" msgstr "" -#: src/unstrip.c:1277 +#: src/unstrip.c:1341 #, c-format msgid "cannot update section header string table data: %s" msgstr "" -#: src/unstrip.c:1305 src/unstrip.c:1309 +#: src/unstrip.c:1369 src/unstrip.c:1373 #, c-format msgid "cannot get section header string table section index: %s" msgstr "" -#: src/unstrip.c:1313 src/unstrip.c:1317 src/unstrip.c:1550 +#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 #, c-format msgid "cannot get section count: %s" msgstr "" -#: src/unstrip.c:1320 +#: src/unstrip.c:1384 #, c-format msgid "more sections in stripped file than debug file -- arguments reversed?" msgstr "" -#: src/unstrip.c:1379 src/unstrip.c:1471 +#: src/unstrip.c:1446 src/unstrip.c:1539 #, c-format msgid "cannot read section header string table: %s" msgstr "" -#: src/unstrip.c:1529 +#: src/unstrip.c:1597 #, c-format msgid "cannot add new section: %s" msgstr "" -#: src/unstrip.c:1639 +#: src/unstrip.c:1710 #, fuzzy, c-format msgid "symbol [%zu] has invalid section index" msgstr "ungültiger Abschnittsindex" -#: src/unstrip.c:1923 +#: src/unstrip.c:1742 +#, fuzzy, c-format +msgid "group has invalid section index [%zd]" +msgstr "ungültiger Abschnittsindex" + +#: src/unstrip.c:2013 #, fuzzy, c-format msgid "cannot read section data: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/unstrip.c:1944 -#, c-format -msgid "cannot get ELF header: %s" -msgstr "" - -#: src/unstrip.c:1952 +#: src/unstrip.c:2042 #, c-format msgid "cannot update ELF header: %s" msgstr "" -#: src/unstrip.c:1976 +#: src/unstrip.c:2066 #, c-format msgid "cannot update program header: %s" msgstr "konnte Programm-Kopf nicht aktualisieren: %s" -#: src/unstrip.c:1981 src/unstrip.c:2063 +#: src/unstrip.c:2071 src/unstrip.c:2153 #, c-format msgid "cannot write output file: %s" msgstr "" -#: src/unstrip.c:2032 +#: src/unstrip.c:2122 #, c-format msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" msgstr "" -#: src/unstrip.c:2035 +#: src/unstrip.c:2125 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" msgstr "" -#: src/unstrip.c:2054 src/unstrip.c:2105 src/unstrip.c:2117 src/unstrip.c:2203 +#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "" -#: src/unstrip.c:2096 +#: src/unstrip.c:2186 msgid "WARNING: " msgstr "" -#: src/unstrip.c:2098 +#: src/unstrip.c:2188 msgid ", use --force" msgstr "" -#: src/unstrip.c:2121 +#: src/unstrip.c:2211 msgid "ELF header identification (e_ident) different" msgstr "" -#: src/unstrip.c:2124 +#: src/unstrip.c:2214 msgid "ELF header type (e_type) different" msgstr "" -#: src/unstrip.c:2127 +#: src/unstrip.c:2217 msgid "ELF header machine type (e_machine) different" msgstr "" -#: src/unstrip.c:2130 +#: src/unstrip.c:2220 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "" -#: src/unstrip.c:2160 +#: src/unstrip.c:2250 #, c-format msgid "cannot find stripped file for module '%s': %s" msgstr "" -#: src/unstrip.c:2164 +#: src/unstrip.c:2254 #, c-format msgid "cannot open stripped file '%s' for module '%s': %s" msgstr "" -#: src/unstrip.c:2179 +#: src/unstrip.c:2269 #, c-format msgid "cannot find debug file for module '%s': %s" msgstr "" -#: src/unstrip.c:2183 +#: src/unstrip.c:2273 #, c-format msgid "cannot open debug file '%s' for module '%s': %s" msgstr "" -#: src/unstrip.c:2196 +#: src/unstrip.c:2286 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "" -#: src/unstrip.c:2227 +#: src/unstrip.c:2317 #, c-format msgid "cannot cache section addresses for module '%s': %s" msgstr "" -#: src/unstrip.c:2360 +#: src/unstrip.c:2450 #, c-format msgid "no matching modules found" msgstr "kein passendes Modul gefunden" -#: src/unstrip.c:2369 +#: src/unstrip.c:2459 #, c-format msgid "matched more than one module" msgstr "mehr als ein passendes Modul" -#: src/unstrip.c:2413 +#: src/unstrip.c:2503 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" msgstr "" -#: src/unstrip.c:2414 +#: src/unstrip.c:2504 msgid "" "Combine stripped files with separate symbols and debug information.\n" "\n" diff --git a/po/es.po b/po/es.po index 58fd06ed..7fb8ac30 100644 --- a/po/es.po +++ b/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils.master.es\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-09-14 12:05+0200\n" +"POT-Creation-Date: 2018-11-14 13:04+0100\n" "PO-Revision-Date: 2011-01-10 15:17-0300\n" "Last-Translator: Claudio Rodrigo Pereyra Diaz \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:3409 -#: src/readelf.c:11212 src/unstrip.c:2256 src/unstrip.c:2462 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 +#: src/readelf.c:11259 src/unstrip.c:2346 src/unstrip.c:2552 #, 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:2403 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 msgid "Input selection options:" msgstr "Opciones de selección de entrada:" @@ -528,8 +528,8 @@ msgstr "no es un archivo ELF válido" msgid "No backend" msgstr "No hay segundo plano (Backend)" -#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 -#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 +#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" @@ -540,58 +540,58 @@ msgstr "" msgid ": %#" msgstr ": %#" -#: libebl/eblobjnote.c:53 +#: libebl/eblobjnote.c:58 #, fuzzy, c-format msgid "unknown SDT version %u\n" msgstr "versión desconocida" -#: libebl/eblobjnote.c:71 +#: libebl/eblobjnote.c:76 #, fuzzy, c-format msgid "invalid SDT probe descriptor\n" msgstr "descriptor de archivo inválido" -#: libebl/eblobjnote.c:121 +#: libebl/eblobjnote.c:126 #, c-format msgid " PC: " msgstr "" -#: libebl/eblobjnote.c:123 +#: libebl/eblobjnote.c:128 #, c-format msgid " Base: " msgstr "" -#: libebl/eblobjnote.c:125 +#: libebl/eblobjnote.c:130 #, c-format msgid " Semaphore: " msgstr "" -#: libebl/eblobjnote.c:127 +#: libebl/eblobjnote.c:132 #, c-format msgid " Provider: " msgstr "" -#: libebl/eblobjnote.c:129 +#: libebl/eblobjnote.c:134 #, c-format msgid " Name: " msgstr "" -#: libebl/eblobjnote.c:131 +#: libebl/eblobjnote.c:136 #, c-format msgid " Args: " msgstr "" -#: libebl/eblobjnote.c:141 +#: libebl/eblobjnote.c:300 #, c-format msgid " Build ID: " msgstr " Build ID: " #. A non-null terminated version string. -#: libebl/eblobjnote.c:152 +#: libebl/eblobjnote.c:311 #, c-format msgid " Linker version: %.*s\n" msgstr " Versión del Enlazador: %.*s\n" -#: libebl/eblobjnote.c:213 +#: libebl/eblobjnote.c:553 #, c-format msgid " OS: %s, ABI: " msgstr " OS: %s, ABI: " @@ -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:6123 +#: libelf/elf_error.c:87 src/readelf.c:6129 #, 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:9758 src/readelf.c:10329 -#: src/readelf.c:10430 src/readelf.c:10611 +#: libelf/elf_error.c:191 src/readelf.c:9775 src/readelf.c:10375 +#: src/readelf.c:10476 src/readelf.c:10658 #, c-format msgid "invalid data" msgstr "datos inválidos" @@ -1051,12 +1051,12 @@ msgstr "no sepuede stat el archivo '%s'" msgid "no entry %s in archive\n" msgstr "no hay entrada %s en archivo\n" -#: src/ar.c:472 src/ar.c:917 src/ar.c:1121 +#: src/ar.c:472 src/ar.c:923 src/ar.c:1127 #, c-format msgid "cannot create hash table" msgstr "Falló al crear la tabla de dispersión" -#: src/ar.c:479 src/ar.c:924 src/ar.c:1130 +#: src/ar.c:479 src/ar.c:930 src/ar.c:1136 #, c-format msgid "cannot insert into hash table" msgstr "no sepuede insertar en tabla de dispersión" @@ -1066,97 +1066,97 @@ msgstr "no sepuede insertar en tabla de dispersión" msgid "cannot stat '%s'" msgstr "no se puede stat '%s'" -#: src/ar.c:583 +#: src/ar.c:589 #, c-format msgid "cannot read content of %s: %s" msgstr "no se puede leer el contenido de %s: %s" -#: src/ar.c:626 +#: src/ar.c:632 #, c-format msgid "cannot open %.*s" msgstr " Imposible abrir %.*s" -#: src/ar.c:648 +#: src/ar.c:654 #, c-format msgid "failed to write %s" msgstr "Falló al escribir %s" -#: src/ar.c:660 +#: src/ar.c:666 #, c-format msgid "cannot change mode of %s" msgstr "No se puede cambiar el modo de %s" -#: src/ar.c:676 +#: src/ar.c:682 #, c-format msgid "cannot change modification time of %s" msgstr "No puede cambiar tiempo de modificación de %s" -#: src/ar.c:722 +#: src/ar.c:728 #, c-format msgid "cannot rename temporary file to %.*s" msgstr "no sepuede renombrar fichero temporal para %.*s" -#: src/ar.c:758 src/ar.c:1009 src/ar.c:1410 src/ranlib.c:222 +#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222 #, c-format msgid "cannot create new file" msgstr "no sepuede crear fichero nuevo" -#: src/ar.c:1212 +#: src/ar.c:1218 #, c-format msgid "position member %s not found" msgstr "no se encuentra miembro de posición %s " -#: src/ar.c:1222 +#: src/ar.c:1228 #, c-format msgid "%s: no entry %s in archive!\n" msgstr "%s: ¡no hay entrada %s en archive!\n" -#: src/ar.c:1251 src/objdump.c:241 +#: src/ar.c:1257 src/objdump.c:241 #, c-format msgid "cannot open %s" msgstr "no sepuede abrir %s" -#: src/ar.c:1256 +#: src/ar.c:1262 #, c-format msgid "cannot stat %s" msgstr "no sepuede efectuar stat %s" -#: src/ar.c:1262 +#: src/ar.c:1268 #, c-format msgid "%s is no regular file" msgstr " %s no es un fichero ordinario " -#: src/ar.c:1275 +#: src/ar.c:1281 #, c-format msgid "cannot get ELF descriptor for %s: %s\n" msgstr "no sepuede obtener descriptor ELF para %s: %s\n" -#: src/ar.c:1295 +#: src/ar.c:1301 #, c-format msgid "cannot read %s: %s" msgstr "no sepuede leer %s: %s" -#: src/ar.c:1470 +#: src/ar.c:1476 #, fuzzy, c-format msgid "cannot represent ar_date" msgstr "no pueden copiar datos de sección: %s" -#: src/ar.c:1476 +#: src/ar.c:1482 #, fuzzy, c-format msgid "cannot represent ar_uid" msgstr "no pueden copiar datos de sección: %s" -#: src/ar.c:1482 +#: src/ar.c:1488 #, fuzzy, c-format msgid "cannot represent ar_gid" msgstr "no pueden copiar datos de sección: %s" -#: src/ar.c:1488 +#: src/ar.c:1494 #, fuzzy, c-format msgid "cannot represent ar_mode" msgstr "no se puede obtener encabezamiento de sección\n" -#: src/ar.c:1494 +#: src/ar.c:1500 #, fuzzy, c-format msgid "cannot represent ar_size" msgstr "no sepuede abrir %s" @@ -1381,8 +1381,8 @@ msgid "Invalid value '%s' for --gaps parameter." 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:517 src/strip.c:554 -#: src/unstrip.c:2052 src/unstrip.c:2081 +#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 +#: src/unstrip.c:2142 src/unstrip.c:2171 #, c-format msgid "cannot open '%s'" msgstr "Imposible abrir '%s'" @@ -1397,7 +1397,7 @@ msgstr "No puede crear descriptor ELF para '%s': %s" msgid "cannot create EBL descriptor for '%s'" msgstr "no se puede crear el descriptor EBL para '%s'" -#: src/elfcmp.c:761 src/findtextrel.c:393 +#: src/elfcmp.c:761 src/findtextrel.c:394 #, c-format msgid "cannot get section header of section %zu: %s" msgstr "No se puede obtener el encabezamiento de sección %zu: %s" @@ -1412,7 +1412,7 @@ msgstr "No se puede obtener contenido de sección %zu: %s" msgid "cannot get relocation: %s" msgstr "No se puede obtener reubicación: %s" -#: src/elfcompress.c:115 src/strip.c:296 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "opción -o especificada dos veces" @@ -1466,7 +1466,7 @@ msgid "" "rewrite the file even if no section would be (de)compressed" msgstr "" -#: src/elfcompress.c:1324 src/strip.c:90 +#: src/elfcompress.c:1324 src/strip.c:93 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "Relaja algunas reglas para manejar ficheros ELF rotos" @@ -1692,7 +1692,7 @@ msgstr "" #: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651 #: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095 -#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4401 +#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431 #, c-format msgid "section [%2d] '%s': cannot get section data\n" msgstr "Sección [%2d] '%s': No se pueden obtener datos de sección\n" @@ -3288,55 +3288,58 @@ msgstr "" "Sección [%2d] '%s': tipo de nota de fichero core desconocido % en " "compensación %Zu\n" -#: src/elflint.c:4344 +#: src/elflint.c:4370 #, fuzzy, c-format -msgid "phdr[%d]: unknown object file note type % at offset %zu\n" +msgid "" +"phdr[%d]: unknown object file note type % with owner name '%s' at " +"offset %zu\n" msgstr "" "phdr[%d]: tipo de nota de fichero objeto desconocido % en " "compensación %Zu\n" -#: src/elflint.c:4348 +#: src/elflint.c:4375 #, fuzzy, c-format msgid "" -"section [%2d] '%s': unknown object file note type % at offset %zu\n" +"section [%2d] '%s': unknown object file note type % with owner name " +"'%s' at offset %zu\n" msgstr "" "Sección [%2d] '%s': tipo de nota de fichero objeto desconocido % en " "compensación %Zu\n" -#: src/elflint.c:4365 +#: src/elflint.c:4394 #, c-format msgid "phdr[%d]: no note entries defined for the type of file\n" msgstr "phdr[%d]: no hay entradas de nota definidas para el tipo de archivo\n" -#: src/elflint.c:4384 +#: src/elflint.c:4414 #, c-format msgid "phdr[%d]: cannot get content of note section: %s\n" msgstr "phdr[%d]: no puede obtener contenido de sección de nota: %s\n" -#: src/elflint.c:4387 +#: src/elflint.c:4417 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "phdr[%d]: extra % bytes después de la última nota\n" -#: src/elflint.c:4408 +#: src/elflint.c:4438 #, c-format msgid "section [%2d] '%s': no note entries defined for the type of file\n" msgstr "" "Sección [%2d] '%s': no hay entradas de nota definidas para el tipo de " "archivo\n" -#: src/elflint.c:4415 +#: src/elflint.c:4445 #, c-format msgid "section [%2d] '%s': cannot get content of note section\n" msgstr "" "Sección[%2d] '%s': no se puede obtener el contenido de sección de nota\n" -#: src/elflint.c:4418 +#: src/elflint.c:4448 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "Sección[%2d] '%s': extra % bytes después de la última nota\n" -#: src/elflint.c:4436 +#: src/elflint.c:4466 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" @@ -3344,145 +3347,145 @@ msgstr "" "Sólo ejecutables, objetos compartidos y ficheros core pueden tener " "encabezamientos de programas\n" -#: src/elflint.c:4451 +#: src/elflint.c:4481 #, c-format msgid "cannot get program header entry %d: %s\n" msgstr "no se puede obtener entrada de encabezamiento %d: %s\n" -#: src/elflint.c:4460 +#: src/elflint.c:4490 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" "entrada de encabezamiento de programa %d: tipo %# de entrada de " "encabezamiento de programa desconocido\n" -#: src/elflint.c:4471 +#: src/elflint.c:4501 #, c-format msgid "more than one INTERP entry in program header\n" msgstr "Más de una entrada INTERP en encabezamiento de programa\n" -#: src/elflint.c:4479 +#: src/elflint.c:4509 #, c-format msgid "more than one TLS entry in program header\n" msgstr "más de una entrada TLS en encabezamiento de programa\n" -#: src/elflint.c:4486 +#: src/elflint.c:4516 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "ejecutable estático no puede tener secciones dinámicas\n" -#: src/elflint.c:4500 +#: src/elflint.c:4530 #, c-format msgid "dynamic section reference in program header has wrong offset\n" msgstr "" "Referencia de sección dinámica en encabezamiento de programa tiene " "compensación errada\n" -#: src/elflint.c:4503 +#: src/elflint.c:4533 #, c-format msgid "dynamic section size mismatch in program and section header\n" msgstr "" "No coinciden tamaño de sección dinámica en programa y encabezamiento de " "sección\n" -#: src/elflint.c:4513 +#: src/elflint.c:4543 #, c-format msgid "more than one GNU_RELRO entry in program header\n" msgstr "Más de una entrada GNU_RELRO en encabezamiento de programa\n" -#: src/elflint.c:4534 +#: src/elflint.c:4564 #, c-format msgid "loadable segment GNU_RELRO applies to is not writable\n" msgstr "Segmento cargable GNU_RELRO que se aplica no es de escritura\n" -#: src/elflint.c:4545 +#: src/elflint.c:4575 #, c-format msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" msgstr "" "Banderas de segmento cargable [%u] no coinciden con banderas GNU_RELRO [%u]\n" -#: src/elflint.c:4552 +#: src/elflint.c:4582 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" msgstr "" -#: src/elflint.c:4561 src/elflint.c:4584 +#: src/elflint.c:4591 src/elflint.c:4614 #, c-format msgid "%s segment not contained in a loaded segment\n" msgstr "Segmento %s no contenido en un segmento cargable\n" -#: src/elflint.c:4590 +#: src/elflint.c:4620 #, c-format msgid "program header offset in ELF header and PHDR entry do not match" msgstr "" "Compensación de encabezamiento de programa en encabezamiento ELF y entrada " "PHDR no coinciden" -#: src/elflint.c:4615 +#: src/elflint.c:4647 #, c-format msgid "call frame search table reference in program header has wrong offset\n" msgstr "" "Referencia de tabla de búsqueda de marco de llamada en encabezamiento de " "programa tiene una compensación errada\n" -#: src/elflint.c:4618 +#: src/elflint.c:4650 #, c-format msgid "call frame search table size mismatch in program and section header\n" msgstr "" "Tamaño de tabla de búsqueda de marco de llamada no coincide con programa y " "encabezamiento de sección\n" -#: src/elflint.c:4631 +#: src/elflint.c:4663 #, c-format msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" msgstr "PT_GNU_EH_FRAME presente pero no la sección.eh_frame_hdr\n" -#: src/elflint.c:4639 +#: src/elflint.c:4671 #, c-format msgid "call frame search table must be allocated\n" msgstr "tabla de búsqueda de marco de llamada debe ser asignada\n" -#: src/elflint.c:4642 +#: src/elflint.c:4674 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "sección [%2zu] '%s' debe ser asignada\n" -#: src/elflint.c:4646 +#: src/elflint.c:4678 #, c-format msgid "call frame search table must not be writable\n" msgstr "" "tabla de búsqueda de marco de llamada no debe tener permiso de escritura\n" -#: src/elflint.c:4649 +#: src/elflint.c:4681 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "sección [%2zu] '%s' no debe tener permiso de escritura\n" -#: src/elflint.c:4654 +#: src/elflint.c:4686 #, c-format msgid "call frame search table must not be executable\n" msgstr "tabla de búsqueda de marco de llamada no debe ser ejecutable\n" -#: src/elflint.c:4657 +#: src/elflint.c:4689 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "sección [%2zu] '%s' no debe ser ejecutable\n" -#: src/elflint.c:4668 +#: src/elflint.c:4700 #, c-format msgid "program header entry %d: file size greater than memory size\n" msgstr "" "entrada de encabezamiento de programa %d: tamaño de fichero mayor que el " "tamaño de memoria\n" -#: src/elflint.c:4675 +#: src/elflint.c:4707 #, c-format msgid "program header entry %d: alignment not a power of 2\n" msgstr "" "entrada de encabezamiento de programa %d: alineamiento no es potencia de 2\n" -#: src/elflint.c:4678 +#: src/elflint.c:4710 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " @@ -3491,7 +3494,7 @@ msgstr "" "entrada de encabezamiento de programa %d: compensación de fichero y " "dirección virtual no módulo de alineación\n" -#: src/elflint.c:4691 +#: src/elflint.c:4723 #, c-format msgid "" "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " @@ -3500,12 +3503,12 @@ msgstr "" "ejecutable/DSO con sección .eh_frame_hdr no tiene una entrada de " "encabezamiento de programa PT_GNU_EH_FRAME" -#: src/elflint.c:4725 +#: src/elflint.c:4757 #, c-format msgid "cannot read ELF header: %s\n" msgstr "No se puede leer encabezamiento ELF: %s\n" -#: src/elflint.c:4751 +#: src/elflint.c:4783 #, c-format msgid "text relocation flag set but not needed\n" msgstr "Bandera de reubicación de texto establecida pero no necesaria\n" @@ -3530,7 +3533,7 @@ msgstr "" #. Strings for arguments in help texts. #: src/findtextrel.c:74 src/nm.c:108 src/objdump.c:71 src/size.c:80 -#: src/strings.c:87 src/strip.c:98 +#: src/strings.c:87 src/strip.c:101 msgid "[FILE...]" msgstr "[FICHERO...]" @@ -3549,57 +3552,57 @@ msgstr "'%s' es no un DSO o PIE" msgid "getting get section header of section %zu: %s" msgstr "obtener encabezamiento de sección get de sección %zu: %s" -#: src/findtextrel.c:276 +#: src/findtextrel.c:277 #, c-format msgid "cannot read dynamic section: %s" msgstr "No se puede leer sección dinámica: %s" -#: src/findtextrel.c:297 +#: src/findtextrel.c:298 #, c-format msgid "no text relocations reported in '%s'" msgstr "no hay reubicaciones de texto reportado en '%s'" -#: src/findtextrel.c:309 +#: src/findtextrel.c:310 #, c-format msgid "while reading ELF file" msgstr "Error al leer fichero ELF" -#: src/findtextrel.c:313 +#: src/findtextrel.c:314 #, fuzzy, c-format msgid "cannot get program header count: %s" msgstr "no se puede obtener memoria para encabezamiento del programa: %s" -#: src/findtextrel.c:324 src/findtextrel.c:341 +#: src/findtextrel.c:325 src/findtextrel.c:342 #, fuzzy, c-format msgid "cannot get program header index at offset %zd: %s" msgstr "" "Nos se puede obtener el índice de encabezamiento de programa en compensación " "%d: %s" -#: src/findtextrel.c:405 +#: src/findtextrel.c:406 #, c-format msgid "cannot get symbol table section %zu in '%s': %s" msgstr "No se puede obtener tabla de símbolos %zu en '%s': %s" -#: src/findtextrel.c:425 src/findtextrel.c:448 +#: src/findtextrel.c:427 src/findtextrel.c:450 #, c-format msgid "cannot get relocation at index %d in section %zu in '%s': %s" msgstr "" "No se puede obtener reubicación en índice %d en sección %zu en '%s': %s" -#: src/findtextrel.c:514 +#: src/findtextrel.c:516 #, c-format msgid "%s not compiled with -fpic/-fPIC\n" msgstr "%s no compilado con -fpic/-fPIC\n" -#: src/findtextrel.c:567 +#: src/findtextrel.c:570 #, c-format msgid "" "the file containing the function '%s' is not compiled with -fpic/-fPIC\n" msgstr "" "El archivo que contiene la función '%s' no está compilado con -fpic/-fPIC\n" -#: src/findtextrel.c:574 src/findtextrel.c:594 +#: src/findtextrel.c:577 src/findtextrel.c:597 #, c-format msgid "" "the file containing the function '%s' might not be compiled with -fpic/-" @@ -3608,7 +3611,7 @@ msgstr "" "el fichero que contiene la función '%s' podría no estar compilado con -fpic/-" "fPIC\n" -#: src/findtextrel.c:582 +#: src/findtextrel.c:585 #, c-format msgid "" "either the file containing the function '%s' or the file containing the " @@ -3617,7 +3620,7 @@ msgstr "" "Tanto el fichero que contiene la función '%s' como el fichero que contiene " "la función '%s' no están compilados con -fpic/-fPIC\n" -#: src/findtextrel.c:602 +#: src/findtextrel.c:605 #, c-format msgid "" "a relocation modifies memory at offset %llu in a write-protected segment\n" @@ -3625,7 +3628,7 @@ msgstr "" "Una reubicación modifica memoria en compensación %llu en un segmento " "protegido contra escritura\n" -#: src/nm.c:66 src/strip.c:69 +#: src/nm.c:66 src/strip.c:70 msgid "Output selection:" msgstr "Selección de salida:" @@ -3690,7 +3693,7 @@ msgstr "Marcar símbolos débiles" msgid "Print size of defined symbols" msgstr "Tamaño de impresión de símbolos definidos" -#: src/nm.c:91 src/size.c:68 src/strip.c:74 src/unstrip.c:73 +#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "Opciones de salida:" @@ -3720,18 +3723,18 @@ msgstr "Listar símbolos de FICHEROS (a.out por defecto)." msgid "Output formatting" msgstr "Formato de salida:" -#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:130 +#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:133 #, fuzzy, c-format 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:2505 +#: src/strip.c:2747 #, c-format msgid "while closing '%s'" msgstr "error al cerrar '%s'" -#: src/nm.c:403 src/objdump.c:280 src/strip.c:442 +#: src/nm.c:403 src/objdump.c:280 src/strip.c:797 #, c-format msgid "%s: File format not recognized" msgstr "%s: No se reconoce el formato del fichero" @@ -3772,12 +3775,12 @@ 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:1410 src/readelf.c:1558 src/readelf.c:1759 src/readelf.c:1965 -#: src/readelf.c:2155 src/readelf.c:2333 src/readelf.c:2409 src/readelf.c:2667 -#: src/readelf.c:2743 src/readelf.c:2830 src/readelf.c:3428 src/readelf.c:3478 -#: src/readelf.c:3541 src/readelf.c:11044 src/readelf.c:12216 -#: src/readelf.c:12419 src/readelf.c:12487 src/size.c:396 src/size.c:465 -#: src/strip.c:571 +#: 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:11091 src/readelf.c:12276 +#: src/readelf.c:12480 src/readelf.c:12548 src/size.c:398 src/size.c:467 +#: 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" @@ -3873,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:2060 src/readelf.c:2252 +#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 msgid "INVALID SYMBOL" msgstr "SÍMBOLO INVÁLIDO" -#: src/objdump.c:378 src/readelf.c:2094 src/readelf.c:2288 +#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 msgid "INVALID SECTION" msgstr "SECCIÓN INVÁLIDA" @@ -4084,21 +4087,21 @@ msgstr "Sección de depuración DWARF desconocida `%s'.\n" msgid "cannot generate Elf descriptor: %s" msgstr "no se puede crear descriptor ELF: %s" -#: src/readelf.c:596 src/readelf.c:924 src/strip.c:640 +#: src/readelf.c:596 src/readelf.c:923 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:1226 src/readelf.c:1434 +#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 #, c-format msgid "cannot get section: %s" msgstr "No se puede encontrar la sección: %s" -#: src/readelf.c:623 src/readelf.c:1233 src/readelf.c:1442 src/readelf.c:12439 -#: src/unstrip.c:394 src/unstrip.c:425 src/unstrip.c:474 src/unstrip.c:584 -#: src/unstrip.c:605 src/unstrip.c:642 src/unstrip.c:846 src/unstrip.c:1138 -#: src/unstrip.c:1330 src/unstrip.c:1391 src/unstrip.c:1564 src/unstrip.c:1679 -#: src/unstrip.c:1819 src/unstrip.c:1914 +#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12500 +#: 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 #, c-format msgid "cannot get section header: %s" msgstr "No se puede obtener encabezamiento de sección: %s" @@ -4108,8 +4111,8 @@ msgstr "No se puede obtener encabezamiento de sección: %s" msgid "cannot get section name" msgstr "no se puede obtener encabezamiento de sección\n" -#: src/readelf.c:640 src/readelf.c:6533 src/readelf.c:10317 src/readelf.c:10419 -#: src/readelf.c:10596 +#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10363 src/readelf.c:10465 +#: src/readelf.c:10643 #, c-format msgid "cannot get %s content: %s" msgstr "No se puede obtener el contenido %s: %s" @@ -4159,53 +4162,58 @@ msgstr "Falló lectura de '%s': %s" msgid "No such section '%s' in '%s'" msgstr "No se puede obtener contenido de sección %zu en '%s': %s" -#: src/readelf.c:909 +#: src/readelf.c:908 #, c-format msgid "cannot read ELF header: %s" msgstr "no se pudo leer encabezamiento ELF: %s" -#: src/readelf.c:917 +#: src/readelf.c:916 #, c-format msgid "cannot create EBL handle" msgstr "no se puede crear EBL" -#: src/readelf.c:930 +#: src/readelf.c:929 #, 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:1020 +#: src/readelf.c:961 +#, fuzzy, c-format +msgid "cannot read ELF: %s" +msgstr "no sepuede leer %s: %s" + +#: src/readelf.c:1022 msgid "NONE (None)" msgstr "NONE (Ninguno)" -#: src/readelf.c:1021 +#: src/readelf.c:1023 msgid "REL (Relocatable file)" msgstr "REL (Fichero reubicable)" -#: src/readelf.c:1022 +#: src/readelf.c:1024 msgid "EXEC (Executable file)" msgstr "EXEC (Fichero ejecutable)" -#: src/readelf.c:1023 +#: src/readelf.c:1025 msgid "DYN (Shared object file)" msgstr "DYN (Fichero objeto compartido)" -#: src/readelf.c:1024 +#: src/readelf.c:1026 msgid "CORE (Core file)" msgstr "CORE (Fichero núcleo)" -#: src/readelf.c:1029 +#: src/readelf.c:1031 #, c-format msgid "OS Specific: (%x)\n" msgstr "OS Specific: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1031 +#: src/readelf.c:1033 #, c-format msgid "Processor Specific: (%x)\n" msgstr "Específico del procesador: (%x)\n" -#: src/readelf.c:1041 +#: src/readelf.c:1043 msgid "" "ELF Header:\n" " Magic: " @@ -4213,7 +4221,7 @@ msgstr "" "Encabezamiento ELF:\n" " Mágico: " -#: src/readelf.c:1045 +#: src/readelf.c:1047 #, c-format msgid "" "\n" @@ -4222,120 +4230,120 @@ msgstr "" "\n" " Clase: %s\n" -#: src/readelf.c:1050 +#: src/readelf.c:1052 #, c-format msgid " Data: %s\n" msgstr " Datos: %s\n" -#: src/readelf.c:1056 +#: src/readelf.c:1058 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " Versión ident: %hhd %s\n" -#: src/readelf.c:1058 src/readelf.c:1075 +#: src/readelf.c:1060 src/readelf.c:1077 msgid "(current)" msgstr "(actual)" -#: src/readelf.c:1062 +#: src/readelf.c:1064 #, c-format msgid " OS/ABI: %s\n" msgstr " OS/ABI: %s\n" -#: src/readelf.c:1065 +#: src/readelf.c:1067 #, c-format msgid " ABI Version: %hhd\n" msgstr " Versión ABI: %hhd\n" -#: src/readelf.c:1068 +#: src/readelf.c:1070 msgid " Type: " msgstr " Tipo: " -#: src/readelf.c:1071 +#: src/readelf.c:1073 #, c-format msgid " Machine: %s\n" msgstr " Máquina: %s\n" -#: src/readelf.c:1073 +#: src/readelf.c:1075 #, c-format msgid " Version: %d %s\n" msgstr " Versión: %d %s\n" -#: src/readelf.c:1077 +#: src/readelf.c:1079 #, c-format msgid " Entry point address: %#\n" msgstr " Dirección de punto de entrada: %#\n" -#: src/readelf.c:1080 +#: src/readelf.c:1082 #, c-format msgid " Start of program headers: % %s\n" msgstr " Inicio de encabezamientos de programa: % %s\n" -#: src/readelf.c:1081 src/readelf.c:1084 +#: src/readelf.c:1083 src/readelf.c:1086 msgid "(bytes into file)" msgstr " (bytes en el archivo)" -#: src/readelf.c:1083 +#: src/readelf.c:1085 #, c-format msgid " Start of section headers: % %s\n" msgstr " Inicio de encabezamientos de sección: % %s\n" -#: src/readelf.c:1086 +#: src/readelf.c:1088 #, c-format msgid " Flags: %s\n" msgstr " Indicadores: %s\n" -#: src/readelf.c:1089 +#: src/readelf.c:1091 #, c-format msgid " Size of this header: % %s\n" msgstr " Tamaño de este encabezamiento: % %s\n" -#: src/readelf.c:1090 src/readelf.c:1093 src/readelf.c:1110 +#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 msgid "(bytes)" msgstr "(bytes)" -#: src/readelf.c:1092 +#: src/readelf.c:1094 #, c-format msgid " Size of program header entries: % %s\n" msgstr "" " Tamaño de las entradas en encabezamiento del programa: % %s\n" -#: src/readelf.c:1095 +#: src/readelf.c:1097 #, c-format msgid " Number of program headers entries: %" msgstr " Cantidad de entradas de encabezados de programa: %" -#: src/readelf.c:1102 +#: src/readelf.c:1104 #, c-format msgid " (% in [0].sh_info)" msgstr " (% in [0].sh_info)" -#: src/readelf.c:1105 src/readelf.c:1122 src/readelf.c:1136 +#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 msgid " ([0] not available)" msgstr " ([0] no disponible)" -#: src/readelf.c:1109 +#: src/readelf.c:1111 #, c-format msgid " Size of section header entries: % %s\n" msgstr "" " Tamaño de las entradas en el encabezamiento de sección: % %s\n" -#: src/readelf.c:1112 +#: src/readelf.c:1114 #, c-format msgid " Number of section headers entries: %" msgstr " Cantidad de entradas en los encabezamientos de sección: %" -#: src/readelf.c:1119 +#: src/readelf.c:1121 #, c-format msgid " (% in [0].sh_size)" msgstr " (% en [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1132 +#: src/readelf.c:1134 #, c-format msgid " (% in [0].sh_link)" msgstr " (% en [0].sh_link)" -#: src/readelf.c:1140 +#: src/readelf.c:1142 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4344,19 +4352,19 @@ msgstr "" " Índice de tabla de cadenas de sección de encabezamiento de : XINDEX%s\n" "\n" -#: src/readelf.c:1144 +#: src/readelf.c:1146 #, c-format msgid "" " Section header string table index: %\n" "\n" msgstr " Índice de tabla de cadenas de sección de encabezamiento: %\n" -#: src/readelf.c:1191 src/readelf.c:1399 +#: src/readelf.c:1193 src/readelf.c:1401 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "no se pudieron determinar el número de secciones: %s" -#: src/readelf.c:1194 +#: src/readelf.c:1196 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" @@ -4365,16 +4373,16 @@ msgstr "" "Hay %d encabezamientos de sección, comenzando en compensación %#:\n" "\n" -#: src/readelf.c:1203 +#: src/readelf.c:1205 #, 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:1206 +#: src/readelf.c:1208 msgid "Section Headers:" msgstr "encabezamientos de sección:" -#: src/readelf.c:1209 +#: src/readelf.c:1211 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4382,7 +4390,7 @@ msgstr "" "[Nr] Nombre Tipo Dirección Off Tamaño Inf Al " "Enlace banderas ES" -#: src/readelf.c:1211 +#: src/readelf.c:1213 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4390,36 +4398,36 @@ msgstr "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" -#: src/readelf.c:1216 +#: src/readelf.c:1218 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1218 +#: src/readelf.c:1220 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1294 +#: src/readelf.c:1296 #, 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:1305 +#: src/readelf.c:1307 #, 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:1323 +#: src/readelf.c:1325 msgid "Program Headers:" msgstr "encabezamientos de programa:" -#: src/readelf.c:1325 +#: src/readelf.c:1327 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:1328 +#: src/readelf.c:1330 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4427,12 +4435,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:1385 +#: src/readelf.c:1387 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[Solicitando intérprete de programa: %s]\n" -#: src/readelf.c:1412 +#: src/readelf.c:1414 msgid "" "\n" " Section to Segment mapping:\n" @@ -4442,12 +4450,12 @@ msgstr "" " Sección para asignación de segmento:\n" " Secciones de segmento..." -#: src/readelf.c:1423 src/unstrip.c:1973 src/unstrip.c:2015 src/unstrip.c:2022 +#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 #, c-format msgid "cannot get program header: %s" msgstr "no se puede obtener memoria para encabezamiento del programa: %s" -#: src/readelf.c:1566 +#: src/readelf.c:1571 #, c-format msgid "" "\n" @@ -4462,7 +4470,7 @@ msgstr[1] "" "\n" "Grupo de sección COMDAT [%2zu] '%s' con firma '%s' contiene entradas %zu:\n" -#: src/readelf.c:1571 +#: src/readelf.c:1576 #, c-format msgid "" "\n" @@ -4477,31 +4485,31 @@ msgstr[1] "" "\n" "Grupo de sección [%2zu] '%s' con firma '%s' contiene entradas %zu:\n" -#: src/readelf.c:1579 +#: src/readelf.c:1584 msgid "" msgstr "" -#: src/readelf.c:1593 +#: src/readelf.c:1598 msgid "" msgstr "" -#: src/readelf.c:1616 src/readelf.c:2343 src/readelf.c:3444 src/readelf.c:12310 -#: src/readelf.c:12317 src/readelf.c:12361 src/readelf.c:12368 +#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12371 +#: src/readelf.c:12378 src/readelf.c:12422 src/readelf.c:12429 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 +#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "No se puede obtener encabezamiento de sección: %s" -#: src/readelf.c:1765 src/readelf.c:2415 src/readelf.c:2673 src/readelf.c:2749 -#: src/readelf.c:3053 src/readelf.c:3127 src/readelf.c:5322 +#: 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 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr ".debug_line section inválida" -#: src/readelf.c:1768 +#: src/readelf.c:1773 #, c-format msgid "" "\n" @@ -4522,36 +4530,36 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:1778 +#: src/readelf.c:1783 msgid " Type Value\n" msgstr " Tipo Valor\n" -#: src/readelf.c:1802 +#: src/readelf.c:1807 #, c-format msgid "Shared library: [%s]\n" msgstr "Biblioteca compartida: [%s]\n" -#: src/readelf.c:1807 +#: src/readelf.c:1812 #, c-format msgid "Library soname: [%s]\n" msgstr "Nombre-so de la biblioteca: [%s]\n" -#: src/readelf.c:1812 +#: src/readelf.c:1817 #, c-format msgid "Library rpath: [%s]\n" msgstr "Rpath de la biblioteca: [%s]\n" -#: src/readelf.c:1817 +#: src/readelf.c:1822 #, c-format msgid "Library runpath: [%s]\n" msgstr "Ruta de ejecución de la biblioteca: [%s]\n" -#: src/readelf.c:1837 +#: src/readelf.c:1842 #, c-format msgid "% (bytes)\n" msgstr "% (bytes)\n" -#: src/readelf.c:1950 src/readelf.c:2140 +#: src/readelf.c:1955 src/readelf.c:2145 #, c-format msgid "" "\n" @@ -4560,7 +4568,7 @@ msgstr "" "\n" "Tabla de símbolos inválida en compensación %#0\n" -#: src/readelf.c:1968 src/readelf.c:2158 +#: src/readelf.c:1973 src/readelf.c:2163 #, c-format msgid "" "\n" @@ -4585,7 +4593,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:1983 src/readelf.c:2173 +#: src/readelf.c:1988 src/readelf.c:2178 #, c-format msgid "" "\n" @@ -4602,29 +4610,29 @@ msgstr[1] "" "Sección de reubicación [%2u] '%s' en compensación %#0 contiene " "entradas %d:\n" -#: src/readelf.c:1993 +#: src/readelf.c:1998 msgid " Offset Type Value Name\n" msgstr " Compensación Tipo Valor Nombre\n" -#: src/readelf.c:1995 +#: src/readelf.c:2000 msgid " Offset Type Value Name\n" msgstr " Compensación Tipo Valor Nombre\n" -#: src/readelf.c:2048 src/readelf.c:2059 src/readelf.c:2072 src/readelf.c:2093 -#: src/readelf.c:2105 src/readelf.c:2239 src/readelf.c:2251 src/readelf.c:2265 -#: src/readelf.c:2287 src/readelf.c:2300 +#: 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 msgid "" msgstr "" -#: src/readelf.c:2183 +#: src/readelf.c:2188 msgid " Offset Type Value Addend Name\n" msgstr " Compensación Tipo Valor Nombre Adend\n" -#: src/readelf.c:2185 +#: src/readelf.c:2190 msgid " Offset Type Value Addend Name\n" msgstr " Compensación Tipo Valor Nombre Adend\n" -#: src/readelf.c:2423 +#: src/readelf.c:2428 #, c-format msgid "" "\n" @@ -4639,40 +4647,40 @@ msgstr[1] "" "\n" "La tabla de símbolos [%2u] '%s' contiene entradas %u:\n" -#: src/readelf.c:2428 +#: src/readelf.c:2433 #, 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:2436 +#: src/readelf.c:2441 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:2438 +#: src/readelf.c:2443 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:2458 +#: src/readelf.c:2463 #, c-format msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -#: src/readelf.c:2546 +#: src/readelf.c:2551 #, c-format msgid "bad dynamic symbol" msgstr "símbolo dinámico erróneo" -#: src/readelf.c:2628 +#: src/readelf.c:2633 msgid "none" msgstr "nada" -#: src/readelf.c:2645 +#: src/readelf.c:2650 msgid "| " msgstr "| " -#: src/readelf.c:2676 +#: src/readelf.c:2681 #, c-format msgid "" "\n" @@ -4693,17 +4701,17 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:2697 +#: src/readelf.c:2702 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Versión: %hu Fichero: %s Conteo: %hu\n" -#: src/readelf.c:2710 +#: src/readelf.c:2715 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Nombre: %s Banderas: %s Versión: %hu\n" -#: src/readelf.c:2753 +#: src/readelf.c:2758 #, c-format msgid "" "\n" @@ -4724,19 +4732,19 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:2781 +#: src/readelf.c:2786 #, 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:2796 +#: src/readelf.c:2801 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: Principal %d: %s\n" #. Print the header. -#: src/readelf.c:3057 +#: src/readelf.c:3062 #, c-format msgid "" "\n" @@ -4757,15 +4765,15 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'" -#: src/readelf.c:3085 +#: src/readelf.c:3090 msgid " 0 *local* " msgstr " 0 *local* " -#: src/readelf.c:3090 +#: src/readelf.c:3095 msgid " 1 *global* " msgstr " 1 *global* " -#: src/readelf.c:3132 +#: src/readelf.c:3137 #, c-format msgid "" "\n" @@ -4790,22 +4798,22 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:3154 +#: src/readelf.c:3159 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " Longitud Número % of total Cobertura\n" -#: src/readelf.c:3156 +#: src/readelf.c:3161 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3163 +#: src/readelf.c:3168 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3176 +#: src/readelf.c:3181 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4814,37 +4822,37 @@ msgstr "" " Número promedio de pruebas: búsqueda exitosa: %f\n" " búsqueda sin éxito: %f\n" -#: src/readelf.c:3194 src/readelf.c:3258 src/readelf.c:3324 +#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 #, 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:3202 +#: src/readelf.c:3207 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3231 +#: src/readelf.c:3236 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3266 +#: src/readelf.c:3271 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3297 +#: src/readelf.c:3302 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3333 +#: src/readelf.c:3338 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3400 +#: src/readelf.c:3405 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4854,7 +4862,7 @@ msgstr "" " Tamaño de Bitmask: %zu bytes %%% bits establecen segundo " "cambio de dispersión: %u\n" -#: src/readelf.c:3489 +#: src/readelf.c:3494 #, c-format msgid "" "\n" @@ -4871,7 +4879,7 @@ msgstr[1] "" "Sección de lista de biblioteca [%2zu] '%s' en compensación %#0 " "contiene entradas %d:\n" -#: src/readelf.c:3503 +#: src/readelf.c:3508 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4879,7 +4887,7 @@ msgstr "" " Biblioteca Marca de tiempo Indicadores " "de versión de suma de verificación" -#: src/readelf.c:3553 +#: src/readelf.c:3558 #, c-format msgid "" "\n" @@ -4890,102 +4898,102 @@ msgstr "" "Sección de atributos de objeto [%2zu] '%s' de % bytes con " "desplazamiento %#0:\n" -#: src/readelf.c:3570 +#: src/readelf.c:3575 msgid " Owner Size\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:3599 +#: src/readelf.c:3604 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3638 +#: src/readelf.c:3643 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3643 +#: src/readelf.c:3648 #, c-format msgid " File: %11\n" msgstr " File: %11\n" -#: src/readelf.c:3692 +#: src/readelf.c:3697 #, c-format msgid " %s: %, %s\n" msgstr " %s: %, %s\n" -#: src/readelf.c:3695 +#: src/readelf.c:3700 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3698 +#: src/readelf.c:3703 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3708 +#: src/readelf.c:3713 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3711 +#: src/readelf.c:3716 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3781 +#: src/readelf.c:3786 #, fuzzy, c-format msgid "sprintf failure" msgstr "mprotect falló" -#: src/readelf.c:4263 +#: src/readelf.c:4268 msgid "empty block" msgstr "bloque vacío" -#: src/readelf.c:4266 +#: src/readelf.c:4271 #, c-format msgid "%zu byte block:" msgstr "bloque de byte %zu:" -#: src/readelf.c:4744 +#: src/readelf.c:4749 #, fuzzy, c-format msgid "%*s[%2] %s \n" msgstr "%*s[%4] %s \n" -#: src/readelf.c:4808 +#: src/readelf.c:4813 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# utilizado con direcciones de diferente tamaño" -#: src/readelf.c:4815 +#: src/readelf.c:4820 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# utilizado con offsetr de diferente tamaño" -#: src/readelf.c:4822 +#: src/readelf.c:4827 #, fuzzy, c-format msgid "%s %# used with different base addresses" msgstr "%s %# utilizado con direcciones de diferente tamaño" -#: src/readelf.c:4829 +#: src/readelf.c:4834 #, fuzzy, c-format msgid "%s %# used with different attribute %s and %s" msgstr "%s %# utilizado con direcciones de diferente tamaño" -#: src/readelf.c:4926 +#: src/readelf.c:4931 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:4934 +#: src/readelf.c:4939 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] ... % bytes ...\n" -#: src/readelf.c:5012 +#: src/readelf.c:5017 #, c-format msgid "" "\n" @@ -4996,7 +5004,7 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#:\n" " [ Código]\n" -#: src/readelf.c:5020 +#: src/readelf.c:5025 #, c-format msgid "" "\n" @@ -5005,20 +5013,20 @@ msgstr "" "\n" "Sección de abreviatura en compensación %:\n" -#: src/readelf.c:5033 +#: src/readelf.c:5038 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** error en lectura de abreviatura: %s\n" -#: src/readelf.c:5049 +#: src/readelf.c:5054 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] compensación: %, hijos: %s, etiqueta: %s\n" -#: src/readelf.c:5082 src/readelf.c:5391 src/readelf.c:5557 src/readelf.c:5942 -#: src/readelf.c:6543 src/readelf.c:8184 src/readelf.c:8854 src/readelf.c:9290 -#: src/readelf.c:9534 src/readelf.c:9699 src/readelf.c:10060 -#: src/readelf.c:10118 +#: 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:8870 src/readelf.c:9306 +#: src/readelf.c:9551 src/readelf.c:9717 src/readelf.c:10104 +#: src/readelf.c:10164 #, c-format msgid "" "\n" @@ -5027,52 +5035,52 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#:\n" -#: src/readelf.c:5095 +#: src/readelf.c:5100 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "no se pueden obtener datos de sección: %s" -#: src/readelf.c:5195 src/readelf.c:5219 src/readelf.c:5602 src/readelf.c:8899 +#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8915 #, fuzzy, c-format msgid " Length: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:5197 src/readelf.c:5234 src/readelf.c:5615 src/readelf.c:8912 +#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8928 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5198 src/readelf.c:5243 src/readelf.c:5624 src/readelf.c:8921 +#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8937 #, fuzzy, c-format msgid " Address size: %8\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:5200 src/readelf.c:5253 src/readelf.c:5634 src/readelf.c:8931 +#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8947 #, fuzzy, c-format msgid " Segment size: %8\n" msgstr " establecer archivo a %\n" -#: src/readelf.c:5238 src/readelf.c:5619 src/readelf.c:8916 src/readelf.c:10250 +#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8932 src/readelf.c:10296 #, fuzzy, c-format msgid "Unknown version" msgstr "versión desconocida" -#: src/readelf.c:5248 src/readelf.c:5461 src/readelf.c:5629 src/readelf.c:8926 +#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8942 #, fuzzy, c-format msgid "unsupported address size" msgstr "no hay valor de dirección" -#: src/readelf.c:5259 src/readelf.c:5472 src/readelf.c:5639 src/readelf.c:8936 +#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8952 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5312 src/readelf.c:5386 +#: src/readelf.c:5317 src/readelf.c:5391 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "no se ha podido obtener contenido de .debug_aranges: %s" -#: src/readelf.c:5327 +#: src/readelf.c:5332 #, c-format msgid "" "\n" @@ -5087,12 +5095,12 @@ msgstr[1] "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entradas %zu:\n" -#: src/readelf.c:5358 +#: src/readelf.c:5363 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5360 +#: src/readelf.c:5365 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -5100,7 +5108,7 @@ msgstr "" " Inicio [%*zu]: %0#*, longitud: %5, compensación CU DIE: " "%6\n" -#: src/readelf.c:5404 src/readelf.c:8211 +#: src/readelf.c:5409 src/readelf.c:8226 #, fuzzy, c-format msgid "" "\n" @@ -5109,152 +5117,152 @@ msgstr "" "\n" "Tabla en compensación %Zu:\n" -#: src/readelf.c:5408 src/readelf.c:5583 src/readelf.c:6567 src/readelf.c:8222 -#: src/readelf.c:8880 +#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 +#: src/readelf.c:8896 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:5424 +#: src/readelf.c:5429 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " (compensación: %#)" -#: src/readelf.c:5436 +#: src/readelf.c:5441 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5440 +#: src/readelf.c:5445 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5451 +#: src/readelf.c:5456 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " (compensación: %#)" -#: src/readelf.c:5457 +#: src/readelf.c:5462 #, fuzzy, c-format msgid " Address size: %6\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:5468 +#: src/readelf.c:5473 #, fuzzy, c-format msgid "" " Segment size: %6\n" "\n" msgstr " establecer archivo a %\n" -#: src/readelf.c:5523 +#: src/readelf.c:5528 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5566 +#: src/readelf.c:5572 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr "no se ha podido obtener contenido de .debug_ranges: %s" -#: src/readelf.c:5589 src/readelf.c:8886 +#: src/readelf.c:5595 src/readelf.c:8902 #, fuzzy, c-format msgid "" "Table at Offset 0x%:\n" "\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:5644 src/readelf.c:8941 +#: src/readelf.c:5650 src/readelf.c:8957 #, fuzzy, c-format msgid " Offset entries: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:5660 src/readelf.c:8957 +#: src/readelf.c:5666 src/readelf.c:8973 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5662 src/readelf.c:8959 +#: src/readelf.c:5668 src/readelf.c:8975 #, c-format msgid " CU [%6] base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8965 +#: src/readelf.c:5674 src/readelf.c:8981 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5679 src/readelf.c:8976 +#: src/readelf.c:5685 src/readelf.c:8992 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5683 src/readelf.c:8980 +#: src/readelf.c:5689 src/readelf.c:8996 #, fuzzy, c-format msgid " Offsets starting at 0x%:\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:5735 +#: src/readelf.c:5741 #, fuzzy, c-format msgid "invalid range list data" msgstr "datos inválidos" -#: src/readelf.c:5920 src/readelf.c:9268 +#: src/readelf.c:5926 src/readelf.c:9284 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:5937 +#: src/readelf.c:5943 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "no se ha podido obtener contenido de .debug_ranges: %s" -#: src/readelf.c:5973 src/readelf.c:9323 +#: src/readelf.c:5979 src/readelf.c:9339 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5975 src/readelf.c:9325 +#: src/readelf.c:5981 src/readelf.c:9341 #, c-format msgid "" "\n" " CU [%6] base: " msgstr "" -#: src/readelf.c:5984 src/readelf.c:9351 src/readelf.c:9377 +#: src/readelf.c:5990 src/readelf.c:9367 src/readelf.c:9393 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:6005 src/readelf.c:9457 +#: src/readelf.c:6011 src/readelf.c:9473 #, fuzzy, c-format msgid "" " [%6tx] base address\n" " " msgstr " [%6tx] (dirección base) %s\n" -#: src/readelf.c:6013 src/readelf.c:9465 +#: src/readelf.c:6019 src/readelf.c:9481 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] lista vacía\n" -#: src/readelf.c:6268 +#: src/readelf.c:6274 #, fuzzy msgid " \n" msgstr " \n" -#: src/readelf.c:6521 +#: src/readelf.c:6527 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "no se puede leer encabezamiento ELF: %s" -#: src/readelf.c:6539 +#: src/readelf.c:6545 #, c-format msgid "" "\n" @@ -5264,7 +5272,7 @@ msgstr "" "Sección de información de marco de llamada [%2zu] '%s' en compensación " "%#:\n" -#: src/readelf.c:6589 +#: src/readelf.c:6595 #, c-format msgid "" "\n" @@ -5273,65 +5281,65 @@ msgstr "" "\n" " [%6tx] Terminator cero\n" -#: src/readelf.c:6682 src/readelf.c:6836 +#: src/readelf.c:6696 src/readelf.c:6850 #, c-format msgid "invalid augmentation length" msgstr "longitud de aumento inválida" -#: src/readelf.c:6697 +#: src/readelf.c:6711 msgid "FDE address encoding: " msgstr "Codificación de dirección FDE:" -#: src/readelf.c:6703 +#: src/readelf.c:6717 msgid "LSDA pointer encoding: " msgstr "Codificación de puntero LSDA:" -#: src/readelf.c:6813 +#: src/readelf.c:6827 #, c-format msgid " (offset: %#)" msgstr " (compensación: %#)" -#: src/readelf.c:6820 +#: src/readelf.c:6834 #, c-format msgid " (end offset: %#)" msgstr " (fin de compensación: %#)" -#: src/readelf.c:6857 +#: src/readelf.c:6871 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr "Puntero %-26sLSDA: %#\n" -#: src/readelf.c:6942 +#: src/readelf.c:6956 #, fuzzy, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "No se puede obtener código de atributo: %s" -#: src/readelf.c:6952 +#: src/readelf.c:6966 #, fuzzy, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "No se puede obtener forma de atributo: %s" -#: src/readelf.c:6974 +#: src/readelf.c:6988 #, fuzzy, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "No se puede obtener valor: %s" -#: src/readelf.c:7307 +#: src/readelf.c:7321 #, fuzzy, c-format msgid "invalid file (%): %s" msgstr "Archivo inválido" -#: src/readelf.c:7311 +#: src/readelf.c:7325 #, fuzzy, c-format msgid "no srcfiles for CU [%]" msgstr " establecer archivo a %\n" -#: src/readelf.c:7315 +#: src/readelf.c:7329 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "no se puede leer encabezamiento ELF: %s" -#: src/readelf.c:7538 +#: src/readelf.c:7552 #, c-format msgid "" "\n" @@ -5342,12 +5350,12 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#:\n" " [Offset]\n" -#: src/readelf.c:7588 +#: src/readelf.c:7602 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "No se puede obtener próximo DIE: %s" -#: src/readelf.c:7607 +#: src/readelf.c:7621 #, fuzzy, c-format msgid "" " Type unit at offset %:\n" @@ -5360,7 +5368,7 @@ msgstr "" "Tamaño de dirección: %, Tamaño de compensación: %\n" " Tipo de firma: %#, Tipo de compensación: %#\n" -#: src/readelf.c:7619 +#: src/readelf.c:7633 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5371,39 +5379,39 @@ msgstr "" " Versión: %, Compensación de sección de abreviatura: %, " "Tamaño de dirección: %, Tamaño de compensación: %\n" -#: src/readelf.c:7629 src/readelf.c:7792 +#: src/readelf.c:7643 src/readelf.c:7806 #, c-format msgid " Unit type: %s (%)" msgstr "" -#: src/readelf.c:7656 +#: src/readelf.c:7670 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7685 +#: src/readelf.c:7699 #, c-format msgid "cannot get DIE offset: %s" msgstr "no se puede obtener DIE en compensación: %s" -#: src/readelf.c:7694 +#: src/readelf.c:7708 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "" "no se ha podido obtener etiqueta de DIE en compensación% en sección " "'%s': %s" -#: src/readelf.c:7732 +#: src/readelf.c:7746 #, c-format msgid "cannot get next DIE: %s\n" msgstr "No se puede obtener próximo DIE: %s\n" -#: src/readelf.c:7740 +#: src/readelf.c:7754 #, c-format msgid "cannot get next DIE: %s" msgstr "No se puede obtener próximo DIE: %s" -#: src/readelf.c:7784 +#: src/readelf.c:7798 #, fuzzy, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5414,7 +5422,7 @@ msgstr "" " Versión: %, Compensación de sección de abreviatura: %, " "Tamaño de dirección: %, Tamaño de compensación: %\n" -#: src/readelf.c:7835 +#: src/readelf.c:7850 #, fuzzy, c-format msgid "" "\n" @@ -5424,18 +5432,18 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#:\n" -#: src/readelf.c:8167 +#: src/readelf.c:8182 #, fuzzy, c-format msgid "unknown form: %s" msgstr "Forma % desconocida" -#: src/readelf.c:8198 +#: src/readelf.c:8213 #, 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:8300 +#: src/readelf.c:8315 #, fuzzy, c-format msgid "" "\n" @@ -5466,34 +5474,34 @@ msgstr "" "\n" "Códigos operativos:\n" -#: src/readelf.c:8322 +#: src/readelf.c:8337 #, 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:8330 +#: src/readelf.c:8345 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "no hay valor de dirección" -#: src/readelf.c:8338 +#: src/readelf.c:8353 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "No se puede encontrar la sección: %s" -#: src/readelf.c:8348 +#: src/readelf.c:8363 #, 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:8363 +#: src/readelf.c:8378 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] " [%*] argumento %hhu \n" msgstr[1] " [%*] argumento %hhu\n" -#: src/readelf.c:8374 +#: src/readelf.c:8389 msgid "" "\n" "Directory table:" @@ -5501,12 +5509,12 @@ msgstr "" "\n" "Tabla de Directorio:" -#: src/readelf.c:8380 src/readelf.c:8455 +#: src/readelf.c:8395 src/readelf.c:8470 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8449 +#: src/readelf.c:8464 #, fuzzy msgid "" "\n" @@ -5515,7 +5523,7 @@ msgstr "" "\n" " Tabla de sitio de llamada:" -#: src/readelf.c:8510 +#: src/readelf.c:8525 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5523,7 +5531,7 @@ msgstr "" "Tabla de nombre de archivo:\n" " Directorio de entrada Tiempo Tamaño Nombre" -#: src/readelf.c:8545 +#: src/readelf.c:8560 msgid "" "\n" "Line number statements:" @@ -5531,121 +5539,121 @@ msgstr "" "\n" " Declaraciones de número de Línea:" -#: src/readelf.c:8568 +#: src/readelf.c:8583 #, 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:8602 +#: src/readelf.c:8617 #, 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:8606 +#: src/readelf.c:8621 #, 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:8609 +#: src/readelf.c:8624 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8627 +#: src/readelf.c:8642 #, c-format msgid " extended opcode %u: " msgstr " Código operativo extendido %u: " -#: src/readelf.c:8632 +#: src/readelf.c:8647 #, fuzzy msgid " end of sequence" msgstr "Fin de secuencia" -#: src/readelf.c:8650 +#: src/readelf.c:8665 #, fuzzy, c-format msgid " set address to " msgstr "Establecer dirección a %s\n" -#: src/readelf.c:8678 +#: src/readelf.c:8693 #, fuzzy, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" "definir nuevo archivo: dir=%u, mtime=%, longitud=%, nombre=" "%s\n" -#: src/readelf.c:8691 +#: src/readelf.c:8706 #, c-format msgid " set discriminator to %u\n" msgstr " establecer discriminador a %u\n" #. Unknown, ignore it. -#: src/readelf.c:8696 +#: src/readelf.c:8711 #, fuzzy msgid " unknown opcode" msgstr "código operativo desconocido " #. Takes no argument. -#: src/readelf.c:8708 +#: src/readelf.c:8723 msgid " copy" msgstr "Copiar" -#: src/readelf.c:8717 +#: src/readelf.c:8732 #, fuzzy, c-format msgid " advance address by %u to " msgstr "Dirección de avance por %u a %s\n" -#: src/readelf.c:8721 src/readelf.c:8777 +#: src/readelf.c:8736 src/readelf.c:8792 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8731 +#: src/readelf.c:8746 #, c-format msgid " advance line by constant %d to %\n" msgstr " línea de avance por la constante %d a %\n" -#: src/readelf.c:8739 +#: src/readelf.c:8754 #, c-format msgid " set file to %\n" msgstr " establecer archivo a %\n" -#: src/readelf.c:8749 +#: src/readelf.c:8764 #, c-format msgid " set column to %\n" msgstr " Establecer columna a %\n" -#: src/readelf.c:8756 +#: src/readelf.c:8771 #, c-format msgid " set '%s' to %\n" msgstr "Establecer '%s' a %\n" #. Takes no argument. -#: src/readelf.c:8762 +#: src/readelf.c:8777 msgid " set basic block flag" msgstr "Establecer bandera de bloque básico" -#: src/readelf.c:8773 +#: src/readelf.c:8788 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr "Dirección de avance por constante %u a %s\n" -#: src/readelf.c:8792 +#: src/readelf.c:8807 #, 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:8802 +#: src/readelf.c:8817 msgid " set prologue end flag" msgstr " Establecer bandera prologue_end" #. Takes no argument. -#: src/readelf.c:8807 +#: src/readelf.c:8822 msgid " set epilogue begin flag" msgstr " Establecer bandera epilogue_begin" -#: src/readelf.c:8816 +#: src/readelf.c:8831 #, c-format msgid " set isa to %u\n" msgstr " establecer isa para %u\n" @@ -5653,105 +5661,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:8825 +#: src/readelf.c:8840 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" msgstr[0] " opcódigo con parámetro % desconocido:" msgstr[1] " opcódigo con parámetros % desconocido:" -#: src/readelf.c:8863 +#: src/readelf.c:8879 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr "no es posible obtener contenido de .debug_loc: %s" -#: src/readelf.c:9032 +#: src/readelf.c:9048 #, fuzzy, c-format msgid "invalid loclists data" msgstr "datos inválidos" -#: src/readelf.c:9285 +#: src/readelf.c:9301 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "no es posible obtener contenido de .debug_loc: %s" -#: src/readelf.c:9492 src/readelf.c:10506 +#: src/readelf.c:9508 src/readelf.c:10552 msgid " \n" msgstr " \n" -#: src/readelf.c:9546 src/readelf.c:9709 +#: src/readelf.c:9563 src/readelf.c:9726 #, 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:9626 +#: src/readelf.c:9643 #, 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:9649 +#: src/readelf.c:9666 #, 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:9750 +#: src/readelf.c:9767 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:9762 +#: src/readelf.c:9779 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:9768 src/readelf.c:10625 +#: src/readelf.c:9785 src/readelf.c:10672 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:9775 +#: src/readelf.c:9792 #, fuzzy, c-format -msgid " Flag: 0x%\n" +msgid " Flag: 0x%" msgstr " Dirección de punto de entrada: %#\n" -#: src/readelf.c:9778 +#: src/readelf.c:9821 #, fuzzy, c-format msgid " Offset length: %\n" msgstr " (compensación: %#)" -#: src/readelf.c:9786 +#: src/readelf.c:9829 #, fuzzy, c-format msgid " .debug_line offset: 0x%\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:9811 +#: src/readelf.c:9854 #, fuzzy, c-format msgid " extension opcode table, % items:\n" msgstr " opcódigo con parámetro % desconocido:" -#: src/readelf.c:9818 +#: src/readelf.c:9861 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:9830 +#: src/readelf.c:9873 #, fuzzy, c-format msgid " % arguments:" msgstr " [%*] argumento %hhu \n" -#: src/readelf.c:9845 +#: src/readelf.c:9888 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10046 +#: src/readelf.c:10089 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" " Compensación [%5d] DIE: %6, Compensación CU DIE: %6, " "nombre: %s\n" -#: src/readelf.c:10088 +#: src/readelf.c:10133 #, c-format msgid "" "\n" @@ -5762,37 +5770,37 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#:\n" " %*s String\n" -#: src/readelf.c:10103 +#: src/readelf.c:10148 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** error en lectura de cadenas: %s\n" -#: src/readelf.c:10131 +#: src/readelf.c:10177 #, 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:10230 +#: src/readelf.c:10276 #, fuzzy, c-format msgid " Length: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:10232 +#: src/readelf.c:10278 #, fuzzy, c-format msgid " Offset size: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:10246 +#: src/readelf.c:10292 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10255 +#: src/readelf.c:10301 #, fuzzy, c-format msgid " Padding: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:10309 +#: src/readelf.c:10355 #, c-format msgid "" "\n" @@ -5801,7 +5809,7 @@ msgstr "" "\n" "Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10411 +#: src/readelf.c:10457 #, c-format msgid "" "\n" @@ -5810,22 +5818,22 @@ msgstr "" "\n" "Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10434 +#: src/readelf.c:10480 #, c-format msgid " LPStart encoding: %#x " msgstr "Codificación LPStart: %#x " -#: src/readelf.c:10446 +#: src/readelf.c:10492 #, c-format msgid " TType encoding: %#x " msgstr "Codificación TType: %#x " -#: src/readelf.c:10461 +#: src/readelf.c:10507 #, c-format msgid " Call site encoding: %#x " msgstr "Codificación de sitio de llamada: %#x " -#: src/readelf.c:10474 +#: src/readelf.c:10520 msgid "" "\n" " Call site table:" @@ -5833,7 +5841,7 @@ msgstr "" "\n" " Tabla de sitio de llamada:" -#: src/readelf.c:10488 +#: src/readelf.c:10534 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5846,12 +5854,12 @@ msgstr "" " Landing pad: %#\n" " Action: %u\n" -#: src/readelf.c:10561 +#: src/readelf.c:10607 #, c-format msgid "invalid TType encoding" msgstr "Codificación TType inválida" -#: src/readelf.c:10587 +#: src/readelf.c:10634 #, fuzzy, c-format msgid "" "\n" @@ -5860,37 +5868,37 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:10616 +#: src/readelf.c:10663 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:10634 +#: src/readelf.c:10681 #, fuzzy, c-format msgid " CU offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:10641 +#: src/readelf.c:10688 #, fuzzy, c-format msgid " TU offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:10648 +#: src/readelf.c:10695 #, fuzzy, c-format msgid " address offset: %#\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:10655 +#: src/readelf.c:10702 #, fuzzy, c-format msgid " symbol offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:10662 +#: src/readelf.c:10709 #, fuzzy, c-format msgid " constant offset: %#\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:10676 +#: src/readelf.c:10723 #, fuzzy, c-format msgid "" "\n" @@ -5899,7 +5907,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:10701 +#: src/readelf.c:10748 #, fuzzy, c-format msgid "" "\n" @@ -5908,7 +5916,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:10730 +#: src/readelf.c:10777 #, fuzzy, c-format msgid "" "\n" @@ -5917,7 +5925,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:10762 +#: src/readelf.c:10809 #, fuzzy, c-format msgid "" "\n" @@ -5926,18 +5934,18 @@ msgstr "" "\n" "Tabla de símbolos inválida en compensación %#0\n" -#: src/readelf.c:10900 +#: src/readelf.c:10947 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "no se puede depurar descriptor de contexto: %s" -#: src/readelf.c:11263 src/readelf.c:11885 src/readelf.c:11996 -#: src/readelf.c:12054 +#: src/readelf.c:11310 src/readelf.c:11932 src/readelf.c:12043 +#: src/readelf.c:12101 #, c-format msgid "cannot convert core note data: %s" msgstr "no es posible convertir datos de la nota principal: %s" -#: src/readelf.c:11626 +#: src/readelf.c:11673 #, c-format msgid "" "\n" @@ -5946,21 +5954,21 @@ msgstr "" "\n" "%*s... ..." -#: src/readelf.c:12133 +#: src/readelf.c:12180 msgid " Owner Data size Type\n" msgstr " Owner Data size Type\n" -#: src/readelf.c:12151 +#: src/readelf.c:12209 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:12201 +#: src/readelf.c:12261 #, 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:12228 +#: src/readelf.c:12288 #, c-format msgid "" "\n" @@ -5969,7 +5977,7 @@ msgstr "" "\n" "Sección de nota [%2zu] '%s' de % bytes en compensación %#0:\n" -#: src/readelf.c:12251 +#: src/readelf.c:12311 #, c-format msgid "" "\n" @@ -5978,7 +5986,7 @@ msgstr "" "\n" "Segmento de nota de % bytes en compensación %#0:\n" -#: src/readelf.c:12297 +#: src/readelf.c:12358 #, fuzzy, c-format msgid "" "\n" @@ -5987,12 +5995,12 @@ msgstr "" "\n" "Sección [%Zu] '%s' no tiene datos para volcar.\n" -#: src/readelf.c:12324 src/readelf.c:12375 +#: src/readelf.c:12385 src/readelf.c:12436 #, 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:12329 +#: src/readelf.c:12390 #, fuzzy, c-format msgid "" "\n" @@ -6002,7 +6010,7 @@ msgstr "" "Volcado Hex de sección [%Zu] '%s', % bytes en compensación " "%#0:\n" -#: src/readelf.c:12334 +#: src/readelf.c:12395 #, fuzzy, c-format msgid "" "\n" @@ -6013,7 +6021,7 @@ msgstr "" "Volcado Hex de sección [%Zu] '%s', % bytes en compensación " "%#0:\n" -#: src/readelf.c:12348 +#: src/readelf.c:12409 #, fuzzy, c-format msgid "" "\n" @@ -6022,7 +6030,7 @@ msgstr "" "\n" "Sección [%Zu] '%s' no tiene datos para volcar.\n" -#: src/readelf.c:12380 +#: src/readelf.c:12441 #, fuzzy, c-format msgid "" "\n" @@ -6032,7 +6040,7 @@ msgstr "" "Sección de cadena [%Zu] '%s' contiene % bytes en compensación " "%#0:\n" -#: src/readelf.c:12385 +#: src/readelf.c:12446 #, fuzzy, c-format msgid "" "\n" @@ -6043,7 +6051,7 @@ msgstr "" "Sección de cadena [%Zu] '%s' contiene % bytes en compensación " "%#0:\n" -#: src/readelf.c:12434 +#: src/readelf.c:12495 #, c-format msgid "" "\n" @@ -6052,7 +6060,7 @@ msgstr "" "\n" "sección [%lu] no existe" -#: src/readelf.c:12463 +#: src/readelf.c:12524 #, c-format msgid "" "\n" @@ -6061,12 +6069,12 @@ msgstr "" "\n" "sección '%s' no existe" -#: src/readelf.c:12520 +#: src/readelf.c:12581 #, 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:12523 +#: src/readelf.c:12584 #, c-format msgid "" "\n" @@ -6075,7 +6083,7 @@ msgstr "" "\n" "Archivo '%s' no tiene índice de símbolo\n" -#: src/readelf.c:12527 +#: src/readelf.c:12588 #, fuzzy, c-format msgid "" "\n" @@ -6084,12 +6092,12 @@ msgstr "" "\n" "Índice de archivo '%s' tiene %Zu entradas:\n" -#: src/readelf.c:12545 +#: src/readelf.c:12606 #, 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:12550 +#: src/readelf.c:12611 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Miembro de archivo contiene '%s':\n" @@ -6156,12 +6164,12 @@ msgstr "Radical inválido: %s" msgid "%s: file format not recognized" msgstr "%s: No se reconoce el formato del fichero" -#: src/size.c:416 src/size.c:549 +#: src/size.c:418 src/size.c:551 #, c-format msgid " (ex %s)" msgstr " (ex %s)" -#: src/size.c:574 +#: src/size.c:576 msgid "(TOTALS)\n" msgstr "(TOTALES)\n" @@ -6350,94 +6358,114 @@ msgstr "mprotect falló" msgid "Skipping section %zd '%s' data outside file" msgstr "" -#: src/strip.c:70 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "Colocar la salida obtenida en FICHERO" -#: src/strip.c:71 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "Extraer secciones eliminadas en FICHERO" -#: src/strip.c:72 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "Incorporar nombre FILE en lugar de argumento -f" -#: src/strip.c:76 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "Elimina todos los símbolos de depuración" -#: src/strip.c:80 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "Quitar sección de cabeceras (no recomendado)" -#: src/strip.c:82 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "Copiar marcas de tiempo modificadas/acceso a la salida" -#: src/strip.c:84 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " "operation is not reversable, needs -f)" msgstr "" -#: src/strip.c:86 +#: src/strip.c:87 +msgid "" +"Similar to --reloc-debug-sections, but resolve all trivial relocations " +"between debug sections in place. No other stripping is performed (operation " +"is not reversable, incompatible with -f, -g, --remove-comment and --remove-" +"section)" +msgstr "" + +#: src/strip.c:89 msgid "Remove .comment section" msgstr "Quitar sección de comentario" -#: src/strip.c:87 +#: src/strip.c:90 msgid "" "Remove the named section. SECTION is an extended wildcard pattern. May be " "given more than once. Only non-allocated sections can be removed." msgstr "" -#: src/strip.c:88 +#: src/strip.c:91 msgid "" "Keep the named section. SECTION is an extended wildcard pattern. May be " "given more than once." msgstr "" #. Short description of program. -#: src/strip.c:95 +#: src/strip.c:98 msgid "Discard symbols from object files." msgstr "Descarta símbolos de archivos objeto." -#: src/strip.c:241 +#: src/strip.c:247 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "" -#: src/strip.c:255 +#: src/strip.c:253 +#, c-format +msgid "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" +msgstr "" + +#: src/strip.c:267 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "Sólo se permite ingresar un archivo junto con '-o' y '-f'" -#: src/strip.c:278 +#: src/strip.c:290 #, c-format msgid "-f option specified twice" msgstr "opción -f especificada dos veces" -#: src/strip.c:287 +#: src/strip.c:299 #, c-format msgid "-F option specified twice" msgstr "opción -F especificada dos veces" -#: src/strip.c:346 +#: src/strip.c:362 #, fuzzy, c-format msgid "cannot both keep and remove .comment section" msgstr "Quitar sección de comentario" -#: src/strip.c:371 src/strip.c:395 +#: src/strip.c:574 +#, fuzzy, c-format +msgid "bad relocation" +msgstr "Mostrar reubicaciones" + +#: src/strip.c:726 src/strip.c:750 #, c-format msgid "cannot stat input file '%s'" msgstr "no sepuede stat fichero de entrada '%s'" -#: src/strip.c:385 +#: src/strip.c:740 #, c-format msgid "while opening '%s'" msgstr "mientras se abría '%s'" -#: src/strip.c:423 +#: src/strip.c:778 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo" @@ -6448,132 +6476,132 @@ msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo" #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:435 +#: src/strip.c:790 #, fuzzy, c-format msgid "%s: no support for stripping archive" msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo" -#: src/strip.c:534 +#: src/strip.c:1001 #, c-format msgid "cannot open EBL backend" msgstr "No se puede abrir el segundo plano EBL" -#: src/strip.c:579 +#: src/strip.c:1046 #, fuzzy, c-format msgid "cannot get number of phdrs" msgstr "no se pudo determinar la cantidad de encabezados de programa: %s" -#: src/strip.c:595 src/strip.c:619 -#, c-format -msgid "cannot create new file '%s': %s" +#: src/strip.c:1060 src/strip.c:1103 +#, fuzzy, c-format +msgid "cannot create new ehdr for file '%s': %s" msgstr "no se puede crear fichero nuevo '%s': %s" -#: src/strip.c:701 +#: src/strip.c:1070 src/strip.c:1113 +#, fuzzy, c-format +msgid "cannot create new phdr for file '%s': %s" +msgstr "no se puede crear fichero nuevo '%s': %s" + +#: src/strip.c:1194 #, c-format msgid "illformed file '%s'" msgstr "Fichero illformed '%s'" -#: src/strip.c:711 +#: src/strip.c:1204 #, fuzzy, c-format msgid "Cannot remove allocated section '%s'" msgstr "No se puede asignar sección PLT: %s" -#: src/strip.c:720 +#: src/strip.c:1213 #, fuzzy, c-format msgid "Cannot both keep and remove section '%s'" msgstr "No se puede añadir nueva sección: %s" -#: src/strip.c:1076 src/strip.c:1210 +#: src/strip.c:1573 src/strip.c:1688 #, c-format msgid "while generating output file: %s" msgstr "al generar fichero de salida: %s" -#: src/strip.c:1141 +#: src/strip.c:1637 #, fuzzy, c-format -msgid "%s: error while getting shdrstrndx: %s" +msgid "%s: error while updating ELF header: %s" msgstr "%s: error al crear encabezamiento ELF: %s" -#: src/strip.c:1157 +#: src/strip.c:1646 #, fuzzy, c-format -msgid "%s: error getting zero section: %s" -msgstr "%s: error al leer el fichero: %s" +msgid "%s: error while getting shdrstrndx: %s" +msgstr "%s: error al crear encabezamiento ELF: %s" -#: src/strip.c:1166 +#: src/strip.c:1654 src/strip.c:2534 #, fuzzy, c-format -msgid "%s: error while updating zero section: %s" -msgstr "%s: error al leer el fichero: %s" - -#: src/strip.c:1176 src/strip.c:2292 -#, c-format -msgid "%s: error while creating ELF header: %s" +msgid "%s: error updating shdrstrndx: %s" msgstr "%s: error al crear encabezamiento ELF: %s" -#: src/strip.c:1193 +#: src/strip.c:1671 #, c-format msgid "while preparing output for '%s'" msgstr "al preparar salida para '%s'" -#: src/strip.c:1255 src/strip.c:1318 +#: src/strip.c:1733 src/strip.c:1796 #, c-format msgid "while create section header section: %s" msgstr "al crear sección de encabezamiento de sección: %s" -#: src/strip.c:1264 +#: src/strip.c:1742 #, c-format msgid "cannot allocate section data: %s" msgstr "no se puede asignar espacio para los datos: %s" -#: src/strip.c:1330 +#: src/strip.c:1808 #, c-format msgid "while create section header string table: %s" msgstr "al crear tabla de cadenas de encabezamiento de sección: %s" -#: src/strip.c:1337 +#: src/strip.c:1815 #, fuzzy, c-format msgid "no memory to create section header string table" msgstr "al crear tabla de cadenas de encabezamiento de sección: %s" -#: src/strip.c:1547 +#: src/strip.c:2027 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2078 -#, fuzzy, c-format -msgid "bad relocation" -msgstr "Mostrar reubicaciones" - -#: src/strip.c:2203 src/strip.c:2316 +#: src/strip.c:2450 src/strip.c:2558 #, c-format msgid "while writing '%s': %s" msgstr "al escribir '%s': %s" -#: src/strip.c:2214 +#: src/strip.c:2461 #, c-format msgid "while creating '%s'" msgstr "al crear '%s'" -#: src/strip.c:2237 +#: src/strip.c:2484 #, 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:2301 +#: src/strip.c:2525 +#, c-format +msgid "%s: error while creating ELF header: %s" +msgstr "%s: error al crear encabezamiento ELF: %s" + +#: src/strip.c:2543 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: error al leer el fichero: %s" -#: src/strip.c:2341 src/strip.c:2361 +#: src/strip.c:2583 src/strip.c:2603 #, c-format msgid "while writing '%s'" msgstr "al escribir '%s'" -#: src/strip.c:2398 src/strip.c:2405 +#: src/strip.c:2640 src/strip.c:2647 #, c-format msgid "error while finishing '%s': %s" msgstr "Error al terminar '%s': %s" -#: src/strip.c:2422 src/strip.c:2498 +#: src/strip.c:2664 src/strip.c:2740 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "no es posible establecer acceso y fecha de modificación de '%s'" @@ -6661,196 +6689,226 @@ 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:257 +#: src/unstrip.c:248 src/unstrip.c:2034 +#, c-format +msgid "cannot get ELF header: %s" +msgstr "no se puede leer encabezamiento ELF: %s" + +#: src/unstrip.c:258 #, fuzzy, c-format msgid "cannot get new zero section: %s" msgstr "No se puede encontrar la sección: %s" -#: src/unstrip.c:260 +#: src/unstrip.c:261 #, fuzzy, c-format msgid "cannot update new zero section: %s" msgstr "no se puede actualizar reubicación: %s" -#: src/unstrip.c:264 +#: src/unstrip.c:265 #, c-format msgid "cannot copy ELF header: %s" msgstr "no se puede copiar encabezamiento ELF: %s" -#: src/unstrip.c:268 src/unstrip.c:1962 src/unstrip.c:2005 +#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 #, 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:273 src/unstrip.c:1966 +#: src/unstrip.c:274 src/unstrip.c:2056 #, c-format msgid "cannot create program headers: %s" msgstr "No pueden crear encabezamientos de programa: %s" -#: src/unstrip.c:279 +#: src/unstrip.c:280 #, c-format msgid "cannot copy program header: %s" msgstr "no puede copiar encabezamiento de programa: %s" -#: src/unstrip.c:289 +#: src/unstrip.c:290 #, c-format msgid "cannot copy section header: %s" msgstr "no se puede copiar encabezamiento de sección: %s" -#: src/unstrip.c:292 src/unstrip.c:1597 +#: src/unstrip.c:293 src/unstrip.c:1665 #, c-format msgid "cannot get section data: %s" msgstr "no se pueden obtener datos de sección: %s" -#: src/unstrip.c:294 src/unstrip.c:1599 +#: src/unstrip.c:295 src/unstrip.c:1667 #, c-format msgid "cannot copy section data: %s" msgstr "no pueden copiar datos de sección: %s" -#: src/unstrip.c:318 +#: src/unstrip.c:319 #, c-format msgid "cannot create directory '%s'" msgstr "no se puede crear el directorio '%s'" -#: src/unstrip.c:390 src/unstrip.c:820 src/unstrip.c:1631 +#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 #, c-format msgid "cannot get symbol table entry: %s" msgstr "no se puede obtener entrada de tabla de símbolos: %s" -#: src/unstrip.c:406 src/unstrip.c:631 src/unstrip.c:652 src/unstrip.c:664 -#: src/unstrip.c:1652 src/unstrip.c:1828 src/unstrip.c:1852 +#: 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 #, c-format msgid "cannot update symbol table: %s" msgstr "no se puede actualizar tabla de símbolos: %s" -#: src/unstrip.c:416 +#: src/unstrip.c:417 #, c-format msgid "cannot update section header: %s" msgstr "no se puede actualizar encabezamiento de sección: %s" -#: src/unstrip.c:455 src/unstrip.c:466 +#: src/unstrip.c:459 src/unstrip.c:473 #, c-format msgid "cannot update relocation: %s" msgstr "no se puede actualizar reubicación: %s" -#: src/unstrip.c:554 +#: src/unstrip.c:570 #, c-format msgid "cannot get symbol version: %s" msgstr "no se puede obtener versión de símbolo: %s" -#: src/unstrip.c:567 +#: src/unstrip.c:583 #, fuzzy, c-format msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "tipo de sección inesperado en [%Zu] con sh_link para symtab" -#: src/unstrip.c:826 +#: src/unstrip.c:851 #, fuzzy, c-format msgid "invalid string offset in symbol [%zu]" msgstr "compensación de cadena inválida en símbolo [%Zu]" -#: src/unstrip.c:984 src/unstrip.c:1334 +#: src/unstrip.c:1009 src/unstrip.c:1398 #, fuzzy, c-format msgid "cannot read section [%zu] name: %s" msgstr "no se puede leer nombre [%Zu]: %s" -#: src/unstrip.c:1025 src/unstrip.c:1044 src/unstrip.c:1082 +#: src/unstrip.c:1024 +#, fuzzy, c-format +msgid "bad sh_link for group section: %s" +msgstr ".debug_line section inválida" + +#: src/unstrip.c:1030 +#, 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 +#, 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 +#, 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 +#, 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 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "no se puede leer sección '.gnu.prelink_undo': %s" -#: src/unstrip.c:1062 +#: src/unstrip.c:1125 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "" -#: src/unstrip.c:1073 +#: src/unstrip.c:1136 #, c-format msgid "invalid contents in '%s' section" msgstr "contenido inválido en sección '%s'" -#: src/unstrip.c:1128 src/unstrip.c:1456 +#: src/unstrip.c:1192 src/unstrip.c:1524 #, 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:1253 src/unstrip.c:1268 src/unstrip.c:1535 src/unstrip.c:1787 +#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 #, 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:1277 +#: src/unstrip.c:1341 #, 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:1305 src/unstrip.c:1309 +#: src/unstrip.c:1369 src/unstrip.c:1373 #, 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:1313 src/unstrip.c:1317 src/unstrip.c:1550 +#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 #, c-format msgid "cannot get section count: %s" msgstr "No se puede obtener cuenta de sección: %s" -#: src/unstrip.c:1320 +#: src/unstrip.c:1384 #, 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:1379 src/unstrip.c:1471 +#: src/unstrip.c:1446 src/unstrip.c:1539 #, 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:1529 +#: src/unstrip.c:1597 #, c-format msgid "cannot add new section: %s" msgstr "No se puede añadir nueva sección: %s" -#: src/unstrip.c:1639 +#: src/unstrip.c:1710 #, fuzzy, c-format msgid "symbol [%zu] has invalid section index" msgstr "símbolo [%Zu] tiene índice de sección inválido" -#: src/unstrip.c:1923 +#: src/unstrip.c:1742 +#, 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 #, c-format msgid "cannot read section data: %s" msgstr "no se puede leer la sección de datos: %s" -#: src/unstrip.c:1944 -#, c-format -msgid "cannot get ELF header: %s" -msgstr "no se puede leer encabezamiento ELF: %s" - -#: src/unstrip.c:1952 +#: src/unstrip.c:2042 #, c-format msgid "cannot update ELF header: %s" msgstr "No se puede actualizar encabezamiento ELF: %s" -#: src/unstrip.c:1976 +#: src/unstrip.c:2066 #, c-format msgid "cannot update program header: %s" msgstr "no se puede actualizar encabezamiento de programa: %s" -#: src/unstrip.c:1981 src/unstrip.c:2063 +#: src/unstrip.c:2071 src/unstrip.c:2153 #, c-format msgid "cannot write output file: %s" msgstr "no se puede escribir al archivo de salida: %s" -#: src/unstrip.c:2032 +#: src/unstrip.c:2122 #, 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:2035 +#: src/unstrip.c:2125 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" @@ -6858,77 +6916,77 @@ msgstr "" "Datos DWARF en '%s' no se ajustan a polarización de pre-enlace; considere " "prelink -u" -#: src/unstrip.c:2054 src/unstrip.c:2105 src/unstrip.c:2117 src/unstrip.c:2203 +#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "no se puede crear un descriptor ELF: %s" -#: src/unstrip.c:2096 +#: src/unstrip.c:2186 msgid "WARNING: " msgstr "" -#: src/unstrip.c:2098 +#: src/unstrip.c:2188 msgid ", use --force" msgstr "" -#: src/unstrip.c:2121 +#: src/unstrip.c:2211 msgid "ELF header identification (e_ident) different" msgstr "" -#: src/unstrip.c:2124 +#: src/unstrip.c:2214 msgid "ELF header type (e_type) different" msgstr "" -#: src/unstrip.c:2127 +#: src/unstrip.c:2217 msgid "ELF header machine type (e_machine) different" msgstr "" -#: src/unstrip.c:2130 +#: src/unstrip.c:2220 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "" -#: src/unstrip.c:2160 +#: src/unstrip.c:2250 #, 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:2164 +#: src/unstrip.c:2254 #, 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:2179 +#: src/unstrip.c:2269 #, 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:2183 +#: src/unstrip.c:2273 #, 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:2196 +#: src/unstrip.c:2286 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "No se obtuvo el archivo '%s' de módulo '%s' " -#: src/unstrip.c:2227 +#: src/unstrip.c:2317 #, 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:2360 +#: src/unstrip.c:2450 #, c-format msgid "no matching modules found" msgstr "No se encontraron módulos coincidentes" -#: src/unstrip.c:2369 +#: src/unstrip.c:2459 #, c-format msgid "matched more than one module" msgstr "coincidió con más de un módulo" -#: src/unstrip.c:2413 +#: src/unstrip.c:2503 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" @@ -6936,7 +6994,7 @@ msgstr "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" -#: src/unstrip.c:2414 +#: src/unstrip.c:2504 #, fuzzy msgid "" "Combine stripped files with separate symbols and debug information.\n" @@ -7002,6 +7060,14 @@ msgstr "También mostrar nombres de función" msgid "Show instances of inlined functions" msgstr "" +#, fuzzy +#~ msgid "%s: error getting zero section: %s" +#~ msgstr "%s: error al leer el fichero: %s" + +#, fuzzy +#~ msgid "%s: error while updating zero section: %s" +#~ msgstr "%s: error al leer el fichero: %s" + #~ msgid "%s+%# <%s+%#>" #~ msgstr "%s+%# <%s+%#>" @@ -7524,9 +7590,6 @@ msgstr "" #~ msgid "internal error: non-nobits section follows nobits section" #~ msgstr "error interno: sección non-nobits sigue a sección nobits" -#~ msgid "cannot get header of 0th section: %s" -#~ msgstr "No se puede obtener encabezamiento de sección 0th: %s" - #~ msgid "linker backend didn't specify function to relocate section" #~ msgstr "" #~ "enlazador de segundo plano no especificó función para reubicar sección" diff --git a/po/ja.po b/po/ja.po index 9ea59ec4..1823da2d 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-09-14 12:05+0200\n" +"POT-Creation-Date: 2018-11-14 13:04+0100\n" "PO-Revision-Date: 2009-09-20 15:32+0900\n" "Last-Translator: Hyu_gabaru Ryu_ichi \n" "Language-Team: Japanese \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:3409 -#: src/readelf.c:11212 src/unstrip.c:2256 src/unstrip.c:2462 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 +#: src/readelf.c:11259 src/unstrip.c:2346 src/unstrip.c:2552 #, 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:2403 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 msgid "Input selection options:" msgstr "選択オプションを入力してください:" @@ -527,8 +527,8 @@ msgstr "不当な ELF ファイル" msgid "No backend" msgstr "バックエンドがありません" -#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 -#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 +#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" @@ -539,58 +539,58 @@ msgstr "<不明>" msgid ": %#" msgstr "<不明>: %#" -#: libebl/eblobjnote.c:53 +#: libebl/eblobjnote.c:58 #, fuzzy, c-format msgid "unknown SDT version %u\n" msgstr "不明なバージョン" -#: libebl/eblobjnote.c:71 +#: libebl/eblobjnote.c:76 #, fuzzy, c-format msgid "invalid SDT probe descriptor\n" msgstr "不当なファイル記述子" -#: libebl/eblobjnote.c:121 +#: libebl/eblobjnote.c:126 #, c-format msgid " PC: " msgstr "" -#: libebl/eblobjnote.c:123 +#: libebl/eblobjnote.c:128 #, c-format msgid " Base: " msgstr "" -#: libebl/eblobjnote.c:125 +#: libebl/eblobjnote.c:130 #, c-format msgid " Semaphore: " msgstr "" -#: libebl/eblobjnote.c:127 +#: libebl/eblobjnote.c:132 #, c-format msgid " Provider: " msgstr "" -#: libebl/eblobjnote.c:129 +#: libebl/eblobjnote.c:134 #, c-format msgid " Name: " msgstr "" -#: libebl/eblobjnote.c:131 +#: libebl/eblobjnote.c:136 #, c-format msgid " Args: " msgstr "" -#: libebl/eblobjnote.c:141 +#: libebl/eblobjnote.c:300 #, c-format msgid " Build ID: " msgstr " ビルト ID: " #. A non-null terminated version string. -#: libebl/eblobjnote.c:152 +#: libebl/eblobjnote.c:311 #, c-format msgid " Linker version: %.*s\n" msgstr "" -#: libebl/eblobjnote.c:213 +#: libebl/eblobjnote.c:553 #, c-format msgid " OS: %s, ABI: " msgstr " OS: %s、ABI: " @@ -624,7 +624,7 @@ msgstr "ソース演算子の大きさが無効" msgid "invalid size of destination operand" msgstr "宛先演算子の大きさが無効" -#: libelf/elf_error.c:87 src/readelf.c:6123 +#: libelf/elf_error.c:87 src/readelf.c:6129 #, 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:9758 src/readelf.c:10329 -#: src/readelf.c:10430 src/readelf.c:10611 +#: libelf/elf_error.c:191 src/readelf.c:9775 src/readelf.c:10375 +#: src/readelf.c:10476 src/readelf.c:10658 #, c-format msgid "invalid data" msgstr "不当なデータ" @@ -1046,12 +1046,12 @@ msgstr "アーカイブに stat できません: '%s'" msgid "no entry %s in archive\n" msgstr "アーカイブに項目 %s がありません\n" -#: src/ar.c:472 src/ar.c:917 src/ar.c:1121 +#: src/ar.c:472 src/ar.c:923 src/ar.c:1127 #, c-format msgid "cannot create hash table" msgstr "ハッシュテーブルを生成できません" -#: src/ar.c:479 src/ar.c:924 src/ar.c:1130 +#: src/ar.c:479 src/ar.c:930 src/ar.c:1136 #, c-format msgid "cannot insert into hash table" msgstr "ハッシュに挿入できません" @@ -1061,97 +1061,97 @@ msgstr "ハッシュに挿入できません" msgid "cannot stat '%s'" msgstr "'%s' に stat できません" -#: src/ar.c:583 +#: src/ar.c:589 #, c-format msgid "cannot read content of %s: %s" msgstr "%s の内容を読むことができません: %s" -#: src/ar.c:626 +#: src/ar.c:632 #, c-format msgid "cannot open %.*s" msgstr "%.*s を開けません" -#: src/ar.c:648 +#: src/ar.c:654 #, c-format msgid "failed to write %s" msgstr "%s への書込みに失敗しました" -#: src/ar.c:660 +#: src/ar.c:666 #, c-format msgid "cannot change mode of %s" msgstr "%s のモードを変更できません" -#: src/ar.c:676 +#: src/ar.c:682 #, c-format msgid "cannot change modification time of %s" msgstr "%s の更新時間を変更できません" -#: src/ar.c:722 +#: src/ar.c:728 #, c-format msgid "cannot rename temporary file to %.*s" msgstr "一時ファイルを %.*s に名前変更できません" -#: src/ar.c:758 src/ar.c:1009 src/ar.c:1410 src/ranlib.c:222 +#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222 #, c-format msgid "cannot create new file" msgstr "新しいファイルを生成できません" -#: src/ar.c:1212 +#: src/ar.c:1218 #, c-format msgid "position member %s not found" msgstr "位置メンバー %s が見つかりません" -#: src/ar.c:1222 +#: src/ar.c:1228 #, c-format msgid "%s: no entry %s in archive!\n" msgstr "%s: 項目 %s がアーカイブにありません!\n" -#: src/ar.c:1251 src/objdump.c:241 +#: src/ar.c:1257 src/objdump.c:241 #, c-format msgid "cannot open %s" msgstr "%s を開けません" -#: src/ar.c:1256 +#: src/ar.c:1262 #, c-format msgid "cannot stat %s" msgstr "%s を stat できません" -#: src/ar.c:1262 +#: src/ar.c:1268 #, c-format msgid "%s is no regular file" msgstr "%s は一般ファイルではありません" -#: src/ar.c:1275 +#: src/ar.c:1281 #, c-format msgid "cannot get ELF descriptor for %s: %s\n" msgstr "%s の ELF 記述子を得られません: %s\n" -#: src/ar.c:1295 +#: src/ar.c:1301 #, c-format msgid "cannot read %s: %s" msgstr "%s を読みません: %s" -#: src/ar.c:1470 +#: src/ar.c:1476 #, fuzzy, c-format msgid "cannot represent ar_date" msgstr "セクションデータを割り当てられません: %s" -#: src/ar.c:1476 +#: src/ar.c:1482 #, fuzzy, c-format msgid "cannot represent ar_uid" msgstr "セクションデータを割り当てられません: %s" -#: src/ar.c:1482 +#: src/ar.c:1488 #, fuzzy, c-format msgid "cannot represent ar_gid" msgstr "セクションデータを割り当てられません: %s" -#: src/ar.c:1488 +#: src/ar.c:1494 #, fuzzy, c-format msgid "cannot represent ar_mode" msgstr "セクションを得られません: %s" -#: src/ar.c:1494 +#: src/ar.c:1500 #, fuzzy, c-format msgid "cannot represent ar_size" msgstr "%s を開けません" @@ -1373,8 +1373,8 @@ msgid "Invalid value '%s' for --gaps parameter." 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:517 src/strip.c:554 -#: src/unstrip.c:2052 src/unstrip.c:2081 +#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 +#: src/unstrip.c:2142 src/unstrip.c:2171 #, c-format msgid "cannot open '%s'" msgstr "'%s' を開けません" @@ -1389,7 +1389,7 @@ msgstr "" msgid "cannot create EBL descriptor for '%s'" msgstr "" -#: src/elfcmp.c:761 src/findtextrel.c:393 +#: src/elfcmp.c:761 src/findtextrel.c:394 #, c-format msgid "cannot get section header of section %zu: %s" msgstr "" @@ -1404,7 +1404,7 @@ msgstr "" msgid "cannot get relocation: %s" msgstr "" -#: src/elfcompress.c:115 src/strip.c:296 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "-o オプションが 2 回指定されています" @@ -1458,7 +1458,7 @@ msgid "" "rewrite the file even if no section would be (de)compressed" msgstr "" -#: src/elfcompress.c:1324 src/strip.c:90 +#: src/elfcompress.c:1324 src/strip.c:93 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "少し壊れた ELF ファイルを取り扱うためにルールを少し緩和する" @@ -1679,7 +1679,7 @@ msgstr "" #: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651 #: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095 -#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4401 +#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431 #, c-format msgid "section [%2d] '%s': cannot get section data\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" @@ -3108,194 +3108,197 @@ msgid "" "section [%2d] '%s': unknown core file note type % at offset %zu\n" msgstr "" -#: src/elflint.c:4344 +#: src/elflint.c:4370 #, c-format -msgid "phdr[%d]: unknown object file note type % at offset %zu\n" +msgid "" +"phdr[%d]: unknown object file note type % with owner name '%s' at " +"offset %zu\n" msgstr "" -#: src/elflint.c:4348 +#: src/elflint.c:4375 #, c-format msgid "" -"section [%2d] '%s': unknown object file note type % at offset %zu\n" +"section [%2d] '%s': unknown object file note type % with owner name " +"'%s' at offset %zu\n" msgstr "" -#: src/elflint.c:4365 +#: src/elflint.c:4394 #, c-format msgid "phdr[%d]: no note entries defined for the type of file\n" msgstr "" -#: src/elflint.c:4384 +#: src/elflint.c:4414 #, c-format msgid "phdr[%d]: cannot get content of note section: %s\n" msgstr "" -#: src/elflint.c:4387 +#: src/elflint.c:4417 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "" -#: src/elflint.c:4408 +#: src/elflint.c:4438 #, c-format msgid "section [%2d] '%s': no note entries defined for the type of file\n" msgstr "" -#: src/elflint.c:4415 +#: src/elflint.c:4445 #, c-format msgid "section [%2d] '%s': cannot get content of note section\n" msgstr "" -#: src/elflint.c:4418 +#: src/elflint.c:4448 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "" -#: src/elflint.c:4436 +#: src/elflint.c:4466 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" msgstr "" -#: src/elflint.c:4451 +#: src/elflint.c:4481 #, c-format msgid "cannot get program header entry %d: %s\n" msgstr "" -#: src/elflint.c:4460 +#: src/elflint.c:4490 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" -#: src/elflint.c:4471 +#: src/elflint.c:4501 #, c-format msgid "more than one INTERP entry in program header\n" msgstr "" -#: src/elflint.c:4479 +#: src/elflint.c:4509 #, c-format msgid "more than one TLS entry in program header\n" msgstr "" -#: src/elflint.c:4486 +#: src/elflint.c:4516 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "" -#: src/elflint.c:4500 +#: src/elflint.c:4530 #, c-format msgid "dynamic section reference in program header has wrong offset\n" msgstr "" -#: src/elflint.c:4503 +#: src/elflint.c:4533 #, c-format msgid "dynamic section size mismatch in program and section header\n" msgstr "" -#: src/elflint.c:4513 +#: src/elflint.c:4543 #, c-format msgid "more than one GNU_RELRO entry in program header\n" msgstr "" -#: src/elflint.c:4534 +#: src/elflint.c:4564 #, c-format msgid "loadable segment GNU_RELRO applies to is not writable\n" msgstr "" -#: src/elflint.c:4545 +#: src/elflint.c:4575 #, c-format msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" msgstr "" -#: src/elflint.c:4552 +#: src/elflint.c:4582 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" msgstr "" -#: src/elflint.c:4561 src/elflint.c:4584 +#: src/elflint.c:4591 src/elflint.c:4614 #, c-format msgid "%s segment not contained in a loaded segment\n" msgstr "" -#: src/elflint.c:4590 +#: src/elflint.c:4620 #, c-format msgid "program header offset in ELF header and PHDR entry do not match" msgstr "" -#: src/elflint.c:4615 +#: src/elflint.c:4647 #, c-format msgid "call frame search table reference in program header has wrong offset\n" msgstr "" -#: src/elflint.c:4618 +#: src/elflint.c:4650 #, c-format msgid "call frame search table size mismatch in program and section header\n" msgstr "" -#: src/elflint.c:4631 +#: src/elflint.c:4663 #, c-format msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" msgstr "" -#: src/elflint.c:4639 +#: src/elflint.c:4671 #, c-format msgid "call frame search table must be allocated\n" msgstr "" -#: src/elflint.c:4642 +#: src/elflint.c:4674 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "" -#: src/elflint.c:4646 +#: src/elflint.c:4678 #, c-format msgid "call frame search table must not be writable\n" msgstr "" -#: src/elflint.c:4649 +#: src/elflint.c:4681 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "" -#: src/elflint.c:4654 +#: src/elflint.c:4686 #, c-format msgid "call frame search table must not be executable\n" msgstr "" -#: src/elflint.c:4657 +#: src/elflint.c:4689 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "" -#: src/elflint.c:4668 +#: src/elflint.c:4700 #, c-format msgid "program header entry %d: file size greater than memory size\n" msgstr "" -#: src/elflint.c:4675 +#: src/elflint.c:4707 #, c-format msgid "program header entry %d: alignment not a power of 2\n" msgstr "" -#: src/elflint.c:4678 +#: src/elflint.c:4710 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " "alignment\n" msgstr "" -#: src/elflint.c:4691 +#: src/elflint.c:4723 #, c-format msgid "" "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " "program header entry" msgstr "" -#: src/elflint.c:4725 +#: src/elflint.c:4757 #, c-format msgid "cannot read ELF header: %s\n" msgstr "" -#: src/elflint.c:4751 +#: src/elflint.c:4783 #, c-format msgid "text relocation flag set but not needed\n" msgstr "" @@ -3319,7 +3322,7 @@ msgstr "" #. Strings for arguments in help texts. #: src/findtextrel.c:74 src/nm.c:108 src/objdump.c:71 src/size.c:80 -#: src/strings.c:87 src/strip.c:98 +#: src/strings.c:87 src/strip.c:101 msgid "[FILE...]" msgstr "[ふぁいる...]" @@ -3338,73 +3341,73 @@ msgstr "" msgid "getting get section header of section %zu: %s" msgstr "" -#: src/findtextrel.c:276 +#: src/findtextrel.c:277 #, c-format msgid "cannot read dynamic section: %s" msgstr "" -#: src/findtextrel.c:297 +#: src/findtextrel.c:298 #, c-format msgid "no text relocations reported in '%s'" msgstr "" -#: src/findtextrel.c:309 +#: src/findtextrel.c:310 #, c-format msgid "while reading ELF file" msgstr "" -#: src/findtextrel.c:313 +#: src/findtextrel.c:314 #, fuzzy, c-format msgid "cannot get program header count: %s" msgstr "プログラムヘッダーを得られません: %s" -#: src/findtextrel.c:324 src/findtextrel.c:341 +#: src/findtextrel.c:325 src/findtextrel.c:342 #, fuzzy, c-format msgid "cannot get program header index at offset %zd: %s" msgstr "プログラムヘッダーを得られません: %s" -#: src/findtextrel.c:405 +#: src/findtextrel.c:406 #, c-format msgid "cannot get symbol table section %zu in '%s': %s" msgstr "" -#: src/findtextrel.c:425 src/findtextrel.c:448 +#: src/findtextrel.c:427 src/findtextrel.c:450 #, c-format msgid "cannot get relocation at index %d in section %zu in '%s': %s" msgstr "" -#: src/findtextrel.c:514 +#: src/findtextrel.c:516 #, c-format msgid "%s not compiled with -fpic/-fPIC\n" msgstr "" -#: src/findtextrel.c:567 +#: src/findtextrel.c:570 #, c-format msgid "" "the file containing the function '%s' is not compiled with -fpic/-fPIC\n" msgstr "" -#: src/findtextrel.c:574 src/findtextrel.c:594 +#: src/findtextrel.c:577 src/findtextrel.c:597 #, c-format msgid "" "the file containing the function '%s' might not be compiled with -fpic/-" "fPIC\n" msgstr "" -#: src/findtextrel.c:582 +#: src/findtextrel.c:585 #, c-format msgid "" "either the file containing the function '%s' or the file containing the " "function '%s' is not compiled with -fpic/-fPIC\n" msgstr "" -#: src/findtextrel.c:602 +#: src/findtextrel.c:605 #, c-format msgid "" "a relocation modifies memory at offset %llu in a write-protected segment\n" msgstr "" -#: src/nm.c:66 src/strip.c:69 +#: src/nm.c:66 src/strip.c:70 msgid "Output selection:" msgstr "出力選択:" @@ -3469,7 +3472,7 @@ msgstr "弱いシンボルに印を点ける" msgid "Print size of defined symbols" msgstr "定義されたシンボルの印刷サイズ" -#: src/nm.c:91 src/size.c:68 src/strip.c:74 src/unstrip.c:73 +#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "出力オプション:" @@ -3499,18 +3502,18 @@ msgstr "ふぁいる からシンボルを表示 (デフォルトではa.out)。 msgid "Output formatting" msgstr "出力形式:" -#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:130 +#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:133 #, fuzzy, c-format 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:2505 +#: src/strip.c:2747 #, c-format msgid "while closing '%s'" msgstr "'%s' を閉じている最中" -#: src/nm.c:403 src/objdump.c:280 src/strip.c:442 +#: src/nm.c:403 src/objdump.c:280 src/strip.c:797 #, c-format msgid "%s: File format not recognized" msgstr "%s: ファイル形式を認識できませんでした" @@ -3551,12 +3554,12 @@ 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:1410 src/readelf.c:1558 src/readelf.c:1759 src/readelf.c:1965 -#: src/readelf.c:2155 src/readelf.c:2333 src/readelf.c:2409 src/readelf.c:2667 -#: src/readelf.c:2743 src/readelf.c:2830 src/readelf.c:3428 src/readelf.c:3478 -#: src/readelf.c:3541 src/readelf.c:11044 src/readelf.c:12216 -#: src/readelf.c:12419 src/readelf.c:12487 src/size.c:396 src/size.c:465 -#: src/strip.c:571 +#: 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:11091 src/readelf.c:12276 +#: src/readelf.c:12480 src/readelf.c:12548 src/size.c:398 src/size.c:467 +#: src/strip.c:1038 #, c-format msgid "cannot get section header string table index" msgstr "セクションヘッダー文字列テーブル索引が得られません" @@ -3650,11 +3653,11 @@ msgstr "操作が指定されていません。\n" msgid "while close `%s'" msgstr "" -#: src/objdump.c:363 src/readelf.c:2060 src/readelf.c:2252 +#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 msgid "INVALID SYMBOL" msgstr "不当なシンボル" -#: src/objdump.c:378 src/readelf.c:2094 src/readelf.c:2288 +#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 msgid "INVALID SECTION" msgstr "不当なセクション" @@ -3858,21 +3861,21 @@ msgstr "不明な DWARF デバッグセクション `%s'.\n" msgid "cannot generate Elf descriptor: %s" msgstr "Elf 記述子を生成できません: %s" -#: src/readelf.c:596 src/readelf.c:924 src/strip.c:640 +#: src/readelf.c:596 src/readelf.c:923 src/strip.c:1133 #, c-format msgid "cannot determine number of sections: %s" msgstr "セクション数を決定できません: %s" -#: src/readelf.c:614 src/readelf.c:1226 src/readelf.c:1434 +#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 #, c-format msgid "cannot get section: %s" msgstr "セクションを得られません: %s" -#: src/readelf.c:623 src/readelf.c:1233 src/readelf.c:1442 src/readelf.c:12439 -#: src/unstrip.c:394 src/unstrip.c:425 src/unstrip.c:474 src/unstrip.c:584 -#: src/unstrip.c:605 src/unstrip.c:642 src/unstrip.c:846 src/unstrip.c:1138 -#: src/unstrip.c:1330 src/unstrip.c:1391 src/unstrip.c:1564 src/unstrip.c:1679 -#: src/unstrip.c:1819 src/unstrip.c:1914 +#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12500 +#: 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 #, c-format msgid "cannot get section header: %s" msgstr "セクションヘッダーを得られません: %s" @@ -3882,8 +3885,8 @@ msgstr "セクションヘッダーを得られません: %s" msgid "cannot get section name" msgstr "セクションを得られません: %s" -#: src/readelf.c:640 src/readelf.c:6533 src/readelf.c:10317 src/readelf.c:10419 -#: src/readelf.c:10596 +#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10363 src/readelf.c:10465 +#: src/readelf.c:10643 #, c-format msgid "cannot get %s content: %s" msgstr "%s の内容を得られません: %s" @@ -3933,53 +3936,58 @@ msgstr "'%s' の読込みに失敗: %s" msgid "No such section '%s' in '%s'" msgstr "セクション [%Zu] '%s' からデータが得られません: %s" -#: src/readelf.c:909 +#: src/readelf.c:908 #, c-format msgid "cannot read ELF header: %s" msgstr "ELF ヘッダーが読めません: %s" -#: src/readelf.c:917 +#: src/readelf.c:916 #, c-format msgid "cannot create EBL handle" msgstr "EBL ヘッダーを生成できません" -#: src/readelf.c:930 +#: src/readelf.c:929 #, fuzzy, c-format msgid "cannot determine number of program headers: %s" msgstr "セクション数を決定できません: %s" -#: src/readelf.c:1020 +#: src/readelf.c:961 +#, fuzzy, c-format +msgid "cannot read ELF: %s" +msgstr "%s を読みません: %s" + +#: src/readelf.c:1022 msgid "NONE (None)" msgstr "なし (なし)" -#: src/readelf.c:1021 +#: src/readelf.c:1023 msgid "REL (Relocatable file)" msgstr "REL (リロケータブルファイル)" -#: src/readelf.c:1022 +#: src/readelf.c:1024 msgid "EXEC (Executable file)" msgstr "(EXEC (実行ファイル)" -#: src/readelf.c:1023 +#: src/readelf.c:1025 msgid "DYN (Shared object file)" msgstr "DYN (共用オブジェクトファイル)" -#: src/readelf.c:1024 +#: src/readelf.c:1026 msgid "CORE (Core file)" msgstr "CORE (コアファイル)" -#: src/readelf.c:1029 +#: src/readelf.c:1031 #, c-format msgid "OS Specific: (%x)\n" msgstr "OS 固有: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1031 +#: src/readelf.c:1033 #, c-format msgid "Processor Specific: (%x)\n" msgstr "プロセッサー固有: (%x)\n" -#: src/readelf.c:1041 +#: src/readelf.c:1043 msgid "" "ELF Header:\n" " Magic: " @@ -3987,7 +3995,7 @@ msgstr "" "ELF ヘッダー:\n" " マジック: " -#: src/readelf.c:1045 +#: src/readelf.c:1047 #, c-format msgid "" "\n" @@ -3996,118 +4004,118 @@ msgstr "" "\n" " クラス: %s\n" -#: src/readelf.c:1050 +#: src/readelf.c:1052 #, c-format msgid " Data: %s\n" msgstr " データ: %s\n" -#: src/readelf.c:1056 +#: src/readelf.c:1058 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " 識別バージョン: %hhd %s\n" -#: src/readelf.c:1058 src/readelf.c:1075 +#: src/readelf.c:1060 src/readelf.c:1077 msgid "(current)" msgstr "(現在)" -#: src/readelf.c:1062 +#: src/readelf.c:1064 #, c-format msgid " OS/ABI: %s\n" msgstr " OS/ABI: %s\n" -#: src/readelf.c:1065 +#: src/readelf.c:1067 #, c-format msgid " ABI Version: %hhd\n" msgstr " ABI バージョン: %hhd\n" -#: src/readelf.c:1068 +#: src/readelf.c:1070 msgid " Type: " msgstr " タイプ: " -#: src/readelf.c:1071 +#: src/readelf.c:1073 #, c-format msgid " Machine: %s\n" msgstr " マシン : %s\n" -#: src/readelf.c:1073 +#: src/readelf.c:1075 #, c-format msgid " Version: %d %s\n" msgstr " バージョン: %d %s\n" -#: src/readelf.c:1077 +#: src/readelf.c:1079 #, c-format msgid " Entry point address: %#\n" msgstr " 入口点アドレス : %#\n" -#: src/readelf.c:1080 +#: src/readelf.c:1082 #, c-format msgid " Start of program headers: % %s\n" msgstr " プログラムヘッダーの開始: % %s\n" -#: src/readelf.c:1081 src/readelf.c:1084 +#: src/readelf.c:1083 src/readelf.c:1086 msgid "(bytes into file)" msgstr "(ファイルへのバイト数)" -#: src/readelf.c:1083 +#: src/readelf.c:1085 #, c-format msgid " Start of section headers: % %s\n" msgstr " セクションヘッダーの開始: % %s\n" -#: src/readelf.c:1086 +#: src/readelf.c:1088 #, c-format msgid " Flags: %s\n" msgstr " フラグ: %s\n" -#: src/readelf.c:1089 +#: src/readelf.c:1091 #, c-format msgid " Size of this header: % %s\n" msgstr " このヘッダーの大きさ: % %s\n" -#: src/readelf.c:1090 src/readelf.c:1093 src/readelf.c:1110 +#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 msgid "(bytes)" msgstr "(バイト)" -#: src/readelf.c:1092 +#: src/readelf.c:1094 #, c-format msgid " Size of program header entries: % %s\n" msgstr " プログラムヘッダー項目の大きさ:% %s\n" -#: src/readelf.c:1095 +#: src/readelf.c:1097 #, fuzzy, c-format msgid " Number of program headers entries: %" msgstr " プログラムヘッダー項目の数 : %\n" -#: src/readelf.c:1102 +#: src/readelf.c:1104 #, fuzzy, c-format msgid " (% in [0].sh_info)" msgstr "([0].sh_link の %)" -#: src/readelf.c:1105 src/readelf.c:1122 src/readelf.c:1136 +#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 msgid " ([0] not available)" msgstr "([0]は使えません)" -#: src/readelf.c:1109 +#: src/readelf.c:1111 #, c-format msgid " Size of section header entries: % %s\n" msgstr " セクションヘッダー項目の大きさ:% %s\n" -#: src/readelf.c:1112 +#: src/readelf.c:1114 #, c-format msgid " Number of section headers entries: %" msgstr " セクションヘッダー項目の数 : %" -#: src/readelf.c:1119 +#: src/readelf.c:1121 #, c-format msgid " (% in [0].sh_size)" msgstr " ([0].sh_size の %)" #. We managed to get the zeroth section. -#: src/readelf.c:1132 +#: src/readelf.c:1134 #, c-format msgid " (% in [0].sh_link)" msgstr "([0].sh_link の %)" -#: src/readelf.c:1140 +#: src/readelf.c:1142 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4116,7 +4124,7 @@ msgstr "" " セクションヘッダー文字列テーブル索引: XINDEX%s\n" "\n" -#: src/readelf.c:1144 +#: src/readelf.c:1146 #, c-format msgid "" " Section header string table index: %\n" @@ -4125,12 +4133,12 @@ msgstr "" " セクションヘッダー文字列テーブル索引: %\n" "\n" -#: src/readelf.c:1191 src/readelf.c:1399 +#: src/readelf.c:1193 src/readelf.c:1401 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "セクション数を決定できません: %s" -#: src/readelf.c:1194 +#: src/readelf.c:1196 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" @@ -4139,16 +4147,16 @@ msgstr "" "オフセット %2$# から始まる %1$d 個のセクションヘッダーがあります:\n" "\n" -#: src/readelf.c:1203 +#: src/readelf.c:1205 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "セクションヘッダー文字列テーブル索引が得られません" -#: src/readelf.c:1206 +#: src/readelf.c:1208 msgid "Section Headers:" msgstr "セクションヘッダー:" -#: src/readelf.c:1209 +#: src/readelf.c:1211 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4156,7 +4164,7 @@ msgstr "" "[番] 名前 タイプ アドレス オフセ 大きさ ES フラグLk " "Inf Al" -#: src/readelf.c:1211 +#: src/readelf.c:1213 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4164,35 +4172,35 @@ msgstr "" "[番] 名前 タイプ アドレス オフセ 大きさ ES " "フラグLk Inf Al" -#: src/readelf.c:1216 +#: src/readelf.c:1218 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1218 +#: src/readelf.c:1220 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1294 +#: src/readelf.c:1296 #, fuzzy, c-format msgid "bad compression header for section %zd: %s" msgstr "セクションヘッダー文字列セクションを生成できません: %s" -#: src/readelf.c:1305 +#: src/readelf.c:1307 #, fuzzy, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "セクションからデータを得られません %d: %s" -#: src/readelf.c:1323 +#: src/readelf.c:1325 msgid "Program Headers:" msgstr "プログラムヘッダー:" -#: src/readelf.c:1325 +#: src/readelf.c:1327 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " タイプ オフセ 仮アドレス 物アドレス ファイ量 メモ量 Flg 調整 " -#: src/readelf.c:1328 +#: src/readelf.c:1330 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4200,12 +4208,12 @@ msgstr "" " タイプ オフセ 仮想アドレス 物理アドレス ファイル量メモ" "量 Flg 調整 " -#: src/readelf.c:1385 +#: src/readelf.c:1387 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[プログラム割込みを要求: %s]\n" -#: src/readelf.c:1412 +#: src/readelf.c:1414 msgid "" "\n" " Section to Segment mapping:\n" @@ -4215,12 +4223,12 @@ msgstr "" " セクションからセグメントへのマッビング:\n" " セグメント セクション..." -#: src/readelf.c:1423 src/unstrip.c:1973 src/unstrip.c:2015 src/unstrip.c:2022 +#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 #, c-format msgid "cannot get program header: %s" msgstr "プログラムヘッダーを得られません: %s" -#: src/readelf.c:1566 +#: src/readelf.c:1571 #, c-format msgid "" "\n" @@ -4233,7 +4241,7 @@ msgstr[0] "" "署名 '%3$s' を持つ COMDAT セクショングループ [%1$2zu] '%2$s' には %4$zu 個の" "項目があります:\n" -#: src/readelf.c:1571 +#: src/readelf.c:1576 #, c-format msgid "" "\n" @@ -4246,31 +4254,31 @@ msgstr[0] "" "署名 '%3$s' を持つセクショングループ [%1$2zu] '%2$s' には %4$zu 個の項目があ" "ります:\n" -#: src/readelf.c:1579 +#: src/readelf.c:1584 msgid "" msgstr "<不当なシンボル>" -#: src/readelf.c:1593 +#: src/readelf.c:1598 msgid "" msgstr "<不当なセクション>" -#: src/readelf.c:1616 src/readelf.c:2343 src/readelf.c:3444 src/readelf.c:12310 -#: src/readelf.c:12317 src/readelf.c:12361 src/readelf.c:12368 +#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12371 +#: src/readelf.c:12378 src/readelf.c:12422 src/readelf.c:12429 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 +#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "セクションヘッダーを得られません: %s" -#: src/readelf.c:1765 src/readelf.c:2415 src/readelf.c:2673 src/readelf.c:2749 -#: src/readelf.c:3053 src/readelf.c:3127 src/readelf.c:5322 +#: 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 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr "不当な .debug_line セクション" -#: src/readelf.c:1768 +#: src/readelf.c:1773 #, c-format msgid "" "\n" @@ -4286,36 +4294,36 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:1778 +#: src/readelf.c:1783 msgid " Type Value\n" msgstr " タイプ 値\n" -#: src/readelf.c:1802 +#: src/readelf.c:1807 #, c-format msgid "Shared library: [%s]\n" msgstr "共用ライブラリー: [%s]\n" -#: src/readelf.c:1807 +#: src/readelf.c:1812 #, c-format msgid "Library soname: [%s]\n" msgstr "ライブラリー so 名: [%s]\n" -#: src/readelf.c:1812 +#: src/readelf.c:1817 #, c-format msgid "Library rpath: [%s]\n" msgstr "ライブラリー rパス: [%s]\n" -#: src/readelf.c:1817 +#: src/readelf.c:1822 #, c-format msgid "Library runpath: [%s]\n" msgstr "ライブラリー run パス: [%s]\n" -#: src/readelf.c:1837 +#: src/readelf.c:1842 #, c-format msgid "% (bytes)\n" msgstr "% (バイト)\n" -#: src/readelf.c:1950 src/readelf.c:2140 +#: src/readelf.c:1955 src/readelf.c:2145 #, c-format msgid "" "\n" @@ -4324,7 +4332,7 @@ msgstr "" "\n" "オフセット %#0 に不当なシンボルテーブル\n" -#: src/readelf.c:1968 src/readelf.c:2158 +#: src/readelf.c:1973 src/readelf.c:2163 #, c-format msgid "" "\n" @@ -4345,7 +4353,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:1983 src/readelf.c:2173 +#: src/readelf.c:1988 src/readelf.c:2178 #, c-format msgid "" "\n" @@ -4358,29 +4366,29 @@ msgstr[0] "" "オフセット %3$#0 のリロケーションセクション [%1$2u] '%2$s' には %4$d " "個の項目があります:\n" -#: src/readelf.c:1993 +#: src/readelf.c:1998 msgid " Offset Type Value Name\n" msgstr " オフセット タイプ 値 名前\n" -#: src/readelf.c:1995 +#: src/readelf.c:2000 msgid " Offset Type Value Name\n" msgstr " オフセット タイプ 値 名前\n" -#: src/readelf.c:2048 src/readelf.c:2059 src/readelf.c:2072 src/readelf.c:2093 -#: src/readelf.c:2105 src/readelf.c:2239 src/readelf.c:2251 src/readelf.c:2265 -#: src/readelf.c:2287 src/readelf.c:2300 +#: 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 msgid "" msgstr "<不当なRELOC>" -#: src/readelf.c:2183 +#: src/readelf.c:2188 msgid " Offset Type Value Addend Name\n" msgstr " オフセット タイプ 値 付加名\n" -#: src/readelf.c:2185 +#: src/readelf.c:2190 msgid " Offset Type Value Addend Name\n" msgstr " オフセット タイプ 値 付加名\n" -#: src/readelf.c:2423 +#: src/readelf.c:2428 #, c-format msgid "" "\n" @@ -4392,39 +4400,39 @@ msgstr[0] "" "\n" "シンボルテーブル [%2u] '%s' には %u 個の項目があります:\n" -#: src/readelf.c:2428 +#: src/readelf.c:2433 #, 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:2436 +#: src/readelf.c:2441 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " 数 : 値 大き タイプ Bind Vis Ndx 名前\n" -#: src/readelf.c:2438 +#: src/readelf.c:2443 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " 数 : 値 大き タイプ Bind Vis Ndx 名前\n" -#: src/readelf.c:2458 +#: src/readelf.c:2463 #, c-format msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -#: src/readelf.c:2546 +#: src/readelf.c:2551 #, c-format msgid "bad dynamic symbol" msgstr "不正な動的シンボル" -#: src/readelf.c:2628 +#: src/readelf.c:2633 msgid "none" msgstr "なし" -#: src/readelf.c:2645 +#: src/readelf.c:2650 msgid "| " msgstr "| <不明>" -#: src/readelf.c:2676 +#: src/readelf.c:2681 #, c-format msgid "" "\n" @@ -4440,17 +4448,17 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:2697 +#: src/readelf.c:2702 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: バージョン: %hu ファイル: %s 数: %hu\n" -#: src/readelf.c:2710 +#: src/readelf.c:2715 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: 名前: %s フラグ: %s バージョン: %hu\n" -#: src/readelf.c:2753 +#: src/readelf.c:2758 #, c-format msgid "" "\n" @@ -4466,18 +4474,18 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:2781 +#: src/readelf.c:2786 #, 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:2796 +#: src/readelf.c:2801 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: 親 %d: %s\n" #. Print the header. -#: src/readelf.c:3057 +#: src/readelf.c:3062 #, c-format msgid "" "\n" @@ -4493,15 +4501,15 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'" -#: src/readelf.c:3085 +#: src/readelf.c:3090 msgid " 0 *local* " msgstr " 0 *ローカル* " -#: src/readelf.c:3090 +#: src/readelf.c:3095 msgid " 1 *global* " msgstr " 1 *グローバル* " -#: src/readelf.c:3132 +#: src/readelf.c:3137 #, c-format msgid "" "\n" @@ -4519,22 +4527,22 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:3154 +#: src/readelf.c:3159 #, fuzzy, no-c-format msgid " Length Number % of total Coverage\n" msgstr " 長さ 数 全体の% 範囲 \n" -#: src/readelf.c:3156 +#: src/readelf.c:3161 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3163 +#: src/readelf.c:3168 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3176 +#: src/readelf.c:3181 #, fuzzy, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4543,37 +4551,37 @@ msgstr "" " テストの平均数: 検索成功: %f\n" " 検索失敗: %f\n" -#: src/readelf.c:3194 src/readelf.c:3258 src/readelf.c:3324 +#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 #, c-format msgid "cannot get data for section %d: %s" msgstr "セクションからデータを得られません %d: %s" -#: src/readelf.c:3202 +#: src/readelf.c:3207 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3231 +#: src/readelf.c:3236 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3266 +#: src/readelf.c:3271 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3297 +#: src/readelf.c:3302 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3333 +#: src/readelf.c:3338 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3400 +#: src/readelf.c:3405 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4583,7 +4591,7 @@ msgstr "" " ビットマスクの大きさ: %zu バイト %%% ビット設定 第2ハッシュシフ" "ト: %u\n" -#: src/readelf.c:3489 +#: src/readelf.c:3494 #, c-format msgid "" "\n" @@ -4596,7 +4604,7 @@ msgstr[0] "" "オフセット %3$#0 のライブラリー一覧セクション [%1$2zu] '%2$s' には " "%4$d 個の項目があります:\n" -#: src/readelf.c:3503 +#: src/readelf.c:3508 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4604,7 +4612,7 @@ msgstr "" " ライブラリー タイムスタンプ チェックサム バー" "ジョン フラグ" -#: src/readelf.c:3553 +#: src/readelf.c:3558 #, c-format msgid "" "\n" @@ -4615,102 +4623,102 @@ msgstr "" "オフセット %4$#0 の %3$ バイトのオブジェクト属性セクション " "[%1$2zu] '%2$s':\n" -#: src/readelf.c:3570 +#: src/readelf.c:3575 msgid " Owner Size\n" msgstr " 所有者 大きさ\n" -#: src/readelf.c:3599 +#: src/readelf.c:3604 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3638 +#: src/readelf.c:3643 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3643 +#: src/readelf.c:3648 #, c-format msgid " File: %11\n" msgstr " ファイル: %11\n" -#: src/readelf.c:3692 +#: src/readelf.c:3697 #, c-format msgid " %s: %, %s\n" msgstr " %s: %、%s\n" -#: src/readelf.c:3695 +#: src/readelf.c:3700 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3698 +#: src/readelf.c:3703 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3708 +#: src/readelf.c:3713 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3711 +#: src/readelf.c:3716 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3781 +#: src/readelf.c:3786 #, c-format msgid "sprintf failure" msgstr "" -#: src/readelf.c:4263 +#: src/readelf.c:4268 msgid "empty block" msgstr "空ブロック" -#: src/readelf.c:4266 +#: src/readelf.c:4271 #, c-format msgid "%zu byte block:" msgstr "%zu バイトのブロック:" -#: src/readelf.c:4744 +#: src/readelf.c:4749 #, fuzzy, c-format msgid "%*s[%2] %s \n" msgstr "%*s[%4] %s \n" -#: src/readelf.c:4808 +#: src/readelf.c:4813 #, c-format msgid "%s %# used with different address sizes" msgstr "" -#: src/readelf.c:4815 +#: src/readelf.c:4820 #, c-format msgid "%s %# used with different offset sizes" msgstr "" -#: src/readelf.c:4822 +#: src/readelf.c:4827 #, c-format msgid "%s %# used with different base addresses" msgstr "" -#: src/readelf.c:4829 +#: src/readelf.c:4834 #, c-format msgid "%s %# used with different attribute %s and %s" msgstr "" -#: src/readelf.c:4926 +#: src/readelf.c:4931 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:4934 +#: src/readelf.c:4939 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr "" -#: src/readelf.c:5012 +#: src/readelf.c:5017 #, c-format msgid "" "\n" @@ -4721,7 +4729,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" " [ コード]\n" -#: src/readelf.c:5020 +#: src/readelf.c:5025 #, c-format msgid "" "\n" @@ -4730,20 +4738,20 @@ msgstr "" "\n" "オフセット % の略語セクション:\n" -#: src/readelf.c:5033 +#: src/readelf.c:5038 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** 略語を読んでいる間にエラー: %s\n" -#: src/readelf.c:5049 +#: src/readelf.c:5054 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] オフセット: %、子: %s、タグ: %s\n" -#: src/readelf.c:5082 src/readelf.c:5391 src/readelf.c:5557 src/readelf.c:5942 -#: src/readelf.c:6543 src/readelf.c:8184 src/readelf.c:8854 src/readelf.c:9290 -#: src/readelf.c:9534 src/readelf.c:9699 src/readelf.c:10060 -#: src/readelf.c:10118 +#: 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:8870 src/readelf.c:9306 +#: src/readelf.c:9551 src/readelf.c:9717 src/readelf.c:10104 +#: src/readelf.c:10164 #, c-format msgid "" "\n" @@ -4752,52 +4760,52 @@ msgstr "" "\n" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:5095 +#: src/readelf.c:5100 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "セクションデータを割り当てられません: %s" -#: src/readelf.c:5195 src/readelf.c:5219 src/readelf.c:5602 src/readelf.c:8899 +#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8915 #, fuzzy, c-format msgid " Length: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:5197 src/readelf.c:5234 src/readelf.c:5615 src/readelf.c:8912 +#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8928 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5198 src/readelf.c:5243 src/readelf.c:5624 src/readelf.c:8921 +#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8937 #, fuzzy, c-format msgid " Address size: %8\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:5200 src/readelf.c:5253 src/readelf.c:5634 src/readelf.c:8931 +#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8947 #, fuzzy, c-format msgid " Segment size: %8\n" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:5238 src/readelf.c:5619 src/readelf.c:8916 src/readelf.c:10250 +#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8932 src/readelf.c:10296 #, fuzzy, c-format msgid "Unknown version" msgstr "不明なバージョン" -#: src/readelf.c:5248 src/readelf.c:5461 src/readelf.c:5629 src/readelf.c:8926 +#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8942 #, fuzzy, c-format msgid "unsupported address size" msgstr "アドレス値ではありません" -#: src/readelf.c:5259 src/readelf.c:5472 src/readelf.c:5639 src/readelf.c:8936 +#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8952 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5312 src/readelf.c:5386 +#: src/readelf.c:5317 src/readelf.c:5391 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr ".debug_aragnes の内容を得られません: %s" -#: src/readelf.c:5327 +#: src/readelf.c:5332 #, c-format msgid "" "\n" @@ -4810,19 +4818,19 @@ msgstr[0] "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:5358 +#: src/readelf.c:5363 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5360 +#: src/readelf.c:5365 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" msgstr "" " [%*zu] 開始: %0#*、長さ: %5、CU DIE オフセット: %6\n" -#: src/readelf.c:5404 src/readelf.c:8211 +#: src/readelf.c:5409 src/readelf.c:8226 #, fuzzy, c-format msgid "" "\n" @@ -4831,154 +4839,154 @@ msgstr "" "\n" "オフセット %Zu のテーブル:\n" -#: src/readelf.c:5408 src/readelf.c:5583 src/readelf.c:6567 src/readelf.c:8222 -#: src/readelf.c:8880 +#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 +#: src/readelf.c:8896 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:5424 +#: src/readelf.c:5429 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " (オフセット: %#)" -#: src/readelf.c:5436 +#: src/readelf.c:5441 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5440 +#: src/readelf.c:5445 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5451 +#: src/readelf.c:5456 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " (オフセット: %#)" -#: src/readelf.c:5457 +#: src/readelf.c:5462 #, fuzzy, c-format msgid " Address size: %6\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:5468 +#: src/readelf.c:5473 #, fuzzy, c-format msgid "" " Segment size: %6\n" "\n" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:5523 +#: src/readelf.c:5528 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5566 +#: src/readelf.c:5572 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr ".degub_ranges の内容を得られません: %s" -#: src/readelf.c:5589 src/readelf.c:8886 +#: src/readelf.c:5595 src/readelf.c:8902 #, fuzzy, c-format msgid "" "Table at Offset 0x%:\n" "\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:5644 src/readelf.c:8941 +#: src/readelf.c:5650 src/readelf.c:8957 #, fuzzy, c-format msgid " Offset entries: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:5660 src/readelf.c:8957 +#: src/readelf.c:5666 src/readelf.c:8973 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5662 src/readelf.c:8959 +#: src/readelf.c:5668 src/readelf.c:8975 #, c-format msgid " CU [%6] base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8965 +#: src/readelf.c:5674 src/readelf.c:8981 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5679 src/readelf.c:8976 +#: src/readelf.c:5685 src/readelf.c:8992 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5683 src/readelf.c:8980 +#: src/readelf.c:5689 src/readelf.c:8996 #, fuzzy, c-format msgid " Offsets starting at 0x%:\n" msgstr " 所有者 大きさ\n" -#: src/readelf.c:5735 +#: src/readelf.c:5741 #, fuzzy, c-format msgid "invalid range list data" msgstr "不当なデータ" -#: src/readelf.c:5920 src/readelf.c:9268 +#: src/readelf.c:5926 src/readelf.c:9284 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:5937 +#: src/readelf.c:5943 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr ".degub_ranges の内容を得られません: %s" -#: src/readelf.c:5973 src/readelf.c:9323 +#: src/readelf.c:5979 src/readelf.c:9339 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5975 src/readelf.c:9325 +#: src/readelf.c:5981 src/readelf.c:9341 #, c-format msgid "" "\n" " CU [%6] base: " msgstr "" -#: src/readelf.c:5984 src/readelf.c:9351 src/readelf.c:9377 +#: src/readelf.c:5990 src/readelf.c:9367 src/readelf.c:9393 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:6005 src/readelf.c:9457 +#: src/readelf.c:6011 src/readelf.c:9473 #, fuzzy, c-format msgid "" " [%6tx] base address\n" " " msgstr " [%6tx] ベースアドレス %s\n" -#: src/readelf.c:6013 src/readelf.c:9465 +#: src/readelf.c:6019 src/readelf.c:9481 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr "" "\n" " [%6tx] ゼロ終端\n" -#: src/readelf.c:6268 +#: src/readelf.c:6274 #, fuzzy msgid " \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:6521 +#: src/readelf.c:6527 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:6539 +#: src/readelf.c:6545 #, c-format msgid "" "\n" @@ -4987,7 +4995,7 @@ msgstr "" "\n" "オフセット %3$# の フレーム情報呼出しセクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:6589 +#: src/readelf.c:6595 #, c-format msgid "" "\n" @@ -4996,65 +5004,65 @@ msgstr "" "\n" " [%6tx] ゼロ終端\n" -#: src/readelf.c:6682 src/readelf.c:6836 +#: src/readelf.c:6696 src/readelf.c:6850 #, fuzzy, c-format msgid "invalid augmentation length" msgstr "不当な拡大エンコード" -#: src/readelf.c:6697 +#: src/readelf.c:6711 msgid "FDE address encoding: " msgstr "FDE アドレスエンコード" -#: src/readelf.c:6703 +#: src/readelf.c:6717 msgid "LSDA pointer encoding: " msgstr "LSDA ポインターエンコード:" -#: src/readelf.c:6813 +#: src/readelf.c:6827 #, c-format msgid " (offset: %#)" msgstr " (オフセット: %#)" -#: src/readelf.c:6820 +#: src/readelf.c:6834 #, c-format msgid " (end offset: %#)" msgstr " (終了オフセット: %#)" -#: src/readelf.c:6857 +#: src/readelf.c:6871 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sLSDA ポインター: %#\n" -#: src/readelf.c:6942 +#: src/readelf.c:6956 #, fuzzy, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "属性コードを得られません: %s" -#: src/readelf.c:6952 +#: src/readelf.c:6966 #, fuzzy, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "属性様式を得られません: %s" -#: src/readelf.c:6974 +#: src/readelf.c:6988 #, fuzzy, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "属性値を得られません: %s" -#: src/readelf.c:7307 +#: src/readelf.c:7321 #, fuzzy, c-format msgid "invalid file (%): %s" msgstr "不当なファイル" -#: src/readelf.c:7311 +#: src/readelf.c:7325 #, fuzzy, c-format msgid "no srcfiles for CU [%]" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:7315 +#: src/readelf.c:7329 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:7538 +#: src/readelf.c:7552 #, c-format msgid "" "\n" @@ -5065,12 +5073,12 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" " [オフセット]\n" -#: src/readelf.c:7588 +#: src/readelf.c:7602 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:7607 +#: src/readelf.c:7621 #, fuzzy, c-format msgid "" " Type unit at offset %:\n" @@ -5082,7 +5090,7 @@ msgstr "" " バージョン: %2$、略語セクションオフセット: %3$、アドレスの大" "きさ: %4$、オフセットの大きさ: %5$\n" -#: src/readelf.c:7619 +#: src/readelf.c:7633 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5093,39 +5101,39 @@ msgstr "" " バージョン: %2$、略語セクションオフセット: %3$、アドレスの大" "きさ: %4$、オフセットの大きさ: %5$\n" -#: src/readelf.c:7629 src/readelf.c:7792 +#: src/readelf.c:7643 src/readelf.c:7806 #, c-format msgid " Unit type: %s (%)" msgstr "" -#: src/readelf.c:7656 +#: src/readelf.c:7670 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7685 +#: src/readelf.c:7699 #, c-format msgid "cannot get DIE offset: %s" msgstr "DIE オフセットを得られません: %s" -#: src/readelf.c:7694 +#: src/readelf.c:7708 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "" "セクション '%2$s' 中のオフセット %1$ の DIE のタグを得られません: " "%3$s" -#: src/readelf.c:7732 +#: src/readelf.c:7746 #, c-format msgid "cannot get next DIE: %s\n" msgstr "次の DIE を得られません: %s\n" -#: src/readelf.c:7740 +#: src/readelf.c:7754 #, c-format msgid "cannot get next DIE: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:7784 +#: src/readelf.c:7798 #, fuzzy, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5136,7 +5144,7 @@ msgstr "" " バージョン: %2$、略語セクションオフセット: %3$、アドレスの大" "きさ: %4$、オフセットの大きさ: %5$\n" -#: src/readelf.c:7835 +#: src/readelf.c:7850 #, fuzzy, c-format msgid "" "\n" @@ -5146,18 +5154,18 @@ msgstr "" "\n" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:8167 +#: src/readelf.c:8182 #, fuzzy, c-format msgid "unknown form: %s" msgstr "不明な様式 %" -#: src/readelf.c:8198 +#: src/readelf.c:8213 #, c-format msgid "cannot get line data section data: %s" msgstr "ラインデータセクションデータを得られません: %s" #. Print what we got so far. -#: src/readelf.c:8300 +#: src/readelf.c:8315 #, fuzzy, c-format msgid "" "\n" @@ -5187,33 +5195,33 @@ msgstr "" "\n" "命令コード:\n" -#: src/readelf.c:8322 +#: src/readelf.c:8337 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr ".degub_ranges の内容を得られません: %s" -#: src/readelf.c:8330 +#: src/readelf.c:8345 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "アドレス値ではありません" -#: src/readelf.c:8338 +#: src/readelf.c:8353 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "セクションを得られません: %s" -#: src/readelf.c:8348 +#: src/readelf.c:8363 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "セクション [%2$zu] '%3$s' 中のオフセット %1$tu に不当なデータ" -#: src/readelf.c:8363 +#: src/readelf.c:8378 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] " [%*] %hhu パラメーター\n" -#: src/readelf.c:8374 +#: src/readelf.c:8389 msgid "" "\n" "Directory table:" @@ -5221,12 +5229,12 @@ msgstr "" "\n" "ディレクトリーテーブル:" -#: src/readelf.c:8380 src/readelf.c:8455 +#: src/readelf.c:8395 src/readelf.c:8470 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8449 +#: src/readelf.c:8464 #, fuzzy msgid "" "\n" @@ -5235,7 +5243,7 @@ msgstr "" "\n" " 呼出しサイトテーブル:" -#: src/readelf.c:8510 +#: src/readelf.c:8525 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5243,7 +5251,7 @@ msgstr "" "ファイル名テーブル:\n" " Entry Dir 時刻 大きさ 名前" -#: src/readelf.c:8545 +#: src/readelf.c:8560 msgid "" "\n" "Line number statements:" @@ -5251,119 +5259,119 @@ msgstr "" "\n" "行 番号 文:" -#: src/readelf.c:8568 +#: src/readelf.c:8583 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "" -#: src/readelf.c:8602 +#: src/readelf.c:8617 #, fuzzy, c-format msgid " special opcode %u: address+%u = " msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n" -#: src/readelf.c:8606 +#: src/readelf.c:8621 #, fuzzy, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n" -#: src/readelf.c:8609 +#: src/readelf.c:8624 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8627 +#: src/readelf.c:8642 #, c-format msgid " extended opcode %u: " msgstr " 拡張命令コード %u: " -#: src/readelf.c:8632 +#: src/readelf.c:8647 #, fuzzy msgid " end of sequence" msgstr "列の終わり" -#: src/readelf.c:8650 +#: src/readelf.c:8665 #, fuzzy, c-format msgid " set address to " msgstr "アドレスを %s に設定する\n" -#: src/readelf.c:8678 +#: src/readelf.c:8693 #, fuzzy, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" "新ファイルを定義する: dir=%u、mtime=%、長さh=%、名前=%s\n" -#: src/readelf.c:8691 +#: src/readelf.c:8706 #, fuzzy, c-format msgid " set discriminator to %u\n" msgstr "カラムを % に設定する\n" #. Unknown, ignore it. -#: src/readelf.c:8696 +#: src/readelf.c:8711 #, fuzzy msgid " unknown opcode" msgstr "不明な命令コード" #. Takes no argument. -#: src/readelf.c:8708 +#: src/readelf.c:8723 msgid " copy" msgstr "複写" -#: src/readelf.c:8717 +#: src/readelf.c:8732 #, fuzzy, c-format msgid " advance address by %u to " msgstr "アドレスを %u だけ進めて %s にする\n" -#: src/readelf.c:8721 src/readelf.c:8777 +#: src/readelf.c:8736 src/readelf.c:8792 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8731 +#: src/readelf.c:8746 #, c-format msgid " advance line by constant %d to %\n" msgstr "行を定数 %d だけ進めて % にする\n" -#: src/readelf.c:8739 +#: src/readelf.c:8754 #, c-format msgid " set file to %\n" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:8749 +#: src/readelf.c:8764 #, c-format msgid " set column to %\n" msgstr "カラムを % に設定する\n" -#: src/readelf.c:8756 +#: src/readelf.c:8771 #, c-format msgid " set '%s' to %\n" msgstr " '%s' を % に設定する\n" #. Takes no argument. -#: src/readelf.c:8762 +#: src/readelf.c:8777 msgid " set basic block flag" msgstr "基本ブロックフラグを設定する" -#: src/readelf.c:8773 +#: src/readelf.c:8788 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr "アドレスを定数 %u だけ済めて %s にする\n" -#: src/readelf.c:8792 +#: src/readelf.c:8807 #, fuzzy, c-format msgid " advance address by fixed value %u to \n" msgstr "アドレスを固定値 %u だけ進めて %s にする\n" #. Takes no argument. -#: src/readelf.c:8802 +#: src/readelf.c:8817 msgid " set prologue end flag" msgstr "プロローグ終了フラグを設定する" #. Takes no argument. -#: src/readelf.c:8807 +#: src/readelf.c:8822 msgid " set epilogue begin flag" msgstr "エピローグ開始フラグを設定する" -#: src/readelf.c:8816 +#: src/readelf.c:8831 #, fuzzy, c-format msgid " set isa to %u\n" msgstr " ファイルを % に設定する\n" @@ -5371,98 +5379,98 @@ msgstr " ファイルを % に設定する\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:8825 +#: src/readelf.c:8840 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" msgstr[0] " % 個のパラメーターのある不明な命令コード:" -#: src/readelf.c:8863 +#: src/readelf.c:8879 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr ".debug_loc の内容を得られません: %s" -#: src/readelf.c:9032 +#: src/readelf.c:9048 #, fuzzy, c-format msgid "invalid loclists data" msgstr "不当なデータ" -#: src/readelf.c:9285 +#: src/readelf.c:9301 #, c-format msgid "cannot get .debug_loc content: %s" msgstr ".debug_loc の内容を得られません: %s" -#: src/readelf.c:9492 src/readelf.c:10506 +#: src/readelf.c:9508 src/readelf.c:10552 #, fuzzy msgid " \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:9546 src/readelf.c:9709 +#: src/readelf.c:9563 src/readelf.c:9726 #, c-format msgid "cannot get macro information section data: %s" msgstr "マクロ情報セクションのデータを得られません: %s" -#: src/readelf.c:9626 +#: src/readelf.c:9643 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** 最後のセクションの終端していない文字列" -#: src/readelf.c:9649 +#: src/readelf.c:9666 #, fuzzy, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** 最後のセクションの終端していない文字列" -#: src/readelf.c:9750 +#: src/readelf.c:9767 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " 所有者 大きさ\n" -#: src/readelf.c:9762 +#: src/readelf.c:9779 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:9768 src/readelf.c:10625 +#: src/readelf.c:9785 src/readelf.c:10672 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:9775 +#: src/readelf.c:9792 #, fuzzy, c-format -msgid " Flag: 0x%\n" +msgid " Flag: 0x%" msgstr " 入口点アドレス : %#\n" -#: src/readelf.c:9778 +#: src/readelf.c:9821 #, fuzzy, c-format msgid " Offset length: %\n" msgstr " (オフセット: %#)" -#: src/readelf.c:9786 +#: src/readelf.c:9829 #, fuzzy, c-format msgid " .debug_line offset: 0x%\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:9811 +#: src/readelf.c:9854 #, fuzzy, c-format msgid " extension opcode table, % items:\n" msgstr " % 個のパラメーターのある不明な命令コード:" -#: src/readelf.c:9818 +#: src/readelf.c:9861 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:9830 +#: src/readelf.c:9873 #, fuzzy, c-format msgid " % arguments:" msgstr " [%*] %hhu パラメーター\n" -#: src/readelf.c:9845 +#: src/readelf.c:9888 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10046 +#: src/readelf.c:10089 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" @@ -5470,7 +5478,7 @@ msgstr "" # # "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" # # " %4$*s 文字列\n" がエラーになるのは何故? 取り敢えず fuzzy扱い -#: src/readelf.c:10088 +#: src/readelf.c:10133 #, fuzzy, c-format msgid "" "\n" @@ -5481,37 +5489,37 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" " %4$*s 文字列\n" -#: src/readelf.c:10103 +#: src/readelf.c:10148 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** 文字列の読込み中にエラー: %s\n" -#: src/readelf.c:10131 +#: src/readelf.c:10177 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr ".degub_ranges の内容を得られません: %s" -#: src/readelf.c:10230 +#: src/readelf.c:10276 #, fuzzy, c-format msgid " Length: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10232 +#: src/readelf.c:10278 #, fuzzy, c-format msgid " Offset size: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10246 +#: src/readelf.c:10292 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10255 +#: src/readelf.c:10301 #, fuzzy, c-format msgid " Padding: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10309 +#: src/readelf.c:10355 #, c-format msgid "" "\n" @@ -5520,7 +5528,7 @@ msgstr "" "\n" "呼出しフレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10411 +#: src/readelf.c:10457 #, c-format msgid "" "\n" @@ -5529,22 +5537,22 @@ msgstr "" "\n" "例外取扱いテーブルセクション [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10434 +#: src/readelf.c:10480 #, c-format msgid " LPStart encoding: %#x " msgstr " LPStart コード化: %#x " -#: src/readelf.c:10446 +#: src/readelf.c:10492 #, c-format msgid " TType encoding: %#x " msgstr "TType コード化: %#x " -#: src/readelf.c:10461 +#: src/readelf.c:10507 #, c-format msgid " Call site encoding: %#x " msgstr "呼出しサイトコード化: %#x " -#: src/readelf.c:10474 +#: src/readelf.c:10520 msgid "" "\n" " Call site table:" @@ -5552,7 +5560,7 @@ msgstr "" "\n" " 呼出しサイトテーブル:" -#: src/readelf.c:10488 +#: src/readelf.c:10534 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5565,12 +5573,12 @@ msgstr "" " 離着陸場: %#\n" " 行動: %u\n" -#: src/readelf.c:10561 +#: src/readelf.c:10607 #, c-format msgid "invalid TType encoding" msgstr "不当な TType コード化" -#: src/readelf.c:10587 +#: src/readelf.c:10634 #, fuzzy, c-format msgid "" "\n" @@ -5580,37 +5588,37 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:10616 +#: src/readelf.c:10663 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:10634 +#: src/readelf.c:10681 #, fuzzy, c-format msgid " CU offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10641 +#: src/readelf.c:10688 #, fuzzy, c-format msgid " TU offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10648 +#: src/readelf.c:10695 #, fuzzy, c-format msgid " address offset: %#\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:10655 +#: src/readelf.c:10702 #, fuzzy, c-format msgid " symbol offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10662 +#: src/readelf.c:10709 #, fuzzy, c-format msgid " constant offset: %#\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:10676 +#: src/readelf.c:10723 #, fuzzy, c-format msgid "" "\n" @@ -5620,7 +5628,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:10701 +#: src/readelf.c:10748 #, fuzzy, c-format msgid "" "\n" @@ -5630,7 +5638,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:10730 +#: src/readelf.c:10777 #, fuzzy, c-format msgid "" "\n" @@ -5640,7 +5648,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:10762 +#: src/readelf.c:10809 #, fuzzy, c-format msgid "" "\n" @@ -5649,18 +5657,18 @@ msgstr "" "\n" "オフセット %#0 に不当なシンボルテーブル\n" -#: src/readelf.c:10900 +#: src/readelf.c:10947 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "デバッグ内容記述子を得られません: %s" -#: src/readelf.c:11263 src/readelf.c:11885 src/readelf.c:11996 -#: src/readelf.c:12054 +#: src/readelf.c:11310 src/readelf.c:11932 src/readelf.c:12043 +#: src/readelf.c:12101 #, c-format msgid "cannot convert core note data: %s" msgstr "コアノートデータの変換ができません: %s" -#: src/readelf.c:11626 +#: src/readelf.c:11673 #, c-format msgid "" "\n" @@ -5669,21 +5677,21 @@ msgstr "" "\n" "%*s... < %u 回の繰返し> ..." -#: src/readelf.c:12133 +#: src/readelf.c:12180 msgid " Owner Data size Type\n" msgstr " 所有者 データ大きさタイプ\n" -#: src/readelf.c:12151 +#: src/readelf.c:12209 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:12201 +#: src/readelf.c:12261 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "ノートセクションの内容を得られません: %s" -#: src/readelf.c:12228 +#: src/readelf.c:12288 #, c-format msgid "" "\n" @@ -5693,7 +5701,7 @@ msgstr "" "オフセット %4$#0 の %3$ バイトのノートセクション [%1$2zu] " "'%2$s':\n" -#: src/readelf.c:12251 +#: src/readelf.c:12311 #, c-format msgid "" "\n" @@ -5702,7 +5710,7 @@ msgstr "" "\n" "オフセット %2$#0 の %1$ バイトのノートセグメント:\n" -#: src/readelf.c:12297 +#: src/readelf.c:12358 #, fuzzy, c-format msgid "" "\n" @@ -5711,12 +5719,12 @@ msgstr "" "\n" "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n" -#: src/readelf.c:12324 src/readelf.c:12375 +#: src/readelf.c:12385 src/readelf.c:12436 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "セクション [%Zu] '%s' からデータが得られません: %s" -#: src/readelf.c:12329 +#: src/readelf.c:12390 #, fuzzy, c-format msgid "" "\n" @@ -5726,7 +5734,7 @@ msgstr "" "オフセット %4$#0 のセクション [%1$Zu] '%2$s' の16進ダン" "プ、%3$ バイト:\n" -#: src/readelf.c:12334 +#: src/readelf.c:12395 #, fuzzy, c-format msgid "" "\n" @@ -5737,7 +5745,7 @@ msgstr "" "オフセット %4$#0 のセクション [%1$Zu] '%2$s' の16進ダン" "プ、%3$ バイト:\n" -#: src/readelf.c:12348 +#: src/readelf.c:12409 #, fuzzy, c-format msgid "" "\n" @@ -5746,7 +5754,7 @@ msgstr "" "\n" "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n" -#: src/readelf.c:12380 +#: src/readelf.c:12441 #, fuzzy, c-format msgid "" "\n" @@ -5756,7 +5764,7 @@ msgstr "" "オフセット %4$#0 文字列セクション [%1$Zu] '%2$s' には %3$ バ" "イトあります:\n" -#: src/readelf.c:12385 +#: src/readelf.c:12446 #, fuzzy, c-format msgid "" "\n" @@ -5767,7 +5775,7 @@ msgstr "" "オフセット %4$#0 文字列セクション [%1$Zu] '%2$s' には %3$ バ" "イトあります:\n" -#: src/readelf.c:12434 +#: src/readelf.c:12495 #, c-format msgid "" "\n" @@ -5776,7 +5784,7 @@ msgstr "" "\n" "セクション [%lu] がありません" -#: src/readelf.c:12463 +#: src/readelf.c:12524 #, c-format msgid "" "\n" @@ -5785,12 +5793,12 @@ msgstr "" "\n" "セクション '%s' がありません" -#: src/readelf.c:12520 +#: src/readelf.c:12581 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "アーカイブのシンボル索引 '%s' を得られません: %s" -#: src/readelf.c:12523 +#: src/readelf.c:12584 #, c-format msgid "" "\n" @@ -5799,7 +5807,7 @@ msgstr "" "\n" "アーカイブ '%s' にはシンボル索引がありません\n" -#: src/readelf.c:12527 +#: src/readelf.c:12588 #, fuzzy, c-format msgid "" "\n" @@ -5808,12 +5816,12 @@ msgstr "" "\n" "アーカイブ '%s' の索引には %Zu 項目あります:\n" -#: src/readelf.c:12545 +#: src/readelf.c:12606 #, fuzzy, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "'%2$s' の オフセット %1$Zu のメンバーを抽出できません: %3$s" -#: src/readelf.c:12550 +#: src/readelf.c:12611 #, c-format msgid "Archive member '%s' contains:\n" msgstr "アーカイブメンバー '%s' には以下があります:\n" @@ -5878,12 +5886,12 @@ msgstr "不当な基数: %s" msgid "%s: file format not recognized" msgstr "%s: ファイル形式を認識できません" -#: src/size.c:416 src/size.c:549 +#: src/size.c:418 src/size.c:551 #, c-format msgid " (ex %s)" msgstr " (ex %s)" -#: src/size.c:574 +#: src/size.c:576 msgid "(TOTALS)\n" msgstr "(合計)\n" @@ -6071,94 +6079,114 @@ msgstr "" msgid "Skipping section %zd '%s' data outside file" msgstr "" -#: src/strip.c:70 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "はぎ取った出力を ふぁいる に置く" -#: src/strip.c:71 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "抽出した取り除いたセクションを ふぁいる に置く" -#: src/strip.c:72 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "-f パラメーターの代わりに 名前 ふぁいる を有効にする" -#: src/strip.c:76 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "デバッグ用のシンボルを全て取り除く" -#: src/strip.c:80 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "" -#: src/strip.c:82 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "修正/アクセスタイムスタンプを出力へ複写する" -#: src/strip.c:84 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " "operation is not reversable, needs -f)" msgstr "" -#: src/strip.c:86 +#: src/strip.c:87 +msgid "" +"Similar to --reloc-debug-sections, but resolve all trivial relocations " +"between debug sections in place. No other stripping is performed (operation " +"is not reversable, incompatible with -f, -g, --remove-comment and --remove-" +"section)" +msgstr "" + +#: src/strip.c:89 msgid "Remove .comment section" msgstr ".comment セクションを取り除く" -#: src/strip.c:87 +#: src/strip.c:90 msgid "" "Remove the named section. SECTION is an extended wildcard pattern. May be " "given more than once. Only non-allocated sections can be removed." msgstr "" -#: src/strip.c:88 +#: src/strip.c:91 msgid "" "Keep the named section. SECTION is an extended wildcard pattern. May be " "given more than once." msgstr "" #. Short description of program. -#: src/strip.c:95 +#: src/strip.c:98 msgid "Discard symbols from object files." msgstr "オブジェクトファイルからシンボルを破棄する" -#: src/strip.c:241 +#: src/strip.c:247 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "" -#: src/strip.c:255 +#: src/strip.c:253 +#, c-format +msgid "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" +msgstr "" + +#: src/strip.c:267 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "'-o' と '-f' と一緒の場合は入力ファイルは 1 つしか認められません" -#: src/strip.c:278 +#: src/strip.c:290 #, c-format msgid "-f option specified twice" msgstr "-f オプションが 2 回指定されています" -#: src/strip.c:287 +#: src/strip.c:299 #, c-format msgid "-F option specified twice" msgstr "-F オプションが 2 回指定されています" -#: src/strip.c:346 +#: src/strip.c:362 #, fuzzy, c-format msgid "cannot both keep and remove .comment section" msgstr ".comment セクションを取り除く" -#: src/strip.c:371 src/strip.c:395 +#: src/strip.c:574 +#, fuzzy, c-format +msgid "bad relocation" +msgstr "リロケーションを表示" + +#: src/strip.c:726 src/strip.c:750 #, c-format msgid "cannot stat input file '%s'" msgstr "入力ファイル '%s' を stat できません" -#: src/strip.c:385 +#: src/strip.c:740 #, c-format msgid "while opening '%s'" msgstr "'%s' を開いている間" -#: src/strip.c:423 +#: src/strip.c:778 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "%s: アーカイブから抜き出している時は -o や -f は使えません" @@ -6169,132 +6197,132 @@ msgstr "%s: アーカイブから抜き出している時は -o や -f は使え #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:435 +#: src/strip.c:790 #, fuzzy, c-format msgid "%s: no support for stripping archive" msgstr "%s: アーカイブから抜き出している時は -o や -f は使えません" -#: src/strip.c:534 +#: src/strip.c:1001 #, c-format msgid "cannot open EBL backend" msgstr "EBL バックエンドを開けません" -#: src/strip.c:579 +#: src/strip.c:1046 #, fuzzy, c-format msgid "cannot get number of phdrs" msgstr "セクション数を決定できません: %s" -#: src/strip.c:595 src/strip.c:619 -#, c-format -msgid "cannot create new file '%s': %s" +#: src/strip.c:1060 src/strip.c:1103 +#, fuzzy, c-format +msgid "cannot create new ehdr for file '%s': %s" msgstr "新しいファイル '%s' を生成できません: %s" -#: src/strip.c:701 +#: src/strip.c:1070 src/strip.c:1113 +#, fuzzy, c-format +msgid "cannot create new phdr for file '%s': %s" +msgstr "新しいファイル '%s' を生成できません: %s" + +#: src/strip.c:1194 #, c-format msgid "illformed file '%s'" msgstr "不適格なファイル '%s'" -#: src/strip.c:711 +#: src/strip.c:1204 #, fuzzy, c-format msgid "Cannot remove allocated section '%s'" msgstr "PLT セクションを割り当てられません: %s" -#: src/strip.c:720 +#: src/strip.c:1213 #, fuzzy, c-format msgid "Cannot both keep and remove section '%s'" msgstr "0番目のセクションのヘッダーを得られません: %s" -#: src/strip.c:1076 src/strip.c:1210 +#: src/strip.c:1573 src/strip.c:1688 #, c-format msgid "while generating output file: %s" msgstr "出力ファイルを生成している間: %s" -#: src/strip.c:1141 +#: src/strip.c:1637 #, fuzzy, c-format -msgid "%s: error while getting shdrstrndx: %s" +msgid "%s: error while updating ELF header: %s" msgstr "%s: ELF ヘッダーを生成している間にエラー: %s" -#: src/strip.c:1157 +#: src/strip.c:1646 #, fuzzy, c-format -msgid "%s: error getting zero section: %s" -msgstr "%s: ファイルを読込み中にエラー: %s" +msgid "%s: error while getting shdrstrndx: %s" +msgstr "%s: ELF ヘッダーを生成している間にエラー: %s" -#: src/strip.c:1166 +#: src/strip.c:1654 src/strip.c:2534 #, fuzzy, c-format -msgid "%s: error while updating zero section: %s" -msgstr "%s: ファイルを読込み中にエラー: %s" - -#: src/strip.c:1176 src/strip.c:2292 -#, c-format -msgid "%s: error while creating ELF header: %s" +msgid "%s: error updating shdrstrndx: %s" msgstr "%s: ELF ヘッダーを生成している間にエラー: %s" -#: src/strip.c:1193 +#: src/strip.c:1671 #, c-format msgid "while preparing output for '%s'" msgstr "'%s' のための出力を準備している間" -#: src/strip.c:1255 src/strip.c:1318 +#: src/strip.c:1733 src/strip.c:1796 #, c-format msgid "while create section header section: %s" msgstr "セクションヘッダーセクションを生成している間: %s" -#: src/strip.c:1264 +#: src/strip.c:1742 #, c-format msgid "cannot allocate section data: %s" msgstr "セクションデータを割り当てられません: %s" -#: src/strip.c:1330 +#: src/strip.c:1808 #, c-format msgid "while create section header string table: %s" msgstr "セクションヘッダー文字列テーブルを生成中: %s" -#: src/strip.c:1337 +#: src/strip.c:1815 #, fuzzy, c-format msgid "no memory to create section header string table" msgstr "セクションヘッダー文字列テーブルを生成中: %s" -#: src/strip.c:1547 +#: src/strip.c:2027 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2078 -#, fuzzy, c-format -msgid "bad relocation" -msgstr "リロケーションを表示" - -#: src/strip.c:2203 src/strip.c:2316 +#: src/strip.c:2450 src/strip.c:2558 #, c-format msgid "while writing '%s': %s" msgstr "'%s' を書込み中: %s" -#: src/strip.c:2214 +#: src/strip.c:2461 #, c-format msgid "while creating '%s'" msgstr "'%s' を生成中" -#: src/strip.c:2237 +#: src/strip.c:2484 #, c-format msgid "while computing checksum for debug information" msgstr "デバッグ情報のチェックサムを計算中" -#: src/strip.c:2301 +#: src/strip.c:2525 +#, c-format +msgid "%s: error while creating ELF header: %s" +msgstr "%s: ELF ヘッダーを生成している間にエラー: %s" + +#: src/strip.c:2543 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: ファイルを読込み中にエラー: %s" -#: src/strip.c:2341 src/strip.c:2361 +#: src/strip.c:2583 src/strip.c:2603 #, fuzzy, c-format msgid "while writing '%s'" msgstr "'%s' を書込み中: %s" -#: src/strip.c:2398 src/strip.c:2405 +#: src/strip.c:2640 src/strip.c:2647 #, c-format msgid "error while finishing '%s': %s" msgstr "'%s' の終了中にエラー: %s" -#: src/strip.c:2422 src/strip.c:2498 +#: src/strip.c:2664 src/strip.c:2740 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "'%s' のアクセスと変更日付を設定できません" @@ -6380,269 +6408,299 @@ msgstr "" msgid "cannot get shdrstrndx:%s" msgstr "セクションを得られません: %s" -#: src/unstrip.c:257 +#: src/unstrip.c:248 src/unstrip.c:2034 +#, c-format +msgid "cannot get ELF header: %s" +msgstr "" + +#: src/unstrip.c:258 #, fuzzy, c-format msgid "cannot get new zero section: %s" msgstr "セクションを得られません: %s" -#: src/unstrip.c:260 +#: src/unstrip.c:261 #, fuzzy, c-format msgid "cannot update new zero section: %s" msgstr "セクション数を決定できません: %s" -#: src/unstrip.c:264 +#: src/unstrip.c:265 #, c-format msgid "cannot copy ELF header: %s" msgstr "" -#: src/unstrip.c:268 src/unstrip.c:1962 src/unstrip.c:2005 +#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 #, fuzzy, c-format msgid "cannot get number of program headers: %s" msgstr "セクション数を決定できません: %s" -#: src/unstrip.c:273 src/unstrip.c:1966 +#: src/unstrip.c:274 src/unstrip.c:2056 #, c-format msgid "cannot create program headers: %s" msgstr "" -#: src/unstrip.c:279 +#: src/unstrip.c:280 #, c-format msgid "cannot copy program header: %s" msgstr "" -#: src/unstrip.c:289 +#: src/unstrip.c:290 #, c-format msgid "cannot copy section header: %s" msgstr "" -#: src/unstrip.c:292 src/unstrip.c:1597 +#: src/unstrip.c:293 src/unstrip.c:1665 #, c-format msgid "cannot get section data: %s" msgstr "" -#: src/unstrip.c:294 src/unstrip.c:1599 +#: src/unstrip.c:295 src/unstrip.c:1667 #, c-format msgid "cannot copy section data: %s" msgstr "" -#: src/unstrip.c:318 +#: src/unstrip.c:319 #, c-format msgid "cannot create directory '%s'" msgstr "" -#: src/unstrip.c:390 src/unstrip.c:820 src/unstrip.c:1631 +#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 #, c-format msgid "cannot get symbol table entry: %s" msgstr "" -#: src/unstrip.c:406 src/unstrip.c:631 src/unstrip.c:652 src/unstrip.c:664 -#: src/unstrip.c:1652 src/unstrip.c:1828 src/unstrip.c:1852 +#: 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 #, c-format msgid "cannot update symbol table: %s" msgstr "" -#: src/unstrip.c:416 +#: src/unstrip.c:417 #, c-format msgid "cannot update section header: %s" msgstr "" -#: src/unstrip.c:455 src/unstrip.c:466 +#: src/unstrip.c:459 src/unstrip.c:473 #, c-format msgid "cannot update relocation: %s" msgstr "" -#: src/unstrip.c:554 +#: src/unstrip.c:570 #, c-format msgid "cannot get symbol version: %s" msgstr "" -#: src/unstrip.c:567 +#: src/unstrip.c:583 #, c-format msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "" -#: src/unstrip.c:826 +#: src/unstrip.c:851 #, fuzzy, c-format msgid "invalid string offset in symbol [%zu]" msgstr "シンボル %2$sの不正なオフセット %1$zu " -#: src/unstrip.c:984 src/unstrip.c:1334 +#: src/unstrip.c:1009 src/unstrip.c:1398 #, fuzzy, c-format msgid "cannot read section [%zu] name: %s" msgstr "セクションデータを割り当てられません: %s" -#: src/unstrip.c:1025 src/unstrip.c:1044 src/unstrip.c:1082 +#: src/unstrip.c:1024 +#, fuzzy, c-format +msgid "bad sh_link for group section: %s" +msgstr "不当な .debug_line セクション" + +#: src/unstrip.c:1030 +#, fuzzy, c-format +msgid "couldn't get shdr for group section: %s" +msgstr "セクションからデータを得られません %d: %s" + +#: src/unstrip.c:1035 +#, fuzzy, c-format +msgid "bad data for group symbol section: %s" +msgstr "セクションからデータを得られません %d: %s" + +#: src/unstrip.c:1041 +#, fuzzy, c-format +msgid "couldn't get symbol for group section: %s" +msgstr "セクション数を決定できません: %s" + +#: src/unstrip.c:1046 +#, 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 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "" -#: src/unstrip.c:1062 +#: src/unstrip.c:1125 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "" -#: src/unstrip.c:1073 +#: src/unstrip.c:1136 #, c-format msgid "invalid contents in '%s' section" msgstr "" -#: src/unstrip.c:1128 src/unstrip.c:1456 +#: src/unstrip.c:1192 src/unstrip.c:1524 #, fuzzy, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/unstrip.c:1253 src/unstrip.c:1268 src/unstrip.c:1535 src/unstrip.c:1787 +#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 #, c-format msgid "cannot add section name to string table: %s" msgstr "" -#: src/unstrip.c:1277 +#: src/unstrip.c:1341 #, c-format msgid "cannot update section header string table data: %s" msgstr "" -#: src/unstrip.c:1305 src/unstrip.c:1309 +#: src/unstrip.c:1369 src/unstrip.c:1373 #, c-format msgid "cannot get section header string table section index: %s" msgstr "" -#: src/unstrip.c:1313 src/unstrip.c:1317 src/unstrip.c:1550 +#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 #, c-format msgid "cannot get section count: %s" msgstr "" -#: src/unstrip.c:1320 +#: src/unstrip.c:1384 #, c-format msgid "more sections in stripped file than debug file -- arguments reversed?" msgstr "" -#: src/unstrip.c:1379 src/unstrip.c:1471 +#: src/unstrip.c:1446 src/unstrip.c:1539 #, c-format msgid "cannot read section header string table: %s" msgstr "" -#: src/unstrip.c:1529 +#: src/unstrip.c:1597 #, c-format msgid "cannot add new section: %s" msgstr "" -#: src/unstrip.c:1639 +#: src/unstrip.c:1710 #, fuzzy, c-format msgid "symbol [%zu] has invalid section index" msgstr "不当なセクション索引" -#: src/unstrip.c:1923 +#: src/unstrip.c:1742 +#, fuzzy, c-format +msgid "group has invalid section index [%zd]" +msgstr "不当なセクション索引" + +#: src/unstrip.c:2013 #, fuzzy, c-format msgid "cannot read section data: %s" msgstr "セクションデータを割り当てられません: %s" -#: src/unstrip.c:1944 -#, c-format -msgid "cannot get ELF header: %s" -msgstr "" - -#: src/unstrip.c:1952 +#: src/unstrip.c:2042 #, c-format msgid "cannot update ELF header: %s" msgstr "ELF ヘッダーを更新できません: %s" -#: src/unstrip.c:1976 +#: src/unstrip.c:2066 #, c-format msgid "cannot update program header: %s" msgstr "" -#: src/unstrip.c:1981 src/unstrip.c:2063 +#: src/unstrip.c:2071 src/unstrip.c:2153 #, c-format msgid "cannot write output file: %s" msgstr "" -#: src/unstrip.c:2032 +#: src/unstrip.c:2122 #, c-format msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" msgstr "" -#: src/unstrip.c:2035 +#: src/unstrip.c:2125 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" msgstr "" -#: src/unstrip.c:2054 src/unstrip.c:2105 src/unstrip.c:2117 src/unstrip.c:2203 +#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "" -#: src/unstrip.c:2096 +#: src/unstrip.c:2186 msgid "WARNING: " msgstr "" -#: src/unstrip.c:2098 +#: src/unstrip.c:2188 msgid ", use --force" msgstr "" -#: src/unstrip.c:2121 +#: src/unstrip.c:2211 msgid "ELF header identification (e_ident) different" msgstr "" -#: src/unstrip.c:2124 +#: src/unstrip.c:2214 msgid "ELF header type (e_type) different" msgstr "" -#: src/unstrip.c:2127 +#: src/unstrip.c:2217 msgid "ELF header machine type (e_machine) different" msgstr "" -#: src/unstrip.c:2130 +#: src/unstrip.c:2220 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "" -#: src/unstrip.c:2160 +#: src/unstrip.c:2250 #, c-format msgid "cannot find stripped file for module '%s': %s" msgstr "" -#: src/unstrip.c:2164 +#: src/unstrip.c:2254 #, c-format msgid "cannot open stripped file '%s' for module '%s': %s" msgstr "" -#: src/unstrip.c:2179 +#: src/unstrip.c:2269 #, c-format msgid "cannot find debug file for module '%s': %s" msgstr "" -#: src/unstrip.c:2183 +#: src/unstrip.c:2273 #, c-format msgid "cannot open debug file '%s' for module '%s': %s" msgstr "" -#: src/unstrip.c:2196 +#: src/unstrip.c:2286 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "" -#: src/unstrip.c:2227 +#: src/unstrip.c:2317 #, c-format msgid "cannot cache section addresses for module '%s': %s" msgstr "" -#: src/unstrip.c:2360 +#: src/unstrip.c:2450 #, c-format msgid "no matching modules found" msgstr "" -#: src/unstrip.c:2369 +#: src/unstrip.c:2459 #, c-format msgid "matched more than one module" msgstr "" -#: src/unstrip.c:2413 +#: src/unstrip.c:2503 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" msgstr "" -#: src/unstrip.c:2414 +#: src/unstrip.c:2504 msgid "" "Combine stripped files with separate symbols and debug information.\n" "\n" @@ -6683,6 +6741,14 @@ msgstr "出力選択:" msgid "Show instances of inlined functions" msgstr "" +#, fuzzy +#~ msgid "%s: error getting zero section: %s" +#~ msgstr "%s: ファイルを読込み中にエラー: %s" + +#, fuzzy +#~ msgid "%s: error while updating zero section: %s" +#~ msgstr "%s: ファイルを読込み中にエラー: %s" + #~ msgid "%s+%# <%s+%#>" #~ msgstr "%s+%# <%s+%#>" diff --git a/po/pl.po b/po/pl.po index 32baa51f..3c6b468e 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-09-14 12:05+0200\n" +"POT-Creation-Date: 2018-11-14 13:04+0100\n" "PO-Revision-Date: 2016-12-29 17:48+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \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:3409 -#: src/readelf.c:11212 src/unstrip.c:2256 src/unstrip.c:2462 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 +#: src/readelf.c:11259 src/unstrip.c:2346 src/unstrip.c:2552 #, 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:2403 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 msgid "Input selection options:" msgstr "Opcje wyboru wejścia:" @@ -523,8 +523,8 @@ msgstr "Nie jest plikiem ELF ET_CORE" msgid "No backend" msgstr "Brak zaplecza" -#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 -#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 +#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" @@ -535,58 +535,58 @@ msgstr "" msgid ": %#" msgstr ": %#" -#: libebl/eblobjnote.c:53 +#: libebl/eblobjnote.c:58 #, c-format msgid "unknown SDT version %u\n" msgstr "nieznana wersja SDT %u\n" -#: libebl/eblobjnote.c:71 +#: libebl/eblobjnote.c:76 #, c-format msgid "invalid SDT probe descriptor\n" msgstr "nieprawidłowy deskryptor sondy SDT\n" -#: libebl/eblobjnote.c:121 +#: libebl/eblobjnote.c:126 #, c-format msgid " PC: " msgstr " PC: " -#: libebl/eblobjnote.c:123 +#: libebl/eblobjnote.c:128 #, c-format msgid " Base: " msgstr " Podstawa: " -#: libebl/eblobjnote.c:125 +#: libebl/eblobjnote.c:130 #, c-format msgid " Semaphore: " msgstr " Semafor: " -#: libebl/eblobjnote.c:127 +#: libebl/eblobjnote.c:132 #, c-format msgid " Provider: " msgstr " Dostawca: " -#: libebl/eblobjnote.c:129 +#: libebl/eblobjnote.c:134 #, c-format msgid " Name: " msgstr " Nazwa: " -#: libebl/eblobjnote.c:131 +#: libebl/eblobjnote.c:136 #, c-format msgid " Args: " msgstr " Parametry: " -#: libebl/eblobjnote.c:141 +#: libebl/eblobjnote.c:300 #, c-format msgid " Build ID: " msgstr " Identyfikator kopii: " #. A non-null terminated version string. -#: libebl/eblobjnote.c:152 +#: libebl/eblobjnote.c:311 #, c-format msgid " Linker version: %.*s\n" msgstr " Wersja konsolidatora: %.*s\n" -#: libebl/eblobjnote.c:213 +#: libebl/eblobjnote.c:553 #, c-format msgid " OS: %s, ABI: " msgstr " System operacyjny: %s, ABI: " @@ -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:6123 +#: libelf/elf_error.c:87 src/readelf.c:6129 #, 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:9758 src/readelf.c:10329 -#: src/readelf.c:10430 src/readelf.c:10611 +#: libelf/elf_error.c:191 src/readelf.c:9775 src/readelf.c:10375 +#: src/readelf.c:10476 src/readelf.c:10658 #, c-format msgid "invalid data" msgstr "nieprawidłowe dane" @@ -1038,12 +1038,12 @@ msgstr "nie można wykonać stat na archiwum „%s”" msgid "no entry %s in archive\n" msgstr "brak wpisu %s w archiwum\n" -#: src/ar.c:472 src/ar.c:917 src/ar.c:1121 +#: src/ar.c:472 src/ar.c:923 src/ar.c:1127 #, c-format msgid "cannot create hash table" msgstr "nie można utworzyć tabeli mieszającej" -#: src/ar.c:479 src/ar.c:924 src/ar.c:1130 +#: src/ar.c:479 src/ar.c:930 src/ar.c:1136 #, c-format msgid "cannot insert into hash table" msgstr "nie można umieścić w tabeli mieszającej" @@ -1053,97 +1053,97 @@ msgstr "nie można umieścić w tabeli mieszającej" msgid "cannot stat '%s'" msgstr "nie można wykonać stat na „%s”" -#: src/ar.c:583 +#: src/ar.c:589 #, c-format msgid "cannot read content of %s: %s" msgstr "nie można odczytać zawartości %s: %s" -#: src/ar.c:626 +#: src/ar.c:632 #, c-format msgid "cannot open %.*s" msgstr "nie można otworzyć %.*s" -#: src/ar.c:648 +#: src/ar.c:654 #, c-format msgid "failed to write %s" msgstr "zapisanie %s się nie powiodło" -#: src/ar.c:660 +#: src/ar.c:666 #, c-format msgid "cannot change mode of %s" msgstr "nie można zmienić trybu %s" -#: src/ar.c:676 +#: src/ar.c:682 #, c-format msgid "cannot change modification time of %s" msgstr "nie można zmienić czasu modyfikacji %s" -#: src/ar.c:722 +#: src/ar.c:728 #, c-format msgid "cannot rename temporary file to %.*s" msgstr "nie można zmienić nazwy pliku tymczasowego na %.*s" -#: src/ar.c:758 src/ar.c:1009 src/ar.c:1410 src/ranlib.c:222 +#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222 #, c-format msgid "cannot create new file" msgstr "nie można utworzyć nowego pliku" -#: src/ar.c:1212 +#: src/ar.c:1218 #, c-format msgid "position member %s not found" msgstr "nie odnaleziono położenia elementu %s" -#: src/ar.c:1222 +#: src/ar.c:1228 #, c-format msgid "%s: no entry %s in archive!\n" msgstr "%s: brak wpisu %s w archiwum.\n" -#: src/ar.c:1251 src/objdump.c:241 +#: src/ar.c:1257 src/objdump.c:241 #, c-format msgid "cannot open %s" msgstr "nie można otworzyć %s" -#: src/ar.c:1256 +#: src/ar.c:1262 #, c-format msgid "cannot stat %s" msgstr "nie można wykonać stat na %s" -#: src/ar.c:1262 +#: src/ar.c:1268 #, c-format msgid "%s is no regular file" msgstr "%s nie jest zwykłym plikiem" -#: src/ar.c:1275 +#: src/ar.c:1281 #, c-format msgid "cannot get ELF descriptor for %s: %s\n" msgstr "nie można uzyskać deskryptora ELF dla %s: %s\n" -#: src/ar.c:1295 +#: src/ar.c:1301 #, c-format msgid "cannot read %s: %s" msgstr "nie można odczytać %s: %s" -#: src/ar.c:1470 +#: src/ar.c:1476 #, fuzzy, c-format msgid "cannot represent ar_date" msgstr "nie można dekompresować danych" -#: src/ar.c:1476 +#: src/ar.c:1482 #, fuzzy, c-format msgid "cannot represent ar_uid" msgstr "nie można dekompresować danych" -#: src/ar.c:1482 +#: src/ar.c:1488 #, fuzzy, c-format msgid "cannot represent ar_gid" msgstr "nie można dekompresować danych" -#: src/ar.c:1488 +#: src/ar.c:1494 #, fuzzy, c-format msgid "cannot represent ar_mode" msgstr "nie można uzyskać nazwy sekcji" -#: src/ar.c:1494 +#: src/ar.c:1500 #, fuzzy, c-format msgid "cannot represent ar_size" msgstr "nie można otworzyć %s" @@ -1365,8 +1365,8 @@ msgid "Invalid value '%s' for --gaps parameter." 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:517 src/strip.c:554 -#: src/unstrip.c:2052 src/unstrip.c:2081 +#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 +#: src/unstrip.c:2142 src/unstrip.c:2171 #, c-format msgid "cannot open '%s'" msgstr "nie można otworzyć „%s”" @@ -1381,7 +1381,7 @@ msgstr "nie można utworzyć deskryptora ELF dla „%s”: %s" msgid "cannot create EBL descriptor for '%s'" msgstr "nie można utworzyć deskryptora EBL dla „%s”" -#: src/elfcmp.c:761 src/findtextrel.c:393 +#: src/elfcmp.c:761 src/findtextrel.c:394 #, c-format msgid "cannot get section header of section %zu: %s" msgstr "nie można uzyskać nagłówka sekcji dla sekcji %zu: %s" @@ -1396,7 +1396,7 @@ msgstr "nie można uzyskać zawartości sekcji %zu: %s" msgid "cannot get relocation: %s" msgstr "nie można uzyskać relokacji: %s" -#: src/elfcompress.c:115 src/strip.c:296 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "Opcję -o podano dwukrotnie" @@ -1455,7 +1455,7 @@ msgid "" "rewrite the file even if no section would be (de)compressed" msgstr "Wymusza kompresję sekcji nawet, jeśli spowodowałoby to jej zwiększenie" -#: src/elfcompress.c:1324 src/strip.c:90 +#: src/elfcompress.c:1324 src/strip.c:93 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "Łagodzi kilka reguł, aby obsłużyć lekko uszkodzone pliki ELF" @@ -1675,7 +1675,7 @@ msgstr "" #: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651 #: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095 -#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4401 +#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431 #, c-format msgid "section [%2d] '%s': cannot get section data\n" msgstr "sekcja [%2d] „%s”: nie można uzyskać danych sekcji\n" @@ -3229,51 +3229,54 @@ msgstr "" "sekcja [%2d]: „%s”: nieznany typ notatki pliku core % pod offsetem " "%zu\n" -#: src/elflint.c:4344 -#, c-format -msgid "phdr[%d]: unknown object file note type % at offset %zu\n" +#: src/elflint.c:4370 +#, fuzzy, c-format +msgid "" +"phdr[%d]: unknown object file note type % with owner name '%s' at " +"offset %zu\n" msgstr "" "phdr[%d]: nieznany typ notatki pliku obiektu % pod offsetem %zu\n" -#: src/elflint.c:4348 -#, c-format +#: src/elflint.c:4375 +#, fuzzy, c-format msgid "" -"section [%2d] '%s': unknown object file note type % at offset %zu\n" +"section [%2d] '%s': unknown object file note type % with owner name " +"'%s' at offset %zu\n" msgstr "" "sekcja [%2d] „%s”: nieznany typ notatki pliku obiektu % pod offsetem " "%zu\n" -#: src/elflint.c:4365 +#: src/elflint.c:4394 #, c-format msgid "phdr[%d]: no note entries defined for the type of file\n" msgstr "phdr[%d]: brak określonych wpisów notatek dla typu pliku\n" -#: src/elflint.c:4384 +#: src/elflint.c:4414 #, c-format msgid "phdr[%d]: cannot get content of note section: %s\n" msgstr "phdr[%d]: nie można uzyskać zawartości sekcji notatki: %s\n" -#: src/elflint.c:4387 +#: src/elflint.c:4417 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "phdr[%d]: dodatkowe % bajtów po ostatniej notatce\n" -#: src/elflint.c:4408 +#: src/elflint.c:4438 #, c-format msgid "section [%2d] '%s': no note entries defined for the type of file\n" msgstr "sekcja [%2d] „%s”: brak określonych wpisów notatek dla typu pliku\n" -#: src/elflint.c:4415 +#: src/elflint.c:4445 #, c-format msgid "section [%2d] '%s': cannot get content of note section\n" msgstr "sekcja [%2d] „%s”: nie można uzyskać zawartości sekcji notatek\n" -#: src/elflint.c:4418 +#: src/elflint.c:4448 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "sekcja [%2d] „%s”: dodatkowe % bajtów po ostatniej notatce\n" -#: src/elflint.c:4436 +#: src/elflint.c:4466 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" @@ -3281,135 +3284,135 @@ msgstr "" "tylko pliki wykonywalne, obiekty współdzielone i pliki core mogą mieć " "nagłówki programu\n" -#: src/elflint.c:4451 +#: src/elflint.c:4481 #, c-format msgid "cannot get program header entry %d: %s\n" msgstr "nie można uzyskać wpisu nagłówka programu %d: %s\n" -#: src/elflint.c:4460 +#: src/elflint.c:4490 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" "wpis nagłówka programu %d: nieznany typ wpisu nagłówka programu %#\n" -#: src/elflint.c:4471 +#: src/elflint.c:4501 #, c-format msgid "more than one INTERP entry in program header\n" msgstr "więcej niż jeden wpis INTERP w nagłówku programu\n" -#: src/elflint.c:4479 +#: src/elflint.c:4509 #, c-format msgid "more than one TLS entry in program header\n" msgstr "więcej niż jeden wpis TLS w nagłówku programu\n" -#: src/elflint.c:4486 +#: src/elflint.c:4516 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "statyczny plik wykonywalny nie może mieć sekcji dynamicznych\n" -#: src/elflint.c:4500 +#: src/elflint.c:4530 #, c-format msgid "dynamic section reference in program header has wrong offset\n" msgstr "odniesienie sekcji dynamicznej w nagłówku programu ma błędny offset\n" -#: src/elflint.c:4503 +#: src/elflint.c:4533 #, c-format msgid "dynamic section size mismatch in program and section header\n" msgstr "różne rozmiary sekcji dynamicznej w nagłówku programu i sekcji\n" -#: src/elflint.c:4513 +#: src/elflint.c:4543 #, c-format msgid "more than one GNU_RELRO entry in program header\n" msgstr "więcej niż jeden wpis GNU_RELRO w nagłówku programu\n" -#: src/elflint.c:4534 +#: src/elflint.c:4564 #, c-format msgid "loadable segment GNU_RELRO applies to is not writable\n" msgstr "wczytywalny segment wskazywany przez GNU_RELRO nie jest zapisywalny\n" -#: src/elflint.c:4545 +#: src/elflint.c:4575 #, c-format msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" msgstr "flagi wczytywalnego segmentu [%u] nie pasują do flag GNU_RELRO [%u]\n" -#: src/elflint.c:4552 +#: src/elflint.c:4582 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" msgstr "" "flagi GNU_RELRO [%u] nie są podzbiorem flag wczytywalnego segmentu [%u]\n" -#: src/elflint.c:4561 src/elflint.c:4584 +#: src/elflint.c:4591 src/elflint.c:4614 #, c-format msgid "%s segment not contained in a loaded segment\n" msgstr "segment %s nie zawiera się we wczytywalnym segmencie\n" -#: src/elflint.c:4590 +#: src/elflint.c:4620 #, c-format msgid "program header offset in ELF header and PHDR entry do not match" msgstr "" "offsety nagłówka programu w nagłówku ELF i wpisie PHDR nie zgadzają się" -#: src/elflint.c:4615 +#: src/elflint.c:4647 #, c-format msgid "call frame search table reference in program header has wrong offset\n" msgstr "" "odniesienie tabeli wyszukiwania ramki wywołania w nagłówku programu ma " "błędny offset\n" -#: src/elflint.c:4618 +#: src/elflint.c:4650 #, c-format msgid "call frame search table size mismatch in program and section header\n" msgstr "" "różne rozmiary tabel wyszukiwania ramki wywołania w nagłówku programu " "i sekcji\n" -#: src/elflint.c:4631 +#: src/elflint.c:4663 #, c-format msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" msgstr "PT_GNU_EH_FRAME jest obecne, ale brak sekcji .eh_frame_hdr\n" -#: src/elflint.c:4639 +#: src/elflint.c:4671 #, c-format msgid "call frame search table must be allocated\n" msgstr "tabela wyszukiwania ramki wywołania musi być przydzielona\n" -#: src/elflint.c:4642 +#: src/elflint.c:4674 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "sekcja [%2zu] „%s”: musi być przydzielona\n" -#: src/elflint.c:4646 +#: src/elflint.c:4678 #, c-format msgid "call frame search table must not be writable\n" msgstr "tabela wyszukiwania ramki wywołania nie może być zapisywalna\n" -#: src/elflint.c:4649 +#: src/elflint.c:4681 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "sekcja [%2zu] „%s” nie może być zapisywalna\n" -#: src/elflint.c:4654 +#: src/elflint.c:4686 #, c-format msgid "call frame search table must not be executable\n" msgstr "tabela wyszukiwania ramki wywołania nie może być wykonywalna\n" -#: src/elflint.c:4657 +#: src/elflint.c:4689 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "sekcja [%2zu] „%s” nie może być wykonywalna\n" -#: src/elflint.c:4668 +#: src/elflint.c:4700 #, c-format msgid "program header entry %d: file size greater than memory size\n" msgstr "wpis nagłówka programu %d: rozmiar pliku większy niż rozmiar pamięci\n" -#: src/elflint.c:4675 +#: src/elflint.c:4707 #, c-format msgid "program header entry %d: alignment not a power of 2\n" msgstr "wpis nagłówka programu %d: wyrównanie nie jest potęgą 2\n" -#: src/elflint.c:4678 +#: src/elflint.c:4710 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " @@ -3418,7 +3421,7 @@ msgstr "" "wpis nagłówka programu %d: offset w pliku i adres wirtualny nie są " "wielokrotnością wyrównania\n" -#: src/elflint.c:4691 +#: src/elflint.c:4723 #, c-format msgid "" "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " @@ -3427,12 +3430,12 @@ msgstr "" "plik wykonywalny/DSO z sekcją .eh_frame_hdr nie ma wpisu nagłówka programu " "PT_GNU_EH_FRAME" -#: src/elflint.c:4725 +#: src/elflint.c:4757 #, c-format msgid "cannot read ELF header: %s\n" msgstr "nie można odczytać nagłówka ELF: %s\n" -#: src/elflint.c:4751 +#: src/elflint.c:4783 #, c-format msgid "text relocation flag set but not needed\n" msgstr "flaga relokacji tekstu jest ustawiona, ale niepotrzebna\n" @@ -3456,7 +3459,7 @@ msgstr "Odnajduje źródło relokacji tekstu w PLIKACH (domyślnie a.out)." #. Strings for arguments in help texts. #: src/findtextrel.c:74 src/nm.c:108 src/objdump.c:71 src/size.c:80 -#: src/strings.c:87 src/strip.c:98 +#: src/strings.c:87 src/strip.c:101 msgid "[FILE...]" msgstr "[PLIK…]" @@ -3475,53 +3478,53 @@ msgstr "„%s” nie jest DSO ani PIE" msgid "getting get section header of section %zu: %s" msgstr "uzyskiwanie nagłówka sekcji dla sekcji %zu: %s" -#: src/findtextrel.c:276 +#: src/findtextrel.c:277 #, c-format msgid "cannot read dynamic section: %s" msgstr "nie można odczytać sekcji dynamicznej: %s" -#: src/findtextrel.c:297 +#: src/findtextrel.c:298 #, c-format msgid "no text relocations reported in '%s'" msgstr "brak relokacji tekstu w „%s”" -#: src/findtextrel.c:309 +#: src/findtextrel.c:310 #, c-format msgid "while reading ELF file" msgstr "podczas odczytywania pliku ELF" -#: src/findtextrel.c:313 +#: src/findtextrel.c:314 #, c-format msgid "cannot get program header count: %s" msgstr "nie można uzyskać liczby nagłówków programu: %s" -#: src/findtextrel.c:324 src/findtextrel.c:341 +#: src/findtextrel.c:325 src/findtextrel.c:342 #, c-format msgid "cannot get program header index at offset %zd: %s" msgstr "nie można uzyskać indeksu nagłówka programu pod offsetem %zd: %s" -#: src/findtextrel.c:405 +#: src/findtextrel.c:406 #, c-format msgid "cannot get symbol table section %zu in '%s': %s" msgstr "nie można uzyskać sekcji tabeli symboli %zu w „%s”: %s" -#: src/findtextrel.c:425 src/findtextrel.c:448 +#: src/findtextrel.c:427 src/findtextrel.c:450 #, c-format msgid "cannot get relocation at index %d in section %zu in '%s': %s" msgstr "nie można uzyskać relokacji pod indeksem %d w sekcji %zu w „%s”: %s" -#: src/findtextrel.c:514 +#: src/findtextrel.c:516 #, c-format msgid "%s not compiled with -fpic/-fPIC\n" msgstr "%s nie został skompilowany z -fpic/-fPIC\n" -#: src/findtextrel.c:567 +#: src/findtextrel.c:570 #, c-format msgid "" "the file containing the function '%s' is not compiled with -fpic/-fPIC\n" msgstr "plik zawierający funkcję „%s” nie został skompilowany z -fpic/-fPIC\n" -#: src/findtextrel.c:574 src/findtextrel.c:594 +#: src/findtextrel.c:577 src/findtextrel.c:597 #, c-format msgid "" "the file containing the function '%s' might not be compiled with -fpic/-" @@ -3529,7 +3532,7 @@ msgid "" msgstr "" "plik zawierający funkcję „%s” mógł nie zostać skompilowany z -fpic/-fPIC\n" -#: src/findtextrel.c:582 +#: src/findtextrel.c:585 #, c-format msgid "" "either the file containing the function '%s' or the file containing the " @@ -3538,7 +3541,7 @@ msgstr "" "plik zawierający funkcję „%s” lub plik zawierający funkcję „%s” nie został " "skompilowany z -fpic/-fPIC\n" -#: src/findtextrel.c:602 +#: src/findtextrel.c:605 #, c-format msgid "" "a relocation modifies memory at offset %llu in a write-protected segment\n" @@ -3546,7 +3549,7 @@ msgstr "" "relokacja modyfikuje pamięć pod offsetem %llu w segmencie zabezpieczonym " "przed zapisem\n" -#: src/nm.c:66 src/strip.c:69 +#: src/nm.c:66 src/strip.c:70 msgid "Output selection:" msgstr "Wybór wyjścia:" @@ -3610,7 +3613,7 @@ msgstr "Oznacza specjalne symbole" msgid "Print size of defined symbols" msgstr "Wyświetla rozmiar określonych symboli" -#: src/nm.c:91 src/size.c:68 src/strip.c:74 src/unstrip.c:73 +#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "Opcje wyjścia:" @@ -3639,18 +3642,18 @@ msgstr "Wyświetla listę symboli z PLIKU (domyślnie a.out)." msgid "Output formatting" msgstr "Formatowanie wyjścia" -#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:130 +#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:133 #, c-format 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:2505 +#: src/strip.c:2747 #, c-format msgid "while closing '%s'" msgstr "podczas zamykania „%s”" -#: src/nm.c:403 src/objdump.c:280 src/strip.c:442 +#: src/nm.c:403 src/objdump.c:280 src/strip.c:797 #, c-format msgid "%s: File format not recognized" msgstr "%s: nie rozpoznano formatu pliku" @@ -3690,12 +3693,12 @@ 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:1410 src/readelf.c:1558 src/readelf.c:1759 src/readelf.c:1965 -#: src/readelf.c:2155 src/readelf.c:2333 src/readelf.c:2409 src/readelf.c:2667 -#: src/readelf.c:2743 src/readelf.c:2830 src/readelf.c:3428 src/readelf.c:3478 -#: src/readelf.c:3541 src/readelf.c:11044 src/readelf.c:12216 -#: src/readelf.c:12419 src/readelf.c:12487 src/size.c:396 src/size.c:465 -#: src/strip.c:571 +#: 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:11091 src/readelf.c:12276 +#: src/readelf.c:12480 src/readelf.c:12548 src/size.c:398 src/size.c:467 +#: 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" @@ -3788,11 +3791,11 @@ msgstr "Nie podano działania.\n" msgid "while close `%s'" msgstr "podczas zamykania „%s”" -#: src/objdump.c:363 src/readelf.c:2060 src/readelf.c:2252 +#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 msgid "INVALID SYMBOL" msgstr "NIEPRAWIDŁOWY SYMBOL" -#: src/objdump.c:378 src/readelf.c:2094 src/readelf.c:2288 +#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 msgid "INVALID SECTION" msgstr "NIEPRAWIDŁOWA SEKCJA" @@ -3999,21 +4002,21 @@ msgstr "Nieznana sekcja debugowania DWARF „%s”.\n" msgid "cannot generate Elf descriptor: %s" msgstr "nie można utworzyć deskryptora ELF: %s" -#: src/readelf.c:596 src/readelf.c:924 src/strip.c:640 +#: src/readelf.c:596 src/readelf.c:923 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:1226 src/readelf.c:1434 +#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 #, c-format msgid "cannot get section: %s" msgstr "nie można uzyskać sekcji: %s" -#: src/readelf.c:623 src/readelf.c:1233 src/readelf.c:1442 src/readelf.c:12439 -#: src/unstrip.c:394 src/unstrip.c:425 src/unstrip.c:474 src/unstrip.c:584 -#: src/unstrip.c:605 src/unstrip.c:642 src/unstrip.c:846 src/unstrip.c:1138 -#: src/unstrip.c:1330 src/unstrip.c:1391 src/unstrip.c:1564 src/unstrip.c:1679 -#: src/unstrip.c:1819 src/unstrip.c:1914 +#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12500 +#: 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 #, c-format msgid "cannot get section header: %s" msgstr "nie można uzyskać nagłówka sekcji: %s" @@ -4023,8 +4026,8 @@ msgstr "nie można uzyskać nagłówka sekcji: %s" msgid "cannot get section name" msgstr "nie można uzyskać nazwy sekcji" -#: src/readelf.c:640 src/readelf.c:6533 src/readelf.c:10317 src/readelf.c:10419 -#: src/readelf.c:10596 +#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10363 src/readelf.c:10465 +#: src/readelf.c:10643 #, c-format msgid "cannot get %s content: %s" msgstr "nie można uzyskać zwartości %s: %s" @@ -4074,53 +4077,58 @@ msgstr "odczytanie „%s” się nie powiodło: %s" msgid "No such section '%s' in '%s'" msgstr "Brak sekcji „%s” w „%s”" -#: src/readelf.c:909 +#: src/readelf.c:908 #, c-format msgid "cannot read ELF header: %s" msgstr "nie można odczytać nagłówka ELF: %s" -#: src/readelf.c:917 +#: src/readelf.c:916 #, c-format msgid "cannot create EBL handle" msgstr "nie można utworzyć uchwytu EBL" -#: src/readelf.c:930 +#: src/readelf.c:929 #, 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:1020 +#: src/readelf.c:961 +#, fuzzy, c-format +msgid "cannot read ELF: %s" +msgstr "nie można odczytać %s: %s" + +#: src/readelf.c:1022 msgid "NONE (None)" msgstr "NONE (żaden)" -#: src/readelf.c:1021 +#: src/readelf.c:1023 msgid "REL (Relocatable file)" msgstr "REL (plik relokowalny)" -#: src/readelf.c:1022 +#: src/readelf.c:1024 msgid "EXEC (Executable file)" msgstr "EXEC (plik wykonywalny)" -#: src/readelf.c:1023 +#: src/readelf.c:1025 msgid "DYN (Shared object file)" msgstr "DYN (plik obiektu współdzielonego)" -#: src/readelf.c:1024 +#: src/readelf.c:1026 msgid "CORE (Core file)" msgstr "CORE (plik core)" -#: src/readelf.c:1029 +#: src/readelf.c:1031 #, c-format msgid "OS Specific: (%x)\n" msgstr "Zależny od systemu: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1031 +#: src/readelf.c:1033 #, c-format msgid "Processor Specific: (%x)\n" msgstr "Zależny od procesora: (%x)\n" -#: src/readelf.c:1041 +#: src/readelf.c:1043 msgid "" "ELF Header:\n" " Magic: " @@ -4128,7 +4136,7 @@ msgstr "" "Nagłówek ELF:\n" " Magic: " -#: src/readelf.c:1045 +#: src/readelf.c:1047 #, c-format msgid "" "\n" @@ -4137,118 +4145,118 @@ msgstr "" "\n" " Klasa: %s\n" -#: src/readelf.c:1050 +#: src/readelf.c:1052 #, c-format msgid " Data: %s\n" msgstr " Dane: %s\n" -#: src/readelf.c:1056 +#: src/readelf.c:1058 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " Wersja Ident: %hhd %s\n" -#: src/readelf.c:1058 src/readelf.c:1075 +#: src/readelf.c:1060 src/readelf.c:1077 msgid "(current)" msgstr "(bieżąca)" -#: src/readelf.c:1062 +#: src/readelf.c:1064 #, c-format msgid " OS/ABI: %s\n" msgstr " System operacyjny/ABI: %s\n" -#: src/readelf.c:1065 +#: src/readelf.c:1067 #, c-format msgid " ABI Version: %hhd\n" msgstr " Wersja ABI: %hhd\n" -#: src/readelf.c:1068 +#: src/readelf.c:1070 msgid " Type: " msgstr " Typ: " -#: src/readelf.c:1071 +#: src/readelf.c:1073 #, c-format msgid " Machine: %s\n" msgstr " Komputer: %s\n" -#: src/readelf.c:1073 +#: src/readelf.c:1075 #, c-format msgid " Version: %d %s\n" msgstr " Wersja: %d %s\n" -#: src/readelf.c:1077 +#: src/readelf.c:1079 #, c-format msgid " Entry point address: %#\n" msgstr " Adres punktu wejściowego: %#\n" -#: src/readelf.c:1080 +#: src/readelf.c:1082 #, c-format msgid " Start of program headers: % %s\n" msgstr " Początek nagłówków programu: % %s\n" -#: src/readelf.c:1081 src/readelf.c:1084 +#: src/readelf.c:1083 src/readelf.c:1086 msgid "(bytes into file)" msgstr "(bajtów w pliku)" -#: src/readelf.c:1083 +#: src/readelf.c:1085 #, c-format msgid " Start of section headers: % %s\n" msgstr " Początek nagłówków sekcji: % %s\n" -#: src/readelf.c:1086 +#: src/readelf.c:1088 #, c-format msgid " Flags: %s\n" msgstr " Flagi: %s\n" -#: src/readelf.c:1089 +#: src/readelf.c:1091 #, c-format msgid " Size of this header: % %s\n" msgstr " Rozmiar tego nagłówka: % %s\n" -#: src/readelf.c:1090 src/readelf.c:1093 src/readelf.c:1110 +#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 msgid "(bytes)" msgstr "(bajtów)" -#: src/readelf.c:1092 +#: src/readelf.c:1094 #, c-format msgid " Size of program header entries: % %s\n" msgstr " Rozmiar wpisów nagłówka programu: % %s\n" -#: src/readelf.c:1095 +#: src/readelf.c:1097 #, c-format msgid " Number of program headers entries: %" msgstr " Liczba wpisów nagłówków programu: %" -#: src/readelf.c:1102 +#: src/readelf.c:1104 #, c-format msgid " (% in [0].sh_info)" msgstr " (% w [0].sh_info)" -#: src/readelf.c:1105 src/readelf.c:1122 src/readelf.c:1136 +#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 msgid " ([0] not available)" msgstr " ([0] niedostępny)" -#: src/readelf.c:1109 +#: src/readelf.c:1111 #, c-format msgid " Size of section header entries: % %s\n" msgstr " Rozmiar wpisów nagłówka sekcji: % %s\n" -#: src/readelf.c:1112 +#: src/readelf.c:1114 #, c-format msgid " Number of section headers entries: %" msgstr " Liczba wpisów nagłówków sekcji: %" -#: src/readelf.c:1119 +#: src/readelf.c:1121 #, c-format msgid " (% in [0].sh_size)" msgstr " (% w [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1132 +#: src/readelf.c:1134 #, c-format msgid " (% in [0].sh_link)" msgstr " (% w [0].sh_link)" -#: src/readelf.c:1140 +#: src/readelf.c:1142 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4257,7 +4265,7 @@ msgstr "" " Indeks tabeli ciągów nagłówków sekcji: XINDEX%s\n" "\n" -#: src/readelf.c:1144 +#: src/readelf.c:1146 #, c-format msgid "" " Section header string table index: %\n" @@ -4266,12 +4274,12 @@ msgstr "" " Indeks tabeli ciągów nagłówków sekcji: %\n" "\n" -#: src/readelf.c:1191 src/readelf.c:1399 +#: src/readelf.c:1193 src/readelf.c:1401 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "nie można określić liczby sekcji: %s" -#: src/readelf.c:1194 +#: src/readelf.c:1196 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" @@ -4280,16 +4288,16 @@ msgstr "" "Jest %d nagłówków sekcji, rozpoczynających się od offsetu %#:\n" "\n" -#: src/readelf.c:1203 +#: src/readelf.c:1205 #, 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:1206 +#: src/readelf.c:1208 msgid "Section Headers:" msgstr "Nagłówki sekcji:" -#: src/readelf.c:1209 +#: src/readelf.c:1211 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4297,7 +4305,7 @@ msgstr "" "[Nr] Nazwa Typ Adres Offset Rozm. ES Flagi Lk " "Inf Al" -#: src/readelf.c:1211 +#: src/readelf.c:1213 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4305,36 +4313,36 @@ msgstr "" "[Nr] Nazwa Typ Adres Offset Rozmiar ES " "Flagi Lk Inf Al" -#: src/readelf.c:1216 +#: src/readelf.c:1218 msgid " [Compression Size Al]" msgstr " [Kompresja Rozmiar Al]" -#: src/readelf.c:1218 +#: src/readelf.c:1220 msgid " [Compression Size Al]" msgstr " [Kompresja Rozmiar Al]" -#: src/readelf.c:1294 +#: src/readelf.c:1296 #, c-format msgid "bad compression header for section %zd: %s" msgstr "błędny nagłówek kompresji dla sekcji %zd: %s" -#: src/readelf.c:1305 +#: src/readelf.c:1307 #, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "błędny rozmiar kompresji gnu dla sekcji %zd: %s" -#: src/readelf.c:1323 +#: src/readelf.c:1325 msgid "Program Headers:" msgstr "Nagłówki programu:" -#: src/readelf.c:1325 +#: src/readelf.c:1327 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " Typ Offset AdresWirt AdresFiz RozmPlik RozmPam Flg " "Wyrównanie" -#: src/readelf.c:1328 +#: src/readelf.c:1330 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4342,12 +4350,12 @@ msgstr "" " Typ Offset AdresWirtualny AdresFizyczny RozmPlik " "RozmPam Flg Wyrównanie" -#: src/readelf.c:1385 +#: src/readelf.c:1387 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[Wywołanie interpretera programu: %s]\n" -#: src/readelf.c:1412 +#: src/readelf.c:1414 msgid "" "\n" " Section to Segment mapping:\n" @@ -4357,12 +4365,12 @@ msgstr "" " Mapowanie sekcji do segmentów:\n" " Segment sekcji…" -#: src/readelf.c:1423 src/unstrip.c:1973 src/unstrip.c:2015 src/unstrip.c:2022 +#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 #, c-format msgid "cannot get program header: %s" msgstr "nie można uzyskać nagłówka programu: %s" -#: src/readelf.c:1566 +#: src/readelf.c:1571 #, c-format msgid "" "\n" @@ -4380,7 +4388,7 @@ msgstr[2] "" "\n" "Grupa sekcji COMDAT [%2zu] „%s” z podpisem „%s” zawiera %zu wpisów:\n" -#: src/readelf.c:1571 +#: src/readelf.c:1576 #, c-format msgid "" "\n" @@ -4398,31 +4406,31 @@ msgstr[2] "" "\n" "Grupa sekcji [%2zu] „%s” z podpisem „%s” zawiera %zu wpisów:\n" -#: src/readelf.c:1579 +#: src/readelf.c:1584 msgid "" msgstr "" -#: src/readelf.c:1593 +#: src/readelf.c:1598 msgid "" msgstr "" -#: src/readelf.c:1616 src/readelf.c:2343 src/readelf.c:3444 src/readelf.c:12310 -#: src/readelf.c:12317 src/readelf.c:12361 src/readelf.c:12368 +#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12371 +#: src/readelf.c:12378 src/readelf.c:12422 src/readelf.c:12429 msgid "Couldn't uncompress section" msgstr "Nie można dekompresować sekcji" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 +#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 #, c-format msgid "cannot get section [%zd] header: %s" msgstr "nie można uzyskać nagłówka sekcji [%zd]: %s" -#: src/readelf.c:1765 src/readelf.c:2415 src/readelf.c:2673 src/readelf.c:2749 -#: src/readelf.c:3053 src/readelf.c:3127 src/readelf.c:5322 +#: 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 #, c-format msgid "invalid sh_link value in section %zu" msgstr "nieprawidłowa wartość sh_link w sekcji %zu" -#: src/readelf.c:1768 +#: src/readelf.c:1773 #, c-format msgid "" "\n" @@ -4448,36 +4456,36 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "'%s'\n" -#: src/readelf.c:1778 +#: src/readelf.c:1783 msgid " Type Value\n" msgstr " Typ Wartość\n" -#: src/readelf.c:1802 +#: src/readelf.c:1807 #, c-format msgid "Shared library: [%s]\n" msgstr "Biblioteka współdzielona: [%s]\n" -#: src/readelf.c:1807 +#: src/readelf.c:1812 #, c-format msgid "Library soname: [%s]\n" msgstr "soname biblioteki: [%s]\n" -#: src/readelf.c:1812 +#: src/readelf.c:1817 #, c-format msgid "Library rpath: [%s]\n" msgstr "rpath biblioteki: [%s]\n" -#: src/readelf.c:1817 +#: src/readelf.c:1822 #, c-format msgid "Library runpath: [%s]\n" msgstr "runpath biblioteki: [%s]\n" -#: src/readelf.c:1837 +#: src/readelf.c:1842 #, c-format msgid "% (bytes)\n" msgstr "% (bajtów)\n" -#: src/readelf.c:1950 src/readelf.c:2140 +#: src/readelf.c:1955 src/readelf.c:2145 #, c-format msgid "" "\n" @@ -4486,7 +4494,7 @@ msgstr "" "\n" "Nieprawidłowa tabela symboli pod offsetem %#0\n" -#: src/readelf.c:1968 src/readelf.c:2158 +#: src/readelf.c:1973 src/readelf.c:2163 #, c-format msgid "" "\n" @@ -4515,7 +4523,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:1983 src/readelf.c:2173 +#: src/readelf.c:1988 src/readelf.c:2178 #, c-format msgid "" "\n" @@ -4533,30 +4541,30 @@ msgstr[2] "" "\n" "Sekcja relokacji [%2u] „%s” pod offsetem %#0 zawiera %d wpisów:\n" -#: src/readelf.c:1993 +#: src/readelf.c:1998 msgid " Offset Type Value Name\n" msgstr " Offset Typ Wartość Nazwa\n" -#: src/readelf.c:1995 +#: src/readelf.c:2000 msgid " Offset Type Value Name\n" msgstr " Offset Typ Wartość Nazwa\n" -#: src/readelf.c:2048 src/readelf.c:2059 src/readelf.c:2072 src/readelf.c:2093 -#: src/readelf.c:2105 src/readelf.c:2239 src/readelf.c:2251 src/readelf.c:2265 -#: src/readelf.c:2287 src/readelf.c:2300 +#: 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 msgid "" msgstr "" -#: src/readelf.c:2183 +#: src/readelf.c:2188 msgid " Offset Type Value Addend Name\n" msgstr " Offset Typ Wartość Koniec Nazwa\n" -#: src/readelf.c:2185 +#: src/readelf.c:2190 msgid " Offset Type Value Addend Name\n" msgstr "" " Offset Typ Wartość Koniec Nazwa\n" -#: src/readelf.c:2423 +#: src/readelf.c:2428 #, c-format msgid "" "\n" @@ -4574,7 +4582,7 @@ msgstr[2] "" "\n" "Tabela symboli [%2u] „%s” zawiera %u wpisów:\n" -#: src/readelf.c:2428 +#: src/readelf.c:2433 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" @@ -4582,33 +4590,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:2436 +#: src/readelf.c:2441 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n" -#: src/readelf.c:2438 +#: src/readelf.c:2443 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n" -#: src/readelf.c:2458 +#: src/readelf.c:2463 #, c-format msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -#: src/readelf.c:2546 +#: src/readelf.c:2551 #, c-format msgid "bad dynamic symbol" msgstr "błędny symbol dynamiczny" -#: src/readelf.c:2628 +#: src/readelf.c:2633 msgid "none" msgstr "brak" -#: src/readelf.c:2645 +#: src/readelf.c:2650 msgid "| " msgstr "| " -#: src/readelf.c:2676 +#: src/readelf.c:2681 #, c-format msgid "" "\n" @@ -4634,17 +4642,17 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "„%s”\n" -#: src/readelf.c:2697 +#: src/readelf.c:2702 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Wersja: %hu Plik: %s Licznik: %hu\n" -#: src/readelf.c:2710 +#: src/readelf.c:2715 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Nazwa: %s Flagi: %s Wersja: %hu\n" -#: src/readelf.c:2753 +#: src/readelf.c:2758 #, c-format msgid "" "\n" @@ -4670,19 +4678,19 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "„%s”\n" -#: src/readelf.c:2781 +#: src/readelf.c:2786 #, 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:2796 +#: src/readelf.c:2801 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: Rodzic %d: %s\n" #. Print the header. -#: src/readelf.c:3057 +#: src/readelf.c:3062 #, c-format msgid "" "\n" @@ -4705,15 +4713,15 @@ msgstr[2] "" "Sekcja symboli wersji [%2u] „%s” zawiera %d wpisów:\n" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] „%s”" -#: src/readelf.c:3085 +#: src/readelf.c:3090 msgid " 0 *local* " msgstr " 0 *lokalny* " -#: src/readelf.c:3090 +#: src/readelf.c:3095 msgid " 1 *global* " msgstr " 1 *globalny* " -#: src/readelf.c:3132 +#: src/readelf.c:3137 #, c-format msgid "" "\n" @@ -4744,22 +4752,22 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "„%s”\n" -#: src/readelf.c:3154 +#: src/readelf.c:3159 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " Długość Liczba % całości Pokrycie\n" -#: src/readelf.c:3156 +#: src/readelf.c:3161 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3163 +#: src/readelf.c:3168 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3176 +#: src/readelf.c:3181 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4768,37 +4776,37 @@ msgstr "" " Średnia liczba testów: udane wyszukania: %f\n" "\t\t\t nieudane wyszukania: %f\n" -#: src/readelf.c:3194 src/readelf.c:3258 src/readelf.c:3324 +#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 #, c-format msgid "cannot get data for section %d: %s" msgstr "nie można uzyskać danych dla sekcji %d: %s" -#: src/readelf.c:3202 +#: src/readelf.c:3207 #, c-format msgid "invalid data in sysv.hash section %d" msgstr "nieprawidłowe dane w sekcji sysv.hash %d" -#: src/readelf.c:3231 +#: src/readelf.c:3236 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "nieprawidłowe dane w sekcji sysv.hash %d" -#: src/readelf.c:3266 +#: src/readelf.c:3271 #, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "nieprawidłowe dane w sekcji sysv.hash64 %d" -#: src/readelf.c:3297 +#: src/readelf.c:3302 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "nieprawidłowe dane w sekcji sysv.hash64 %d" -#: src/readelf.c:3333 +#: src/readelf.c:3338 #, c-format msgid "invalid data in gnu.hash section %d" msgstr "nieprawidłowe dane w sekcji gnu.hash %d" -#: src/readelf.c:3400 +#: src/readelf.c:3405 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4808,7 +4816,7 @@ msgstr "" " Rozmiar maski bitowej: %zu bajtów %%% bitów ustawionych " "drugie przesunięcie skrótu: %u\n" -#: src/readelf.c:3489 +#: src/readelf.c:3494 #, c-format msgid "" "\n" @@ -4829,7 +4837,7 @@ msgstr[2] "" "Sekcja listy bibliotek [%2zu] „%s” pod offsetem %#0 zawiera %d " "wpisów:\n" -#: src/readelf.c:3503 +#: src/readelf.c:3508 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4837,7 +4845,7 @@ msgstr "" " Biblioteka Oznaczenie czasu Suma k. Wersja " "Flagi" -#: src/readelf.c:3553 +#: src/readelf.c:3558 #, c-format msgid "" "\n" @@ -4848,102 +4856,102 @@ msgstr "" "Sekcja atrybutów obiektu [%2zu] „%s” % bajtów pod offsetem " "%#0:\n" -#: src/readelf.c:3570 +#: src/readelf.c:3575 msgid " Owner Size\n" msgstr " Właściciel Rozmiar\n" -#: src/readelf.c:3599 +#: src/readelf.c:3604 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3638 +#: src/readelf.c:3643 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3643 +#: src/readelf.c:3648 #, c-format msgid " File: %11\n" msgstr " Plik: %11\n" -#: src/readelf.c:3692 +#: src/readelf.c:3697 #, c-format msgid " %s: %, %s\n" msgstr " %s: %, %s\n" -#: src/readelf.c:3695 +#: src/readelf.c:3700 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3698 +#: src/readelf.c:3703 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3708 +#: src/readelf.c:3713 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3711 +#: src/readelf.c:3716 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3781 +#: src/readelf.c:3786 #, fuzzy, c-format msgid "sprintf failure" msgstr "mprotect się nie powiodło" -#: src/readelf.c:4263 +#: src/readelf.c:4268 msgid "empty block" msgstr "pusty blok" -#: src/readelf.c:4266 +#: src/readelf.c:4271 #, c-format msgid "%zu byte block:" msgstr "%zu bajtowy blok:" -#: src/readelf.c:4744 +#: src/readelf.c:4749 #, fuzzy, c-format msgid "%*s[%2] %s \n" msgstr "%*s[%4] %s \n" -#: src/readelf.c:4808 +#: src/readelf.c:4813 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# zostało użyte z różnymi rozmiarami adresu" -#: src/readelf.c:4815 +#: src/readelf.c:4820 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# zostało użyte z różnymi rozmiarami offsetu" -#: src/readelf.c:4822 +#: src/readelf.c:4827 #, c-format msgid "%s %# used with different base addresses" msgstr "%s %# zostało użyte z różnymi adresami podstawowymi" -#: src/readelf.c:4829 +#: src/readelf.c:4834 #, fuzzy, c-format msgid "%s %# used with different attribute %s and %s" msgstr "%s %# zostało użyte z różnymi rozmiarami adresu" -#: src/readelf.c:4926 +#: src/readelf.c:4931 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:4934 +#: src/readelf.c:4939 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] … % bajtów…\n" -#: src/readelf.c:5012 +#: src/readelf.c:5017 #, c-format msgid "" "\n" @@ -4954,7 +4962,7 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" " [ Kod]\n" -#: src/readelf.c:5020 +#: src/readelf.c:5025 #, c-format msgid "" "\n" @@ -4963,20 +4971,20 @@ msgstr "" "\n" "Sekcja skrótów pod offsetem %:\n" -#: src/readelf.c:5033 +#: src/readelf.c:5038 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** błąd podczas odczytywania skrótu: %s\n" -#: src/readelf.c:5049 +#: src/readelf.c:5054 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] offset: %, potomek: %s, znacznik: %s\n" -#: src/readelf.c:5082 src/readelf.c:5391 src/readelf.c:5557 src/readelf.c:5942 -#: src/readelf.c:6543 src/readelf.c:8184 src/readelf.c:8854 src/readelf.c:9290 -#: src/readelf.c:9534 src/readelf.c:9699 src/readelf.c:10060 -#: src/readelf.c:10118 +#: 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:8870 src/readelf.c:9306 +#: src/readelf.c:9551 src/readelf.c:9717 src/readelf.c:10104 +#: src/readelf.c:10164 #, c-format msgid "" "\n" @@ -4985,56 +4993,56 @@ msgstr "" "\n" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" -#: src/readelf.c:5095 +#: src/readelf.c:5100 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "nie można uzyskać danych sekcji: %s" -#: src/readelf.c:5195 src/readelf.c:5219 src/readelf.c:5602 src/readelf.c:8899 +#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8915 #, fuzzy, c-format msgid " Length: %8\n" msgstr "" "\n" " Długość: %6\n" -#: src/readelf.c:5197 src/readelf.c:5234 src/readelf.c:5615 src/readelf.c:8912 +#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8928 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " Wersja DWARF: %6\n" -#: src/readelf.c:5198 src/readelf.c:5243 src/readelf.c:5624 src/readelf.c:8921 +#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8937 #, fuzzy, c-format msgid " Address size: %8\n" msgstr " Offset adresu: %6\n" -#: src/readelf.c:5200 src/readelf.c:5253 src/readelf.c:5634 src/readelf.c:8931 +#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8947 #, fuzzy, c-format msgid " Segment size: %8\n" msgstr "" " Rozmiar segmentu: %6\n" "\n" -#: src/readelf.c:5238 src/readelf.c:5619 src/readelf.c:8916 src/readelf.c:10250 +#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8932 src/readelf.c:10296 #, fuzzy, c-format msgid "Unknown version" msgstr "nieznana wersja" -#: src/readelf.c:5248 src/readelf.c:5461 src/readelf.c:5629 src/readelf.c:8926 +#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8942 #, c-format msgid "unsupported address size" msgstr "nieobsługiwany rozmiar adresu" -#: src/readelf.c:5259 src/readelf.c:5472 src/readelf.c:5639 src/readelf.c:8936 +#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8952 #, c-format msgid "unsupported segment size" msgstr "nieobsługiwany rozmiar segmentu" -#: src/readelf.c:5312 src/readelf.c:5386 +#: src/readelf.c:5317 src/readelf.c:5391 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "nie można uzyskać zawartości .debug_aranges: %s" -#: src/readelf.c:5327 +#: src/readelf.c:5332 #, c-format msgid "" "\n" @@ -5052,12 +5060,12 @@ msgstr[2] "" "\n" "Sekcja DWARF [%2zu] „%s” pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:5358 +#: src/readelf.c:5363 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5360 +#: src/readelf.c:5365 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -5065,7 +5073,7 @@ msgstr "" " [%*zu] początek: %0#*, długość: %5, offset CU DIE: " "%6\n" -#: src/readelf.c:5404 src/readelf.c:8211 +#: src/readelf.c:5409 src/readelf.c:8226 #, c-format msgid "" "\n" @@ -5074,13 +5082,13 @@ msgstr "" "\n" "Tabela pod offsetem %zu:\n" -#: src/readelf.c:5408 src/readelf.c:5583 src/readelf.c:6567 src/readelf.c:8222 -#: src/readelf.c:8880 +#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 +#: src/readelf.c:8896 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "nieprawidłowe dane w sekcji [%zu] „%s”" -#: src/readelf.c:5424 +#: src/readelf.c:5429 #, c-format msgid "" "\n" @@ -5089,27 +5097,27 @@ msgstr "" "\n" " Długość: %6\n" -#: src/readelf.c:5436 +#: src/readelf.c:5441 #, c-format msgid " DWARF version: %6\n" msgstr " Wersja DWARF: %6\n" -#: src/readelf.c:5440 +#: src/readelf.c:5445 #, c-format msgid "unsupported aranges version" msgstr "nieobsługiwana wersja aranges" -#: src/readelf.c:5451 +#: src/readelf.c:5456 #, c-format msgid " CU offset: %6\n" msgstr " Offset CU: %6\n" -#: src/readelf.c:5457 +#: src/readelf.c:5462 #, c-format msgid " Address size: %6\n" msgstr " Offset adresu: %6\n" -#: src/readelf.c:5468 +#: src/readelf.c:5473 #, c-format msgid "" " Segment size: %6\n" @@ -5118,111 +5126,111 @@ msgstr "" " Rozmiar segmentu: %6\n" "\n" -#: src/readelf.c:5523 +#: src/readelf.c:5528 #, c-format msgid " %zu padding bytes\n" msgstr " bajty wypełnienia: %zu\n" -#: src/readelf.c:5566 +#: src/readelf.c:5572 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr "nie można uzyskać zawartości .debug_ranges: %s" -#: src/readelf.c:5589 src/readelf.c:8886 +#: src/readelf.c:5595 src/readelf.c:8902 #, fuzzy, c-format msgid "" "Table at Offset 0x%:\n" "\n" msgstr " Offset .debug_line: 0x%\n" -#: src/readelf.c:5644 src/readelf.c:8941 +#: src/readelf.c:5650 src/readelf.c:8957 #, fuzzy, c-format msgid " Offset entries: %8\n" msgstr " Długość offsetu: %\n" -#: src/readelf.c:5660 src/readelf.c:8957 +#: src/readelf.c:5666 src/readelf.c:8973 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5662 src/readelf.c:8959 +#: src/readelf.c:5668 src/readelf.c:8975 #, c-format msgid " CU [%6] base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8965 +#: src/readelf.c:5674 src/readelf.c:8981 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5679 src/readelf.c:8976 +#: src/readelf.c:5685 src/readelf.c:8992 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5683 src/readelf.c:8980 +#: src/readelf.c:5689 src/readelf.c:8996 #, fuzzy, c-format msgid " Offsets starting at 0x%:\n" msgstr " Offset: 0x%\n" -#: src/readelf.c:5735 +#: src/readelf.c:5741 #, fuzzy, c-format msgid "invalid range list data" msgstr "nieprawidłowe dane" -#: src/readelf.c:5920 src/readelf.c:9268 +#: src/readelf.c:5926 src/readelf.c:9284 #, fuzzy, c-format msgid "" " %zu padding bytes\n" "\n" msgstr " bajty wypełnienia: %zu\n" -#: src/readelf.c:5937 +#: src/readelf.c:5943 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "nie można uzyskać zawartości .debug_ranges: %s" -#: src/readelf.c:5973 src/readelf.c:9323 +#: src/readelf.c:5979 src/readelf.c:9339 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5975 src/readelf.c:9325 +#: src/readelf.c:5981 src/readelf.c:9341 #, c-format msgid "" "\n" " CU [%6] base: " msgstr "" -#: src/readelf.c:5984 src/readelf.c:9351 src/readelf.c:9377 +#: src/readelf.c:5990 src/readelf.c:9367 src/readelf.c:9393 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:6005 src/readelf.c:9457 +#: src/readelf.c:6011 src/readelf.c:9473 #, fuzzy, c-format msgid "" " [%6tx] base address\n" " " msgstr " [%6tx] adres podstawowy %s\n" -#: src/readelf.c:6013 src/readelf.c:9465 +#: src/readelf.c:6019 src/readelf.c:9481 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] pusta lista\n" -#: src/readelf.c:6268 +#: src/readelf.c:6274 msgid " \n" msgstr " \n" -#: src/readelf.c:6521 +#: src/readelf.c:6527 #, c-format msgid "cannot get ELF: %s" msgstr "nie można uzyskać ELF: %s" -#: src/readelf.c:6539 +#: src/readelf.c:6545 #, c-format msgid "" "\n" @@ -5231,7 +5239,7 @@ msgstr "" "\n" "Sekcja informacji o ramce wywołania [%2zu] „%s” pod offsetem %#:\n" -#: src/readelf.c:6589 +#: src/readelf.c:6595 #, c-format msgid "" "\n" @@ -5240,65 +5248,65 @@ msgstr "" "\n" " [%6tx] Zerowy koniec\n" -#: src/readelf.c:6682 src/readelf.c:6836 +#: src/readelf.c:6696 src/readelf.c:6850 #, c-format msgid "invalid augmentation length" msgstr "nieprawidłowa długość powiększenia" -#: src/readelf.c:6697 +#: src/readelf.c:6711 msgid "FDE address encoding: " msgstr "Kodowanie adresu FDE: " -#: src/readelf.c:6703 +#: src/readelf.c:6717 msgid "LSDA pointer encoding: " msgstr "Kodowanie wskaźnika LSDA: " -#: src/readelf.c:6813 +#: src/readelf.c:6827 #, c-format msgid " (offset: %#)" msgstr " (offset: %#)" -#: src/readelf.c:6820 +#: src/readelf.c:6834 #, c-format msgid " (end offset: %#)" msgstr " (kończący offset: %#)" -#: src/readelf.c:6857 +#: src/readelf.c:6871 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sWskaźnik LSDA: %#\n" -#: src/readelf.c:6942 +#: src/readelf.c:6956 #, fuzzy, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "nie można uzyskać kodu atrybutu: %s" -#: src/readelf.c:6952 +#: src/readelf.c:6966 #, fuzzy, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "nie można uzyskać formy atrybutu: %s" -#: src/readelf.c:6974 +#: src/readelf.c:6988 #, fuzzy, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "nie można uzyskać wartości atrybutu: %s" -#: src/readelf.c:7307 +#: src/readelf.c:7321 #, fuzzy, c-format msgid "invalid file (%): %s" msgstr "nieprawidłowy plik" -#: src/readelf.c:7311 +#: src/readelf.c:7325 #, fuzzy, c-format msgid "no srcfiles for CU [%]" msgstr " ustawienie pliku na %\n" -#: src/readelf.c:7315 +#: src/readelf.c:7329 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "nie można uzyskać ELF: %s" -#: src/readelf.c:7538 +#: src/readelf.c:7552 #, c-format msgid "" "\n" @@ -5309,12 +5317,12 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" " [Offset]\n" -#: src/readelf.c:7588 +#: src/readelf.c:7602 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "nie można uzyskać następnego DIE: %s" -#: src/readelf.c:7607 +#: src/readelf.c:7621 #, fuzzy, c-format msgid "" " Type unit at offset %:\n" @@ -5327,7 +5335,7 @@ msgstr "" "%, rozmiar offsetu: %\n" " Podpis typu: %#, offset typu: %#\n" -#: src/readelf.c:7619 +#: src/readelf.c:7633 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5338,38 +5346,38 @@ msgstr "" " Wersja: %, offset sekcji skrótów: %, rozmiar adresu: " "%, rozmiar offsetu: %\n" -#: src/readelf.c:7629 src/readelf.c:7792 +#: src/readelf.c:7643 src/readelf.c:7806 #, c-format msgid " Unit type: %s (%)" msgstr "" -#: src/readelf.c:7656 +#: src/readelf.c:7670 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7685 +#: src/readelf.c:7699 #, c-format msgid "cannot get DIE offset: %s" msgstr "nie można uzyskać offsetu DIE: %s" -#: src/readelf.c:7694 +#: src/readelf.c:7708 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "" "nie można uzyskać znacznika DIE pod offsetem % w sekcji „%s”: %s" -#: src/readelf.c:7732 +#: src/readelf.c:7746 #, c-format msgid "cannot get next DIE: %s\n" msgstr "nie można uzyskać następnego DIE: %s\n" -#: src/readelf.c:7740 +#: src/readelf.c:7754 #, c-format msgid "cannot get next DIE: %s" msgstr "nie można uzyskać następnego DIE: %s" -#: src/readelf.c:7784 +#: src/readelf.c:7798 #, fuzzy, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5380,7 +5388,7 @@ msgstr "" " Wersja: %, offset sekcji skrótów: %, rozmiar adresu: " "%, rozmiar offsetu: %\n" -#: src/readelf.c:7835 +#: src/readelf.c:7850 #, c-format msgid "" "\n" @@ -5391,18 +5399,18 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" "\n" -#: src/readelf.c:8167 +#: src/readelf.c:8182 #, fuzzy, c-format msgid "unknown form: %s" msgstr "nieznany błąd" -#: src/readelf.c:8198 +#: src/readelf.c:8213 #, 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:8300 +#: src/readelf.c:8315 #, fuzzy, c-format msgid "" "\n" @@ -5433,27 +5441,27 @@ msgstr "" "\n" "Instrukcje:\n" -#: src/readelf.c:8322 +#: src/readelf.c:8337 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "nie można uzyskać wersji symbolu: %s" -#: src/readelf.c:8330 +#: src/readelf.c:8345 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "nieobsługiwany rozmiar adresu" -#: src/readelf.c:8338 +#: src/readelf.c:8353 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "nie można uzyskać sekcji: %s" -#: src/readelf.c:8348 +#: src/readelf.c:8363 #, 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:8363 +#: src/readelf.c:8378 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" @@ -5461,7 +5469,7 @@ msgstr[0] " [%*] %hhu parametr\n" msgstr[1] " [%*] %hhu parametry\n" msgstr[2] " [%*] %hhu parametrów\n" -#: src/readelf.c:8374 +#: src/readelf.c:8389 msgid "" "\n" "Directory table:" @@ -5469,12 +5477,12 @@ msgstr "" "\n" "Tabela katalogu:" -#: src/readelf.c:8380 src/readelf.c:8455 +#: src/readelf.c:8395 src/readelf.c:8470 #, fuzzy, c-format msgid " [" msgstr " PC: " -#: src/readelf.c:8449 +#: src/readelf.c:8464 #, fuzzy msgid "" "\n" @@ -5483,7 +5491,7 @@ msgstr "" "\n" " Tabela strony wywołania:" -#: src/readelf.c:8510 +#: src/readelf.c:8525 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5491,7 +5499,7 @@ msgstr "" "Tabela nazw plików:\n" " Wpis Kat Czas Rozmiar Nazwa" -#: src/readelf.c:8545 +#: src/readelf.c:8560 msgid "" "\n" "Line number statements:" @@ -5499,119 +5507,119 @@ msgstr "" "\n" "Instrukcje numerów wierszy:" -#: src/readelf.c:8568 +#: src/readelf.c:8583 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "nieprawidłowe maksimum operacji na instrukcję wynosi zero" -#: src/readelf.c:8602 +#: src/readelf.c:8617 #, fuzzy, c-format msgid " special opcode %u: address+%u = " msgstr " instrukcja specjalna %u: adres+%u = %s, wiersz%+d = %zu\n" -#: src/readelf.c:8606 +#: src/readelf.c:8621 #, 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:8609 +#: src/readelf.c:8624 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8627 +#: src/readelf.c:8642 #, c-format msgid " extended opcode %u: " msgstr " instrukcja rozszerzona %u: " -#: src/readelf.c:8632 +#: src/readelf.c:8647 msgid " end of sequence" msgstr " koniec sekwencji" -#: src/readelf.c:8650 +#: src/readelf.c:8665 #, fuzzy, c-format msgid " set address to " msgstr " ustawienie adresu na %s\n" -#: src/readelf.c:8678 +#: src/readelf.c:8693 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" " definicja nowego pliku: dir=%u, mtime=%, długość=%, nazwa=" "%s\n" -#: src/readelf.c:8691 +#: src/readelf.c:8706 #, c-format msgid " set discriminator to %u\n" msgstr " ustawienie dyskryminatora na %u\n" #. Unknown, ignore it. -#: src/readelf.c:8696 +#: src/readelf.c:8711 msgid " unknown opcode" msgstr " nieznana instrukcja" #. Takes no argument. -#: src/readelf.c:8708 +#: src/readelf.c:8723 msgid " copy" msgstr " kopiowanie" -#: src/readelf.c:8717 +#: src/readelf.c:8732 #, fuzzy, c-format msgid " advance address by %u to " msgstr " zwiększenie adresu o %u do %s\n" -#: src/readelf.c:8721 src/readelf.c:8777 +#: src/readelf.c:8736 src/readelf.c:8792 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8731 +#: src/readelf.c:8746 #, c-format msgid " advance line by constant %d to %\n" msgstr " zwiększenie wiersza o stałą %d do %\n" -#: src/readelf.c:8739 +#: src/readelf.c:8754 #, c-format msgid " set file to %\n" msgstr " ustawienie pliku na %\n" -#: src/readelf.c:8749 +#: src/readelf.c:8764 #, c-format msgid " set column to %\n" msgstr " ustawienie kolumny na %\n" -#: src/readelf.c:8756 +#: src/readelf.c:8771 #, c-format msgid " set '%s' to %\n" msgstr " ustawienie „%s” na %\n" #. Takes no argument. -#: src/readelf.c:8762 +#: src/readelf.c:8777 msgid " set basic block flag" msgstr " ustawienie podstawowej flagi bloku" -#: src/readelf.c:8773 +#: src/readelf.c:8788 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr " zwiększenie adresu o stałą %u do %s\n" -#: src/readelf.c:8792 +#: src/readelf.c:8807 #, 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:8802 +#: src/readelf.c:8817 msgid " set prologue end flag" msgstr " ustawienie flagi końca prologu" #. Takes no argument. -#: src/readelf.c:8807 +#: src/readelf.c:8822 msgid " set epilogue begin flag" msgstr " ustawienie flagi początku epilogu" -#: src/readelf.c:8816 +#: src/readelf.c:8831 #, c-format msgid " set isa to %u\n" msgstr " ustawienie isa na %u\n" @@ -5619,7 +5627,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:8825 +#: src/readelf.c:8840 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" @@ -5627,96 +5635,96 @@ msgstr[0] " nieznana instrukcja z % parametrem:" msgstr[1] " nieznana instrukcja z % parametrami:" msgstr[2] " nieznana instrukcja z % parametrami:" -#: src/readelf.c:8863 +#: src/readelf.c:8879 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr "nie można uzyskać zawartości .debug_log: %s" -#: src/readelf.c:9032 +#: src/readelf.c:9048 #, fuzzy, c-format msgid "invalid loclists data" msgstr "nieprawidłowe dane" -#: src/readelf.c:9285 +#: src/readelf.c:9301 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "nie można uzyskać zawartości .debug_log: %s" -#: src/readelf.c:9492 src/readelf.c:10506 +#: src/readelf.c:9508 src/readelf.c:10552 msgid " \n" msgstr " \n" -#: src/readelf.c:9546 src/readelf.c:9709 +#: src/readelf.c:9563 src/readelf.c:9726 #, c-format msgid "cannot get macro information section data: %s" msgstr "nie można uzyskać danych sekcji informacji o makrach: %s" -#: src/readelf.c:9626 +#: src/readelf.c:9643 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** niezakończony ciąg na końcu sekcji" -#: src/readelf.c:9649 +#: src/readelf.c:9666 #, 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:9750 +#: src/readelf.c:9767 #, c-format msgid " Offset: 0x%\n" msgstr " Offset: 0x%\n" -#: src/readelf.c:9762 +#: src/readelf.c:9779 #, c-format msgid " Version: %\n" msgstr " Wersja: %\n" -#: src/readelf.c:9768 src/readelf.c:10625 +#: src/readelf.c:9785 src/readelf.c:10672 #, c-format msgid " unknown version, cannot parse section\n" msgstr " nieznana wersja, nie można przetworzyć sekcji\n" -#: src/readelf.c:9775 -#, c-format -msgid " Flag: 0x%\n" +#: src/readelf.c:9792 +#, fuzzy, c-format +msgid " Flag: 0x%" msgstr " Flaga: 0x%\n" -#: src/readelf.c:9778 +#: src/readelf.c:9821 #, c-format msgid " Offset length: %\n" msgstr " Długość offsetu: %\n" -#: src/readelf.c:9786 +#: src/readelf.c:9829 #, c-format msgid " .debug_line offset: 0x%\n" msgstr " Offset .debug_line: 0x%\n" -#: src/readelf.c:9811 +#: src/readelf.c:9854 #, c-format msgid " extension opcode table, % items:\n" msgstr " tabela instrukcji rozszerzenia, % elementów:\n" -#: src/readelf.c:9818 +#: src/readelf.c:9861 #, c-format msgid " [%]" msgstr " [%]" -#: src/readelf.c:9830 +#: src/readelf.c:9873 #, c-format msgid " % arguments:" msgstr " Parametry %:" -#: src/readelf.c:9845 +#: src/readelf.c:9888 #, c-format msgid " no arguments." msgstr " brak parametrów." -#: src/readelf.c:10046 +#: src/readelf.c:10089 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr " [%5d] offset DIE: %6, offset CU DIE: %6, nazwa: %s\n" -#: src/readelf.c:10088 +#: src/readelf.c:10133 #, c-format msgid "" "\n" @@ -5727,41 +5735,41 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" " %*s Ciąg\n" -#: src/readelf.c:10103 +#: src/readelf.c:10148 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** błąd podczas odczytywania ciągów: %s\n" -#: src/readelf.c:10131 +#: src/readelf.c:10177 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr "nie można uzyskać danych sekcji: %s" -#: src/readelf.c:10230 +#: src/readelf.c:10276 #, fuzzy, c-format msgid " Length: %8\n" msgstr "" "\n" " Długość: %6\n" -#: src/readelf.c:10232 +#: src/readelf.c:10278 #, fuzzy, c-format msgid " Offset size: %8\n" msgstr " Długość offsetu: %\n" -#: src/readelf.c:10246 +#: src/readelf.c:10292 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " Wersja DWARF: %6\n" -#: src/readelf.c:10255 +#: src/readelf.c:10301 #, fuzzy, c-format msgid " Padding: %8\n" msgstr "" "\n" " Długość: %6\n" -#: src/readelf.c:10309 +#: src/readelf.c:10355 #, c-format msgid "" "\n" @@ -5770,7 +5778,7 @@ msgstr "" "\n" "Sekcja tabeli wyszukiwania ramki wywołania [%2zu] „.eh_frame_hdr”:\n" -#: src/readelf.c:10411 +#: src/readelf.c:10457 #, c-format msgid "" "\n" @@ -5779,22 +5787,22 @@ msgstr "" "\n" "Sekcja tabeli obsługiwania wyjątków [%2zu] „.gcc_except_table”:\n" -#: src/readelf.c:10434 +#: src/readelf.c:10480 #, c-format msgid " LPStart encoding: %#x " msgstr " Kodowanie LPStart: %#x " -#: src/readelf.c:10446 +#: src/readelf.c:10492 #, c-format msgid " TType encoding: %#x " msgstr " Kodowanie TType: %#x " -#: src/readelf.c:10461 +#: src/readelf.c:10507 #, c-format msgid " Call site encoding: %#x " msgstr " Kodowanie strony wywołania: %#x " -#: src/readelf.c:10474 +#: src/readelf.c:10520 msgid "" "\n" " Call site table:" @@ -5802,7 +5810,7 @@ msgstr "" "\n" " Tabela strony wywołania:" -#: src/readelf.c:10488 +#: src/readelf.c:10534 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5815,12 +5823,12 @@ msgstr "" " Lądowisko: %#\n" " Działanie: %u\n" -#: src/readelf.c:10561 +#: src/readelf.c:10607 #, c-format msgid "invalid TType encoding" msgstr "nieprawidłowe kodowanie TType" -#: src/readelf.c:10587 +#: src/readelf.c:10634 #, c-format msgid "" "\n" @@ -5829,37 +5837,37 @@ msgstr "" "\n" "Sekcja GDB [%2zu] „%s” pod offsetem %# zawiera % bajtów:\n" -#: src/readelf.c:10616 +#: src/readelf.c:10663 #, c-format msgid " Version: %\n" msgstr " Wersja: %\n" -#: src/readelf.c:10634 +#: src/readelf.c:10681 #, c-format msgid " CU offset: %#\n" msgstr " offset CU: %#\n" -#: src/readelf.c:10641 +#: src/readelf.c:10688 #, c-format msgid " TU offset: %#\n" msgstr " offset TU: %#\n" -#: src/readelf.c:10648 +#: src/readelf.c:10695 #, c-format msgid " address offset: %#\n" msgstr " offset adresu: %#\n" -#: src/readelf.c:10655 +#: src/readelf.c:10702 #, c-format msgid " symbol offset: %#\n" msgstr " offset symbolu: %#\n" -#: src/readelf.c:10662 +#: src/readelf.c:10709 #, c-format msgid " constant offset: %#\n" msgstr " offset stałej: %#\n" -#: src/readelf.c:10676 +#: src/readelf.c:10723 #, c-format msgid "" "\n" @@ -5868,7 +5876,7 @@ msgstr "" "\n" " Lista CU pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:10701 +#: src/readelf.c:10748 #, c-format msgid "" "\n" @@ -5877,7 +5885,7 @@ msgstr "" "\n" " Lista TU pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:10730 +#: src/readelf.c:10777 #, c-format msgid "" "\n" @@ -5886,7 +5894,7 @@ msgstr "" "\n" " Lista adresów pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:10762 +#: src/readelf.c:10809 #, c-format msgid "" "\n" @@ -5895,18 +5903,18 @@ msgstr "" "\n" " Tabela symboli pod offsetem %# zawiera %zu gniazd:\n" -#: src/readelf.c:10900 +#: src/readelf.c:10947 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s" -#: src/readelf.c:11263 src/readelf.c:11885 src/readelf.c:11996 -#: src/readelf.c:12054 +#: src/readelf.c:11310 src/readelf.c:11932 src/readelf.c:12043 +#: src/readelf.c:12101 #, c-format msgid "cannot convert core note data: %s" msgstr "nie można konwertować danych notatki core: %s" -#: src/readelf.c:11626 +#: src/readelf.c:11673 #, c-format msgid "" "\n" @@ -5915,21 +5923,21 @@ msgstr "" "\n" "%*s… …" -#: src/readelf.c:12133 +#: src/readelf.c:12180 msgid " Owner Data size Type\n" msgstr " Właściciel Rozmiar danych Typ\n" -#: src/readelf.c:12151 +#: src/readelf.c:12209 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:12201 +#: src/readelf.c:12261 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "nie można uzyskać zawartości sekcji notatki: %s" -#: src/readelf.c:12228 +#: src/readelf.c:12288 #, c-format msgid "" "\n" @@ -5939,7 +5947,7 @@ msgstr "" "Segment notatki [%2zu] „%s” o długości % bajtów pod offsetem " "%#0:\n" -#: src/readelf.c:12251 +#: src/readelf.c:12311 #, c-format msgid "" "\n" @@ -5948,7 +5956,7 @@ msgstr "" "\n" "Segment notatki o długości % bajtów pod offsetem %#0:\n" -#: src/readelf.c:12297 +#: src/readelf.c:12358 #, c-format msgid "" "\n" @@ -5957,12 +5965,12 @@ msgstr "" "\n" "Sekcja [%zu] „%s” nie ma danych do zrzucenia.\n" -#: src/readelf.c:12324 src/readelf.c:12375 +#: src/readelf.c:12385 src/readelf.c:12436 #, 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:12329 +#: src/readelf.c:12390 #, c-format msgid "" "\n" @@ -5972,7 +5980,7 @@ msgstr "" "Segment zrzutu szesnastkowego [%zu] „%s”, % bajtów pod offsetem " "%#0:\n" -#: src/readelf.c:12334 +#: src/readelf.c:12395 #, c-format msgid "" "\n" @@ -5983,7 +5991,7 @@ msgstr "" "Zrzut szesnastkowy sekcji [%zu] „%s”, % bajtów (%zd " "nieskompresowanych) pod offsetem %#0:\n" -#: src/readelf.c:12348 +#: src/readelf.c:12409 #, c-format msgid "" "\n" @@ -5992,7 +6000,7 @@ msgstr "" "\n" "Sekcja [%zu] „%s” nie ma ciągów do zrzucenia.\n" -#: src/readelf.c:12380 +#: src/readelf.c:12441 #, c-format msgid "" "\n" @@ -6001,7 +6009,7 @@ msgstr "" "\n" "Sekcja ciągów [%zu] „%s” zawiera % bajtów pod offsetem %#0:\n" -#: src/readelf.c:12385 +#: src/readelf.c:12446 #, c-format msgid "" "\n" @@ -6012,7 +6020,7 @@ msgstr "" "Sekcja ciągów [%zu] „%s” zawiera % bajtów (%zd nieskompresowanych) " "pod offsetem %#0:\n" -#: src/readelf.c:12434 +#: src/readelf.c:12495 #, c-format msgid "" "\n" @@ -6021,7 +6029,7 @@ msgstr "" "\n" "sekcja [%lu] nie istnieje" -#: src/readelf.c:12463 +#: src/readelf.c:12524 #, c-format msgid "" "\n" @@ -6030,12 +6038,12 @@ msgstr "" "\n" "sekcja „%s” nie istnieje" -#: src/readelf.c:12520 +#: src/readelf.c:12581 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "nie można uzyskać indeksu symboli archiwum „%s”: %s" -#: src/readelf.c:12523 +#: src/readelf.c:12584 #, c-format msgid "" "\n" @@ -6044,7 +6052,7 @@ msgstr "" "\n" "Archiwum „%s” nie ma indeksu symboli\n" -#: src/readelf.c:12527 +#: src/readelf.c:12588 #, c-format msgid "" "\n" @@ -6053,12 +6061,12 @@ msgstr "" "\n" "Indeks archiwum „%s” ma %zu wpisów:\n" -#: src/readelf.c:12545 +#: src/readelf.c:12606 #, 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:12550 +#: src/readelf.c:12611 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Element archiwum „%s” zawiera:\n" @@ -6122,12 +6130,12 @@ msgstr "Nieprawidłowa baza: %s" msgid "%s: file format not recognized" msgstr "%s: nie rozpoznano formatu pliku" -#: src/size.c:416 src/size.c:549 +#: src/size.c:418 src/size.c:551 #, c-format msgid " (ex %s)" msgstr " (ex %s)" -#: src/size.c:574 +#: src/size.c:576 msgid "(TOTALS)\n" msgstr "(CAŁKOWITE)\n" @@ -6334,31 +6342,31 @@ msgstr "mprotect się nie powiodło" msgid "Skipping section %zd '%s' data outside file" msgstr "Pomijanie sekcji %zd „%s” dane poza plikiem" -#: src/strip.c:70 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "Umieszcza okrojone wyjście w PLIKU" -#: src/strip.c:71 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "Wydobywa usunięte sekcje do PLIKU" -#: src/strip.c:72 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "Osadza nazwę PLIKU zamiast parametru -f" -#: src/strip.c:76 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "Usuwa wszystkie symbole debugowania" -#: src/strip.c:80 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "Usuwa nagłówki sekcji (niezalecane)" -#: src/strip.c:82 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "Kopiuje czasy modyfikacji/dostępu do wyjścia" -#: src/strip.c:84 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " @@ -6368,63 +6376,83 @@ msgstr "" "usunięte sekcje zostały umieszczone w pliku debugowania (ma znaczenie tylko " "dla plików ET_REL, działanie jest nieodwracalne, wymaga użycia opcji -f)" -#: src/strip.c:86 +#: src/strip.c:87 +msgid "" +"Similar to --reloc-debug-sections, but resolve all trivial relocations " +"between debug sections in place. No other stripping is performed (operation " +"is not reversable, incompatible with -f, -g, --remove-comment and --remove-" +"section)" +msgstr "" + +#: src/strip.c:89 msgid "Remove .comment section" msgstr "Usuwa sekcję .comment" -#: src/strip.c:87 +#: src/strip.c:90 msgid "" "Remove the named section. SECTION is an extended wildcard pattern. May be " "given more than once. Only non-allocated sections can be removed." msgstr "" -#: src/strip.c:88 +#: src/strip.c:91 msgid "" "Keep the named section. SECTION is an extended wildcard pattern. May be " "given more than once." msgstr "" #. Short description of program. -#: src/strip.c:95 +#: src/strip.c:98 msgid "Discard symbols from object files." msgstr "Odrzuca symbole z plików obiektów." -#: src/strip.c:241 +#: src/strip.c:247 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "Użyto --reloc-debug-sections bez opcji -f" -#: src/strip.c:255 +#: src/strip.c:253 +#, c-format +msgid "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" +msgstr "" + +#: src/strip.c:267 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "Tylko jeden plik wejściowy jest dozwolony z „-o” i „-f”" -#: src/strip.c:278 +#: src/strip.c:290 #, c-format msgid "-f option specified twice" msgstr "Opcję -f podano dwukrotnie" -#: src/strip.c:287 +#: src/strip.c:299 #, c-format msgid "-F option specified twice" msgstr "Opcję -F podano dwukrotnie" -#: src/strip.c:346 +#: src/strip.c:362 #, fuzzy, c-format msgid "cannot both keep and remove .comment section" msgstr "Usuwa sekcję .comment" -#: src/strip.c:371 src/strip.c:395 +#: src/strip.c:574 +#, c-format +msgid "bad relocation" +msgstr "błędna relokacja" + +#: src/strip.c:726 src/strip.c:750 #, c-format msgid "cannot stat input file '%s'" msgstr "nie można wykonać stat na pliku wejściowym „%s”" -#: src/strip.c:385 +#: src/strip.c:740 #, c-format msgid "while opening '%s'" msgstr "podczas otwierania „%s”" -#: src/strip.c:423 +#: src/strip.c:778 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "%s: nie można używać -o lub -f podczas okrajania archiwum" @@ -6435,132 +6463,132 @@ msgstr "%s: nie można używać -o lub -f podczas okrajania archiwum" #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:435 +#: src/strip.c:790 #, c-format msgid "%s: no support for stripping archive" msgstr "%s: brak obsługi okrajania archiwum" -#: src/strip.c:534 +#: src/strip.c:1001 #, c-format msgid "cannot open EBL backend" msgstr "nie można otworzyć zaplecza EBL" -#: src/strip.c:579 +#: src/strip.c:1046 #, c-format msgid "cannot get number of phdrs" msgstr "nie można uzyskać liczby phdr" -#: src/strip.c:595 src/strip.c:619 -#, c-format -msgid "cannot create new file '%s': %s" +#: src/strip.c:1060 src/strip.c:1103 +#, fuzzy, c-format +msgid "cannot create new ehdr for file '%s': %s" +msgstr "nie można utworzyć nowego pliku „%s”: %s" + +#: src/strip.c:1070 src/strip.c:1113 +#, fuzzy, c-format +msgid "cannot create new phdr for file '%s': %s" msgstr "nie można utworzyć nowego pliku „%s”: %s" -#: src/strip.c:701 +#: src/strip.c:1194 #, c-format msgid "illformed file '%s'" msgstr "plik „%s” ma błędny format" -#: src/strip.c:711 +#: src/strip.c:1204 #, fuzzy, c-format msgid "Cannot remove allocated section '%s'" msgstr "nie można przydzielić danych sekcji: %s" -#: src/strip.c:720 +#: src/strip.c:1213 #, fuzzy, c-format msgid "Cannot both keep and remove section '%s'" msgstr "nie można dodać nowej sekcji: %s" -#: src/strip.c:1076 src/strip.c:1210 +#: src/strip.c:1573 src/strip.c:1688 #, c-format msgid "while generating output file: %s" msgstr "podczas tworzenia pliku wyjściowego: %s" -#: src/strip.c:1141 +#: src/strip.c:1637 #, fuzzy, c-format -msgid "%s: error while getting shdrstrndx: %s" +msgid "%s: error while updating ELF header: %s" msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s" -#: src/strip.c:1157 +#: src/strip.c:1646 #, fuzzy, c-format -msgid "%s: error getting zero section: %s" -msgstr "%s: błąd podczas odczytywania pliku: %s" +msgid "%s: error while getting shdrstrndx: %s" +msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s" -#: src/strip.c:1166 +#: src/strip.c:1654 src/strip.c:2534 #, fuzzy, c-format -msgid "%s: error while updating zero section: %s" -msgstr "%s: błąd podczas odczytywania pliku: %s" - -#: src/strip.c:1176 src/strip.c:2292 -#, c-format -msgid "%s: error while creating ELF header: %s" +msgid "%s: error updating shdrstrndx: %s" msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s" -#: src/strip.c:1193 +#: src/strip.c:1671 #, c-format msgid "while preparing output for '%s'" msgstr "podczas przygotowywania wyjścia dla „%s”" -#: src/strip.c:1255 src/strip.c:1318 +#: src/strip.c:1733 src/strip.c:1796 #, c-format msgid "while create section header section: %s" msgstr "podczas tworzenia sekcji nagłówka sekcji: %s" -#: src/strip.c:1264 +#: src/strip.c:1742 #, c-format msgid "cannot allocate section data: %s" msgstr "nie można przydzielić danych sekcji: %s" -#: src/strip.c:1330 +#: src/strip.c:1808 #, c-format msgid "while create section header string table: %s" msgstr "podczas tworzenia tabeli ciągów nagłówka sekcji: %s" -#: src/strip.c:1337 +#: src/strip.c:1815 #, c-format msgid "no memory to create section header string table" msgstr "brak pamięci do utworzenia tabeli ciągów nagłówka sekcji" -#: src/strip.c:1547 +#: src/strip.c:2027 #, 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:2078 -#, c-format -msgid "bad relocation" -msgstr "błędna relokacja" - -#: src/strip.c:2203 src/strip.c:2316 +#: src/strip.c:2450 src/strip.c:2558 #, c-format msgid "while writing '%s': %s" msgstr "podczas zapisywania „%s”: %s" -#: src/strip.c:2214 +#: src/strip.c:2461 #, c-format msgid "while creating '%s'" msgstr "podczas tworzenia „%s”" -#: src/strip.c:2237 +#: src/strip.c:2484 #, c-format msgid "while computing checksum for debug information" msgstr "podczas obliczania sumy kontrolnej dla informacji debugowania" -#: src/strip.c:2301 +#: src/strip.c:2525 +#, c-format +msgid "%s: error while creating ELF header: %s" +msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s" + +#: src/strip.c:2543 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: błąd podczas odczytywania pliku: %s" -#: src/strip.c:2341 src/strip.c:2361 +#: src/strip.c:2583 src/strip.c:2603 #, c-format msgid "while writing '%s'" msgstr "podczas zapisywania „%s”" -#: src/strip.c:2398 src/strip.c:2405 +#: src/strip.c:2640 src/strip.c:2647 #, c-format msgid "error while finishing '%s': %s" msgstr "błąd podczas kończenia „%s”: %s" -#: src/strip.c:2422 src/strip.c:2498 +#: src/strip.c:2664 src/strip.c:2740 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "nie można ustawić czasu dostępu i modyfikacji „%s”" @@ -6648,192 +6676,222 @@ msgstr "nie można utworzyć nagłówka ELF: %s" msgid "cannot get shdrstrndx:%s" msgstr "nie można uzyskać sekcji: %s" -#: src/unstrip.c:257 +#: src/unstrip.c:248 src/unstrip.c:2034 +#, c-format +msgid "cannot get ELF header: %s" +msgstr "nie można uzyskać nagłówka ELF: %s" + +#: src/unstrip.c:258 #, fuzzy, c-format msgid "cannot get new zero section: %s" msgstr "nie można uzyskać sekcji: %s" -#: src/unstrip.c:260 +#: src/unstrip.c:261 #, fuzzy, c-format msgid "cannot update new zero section: %s" msgstr "nie można zaktualizować relokacji: %s" -#: src/unstrip.c:264 +#: src/unstrip.c:265 #, c-format msgid "cannot copy ELF header: %s" msgstr "nie można skopiować nagłówka ELF: %s" -#: src/unstrip.c:268 src/unstrip.c:1962 src/unstrip.c:2005 +#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 #, c-format msgid "cannot get number of program headers: %s" msgstr "nie można uzyskać liczby nagłówków programu: %s" -#: src/unstrip.c:273 src/unstrip.c:1966 +#: src/unstrip.c:274 src/unstrip.c:2056 #, c-format msgid "cannot create program headers: %s" msgstr "nie można utworzyć nagłówków programu: %s" -#: src/unstrip.c:279 +#: src/unstrip.c:280 #, c-format msgid "cannot copy program header: %s" msgstr "nie można skopiować nagłówka programu: %s" -#: src/unstrip.c:289 +#: src/unstrip.c:290 #, c-format msgid "cannot copy section header: %s" msgstr "nie można skopiować nagłówka sekcji: %s" -#: src/unstrip.c:292 src/unstrip.c:1597 +#: src/unstrip.c:293 src/unstrip.c:1665 #, c-format msgid "cannot get section data: %s" msgstr "nie można uzyskać danych sekcji: %s" -#: src/unstrip.c:294 src/unstrip.c:1599 +#: src/unstrip.c:295 src/unstrip.c:1667 #, c-format msgid "cannot copy section data: %s" msgstr "nie można skopiować danych sekcji: %s" -#: src/unstrip.c:318 +#: src/unstrip.c:319 #, c-format msgid "cannot create directory '%s'" msgstr "nie można utworzyć katalogu „%s”" -#: src/unstrip.c:390 src/unstrip.c:820 src/unstrip.c:1631 +#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 #, c-format msgid "cannot get symbol table entry: %s" msgstr "nie można uzyskać wpisu tabeli symboli: %s" -#: src/unstrip.c:406 src/unstrip.c:631 src/unstrip.c:652 src/unstrip.c:664 -#: src/unstrip.c:1652 src/unstrip.c:1828 src/unstrip.c:1852 +#: 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 #, c-format msgid "cannot update symbol table: %s" msgstr "nie można zaktualizować tabeli symboli: %s" -#: src/unstrip.c:416 +#: src/unstrip.c:417 #, c-format msgid "cannot update section header: %s" msgstr "nie można zaktualizować nagłówka sekcji: %s" -#: src/unstrip.c:455 src/unstrip.c:466 +#: src/unstrip.c:459 src/unstrip.c:473 #, c-format msgid "cannot update relocation: %s" msgstr "nie można zaktualizować relokacji: %s" -#: src/unstrip.c:554 +#: src/unstrip.c:570 #, c-format msgid "cannot get symbol version: %s" msgstr "nie można uzyskać wersji symbolu: %s" -#: src/unstrip.c:567 +#: src/unstrip.c:583 #, c-format msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "nieoczekiwany typ sekcji w [%zu] z sh_link do tabeli symboli" -#: src/unstrip.c:826 +#: src/unstrip.c:851 #, c-format msgid "invalid string offset in symbol [%zu]" msgstr "nieprawidłowy offset ciągu w symbolu [%zu]" -#: src/unstrip.c:984 src/unstrip.c:1334 +#: src/unstrip.c:1009 src/unstrip.c:1398 #, c-format msgid "cannot read section [%zu] name: %s" msgstr "nie można odczytać nazwy sekcji [%zu]: %s" -#: src/unstrip.c:1025 src/unstrip.c:1044 src/unstrip.c:1082 +#: src/unstrip.c:1024 +#, fuzzy, c-format +msgid "bad sh_link for group section: %s" +msgstr "nieprawidłowa wartość sh_link w sekcji %zu" + +#: src/unstrip.c:1030 +#, 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 +#, 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 +#, fuzzy, c-format +msgid "couldn't get symbol for group section: %s" +msgstr "nie można uzyskać wersji symbolu: %s" + +#: src/unstrip.c:1046 +#, 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 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "nie można odczytać sekcji „.gnu.prelink_undo”: %s" -#: src/unstrip.c:1062 +#: src/unstrip.c:1125 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "przepełnienie z shnum = %zu w sekcji „%s”" -#: src/unstrip.c:1073 +#: src/unstrip.c:1136 #, c-format msgid "invalid contents in '%s' section" msgstr "nieprawidłowa zawartość w sekcji „%s”" -#: src/unstrip.c:1128 src/unstrip.c:1456 +#: src/unstrip.c:1192 src/unstrip.c:1524 #, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "nie można odnaleźć pasującej sekcji dla [%zu] „%s”" -#: src/unstrip.c:1253 src/unstrip.c:1268 src/unstrip.c:1535 src/unstrip.c:1787 +#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 #, 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:1277 +#: src/unstrip.c:1341 #, 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:1305 src/unstrip.c:1309 +#: src/unstrip.c:1369 src/unstrip.c:1373 #, 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:1313 src/unstrip.c:1317 src/unstrip.c:1550 +#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 #, c-format msgid "cannot get section count: %s" msgstr "nie można uzyskać licznika sekcji: %s" -#: src/unstrip.c:1320 +#: src/unstrip.c:1384 #, 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:1379 src/unstrip.c:1471 +#: src/unstrip.c:1446 src/unstrip.c:1539 #, 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:1529 +#: src/unstrip.c:1597 #, c-format msgid "cannot add new section: %s" msgstr "nie można dodać nowej sekcji: %s" -#: src/unstrip.c:1639 +#: src/unstrip.c:1710 #, c-format msgid "symbol [%zu] has invalid section index" msgstr "symbol [%zu] ma nieprawidłowy indeks sekcji" -#: src/unstrip.c:1923 +#: src/unstrip.c:1742 +#, fuzzy, c-format +msgid "group has invalid section index [%zd]" +msgstr "symbol [%zu] ma nieprawidłowy indeks sekcji" + +#: src/unstrip.c:2013 #, c-format msgid "cannot read section data: %s" msgstr "nie można odczytać danych sekcji: %s" -#: src/unstrip.c:1944 -#, c-format -msgid "cannot get ELF header: %s" -msgstr "nie można uzyskać nagłówka ELF: %s" - -#: src/unstrip.c:1952 +#: src/unstrip.c:2042 #, c-format msgid "cannot update ELF header: %s" msgstr "nie można zaktualizować nagłówka ELF: %s" -#: src/unstrip.c:1976 +#: src/unstrip.c:2066 #, c-format msgid "cannot update program header: %s" msgstr "nie można zaktualizować nagłówka programu: %s" -#: src/unstrip.c:1981 src/unstrip.c:2063 +#: src/unstrip.c:2071 src/unstrip.c:2153 #, c-format msgid "cannot write output file: %s" msgstr "nie można zapisać pliku wyjściowego: %s" -#: src/unstrip.c:2032 +#: src/unstrip.c:2122 #, 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:2035 +#: src/unstrip.c:2125 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" @@ -6841,77 +6899,77 @@ msgstr "" "Dane DWARF w „%s” nie zostały dostosowane do przesunięcia wczesnego " "konsolidowania; proszę rozważyć polecenie prelink -u" -#: src/unstrip.c:2054 src/unstrip.c:2105 src/unstrip.c:2117 src/unstrip.c:2203 +#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "nie można utworzyć deskryptora ELF: %s" -#: src/unstrip.c:2096 +#: src/unstrip.c:2186 msgid "WARNING: " msgstr "OSTRZEŻENIE: " -#: src/unstrip.c:2098 +#: src/unstrip.c:2188 msgid ", use --force" msgstr ", należy użyć opcji --force" -#: src/unstrip.c:2121 +#: src/unstrip.c:2211 msgid "ELF header identification (e_ident) different" msgstr "Różna identyfikacja nagłówka ELF (e_ident)" -#: src/unstrip.c:2124 +#: src/unstrip.c:2214 msgid "ELF header type (e_type) different" msgstr "Różne typy nagłówka ELF (e_type)" -#: src/unstrip.c:2127 +#: src/unstrip.c:2217 msgid "ELF header machine type (e_machine) different" msgstr "Różne typy maszyny nagłówka ELF (e_machine)" -#: src/unstrip.c:2130 +#: src/unstrip.c:2220 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "okrojony nagłówek programu (e_phnum) jest mniejszy niż nieokrojony" -#: src/unstrip.c:2160 +#: src/unstrip.c:2250 #, 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:2164 +#: src/unstrip.c:2254 #, 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:2179 +#: src/unstrip.c:2269 #, 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:2183 +#: src/unstrip.c:2273 #, 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:2196 +#: src/unstrip.c:2286 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "moduł „%s” pliku „%s” nie został okrojony" -#: src/unstrip.c:2227 +#: src/unstrip.c:2317 #, 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:2360 +#: src/unstrip.c:2450 #, c-format msgid "no matching modules found" msgstr "nie odnaleziono pasujących modułów" -#: src/unstrip.c:2369 +#: src/unstrip.c:2459 #, c-format msgid "matched more than one module" msgstr "pasuje więcej niż jeden moduł" -#: src/unstrip.c:2413 +#: src/unstrip.c:2503 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" @@ -6919,7 +6977,7 @@ msgstr "" "OKROJONY-PLIK PLIK-DEBUGOWANIA\n" "[MODUŁ…]" -#: src/unstrip.c:2414 +#: src/unstrip.c:2504 #, fuzzy msgid "" "Combine stripped files with separate symbols and debug information.\n" @@ -6987,6 +7045,14 @@ msgstr "Dodatkowo wyświetla nazwy funkcji" msgid "Show instances of inlined functions" msgstr "Wyświetla wystąpienia wstawionych funkcji" +#, fuzzy +#~ msgid "%s: error getting zero section: %s" +#~ msgstr "%s: błąd podczas odczytywania pliku: %s" + +#, fuzzy +#~ msgid "%s: error while updating zero section: %s" +#~ msgstr "%s: błąd podczas odczytywania pliku: %s" + #~ msgid "%s+%# <%s+%#>" #~ msgstr "%s+%# <%s+%#>" diff --git a/po/uk.po b/po/uk.po index 2198414d..c46ad048 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-09-14 12:05+0200\n" +"POT-Creation-Date: 2018-11-14 13:04+0100\n" "PO-Revision-Date: 2015-09-26 16:41+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -58,8 +58,8 @@ msgstr "" "початкових кодах. Умовами ліцензування програми НЕ передбачено жодних " "гарантій, зокрема гарантій працездатності або придатності для певної мети.\n" -#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3409 -#: src/readelf.c:11212 src/unstrip.c:2256 src/unstrip.c:2462 +#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3414 +#: src/readelf.c:11259 src/unstrip.c:2346 src/unstrip.c:2552 #, 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:2403 +#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2493 msgid "Input selection options:" msgstr "Вибір параметрів виведення даних:" @@ -524,8 +524,8 @@ msgstr "Не є файлом ET_CORE ELF" msgid "No backend" msgstr "Немає сервера" -#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 -#: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 +#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" @@ -536,58 +536,58 @@ msgstr "<невідомо>" msgid ": %#" msgstr "<невідомо>: %#" -#: libebl/eblobjnote.c:53 +#: libebl/eblobjnote.c:58 #, c-format msgid "unknown SDT version %u\n" msgstr "невідома версія SDT, %u\n" -#: libebl/eblobjnote.c:71 +#: libebl/eblobjnote.c:76 #, c-format msgid "invalid SDT probe descriptor\n" msgstr "некоректний дескриптор зондування SDT\n" -#: libebl/eblobjnote.c:121 +#: libebl/eblobjnote.c:126 #, c-format msgid " PC: " msgstr " PC: " -#: libebl/eblobjnote.c:123 +#: libebl/eblobjnote.c:128 #, c-format msgid " Base: " msgstr "Основа: " -#: libebl/eblobjnote.c:125 +#: libebl/eblobjnote.c:130 #, c-format msgid " Semaphore: " msgstr " Семафор: " -#: libebl/eblobjnote.c:127 +#: libebl/eblobjnote.c:132 #, c-format msgid " Provider: " msgstr " Постачальник: " -#: libebl/eblobjnote.c:129 +#: libebl/eblobjnote.c:134 #, c-format msgid " Name: " msgstr "Назва: " -#: libebl/eblobjnote.c:131 +#: libebl/eblobjnote.c:136 #, c-format msgid " Args: " msgstr " Арг.: " -#: libebl/eblobjnote.c:141 +#: libebl/eblobjnote.c:300 #, c-format msgid " Build ID: " msgstr " Ід. збирання: " #. A non-null terminated version string. -#: libebl/eblobjnote.c:152 +#: libebl/eblobjnote.c:311 #, c-format msgid " Linker version: %.*s\n" msgstr " Версія компонувальника: %.*s\n" -#: libebl/eblobjnote.c:213 +#: libebl/eblobjnote.c:553 #, c-format msgid " OS: %s, ABI: " msgstr " ОС: %s, ABI: " @@ -621,7 +621,7 @@ msgstr "некоректна розмірність вхідного парам msgid "invalid size of destination operand" msgstr "некоректна розмірність вихідного параметра" -#: libelf/elf_error.c:87 src/readelf.c:6123 +#: libelf/elf_error.c:87 src/readelf.c:6129 #, 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:9758 src/readelf.c:10329 -#: src/readelf.c:10430 src/readelf.c:10611 +#: libelf/elf_error.c:191 src/readelf.c:9775 src/readelf.c:10375 +#: src/readelf.c:10476 src/readelf.c:10658 #, c-format msgid "invalid data" msgstr "некоректні дані" @@ -1045,12 +1045,12 @@ msgstr "не вдалося отримати дані архіву «%s» за msgid "no entry %s in archive\n" msgstr "у архіві немає запису %s\n" -#: src/ar.c:472 src/ar.c:917 src/ar.c:1121 +#: src/ar.c:472 src/ar.c:923 src/ar.c:1127 #, c-format msgid "cannot create hash table" msgstr "не вдалося створити таблицю хешів" -#: src/ar.c:479 src/ar.c:924 src/ar.c:1130 +#: src/ar.c:479 src/ar.c:930 src/ar.c:1136 #, c-format msgid "cannot insert into hash table" msgstr "не вдалося вставити запис до таблиці хешів" @@ -1060,97 +1060,97 @@ msgstr "не вдалося вставити запис до таблиці хе msgid "cannot stat '%s'" msgstr "не вдалося отримати дані з «%s» за допомогою stat" -#: src/ar.c:583 +#: src/ar.c:589 #, c-format msgid "cannot read content of %s: %s" msgstr "не вдалося прочитати вміст з %s: %s" -#: src/ar.c:626 +#: src/ar.c:632 #, c-format msgid "cannot open %.*s" msgstr "не вдалося відкрити %.*s" -#: src/ar.c:648 +#: src/ar.c:654 #, c-format msgid "failed to write %s" msgstr "не вдалося записати %s" -#: src/ar.c:660 +#: src/ar.c:666 #, c-format msgid "cannot change mode of %s" msgstr "не вдалося змінити права доступу до %s" -#: src/ar.c:676 +#: src/ar.c:682 #, c-format msgid "cannot change modification time of %s" msgstr "не вдалося змінити часову мітку зміни %s" -#: src/ar.c:722 +#: src/ar.c:728 #, c-format msgid "cannot rename temporary file to %.*s" msgstr "не вдалося перейменувати файл тимчасових даних на %.*s" -#: src/ar.c:758 src/ar.c:1009 src/ar.c:1410 src/ranlib.c:222 +#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222 #, c-format msgid "cannot create new file" msgstr "не вдалося створити файл" -#: src/ar.c:1212 +#: src/ar.c:1218 #, c-format msgid "position member %s not found" msgstr "не виявлено елемента позиції %s" -#: src/ar.c:1222 +#: src/ar.c:1228 #, c-format msgid "%s: no entry %s in archive!\n" msgstr "%s: у архіві немає запису %s!\n" -#: src/ar.c:1251 src/objdump.c:241 +#: src/ar.c:1257 src/objdump.c:241 #, c-format msgid "cannot open %s" msgstr "не вдалося відкрити %s" -#: src/ar.c:1256 +#: src/ar.c:1262 #, c-format msgid "cannot stat %s" msgstr "не вдалося отримати дані %s за допомогою stat" -#: src/ar.c:1262 +#: src/ar.c:1268 #, c-format msgid "%s is no regular file" msgstr "%s не є звичайним файлом" -#: src/ar.c:1275 +#: src/ar.c:1281 #, c-format msgid "cannot get ELF descriptor for %s: %s\n" msgstr "не вдалося отримати дескриптор ELF для %s: %s\n" -#: src/ar.c:1295 +#: src/ar.c:1301 #, c-format msgid "cannot read %s: %s" msgstr "не вдалося прочитати %s: %s" -#: src/ar.c:1470 +#: src/ar.c:1476 #, fuzzy, c-format msgid "cannot represent ar_date" msgstr "не вдалося розпакувати DWARF" -#: src/ar.c:1476 +#: src/ar.c:1482 #, fuzzy, c-format msgid "cannot represent ar_uid" msgstr "не вдалося розпакувати DWARF" -#: src/ar.c:1482 +#: src/ar.c:1488 #, fuzzy, c-format msgid "cannot represent ar_gid" msgstr "не вдалося розпакувати DWARF" -#: src/ar.c:1488 +#: src/ar.c:1494 #, fuzzy, c-format msgid "cannot represent ar_mode" msgstr "не вдалося отримати назву розділу" -#: src/ar.c:1494 +#: src/ar.c:1500 #, fuzzy, c-format msgid "cannot represent ar_size" msgstr "не вдалося відкрити %s" @@ -1375,8 +1375,8 @@ msgid "Invalid value '%s' for --gaps parameter." 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:517 src/strip.c:554 -#: src/unstrip.c:2052 src/unstrip.c:2081 +#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021 +#: src/unstrip.c:2142 src/unstrip.c:2171 #, c-format msgid "cannot open '%s'" msgstr "не вдалося відкрити «%s»" @@ -1391,7 +1391,7 @@ msgstr "не вдалося створити дескриптор ELF для «% msgid "cannot create EBL descriptor for '%s'" msgstr "не вдалося створити дескриптор EBL для «%s»" -#: src/elfcmp.c:761 src/findtextrel.c:393 +#: src/elfcmp.c:761 src/findtextrel.c:394 #, c-format msgid "cannot get section header of section %zu: %s" msgstr "не вдалося отримати заголовок розділу %zu: %s" @@ -1406,7 +1406,7 @@ msgstr "не вдалося отримати вміст розділу %zu: %s" msgid "cannot get relocation: %s" msgstr "не вдалося отримати пересування: %s" -#: src/elfcompress.c:115 src/strip.c:296 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "параметр -o вказано двічі" @@ -1461,7 +1461,7 @@ msgid "" "rewrite the file even if no section would be (de)compressed" msgstr "" -#: src/elfcompress.c:1324 src/strip.c:90 +#: src/elfcompress.c:1324 src/strip.c:93 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "" "Знехтувати декількома правилами для обробки трохи пошкоджених файлів ELF" @@ -1687,7 +1687,7 @@ msgstr "" #: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651 #: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095 -#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4401 +#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431 #, c-format msgid "section [%2d] '%s': cannot get section data\n" msgstr "розділ [%2d] «%s»: не вдалося отримати дані розділу\n" @@ -3272,53 +3272,56 @@ msgstr "" "розділ [%2d] «%s»: невідомий тип нотатки файла core % за зміщенням " "%zu\n" -#: src/elflint.c:4344 -#, c-format -msgid "phdr[%d]: unknown object file note type % at offset %zu\n" +#: src/elflint.c:4370 +#, fuzzy, c-format +msgid "" +"phdr[%d]: unknown object file note type % with owner name '%s' at " +"offset %zu\n" msgstr "" "phdr[%d]: невідомий тип нотатки об’єктного файла % за зміщенням %zu\n" -#: src/elflint.c:4348 -#, c-format +#: src/elflint.c:4375 +#, fuzzy, c-format msgid "" -"section [%2d] '%s': unknown object file note type % at offset %zu\n" +"section [%2d] '%s': unknown object file note type % with owner name " +"'%s' at offset %zu\n" msgstr "" "розділ [%2d] «%s»: невідомий тип нотатки об’єктного файла % за " "зміщенням %zu\n" -#: src/elflint.c:4365 +#: src/elflint.c:4394 #, c-format msgid "phdr[%d]: no note entries defined for the type of file\n" msgstr "phdr[%d]: для цього типу файлів не визначено записів нотаток\n" -#: src/elflint.c:4384 +#: src/elflint.c:4414 #, c-format msgid "phdr[%d]: cannot get content of note section: %s\n" msgstr "phdr[%d]: не вдалося отримати вміст розділу нотаток: %s\n" -#: src/elflint.c:4387 +#: src/elflint.c:4417 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "phdr[%d]: зайві % байтів після останнього запису нотатки\n" -#: src/elflint.c:4408 +#: src/elflint.c:4438 #, c-format msgid "section [%2d] '%s': no note entries defined for the type of file\n" msgstr "" "розділ [%2d] «%s»: для цього типу файлів не визначено записів нотаток\n" -#: src/elflint.c:4415 +#: src/elflint.c:4445 #, c-format msgid "section [%2d] '%s': cannot get content of note section\n" msgstr "розділ [%2d] «%s»: не вдалося отримати вміст розділу нотаток\n" -#: src/elflint.c:4418 +#: src/elflint.c:4448 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "" "розділ [%2d] «%s»: додаткові % байтів після останньої нотатки\n" -#: src/elflint.c:4436 +#: src/elflint.c:4466 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" @@ -3326,141 +3329,141 @@ msgstr "" "заголовки програм можуть бути лише у виконуваних файлів, об’єктних файлів " "спільного використання або файлів core\n" -#: src/elflint.c:4451 +#: src/elflint.c:4481 #, c-format msgid "cannot get program header entry %d: %s\n" msgstr "не вдалося отримати запис заголовка програми %d: %s\n" -#: src/elflint.c:4460 +#: src/elflint.c:4490 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" "запис заголовка програми %d: невідомий тип запису заголовка програми " "%#\n" -#: src/elflint.c:4471 +#: src/elflint.c:4501 #, c-format msgid "more than one INTERP entry in program header\n" msgstr "більше за один запис INTERP у заголовку програми\n" -#: src/elflint.c:4479 +#: src/elflint.c:4509 #, c-format msgid "more than one TLS entry in program header\n" msgstr "більше за один запис TLS у заголовку програми\n" -#: src/elflint.c:4486 +#: src/elflint.c:4516 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "у статичному виконуваному файлі не може бути динамічних розділів\n" -#: src/elflint.c:4500 +#: src/elflint.c:4530 #, c-format msgid "dynamic section reference in program header has wrong offset\n" msgstr "" "посилання на динамічний розділ у заголовку програми має помилкове зміщення\n" -#: src/elflint.c:4503 +#: src/elflint.c:4533 #, c-format msgid "dynamic section size mismatch in program and section header\n" msgstr "" "розміри динамічного розділу у заголовку програми та у заголовку розділу не " "збігаються\n" -#: src/elflint.c:4513 +#: src/elflint.c:4543 #, c-format msgid "more than one GNU_RELRO entry in program header\n" msgstr "більше за один запис GNU_RELRO у заголовку програми\n" -#: src/elflint.c:4534 +#: src/elflint.c:4564 #, c-format msgid "loadable segment GNU_RELRO applies to is not writable\n" msgstr "" "придатний до завантаження сегмент, до якого звертається GNU_RELRO, " "непридатний до запису\n" -#: src/elflint.c:4545 +#: src/elflint.c:4575 #, c-format msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" msgstr "" "прапорці придатного до завантаження сегмента [%u] не відповідають прапорцям " "GNU_RELRO [%u]\n" -#: src/elflint.c:4552 +#: src/elflint.c:4582 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" msgstr "" -#: src/elflint.c:4561 src/elflint.c:4584 +#: src/elflint.c:4591 src/elflint.c:4614 #, c-format msgid "%s segment not contained in a loaded segment\n" msgstr "сегмент %s не міститься у завантаженому сегменті\n" -#: src/elflint.c:4590 +#: src/elflint.c:4620 #, c-format msgid "program header offset in ELF header and PHDR entry do not match" msgstr "зміщення заголовка програми у заголовку ELF і запис PHDR не збігаються" -#: src/elflint.c:4615 +#: src/elflint.c:4647 #, c-format msgid "call frame search table reference in program header has wrong offset\n" msgstr "" "посилання на таблицю вікон викликів у заголовку програми має помилкове " "зміщення\n" -#: src/elflint.c:4618 +#: src/elflint.c:4650 #, c-format msgid "call frame search table size mismatch in program and section header\n" msgstr "" "розміри таблиці пошуку вікон виклику у заголовку програми та у заголовку " "розділу не збігаються\n" -#: src/elflint.c:4631 +#: src/elflint.c:4663 #, c-format msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" msgstr "існує PT_GNU_EH_FRAME, хоча немає розділу .eh_frame_hdr\n" -#: src/elflint.c:4639 +#: src/elflint.c:4671 #, c-format msgid "call frame search table must be allocated\n" msgstr "таблицю пошуку вікон викликів має бути розміщено у пам’яті\n" -#: src/elflint.c:4642 +#: src/elflint.c:4674 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "розділ [%2zu] «%s» має бути розміщено у пам’яті\n" -#: src/elflint.c:4646 +#: src/elflint.c:4678 #, c-format msgid "call frame search table must not be writable\n" msgstr "таблиця пошуку вікон викликів не повинна бути придатною до запису\n" -#: src/elflint.c:4649 +#: src/elflint.c:4681 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "розділ [%2zu] «%s» не повинен бути придатним до запису\n" -#: src/elflint.c:4654 +#: src/elflint.c:4686 #, c-format msgid "call frame search table must not be executable\n" msgstr "таблиця пошуку вікон викликів не повинна бути придатною до виконання\n" -#: src/elflint.c:4657 +#: src/elflint.c:4689 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "розділ [%2zu] «%s» не повинен бути придатним до виконання\n" -#: src/elflint.c:4668 +#: src/elflint.c:4700 #, c-format msgid "program header entry %d: file size greater than memory size\n" msgstr "запис заголовка програми %d: розмір файла перевищує об’єм пам’яті\n" -#: src/elflint.c:4675 +#: src/elflint.c:4707 #, c-format msgid "program header entry %d: alignment not a power of 2\n" msgstr "запис заголовка програми %d: значення вирівнювання не є степенем 2\n" -#: src/elflint.c:4678 +#: src/elflint.c:4710 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " @@ -3469,7 +3472,7 @@ msgstr "" "запис заголовка програми %d: зміщення у файлі і віртуальна адреса не " "співвідносяться з вирівнюванням\n" -#: src/elflint.c:4691 +#: src/elflint.c:4723 #, c-format msgid "" "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " @@ -3478,12 +3481,12 @@ msgstr "" "виконуваний модуль/DSO з розділом .eh_frame_hdr не містить запису заголовка " "програми PT_GNU_EH_FRAME" -#: src/elflint.c:4725 +#: src/elflint.c:4757 #, c-format msgid "cannot read ELF header: %s\n" msgstr "не вдалося прочитати заголовок ELF: %s\n" -#: src/elflint.c:4751 +#: src/elflint.c:4783 #, c-format msgid "text relocation flag set but not needed\n" msgstr "" @@ -3508,7 +3511,7 @@ msgstr "Шукає джерело пересуваного тексту у ФА #. Strings for arguments in help texts. #: src/findtextrel.c:74 src/nm.c:108 src/objdump.c:71 src/size.c:80 -#: src/strings.c:87 src/strip.c:98 +#: src/strings.c:87 src/strip.c:101 msgid "[FILE...]" msgstr "[ФАЙЛ...]" @@ -3527,55 +3530,55 @@ msgstr "«%s» не є DSO або PIE" msgid "getting get section header of section %zu: %s" msgstr "отримання заголовка розділу get розділу %zu: %s" -#: src/findtextrel.c:276 +#: src/findtextrel.c:277 #, c-format msgid "cannot read dynamic section: %s" msgstr "не вдалося прочитати динамічний розділ: %s" -#: src/findtextrel.c:297 +#: src/findtextrel.c:298 #, c-format msgid "no text relocations reported in '%s'" msgstr "у «%s» не виявлено пересувань тексту" -#: src/findtextrel.c:309 +#: src/findtextrel.c:310 #, c-format msgid "while reading ELF file" msgstr "під час спроби читання файла ELF" -#: src/findtextrel.c:313 +#: src/findtextrel.c:314 #, c-format msgid "cannot get program header count: %s" msgstr "не вдалося отримати кількість заголовків програми: %s" -#: src/findtextrel.c:324 src/findtextrel.c:341 +#: src/findtextrel.c:325 src/findtextrel.c:342 #, c-format msgid "cannot get program header index at offset %zd: %s" msgstr "не вдалося отримати індекс заголовка програми за зміщенням %zd: %s" -#: src/findtextrel.c:405 +#: src/findtextrel.c:406 #, c-format msgid "cannot get symbol table section %zu in '%s': %s" msgstr "не вдалося отримати таблицю символів розділу %zu у «%s»: %s" -#: src/findtextrel.c:425 src/findtextrel.c:448 +#: src/findtextrel.c:427 src/findtextrel.c:450 #, c-format msgid "cannot get relocation at index %d in section %zu in '%s': %s" msgstr "" "не вдалося отримати пересування за індексом %d у розділі %zu у «%s»: %s" -#: src/findtextrel.c:514 +#: src/findtextrel.c:516 #, c-format msgid "%s not compiled with -fpic/-fPIC\n" msgstr "%s не зібрано з -fpic/-fPIC\n" -#: src/findtextrel.c:567 +#: src/findtextrel.c:570 #, c-format msgid "" "the file containing the function '%s' is not compiled with -fpic/-fPIC\n" msgstr "" "файл, що містить функцію «%s», не було зібрано з параметрами -fpic/-fPIC\n" -#: src/findtextrel.c:574 src/findtextrel.c:594 +#: src/findtextrel.c:577 src/findtextrel.c:597 #, c-format msgid "" "the file containing the function '%s' might not be compiled with -fpic/-" @@ -3584,7 +3587,7 @@ msgstr "" "файл, що містить функцію «%s», ймовірно, не було зібрано з параметрами -" "fpic/-fPIC\n" -#: src/findtextrel.c:582 +#: src/findtextrel.c:585 #, c-format msgid "" "either the file containing the function '%s' or the file containing the " @@ -3593,7 +3596,7 @@ msgstr "" "файл, що містить функцію «%s», або файл, що містить функцію «%s», зібрано " "без параметрів -fpic/-fPIC\n" -#: src/findtextrel.c:602 +#: src/findtextrel.c:605 #, c-format msgid "" "a relocation modifies memory at offset %llu in a write-protected segment\n" @@ -3601,7 +3604,7 @@ msgstr "" "пересування призводить до зміни запису пам’яті за зміщенням %llu у " "захищеному від запису сегменті\n" -#: src/nm.c:66 src/strip.c:69 +#: src/nm.c:66 src/strip.c:70 msgid "Output selection:" msgstr "Вибір виводу:" @@ -3665,7 +3668,7 @@ msgstr "Позначати спеціальні символи" msgid "Print size of defined symbols" msgstr "Вивести розмір визначених символів" -#: src/nm.c:91 src/size.c:68 src/strip.c:74 src/unstrip.c:73 +#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "Параметри виводу:" @@ -3694,18 +3697,18 @@ msgstr "Показати список символів з ФАЙЛів (типо msgid "Output formatting" msgstr "Форматування виводу" -#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:130 +#: src/nm.c:140 src/objdump.c:103 src/size.c:105 src/strip.c:133 #, c-format 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:2505 +#: src/strip.c:2747 #, c-format msgid "while closing '%s'" msgstr "під час закриття «%s»" -#: src/nm.c:403 src/objdump.c:280 src/strip.c:442 +#: src/nm.c:403 src/objdump.c:280 src/strip.c:797 #, c-format msgid "%s: File format not recognized" msgstr "%s: не вдалося розпізнати формат файла" @@ -3745,12 +3748,12 @@ 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:1410 src/readelf.c:1558 src/readelf.c:1759 src/readelf.c:1965 -#: src/readelf.c:2155 src/readelf.c:2333 src/readelf.c:2409 src/readelf.c:2667 -#: src/readelf.c:2743 src/readelf.c:2830 src/readelf.c:3428 src/readelf.c:3478 -#: src/readelf.c:3541 src/readelf.c:11044 src/readelf.c:12216 -#: src/readelf.c:12419 src/readelf.c:12487 src/size.c:396 src/size.c:465 -#: src/strip.c:571 +#: 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:11091 src/readelf.c:12276 +#: src/readelf.c:12480 src/readelf.c:12548 src/size.c:398 src/size.c:467 +#: src/strip.c:1038 #, c-format msgid "cannot get section header string table index" msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків" @@ -3843,11 +3846,11 @@ msgstr "Не вказано дії.\n" msgid "while close `%s'" msgstr "під час закриття «%s»" -#: src/objdump.c:363 src/readelf.c:2060 src/readelf.c:2252 +#: src/objdump.c:363 src/readelf.c:2065 src/readelf.c:2257 msgid "INVALID SYMBOL" msgstr "НЕКОРЕКТНИЙ СИМВОЛ" -#: src/objdump.c:378 src/readelf.c:2094 src/readelf.c:2288 +#: src/objdump.c:378 src/readelf.c:2099 src/readelf.c:2293 msgid "INVALID SECTION" msgstr "НЕКОРЕКТНИЙ РОЗДІЛ" @@ -4052,21 +4055,21 @@ msgstr "Невідомий діагностичний розділ DWARF «%s». msgid "cannot generate Elf descriptor: %s" msgstr "не вдалося створити дескриптор Elf: %s" -#: src/readelf.c:596 src/readelf.c:924 src/strip.c:640 +#: src/readelf.c:596 src/readelf.c:923 src/strip.c:1133 #, c-format msgid "cannot determine number of sections: %s" msgstr "не вдалося визначити кількість розділів: %s" -#: src/readelf.c:614 src/readelf.c:1226 src/readelf.c:1434 +#: src/readelf.c:614 src/readelf.c:1228 src/readelf.c:1436 #, c-format msgid "cannot get section: %s" msgstr "не вдалося отримати розділ: %s" -#: src/readelf.c:623 src/readelf.c:1233 src/readelf.c:1442 src/readelf.c:12439 -#: src/unstrip.c:394 src/unstrip.c:425 src/unstrip.c:474 src/unstrip.c:584 -#: src/unstrip.c:605 src/unstrip.c:642 src/unstrip.c:846 src/unstrip.c:1138 -#: src/unstrip.c:1330 src/unstrip.c:1391 src/unstrip.c:1564 src/unstrip.c:1679 -#: src/unstrip.c:1819 src/unstrip.c:1914 +#: src/readelf.c:623 src/readelf.c:1235 src/readelf.c:1444 src/readelf.c:12500 +#: 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 #, c-format msgid "cannot get section header: %s" msgstr "не вдалося отримати заголовок розділу: %s" @@ -4076,8 +4079,8 @@ msgstr "не вдалося отримати заголовок розділу: msgid "cannot get section name" msgstr "не вдалося отримати назву розділу" -#: src/readelf.c:640 src/readelf.c:6533 src/readelf.c:10317 src/readelf.c:10419 -#: src/readelf.c:10596 +#: src/readelf.c:640 src/readelf.c:6539 src/readelf.c:10363 src/readelf.c:10465 +#: src/readelf.c:10643 #, c-format msgid "cannot get %s content: %s" msgstr "не вдалося отримати дані %s: %s" @@ -4127,53 +4130,58 @@ msgstr "не вдалося прочитати «%s»: %s" msgid "No such section '%s' in '%s'" msgstr "У «%2$s» немає розділу «%1$s»" -#: src/readelf.c:909 +#: src/readelf.c:908 #, c-format msgid "cannot read ELF header: %s" msgstr "не вдалося прочитати заголовок ELF: %s" -#: src/readelf.c:917 +#: src/readelf.c:916 #, c-format msgid "cannot create EBL handle" msgstr "не вдалося створити дескриптор EBL" -#: src/readelf.c:930 +#: src/readelf.c:929 #, c-format msgid "cannot determine number of program headers: %s" msgstr "не вдалося визначити кількість заголовків програми: %s" -#: src/readelf.c:1020 +#: src/readelf.c:961 +#, fuzzy, c-format +msgid "cannot read ELF: %s" +msgstr "не вдалося прочитати %s: %s" + +#: src/readelf.c:1022 msgid "NONE (None)" msgstr "NONE (Немає)" -#: src/readelf.c:1021 +#: src/readelf.c:1023 msgid "REL (Relocatable file)" msgstr "REL (Придатний до пересування файл)" -#: src/readelf.c:1022 +#: src/readelf.c:1024 msgid "EXEC (Executable file)" msgstr "EXEC (Виконуваний файл)" -#: src/readelf.c:1023 +#: src/readelf.c:1025 msgid "DYN (Shared object file)" msgstr "DYN (Файл об’єктів спільного використання)" -#: src/readelf.c:1024 +#: src/readelf.c:1026 msgid "CORE (Core file)" msgstr "CORE (Файл ядра)" -#: src/readelf.c:1029 +#: src/readelf.c:1031 #, c-format msgid "OS Specific: (%x)\n" msgstr "ОС-специфічне: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1031 +#: src/readelf.c:1033 #, c-format msgid "Processor Specific: (%x)\n" msgstr "Специфічне для процесора: (%x)\n" -#: src/readelf.c:1041 +#: src/readelf.c:1043 msgid "" "ELF Header:\n" " Magic: " @@ -4181,7 +4189,7 @@ msgstr "" "Заголовок ELF:\n" " Magic: " -#: src/readelf.c:1045 +#: src/readelf.c:1047 #, c-format msgid "" "\n" @@ -4190,118 +4198,118 @@ msgstr "" "\n" " Клас: %s\n" -#: src/readelf.c:1050 +#: src/readelf.c:1052 #, c-format msgid " Data: %s\n" msgstr " Дані: %s\n" -#: src/readelf.c:1056 +#: src/readelf.c:1058 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " Версія Ident: %hhd %s\n" -#: src/readelf.c:1058 src/readelf.c:1075 +#: src/readelf.c:1060 src/readelf.c:1077 msgid "(current)" msgstr "(поточний)" -#: src/readelf.c:1062 +#: src/readelf.c:1064 #, c-format msgid " OS/ABI: %s\n" msgstr " ОС/ABI: %s\n" -#: src/readelf.c:1065 +#: src/readelf.c:1067 #, c-format msgid " ABI Version: %hhd\n" msgstr " Версія ABI: %hhd\n" -#: src/readelf.c:1068 +#: src/readelf.c:1070 msgid " Type: " msgstr " Тип: " -#: src/readelf.c:1071 +#: src/readelf.c:1073 #, c-format msgid " Machine: %s\n" msgstr " Архітектура: %s\n" -#: src/readelf.c:1073 +#: src/readelf.c:1075 #, c-format msgid " Version: %d %s\n" msgstr " Версія: %d %s\n" -#: src/readelf.c:1077 +#: src/readelf.c:1079 #, c-format msgid " Entry point address: %#\n" msgstr " Адреса вхідної точки: %#\n" -#: src/readelf.c:1080 +#: src/readelf.c:1082 #, c-format msgid " Start of program headers: % %s\n" msgstr " Початок заголовків програм: % %s\n" -#: src/readelf.c:1081 src/readelf.c:1084 +#: src/readelf.c:1083 src/readelf.c:1086 msgid "(bytes into file)" msgstr "(байтів у файл)" -#: src/readelf.c:1083 +#: src/readelf.c:1085 #, c-format msgid " Start of section headers: % %s\n" msgstr " Початок заголовків розділів: % %s\n" -#: src/readelf.c:1086 +#: src/readelf.c:1088 #, c-format msgid " Flags: %s\n" msgstr " Прапорці: %s\n" -#: src/readelf.c:1089 +#: src/readelf.c:1091 #, c-format msgid " Size of this header: % %s\n" msgstr " Розмір цього заголовка: % %s\n" -#: src/readelf.c:1090 src/readelf.c:1093 src/readelf.c:1110 +#: src/readelf.c:1092 src/readelf.c:1095 src/readelf.c:1112 msgid "(bytes)" msgstr "(байтів)" -#: src/readelf.c:1092 +#: src/readelf.c:1094 #, c-format msgid " Size of program header entries: % %s\n" msgstr " Розмір записів заголовка програми: % %s\n" -#: src/readelf.c:1095 +#: src/readelf.c:1097 #, c-format msgid " Number of program headers entries: %" msgstr " Кількість записів заголовків програми: %" -#: src/readelf.c:1102 +#: src/readelf.c:1104 #, c-format msgid " (% in [0].sh_info)" msgstr " (% у [0].sh_info)" -#: src/readelf.c:1105 src/readelf.c:1122 src/readelf.c:1136 +#: src/readelf.c:1107 src/readelf.c:1124 src/readelf.c:1138 msgid " ([0] not available)" msgstr " ([0] недоступний)" -#: src/readelf.c:1109 +#: src/readelf.c:1111 #, c-format msgid " Size of section header entries: % %s\n" msgstr " Розмір записів заголовків розділів: % %s\n" -#: src/readelf.c:1112 +#: src/readelf.c:1114 #, c-format msgid " Number of section headers entries: %" msgstr " Кількість записів заголовків розділів: %" -#: src/readelf.c:1119 +#: src/readelf.c:1121 #, c-format msgid " (% in [0].sh_size)" msgstr " (% у [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1132 +#: src/readelf.c:1134 #, c-format msgid " (% in [0].sh_link)" msgstr " (% у [0].sh_link)" -#: src/readelf.c:1140 +#: src/readelf.c:1142 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4310,7 +4318,7 @@ msgstr "" " Індекс заголовка розділу у таблиці рядків: XINDEX%s\n" "\n" -#: src/readelf.c:1144 +#: src/readelf.c:1146 #, c-format msgid "" " Section header string table index: %\n" @@ -4319,12 +4327,12 @@ msgstr "" " Індекс заголовка розділу у таблиці рядків: %\n" "\n" -#: src/readelf.c:1191 src/readelf.c:1399 +#: src/readelf.c:1193 src/readelf.c:1401 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "не вдалося визначити кількість розділів: %s" -#: src/readelf.c:1194 +#: src/readelf.c:1196 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" @@ -4333,16 +4341,16 @@ msgstr "" "Виявлено %d заголовків розділів, зміщення початку — %#:\n" "\n" -#: src/readelf.c:1203 +#: src/readelf.c:1205 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків" -#: src/readelf.c:1206 +#: src/readelf.c:1208 msgid "Section Headers:" msgstr "Заголовки розділів:" -#: src/readelf.c:1209 +#: src/readelf.c:1211 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4350,7 +4358,7 @@ msgstr "" "[№ ] Назва Тип Адр Змі Розмір ES Прап Lk " "Інф Al" -#: src/readelf.c:1211 +#: src/readelf.c:1213 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4358,35 +4366,35 @@ msgstr "" "[№ ] Назва Тип Адр Змі Розмір ES " "Прап Lk Інф Al" -#: src/readelf.c:1216 +#: src/readelf.c:1218 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1218 +#: src/readelf.c:1220 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1294 +#: src/readelf.c:1296 #, fuzzy, c-format msgid "bad compression header for section %zd: %s" msgstr "не вдалося отримати заголовок розділу %zu: %s" -#: src/readelf.c:1305 +#: src/readelf.c:1307 #, fuzzy, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "не вдалося отримати дані для розділу %d: %s" -#: src/readelf.c:1323 +#: src/readelf.c:1325 msgid "Program Headers:" msgstr "Заголовки програми:" -#: src/readelf.c:1325 +#: src/readelf.c:1327 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " Тип Зміщен ВіртАдр ФізАдр РозмФайл РозмПам Пра Вирів" -#: src/readelf.c:1328 +#: src/readelf.c:1330 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4394,12 +4402,12 @@ msgstr "" " Тип Зміщен ВіртАдр ФізАдр " "РозмФайлРозмПам Пра Вирів" -#: src/readelf.c:1385 +#: src/readelf.c:1387 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[Запит щодо інтерпретатора програми: %s]\n" -#: src/readelf.c:1412 +#: src/readelf.c:1414 msgid "" "\n" " Section to Segment mapping:\n" @@ -4409,12 +4417,12 @@ msgstr "" " Відображення розділів на сегмент:\n" " Розділи сегмента..." -#: src/readelf.c:1423 src/unstrip.c:1973 src/unstrip.c:2015 src/unstrip.c:2022 +#: src/readelf.c:1425 src/unstrip.c:2063 src/unstrip.c:2105 src/unstrip.c:2112 #, c-format msgid "cannot get program header: %s" msgstr "не вдалося отримати заголовок програми: %s" -#: src/readelf.c:1566 +#: src/readelf.c:1571 #, c-format msgid "" "\n" @@ -4432,7 +4440,7 @@ msgstr[2] "" "\n" "Група розділів COMDAT [%2zu] «%s» з підписом «%s» містить %zu записів:\n" -#: src/readelf.c:1571 +#: src/readelf.c:1576 #, c-format msgid "" "\n" @@ -4450,31 +4458,31 @@ msgstr[2] "" "\n" "Група розділів [%2zu] «%s» з підписом «%s» містить %zu записів:\n" -#: src/readelf.c:1579 +#: src/readelf.c:1584 msgid "" msgstr "<НЕКОРЕКТНИЙ СИМВОЛ>" -#: src/readelf.c:1593 +#: src/readelf.c:1598 msgid "" msgstr "<НЕКОРЕКТНИЙ РОЗДІЛ>" -#: src/readelf.c:1616 src/readelf.c:2343 src/readelf.c:3444 src/readelf.c:12310 -#: src/readelf.c:12317 src/readelf.c:12361 src/readelf.c:12368 +#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 src/readelf.c:12371 +#: src/readelf.c:12378 src/readelf.c:12422 src/readelf.c:12429 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1621 src/readelf.c:2348 src/readelf.c:3449 +#: src/readelf.c:1626 src/readelf.c:2353 src/readelf.c:3454 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "не вдалося отримати заголовок розділу: %s" -#: src/readelf.c:1765 src/readelf.c:2415 src/readelf.c:2673 src/readelf.c:2749 -#: src/readelf.c:3053 src/readelf.c:3127 src/readelf.c:5322 +#: 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 #, c-format msgid "invalid sh_link value in section %zu" msgstr "некоректне значення sh_link у розділі %zu" -#: src/readelf.c:1768 +#: src/readelf.c:1773 #, c-format msgid "" "\n" @@ -4497,36 +4505,36 @@ msgstr[2] "" "Динамічний сегмент містить %lu записів:\n" " Адр: %#0* Зміщення: %#08 Пос. на розділ: [%2u] '%s'\n" -#: src/readelf.c:1778 +#: src/readelf.c:1783 msgid " Type Value\n" msgstr " Тип Значення\n" -#: src/readelf.c:1802 +#: src/readelf.c:1807 #, c-format msgid "Shared library: [%s]\n" msgstr "Спільна бібліотека: [%s]\n" -#: src/readelf.c:1807 +#: src/readelf.c:1812 #, c-format msgid "Library soname: [%s]\n" msgstr "Назва so бібліотеки: [%s]\n" -#: src/readelf.c:1812 +#: src/readelf.c:1817 #, c-format msgid "Library rpath: [%s]\n" msgstr "Rpath бібліотеки: [%s]\n" -#: src/readelf.c:1817 +#: src/readelf.c:1822 #, c-format msgid "Library runpath: [%s]\n" msgstr "Runpath бібліотеки: [%s]\n" -#: src/readelf.c:1837 +#: src/readelf.c:1842 #, c-format msgid "% (bytes)\n" msgstr "% (байт)\n" -#: src/readelf.c:1950 src/readelf.c:2140 +#: src/readelf.c:1955 src/readelf.c:2145 #, c-format msgid "" "\n" @@ -4535,7 +4543,7 @@ msgstr "" "\n" "Некоректна таблиця символів за зміщенням %#0\n" -#: src/readelf.c:1968 src/readelf.c:2158 +#: src/readelf.c:1973 src/readelf.c:2163 #, c-format msgid "" "\n" @@ -4564,7 +4572,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:1983 src/readelf.c:2173 +#: src/readelf.c:1988 src/readelf.c:2178 #, c-format msgid "" "\n" @@ -4582,30 +4590,30 @@ msgstr[2] "" "\n" "Розділ пересування [%2u] «%s» за зміщенням %#0 містить %d записів:\n" -#: src/readelf.c:1993 +#: src/readelf.c:1998 msgid " Offset Type Value Name\n" msgstr " Зміщення Тип Значення Назва\n" -#: src/readelf.c:1995 +#: src/readelf.c:2000 msgid " Offset Type Value Name\n" msgstr " Зміщення Тип Значення Назва\n" -#: src/readelf.c:2048 src/readelf.c:2059 src/readelf.c:2072 src/readelf.c:2093 -#: src/readelf.c:2105 src/readelf.c:2239 src/readelf.c:2251 src/readelf.c:2265 -#: src/readelf.c:2287 src/readelf.c:2300 +#: 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 msgid "" msgstr "<НЕКОРЕКТНЕ ПЕРЕМІЩЕННЯ>" -#: src/readelf.c:2183 +#: src/readelf.c:2188 msgid " Offset Type Value Addend Name\n" msgstr " Зміщення Тип Значення Назва додатка\n" -#: src/readelf.c:2185 +#: src/readelf.c:2190 msgid " Offset Type Value Addend Name\n" msgstr "" " Зміщення Тип Значення Назва додатка\n" -#: src/readelf.c:2423 +#: src/readelf.c:2428 #, c-format msgid "" "\n" @@ -4623,7 +4631,7 @@ msgstr[2] "" "\n" "Таблиця символів [%2u] «%s» містить %u записів:\n" -#: src/readelf.c:2428 +#: src/readelf.c:2433 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" @@ -4631,33 +4639,33 @@ msgstr[0] " %lu лок. символ Таблиця символів: [%2u] « msgstr[1] " %lu лок. символи Таблиця символів: [%2u] «%s»\n" msgstr[2] " %lu лок. символів Таблиця символів: [%2u] «%s»\n" -#: src/readelf.c:2436 +#: src/readelf.c:2441 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " №№ Знач. Роз. Тип Зв’яз Вид. Інд Назва\n" -#: src/readelf.c:2438 +#: src/readelf.c:2443 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " №№ Знач. Роз. Тип Зв’яз Вид. Інд Назва\n" -#: src/readelf.c:2458 +#: src/readelf.c:2463 #, c-format msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -#: src/readelf.c:2546 +#: src/readelf.c:2551 #, c-format msgid "bad dynamic symbol" msgstr "помилковий динамічний символ" -#: src/readelf.c:2628 +#: src/readelf.c:2633 msgid "none" msgstr "немає" -#: src/readelf.c:2645 +#: src/readelf.c:2650 msgid "| " msgstr "| <невідомо>" -#: src/readelf.c:2676 +#: src/readelf.c:2681 #, c-format msgid "" "\n" @@ -4680,17 +4688,17 @@ msgstr[2] "" "Розділ потреби у версіях [%2u] «%s», що містить %d записів:\n" " Адр.: %#0* Зміщ.: %#08 Посилання на розділ: [%2u] «%s»\n" -#: src/readelf.c:2697 +#: src/readelf.c:2702 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Версія: %hu Файл: %s Кть: %hu\n" -#: src/readelf.c:2710 +#: src/readelf.c:2715 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Назва: %s Прап: %s Версія: %hu\n" -#: src/readelf.c:2753 +#: src/readelf.c:2758 #, c-format msgid "" "\n" @@ -4713,18 +4721,18 @@ msgstr[2] "" "Розділ визначення версії [%2u] «%s», що містить %d записів:\n" " Адр.: %#0* Зміщ.: %#08 Посилання на розділ: [%2u] «%s»\n" -#: src/readelf.c:2781 +#: src/readelf.c:2786 #, 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:2796 +#: src/readelf.c:2801 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: батьківський %d: %s\n" #. Print the header. -#: src/readelf.c:3057 +#: src/readelf.c:3062 #, c-format msgid "" "\n" @@ -4747,15 +4755,15 @@ msgstr[2] "" "Розділ символів версій [%2u] «%s», що містить %d записів:\n" " Адр.: %#0* Зміщ.: %#08 Посилання на розділ: [%2u] «%s»" -#: src/readelf.c:3085 +#: src/readelf.c:3090 msgid " 0 *local* " msgstr " 0 *локальний* " -#: src/readelf.c:3090 +#: src/readelf.c:3095 msgid " 1 *global* " msgstr " 1 *загальний* " -#: src/readelf.c:3132 +#: src/readelf.c:3137 #, c-format msgid "" "\n" @@ -4783,22 +4791,22 @@ msgstr[2] "" "блоками):\n" " Адр.: %#0* Зміщ.: %#08 Посилання на розділ: [%2u] «%s»\n" -#: src/readelf.c:3154 +#: src/readelf.c:3159 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " Довжина Номер % від загал. Покриття\n" -#: src/readelf.c:3156 +#: src/readelf.c:3161 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3163 +#: src/readelf.c:3168 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3176 +#: src/readelf.c:3181 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4807,37 +4815,37 @@ msgstr "" " Середня кількість тестів: успішний пошук: %f\n" "\t\t\t неуспішний пошук: %f\n" -#: src/readelf.c:3194 src/readelf.c:3258 src/readelf.c:3324 +#: src/readelf.c:3199 src/readelf.c:3263 src/readelf.c:3329 #, c-format msgid "cannot get data for section %d: %s" msgstr "не вдалося отримати дані для розділу %d: %s" -#: src/readelf.c:3202 +#: src/readelf.c:3207 #, c-format msgid "invalid data in sysv.hash section %d" msgstr "некоректні дані у розділі sysv.hash %d" -#: src/readelf.c:3231 +#: src/readelf.c:3236 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "некоректні дані у розділі sysv.hash %d" -#: src/readelf.c:3266 +#: src/readelf.c:3271 #, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "некоректні дані у розділі sysv.hash64 %d" -#: src/readelf.c:3297 +#: src/readelf.c:3302 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "некоректні дані у розділі sysv.hash64 %d" -#: src/readelf.c:3333 +#: src/readelf.c:3338 #, c-format msgid "invalid data in gnu.hash section %d" msgstr "некоректні дані у розділі gnu.hash %d" -#: src/readelf.c:3400 +#: src/readelf.c:3405 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4847,7 +4855,7 @@ msgstr "" " Розмір бітової маски: %zu байтів %%% встановлених бітів зсув " "2-го хешу: %u\n" -#: src/readelf.c:3489 +#: src/readelf.c:3494 #, c-format msgid "" "\n" @@ -4868,7 +4876,7 @@ msgstr[2] "" "Розділ списку бібліотек [%2zu] «%s» за зміщенням %#0 містить %d " "записів:\n" -#: src/readelf.c:3503 +#: src/readelf.c:3508 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4876,7 +4884,7 @@ msgstr "" " Бібліотека Часовий штамп Версія суми " "Прапорці" -#: src/readelf.c:3553 +#: src/readelf.c:3558 #, c-format msgid "" "\n" @@ -4887,102 +4895,102 @@ msgstr "" "Розділ атрибутів об’єктів [%2zu] «%s» з % байтів за зміщенням " "%#0:\n" -#: src/readelf.c:3570 +#: src/readelf.c:3575 msgid " Owner Size\n" msgstr " Власник Розмір\n" -#: src/readelf.c:3599 +#: src/readelf.c:3604 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3638 +#: src/readelf.c:3643 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3643 +#: src/readelf.c:3648 #, c-format msgid " File: %11\n" msgstr " Файл: %11\n" -#: src/readelf.c:3692 +#: src/readelf.c:3697 #, c-format msgid " %s: %, %s\n" msgstr " %s: %, %s\n" -#: src/readelf.c:3695 +#: src/readelf.c:3700 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3698 +#: src/readelf.c:3703 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3708 +#: src/readelf.c:3713 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3711 +#: src/readelf.c:3716 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3781 +#: src/readelf.c:3786 #, fuzzy, c-format msgid "sprintf failure" msgstr "помилка mprotect" -#: src/readelf.c:4263 +#: src/readelf.c:4268 msgid "empty block" msgstr "порожній блок" -#: src/readelf.c:4266 +#: src/readelf.c:4271 #, c-format msgid "%zu byte block:" msgstr "%zu-байтовий блок:" -#: src/readelf.c:4744 +#: src/readelf.c:4749 #, fuzzy, c-format msgid "%*s[%2] %s \n" msgstr "%*s[%4] %s <ОБРІЗАНО>\n" -#: src/readelf.c:4808 +#: src/readelf.c:4813 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# використано з різними розмірами адрес" -#: src/readelf.c:4815 +#: src/readelf.c:4820 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# використано з різними розмірами зміщень" -#: src/readelf.c:4822 +#: src/readelf.c:4827 #, c-format msgid "%s %# used with different base addresses" msgstr "%s %# використано з різними базовими адресами" -#: src/readelf.c:4829 +#: src/readelf.c:4834 #, fuzzy, c-format msgid "%s %# used with different attribute %s and %s" msgstr "%s %# використано з різними розмірами адрес" -#: src/readelf.c:4926 +#: src/readelf.c:4931 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <НЕВИКОРИСТОВУВАНІ ДАНІ У РЕШТІ РОЗДІЛУ>\n" -#: src/readelf.c:4934 +#: src/readelf.c:4939 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] <НЕВИКОРИСТОВУВАНІ ДАНІ> ... % байтів ...\n" -#: src/readelf.c:5012 +#: src/readelf.c:5017 #, c-format msgid "" "\n" @@ -4993,7 +5001,7 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" " [ Код]\n" -#: src/readelf.c:5020 +#: src/readelf.c:5025 #, c-format msgid "" "\n" @@ -5002,20 +5010,20 @@ msgstr "" "\n" "Розділ скорочень за зміщенням %:\n" -#: src/readelf.c:5033 +#: src/readelf.c:5038 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** помилка під час читання скорочення: %s\n" -#: src/readelf.c:5049 +#: src/readelf.c:5054 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] зміщення: %, дочірній: %s, мітка: %s\n" -#: src/readelf.c:5082 src/readelf.c:5391 src/readelf.c:5557 src/readelf.c:5942 -#: src/readelf.c:6543 src/readelf.c:8184 src/readelf.c:8854 src/readelf.c:9290 -#: src/readelf.c:9534 src/readelf.c:9699 src/readelf.c:10060 -#: src/readelf.c:10118 +#: 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:8870 src/readelf.c:9306 +#: src/readelf.c:9551 src/readelf.c:9717 src/readelf.c:10104 +#: src/readelf.c:10164 #, c-format msgid "" "\n" @@ -5024,56 +5032,56 @@ msgstr "" "\n" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" -#: src/readelf.c:5095 +#: src/readelf.c:5100 #, fuzzy, c-format msgid "cannot get .debug_addr section data: %s" msgstr "не вдалося отримати дані розділу: %s" -#: src/readelf.c:5195 src/readelf.c:5219 src/readelf.c:5602 src/readelf.c:8899 +#: src/readelf.c:5200 src/readelf.c:5224 src/readelf.c:5608 src/readelf.c:8915 #, fuzzy, c-format msgid " Length: %8\n" msgstr "" "\n" " Довжина: %6\n" -#: src/readelf.c:5197 src/readelf.c:5234 src/readelf.c:5615 src/readelf.c:8912 +#: src/readelf.c:5202 src/readelf.c:5239 src/readelf.c:5621 src/readelf.c:8928 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " версія DWARF: %6\n" -#: src/readelf.c:5198 src/readelf.c:5243 src/readelf.c:5624 src/readelf.c:8921 +#: src/readelf.c:5203 src/readelf.c:5248 src/readelf.c:5630 src/readelf.c:8937 #, fuzzy, c-format msgid " Address size: %8\n" msgstr " Розмір адреси: %6\n" -#: src/readelf.c:5200 src/readelf.c:5253 src/readelf.c:5634 src/readelf.c:8931 +#: src/readelf.c:5205 src/readelf.c:5258 src/readelf.c:5640 src/readelf.c:8947 #, fuzzy, c-format msgid " Segment size: %8\n" msgstr "" " Розмір сегмента: %6\n" "\n" -#: src/readelf.c:5238 src/readelf.c:5619 src/readelf.c:8916 src/readelf.c:10250 +#: src/readelf.c:5243 src/readelf.c:5625 src/readelf.c:8932 src/readelf.c:10296 #, fuzzy, c-format msgid "Unknown version" msgstr "невідома версія" -#: src/readelf.c:5248 src/readelf.c:5461 src/readelf.c:5629 src/readelf.c:8926 +#: src/readelf.c:5253 src/readelf.c:5466 src/readelf.c:5635 src/readelf.c:8942 #, c-format msgid "unsupported address size" msgstr "непідтримуваний розмір адреси" -#: src/readelf.c:5259 src/readelf.c:5472 src/readelf.c:5639 src/readelf.c:8936 +#: src/readelf.c:5264 src/readelf.c:5477 src/readelf.c:5645 src/readelf.c:8952 #, c-format msgid "unsupported segment size" msgstr "непідтримуваний розмір сегмента" -#: src/readelf.c:5312 src/readelf.c:5386 +#: src/readelf.c:5317 src/readelf.c:5391 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "не вдалося отримати дані get .debug_aranges: %s" -#: src/readelf.c:5327 +#: src/readelf.c:5332 #, c-format msgid "" "\n" @@ -5091,12 +5099,12 @@ msgstr[2] "" "\n" "Розділ DWARF [%2zu] «%s» за зміщенням %# містить %zu записів:\n" -#: src/readelf.c:5358 +#: src/readelf.c:5363 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5360 +#: src/readelf.c:5365 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -5104,7 +5112,7 @@ msgstr "" " [%*zu] початок: %0#*, довжина: %5, зміщення CU DIE: " "%6\n" -#: src/readelf.c:5404 src/readelf.c:8211 +#: src/readelf.c:5409 src/readelf.c:8226 #, c-format msgid "" "\n" @@ -5113,13 +5121,13 @@ msgstr "" "\n" "Таблиця за зміщенням %zu:\n" -#: src/readelf.c:5408 src/readelf.c:5583 src/readelf.c:6567 src/readelf.c:8222 -#: src/readelf.c:8880 +#: src/readelf.c:5413 src/readelf.c:5589 src/readelf.c:6573 src/readelf.c:8237 +#: src/readelf.c:8896 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "некоректні дані у розділі [%zu] «%s»" -#: src/readelf.c:5424 +#: src/readelf.c:5429 #, c-format msgid "" "\n" @@ -5128,27 +5136,27 @@ msgstr "" "\n" " Довжина: %6\n" -#: src/readelf.c:5436 +#: src/readelf.c:5441 #, c-format msgid " DWARF version: %6\n" msgstr " версія DWARF: %6\n" -#: src/readelf.c:5440 +#: src/readelf.c:5445 #, c-format msgid "unsupported aranges version" msgstr "непідтримувана версія aranges" -#: src/readelf.c:5451 +#: src/readelf.c:5456 #, c-format msgid " CU offset: %6\n" msgstr " зміщення CU: %6\n" -#: src/readelf.c:5457 +#: src/readelf.c:5462 #, c-format msgid " Address size: %6\n" msgstr " Розмір адреси: %6\n" -#: src/readelf.c:5468 +#: src/readelf.c:5473 #, c-format msgid "" " Segment size: %6\n" @@ -5157,111 +5165,111 @@ msgstr "" " Розмір сегмента: %6\n" "\n" -#: src/readelf.c:5523 +#: src/readelf.c:5528 #, c-format msgid " %zu padding bytes\n" msgstr " %zu байтів доповнення\n" -#: src/readelf.c:5566 +#: src/readelf.c:5572 #, fuzzy, c-format msgid "cannot get .debug_rnglists content: %s" msgstr "не вдалося отримати дані .debug_ranges: %s" -#: src/readelf.c:5589 src/readelf.c:8886 +#: src/readelf.c:5595 src/readelf.c:8902 #, fuzzy, c-format msgid "" "Table at Offset 0x%:\n" "\n" msgstr " зміщення .debug_line: 0x%\n" -#: src/readelf.c:5644 src/readelf.c:8941 +#: src/readelf.c:5650 src/readelf.c:8957 #, fuzzy, c-format msgid " Offset entries: %8\n" msgstr " Довжина зміщення: %\n" -#: src/readelf.c:5660 src/readelf.c:8957 +#: src/readelf.c:5666 src/readelf.c:8973 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5662 src/readelf.c:8959 +#: src/readelf.c:5668 src/readelf.c:8975 #, c-format msgid " CU [%6] base: " msgstr "" -#: src/readelf.c:5668 src/readelf.c:8965 +#: src/readelf.c:5674 src/readelf.c:8981 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5679 src/readelf.c:8976 +#: src/readelf.c:5685 src/readelf.c:8992 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5683 src/readelf.c:8980 +#: src/readelf.c:5689 src/readelf.c:8996 #, fuzzy, c-format msgid " Offsets starting at 0x%:\n" msgstr " Зміщення: 0x%\n" -#: src/readelf.c:5735 +#: src/readelf.c:5741 #, fuzzy, c-format msgid "invalid range list data" msgstr "некоректні дані" -#: src/readelf.c:5920 src/readelf.c:9268 +#: src/readelf.c:5926 src/readelf.c:9284 #, fuzzy, c-format msgid "" " %zu padding bytes\n" "\n" msgstr " %zu байтів доповнення\n" -#: src/readelf.c:5937 +#: src/readelf.c:5943 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "не вдалося отримати дані .debug_ranges: %s" -#: src/readelf.c:5973 src/readelf.c:9323 +#: src/readelf.c:5979 src/readelf.c:9339 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:5975 src/readelf.c:9325 +#: src/readelf.c:5981 src/readelf.c:9341 #, c-format msgid "" "\n" " CU [%6] base: " msgstr "" -#: src/readelf.c:5984 src/readelf.c:9351 src/readelf.c:9377 +#: src/readelf.c:5990 src/readelf.c:9367 src/readelf.c:9393 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:6005 src/readelf.c:9457 +#: src/readelf.c:6011 src/readelf.c:9473 #, fuzzy, c-format msgid "" " [%6tx] base address\n" " " msgstr " [%6tx] базова адреса %s\n" -#: src/readelf.c:6013 src/readelf.c:9465 +#: src/readelf.c:6019 src/readelf.c:9481 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] порожній список\n" -#: src/readelf.c:6268 +#: src/readelf.c:6274 msgid " \n" msgstr " <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:6521 +#: src/readelf.c:6527 #, c-format msgid "cannot get ELF: %s" msgstr "не вдалося отримати ELF: %s" -#: src/readelf.c:6539 +#: src/readelf.c:6545 #, c-format msgid "" "\n" @@ -5270,7 +5278,7 @@ msgstr "" "\n" "Розділ відомостей щодо вікна викликів [%2zu] «%s» за зміщенням %#:\n" -#: src/readelf.c:6589 +#: src/readelf.c:6595 #, c-format msgid "" "\n" @@ -5279,65 +5287,65 @@ msgstr "" "\n" " [%6tx] нульовий переривач\n" -#: src/readelf.c:6682 src/readelf.c:6836 +#: src/readelf.c:6696 src/readelf.c:6850 #, c-format msgid "invalid augmentation length" msgstr "некоректна довжина збільшення" -#: src/readelf.c:6697 +#: src/readelf.c:6711 msgid "FDE address encoding: " msgstr "Кодування адреси FDE: " -#: src/readelf.c:6703 +#: src/readelf.c:6717 msgid "LSDA pointer encoding: " msgstr "Кодування вказівника LSDA: " -#: src/readelf.c:6813 +#: src/readelf.c:6827 #, c-format msgid " (offset: %#)" msgstr " (зміщення: %#)" -#: src/readelf.c:6820 +#: src/readelf.c:6834 #, c-format msgid " (end offset: %#)" msgstr " (зміщення від кінця: %#)" -#: src/readelf.c:6857 +#: src/readelf.c:6871 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sвказівник LSDA: %#\n" -#: src/readelf.c:6942 +#: src/readelf.c:6956 #, fuzzy, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "не вдалося отримати код атрибута: %s" -#: src/readelf.c:6952 +#: src/readelf.c:6966 #, fuzzy, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "не вдалося отримати форму атрибута: %s" -#: src/readelf.c:6974 +#: src/readelf.c:6988 #, fuzzy, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "не вдалося отримати значення атрибута: %s" -#: src/readelf.c:7307 +#: src/readelf.c:7321 #, fuzzy, c-format msgid "invalid file (%): %s" msgstr "некоректний файл" -#: src/readelf.c:7311 +#: src/readelf.c:7325 #, fuzzy, c-format msgid "no srcfiles for CU [%]" msgstr " встановити файл у %\n" -#: src/readelf.c:7315 +#: src/readelf.c:7329 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "не вдалося отримати ELF: %s" -#: src/readelf.c:7538 +#: src/readelf.c:7552 #, c-format msgid "" "\n" @@ -5348,12 +5356,12 @@ msgstr "" "Розділ DWARF [%2zu] «%s» за зміщенням %#:\n" " [Зміщення]\n" -#: src/readelf.c:7588 +#: src/readelf.c:7602 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "не вдалося визначити наступний DIE: %s" -#: src/readelf.c:7607 +#: src/readelf.c:7621 #, fuzzy, c-format msgid "" " Type unit at offset %:\n" @@ -5366,7 +5374,7 @@ msgstr "" "Зміщення: %\n" " Підпис типу: %#, Зміщення типу: %#\n" -#: src/readelf.c:7619 +#: src/readelf.c:7633 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5377,38 +5385,38 @@ msgstr "" " Версія: %, Зміщення розділу скорочень: %, Адреса: %, " "Зміщення: %\n" -#: src/readelf.c:7629 src/readelf.c:7792 +#: src/readelf.c:7643 src/readelf.c:7806 #, c-format msgid " Unit type: %s (%)" msgstr "" -#: src/readelf.c:7656 +#: src/readelf.c:7670 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:7685 +#: src/readelf.c:7699 #, c-format msgid "cannot get DIE offset: %s" msgstr "не вдалося отримати зміщення DIE: %s" -#: src/readelf.c:7694 +#: src/readelf.c:7708 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "" "не вдалося отримати мітку DIE за зміщенням % у розділі «%s»: %s" -#: src/readelf.c:7732 +#: src/readelf.c:7746 #, c-format msgid "cannot get next DIE: %s\n" msgstr "не вдалося визначити наступний DIE: %s\n" -#: src/readelf.c:7740 +#: src/readelf.c:7754 #, c-format msgid "cannot get next DIE: %s" msgstr "не вдалося визначити наступний DIE: %s" -#: src/readelf.c:7784 +#: src/readelf.c:7798 #, fuzzy, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5419,7 +5427,7 @@ msgstr "" " Версія: %, Зміщення розділу скорочень: %, Адреса: %, " "Зміщення: %\n" -#: src/readelf.c:7835 +#: src/readelf.c:7850 #, c-format msgid "" "\n" @@ -5430,18 +5438,18 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" "\n" -#: src/readelf.c:8167 +#: src/readelf.c:8182 #, fuzzy, c-format msgid "unknown form: %s" msgstr "невідома форма %#" -#: src/readelf.c:8198 +#: src/readelf.c:8213 #, c-format msgid "cannot get line data section data: %s" msgstr "не вдалося отримати дані розділу лінійних даних: %s" #. Print what we got so far. -#: src/readelf.c:8300 +#: src/readelf.c:8315 #, fuzzy, c-format msgid "" "\n" @@ -5472,27 +5480,27 @@ msgstr "" "\n" "Коди операцій:\n" -#: src/readelf.c:8322 +#: src/readelf.c:8337 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "не вдалося отримати версію символу: %s" -#: src/readelf.c:8330 +#: src/readelf.c:8345 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "непідтримуваний розмір адреси" -#: src/readelf.c:8338 +#: src/readelf.c:8353 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "не вдалося отримати розділ: %s" -#: src/readelf.c:8348 +#: src/readelf.c:8363 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "некоректні дані зі зміщенням %tu у розділі [%zu] «%s»" -#: src/readelf.c:8363 +#: src/readelf.c:8378 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" @@ -5500,7 +5508,7 @@ msgstr[0] " [%*] %hhu аргумент\n" msgstr[1] " [%*] %hhu аргументи\n" msgstr[2] " [%*] %hhu аргументів\n" -#: src/readelf.c:8374 +#: src/readelf.c:8389 msgid "" "\n" "Directory table:" @@ -5508,12 +5516,12 @@ msgstr "" "\n" "Таблиця каталогу:" -#: src/readelf.c:8380 src/readelf.c:8455 +#: src/readelf.c:8395 src/readelf.c:8470 #, fuzzy, c-format msgid " [" msgstr " PC: " -#: src/readelf.c:8449 +#: src/readelf.c:8464 #, fuzzy msgid "" "\n" @@ -5522,7 +5530,7 @@ msgstr "" "\n" " Таблиця місця виклику:" -#: src/readelf.c:8510 +#: src/readelf.c:8525 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5530,7 +5538,7 @@ msgstr "" "Таблиця назв файлів:\n" " Запис Кат Час Розмір Назва" -#: src/readelf.c:8545 +#: src/readelf.c:8560 msgid "" "\n" "Line number statements:" @@ -5538,120 +5546,120 @@ msgstr "" "\n" "Оператори номерів рядків:" -#: src/readelf.c:8568 +#: src/readelf.c:8583 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "некоректну кількість операцій на інструкцію прирівняно до нуля" -#: src/readelf.c:8602 +#: src/readelf.c:8617 #, fuzzy, c-format msgid " special opcode %u: address+%u = " msgstr " спеціальний код операції %u: адреса+%u = %s, рядок%+d = %zu\n" -#: src/readelf.c:8606 +#: src/readelf.c:8621 #, fuzzy, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr "" " спеціальний код операції %u: адреса+%u = %s, індекс_оп = %u, рядок%+d = " "%zu\n" -#: src/readelf.c:8609 +#: src/readelf.c:8624 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:8627 +#: src/readelf.c:8642 #, c-format msgid " extended opcode %u: " msgstr " розширений код операції %u: " -#: src/readelf.c:8632 +#: src/readelf.c:8647 msgid " end of sequence" msgstr " кінець послідовності" -#: src/readelf.c:8650 +#: src/readelf.c:8665 #, fuzzy, c-format msgid " set address to " msgstr " встановити адресу у значення %s\n" -#: src/readelf.c:8678 +#: src/readelf.c:8693 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" " визначення нового файла: dir=%u, mtime=%, довжина=%, назва=" "%s\n" -#: src/readelf.c:8691 +#: src/readelf.c:8706 #, c-format msgid " set discriminator to %u\n" msgstr " встановити розрізнення для %u\n" #. Unknown, ignore it. -#: src/readelf.c:8696 +#: src/readelf.c:8711 msgid " unknown opcode" msgstr " невідомий код операції" #. Takes no argument. -#: src/readelf.c:8708 +#: src/readelf.c:8723 msgid " copy" msgstr " копія" -#: src/readelf.c:8717 +#: src/readelf.c:8732 #, fuzzy, c-format msgid " advance address by %u to " msgstr " збільшення адреси на %u до %s\n" -#: src/readelf.c:8721 src/readelf.c:8777 +#: src/readelf.c:8736 src/readelf.c:8792 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:8731 +#: src/readelf.c:8746 #, c-format msgid " advance line by constant %d to %\n" msgstr " просувати рядок на сталу %d до %\n" -#: src/readelf.c:8739 +#: src/readelf.c:8754 #, c-format msgid " set file to %\n" msgstr " встановити файл у %\n" -#: src/readelf.c:8749 +#: src/readelf.c:8764 #, c-format msgid " set column to %\n" msgstr " встановити значення стовпчика %\n" -#: src/readelf.c:8756 +#: src/readelf.c:8771 #, c-format msgid " set '%s' to %\n" msgstr " встановити «%s» у %\n" #. Takes no argument. -#: src/readelf.c:8762 +#: src/readelf.c:8777 msgid " set basic block flag" msgstr " встановити прапорець базового блоку" -#: src/readelf.c:8773 +#: src/readelf.c:8788 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr " збільшити адресу на сталу величину %u до %s\n" -#: src/readelf.c:8792 +#: src/readelf.c:8807 #, fuzzy, c-format msgid " advance address by fixed value %u to \n" msgstr " збільшити адресу на фіксовану величину %u до %s\n" #. Takes no argument. -#: src/readelf.c:8802 +#: src/readelf.c:8817 msgid " set prologue end flag" msgstr " встановити прапорець кінця вступу" #. Takes no argument. -#: src/readelf.c:8807 +#: src/readelf.c:8822 msgid " set epilogue begin flag" msgstr " встановити прапорець початку епілогу" -#: src/readelf.c:8816 +#: src/readelf.c:8831 #, c-format msgid " set isa to %u\n" msgstr " встановити isa у %u\n" @@ -5659,7 +5667,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:8825 +#: src/readelf.c:8840 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" @@ -5667,97 +5675,97 @@ msgstr[0] " невідомий код операції з % параме msgstr[1] " невідомий код операції з % параметрами:" msgstr[2] " невідомий код операції з % параметрами:" -#: src/readelf.c:8863 +#: src/readelf.c:8879 #, fuzzy, c-format msgid "cannot get .debug_loclists content: %s" msgstr "не вдалося отримати вміст .debug_loc: %s" -#: src/readelf.c:9032 +#: src/readelf.c:9048 #, fuzzy, c-format msgid "invalid loclists data" msgstr "некоректні дані" -#: src/readelf.c:9285 +#: src/readelf.c:9301 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "не вдалося отримати вміст .debug_loc: %s" -#: src/readelf.c:9492 src/readelf.c:10506 +#: src/readelf.c:9508 src/readelf.c:10552 msgid " \n" msgstr " <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:9546 src/readelf.c:9709 +#: src/readelf.c:9563 src/readelf.c:9726 #, c-format msgid "cannot get macro information section data: %s" msgstr "не вдалося отримати дані розділу відомостей щодо макросів: %s" -#: src/readelf.c:9626 +#: src/readelf.c:9643 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** незавершений рядок наприкінці розділу" -#: src/readelf.c:9649 +#: src/readelf.c:9666 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** пропущено аргумент DW_MACINFO_start_file наприкінці розділу" -#: src/readelf.c:9750 +#: src/readelf.c:9767 #, c-format msgid " Offset: 0x%\n" msgstr " Зміщення: 0x%\n" -#: src/readelf.c:9762 +#: src/readelf.c:9779 #, c-format msgid " Version: %\n" msgstr " Версія: %\n" -#: src/readelf.c:9768 src/readelf.c:10625 +#: src/readelf.c:9785 src/readelf.c:10672 #, c-format msgid " unknown version, cannot parse section\n" msgstr " невідома версія, не вдалося обробити розділ\n" -#: src/readelf.c:9775 -#, c-format -msgid " Flag: 0x%\n" +#: src/readelf.c:9792 +#, fuzzy, c-format +msgid " Flag: 0x%" msgstr " Прапорець: 0x%\n" -#: src/readelf.c:9778 +#: src/readelf.c:9821 #, c-format msgid " Offset length: %\n" msgstr " Довжина зміщення: %\n" -#: src/readelf.c:9786 +#: src/readelf.c:9829 #, c-format msgid " .debug_line offset: 0x%\n" msgstr " зміщення .debug_line: 0x%\n" -#: src/readelf.c:9811 +#: src/readelf.c:9854 #, c-format msgid " extension opcode table, % items:\n" msgstr " таблиця кодів операцій розширень, записів — %:\n" -#: src/readelf.c:9818 +#: src/readelf.c:9861 #, c-format msgid " [%]" msgstr " [%]" -#: src/readelf.c:9830 +#: src/readelf.c:9873 #, c-format msgid " % arguments:" msgstr " % аргументів:" -#: src/readelf.c:9845 +#: src/readelf.c:9888 #, c-format msgid " no arguments." msgstr " немає аргументів." -#: src/readelf.c:10046 +#: src/readelf.c:10089 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" " [%5d] зміщення DIE: %6, зміщення CU DIE: %6, назва: %s\n" -#: src/readelf.c:10088 +#: src/readelf.c:10133 #, c-format msgid "" "\n" @@ -5768,41 +5776,41 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" " %*s Рядок\n" -#: src/readelf.c:10103 +#: src/readelf.c:10148 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** помилка під час читання рядків: %s\n" -#: src/readelf.c:10131 +#: src/readelf.c:10177 #, fuzzy, c-format msgid "cannot get .debug_str_offsets section data: %s" msgstr "не вдалося отримати дані розділу: %s" -#: src/readelf.c:10230 +#: src/readelf.c:10276 #, fuzzy, c-format msgid " Length: %8\n" msgstr "" "\n" " Довжина: %6\n" -#: src/readelf.c:10232 +#: src/readelf.c:10278 #, fuzzy, c-format msgid " Offset size: %8\n" msgstr " Довжина зміщення: %\n" -#: src/readelf.c:10246 +#: src/readelf.c:10292 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " версія DWARF: %6\n" -#: src/readelf.c:10255 +#: src/readelf.c:10301 #, fuzzy, c-format msgid " Padding: %8\n" msgstr "" "\n" " Довжина: %6\n" -#: src/readelf.c:10309 +#: src/readelf.c:10355 #, c-format msgid "" "\n" @@ -5811,7 +5819,7 @@ msgstr "" "\n" "Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10411 +#: src/readelf.c:10457 #, c-format msgid "" "\n" @@ -5820,22 +5828,22 @@ msgstr "" "\n" "Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10434 +#: src/readelf.c:10480 #, c-format msgid " LPStart encoding: %#x " msgstr " Кодування LPStart: %#x " -#: src/readelf.c:10446 +#: src/readelf.c:10492 #, c-format msgid " TType encoding: %#x " msgstr " Кодування TType: %#x " -#: src/readelf.c:10461 +#: src/readelf.c:10507 #, c-format msgid " Call site encoding: %#x " msgstr " Кодування місця виклику:%#x " -#: src/readelf.c:10474 +#: src/readelf.c:10520 msgid "" "\n" " Call site table:" @@ -5843,7 +5851,7 @@ msgstr "" "\n" " Таблиця місця виклику:" -#: src/readelf.c:10488 +#: src/readelf.c:10534 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5856,12 +5864,12 @@ msgstr "" " Місце застосування: %#\n" " Дія: %u\n" -#: src/readelf.c:10561 +#: src/readelf.c:10607 #, c-format msgid "invalid TType encoding" msgstr "некоректне кодування TType" -#: src/readelf.c:10587 +#: src/readelf.c:10634 #, c-format msgid "" "\n" @@ -5870,37 +5878,37 @@ msgstr "" "\n" "Розділ GDB [%2zu] «%s» за зміщенням %# містить % байтів:\n" -#: src/readelf.c:10616 +#: src/readelf.c:10663 #, c-format msgid " Version: %\n" msgstr " Версія: %\n" -#: src/readelf.c:10634 +#: src/readelf.c:10681 #, c-format msgid " CU offset: %#\n" msgstr " зміщення CU: %#\n" -#: src/readelf.c:10641 +#: src/readelf.c:10688 #, c-format msgid " TU offset: %#\n" msgstr " зміщення TU: %#\n" -#: src/readelf.c:10648 +#: src/readelf.c:10695 #, c-format msgid " address offset: %#\n" msgstr " зміщення адреси: %#\n" -#: src/readelf.c:10655 +#: src/readelf.c:10702 #, c-format msgid " symbol offset: %#\n" msgstr " зміщення символу: %#\n" -#: src/readelf.c:10662 +#: src/readelf.c:10709 #, c-format msgid " constant offset: %#\n" msgstr " стале зміщення: %#\n" -#: src/readelf.c:10676 +#: src/readelf.c:10723 #, c-format msgid "" "\n" @@ -5909,7 +5917,7 @@ msgstr "" "\n" " Список CU зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:10701 +#: src/readelf.c:10748 #, c-format msgid "" "\n" @@ -5918,7 +5926,7 @@ msgstr "" "\n" " Список TU зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:10730 +#: src/readelf.c:10777 #, c-format msgid "" "\n" @@ -5927,7 +5935,7 @@ msgstr "" "\n" " Список адрес зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:10762 +#: src/readelf.c:10809 #, c-format msgid "" "\n" @@ -5936,18 +5944,18 @@ msgstr "" "\n" " Таблиця символів за зміщенням %# містить %zu позицій:\n" -#: src/readelf.c:10900 +#: src/readelf.c:10947 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "не вдалося отримати дескриптор контексту зневаджування: %s" -#: src/readelf.c:11263 src/readelf.c:11885 src/readelf.c:11996 -#: src/readelf.c:12054 +#: src/readelf.c:11310 src/readelf.c:11932 src/readelf.c:12043 +#: src/readelf.c:12101 #, c-format msgid "cannot convert core note data: %s" msgstr "не вдалося перетворити дані запису ядра: %s" -#: src/readelf.c:11626 +#: src/readelf.c:11673 #, c-format msgid "" "\n" @@ -5956,21 +5964,21 @@ msgstr "" "\n" "%*s... <повторюється %u разів> ..." -#: src/readelf.c:12133 +#: src/readelf.c:12180 msgid " Owner Data size Type\n" msgstr " Власник Розм. даних Тип\n" -#: src/readelf.c:12151 +#: src/readelf.c:12209 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:12201 +#: src/readelf.c:12261 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "не вдалося отримати вміст розділу записів: %s" -#: src/readelf.c:12228 +#: src/readelf.c:12288 #, c-format msgid "" "\n" @@ -5980,7 +5988,7 @@ msgstr "" "Розділ записів (note) [%2zu] «%s» з % байтів за зміщенням " "%#0:\n" -#: src/readelf.c:12251 +#: src/readelf.c:12311 #, c-format msgid "" "\n" @@ -5989,7 +5997,7 @@ msgstr "" "\n" "Сегмент записів з % байтів за зміщенням %#0:\n" -#: src/readelf.c:12297 +#: src/readelf.c:12358 #, c-format msgid "" "\n" @@ -5998,12 +6006,12 @@ msgstr "" "\n" "У розділі [%zu] «%s» не міститься даних для створення дампу.\n" -#: src/readelf.c:12324 src/readelf.c:12375 +#: src/readelf.c:12385 src/readelf.c:12436 #, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "не вдалося отримати дані для розділу [%zu] «%s»: %s" -#: src/readelf.c:12329 +#: src/readelf.c:12390 #, c-format msgid "" "\n" @@ -6012,7 +6020,7 @@ msgstr "" "\n" "Шіст. дамп розділу [%zu] «%s», % байтів за зміщенням %#0:\n" -#: src/readelf.c:12334 +#: src/readelf.c:12395 #, fuzzy, c-format msgid "" "\n" @@ -6022,7 +6030,7 @@ msgstr "" "\n" "Шіст. дамп розділу [%zu] «%s», % байтів за зміщенням %#0:\n" -#: src/readelf.c:12348 +#: src/readelf.c:12409 #, c-format msgid "" "\n" @@ -6031,7 +6039,7 @@ msgstr "" "\n" "У розділі [%zu] «%s» не міститься рядків для створення дампу.\n" -#: src/readelf.c:12380 +#: src/readelf.c:12441 #, c-format msgid "" "\n" @@ -6040,7 +6048,7 @@ msgstr "" "\n" "Розділ рядків [%zu] «%s» містить % байтів за зміщенням %#0:\n" -#: src/readelf.c:12385 +#: src/readelf.c:12446 #, fuzzy, c-format msgid "" "\n" @@ -6050,7 +6058,7 @@ msgstr "" "\n" "Розділ рядків [%zu] «%s» містить % байтів за зміщенням %#0:\n" -#: src/readelf.c:12434 +#: src/readelf.c:12495 #, c-format msgid "" "\n" @@ -6059,7 +6067,7 @@ msgstr "" "\n" "розділу [%lu] не існує" -#: src/readelf.c:12463 +#: src/readelf.c:12524 #, c-format msgid "" "\n" @@ -6068,12 +6076,12 @@ msgstr "" "\n" "розділу «%s» не існує" -#: src/readelf.c:12520 +#: src/readelf.c:12581 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "не вдалося отримати покажчик символів архіву «%s»: %s" -#: src/readelf.c:12523 +#: src/readelf.c:12584 #, c-format msgid "" "\n" @@ -6082,7 +6090,7 @@ msgstr "" "\n" "У архіві «%s» немає покажчика символів\n" -#: src/readelf.c:12527 +#: src/readelf.c:12588 #, c-format msgid "" "\n" @@ -6091,12 +6099,12 @@ msgstr "" "\n" "Покажчик архіву «%s» містить %zu записів:\n" -#: src/readelf.c:12545 +#: src/readelf.c:12606 #, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "не вдалося видобути елемент за зміщенням %zu у «%s»: %s" -#: src/readelf.c:12550 +#: src/readelf.c:12611 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Елемент архіву «%s» містить:\n" @@ -6163,12 +6171,12 @@ msgstr "Некоректна основа числення: %s" msgid "%s: file format not recognized" msgstr "%s: не вдалося розпізнати формат файла" -#: src/size.c:416 src/size.c:549 +#: src/size.c:418 src/size.c:551 #, c-format msgid " (ex %s)" msgstr " (прикл. %s)" -#: src/size.c:574 +#: src/size.c:576 msgid "(TOTALS)\n" msgstr "(ЗАГАЛОМ)\n" @@ -6377,31 +6385,31 @@ msgstr "помилка mprotect" msgid "Skipping section %zd '%s' data outside file" msgstr "Пропускаємо дані %zd «%s» поза файлом" -#: src/strip.c:70 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "Вивести дані після вилучення до ФАЙЛа" -#: src/strip.c:71 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "Видобути вилучені розділи до ФАЙЛа" -#: src/strip.c:72 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "Вбудувати назву ФАЙЛа замість аргументу -f" -#: src/strip.c:76 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "Вилучити всі символи зневаджування" -#: src/strip.c:80 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "Вилучити заголовки розділів (не рекомендовано)" -#: src/strip.c:82 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "Скопіювати часові позначки зміни/доступу до виведених даних" -#: src/strip.c:84 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " @@ -6411,64 +6419,84 @@ msgstr "" "вилучені розділи було розташовано у діагностичному файлі (стосується лише " "файлів ET_REL, скасувати дію неможливо, потребує параметра -f)" -#: src/strip.c:86 +#: src/strip.c:87 +msgid "" +"Similar to --reloc-debug-sections, but resolve all trivial relocations " +"between debug sections in place. No other stripping is performed (operation " +"is not reversable, incompatible with -f, -g, --remove-comment and --remove-" +"section)" +msgstr "" + +#: src/strip.c:89 msgid "Remove .comment section" msgstr "Вилучити розділ .comment" -#: src/strip.c:87 +#: src/strip.c:90 msgid "" "Remove the named section. SECTION is an extended wildcard pattern. May be " "given more than once. Only non-allocated sections can be removed." msgstr "" -#: src/strip.c:88 +#: src/strip.c:91 msgid "" "Keep the named section. SECTION is an extended wildcard pattern. May be " "given more than once." msgstr "" #. Short description of program. -#: src/strip.c:95 +#: src/strip.c:98 msgid "Discard symbols from object files." msgstr "Відкинути символи з об’єктних файлів" -#: src/strip.c:241 +#: src/strip.c:247 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "--reloc-debug-sections використано без -f" -#: src/strip.c:255 +#: src/strip.c:253 +#, c-format +msgid "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" +msgstr "" + +#: src/strip.c:267 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "" "Разом з «-o» або «-f» можна використовувати лише один файл вхідних даних" -#: src/strip.c:278 +#: src/strip.c:290 #, c-format msgid "-f option specified twice" msgstr "параметр -f вказано двічі" -#: src/strip.c:287 +#: src/strip.c:299 #, c-format msgid "-F option specified twice" msgstr "параметр -F вказано двічі" -#: src/strip.c:346 +#: src/strip.c:362 #, fuzzy, c-format msgid "cannot both keep and remove .comment section" msgstr "Вилучити розділ .comment" -#: src/strip.c:371 src/strip.c:395 +#: src/strip.c:574 +#, c-format +msgid "bad relocation" +msgstr "помилкове пересування" + +#: src/strip.c:726 src/strip.c:750 #, c-format msgid "cannot stat input file '%s'" msgstr "не вдалося отримати дані з вхідного файла «%s» за допомогою stat" -#: src/strip.c:385 +#: src/strip.c:740 #, c-format msgid "while opening '%s'" msgstr "під час спроби відкриття «%s»" -#: src/strip.c:423 +#: src/strip.c:778 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "" @@ -6481,132 +6509,132 @@ msgstr "" #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:435 +#: src/strip.c:790 #, c-format msgid "%s: no support for stripping archive" msgstr "%s: підтримки вилучення додаткового вмісту з архіву не передбачено" -#: src/strip.c:534 +#: src/strip.c:1001 #, c-format msgid "cannot open EBL backend" msgstr "не вдалося відкрити канал сервера EBL" -#: src/strip.c:579 +#: src/strip.c:1046 #, c-format msgid "cannot get number of phdrs" msgstr "не вдалося отримати кількість phdr" -#: src/strip.c:595 src/strip.c:619 -#, c-format -msgid "cannot create new file '%s': %s" +#: src/strip.c:1060 src/strip.c:1103 +#, fuzzy, c-format +msgid "cannot create new ehdr for file '%s': %s" +msgstr "не вдалося створити файл «%s»: %s" + +#: src/strip.c:1070 src/strip.c:1113 +#, fuzzy, c-format +msgid "cannot create new phdr for file '%s': %s" msgstr "не вдалося створити файл «%s»: %s" -#: src/strip.c:701 +#: src/strip.c:1194 #, c-format msgid "illformed file '%s'" msgstr "помилкове форматування файла «%s»" -#: src/strip.c:711 +#: src/strip.c:1204 #, fuzzy, c-format msgid "Cannot remove allocated section '%s'" msgstr "не вдалося розмістити PLT-розділ: %s" -#: src/strip.c:720 +#: src/strip.c:1213 #, fuzzy, c-format msgid "Cannot both keep and remove section '%s'" msgstr "не вдалося додати новий розділ: %s" -#: src/strip.c:1076 src/strip.c:1210 +#: src/strip.c:1573 src/strip.c:1688 #, c-format msgid "while generating output file: %s" msgstr "під час спроби створення файла з виведеними даними: %s" -#: src/strip.c:1141 +#: src/strip.c:1637 #, fuzzy, c-format -msgid "%s: error while getting shdrstrndx: %s" +msgid "%s: error while updating ELF header: %s" msgstr "%s: помилка під час створення заголовка ELF: %s" -#: src/strip.c:1157 +#: src/strip.c:1646 #, fuzzy, c-format -msgid "%s: error getting zero section: %s" -msgstr "%s: помилка під час читання файла: %s" +msgid "%s: error while getting shdrstrndx: %s" +msgstr "%s: помилка під час створення заголовка ELF: %s" -#: src/strip.c:1166 +#: src/strip.c:1654 src/strip.c:2534 #, fuzzy, c-format -msgid "%s: error while updating zero section: %s" -msgstr "%s: помилка під час читання файла: %s" - -#: src/strip.c:1176 src/strip.c:2292 -#, c-format -msgid "%s: error while creating ELF header: %s" +msgid "%s: error updating shdrstrndx: %s" msgstr "%s: помилка під час створення заголовка ELF: %s" -#: src/strip.c:1193 +#: src/strip.c:1671 #, c-format msgid "while preparing output for '%s'" msgstr "під час приготування виведених даних для «%s»" -#: src/strip.c:1255 src/strip.c:1318 +#: src/strip.c:1733 src/strip.c:1796 #, c-format msgid "while create section header section: %s" msgstr "під час створення розділу заголовка розділу: %s" -#: src/strip.c:1264 +#: src/strip.c:1742 #, c-format msgid "cannot allocate section data: %s" msgstr "не вдалося розмістити дані розділу: %s" -#: src/strip.c:1330 +#: src/strip.c:1808 #, c-format msgid "while create section header string table: %s" msgstr "під час створення таблиці рядків заголовка розділу: %s" -#: src/strip.c:1337 +#: src/strip.c:1815 #, fuzzy, c-format msgid "no memory to create section header string table" msgstr "під час створення таблиці рядків заголовка розділу: %s" -#: src/strip.c:1547 +#: src/strip.c:2027 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2078 -#, c-format -msgid "bad relocation" -msgstr "помилкове пересування" - -#: src/strip.c:2203 src/strip.c:2316 +#: src/strip.c:2450 src/strip.c:2558 #, c-format msgid "while writing '%s': %s" msgstr "під час запису «%s»: %s" -#: src/strip.c:2214 +#: src/strip.c:2461 #, c-format msgid "while creating '%s'" msgstr "під час спроби створення «%s»" -#: src/strip.c:2237 +#: src/strip.c:2484 #, c-format msgid "while computing checksum for debug information" msgstr "під час обчислення контрольної суми для діагностичних даних" -#: src/strip.c:2301 +#: src/strip.c:2525 +#, c-format +msgid "%s: error while creating ELF header: %s" +msgstr "%s: помилка під час створення заголовка ELF: %s" + +#: src/strip.c:2543 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: помилка під час читання файла: %s" -#: src/strip.c:2341 src/strip.c:2361 +#: src/strip.c:2583 src/strip.c:2603 #, c-format msgid "while writing '%s'" msgstr "під час спроби запису «%s»" -#: src/strip.c:2398 src/strip.c:2405 +#: src/strip.c:2640 src/strip.c:2647 #, c-format msgid "error while finishing '%s': %s" msgstr "помилка під час завершення «%s»: %s" -#: src/strip.c:2422 src/strip.c:2498 +#: src/strip.c:2664 src/strip.c:2740 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "не вдалося встановити права доступу та дату зміни «%s»" @@ -6699,193 +6727,223 @@ msgstr "не вдалося створити заголовок ELF: %s" msgid "cannot get shdrstrndx:%s" msgstr "не вдалося отримати розділ: %s" -#: src/unstrip.c:257 +#: src/unstrip.c:248 src/unstrip.c:2034 +#, c-format +msgid "cannot get ELF header: %s" +msgstr "не вдалося отримати заголовок ELF: %s" + +#: src/unstrip.c:258 #, fuzzy, c-format msgid "cannot get new zero section: %s" msgstr "не вдалося отримати розділ: %s" -#: src/unstrip.c:260 +#: src/unstrip.c:261 #, fuzzy, c-format msgid "cannot update new zero section: %s" msgstr "не вдалося оновити пересування: %s" -#: src/unstrip.c:264 +#: src/unstrip.c:265 #, c-format msgid "cannot copy ELF header: %s" msgstr "не вдалося скопіювати заголовок ELF: %s" -#: src/unstrip.c:268 src/unstrip.c:1962 src/unstrip.c:2005 +#: src/unstrip.c:269 src/unstrip.c:2052 src/unstrip.c:2095 #, c-format msgid "cannot get number of program headers: %s" msgstr "не вдалося отримати кількість заголовків програми: %s" -#: src/unstrip.c:273 src/unstrip.c:1966 +#: src/unstrip.c:274 src/unstrip.c:2056 #, c-format msgid "cannot create program headers: %s" msgstr "не вдалося створити заголовки програми: %s" -#: src/unstrip.c:279 +#: src/unstrip.c:280 #, c-format msgid "cannot copy program header: %s" msgstr "не вдалося скопіювати заголовок програми: %s" -#: src/unstrip.c:289 +#: src/unstrip.c:290 #, c-format msgid "cannot copy section header: %s" msgstr "не вдалося скопіювати заголовок розділу: %s" -#: src/unstrip.c:292 src/unstrip.c:1597 +#: src/unstrip.c:293 src/unstrip.c:1665 #, c-format msgid "cannot get section data: %s" msgstr "не вдалося отримати дані розділу: %s" -#: src/unstrip.c:294 src/unstrip.c:1599 +#: src/unstrip.c:295 src/unstrip.c:1667 #, c-format msgid "cannot copy section data: %s" msgstr "не вдалося скопіювати дані розділу: %s" -#: src/unstrip.c:318 +#: src/unstrip.c:319 #, c-format msgid "cannot create directory '%s'" msgstr "не вдалося створити каталог «%s»" -#: src/unstrip.c:390 src/unstrip.c:820 src/unstrip.c:1631 +#: src/unstrip.c:391 src/unstrip.c:845 src/unstrip.c:1702 #, c-format msgid "cannot get symbol table entry: %s" msgstr "не вдалося отримати запис таблиці символів: %s" -#: src/unstrip.c:406 src/unstrip.c:631 src/unstrip.c:652 src/unstrip.c:664 -#: src/unstrip.c:1652 src/unstrip.c:1828 src/unstrip.c:1852 +#: 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 #, c-format msgid "cannot update symbol table: %s" msgstr "не вдалося оновити таблицю символів: %s" -#: src/unstrip.c:416 +#: src/unstrip.c:417 #, c-format msgid "cannot update section header: %s" msgstr "не вдалося оновити заголовок розділу: %s" -#: src/unstrip.c:455 src/unstrip.c:466 +#: src/unstrip.c:459 src/unstrip.c:473 #, c-format msgid "cannot update relocation: %s" msgstr "не вдалося оновити пересування: %s" -#: src/unstrip.c:554 +#: src/unstrip.c:570 #, c-format msgid "cannot get symbol version: %s" msgstr "не вдалося отримати версію символу: %s" -#: src/unstrip.c:567 +#: src/unstrip.c:583 #, c-format msgid "unexpected section type in [%zu] with sh_link to symtab" msgstr "неочікуваний тип розділу у [%zu] з посиланням sh_link на symtab" -#: src/unstrip.c:826 +#: src/unstrip.c:851 #, c-format msgid "invalid string offset in symbol [%zu]" msgstr "некоректне зміщення рядка у символі [%zu]" -#: src/unstrip.c:984 src/unstrip.c:1334 +#: src/unstrip.c:1009 src/unstrip.c:1398 #, c-format msgid "cannot read section [%zu] name: %s" msgstr "не вдалося прочитати назву розділу [%zu]: %s" -#: src/unstrip.c:1025 src/unstrip.c:1044 src/unstrip.c:1082 +#: src/unstrip.c:1024 +#, fuzzy, c-format +msgid "bad sh_link for group section: %s" +msgstr "некоректне значення sh_link у розділі %zu" + +#: src/unstrip.c:1030 +#, fuzzy, c-format +msgid "couldn't get shdr for group section: %s" +msgstr "не вдалося отримати заголовок 0-го розділу: %s" + +#: src/unstrip.c:1035 +#, fuzzy, c-format +msgid "bad data for group symbol section: %s" +msgstr "не вдалося отримати дані для розділу символів\n" + +#: src/unstrip.c:1041 +#, fuzzy, c-format +msgid "couldn't get symbol for group section: %s" +msgstr "не вдалося отримати версію символу: %s" + +#: src/unstrip.c:1046 +#, 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 #, c-format msgid "cannot read '.gnu.prelink_undo' section: %s" msgstr "не вдалося прочитати розділ «.gnu.prelink_undo»: %s" -#: src/unstrip.c:1062 +#: src/unstrip.c:1125 #, c-format msgid "overflow with shnum = %zu in '%s' section" msgstr "" -#: src/unstrip.c:1073 +#: src/unstrip.c:1136 #, c-format msgid "invalid contents in '%s' section" msgstr "некоректний вміст розділу «%s»" -#: src/unstrip.c:1128 src/unstrip.c:1456 +#: src/unstrip.c:1192 src/unstrip.c:1524 #, c-format msgid "cannot find matching section for [%zu] '%s'" msgstr "не вдалося знайти відповідний розділ для [%zu] «%s»" -#: src/unstrip.c:1253 src/unstrip.c:1268 src/unstrip.c:1535 src/unstrip.c:1787 +#: src/unstrip.c:1317 src/unstrip.c:1332 src/unstrip.c:1603 src/unstrip.c:1877 #, c-format msgid "cannot add section name to string table: %s" msgstr "не вдалося додати назву розділу до таблиці рядків: %s" -#: src/unstrip.c:1277 +#: src/unstrip.c:1341 #, c-format msgid "cannot update section header string table data: %s" msgstr "не вдалося оновити дані заголовка розділу у таблиці рядків: %s" -#: src/unstrip.c:1305 src/unstrip.c:1309 +#: src/unstrip.c:1369 src/unstrip.c:1373 #, c-format msgid "cannot get section header string table section index: %s" msgstr "" "не вдалося визначити індекс розділу заголовка розділу у таблиці рядків: %s" -#: src/unstrip.c:1313 src/unstrip.c:1317 src/unstrip.c:1550 +#: src/unstrip.c:1377 src/unstrip.c:1381 src/unstrip.c:1618 #, c-format msgid "cannot get section count: %s" msgstr "не вдалося отримати кількість розділів: %s" -#: src/unstrip.c:1320 +#: src/unstrip.c:1384 #, c-format msgid "more sections in stripped file than debug file -- arguments reversed?" msgstr "" "у очищеному файлі більше розділів ніж у файлі з даними для зневаджування — " "помилковий порядок параметрів?" -#: src/unstrip.c:1379 src/unstrip.c:1471 +#: src/unstrip.c:1446 src/unstrip.c:1539 #, c-format msgid "cannot read section header string table: %s" msgstr "не вдалося прочитати таблицю рядків заголовка розділу: %s" -#: src/unstrip.c:1529 +#: src/unstrip.c:1597 #, c-format msgid "cannot add new section: %s" msgstr "не вдалося додати новий розділ: %s" -#: src/unstrip.c:1639 +#: src/unstrip.c:1710 #, c-format msgid "symbol [%zu] has invalid section index" msgstr "символ [%zu] має некоректний індекс розділу" -#: src/unstrip.c:1923 +#: src/unstrip.c:1742 +#, fuzzy, c-format +msgid "group has invalid section index [%zd]" +msgstr "символ [%zu] має некоректний індекс розділу" + +#: src/unstrip.c:2013 #, c-format msgid "cannot read section data: %s" msgstr "не вдалося прочитати дані розділу: %s" -#: src/unstrip.c:1944 -#, c-format -msgid "cannot get ELF header: %s" -msgstr "не вдалося отримати заголовок ELF: %s" - -#: src/unstrip.c:1952 +#: src/unstrip.c:2042 #, c-format msgid "cannot update ELF header: %s" msgstr "не вдалося оновити заголовок ELF: %s" -#: src/unstrip.c:1976 +#: src/unstrip.c:2066 #, c-format msgid "cannot update program header: %s" msgstr "не вдалося оновити заголовок програми: %s" -#: src/unstrip.c:1981 src/unstrip.c:2063 +#: src/unstrip.c:2071 src/unstrip.c:2153 #, c-format msgid "cannot write output file: %s" msgstr "не вдалося записати файл виведених даних: %s" -#: src/unstrip.c:2032 +#: src/unstrip.c:2122 #, c-format msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" msgstr "" "Дані DWARF не скориговано відповідно до відхилення перед компонуванням; " "спробуйте виправити це командою prelink -u" -#: src/unstrip.c:2035 +#: src/unstrip.c:2125 #, c-format msgid "" "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" @@ -6893,76 +6951,76 @@ msgstr "" "Дані DWARF у «%s» не скориговано відповідно до відхилення перед " "компонуванням; спробуйте виправити це командою prelink -u" -#: src/unstrip.c:2054 src/unstrip.c:2105 src/unstrip.c:2117 src/unstrip.c:2203 +#: src/unstrip.c:2144 src/unstrip.c:2195 src/unstrip.c:2207 src/unstrip.c:2293 #, c-format msgid "cannot create ELF descriptor: %s" msgstr "не вдалося створити дескриптор ELF: %s" -#: src/unstrip.c:2096 +#: src/unstrip.c:2186 msgid "WARNING: " msgstr "УВАГА: " -#: src/unstrip.c:2098 +#: src/unstrip.c:2188 msgid ", use --force" msgstr ", скористайтеся --force" -#: src/unstrip.c:2121 +#: src/unstrip.c:2211 msgid "ELF header identification (e_ident) different" msgstr "Різні ідентифікатори заголовків ELF (e_ident)" -#: src/unstrip.c:2124 +#: src/unstrip.c:2214 msgid "ELF header type (e_type) different" msgstr "Різні типи заголовків ELF (e_type)" -#: src/unstrip.c:2127 +#: src/unstrip.c:2217 msgid "ELF header machine type (e_machine) different" msgstr "Різні типи архітектур заголовків ELF (e_machine)" -#: src/unstrip.c:2130 +#: src/unstrip.c:2220 msgid "stripped program header (e_phnum) smaller than unstripped" msgstr "очищений заголовок програми (e_phnum) є меншим за неочищений" -#: src/unstrip.c:2160 +#: src/unstrip.c:2250 #, c-format msgid "cannot find stripped file for module '%s': %s" msgstr "не вдалося знайти очищений файл для модуля «%s»: %s" -#: src/unstrip.c:2164 +#: src/unstrip.c:2254 #, c-format msgid "cannot open stripped file '%s' for module '%s': %s" msgstr "не вдалося відкрити очищений файл «%s» для модуля «%s»: %s" -#: src/unstrip.c:2179 +#: src/unstrip.c:2269 #, c-format msgid "cannot find debug file for module '%s': %s" msgstr "не вдалося знайти файл діагностичних даних для модуля «%s»: %s" -#: src/unstrip.c:2183 +#: src/unstrip.c:2273 #, c-format msgid "cannot open debug file '%s' for module '%s': %s" msgstr "не вдалося відкрити файл діагностичних даних «%s» для модуля «%s»: %s" -#: src/unstrip.c:2196 +#: src/unstrip.c:2286 #, c-format msgid "module '%s' file '%s' is not stripped" msgstr "у модулі «%s» файл «%s» не очищено strip" -#: src/unstrip.c:2227 +#: src/unstrip.c:2317 #, c-format msgid "cannot cache section addresses for module '%s': %s" msgstr "не вдалося кешувати адреси розділів для модуля «%s»: %s" -#: src/unstrip.c:2360 +#: src/unstrip.c:2450 #, c-format msgid "no matching modules found" msgstr "відповідних модулів не виявлено" -#: src/unstrip.c:2369 +#: src/unstrip.c:2459 #, c-format msgid "matched more than one module" msgstr "встановлено відповідність декількох модулів" -#: src/unstrip.c:2413 +#: src/unstrip.c:2503 msgid "" "STRIPPED-FILE DEBUG-FILE\n" "[MODULE...]" @@ -6970,7 +7028,7 @@ msgstr "" "ОЧИЩЕНИЙ-ФАЙЛ ФАЙЛ-DEBUG\n" "[МОДУЛЬ...]" -#: src/unstrip.c:2414 +#: src/unstrip.c:2504 #, fuzzy msgid "" "Combine stripped files with separate symbols and debug information.\n" @@ -7042,6 +7100,14 @@ msgstr "Додатково вивести назви функцій" msgid "Show instances of inlined functions" msgstr "Вивести екземпляри вбудованих функцій" +#, fuzzy +#~ msgid "%s: error getting zero section: %s" +#~ msgstr "%s: помилка під час читання файла: %s" + +#, fuzzy +#~ msgid "%s: error while updating zero section: %s" +#~ msgstr "%s: помилка під час читання файла: %s" + #~ msgid "%s+%# <%s+%#>" #~ msgstr "%s+%# <%s+%#>" @@ -7546,9 +7612,6 @@ msgstr "Вивести екземпляри вбудованих функцій" #~ msgstr "" #~ "внутрішня помилка: небезбітовий розділ слідом за безбітовим розділом" -#~ msgid "cannot get header of 0th section: %s" -#~ msgstr "не вдалося отримати заголовок 0-го розділу: %s" - #~ msgid "linker backend didn't specify function to relocate section" #~ msgstr "у сервері компонування не визначено функції для розділу пересування" -- cgit v1.2.3 From c338a0541663af13ede85732a472068ec74d9993 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 15 Nov 2018 15:53:41 +0100 Subject: libebl: Don't update w, t and len unnecessarily in ebl_object_note_type_name. Harmless, but useless. Signed-off-by: Mark Wielaard --- libebl/ChangeLog | 5 +++++ libebl/eblobjnotetypename.c | 8 +++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 79a2ff4c..a2f89562 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,8 @@ +2018-11-15 Mark Wielaard + + * eblobjnotetypename.c (ebl_object_note_type_name): Don't update + w, t and len unnecessarily. + 2018-11-12 Mark Wielaard * libebl.h (ebl_object_note): Add new argument namesz. diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c index 29a5391c..6b803cef 100644 --- a/libebl/eblobjnotetypename.c +++ b/libebl/eblobjnotetypename.c @@ -91,13 +91,11 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type, t += w; len -= w; if (type == NT_GNU_BUILD_ATTRIBUTE_OPEN) - w = snprintf (t, len, "OPEN"); + snprintf (t, len, "OPEN"); else if (type == NT_GNU_BUILD_ATTRIBUTE_FUNC) - w = snprintf (t, len, "FUNC"); + snprintf (t, len, "FUNC"); else - w = snprintf (t, len, "%x", type); - t += w; - len -= w; + snprintf (t, len, "%x", type); return buf; } -- cgit v1.2.3 From a01938d584b91e747167bb4b3f30ec300c4d6e43 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 16 Nov 2018 09:27:00 +0100 Subject: libelf: Mark both fsize and msize with const attribute. GCC9 -Wmissing-attributes pointed out that although we alias the fsize and msize functions only fsize was marked as const. Fix by also marking the msize definition as const. https://sourceware.org/bugzilla/show_bug.cgi?id=23884 Signed-off-by: Mark Wielaard --- libelf/ChangeLog | 5 +++++ libelf/libelfP.h | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 93820d19..68c4fbdd 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,8 @@ +2018-11-16 Mark Wielaard + + * libebl.h (__elf32_msize): Mark with const attribute. + (__elf64_msize): Likewise. + 2018-11-13 Mark Wielaard * elf_getdata.c (__libelf_set_rawdata_wrlock): Explicitly set the diff --git a/libelf/libelfP.h b/libelf/libelfP.h index fa6d55d8..9f3e8e9d 100644 --- a/libelf/libelfP.h +++ b/libelf/libelfP.h @@ -461,9 +461,9 @@ extern Elf_Type __libelf_data_type (Elf *elf, int sh_type, GElf_Xword align) 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); + unsigned int __version) __const_attribute__; extern size_t __elf64_msize (Elf_Type __type, size_t __count, - unsigned int __version); + unsigned int __version) __const_attribute__; /* Create Elf descriptor from memory image. */ -- cgit v1.2.3 From 4ea9a2db164caadf836a65d5cdffb09a2d5a37ce Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 16 Nov 2018 12:44:53 +0100 Subject: Update upload-release.sh script and po files. Signed-off-by: Mark Wielaard --- config/upload-release.sh | 38 +++++++++++++++++++++++++++++++++----- po/de.po | 4 ++-- po/es.po | 4 ++-- po/ja.po | 4 ++-- po/pl.po | 4 ++-- po/uk.po | 4 ++-- 6 files changed, 43 insertions(+), 15 deletions(-) diff --git a/config/upload-release.sh b/config/upload-release.sh index 320d1ada..a44d40c9 100755 --- a/config/upload-release.sh +++ b/config/upload-release.sh @@ -1,5 +1,10 @@ #!/bin/bash +# Must be run in the source directory. +# Should have passed make distcheck. +# And all final changes should already have been pushed. +# Backup copy will be created in $HOME/elfutils-$VERSION + # Any error is fatal set -e @@ -11,21 +16,44 @@ fi VERSION="$1" -# Check we are in the build dir already configured. -ELFUTILS_VERSION=$(echo $VERSION | cut -f2 -d\.) -grep $ELFUTILS_VERSION version.h \ - || (echo "Must be run in configured build dir for $VERSION"; exit -1) +echo Make sure the git repo is tagged, signed and pushed +echo git tag -s -m \"elfutils $VERSION release\" elfutils-$VERSION +echo git push --tags + +# Create a temporary directoy and make sure it is cleaned up. +tempdir=$(mktemp -d) || exit +trap "rm -rf -- ${tempdir}" EXIT + +pushd "${tempdir}" + +# Checkout +git clone git://sourceware.org/git/elfutils.git +cd elfutils +git checkout -b "$VERSION" "elfutils-${VERSION}" +# Create dist +autoreconf -v -f -i +./configure --enable-maintainer-mode make dist +# Sign mkdir $VERSION cp elfutils-$VERSION.tar.bz2 $VERSION/ cd $VERSION/ gpg -b elfutils-$VERSION.tar.bz2 cd .. -scp -r $VERSION sourceware.org:/sourceware/ftp/pub/elfutils/ +# Backup copy +cp -r $VERSION $HOME/elfutils-$VERSION + +# Upload +scp -r $VERSION sourceware.org:/sourceware/ftp/pub/elfutils/ ssh sourceware.org "(cd /sourceware/ftp/pub/elfutils \ && ln -sf $VERSION/elfutils-$VERSION.tar.bz2 elfutils-latest.tar.bz2 \ && ln -sf $VERSION/elfutils-$VERSION.tar.bz2.sig elfutils-latest.tar.bz2.sig \ && ls -lah elfutils-latest*)" + +# Cleanup +popd +trap - EXIT +exit diff --git a/po/de.po b/po/de.po index 3aac9b6c..88d7e6bc 100644 --- a/po/de.po +++ b/po/de.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils VERSION\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-11-14 13:04+0100\n" +"POT-Creation-Date: 2018-11-16 12:42+0100\n" "PO-Revision-Date: 2009-06-29 15:15+0200\n" "Last-Translator: Michael Münch \n" "Language-Team: German\n" @@ -531,7 +531,7 @@ msgid "No backend" msgstr "Kein Backend" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 -#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 +#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" diff --git a/po/es.po b/po/es.po index 7fb8ac30..ad84e9e9 100644 --- a/po/es.po +++ b/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils.master.es\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-11-14 13:04+0100\n" +"POT-Creation-Date: 2018-11-16 12:42+0100\n" "PO-Revision-Date: 2011-01-10 15:17-0300\n" "Last-Translator: Claudio Rodrigo Pereyra Diaz \n" @@ -529,7 +529,7 @@ msgid "No backend" msgstr "No hay segundo plano (Backend)" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 -#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 +#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" diff --git a/po/ja.po b/po/ja.po index 1823da2d..fc47ba20 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-11-14 13:04+0100\n" +"POT-Creation-Date: 2018-11-16 12:42+0100\n" "PO-Revision-Date: 2009-09-20 15:32+0900\n" "Last-Translator: Hyu_gabaru Ryu_ichi \n" "Language-Team: Japanese \n" @@ -528,7 +528,7 @@ msgid "No backend" msgstr "バックエンドがありません" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 -#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 +#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" diff --git a/po/pl.po b/po/pl.po index 3c6b468e..546fe3e3 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-11-14 13:04+0100\n" +"POT-Creation-Date: 2018-11-16 12:42+0100\n" "PO-Revision-Date: 2016-12-29 17:48+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" @@ -524,7 +524,7 @@ msgid "No backend" msgstr "Brak zaplecza" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 -#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 +#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" diff --git a/po/uk.po b/po/uk.po index c46ad048..79d9c911 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2018-11-14 13:04+0100\n" +"POT-Creation-Date: 2018-11-16 12:42+0100\n" "PO-Revision-Date: 2015-09-26 16:41+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -525,7 +525,7 @@ msgid "No backend" msgstr "Немає сервера" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77 -#: libebl/eblobjnotetypename.c:111 libebl/eblobjnotetypename.c:132 +#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 msgid "" -- cgit v1.2.3