From 660aafcf78818424248faccf2ccab4ac9deee582 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 21 May 2017 23:33:15 +0200 Subject: ppc64: Add minimal fallback unwinder. This adds a minimal fallback unwinder for ppc64[le] in case we cannot find CFI for a particular address. It simply always sets the program counter to the link register, picks the previous stack pointer from the backchain, and the previous link register from the LR save area. This is enough for some simple situations when we don't have CFI and seems to work nicely in the case of perf with libdw powerpc support: https://lkml.org/lkml/2017/5/18/998 Signed-off-by: Mark Wielaard --- backends/ChangeLog | 6 +++ backends/Makefile.am | 2 +- backends/ppc64_init.c | 1 + backends/ppc64_unwind.c | 76 +++++++++++++++++++++++++++++++++ tests/ChangeLog | 10 +++++ tests/Makefile.am | 3 ++ tests/backtrace-subr.sh | 2 +- tests/backtrace.ppc64le.fp.core.bz2 | Bin 0 -> 37786 bytes tests/backtrace.ppc64le.fp.exec.bz2 | Bin 0 -> 383808 bytes tests/run-backtrace-fp-core-ppc64le.sh | 29 +++++++++++++ 10 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 backends/ppc64_unwind.c create mode 100644 tests/backtrace.ppc64le.fp.core.bz2 create mode 100755 tests/backtrace.ppc64le.fp.exec.bz2 create mode 100755 tests/run-backtrace-fp-core-ppc64le.sh diff --git a/backends/ChangeLog b/backends/ChangeLog index 1ac5bab3..f0d29f62 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,9 @@ +2017-05-30 Mark Wielaard + + * ppc64_unwind.c: New file. + * ppc64_init.c (pcc64_init): Hook unwind. + * Makefile.am (ppc64_SRCS): Add ppc64_unwind.c + 2017-04-06 Mark Wielaard * i386_unwind.c: New file. diff --git a/backends/Makefile.am b/backends/Makefile.am index ff80a82c..ac45a452 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -98,7 +98,7 @@ am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os) ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c \ ppc64_corenote.c ppc_regs.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \ - ppc_cfi.c ppc_initreg.c ppc64_resolve_sym.c + ppc_cfi.c ppc_initreg.c ppc64_unwind.c ppc64_resolve_sym.c libebl_ppc64_pic_a_SOURCES = $(ppc64_SRCS) am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os) diff --git a/backends/ppc64_init.c b/backends/ppc64_init.c index 11d3a77f..e5670338 100644 --- a/backends/ppc64_init.c +++ b/backends/ppc64_init.c @@ -73,6 +73,7 @@ ppc64_init (Elf *elf __attribute__ ((unused)), eh->frame_nregs = (114 - 1) + 32; HOOK (eh, set_initial_registers_tid); HOOK (eh, dwarf_to_regno); + HOOK (eh, unwind); HOOK (eh, resolve_sym_value); /* Find the function descriptor .opd table for resolve_sym_value. */ diff --git a/backends/ppc64_unwind.c b/backends/ppc64_unwind.c new file mode 100644 index 00000000..4fa0b5a9 --- /dev/null +++ b/backends/ppc64_unwind.c @@ -0,0 +1,76 @@ +/* Get previous frame state for an existing frame state. + Copyright (C) 2017 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#define BACKEND ppc64_ + +#define LR_REG 65 /* Not 108, see ppc_dwarf_to_regno. */ +#define SP_REG 1 + +#define LR_OFFSET 16 + +#include "libebl_CPU.h" + +/* Simplistic fallback frame unwinder. SP points to the backchain (contains + address of previous stack pointer). At SP offset 16 is the LR save area + (contains the value of the previous LR). */ + +bool +EBLHOOK(unwind) (Ebl *ebl __attribute__ ((unused)), + Dwarf_Addr pc __attribute__ ((unused)), + ebl_tid_registers_t *setfunc, ebl_tid_registers_get_t *getfunc, + ebl_pid_memory_read_t *readfunc, void *arg, + bool *signal_framep __attribute__ ((unused))) +{ + Dwarf_Word sp, newSp, lr, newLr; + + /* Stack pointer points to the backchain which contains the previous sp. */ + if (! getfunc (SP_REG, 1, &sp, arg)) + sp = 0; + + /* Link register contains previous program counter. */ + if (! getfunc (LR_REG, 1, &lr, arg) + || lr == 0 + || ! setfunc (-1, 1, &lr, arg)) + return false; + + if (! readfunc(sp, &newSp, arg)) + newSp = 0; + + if (! readfunc(newSp + LR_OFFSET, &newLr, arg)) + newLr = 0; + + setfunc(SP_REG, 1, &newSp, arg); + setfunc(LR_REG, 1, &newLr, arg); + + /* Sanity check the stack grows down. */ + return newSp > sp; +} diff --git a/tests/ChangeLog b/tests/ChangeLog index 5b0d486e..43b5bd8a 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,13 @@ +2017-05-30 Mark Wielaard + + * run-backtrace-fp-core-ppc64le.sh: New test. + * backtrace.ppc64le.fp.core.bz2: New test file. + * backtrace.ppc64le.fp.exec.bz2: New testfile. + * backtrace-subr.sh (check_backtracegen): Accept '(null)'. + * Makefile.am (TESTS): Add run-backtrace-fp-core-ppc64le.sh. + (EXTRA_DIST): Add run-backtrace-fp-core-ppc64le.sh, + backtrace.ppc64le.fp.core.bz2 and backtrace.ppc64le.fp.exec.bz2. + 2017-02-13 Ulf Hermann Mark Wielaard diff --git a/tests/Makefile.am b/tests/Makefile.am index 3a12fe3a..50648db8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -117,6 +117,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-backtrace-native-core-biarch.sh run-backtrace-core-x86_64.sh \ run-backtrace-fp-core-x86_64.sh \ run-backtrace-fp-core-aarch64.sh \ + run-backtrace-fp-core-ppc64le.sh \ run-backtrace-core-x32.sh \ run-backtrace-core-i386.sh run-backtrace-fp-core-i386.sh \ run-backtrace-core-ppc.sh \ @@ -303,6 +304,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ backtrace-subr.sh backtrace.i386.core.bz2 backtrace.i386.exec.bz2 \ run-backtrace-fp-core-i386.sh \ backtrace.i386.fp.core.bz2 backtrace.i386.fp.exec.bz2 \ + run-backtrace-fp-core-ppc64le.sh \ + backtrace.ppc64le.fp.core.bz2 backtrace.ppc64le.fp.exec.bz2 \ backtrace.x86_64.core.bz2 backtrace.x86_64.exec.bz2 \ backtrace.x86_64.fp.core.bz2 backtrace.x86_64.fp.exec.bz2 \ backtrace.ppc.core.bz2 backtrace.ppc.exec.bz2 \ diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh index 9731c43a..c1f31569 100644 --- a/tests/backtrace-subr.sh +++ b/tests/backtrace-subr.sh @@ -59,7 +59,7 @@ check_backtracegen() # Ignore it here as it is a bug of OS, not a bug of elfutils. check_err() { - if [ $(egrep -v <$1 'dwfl_thread_getframes: (No DWARF information found|no matching address range|address out of range|Invalid register)$' \ + if [ $(egrep -v <$1 'dwfl_thread_getframes: (No DWARF information found|no matching address range|address out of range|Invalid register|\(null\))$' \ | wc -c) \ -eq 0 ] then diff --git a/tests/backtrace.ppc64le.fp.core.bz2 b/tests/backtrace.ppc64le.fp.core.bz2 new file mode 100644 index 00000000..e63babf3 Binary files /dev/null and b/tests/backtrace.ppc64le.fp.core.bz2 differ diff --git a/tests/backtrace.ppc64le.fp.exec.bz2 b/tests/backtrace.ppc64le.fp.exec.bz2 new file mode 100755 index 00000000..ed1352af Binary files /dev/null and b/tests/backtrace.ppc64le.fp.exec.bz2 differ diff --git a/tests/run-backtrace-fp-core-ppc64le.sh b/tests/run-backtrace-fp-core-ppc64le.sh new file mode 100755 index 00000000..326ca342 --- /dev/null +++ b/tests/run-backtrace-fp-core-ppc64le.sh @@ -0,0 +1,29 @@ +#! /bin/bash +# Copyright (C) 2017 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/backtrace-subr.sh + +# The binary is generated by compiling backtrace-child without unwind +# information, but with -fno-omit-frame-pointer. +# +# gcc -static -O2 -fno-omit-frame-pointer -fno-asynchronous-unwind-tables \ +# -D_GNU_SOURCE -pthread -o tests/backtrace.ppc64le.fp.exec -I. -Ilib \ +# tests/backtrace-child.c +# +# The core is generated by calling tests/backtrace.ppc64le.fp.exec --gencore + +check_core ppc64le.fp -- cgit v1.2.3 From e0b3232e9a0bc8215ca1be29b1ec6df43811eb87 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 7 Jun 2017 14:05:36 +0200 Subject: strip: Make sure old .shstrab is removed when eu-strip recreates it. Although we always recreate the .shstrtab section for the new output file we never explicitly assumed it could be removed. It might not be possible to remove it when the section string table is shared with a symbol table. But if it is removable we should (and recreate it for the new section list). Regression introduced in commit elfutils-0.163-33-gdf7dfab. "Handle merged strtab/shstrtab string tables in strip and unstrip." Add extra testcase to explicitly check for this case. https://sourceware.org/bugzilla/show_bug.cgi?id=21525 Signed-off-by: Mark Wielaard --- src/ChangeLog | 4 ++++ src/strip.c | 16 ++++++++++------ tests/ChangeLog | 4 ++++ tests/run-strip-test.sh | 8 ++++++++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index cbb77fc8..6ac0ef2d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2017-06-06 Mark Wielaard + + * strip.c (handle_elf): Assume e_shstrndx section can be removed. + 2017-04-20 Ulf Hermann * readelf.c: Include strings.h. diff --git a/src/strip.c b/src/strip.c index f7474418..11b2a379 100644 --- a/src/strip.c +++ b/src/strip.c @@ -711,11 +711,13 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, in the sh_link or sh_info element it cannot be removed either */ for (cnt = 1; cnt < shnum; ++cnt) - /* Check whether the section can be removed. */ + /* Check whether the section can be removed. Since we will create + a new .shstrtab assume it will be removed too. */ if (remove_shdrs ? !(shdr_info[cnt].shdr.sh_flags & SHF_ALLOC) - : ebl_section_strip_p (ebl, ehdr, &shdr_info[cnt].shdr, - shdr_info[cnt].name, remove_comment, - remove_debug)) + : (ebl_section_strip_p (ebl, ehdr, &shdr_info[cnt].shdr, + shdr_info[cnt].name, remove_comment, + remove_debug) + || cnt == ehdr->e_shstrndx)) { /* For now assume this section will be removed. */ shdr_info[cnt].idx = 0; @@ -1062,8 +1064,10 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, } /* Test whether we are doing anything at all. */ - if (cnt == idx) - /* Nope, all removable sections are already gone. */ + if (cnt == idx + || (cnt == idx + 1 && shdr_info[ehdr->e_shstrndx].idx == 0)) + /* Nope, all removable sections are already gone. Or the only section + we would remove is the .shstrtab section which we will add again. */ goto fail_close; /* Create the reference to the file with the debug info. */ diff --git a/tests/ChangeLog b/tests/ChangeLog index 43b5bd8a..a7b20224 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2017-06-06 Mark Wielaard + + * run-strip-test.sh: Test strip -g doesn't introduce extra .shstrtab. + 2017-05-30 Mark Wielaard * run-backtrace-fp-core-ppc64le.sh: New test. diff --git a/tests/run-strip-test.sh b/tests/run-strip-test.sh index 42aa9888..280814e6 100755 --- a/tests/run-strip-test.sh +++ b/tests/run-strip-test.sh @@ -49,6 +49,14 @@ testrun ${abs_top_builddir}/src/unstrip -o testfile.unstrip testfile.temp testfi testrun ${abs_top_builddir}/src/elfcmp --hash-inexact $original testfile.unstrip } +# test strip -g +testrun ${abs_top_builddir}/src/strip -g -o testfile.temp $original + +# Buggy eu-strip created multiple .shstrtab sections +shstrtab_SECS=$(testrun ${abs_top_builddir}/src/readelf -S testfile.temp | grep '.shstrtab' | wc --lines) +test $shstrtab_SECS -eq 1 || + { echo "*** failure not just one '.shstrtab' testfile.temp ($shstrtab_SECS)"; status=1; } + # Now strip in-place and make sure it is smaller. SIZE_original=$(stat -c%s $original) testrun ${abs_top_builddir}/src/strip $original -- cgit v1.2.3 From b58aebe71e0b4863db1b7fd3e942e36303257f3a Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 7 Jun 2017 20:32:38 +0200 Subject: strip: Don't generate empty output file when nothing to do. If there was nothing to do strip would skip generating a separate debug file if one was requested, but it would also not finish the creation of a new output file (with the non-stripped sections). Also if there was an error any partially created output would be kept. Make sure that when the -o output file option is given we always generate a complete output file (except on error). Also make sure that when the -f debug file option is given it is only generated when it is not empty. Add testcase run-strip-nothing.sh that tests the various combinations. https://sourceware.org/bugzilla/show_bug.cgi?id=21522 Signed-off-by: Mark Wielaard --- src/ChangeLog | 6 +++++ src/strip.c | 31 ++++++++++++++--------- tests/ChangeLog | 6 +++++ tests/Makefile.am | 2 ++ tests/run-strip-nothing.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+), 12 deletions(-) create mode 100755 tests/run-strip-nothing.sh diff --git a/src/ChangeLog b/src/ChangeLog index 6ac0ef2d..e19122e8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2017-06-07 Mark Wielaard + + * strip.c (handle_elf): Introduce new handle_elf boolean. Use it to + determine whether to create an output and/or debug file. Remove new + output file on error. + 2017-06-06 Mark Wielaard * strip.c (handle_elf): Assume e_shstrndx section can be removed. diff --git a/src/strip.c b/src/strip.c index 11b2a379..2bf95f90 100644 --- a/src/strip.c +++ b/src/strip.c @@ -1063,15 +1063,17 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, shdr_info[cnt].se = dwelf_strtab_add (shst, shdr_info[cnt].name); } - /* Test whether we are doing anything at all. */ - if (cnt == idx - || (cnt == idx + 1 && shdr_info[ehdr->e_shstrndx].idx == 0)) - /* Nope, all removable sections are already gone. Or the only section - we would remove is the .shstrtab section which we will add again. */ - goto fail_close; - - /* Create the reference to the file with the debug info. */ - if (debug_fname != NULL && !remove_shdrs) + /* Test whether we are doing anything at all. Either all removable + sections are already gone. Or the only section we would remove is + the .shstrtab section which we would add again. */ + bool removing_sections = !(cnt == idx + || (cnt == idx + 1 + && shdr_info[ehdr->e_shstrndx].idx == 0)); + if (output_fname == NULL && !removing_sections) + goto fail_close; + + /* Create the reference to the file with the debug info (if any). */ + if (debug_fname != NULL && !remove_shdrs && removing_sections) { /* Add the section header string table section name. */ shdr_info[cnt].se = dwelf_strtab_add_len (shst, ".gnu_debuglink", 15); @@ -1759,7 +1761,8 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, /* Remove any relocations between debug sections in ET_REL for the debug file when requested. These relocations are always zero based between the unallocated sections. */ - if (debug_fname != NULL && reloc_debug && ehdr->e_type == ET_REL) + if (debug_fname != NULL && removing_sections + && reloc_debug && ehdr->e_type == ET_REL) { scn = NULL; cnt = 0; @@ -1997,7 +2000,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, /* Now that we have done all adjustments to the data, we can actually write out the debug file. */ - if (debug_fname != NULL) + if (debug_fname != NULL && removing_sections) { /* Finally write the file. */ if (unlikely (elf_update (debugelf, ELF_C_WRITE) == -1)) @@ -2230,7 +2233,11 @@ cannot set access and modification date of '%s'"), /* Close the file descriptor if we created a new file. */ if (output_fname != NULL) - close (fd); + { + close (fd); + if (result != 0) + unlink (output_fname); + } return result; } diff --git a/tests/ChangeLog b/tests/ChangeLog index a7b20224..ecf62630 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2017-06-07 Mark Wielaard + + * run-strip-nothing.sh: New test. + * Makefile.am (TESTS): Add run-strip-nothing.sh. + (EXTRA_DIST): Likewise. + 2017-06-06 Mark Wielaard * run-strip-test.sh: Test strip -g doesn't introduce extra .shstrtab. diff --git a/tests/Makefile.am b/tests/Makefile.am index 50648db8..0aa16da1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -81,6 +81,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-strip-test3.sh run-strip-test4.sh run-strip-test5.sh \ run-strip-test6.sh run-strip-test7.sh run-strip-test8.sh \ run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \ + run-strip-nothing.sh \ run-strip-groups.sh run-strip-reloc.sh run-strip-strmerge.sh \ run-strip-nobitsalign.sh \ run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-test3.sh \ @@ -175,6 +176,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \ run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \ run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \ + run-strip-nothing.sh \ run-strip-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-strip-nothing.sh b/tests/run-strip-nothing.sh new file mode 100755 index 00000000..e80bd906 --- /dev/null +++ b/tests/run-strip-nothing.sh @@ -0,0 +1,62 @@ +#! /bin/sh +# Copyright (C) 2017 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/test-subr.sh + +# If there is nothing to strip then -o output should be identical to input. +# And there should not be an (empty) -f debug file. + +tempfiles a.out strip.out debug.out + +# Create no-debug a.out. +echo "int main() { return 1; }" | gcc -xc - + +# strip to file +testrun ${abs_top_builddir}/src/strip -g -o strip.out || + { echo "*** failed to strip -g -o strip.out a.out"; exit -1; } + +testrun ${abs_top_builddir}/src/elfcmp a.out strip.out || + { echo "*** failed strip.out different from a.out"; exit -1; } + +# strip original +testrun ${abs_top_builddir}/src/strip -g || + { echo "*** failed to strip -g a.out"; exit -1; } + +testrun ${abs_top_builddir}/src/elfcmp strip.out a.out || + { echo "*** failed a.out different from strip.out"; exit -1; } + +# strip to file with debug file +testrun ${abs_top_builddir}/src/strip -g -o strip.out -f debug.out || + { echo "*** failed to strip -g -o strip.out -f debug.out a.out"; exit -1; } + +testrun ${abs_top_builddir}/src/elfcmp a.out strip.out || + { echo "*** failed strip.out different from a.out (with debug)"; exit -1; } + +test ! -f debug.out || + { echo "*** failed strip.out and debug.out exist"; exit -1; } + +# strip original with debug file +testrun ${abs_top_builddir}/src/strip -g -f debug.out || + { echo "*** failed to strip -g -f debug.out a.out"; exit -1; } + +testrun ${abs_top_builddir}/src/elfcmp strip.out a.out || + { echo "*** failed a.out different from strip.out (with debug)"; exit -1; } + +test ! -f debug.out || + { echo "*** failed a.out and debug.out exist"; exit -1; } + +exit 0 -- cgit v1.2.3 From d65648473d1bfc779e16cd3cbf140a8ba0fed16c Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Thu, 15 Jun 2017 14:14:50 +0200 Subject: Support EM_PPC machine flags This fixes the elflint self test when the compiler is configured for PIE default. Signed-off-by: Andreas Schwab --- backends/ChangeLog | 5 +++++ backends/ppc_init.c | 1 + backends/ppc_symbol.c | 10 ++++++++++ 3 files changed, 16 insertions(+) diff --git a/backends/ChangeLog b/backends/ChangeLog index f0d29f62..c5f61e85 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,8 @@ +2017-06-15 Andreas Schwab + + * ppc_symbol.c (ppc_machine_flag_check): New function. + * ppc_init.c (ppc_init): Hook it. + 2017-05-30 Mark Wielaard * ppc64_unwind.c: New file. diff --git a/backends/ppc_init.c b/backends/ppc_init.c index c3e3ca36..aea9f2d7 100644 --- a/backends/ppc_init.c +++ b/backends/ppc_init.c @@ -53,6 +53,7 @@ ppc_init (Elf *elf __attribute__ ((unused)), eh->name = "PowerPC"; ppc_init_reloc (eh); HOOK (eh, reloc_simple_type); + HOOK (eh, machine_flag_check); HOOK (eh, dynamic_tag_name); HOOK (eh, dynamic_tag_check); HOOK (eh, check_special_symbol); diff --git a/backends/ppc_symbol.c b/backends/ppc_symbol.c index 1273c1d2..4b32003a 100644 --- a/backends/ppc_symbol.c +++ b/backends/ppc_symbol.c @@ -57,6 +57,16 @@ ppc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) } +/* Check whether machine flags are valid. */ +bool +ppc_machine_flag_check (GElf_Word flags) +{ + return ((flags &~ (EF_PPC_EMB + | EF_PPC_RELOCATABLE + | EF_PPC_RELOCATABLE_LIB)) == 0); +} + + const char * ppc_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), size_t len __attribute__ ((unused))) -- cgit v1.2.3 From d03be4f70c688a8c675935973663014c3c4bba76 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 14 Jul 2017 17:09:40 +0200 Subject: strip: Add --keep-section=SECTION and --remove-section=SECTION. Adds two new output options: --keep-section=SECTION Keep the named section. SECTION is an extended wildcard pattern. May be given more than once. --remove-section=SECTION Remove the named section. SECTION is an extended wildcard pattern. May be given more than once. Only non-allocated sections can be removed. The --remove-section was already partially implemented, but only for the .comment section. The short option -R is to be compatible with binutils. The new testcase makes sure that various combinations of kept/removed sections pull the correct dependencies into the output and/or debug files. https://bugzilla.redhat.com/show_bug.cgi?id=1465997 Signed-off-by: Mark Wielaard --- ChangeLog | 4 + NEWS | 4 + src/ChangeLog | 13 + src/strip.c | 127 +++++++- tests/ChangeLog | 6 + tests/Makefile.am | 4 +- tests/run-strip-remove-keep.sh | 688 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 827 insertions(+), 19 deletions(-) create mode 100755 tests/run-strip-remove-keep.sh diff --git a/ChangeLog b/ChangeLog index 0d6cd2ba..c9db732c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-07-14 Mark Wielaard + + * NEWS: Add 0.170 section and new strip options. + 2017-05-05 Mark Wielaard * configure.ac: Set version to 0.169. Update copyright year. diff --git a/NEWS b/NEWS index eb7dd972..b69aef45 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +Version 0.170 + +strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. + Version 0.169 backends: Add support for EM_PPC64 GNU_ATTRIBUTES. diff --git a/src/ChangeLog b/src/ChangeLog index e19122e8..0b60fc75 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,16 @@ +2017-07-14 Mark Wielaard + + * strip (OPT_KEEP_SECTION): New define. + (options): Add documentation for remove-section. Add keep-section. + (struct section_pattern): New data type. + (keep_secs, remove_secs): New globals. + (add_pattern, free_sec_patterns, free_patterns, section_name_matches): + New functions. + (main): Call free_patterns. + (parse_opt): Handle 'R' and OPT_KEEP_SECTION. Check remove_comment + on ARGP_KEY_SUCCESS. + (handle_elf): Handle and sanity check keep_secs and remove_secs. + 2017-06-07 Mark Wielaard * strip.c (handle_elf): Introduce new handle_elf boolean. Use it to diff --git a/src/strip.c b/src/strip.c index 2bf95f90..4a35ea1d 100644 --- a/src/strip.c +++ b/src/strip.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -60,6 +61,7 @@ ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT; #define OPT_PERMISSIVE 0x101 #define OPT_STRIP_SECTIONS 0x102 #define OPT_RELOC_DEBUG 0x103 +#define OPT_KEEP_SECTION 0x104 /* Definitions of arguments for argp functions. */ @@ -83,7 +85,8 @@ static const struct argp_option options[] = N_("Resolve all trivial relocations between debug sections if the removed sections are placed in a debug file (only relevant for ET_REL files, operation is not reversable, needs -f)"), 0 }, { "remove-comment", OPT_REMOVE_COMMENT, NULL, 0, N_("Remove .comment section"), 0 }, - { "remove-section", 'R', "SECTION", OPTION_HIDDEN, NULL, 0 }, + { "remove-section", 'R', "SECTION", 0, N_("Remove the named section. SECTION is an extended wildcard pattern. May be given more than once. Only non-allocated sections can be removed."), 0 }, + { "keep-section", OPT_KEEP_SECTION, "SECTION", 0, N_("Keep the named section. SECTION is an extended wildcard pattern. May be given more than once."), 0 }, { "permissive", OPT_PERMISSIVE, NULL, 0, N_("Relax a few rules to handle slightly broken ELF files"), 0 }, { NULL, 0, NULL, 0, NULL, 0 } @@ -157,6 +160,58 @@ static bool permissive; /* If true perform relocations between debug sections. */ static bool reloc_debug; +/* Sections the user explicitly wants to keep or remove. */ +struct section_pattern +{ + char *pattern; + struct section_pattern *next; +}; + +static struct section_pattern *keep_secs = NULL; +static struct section_pattern *remove_secs = NULL; + +static void +add_pattern (struct section_pattern **patterns, const char *pattern) +{ + struct section_pattern *p = xmalloc (sizeof *p); + p->pattern = xstrdup (pattern); + p->next = *patterns; + *patterns = p; +} + +static void +free_sec_patterns (struct section_pattern *patterns) +{ + struct section_pattern *pattern = patterns; + while (pattern != NULL) + { + struct section_pattern *p = pattern; + pattern = p->next; + free (p->pattern); + free (p); + } +} + +static void +free_patterns (void) +{ + free_sec_patterns (keep_secs); + free_sec_patterns (remove_secs); +} + +static bool +section_name_matches (struct section_pattern *patterns, const char *name) +{ + struct section_pattern *pattern = patterns; + while (pattern != NULL) + { + if (fnmatch (pattern->pattern, name, FNM_EXTMATCH) == 0) + return true; + pattern = pattern->next; + } + return false; +} + int main (int argc, char *argv[]) @@ -207,6 +262,7 @@ Only one input file allowed together with '-o' and '-f'")); while (++remaining < argc); } + free_patterns (); return result; } @@ -257,14 +313,13 @@ parse_opt (int key, char *arg, struct argp_state *state) break; case 'R': - if (!strcmp (arg, ".comment")) + if (fnmatch (arg, ".comment", FNM_EXTMATCH) == 0) remove_comment = true; - else - { - argp_error (state, - gettext ("-R option supports only .comment section")); - return EINVAL; - } + add_pattern (&remove_secs, arg); + break; + + case OPT_KEEP_SECTION: + add_pattern (&keep_secs, arg); break; case 'g': @@ -284,6 +339,16 @@ parse_opt (int key, char *arg, struct argp_state *state) case 's': /* Ignored for compatibility. */ break; + case ARGP_KEY_SUCCESS: + if (remove_comment == true + && section_name_matches (keep_secs, ".comment")) + { + argp_error (state, + gettext ("cannot both keep and remove .comment section")); + return EINVAL; + } + break; + default: return ARGP_ERR_UNKNOWN; } @@ -622,6 +687,28 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, goto fail_close; } + /* Sanity check the user. */ + if (section_name_matches (remove_secs, shdr_info[cnt].name)) + { + if ((shdr_info[cnt].shdr.sh_flags & SHF_ALLOC) != 0) + { + error (0, 0, + gettext ("Cannot remove allocated section '%s'"), + shdr_info[cnt].name); + result = 1; + goto fail_close; + } + + if (section_name_matches (keep_secs, shdr_info[cnt].name)) + { + error (0, 0, + gettext ("Cannot both keep and remove section '%s'"), + shdr_info[cnt].name); + result = 1; + goto fail_close; + } + } + /* Mark them as present but not yet investigated. */ shdr_info[cnt].idx = 1; @@ -709,6 +796,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, know how to handle them - if a section is referred to from a section which is not removed in the sh_link or sh_info element it cannot be removed either + - the user might have explicitly said to remove or keep a section */ for (cnt = 1; cnt < shnum; ++cnt) /* Check whether the section can be removed. Since we will create @@ -717,8 +805,13 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, : (ebl_section_strip_p (ebl, ehdr, &shdr_info[cnt].shdr, shdr_info[cnt].name, remove_comment, remove_debug) - || cnt == ehdr->e_shstrndx)) + || cnt == ehdr->e_shstrndx + || section_name_matches (remove_secs, shdr_info[cnt].name))) { + /* The user might want to explicitly keep this one. */ + if (section_name_matches (keep_secs, shdr_info[cnt].name)) + continue; + /* For now assume this section will be removed. */ shdr_info[cnt].idx = 0; @@ -2174,14 +2267,14 @@ while computing checksum for debug information")); if (shdr_info != NULL) { /* For some sections we might have created an table to map symbol - table indices. */ - if (any_symtab_changes) - for (cnt = 1; cnt <= shdridx; ++cnt) - { - free (shdr_info[cnt].newsymidx); - if (shdr_info[cnt].debug_data != NULL) - free (shdr_info[cnt].debug_data->d_buf); - } + table indices. Or we might kept (original) data around to put + into the .debug file. */ + for (cnt = 1; cnt <= shdridx; ++cnt) + { + free (shdr_info[cnt].newsymidx); + if (shdr_info[cnt].debug_data != NULL) + free (shdr_info[cnt].debug_data->d_buf); + } /* Free data we allocated for the .gnu_debuglink section. */ free (debuglink_buf); diff --git a/tests/ChangeLog b/tests/ChangeLog index ecf62630..3dd6f2a9 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2017-07-14 Mark Wielaard + + * run-strip-remove-keep.sh: New test. + * Makefile.am (TESTS): Add run-strip-remove-keep.sh. + (EXTRA_DIST): Likewise. + 2017-06-07 Mark Wielaard * run-strip-nothing.sh: New test. diff --git a/tests/Makefile.am b/tests/Makefile.am index 0aa16da1..7fd4b211 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -83,7 +83,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \ run-strip-nothing.sh \ run-strip-groups.sh run-strip-reloc.sh run-strip-strmerge.sh \ - run-strip-nobitsalign.sh \ + run-strip-nobitsalign.sh run-strip-remove-keep.sh \ run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-test3.sh \ run-unstrip-test4.sh run-unstrip-M.sh run-elfstrmerge-test.sh \ run-ecp-test.sh run-ecp-test2.sh run-alldts.sh \ @@ -176,7 +176,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \ run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \ run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \ - run-strip-nothing.sh \ + run-strip-nothing.sh run-strip-remove-keep.sh \ run-strip-strmerge.sh run-strip-nobitsalign.sh \ testfile-nobitsalign.bz2 testfile-nobitsalign.strip.bz2 \ run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \ diff --git a/tests/run-strip-remove-keep.sh b/tests/run-strip-remove-keep.sh new file mode 100755 index 00000000..92647fa7 --- /dev/null +++ b/tests/run-strip-remove-keep.sh @@ -0,0 +1,688 @@ +#! /bin/sh +# Copyright (C) 2017 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/test-subr.sh + +# strip -o output and -f debug files +tempfiles testfile.elf testfile.debug + +# A random 32bit testfile +testfiles testfile + +# Explicitly keep .strtab (but not .symtab, so .strtab will be in both). 32bit +echo strip --keep-section=.strtab testfile +testrun ${abs_top_builddir}/src/strip --keep-section=.strtab -o testfile.elf -f testfile.debug testfile +echo elflint testfile.elf +testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf +echo elflint testfile.debug +testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug +echo readelf testfile.elf +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF +There are 27 section headers, starting at offset 0xaf8: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 00000000 000000 000000 0 0 0 0 +[ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1 +[ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4 +[ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4 +[ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4 +[ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1 +[ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2 +[ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4 +[ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4 +[ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4 +[10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4 +[11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4 +[12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16 +[13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4 +[14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4 +[15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4 +[16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4 +[17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4 +[18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4 +[19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4 +[20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4 +[21] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4 +[22] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1 +[23] .note NOTE 00000000 000738 0000a0 0 0 0 1 +[24] .strtab STRTAB 00000000 0007d8 000235 0 0 0 1 +[25] .gnu_debuglink PROGBITS 00000000 000a10 000014 0 0 0 4 +[26] .shstrtab STRTAB 00000000 000a24 0000d1 0 0 0 1 + +EOF +echo readelf testfile.debug +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF +There are 35 section headers, starting at offset 0x463c: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 00000000 000000 000000 0 0 0 0 +[ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1 +[ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4 +[ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4 +[ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4 +[ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1 +[ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2 +[ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4 +[ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4 +[ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4 +[10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4 +[11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4 +[12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16 +[13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4 +[14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4 +[15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4 +[16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4 +[17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4 +[18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4 +[19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4 +[20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4 +[21] .sbss PROGBITS 080495c8 000120 000000 0 W 0 0 1 +[22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4 +[23] .stab PROGBITS 00000000 000120 000720 12 24 0 4 +[24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1 +[25] .comment NOBITS 00000000 002174 000170 0 0 0 1 +[26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1 +[27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1 +[28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1 +[29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1 +[30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1 +[31] .note NOTE 00000000 003c96 0000a0 0 0 0 1 +[32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1 +[33] .symtab SYMTAB 00000000 003e64 0005a0 16 34 68 4 +[34] .strtab STRTAB 00000000 004404 000235 0 0 0 1 + +EOF + +# Explicitly keep .symtab (pulls in .strtab, so they will both be in elf). 32bit +echo strip --keep-section=.symtab testfile +testrun ${abs_top_builddir}/src/strip --keep-section=.symtab -o testfile.elf -f testfile.debug testfile +echo elflint testfile.elf +testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf +echo elflint testfile.debug +testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug +echo readelf testfile.elf +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF +There are 28 section headers, starting at offset 0x1010: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 00000000 000000 000000 0 0 0 0 +[ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1 +[ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4 +[ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4 +[ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4 +[ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1 +[ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2 +[ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4 +[ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4 +[ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4 +[10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4 +[11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4 +[12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16 +[13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4 +[14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4 +[15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4 +[16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4 +[17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4 +[18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4 +[19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4 +[20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4 +[21] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4 +[22] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1 +[23] .note NOTE 00000000 000738 0000a0 0 0 0 1 +[24] .symtab SYMTAB 00000000 0007d8 000510 16 25 59 4 +[25] .strtab STRTAB 00000000 000ce8 000235 0 0 0 1 +[26] .gnu_debuglink PROGBITS 00000000 000f20 000014 0 0 0 4 +[27] .shstrtab STRTAB 00000000 000f34 0000d9 0 0 0 1 + +EOF +echo readelf testfile.debug +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF +There are 35 section headers, starting at offset 0x3e64: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 00000000 000000 000000 0 0 0 0 +[ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1 +[ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4 +[ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4 +[ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4 +[ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1 +[ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2 +[ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4 +[ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4 +[ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4 +[10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4 +[11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4 +[12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16 +[13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4 +[14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4 +[15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4 +[16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4 +[17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4 +[18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4 +[19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4 +[20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4 +[21] .sbss PROGBITS 080495c8 000120 000000 0 W 0 0 1 +[22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4 +[23] .stab PROGBITS 00000000 000120 000720 12 24 0 4 +[24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1 +[25] .comment NOBITS 00000000 002174 000170 0 0 0 1 +[26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1 +[27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1 +[28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1 +[29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1 +[30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1 +[31] .note NOTE 00000000 003c96 0000a0 0 0 0 1 +[32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1 +[33] .symtab NOBITS 00000000 003e64 0005a0 16 34 68 4 +[34] .strtab NOBITS 00000000 003e64 000235 0 0 0 1 + +EOF + +# A random 64bit testfile +testfiles testfile69.so +# Explicitly keep .strtab (but not .symtab, so .strtab will be in both). 64bit +echo strip --keep-section=.strtab testfile69.so +testrun ${abs_top_builddir}/src/strip --keep-section=.strtab -o testfile.elf -f testfile.debug testfile69.so +echo elflint testfile.elf +testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf +echo elflint testfile.debug +testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug +echo readelf testfile.elf +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF +There are 27 section headers, starting at offset 0xad8: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 +[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 +[ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8 +[ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8 +[ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1 +[ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2 +[ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8 +[ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8 +[ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8 +[ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4 +[10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16 +[11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16 +[12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4 +[13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4 +[14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8 +[15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8 +[16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8 +[17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8 +[18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8 +[19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8 +[20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8 +[21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8 +[22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8 +[23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1 +[24] .strtab STRTAB 0000000000000000 0000085c 00000175 0 0 0 1 +[25] .gnu_debuglink PROGBITS 0000000000000000 000009d4 00000014 0 0 0 4 +[26] .shstrtab STRTAB 0000000000000000 000009e8 000000ee 0 0 0 1 + +EOF +echo readelf testfile.debug +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF +There are 27 section headers, starting at offset 0x918: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 +[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 +[ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8 +[ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8 +[ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1 +[ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2 +[ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8 +[ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8 +[ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8 +[ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4 +[10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16 +[11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16 +[12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4 +[13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4 +[14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8 +[15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8 +[16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8 +[17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8 +[18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8 +[19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8 +[20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8 +[21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8 +[22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8 +[23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1 +[24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1 +[25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8 +[26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1 + +EOF + +# Explicitly keep .symtab (pulls in .strtab, so they will both be in elf). 64bit +# Use --remove-comment to make sure testfile.debug isn't empty. +echo strip --keep-section=.symtab --remove-comment testfile69.so +testrun ${abs_top_builddir}/src/strip --keep-section=.symtab --remove-comment -o testfile.elf -f testfile.debug testfile69.so +echo elflint testfile.elf +testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf +echo elflint testfile.debug +testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug +echo readelf testfile.elf +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF +There are 27 section headers, starting at offset 0xf90: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 +[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 +[ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8 +[ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8 +[ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1 +[ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2 +[ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8 +[ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8 +[ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8 +[ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4 +[10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16 +[11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16 +[12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4 +[13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4 +[14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8 +[15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8 +[16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8 +[17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8 +[18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8 +[19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8 +[20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8 +[21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8 +[22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8 +[23] .symtab SYMTAB 0000000000000000 00000830 000004e0 24 24 43 8 +[24] .strtab STRTAB 0000000000000000 00000d10 00000175 0 0 0 1 +[25] .gnu_debuglink PROGBITS 0000000000000000 00000e88 00000014 0 0 0 4 +[26] .shstrtab STRTAB 0000000000000000 00000e9c 000000ed 0 0 0 1 + +EOF +echo readelf testfile.debug +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF +There are 27 section headers, starting at offset 0x2d8: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 +[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 +[ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8 +[ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8 +[ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1 +[ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2 +[ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8 +[ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8 +[ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8 +[ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4 +[10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16 +[11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16 +[12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4 +[13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4 +[14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8 +[15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8 +[16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8 +[17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8 +[18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8 +[19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8 +[20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8 +[21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8 +[22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8 +[23] .comment PROGBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1 +[24] .shstrtab STRTAB 0000000000000000 000001ec 000000e7 0 0 0 1 +[25] .symtab NOBITS 0000000000000000 000002d8 000004f8 24 26 44 8 +[26] .strtab NOBITS 0000000000000000 000002d8 00000175 0 0 0 1 + +EOF + +# Explicitly remove .symtab (but not .strtab, so it will be in both). 32bit +echo strip -g --remove-section=.symtab testfile +testrun ${abs_top_builddir}/src/strip -g --remove-section=.symtab -o testfile.elf -f testfile.debug testfile +echo elflint testfile.elf +testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf +echo elflint testfile.debug +testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug +echo readelf testfile.elf +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF +There are 28 section headers, starting at offset 0xafc: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 00000000 000000 000000 0 0 0 0 +[ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1 +[ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4 +[ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4 +[ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4 +[ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1 +[ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2 +[ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4 +[ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4 +[ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4 +[10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4 +[11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4 +[12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16 +[13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4 +[14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4 +[15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4 +[16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4 +[17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4 +[18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4 +[19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4 +[20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4 +[21] .sbss PROGBITS 080495c8 0005c8 000000 0 W 0 0 1 +[22] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4 +[23] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1 +[24] .note NOTE 00000000 000738 0000a0 0 0 0 1 +[25] .strtab STRTAB 00000000 0007d8 000235 0 0 0 1 +[26] .gnu_debuglink PROGBITS 00000000 000a10 000014 0 0 0 4 +[27] .shstrtab STRTAB 00000000 000a24 0000d7 0 0 0 1 + +EOF +echo readelf testfile.debug +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF +There are 35 section headers, starting at offset 0x463c: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 00000000 000000 000000 0 0 0 0 +[ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1 +[ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4 +[ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4 +[ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4 +[ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1 +[ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2 +[ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4 +[ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4 +[ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4 +[10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4 +[11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4 +[12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16 +[13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4 +[14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4 +[15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4 +[16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4 +[17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4 +[18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4 +[19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4 +[20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4 +[21] .sbss NOBITS 080495c8 000120 000000 0 W 0 0 1 +[22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4 +[23] .stab PROGBITS 00000000 000120 000720 12 24 0 4 +[24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1 +[25] .comment NOBITS 00000000 002174 000170 0 0 0 1 +[26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1 +[27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1 +[28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1 +[29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1 +[30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1 +[31] .note NOTE 00000000 003c96 0000a0 0 0 0 1 +[32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1 +[33] .symtab SYMTAB 00000000 003e64 0005a0 16 34 68 4 +[34] .strtab STRTAB 00000000 004404 000235 0 0 0 1 + +EOF + +# Explicitly remove both .symtab and .strtab. Keep .stab and .stabstr 32bit +echo strip -g --remove-section=".s[yt][mr]tab" --keep-section=".stab*" testfile +testrun ${abs_top_builddir}/src/strip -g --remove-section=".s[yt][mr]tab" --keep-section=".stab*" -o testfile.elf -f testfile.debug testfile +echo elflint testfile.elf +testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf +echo elflint testfile.debug +testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug +echo readelf testfile.elf +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF +There are 29 section headers, starting at offset 0x2920: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 00000000 000000 000000 0 0 0 0 +[ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1 +[ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4 +[ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4 +[ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4 +[ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1 +[ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2 +[ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4 +[ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4 +[ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4 +[10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4 +[11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4 +[12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16 +[13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4 +[14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4 +[15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4 +[16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4 +[17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4 +[18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4 +[19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4 +[20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4 +[21] .sbss PROGBITS 080495c8 0005c8 000000 0 W 0 0 1 +[22] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4 +[23] .stab PROGBITS 00000000 0005c8 000720 12 24 0 4 +[24] .stabstr STRTAB 00000000 000ce8 001934 0 0 0 1 +[25] .comment PROGBITS 00000000 00261c 000170 0 0 0 1 +[26] .note NOTE 00000000 00278c 0000a0 0 0 0 1 +[27] .gnu_debuglink PROGBITS 00000000 00282c 000014 0 0 0 4 +[28] .shstrtab STRTAB 00000000 002840 0000de 0 0 0 1 + +EOF +echo readelf testfile.debug +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF +There are 35 section headers, starting at offset 0x25e8: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 00000000 000000 000000 0 0 0 0 +[ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1 +[ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4 +[ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4 +[ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4 +[ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1 +[ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2 +[ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4 +[ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4 +[ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4 +[10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4 +[11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4 +[12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16 +[13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4 +[14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4 +[15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4 +[16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4 +[17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4 +[18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4 +[19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4 +[20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4 +[21] .sbss NOBITS 080495c8 000120 000000 0 W 0 0 1 +[22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4 +[23] .stab NOBITS 00000000 000120 000720 12 24 0 4 +[24] .stabstr NOBITS 00000000 000120 001934 0 0 0 1 +[25] .comment NOBITS 00000000 000120 000170 0 0 0 1 +[26] .debug_aranges PROGBITS 00000000 000120 000060 0 0 0 1 +[27] .debug_pubnames PROGBITS 00000000 000180 000055 0 0 0 1 +[28] .debug_info PROGBITS 00000000 0001d5 001678 0 0 0 1 +[29] .debug_abbrev PROGBITS 00000000 00184d 0001d2 0 0 0 1 +[30] .debug_line PROGBITS 00000000 001a1f 000223 0 0 0 1 +[31] .note NOTE 00000000 001c42 0000a0 0 0 0 1 +[32] .shstrtab STRTAB 00000000 001ce2 00012e 0 0 0 1 +[33] .symtab SYMTAB 00000000 001e10 0005a0 16 34 68 4 +[34] .strtab STRTAB 00000000 0023b0 000235 0 0 0 1 + +EOF + +# Explicitly remove .symtab (but not .strtab, so it will be in both). 64bit +echo strip -g --remove-section=.symtab testfile69.so +testrun ${abs_top_builddir}/src/strip -g --remove-section=.symtab -o testfile.elf -f testfile.debug testfile69.so +echo elflint testfile.elf +testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf +echo elflint testfile.debug +testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug +echo readelf testfile.elf +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF +There are 27 section headers, starting at offset 0xad8: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 +[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 +[ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8 +[ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8 +[ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1 +[ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2 +[ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8 +[ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8 +[ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8 +[ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4 +[10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16 +[11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16 +[12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4 +[13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4 +[14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8 +[15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8 +[16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8 +[17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8 +[18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8 +[19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8 +[20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8 +[21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8 +[22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8 +[23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1 +[24] .strtab STRTAB 0000000000000000 0000085c 00000175 0 0 0 1 +[25] .gnu_debuglink PROGBITS 0000000000000000 000009d4 00000014 0 0 0 4 +[26] .shstrtab STRTAB 0000000000000000 000009e8 000000ee 0 0 0 1 + +EOF +echo readelf testfile.debug +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF +There are 27 section headers, starting at offset 0x918: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 +[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 +[ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8 +[ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8 +[ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1 +[ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2 +[ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8 +[ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8 +[ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8 +[ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4 +[10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16 +[11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16 +[12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4 +[13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4 +[14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8 +[15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8 +[16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8 +[17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8 +[18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8 +[19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8 +[20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8 +[21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8 +[22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8 +[23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1 +[24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1 +[25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8 +[26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1 + +EOF + +# Explicitly remove both .symtab and .strtab. Keep .comment section. 64bit +echo strip -g --remove-section=".s[yt][mr]tab" --keep-section=.comment testfile69.so +testrun ${abs_top_builddir}/src/strip -g --remove-section=".s[yt][mr]tab" --keep-section=.comment -o testfile.elf -f testfile.debug testfile69.so +echo elflint testfile.elf +testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf +echo elflint testfile.debug +testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug +echo readelf testfile.elf +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF +There are 26 section headers, starting at offset 0x958: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 +[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 +[ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8 +[ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8 +[ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1 +[ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2 +[ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8 +[ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8 +[ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8 +[ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4 +[10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16 +[11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16 +[12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4 +[13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4 +[14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8 +[15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8 +[16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8 +[17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8 +[18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8 +[19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8 +[20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8 +[21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8 +[22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8 +[23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1 +[24] .gnu_debuglink PROGBITS 0000000000000000 0000085c 00000014 0 0 0 4 +[25] .shstrtab STRTAB 0000000000000000 00000870 000000e6 0 0 0 1 + +EOF +echo readelf testfile.debug +testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF +There are 27 section headers, starting at offset 0x918: + +Section Headers: +[Nr] Name Type Addr Off Size ES Flags Lk Inf Al +[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 +[ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 +[ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8 +[ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8 +[ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1 +[ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2 +[ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8 +[ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8 +[ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8 +[ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4 +[10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16 +[11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16 +[12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4 +[13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4 +[14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8 +[15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8 +[16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8 +[17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8 +[18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8 +[19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8 +[20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8 +[21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8 +[22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8 +[23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1 +[24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1 +[25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8 +[26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1 + +EOF + +exit 0 -- cgit v1.2.3 From 1dd301b7c302b9df980946e2d04ca99748754991 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Mon, 17 Jul 2017 17:26:25 +0200 Subject: backends: Swap sys/ptrace.h and asm/ptrace.h include order on s390. glibc 2.26 changed the sys/ptrace.h header so that it cannot be included after asm/ptrace.h. We still need to include the kernel asm/ptrace.h for the ptrace_area definition. Including it after sys/ptrace.h works against both old and new glibc. Signed-off-by: Mark Wielaard --- backends/ChangeLog | 4 ++++ backends/s390_initreg.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index c5f61e85..d6282451 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,7 @@ +2017-06-17 Mark Wielaard + + * s390_initreg.c: Swap sys/ptrace.h and asm/ptrace.h include order. + 2017-06-15 Andreas Schwab * ppc_symbol.c (ppc_machine_flag_check): New function. diff --git a/backends/s390_initreg.c b/backends/s390_initreg.c index 011305ce..23bf8edc 100644 --- a/backends/s390_initreg.c +++ b/backends/s390_initreg.c @@ -34,8 +34,8 @@ #include #if defined(__s390__) && defined(__linux__) # include -# include # include +# include #endif #define BACKEND s390_ -- cgit v1.2.3 From 8abf0b5b580094af36b9dc4ed6748379caa32a0e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 17 Feb 2017 16:11:28 +0100 Subject: Unify linking of libasm, libelf, libdw, backends Link them all with -z,defs,-z,relro,--no-undefined, provide complete dependencies for the link steps, and add libeu.a to each one. libeu.a contains useful library functionality that each of them might use. The linker will strip unneeded symbols, so linking it in won't hurt even if none of the functions are used. Signed-off-by: Ulf Hermann --- backends/ChangeLog | 6 ++++++ backends/Makefile.am | 7 ++++--- libasm/ChangeLog | 11 +++++++++++ libasm/Makefile.am | 14 ++++++++------ libdw/ChangeLog | 9 +++++++++ libdw/Makefile.am | 15 +++++++++------ libelf/ChangeLog | 8 ++++++++ libelf/Makefile.am | 14 +++++++++----- 8 files changed, 64 insertions(+), 20 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index d6282451..784e6b03 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,9 @@ +2017-02-17 Ulf Hermann + + * Makefile.am: Add libeu. + (libebl_%so): Link with --no-undefined,-z,defs,-z,relro + and libeu.a. + 2017-06-17 Mark Wielaard * s390_initreg.c: Swap sys/ptrace.h and asm/ptrace.h include order. diff --git a/backends/Makefile.am b/backends/Makefile.am index ac45a452..996602f2 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -45,6 +45,7 @@ noinst_DATA = $(libebl_pic:_pic.a=.so) libelf = ../libelf/libelf.so libdw = ../libdw/libdw.so +libeu = ../lib/libeu.a i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \ i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c \ @@ -129,14 +130,14 @@ libebl_bpf_pic_a_SOURCES = $(bpf_SRCS) am_libebl_bpf_pic_a_OBJECTS = $(bpf_SRCS:.c=.os) -libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) +libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu) @rm -f $(@:.so=.map) $(AM_V_at)echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \ > $(@:.so=.map) $(AM_V_CCLD)$(LINK) -shared -o $(@:.map=.so) \ -Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \ - -Wl,--version-script,$(@:.so=.map) \ - -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) + -Wl,--version-script,$(@:.so=.map),--no-undefined \ + -Wl,-z,defs,-z,relro -Wl,--as-needed $(libelf) $(libdw) $(libeu) @$(textrel_check) libebl_i386.so: $(cpu_i386) diff --git a/libasm/ChangeLog b/libasm/ChangeLog index d2bc4086..262d2a92 100644 --- a/libasm/ChangeLog +++ b/libasm/ChangeLog @@ -1,3 +1,14 @@ +2017-02-17 Ulf Hermann + + * Makefile.am: Add libasm_so_DEPS to specify external libraries + that have to be linked in, and libasm_so_LIBS to specify the + archives libasm consists of. The dependencies include libeu.a. + (libasm_so_LDLIBS): Add $(libasm_so_DEPS). + (libasm_so$(EXEEXT): Use $(libasm_so_LIBS), + add --no-undefined,-z,defs,-z,relro, + drop the manual enumeration of dependencies, + specify the correct path for libasm.map. + 2017-04-27 Ulf Hermann * asm_end.c (binary_end): Fix nesting of braces. diff --git a/libasm/Makefile.am b/libasm/Makefile.am index 8094b05c..9effa6c5 100644 --- a/libasm/Makefile.am +++ b/libasm/Makefile.am @@ -55,17 +55,19 @@ libasm_a_SOURCES = asm_begin.c asm_abort.c asm_end.c asm_error.c \ libasm_pic_a_SOURCES = am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os) -libasm_so_LDLIBS = +libasm_so_DEPS = ../lib/libeu.a ../libebl/libebl.a ../libelf/libelf.so ../libdw/libdw.so +libasm_so_LDLIBS = $(libasm_so_DEPS) if USE_LOCKS libasm_so_LDLIBS += -lpthread endif +libasm_so_LIBS = libasm_pic.a libasm_so_SOURCES = -libasm.so$(EXEEXT): libasm_pic.a libasm.map - $(AM_V_CCLD)$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION) \ - ../libebl/libebl.a ../libelf/libelf.so ../libdw/libdw.so \ +libasm.so$(EXEEXT): $(srcdir)/libasm.map $(libasm_so_LIBS) $(libasm_so_DEPS) + $(AM_V_CCLD)$(LINK) -shared -o $@ \ + -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \ + -Wl,--version-script,$<,--no-undefined \ + -Wl,--whole-archive $(libasm_so_LIBS) -Wl,--no-whole-archive \ $(libasm_so_LDLIBS) @$(textrel_check) $(AM_V_at)ln -fs $@ $@.$(VERSION) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 1e282e4e..8eda70cd 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,12 @@ +2017-02-17 Ulf Hermann + + * Makefile.am: Add libdw_so_LIBS to specify the archives libdw is is + made of, libdw_so_DEPS for libraries it depends on (including + libeu.a), libdw_so_LDLIBS to specify libraries libdw links against. + (libdw.so$(EXEEXT)): Add $(libdw_so_LDLIBS), remove enumeration of + library dependencies, use libdw_so_LIBS rather than relying on the + order of dependencies specified, add -z,relro. + 2017-04-20 Ulf Hermann * libdw.h: Remove attribute macro declarations and use diff --git a/libdw/Makefile.am b/libdw/Makefile.am index 082d96c7..634ac2ec 100644 --- a/libdw/Makefile.am +++ b/libdw/Makefile.am @@ -102,17 +102,20 @@ endif libdw_pic_a_SOURCES = am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os) +libdw_so_LIBS = libdw_pic.a ../libdwelf/libdwelf_pic.a \ + ../libdwfl/libdwfl_pic.a ../libebl/libebl.a +libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so +libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) libdw_so_SOURCES = -libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \ - ../libdwfl/libdwfl_pic.a ../libebl/libebl.a \ - ../libelf/libelf.so +libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS) # The rpath is necessary for libebl because its $ORIGIN use will # not fly in a setuid executable that links in libdw. - $(AM_V_CCLD)$(LINK) -shared -o $@ -Wl,--soname,$@.$(VERSION),-z,defs \ + $(AM_V_CCLD)$(LINK) -shared -o $@ \ + -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \ -Wl,--enable-new-dtags,-rpath,$(pkglibdir) \ -Wl,--version-script,$<,--no-undefined \ - -Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\ - -ldl -lz $(argp_LDADD) $(zip_LIBS) + -Wl,--whole-archive $(libdw_so_LIBS) -Wl,--no-whole-archive \ + $(libdw_so_LDLIBS) @$(textrel_check) $(AM_V_at)ln -fs $@ $@.$(VERSION) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 594bec99..214a4f7e 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,11 @@ +2017-02-17 Ulf hermann + + * Makefile.am: Add libelf_so_DEPS, which include libeu.a, + libelf_so_LIBS. + (libelf_so_LDLIBS): Add $(libelf_so_DEPS). + (libelf.so$(EXEEXT): Use $(libelf_so_LIBS), require libelf.map + from the right directory. + 2017-04-20 Ulf Hermann * libelfP.h: Don't include config.h. diff --git a/libelf/Makefile.am b/libelf/Makefile.am index 167a8322..88c1edd7 100644 --- a/libelf/Makefile.am +++ b/libelf/Makefile.am @@ -95,16 +95,20 @@ libelf_a_SOURCES = elf_version.c elf_hash.c elf_error.c elf_fill.c \ libelf_pic_a_SOURCES = am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os) -libelf_so_LDLIBS = -lz +libelf_so_DEPS = ../lib/libeu.a +libelf_so_LDLIBS = $(libelf_so_DEPS) -lz if USE_LOCKS libelf_so_LDLIBS += -lpthread endif +libelf_so_LIBS = libelf_pic.a libelf_so_SOURCES = -libelf.so$(EXEEXT): libelf_pic.a libelf.map - $(AM_V_CCLD)$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro $(libelf_so_LDLIBS) +libelf.so$(EXEEXT): $(srcdir)/libelf.map $(libelf_so_LIBS) $(libelf_so_DEPS) + $(AM_V_CCLD)$(LINK) -shared -o $@ \ + -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \ + -Wl,--version-script,$<,--no-undefined \ + -Wl,--whole-archive $(libelf_so_LIBS) -Wl,--no-whole-archive \ + $(libelf_so_LDLIBS) @$(textrel_check) $(AM_V_at)ln -fs $@ $@.$(VERSION) -- cgit v1.2.3 From c8e16c12661d18e6ae724a6d89b81c0df9da365a Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 4 May 2017 17:27:47 +0200 Subject: Write to /dev/null rather than /dev/zero /dev/zero is meant for reading zeroes. /dev/null is for writing into nirvana. Signed-off-by: Ulf Hermann --- tests/ChangeLog | 4 ++++ tests/elfshphehdr.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/ChangeLog b/tests/ChangeLog index 3dd6f2a9..a4404e42 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2017-05-04 Ulf Hermann + + * elfshphehdr.c: For writing, use /dev/null rather than /dev/zero. + 2017-07-14 Mark Wielaard * run-strip-remove-keep.sh: New test. diff --git a/tests/elfshphehdr.c b/tests/elfshphehdr.c index 5a297e0d..8183937c 100644 --- a/tests/elfshphehdr.c +++ b/tests/elfshphehdr.c @@ -152,7 +152,7 @@ main (int argc __attribute__ ((unused)), char **argv __attribute ((unused))) { elf_version (EV_CURRENT); - int fd = fd = open("/dev/zero", O_WRONLY); + int fd = open("/dev/null", O_WRONLY); check ("open", fd >= 0); Elf *elf; -- cgit v1.2.3 From 1609679b1ef3611c71a08900c2f6b94bb97d454d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 18 Jul 2017 14:12:36 +0200 Subject: backends: Don't depend on linux/bpf.h to compile bpf disassembler. We only need a few constants and one structure definition from linux/bpf. Just define those in a local lib/bpf.h file. This makes sure the bpf disassembler is always build and included even when elfutils is build on older GNU/Linux systems (and even on other platforms). Signed-off-by: Mark Wielaard --- ChangeLog | 5 ++++ NEWS | 2 ++ backends/ChangeLog | 7 +++++ backends/Makefile.am | 5 ---- backends/bpf_init.c | 2 -- backends/bpf_regs.c | 6 +--- configure.ac | 4 --- lib/ChangeLog | 5 ++++ lib/Makefile.am | 2 +- lib/bpf.h | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ libcpu/ChangeLog | 6 ++++ libcpu/Makefile.am | 2 -- libcpu/bpf_disasm.c | 7 +---- tests/ChangeLog | 4 +++ tests/Makefile.am | 5 +--- 15 files changed, 115 insertions(+), 29 deletions(-) create mode 100644 lib/bpf.h diff --git a/ChangeLog b/ChangeLog index c9db732c..b5f7095b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-07-18 Mark Wielaard + + * configure.ac: Don't check for linux/bpf.h. + * NEWS: Mention always build bpf backend. + 2017-07-14 Mark Wielaard * NEWS: Add 0.170 section and new strip options. diff --git a/NEWS b/NEWS index b69aef45..045d579a 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,8 @@ Version 0.170 strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. +backends: The bpf disassembler is now always build on all platforms. + Version 0.169 backends: Add support for EM_PPC64 GNU_ATTRIBUTES. diff --git a/backends/ChangeLog b/backends/ChangeLog index 784e6b03..eb7e25f1 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,10 @@ +2017-07-18 Mark Wielaard + + * Makefile.am (cpu_bpf): Always define. + * bpf_init.c (disasm): Always hook. + * bpf_regs.c: Include bpf.h instead of linux/bpf.h. Don't define + MAX_BPF_REG. + 2017-02-17 Ulf Hermann * Makefile.am: Add libeu. diff --git a/backends/Makefile.am b/backends/Makefile.am index 996602f2..37dc2d20 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -120,12 +120,7 @@ libebl_m68k_pic_a_SOURCES = $(m68k_SRCS) am_libebl_m68k_pic_a_OBJECTS = $(m68k_SRCS:.c=.os) bpf_SRCS = bpf_init.c bpf_regs.c -# The disam hook depends on this if we have linux/bpf.h. -if HAVE_LINUX_BPF_H cpu_bpf = ../libcpu/libcpu_bpf.a -else -cpu_bpf = -endif libebl_bpf_pic_a_SOURCES = $(bpf_SRCS) am_libebl_bpf_pic_a_OBJECTS = $(bpf_SRCS:.c=.os) diff --git a/backends/bpf_init.c b/backends/bpf_init.c index 22842e26..8ea1bc1a 100644 --- a/backends/bpf_init.c +++ b/backends/bpf_init.c @@ -52,9 +52,7 @@ bpf_init (Elf *elf __attribute__ ((unused)), eh->name = "BPF"; bpf_init_reloc (eh); HOOK (eh, register_info); -#ifdef HAVE_LINUX_BPF_H HOOK (eh, disasm); -#endif return MODVERSION; } diff --git a/backends/bpf_regs.c b/backends/bpf_regs.c index 180af83b..1863a164 100644 --- a/backends/bpf_regs.c +++ b/backends/bpf_regs.c @@ -32,11 +32,7 @@ #include #include -#ifdef HAVE_LINUX_BPF_H -#include -#else -#define MAX_BPF_REG 10 -#endif +#include "bpf.h" #define BACKEND bpf_ #include "libebl_CPU.h" diff --git a/configure.ac b/configure.ac index c2c1d90b..bb58f4b8 100644 --- a/configure.ac +++ b/configure.ac @@ -385,10 +385,6 @@ else fi AC_SUBST([argp_LDADD]) -dnl Check if we have for EM_BPF disassembly. -AC_CHECK_HEADERS(linux/bpf.h) -AM_CONDITIONAL(HAVE_LINUX_BPF_H, [test "x$ac_cv_header_linux_bpf_h" = "xyes"]) - dnl The directories with content. dnl Documentation. diff --git a/lib/ChangeLog b/lib/ChangeLog index 1fc1a38c..1f162286 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2017-07-18 Mark Wielaard + + * bpf.h: New file. + * Makefile.am (noinst_HEADERS): Add bpf.h + 2017-05-05 Mark Wielaard * printversion.c (print_version): Update copyright year. diff --git a/lib/Makefile.am b/lib/Makefile.am index 7a65eb91..ada2030d 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -38,7 +38,7 @@ libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c \ color.c printversion.c noinst_HEADERS = fixedsizehash.h libeu.h system.h dynamicsizehash.h list.h \ - md5.h sha1.h eu-config.h color.h printversion.h + md5.h sha1.h eu-config.h color.h printversion.h bpf.h EXTRA_DIST = dynamicsizehash.c if !GPROF diff --git a/lib/bpf.h b/lib/bpf.h new file mode 100644 index 00000000..db80a51e --- /dev/null +++ b/lib/bpf.h @@ -0,0 +1,82 @@ +/* Minimal extended BPF constants as alternative for linux/bpf.h. */ + +#ifndef _ELFUTILS_BPF_H +#define _ELFUTILS_BPF_H 1 + +#include + +#define BPF_CLASS(code) ((code) & 0x07) + +#define BPF_LD 0x00 +#define BPF_LDX 0x01 +#define BPF_ST 0x02 +#define BPF_STX 0x03 +#define BPF_ALU 0x04 +#define BPF_JMP 0x05 +#define BPF_RET 0x06 +#define BPF_MISC 0x07 + +#define BPF_ALU64 0x07 + +#define BPF_JNE 0x50 +#define BPF_JSGT 0x60 +#define BPF_JSGE 0x70 +#define BPF_CALL 0x80 +#define BPF_EXIT 0x90 + +#define BPF_W 0x00 +#define BPF_H 0x08 +#define BPF_B 0x10 + +#define BPF_IMM 0x00 +#define BPF_ABS 0x20 +#define BPF_IND 0x40 +#define BPF_MEM 0x60 +#define BPF_LEN 0x80 +#define BPF_MSH 0xa0 + +#define BPF_DW 0x18 +#define BPF_XADD 0xc0 + +#define BPF_ADD 0x00 +#define BPF_SUB 0x10 +#define BPF_MUL 0x20 +#define BPF_DIV 0x30 +#define BPF_OR 0x40 +#define BPF_AND 0x50 +#define BPF_LSH 0x60 +#define BPF_RSH 0x70 +#define BPF_NEG 0x80 +#define BPF_MOD 0x90 +#define BPF_XOR 0xa0 + +#define BPF_MOV 0xb0 +#define BPF_ARSH 0xc0 + +#define BPF_JA 0x00 +#define BPF_JEQ 0x10 +#define BPF_JGT 0x20 +#define BPF_JGE 0x30 +#define BPF_JSET 0x40 + +#define BPF_K 0x00 +#define BPF_X 0x08 + +#define BPF_END 0xd0 +#define BPF_TO_LE 0x00 +#define BPF_TO_BE 0x08 + +#define BPF_PSEUDO_MAP_FD 1 + +#define MAX_BPF_REG 10 + +struct bpf_insn +{ + uint8_t code; + uint8_t dst_reg:4; + uint8_t src_reg:4; + int16_t off; + int32_t imm; +}; + +#endif diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 22bec9b3..28b220fc 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,9 @@ +2017-07-18 Mark Wielaard + + * Makefile.am: Don't check HAVE_LINUX_BPF_H, just define libcpu_bpf. + * bpf_disasm.c: Include bpf.h instead of linux/bpf.h. Don't define + BPF_PSEUDO_MAP_FD. + 2017-04-20 Ulf Hermann * Makefile.am: Add EXEEXT to gendis. diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am index 31fc906b..94de56ef 100644 --- a/libcpu/Makefile.am +++ b/libcpu/Makefile.am @@ -45,11 +45,9 @@ i386_gendis_SOURCES = i386_gendis.c i386_lex.l i386_parse.y i386_disasm.o: i386.mnemonics $(srcdir)/i386_dis.h x86_64_disasm.o: x86_64.mnemonics $(srcdir)/x86_64_dis.h -if HAVE_LINUX_BPF_H noinst_LIBRARIES += libcpu_bpf.a libcpu_bpf_a_SOURCES = bpf_disasm.c libcpu_bpf_a_CFLAGS = $(AM_CFLAGS) -Wno-format-nonliteral -endif %_defs: $(srcdir)/defs/i386 $(AM_V_GEN)m4 -D$* -DDISASSEMBLER $< > $@T diff --git a/libcpu/bpf_disasm.c b/libcpu/bpf_disasm.c index e4bbae4a..054aba2b 100644 --- a/libcpu/bpf_disasm.c +++ b/libcpu/bpf_disasm.c @@ -35,16 +35,11 @@ #include #include #include -#include +#include "bpf.h" #include "../libelf/common.h" #include "../libebl/libeblP.h" -/* BPF_PSEUDO_MAP_FD was only introduced in linux 3.20. */ -#ifndef BPF_PSEUDO_MAP_FD - #define BPF_PSEUDO_MAP_FD 1 -#endif - static const char class_string[8][8] = { [BPF_LD] = "ld", [BPF_LDX] = "ldx", diff --git a/tests/ChangeLog b/tests/ChangeLog index a4404e42..194d019f 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2017-07-18 Mark Wielaard + + * Makefile.am (TESTS): Always add run-disasm-bpf.sh if HAVE_LIBASM. + 2017-05-04 Ulf Hermann * elfshphehdr.c: For writing, use /dev/null rather than /dev/zero. diff --git a/tests/Makefile.am b/tests/Makefile.am index 7fd4b211..368e9263 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -156,10 +156,7 @@ endif if HAVE_LIBASM check_PROGRAMS += $(asm_TESTS) -TESTS += $(asm_TESTS) -if HAVE_LINUX_BPF_H -TESTS += run-disasm-bpf.sh -endif +TESTS += $(asm_TESTS) run-disasm-bpf.sh endif EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ -- cgit v1.2.3 From 55cb7dfa7e9afb3660b21e51434641c7287baf11 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 20 Jul 2017 22:34:29 +0200 Subject: strip: Deal with ARM data marker symbols pointing to debug sections. ARM data marker symbols "$d" indicate the start of a sequence of data items in a section. For data only sections no data marker symbol is necessary, but may be put pointing to the start of the section. binutils however has a bug which places a data marker symbol somewhere inside the section (at least for .debug_frame). https://sourceware.org/bugzilla/show_bug.cgi?id=21809 When strip finds a symbol pointing to a debug section that would be put into the .debug file then it will copy over the whole symbol table. This isn't necessary because the symbol is redundant. Add an ebl hook to recognize data marker symbols with implementations for arm and aarch64. Use it in strip to strip such symbols from the symbol table if they point to a debug section. Signed-off-by: Mark Wielaard --- backends/ChangeLog | 7 +++ backends/aarch64_init.c | 3 +- backends/aarch64_symbol.c | 14 +++++- backends/arm_init.c | 3 +- backends/arm_symbol.c | 15 +++++- libebl/ChangeLog | 9 ++++ libebl/Makefile.am | 5 +- libebl/ebl-hooks.h | 5 +- libebl/ebl_data_marker_symbol.c | 44 +++++++++++++++++ libebl/eblopenbackend.c | 11 ++++- libebl/libebl.h | 6 ++- src/ChangeLog | 5 ++ src/strip.c | 30 +++++++++--- tests/ChangeLog | 6 +++ tests/Makefile.am | 4 +- tests/run-strip-g.sh | 102 ++++++++++++++++++++++++++++++++++++++++ 16 files changed, 252 insertions(+), 17 deletions(-) create mode 100644 libebl/ebl_data_marker_symbol.c create mode 100755 tests/run-strip-g.sh diff --git a/backends/ChangeLog b/backends/ChangeLog index eb7e25f1..88b9764a 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,10 @@ +2017-08-20 Mark Wielaard + + * aarch64_init.c (aarch64_init): Hook data_marker_symbol. + * aarch64_symbol.c (aarch64_data_marker_symbol): New function. + * arm_init.c (arm_init): Hook data_marker_symbol. + * arm_symbol.c (aarch64_data_marker_symbol): New function. + 2017-07-18 Mark Wielaard * Makefile.am (cpu_bpf): Always define. diff --git a/backends/aarch64_init.c b/backends/aarch64_init.c index 08664943..fad923fa 100644 --- a/backends/aarch64_init.c +++ b/backends/aarch64_init.c @@ -1,5 +1,5 @@ /* Initialization of AArch64 specific backend library. - Copyright (C) 2013 Red Hat, Inc. + Copyright (C) 2013, 2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -56,6 +56,7 @@ aarch64_init (Elf *elf __attribute__ ((unused)), HOOK (eh, reloc_simple_type); HOOK (eh, return_value_location); HOOK (eh, check_special_symbol); + HOOK (eh, data_marker_symbol); HOOK (eh, abi_cfi); /* X0-X30 (31 regs) + SP + 1 Reserved + ELR, 30 Reserved regs (34-43) diff --git a/backends/aarch64_symbol.c b/backends/aarch64_symbol.c index 76999e4b..da3382e9 100644 --- a/backends/aarch64_symbol.c +++ b/backends/aarch64_symbol.c @@ -1,5 +1,5 @@ /* AArch64 specific symbolic name handling. - Copyright (C) 2013, 2015 Red Hat, Inc. + Copyright (C) 2013, 2015, 2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -90,3 +90,15 @@ aarch64_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, const GElf_Sym *sym, return false; } + +/* A data mapping symbol is a symbol with "$d" name or "$d." name, + STT_NOTYPE, STB_LOCAL and st_size of zero. The indicate the stat of a + sequence of data items. */ +bool +aarch64_data_marker_symbol (const GElf_Sym *sym, const char *sname) +{ + return (sym != NULL && sname != NULL + && sym->st_size == 0 && GELF_ST_BIND (sym->st_info) == STB_LOCAL + && GELF_ST_TYPE (sym->st_info) == STT_NOTYPE + && (strcmp (sname, "$d") == 0 || strncmp (sname, "$d.", 3) == 0)); +} diff --git a/backends/arm_init.c b/backends/arm_init.c index caadac65..f2b1b11e 100644 --- a/backends/arm_init.c +++ b/backends/arm_init.c @@ -1,5 +1,5 @@ /* Initialization of Arm specific backend library. - Copyright (C) 2002, 2005, 2009, 2013, 2014, 2015 Red Hat, Inc. + Copyright (C) 2002, 2005, 2009, 2013, 2014, 2015, 2017 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2002. @@ -64,6 +64,7 @@ arm_init (Elf *elf __attribute__ ((unused)), HOOK (eh, abi_cfi); HOOK (eh, check_reloc_target_type); HOOK (eh, symbol_type_name); + HOOK (eh, data_marker_symbol); /* We only unwind the core integer registers. */ eh->frame_nregs = 16; diff --git a/backends/arm_symbol.c b/backends/arm_symbol.c index da4a50a7..3edda724 100644 --- a/backends/arm_symbol.c +++ b/backends/arm_symbol.c @@ -1,5 +1,5 @@ /* Arm specific symbolic name handling. - Copyright (C) 2002-2009, 2014, 2015 Red Hat, Inc. + Copyright (C) 2002-2009, 2014, 2015, 2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -32,6 +32,7 @@ #include #include +#include #define BACKEND arm_ #include "libebl_CPU.h" @@ -142,3 +143,15 @@ arm_symbol_type_name (int type, } return NULL; } + +/* A data mapping symbol is a symbol with "$d" name or "$d." name, + * STT_NOTYPE, STB_LOCAL and st_size of zero. The indicate the stat of a + * sequence of data items. */ +bool +arm_data_marker_symbol (const GElf_Sym *sym, const char *sname) +{ + return (sym != NULL && sname != NULL + && sym->st_size == 0 && GELF_ST_BIND (sym->st_info) == STB_LOCAL + && GELF_ST_TYPE (sym->st_info) == STT_NOTYPE + && (strcmp (sname, "$d") == 0 || strncmp (sname, "$d.", 3) == 0)); +} diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 506915ba..f4474496 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,12 @@ +2017-07-20 Mark Wielaard + + * Makefile.am (gen_SOURCES): Add ebl_data_marker_symbol.c. + * ebl-hooks.h (data_marker_symbol): New hook. + * ebl_data_marker_symbol.c: New file. + * eblopenbackend.c (default_data_marker_symbol): New function. + (fill_defaults): Add default_data_marker_symbol. + * libebl.h (ebl_data_marker_symbol): New function. + 2017-04-20 Ulf Hermann * libebl.h: Use __pure_attribute__. diff --git a/libebl/Makefile.am b/libebl/Makefile.am index 6f945eb8..2491df80 100644 --- a/libebl/Makefile.am +++ b/libebl/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to create Makefile.in ## -## Copyright (C) 2000-2010, 2013, 2016 Red Hat, Inc. +## Copyright (C) 2000-2010, 2013, 2016, 2017 Red Hat, Inc. ## This file is part of elfutils. ## ## This file is free software; you can redistribute it and/or modify @@ -53,7 +53,8 @@ gen_SOURCES = eblopenbackend.c eblclosebackend.c \ eblsysvhashentrysize.c eblauxvinfo.c eblcheckobjattr.c \ ebl_check_special_section.c ebl_syscall_abi.c eblabicfi.c \ eblstother.c eblinitreg.c ebldwarftoregno.c eblnormalizepc.c \ - eblunwind.c eblresolvesym.c eblcheckreloctargettype.c + eblunwind.c eblresolvesym.c eblcheckreloctargettype.c \ + ebl_data_marker_symbol.c libebl_a_SOURCES = $(gen_SOURCES) diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h index b7253748..f3a0e64a 100644 --- a/libebl/ebl-hooks.h +++ b/libebl/ebl-hooks.h @@ -1,5 +1,5 @@ /* Backend hook signatures internal interface for libebl. - Copyright (C) 2000-2011, 2013, 2014, 2016 Red Hat, Inc. + Copyright (C) 2000-2011, 2013, 2014, 2016, 2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -121,6 +121,9 @@ bool EBLHOOK(relative_reloc_p) (int); bool EBLHOOK(check_special_symbol) (Elf *, GElf_Ehdr *, const GElf_Sym *, const char *, const GElf_Shdr *); +/* Check if this is a data marker symbol. e.g. '$d' symbols for ARM. */ +bool EBLHOOK(data_marker_symbol) (const GElf_Sym *sym, const char *sname); + /* Check whether only valid bits are set on the st_other symbol flag. Standard ST_VISIBILITY have already been masked off. */ bool EBLHOOK(check_st_other_bits) (unsigned char st_other); diff --git a/libebl/ebl_data_marker_symbol.c b/libebl/ebl_data_marker_symbol.c new file mode 100644 index 00000000..922d7203 --- /dev/null +++ b/libebl/ebl_data_marker_symbol.c @@ -0,0 +1,44 @@ +/* Check whether a symbol is a special data marker. + Copyright (C) 2017 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + + +bool +ebl_data_marker_symbol (Ebl *ebl, const GElf_Sym *sym, const char *sname) +{ + if (ebl == NULL) + return false; + + return ebl->data_marker_symbol (sym, sname); +} diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index f3a65cfa..1f814776 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -1,5 +1,5 @@ /* Generate ELF backend handle. - Copyright (C) 2000-2016 Red Hat, Inc. + Copyright (C) 2000-2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -184,6 +184,7 @@ static bool default_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, const GElf_Sym *sym, const char *name, const GElf_Shdr *destshdr); +static bool default_data_marker_symbol (const GElf_Sym *sym, const char *sname); static bool default_check_st_other_bits (unsigned char st_other); static bool default_check_special_section (Ebl *, int, const GElf_Shdr *, const char *); @@ -235,6 +236,7 @@ fill_defaults (Ebl *result) result->none_reloc_p = default_none_reloc_p; result->relative_reloc_p = default_relative_reloc_p; result->check_special_symbol = default_check_special_symbol; + result->data_marker_symbol = default_data_marker_symbol; result->check_st_other_bits = default_check_st_other_bits; result->bss_plt_p = default_bss_plt_p; result->return_value_location = default_return_value_location; @@ -671,6 +673,13 @@ default_check_special_symbol (Elf *elf __attribute__ ((unused)), return false; } +static bool +default_data_marker_symbol (const GElf_Sym *sym __attribute__ ((unused)), + const char *sname __attribute__ ((unused))) +{ + return false; +} + static bool default_check_st_other_bits (unsigned char st_other __attribute__ ((unused))) { diff --git a/libebl/libebl.h b/libebl/libebl.h index 87896e4a..882bdb99 100644 --- a/libebl/libebl.h +++ b/libebl/libebl.h @@ -1,5 +1,5 @@ /* Interface for libebl. - Copyright (C) 2000-2010, 2013, 2014, 2015, 2016 Red Hat, Inc. + Copyright (C) 2000-2010, 2013, 2014, 2015, 2016, 2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -156,6 +156,10 @@ extern bool ebl_check_special_symbol (Ebl *ebl, GElf_Ehdr *ehdr, const GElf_Sym *sym, const char *name, const GElf_Shdr *destshdr); +/* Check if this is a data marker symbol. e.g. '$d' symbols for ARM. */ +extern bool ebl_data_marker_symbol (Ebl *ebl, const GElf_Sym *sym, + const char *sname); + /* Check whether only valid bits are set on the st_other symbol flag. */ extern bool ebl_check_st_other_bits (Ebl *ebl, unsigned char st_other); diff --git a/src/ChangeLog b/src/ChangeLog index 0b60fc75..f92f10d7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2017-07-20 Mark Wielaard + + * strip.c (handle_elf): Deal with data marker symbols pointing to + debug sections (they can be removed). + 2017-07-14 Mark Wielaard * strip (OPT_KEEP_SECTION): New define. diff --git a/src/strip.c b/src/strip.c index 4a35ea1d..773ed548 100644 --- a/src/strip.c +++ b/src/strip.c @@ -1,5 +1,5 @@ /* Discard section not used at runtime from object files. - Copyright (C) 2000-2012, 2014, 2015, 2016 Red Hat, Inc. + Copyright (C) 2000-2012, 2014, 2015, 2016, 2017 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2000. @@ -960,8 +960,19 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, if (shdr_info[scnidx].idx == 0) /* This symbol table has a real symbol in a discarded section. So preserve the - original table in the debug file. */ - shdr_info[cnt].debug_data = symdata; + original table in the debug file. Unless + it is a redundant data marker to a debug + (data only) section. */ + if (! (ebl_section_strip_p (ebl, ehdr, + &shdr_info[scnidx].shdr, + shdr_info[scnidx].name, + remove_comment, + remove_debug) + && ebl_data_marker_symbol (ebl, sym, + elf_strptr (elf, + shdr_info[cnt].shdr.sh_link, + sym->st_name)))) + shdr_info[cnt].debug_data = symdata; } } @@ -1293,7 +1304,10 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, shdr_info[cnt].shdr.sh_name = dwelf_strent_off (shdr_info[cnt].se); /* Update the section header from the input file. Some fields - might be section indeces which now have to be adjusted. */ + might be section indeces which now have to be adjusted. Keep + the index to the "current" sh_link in case we need it to lookup + symbol table names. */ + size_t sh_link = shdr_info[cnt].shdr.sh_link; if (shdr_info[cnt].shdr.sh_link != 0) shdr_info[cnt].shdr.sh_link = shdr_info[shdr_info[cnt].shdr.sh_link].idx; @@ -1492,13 +1506,17 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, /* The symbol points to a section that is discarded but isn't preserved in the debug file. Check that this is a section or group signature symbol - for a section which has been removed. */ + for a section which has been removed. Or a special + data marker symbol to a debug section. */ { elf_assert (GELF_ST_TYPE (sym->st_info) == STT_SECTION || ((shdr_info[sidx].shdr.sh_type == SHT_GROUP) && (shdr_info[sidx].shdr.sh_info - == inner))); + == inner)) + || ebl_data_marker_symbol (ebl, sym, + elf_strptr (elf, sh_link, + sym->st_name))); } } diff --git a/tests/ChangeLog b/tests/ChangeLog index 194d019f..6c70d020 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2017-07-20 Mark Wielaard + + * run-strip-g.sh: New test. + * Makefile.am (TESTS): Add run-strip-g.sh. + (EXTRA_DIST): Likewise. + 2017-07-18 Mark Wielaard * Makefile.am (TESTS): Always add run-disasm-bpf.sh if HAVE_LIBASM. diff --git a/tests/Makefile.am b/tests/Makefile.am index 368e9263..407c0511 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -81,7 +81,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-strip-test3.sh run-strip-test4.sh run-strip-test5.sh \ run-strip-test6.sh run-strip-test7.sh run-strip-test8.sh \ run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \ - run-strip-nothing.sh \ + run-strip-nothing.sh run-strip-g.sh \ run-strip-groups.sh run-strip-reloc.sh run-strip-strmerge.sh \ run-strip-nobitsalign.sh run-strip-remove-keep.sh \ run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-test3.sh \ @@ -173,7 +173,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \ run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \ run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \ - run-strip-nothing.sh run-strip-remove-keep.sh \ + run-strip-nothing.sh run-strip-remove-keep.sh run-strip-g.sh \ run-strip-strmerge.sh run-strip-nobitsalign.sh \ testfile-nobitsalign.bz2 testfile-nobitsalign.strip.bz2 \ run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \ diff --git a/tests/run-strip-g.sh b/tests/run-strip-g.sh new file mode 100755 index 00000000..13038195 --- /dev/null +++ b/tests/run-strip-g.sh @@ -0,0 +1,102 @@ +#! /bin/sh +# Copyright (C) 2017 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/test-subr.sh + +# When stripping just the debug sections/symbols we keep the symtab +# in the main ELF file. There should be no symbols pointing into the +# debug sections and so there should not be a copy in the debug file +# except for a NOBITS one. + +tempfiles a.out strip.out debug.out readelf.out + +echo Create debug a.out. +echo "int main() { return 1; }" | gcc -g -xc - + +echo strip -g to file with debug file +testrun ${abs_top_builddir}/src/strip -g -o strip.out -f debug.out || + { echo "*** failed to strip -g -o strip.out -f debug.out a.out"; exit -1; } + +status=0 +testrun ${abs_top_builddir}/src/readelf -S strip.out > readelf.out +grep SYMTAB readelf.out || status=$? +echo $status +if test $status -ne 0; then + echo no symtab found in strip.out + exit 1 +fi + +status=0 +testrun ${abs_top_builddir}/src/readelf -S debug.out > readelf.out +grep SYMTAB readelf.out || status=$? +echo $status +if test $status -ne 1; then + echo symtab found in debug.out + exit 1 +fi + +# arm (with data marker in .debug_frame). See tests/run-addrcfi.sh +testfiles testfilearm + +echo arm strip -g to file with debug file +testrun ${abs_top_builddir}/src/strip -g -o strip.out -f debug.out testfilearm || + { echo "*** failed to strip -g -o strip.out -f debug.out a.out"; exit -1; } + +status=0 +testrun ${abs_top_builddir}/src/readelf -S strip.out > readelf.out +grep SYMTAB readelf.out || status=$? +echo $status +if test $status -ne 0; then + echo no symtab found in strip.out + exit 1 +fi + +status=0 +testrun ${abs_top_builddir}/src/readelf -S debug.out > readelf.out +grep SYMTAB readelf.out || status=$? +echo $status +if test $status -ne 1; then + echo symtab found in debug.out + exit 1 +fi + +# aarch64 (with data marker in .debug_frame). See tests/run-addrcfi.sh +testfiles testfileaarch64 + +echo aarch64 strip -g to file with debug file +testrun ${abs_top_builddir}/src/strip -g -o strip.out -f debug.out testfileaarch64 || + { echo "*** failed to strip -g -o strip.out -f debug.out a.out"; exit -1; } + +status=0 +testrun ${abs_top_builddir}/src/readelf -S strip.out > readelf.out +grep SYMTAB readelf.out || status=$? +echo $status +if test $status -ne 0; then + echo no symtab found in strip.out + exit 1 +fi + +status=0 +testrun ${abs_top_builddir}/src/readelf -S debug.out > readelf.out +grep SYMTAB readelf.out || status=$? +echo $status +if test $status -ne 1; then + echo symtab found in debug.out + exit 1 +fi + +exit 0 -- cgit v1.2.3 From 55a471f5fe44945414af243613d4590c4e7cd8d1 Mon Sep 17 00:00:00 2001 From: Gustavo Romero Date: Thu, 20 Jul 2017 17:49:02 -0400 Subject: ppc64: Add HTM SPRs support to readelf Since POWER8, PowerPC 64 supports Hardware Transactional Memory, which has three special purpose registers associated to it: tfhar, tfiar, and texasr. This commit add HTM SPRs set as known note type so it's possible to use 'readelf --notes' to inspect the HTM SPRs in a coredump file generated in such a machines. Signed-off-by: Gustavo Romero --- backends/ChangeLog | 8 +++++++- backends/ppc_corenote.c | 13 ++++++++++++- backends/ppc_regs.c | 10 +++++++++- libebl/ChangeLog | 4 ++++ libebl/eblcorenotetypename.c | 1 + libelf/ChangeLog | 4 ++++ libelf/elf.h | 1 + tests/ChangeLog | 5 +++++ tests/run-addrcfi.sh | 18 +++++++++--------- tests/run-allregs.sh | 12 ++++++------ 10 files changed, 58 insertions(+), 18 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index 88b9764a..83710c19 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,4 +1,10 @@ -2017-08-20 Mark Wielaard +2017-07-19 Gustavo Romero + + * ppc_corenote.c: Add offsets for ppc64 HTM SPRs: thfar, tfiar, + and texasr. + * ppc_regs.c: Add names for ppc64 HTM SPRs mappings. + +2017-07-20 Mark Wielaard * aarch64_init.c (aarch64_init): Hook data_marker_symbol. * aarch64_symbol.c (aarch64_data_marker_symbol): New function. diff --git a/backends/ppc_corenote.c b/backends/ppc_corenote.c index 9ac88712..2b4ada7a 100644 --- a/backends/ppc_corenote.c +++ b/backends/ppc_corenote.c @@ -94,9 +94,20 @@ static const Ebl_Register_Location spe_regs[] = { .offset = 34 * 4, .regno = 612, .count = 1, .bits = 32 } }; +static const Ebl_Register_Location tm_spr_regs[] = + { + /* tfhar */ + { .offset = 0, .regno = 114, .count = 1, .bits = 64 }, + /* texasr */ + { .offset = 8, .regno = 116, .count = 1, .bits = 64 }, + /* tfiar */ + { .offset = 16, .regno = 115, .count = 1, .bits = 64 } + }; + #define EXTRA_NOTES \ EXTRA_REGSET (NT_PPC_VMX, 34 * 16, altivec_regs) \ - EXTRA_REGSET (NT_PPC_SPE, 35 * 4, spe_regs) + EXTRA_REGSET (NT_PPC_SPE, 35 * 4, spe_regs) \ + EXTRA_REGSET (NT_PPC_TM_SPR, 3 * 8, tm_spr_regs) #if BITS == 32 # define ULONG uint32_t diff --git a/backends/ppc_regs.c b/backends/ppc_regs.c index bcf4f7a3..c2d50118 100644 --- a/backends/ppc_regs.c +++ b/backends/ppc_regs.c @@ -149,7 +149,15 @@ ppc_register_info (Ebl *ebl __attribute__ ((unused)), namelen = 4; break; - case 110 ... 117: + case 114: + return stpcpy (name, "tfhar") + 1 - name; + case 115: + return stpcpy (name, "tfiar") + 1 - name; + case 116: + return stpcpy (name, "texasr") + 1 - name; + + case 110 ... 113: + case 117: case 120 ... 121: case 123 ... 199: name[0] = 's'; diff --git a/libebl/ChangeLog b/libebl/ChangeLog index f4474496..334bf224 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,7 @@ +2017-07-19 Gustavo Romero + + * eblcorenotetypename.c: Add ppc64 HTM SPRs note as known type. + 2017-07-20 Mark Wielaard * Makefile.am (gen_SOURCES): Add ebl_data_marker_symbol.c. diff --git a/libebl/eblcorenotetypename.c b/libebl/eblcorenotetypename.c index fa81dbec..d3a56fa9 100644 --- a/libebl/eblcorenotetypename.c +++ b/libebl/eblcorenotetypename.c @@ -75,6 +75,7 @@ ebl_core_note_type_name (Ebl *ebl, uint32_t type, char *buf, size_t len) KNOWNSTYPE (PPC_VMX); KNOWNSTYPE (PPC_SPE); KNOWNSTYPE (PPC_VSX); + KNOWNSTYPE (PPC_TM_SPR); KNOWNSTYPE (386_TLS); KNOWNSTYPE (386_IOPERM); KNOWNSTYPE (X86_XSTATE); diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 214a4f7e..b17e1c5e 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2017-07-19 Gustavo Romero + + * elf.h: Add known type in notes segment descriptor for HTM SPRs. + 2017-02-17 Ulf hermann * Makefile.am: Add libelf_so_DEPS, which include libeu.a, diff --git a/libelf/elf.h b/libelf/elf.h index b6112d9d..fa35203d 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -763,6 +763,7 @@ typedef struct #define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */ #define NT_PPC_VSX 0x102 /* PowerPC VSX registers */ #define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */ +#define NT_PPC_TM_SPR 0x10c /* PowerPC HW Transactional Memory SPRs */ #define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */ #define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */ #define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */ diff --git a/tests/ChangeLog b/tests/ChangeLog index 6c70d020..0700e7ca 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2017-07-19 Gustavo Romero + + * run-addrcfi.sh: Update generic SPRs names to HTM SPRs names + * run-allregs.sh: Update generic SPRs names to HTM SPRs names + 2017-07-20 Mark Wielaard * run-strip-g.sh: New test. diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh index c864eeae..376a6dc3 100755 --- a/tests/run-addrcfi.sh +++ b/tests/run-addrcfi.sh @@ -397,9 +397,9 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range privileged reg111 (spr11): undefined privileged reg112 (spr12): undefined privileged reg113 (spr13): undefined - privileged reg114 (spr14): undefined - privileged reg115 (spr15): undefined - privileged reg116 (spr16): undefined + privileged reg114 (tfhar): undefined + privileged reg115 (tfiar): undefined + privileged reg116 (texasr): undefined privileged reg117 (spr17): undefined privileged reg118 (dsisr): undefined privileged reg119 (dar): undefined @@ -1419,9 +1419,9 @@ testrun_compare ${abs_builddir}/addrcfi -e testfileppc32 0x100004d2 <<\EOF privileged reg111 (spr11): undefined privileged reg112 (spr12): undefined privileged reg113 (spr13): undefined - privileged reg114 (spr14): undefined - privileged reg115 (spr15): undefined - privileged reg116 (spr16): undefined + privileged reg114 (tfhar): undefined + privileged reg115 (tfiar): undefined + privileged reg116 (texasr): undefined privileged reg117 (spr17): undefined privileged reg118 (dsisr): undefined privileged reg119 (dar): undefined @@ -2447,9 +2447,9 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range privileged reg111 (spr11): undefined privileged reg112 (spr12): undefined privileged reg113 (spr13): undefined - privileged reg114 (spr14): undefined - privileged reg115 (spr15): undefined - privileged reg116 (spr16): undefined + privileged reg114 (tfhar): undefined + privileged reg115 (tfiar): undefined + privileged reg116 (texasr): undefined privileged reg117 (spr17): undefined privileged reg118 (dsisr): undefined privileged reg119 (dar): undefined diff --git a/tests/run-allregs.sh b/tests/run-allregs.sh index d82f37e6..7ddd4520 100755 --- a/tests/run-allregs.sh +++ b/tests/run-allregs.sh @@ -253,9 +253,9 @@ privileged registers: 111: spr11 (spr11), unsigned 32 bits 112: spr12 (spr12), unsigned 32 bits 113: spr13 (spr13), unsigned 32 bits - 114: spr14 (spr14), unsigned 32 bits - 115: spr15 (spr15), unsigned 32 bits - 116: spr16 (spr16), unsigned 32 bits + 114: tfhar (tfhar), unsigned 32 bits + 115: tfiar (tfiar), unsigned 32 bits + 116: texasr (texasr), unsigned 32 bits 117: spr17 (spr17), unsigned 32 bits 118: dsisr (dsisr), unsigned 32 bits 119: dar (dar), unsigned 32 bits @@ -1276,9 +1276,9 @@ privileged registers: 111: spr11 (spr11), unsigned 64 bits 112: spr12 (spr12), unsigned 64 bits 113: spr13 (spr13), unsigned 64 bits - 114: spr14 (spr14), unsigned 64 bits - 115: spr15 (spr15), unsigned 64 bits - 116: spr16 (spr16), unsigned 64 bits + 114: tfhar (tfhar), unsigned 64 bits + 115: tfiar (tfiar), unsigned 64 bits + 116: texasr (texasr), unsigned 64 bits 117: spr17 (spr17), unsigned 64 bits 118: dsisr (dsisr), unsigned 64 bits 119: dar (dar), unsigned 64 bits -- cgit v1.2.3 From c24b900cc9cf225e98372253cb02c77342634b6e Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 21 Jul 2017 21:23:07 +0200 Subject: libdw: Add dwarf_line_file. Signed-off-by: Mark Wielaard --- libdw/ChangeLog | 7 +++++++ libdw/Makefile.am | 2 +- libdw/dwarf_line_file.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ libdw/libdw.h | 5 +++++ libdw/libdw.map | 5 +++++ tests/ChangeLog | 4 ++++ tests/get-lines.c | 23 ++++++++++++++++++++++ 7 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 libdw/dwarf_line_file.c diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 8eda70cd..8b2ef759 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,10 @@ +2017-07-21 Mark Wielaard + + * dwarf_line_file.c: New file. + * Makefile.am (libdw_a_SOURCES): Add dwarf_line_file.c. + * libdw.h (dwarf_line_file): New function declaration. + * libdw.map (ELFUTILS_0.170): New. Add dwarf_line_file. + 2017-02-17 Ulf Hermann * Makefile.am: Add libdw_so_LIBS to specify the archives libdw is is diff --git a/libdw/Makefile.am b/libdw/Makefile.am index 634ac2ec..ad031b11 100644 --- a/libdw/Makefile.am +++ b/libdw/Makefile.am @@ -65,7 +65,7 @@ libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \ dwarf_lineendsequence.c dwarf_lineblock.c \ dwarf_lineprologueend.c dwarf_lineepiloguebegin.c \ dwarf_lineisa.c dwarf_linediscriminator.c \ - dwarf_lineop_index.c \ + dwarf_lineop_index.c dwarf_line_file.c \ dwarf_onesrcline.c dwarf_formblock.c \ dwarf_getsrcfiles.c dwarf_filesrc.c dwarf_getsrcdirs.c \ dwarf_getlocation.c dwarf_getstring.c dwarf_offabbrev.c \ diff --git a/libdw/dwarf_line_file.c b/libdw/dwarf_line_file.c new file mode 100644 index 00000000..e2df642a --- /dev/null +++ b/libdw/dwarf_line_file.c @@ -0,0 +1,52 @@ +/* Find line information for address. + Copyright (C) 2017 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libdwP.h" + + +int +dwarf_line_file (Dwarf_Line *line, Dwarf_Files **files, size_t *idx) +{ + if (line == NULL) + return -1; + + if (line->file >= line->files->nfiles) + { + __libdw_seterrno (DWARF_E_INVALID_DWARF); + return -1; + } + + *files = line->files; + *idx = line->file; + + return 0; +} diff --git a/libdw/libdw.h b/libdw/libdw.h index 9ae80ebb..4903b55f 100644 --- a/libdw/libdw.h +++ b/libdw/libdw.h @@ -640,6 +640,11 @@ extern const char *dwarf_linesrc (Dwarf_Line *line, extern const char *dwarf_filesrc (Dwarf_Files *file, size_t idx, Dwarf_Word *mtime, Dwarf_Word *length); +/* Return the Dwarf_Files and index associated with the given Dwarf_Line. */ +extern int dwarf_line_file (Dwarf_Line *line, + Dwarf_Files **files, size_t *idx) + __nonnull_attribute__ (2, 3); + /* Return the directory list used in the file information extracted. (*RESULT)[0] is the CU's DW_AT_comp_dir value, and may be null. (*RESULT)[0..*NDIRS-1] are the compile-time include directory path diff --git a/libdw/libdw.map b/libdw/libdw.map index 83cb1d97..44e096ae 100644 --- a/libdw/libdw.map +++ b/libdw/libdw.map @@ -338,3 +338,8 @@ ELFUTILS_0.167 { dwelf_strent_str; dwelf_strtab_free; } ELFUTILS_0.165; + +ELFUTILS_0.170 { + global: + dwarf_line_file; +} ELFUTILS_0.167; diff --git a/tests/ChangeLog b/tests/ChangeLog index 0700e7ca..519f25a3 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2017-07-21 Mark Wielaard + + * get-lines.c (main): Add dwarf_line_file test. + 2017-07-19 Gustavo Romero * run-addrcfi.sh: Update generic SPRs names to HTM SPRs names diff --git a/tests/get-lines.c b/tests/get-lines.c index c361a2c3..188d0162 100644 --- a/tests/get-lines.c +++ b/tests/get-lines.c @@ -24,6 +24,7 @@ #include #include ELFUTILS_HEADER(dw) #include +#include #include @@ -100,6 +101,28 @@ main (int argc, char *argv[]) printf ("%" PRIx64 ": %s:%d:", (uint64_t) addr, file ?: "???", line); + /* Getting the file path through the Dwarf_Files should + result in the same path. */ + Dwarf_Files *files; + size_t idx; + if (dwarf_line_file (l, &files, &idx) != 0) + { + printf ("%s: cannot get file from line (%zd): %s\n", + argv[cnt], i, dwarf_errmsg (-1)); + result = 1; + break; + } + const char *path = dwarf_filesrc (files, idx, NULL, NULL); + if ((path == NULL && file != NULL) + || (path != NULL && file == NULL) + || (strcmp (file, path) != 0)) + { + printf ("%s: line %zd srcline (%s) != file srcline (%s)\n", + argv[cnt], i, file ?: "???", path ?: "???"); + result = 1; + break; + } + int column; if (dwarf_linecol (l, &column) != 0) column = 0; -- cgit v1.2.3 From 33220d549df9991b43da894fb03a22722a74cafb Mon Sep 17 00:00:00 2001 From: Yunlian Jiang Date: Wed, 26 Jul 2017 16:25:43 -0700 Subject: libdwfl: Move nested functions in parse_opt to file scope. * Move nested function 'failure' to file scope to compile with clang. * Move nested function 'fail' to file scope to compile with clang. Signed-off-by: Yunlian Jiang --- libdwfl/ChangeLog | 5 +++++ libdwfl/argp-std.c | 55 ++++++++++++++++++++++++++++-------------------------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 9bce6b1e..2008c6a1 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,8 @@ +2017-07-26 Yunlian Jiang + + * argp-std.c (failure): Move to file scope. + (fail): Likewise. + 2017-04-20 Ulf Hermann Mark Wielaard diff --git a/libdwfl/argp-std.c b/libdwfl/argp-std.c index 347a05b4..498ace21 100644 --- a/libdwfl/argp-std.c +++ b/libdwfl/argp-std.c @@ -104,25 +104,28 @@ struct parse_opt const char *core; }; +static inline void +failure (Dwfl *dwfl, int errnum, const char *msg, struct argp_state *state) +{ + if (dwfl != NULL) + dwfl_end (dwfl); + if (errnum == -1) + argp_failure (state, EXIT_FAILURE, 0, "%s: %s", + msg, INTUSE(dwfl_errmsg) (-1)); + else + argp_failure (state, EXIT_FAILURE, errnum, "%s", msg); +} + +static inline error_t +fail (Dwfl *dwfl, int errnum, const char *msg, struct argp_state *state) +{ + failure (dwfl, errnum, msg, state); + return errnum == -1 ? EIO : errnum; +} + static error_t parse_opt (int key, char *arg, struct argp_state *state) { - inline void failure (Dwfl *dwfl, int errnum, const char *msg) - { - if (dwfl != NULL) - dwfl_end (dwfl); - if (errnum == -1) - argp_failure (state, EXIT_FAILURE, 0, "%s: %s", - msg, INTUSE(dwfl_errmsg) (-1)); - else - argp_failure (state, EXIT_FAILURE, errnum, "%s", msg); - } - inline error_t fail (Dwfl *dwfl, int errnum, const char *msg) - { - failure (dwfl, errnum, msg); - return errnum == -1 ? EIO : errnum; - } - switch (key) { case ARGP_KEY_INIT: @@ -130,7 +133,7 @@ parse_opt (int key, char *arg, struct argp_state *state) assert (state->hook == NULL); struct parse_opt *opt = calloc (1, sizeof (*opt)); if (opt == NULL) - failure (NULL, DWFL_E_ERRNO, "calloc"); + failure (NULL, DWFL_E_ERRNO, "calloc", state); state->hook = opt; } break; @@ -147,7 +150,7 @@ parse_opt (int key, char *arg, struct argp_state *state) { dwfl = INTUSE(dwfl_begin) (&offline_callbacks); if (dwfl == NULL) - return fail (dwfl, -1, arg); + return fail (dwfl, -1, arg, state); opt->dwfl = dwfl; /* Start at zero so if there is just one -e foo.so, @@ -173,7 +176,7 @@ parse_opt (int key, char *arg, struct argp_state *state) Dwfl *dwfl = INTUSE(dwfl_begin) (&proc_callbacks); int result = INTUSE(dwfl_linux_proc_report) (dwfl, atoi (arg)); if (result != 0) - return fail (dwfl, result, arg); + return fail (dwfl, result, arg, state); /* Non-fatal to not be able to attach to process, ignore error. */ INTUSE(dwfl_linux_proc_attach) (dwfl, atoi (arg), false); @@ -202,7 +205,7 @@ parse_opt (int key, char *arg, struct argp_state *state) int result = INTUSE(dwfl_linux_proc_maps_report) (dwfl, f); fclose (f); if (result != 0) - return fail (dwfl, result, arg); + return fail (dwfl, result, arg, state); opt->dwfl = dwfl; } else @@ -231,11 +234,11 @@ parse_opt (int key, char *arg, struct argp_state *state) Dwfl *dwfl = INTUSE(dwfl_begin) (&kernel_callbacks); int result = INTUSE(dwfl_linux_kernel_report_kernel) (dwfl); if (result != 0) - return fail (dwfl, result, _("cannot load kernel symbols")); + return fail (dwfl, result, _("cannot load kernel symbols"), state); result = INTUSE(dwfl_linux_kernel_report_modules) (dwfl); if (result != 0) /* Non-fatal to have no modules since we do have the kernel. */ - failure (dwfl, result, _("cannot find kernel modules")); + failure (dwfl, result, _("cannot find kernel modules"), state); opt->dwfl = dwfl; } else @@ -252,7 +255,7 @@ parse_opt (int key, char *arg, struct argp_state *state) int result = INTUSE(dwfl_linux_kernel_report_offline) (dwfl, arg, NULL); if (result != 0) - return fail (dwfl, result, _("cannot find kernel or modules")); + return fail (dwfl, result, _("cannot find kernel or modules"), state); opt->dwfl = dwfl; } else @@ -271,7 +274,7 @@ parse_opt (int key, char *arg, struct argp_state *state) arg = "a.out"; dwfl = INTUSE(dwfl_begin) (&offline_callbacks); if (INTUSE(dwfl_report_offline) (dwfl, "", arg, -1) == NULL) - return fail (dwfl, -1, arg); + return fail (dwfl, -1, arg, state); opt->dwfl = dwfl; } @@ -301,7 +304,7 @@ parse_opt (int key, char *arg, struct argp_state *state) { elf_end (core); close (fd); - return fail (dwfl, result, opt->core); + return fail (dwfl, result, opt->core, state); } /* Non-fatal to not be able to attach to core, ignore error. */ @@ -331,7 +334,7 @@ parse_opt (int key, char *arg, struct argp_state *state) else if (opt->e) { if (INTUSE(dwfl_report_offline) (dwfl, "", opt->e, -1) == NULL) - return fail (dwfl, -1, opt->e); + return fail (dwfl, -1, opt->e, state); } /* One of the three flavors has done dwfl_begin and some reporting -- cgit v1.2.3 From 8e9c76b680b3b3dc8bcabfe7bd84760b99bf83f5 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 25 Jul 2017 15:29:10 +0200 Subject: libdw: Add DWARF5 attributes. Add new DWARF5 attribute constant names to the attributes enum. Also add reserved comments between non-consecutive (reserved) numbers. Remove DW_AT_subscr_data, DW_AT_element_list and DW_AT_member from the enum list and turn them into compatibility defines because they are not part of DWARF2+. That way code that directly references them still compiles but they won't show up in known-dwarf.h. Signed-off-by: Mark Wielaard --- ChangeLog | 4 ++++ NEWS | 2 ++ libdw/ChangeLog | 6 ++++++ libdw/dwarf.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 71 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index b5f7095b..f787f765 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-07-25 Mark Wielaard + + * NEWS: Mention new DWARF5 attributes in dwarf.h. + 2017-07-18 Mark Wielaard * configure.ac: Don't check for linux/bpf.h. diff --git a/NEWS b/NEWS index 045d579a..a97dd048 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,7 @@ Version 0.170 +libdw: Added new DWARF5 attribute constants to dwarf.h. + strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. backends: The bpf disassembler is now always build on all platforms. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 8b2ef759..a9a0a6bc 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,9 @@ +2017-07-25 Mark Wielaard + + * dwarf.h (DWARF attributes enum): Remove DW_AT_subscr_data, + DW_AT_element_list and DW_AT_member. Add DWARF5 attribute constants. + (DW_AT_subscr_data, DW_AT_element_list, DW_AT_member): New defines. + 2017-07-21 Mark Wielaard * dwarf_line_file.c: New file. diff --git a/libdw/dwarf.h b/libdw/dwarf.h index 169b53e5..de844230 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -1,5 +1,5 @@ /* This file defines standard DWARF types, structures, and macros. - Copyright (C) 2000-2011, 2014, 2016 Red Hat, Inc. + Copyright (C) 2000-2011, 2014, 2016, 2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -131,17 +131,23 @@ enum DW_AT_sibling = 0x01, DW_AT_location = 0x02, DW_AT_name = 0x03, + /* 0x04 reserved. */ + /* 0x05 reserved. */ + /* 0x06 reserved. */ + /* 0x07 reserved. */ + /* 0x08 reserved. */ DW_AT_ordering = 0x09, - DW_AT_subscr_data = 0x0a, + /* 0x0a reserved. */ DW_AT_byte_size = 0x0b, - DW_AT_bit_offset = 0x0c, + DW_AT_bit_offset = 0x0c, /* Deprecated in DWARF4. */ DW_AT_bit_size = 0x0d, - DW_AT_element_list = 0x0f, + /* 0x0e reserved. */ + /* 0x0f reserved. */ DW_AT_stmt_list = 0x10, DW_AT_low_pc = 0x11, DW_AT_high_pc = 0x12, DW_AT_language = 0x13, - DW_AT_member = 0x14, + /* 0x14 reserved. */ DW_AT_discr = 0x15, DW_AT_discr_value = 0x16, DW_AT_visibility = 0x17, @@ -152,15 +158,24 @@ enum DW_AT_const_value = 0x1c, DW_AT_containing_type = 0x1d, DW_AT_default_value = 0x1e, + /* 0x1f reserved. */ DW_AT_inline = 0x20, DW_AT_is_optional = 0x21, DW_AT_lower_bound = 0x22, + /* 0x23 reserved. */ + /* 0x24 reserved. */ DW_AT_producer = 0x25, + /* 0x26 reserved. */ DW_AT_prototyped = 0x27, + /* 0x28 reserved. */ + /* 0x29 reserved. */ DW_AT_return_addr = 0x2a, + /* 0x2b reserved. */ DW_AT_start_scope = 0x2c, + /* 0x2d reserved. */ DW_AT_bit_stride = 0x2e, DW_AT_upper_bound = 0x2f, + /* 0x30 reserved. */ DW_AT_abstract_origin = 0x31, DW_AT_accessibility = 0x32, DW_AT_address_class = 0x33, @@ -179,7 +194,7 @@ enum DW_AT_frame_base = 0x40, DW_AT_friend = 0x41, DW_AT_identifier_case = 0x42, - DW_AT_macro_info = 0x43, + DW_AT_macro_info = 0x43, /* Deprecated in DWARF5. */ DW_AT_namelist_item = 0x44, DW_AT_priority = 0x45, DW_AT_segment = 0x46, @@ -223,9 +238,36 @@ enum DW_AT_const_expr = 0x6c, DW_AT_enum_class = 0x6d, DW_AT_linkage_name = 0x6e, - - /* DWARF5 attribute values. */ + DW_AT_string_length_bit_size = 0x6f, + DW_AT_string_length_byte_size = 0x70, + DW_AT_rank = 0x71, + DW_AT_str_offsets_base = 0x72, + DW_AT_addr_base = 0x73, + DW_AT_rnglists_base = 0x74, + /* 0x75 reserved. */ + DW_AT_dwo_name = 0x76, + DW_AT_reference = 0x77, + DW_AT_rvalue_reference = 0x78, + DW_AT_macros = 0x79, + DW_AT_call_all_calls = 0x7a, + DW_AT_call_all_source_calls = 0x7b, + DW_AT_call_all_tail_calls = 0x7c, + DW_AT_call_return_pc = 0x7d, + DW_AT_call_value = 0x7e, + DW_AT_call_origin = 0x7f, + DW_AT_call_parameter = 0x80, + DW_AT_call_pc = 0x81, + DW_AT_call_tail_call = 0x82, + DW_AT_call_target = 0x83, + DW_AT_call_target_clobbered = 0x84, + DW_AT_call_data_location = 0x85, + DW_AT_call_data_value = 0x86, DW_AT_noreturn = 0x87, + DW_AT_alignment = 0x88, + DW_AT_export_symbols = 0x89, + DW_AT_deleted = 0x8a, + DW_AT_defaulted = 0x8b, + DW_AT_loclists_base = 0x8c, DW_AT_lo_user = 0x2000, @@ -278,6 +320,15 @@ enum DW_AT_hi_user = 0x3fff }; +/* Old unofficially attribute names. Should not be used. + Will not appear in known-dwarf.h */ + +/* DWARF1 array subscripts and element data types. */ +#define DW_AT_subscr_data 0x0a +/* DWARF1 enumeration literals. */ +#define DW_AT_element_list 0x0f +/* DWARF1 reference for variable to member structure, class or union. */ +#define DW_AT_member 0x14 /* DWARF form encodings. */ enum -- cgit v1.2.3 From 9619d34d206e39ee17e9cc96e755b163c8fa626f Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 26 Jul 2017 17:06:07 +0200 Subject: libdw: Add new DWARF5 tag constants. Add DW_TAG_coarray_type, DW_TAG_generic_subrange, DW_TAG_dynamic_type, DW_TAG_call_site, DW_TAG_call_site_parameter, DW_TAG_skeleton_unit, DW_TAG_immutable_type. Just the constants, no further interpretion yet. Signed-off-by: Mark Wielaard --- ChangeLog | 2 +- NEWS | 2 +- libdw/ChangeLog | 7 +++++++ libdw/dwarf.h | 17 ++++++++++++++--- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index f787f765..09c8d147 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ 2017-07-25 Mark Wielaard - * NEWS: Mention new DWARF5 attributes in dwarf.h. + * NEWS: Mention new DWARF5 attributes and tags in dwarf.h. 2017-07-18 Mark Wielaard diff --git a/NEWS b/NEWS index a97dd048..6a5ee0d5 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ Version 0.170 -libdw: Added new DWARF5 attribute constants to dwarf.h. +libdw: Added new DWARF5 attribute and tag constants to dwarf.h. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index a9a0a6bc..4bf46c09 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,10 @@ +2017-07-25 Mark Wielaard + + * dwarf.h: Add DW_TAG_coarray_type, DW_TAG_generic_subrange, + DW_TAG_dynamic_type, DW_TAG_call_site, DW_TAG_call_site_parameter, + DW_TAG_skeleton_unit, DW_TAG_immutable_type. Add reserved comments + for currently unused numbers. + 2017-07-25 Mark Wielaard * dwarf.h (DWARF attributes enum): Remove DW_AT_subscr_data, diff --git a/libdw/dwarf.h b/libdw/dwarf.h index de844230..c9987843 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -37,15 +37,21 @@ enum DW_TAG_entry_point = 0x03, DW_TAG_enumeration_type = 0x04, DW_TAG_formal_parameter = 0x05, + /* 0x06 reserved. */ + /* 0x07 reserved. */ DW_TAG_imported_declaration = 0x08, + /* 0x09 reserved. */ DW_TAG_label = 0x0a, DW_TAG_lexical_block = 0x0b, + /* 0x0c reserved. */ DW_TAG_member = 0x0d, + /* 0x0e reserved. */ DW_TAG_pointer_type = 0x0f, DW_TAG_reference_type = 0x10, DW_TAG_compile_unit = 0x11, DW_TAG_string_type = 0x12, DW_TAG_structure_type = 0x13, + /* 0x14 reserved. */ DW_TAG_subroutine_type = 0x15, DW_TAG_typedef = 0x16, DW_TAG_union_type = 0x17, @@ -87,15 +93,20 @@ enum DW_TAG_unspecified_type = 0x3b, DW_TAG_partial_unit = 0x3c, DW_TAG_imported_unit = 0x3d, - /* 0x3e reserved. */ + /* 0x3e reserved. Was DW_TAG_mutable_type. */ DW_TAG_condition = 0x3f, DW_TAG_shared_type = 0x40, DW_TAG_type_unit = 0x41, DW_TAG_rvalue_reference_type = 0x42, DW_TAG_template_alias = 0x43, - - /* DWARF 5. */ + DW_TAG_coarray_type = 0x44, + DW_TAG_generic_subrange = 0x45, + DW_TAG_dynamic_type = 0x46, DW_TAG_atomic_type = 0x47, + DW_TAG_call_site = 0x48, + DW_TAG_call_site_parameter = 0x49, + DW_TAG_skeleton_unit = 0x4a, + DW_TAG_immutable_type = 0x4b, DW_TAG_lo_user = 0x4080, -- cgit v1.2.3 From 2d906d8d7763ad887d9d93c2c836066a9c2e4b0e Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 26 Jul 2017 17:38:22 +0200 Subject: libdw: Add new DWARF5 character encodings. Add DW_ATE_UCS and DW_ATE_ASCII for Fortran 2003 string kinds ASCII (ISO/IEC 646:1991) and ISO_10646 (UCS-4 in ISO/IEC 10646:2000). Signed-off-by: Mark Wielaard --- ChangeLog | 3 ++- NEWS | 3 ++- libdw/ChangeLog | 4 ++++ libdw/dwarf.h | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 09c8d147..cd91c5a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2017-07-25 Mark Wielaard - * NEWS: Mention new DWARF5 attributes and tags in dwarf.h. + * NEWS: Mention new DWARF5 attributes, tags and character encodings + in dwarf.h. 2017-07-18 Mark Wielaard diff --git a/NEWS b/NEWS index 6a5ee0d5..9437061c 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ Version 0.170 -libdw: Added new DWARF5 attribute and tag constants to dwarf.h. +libdw: Added new DWARF5 attribute, tag and character encodings constants + to dwarf.h. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 4bf46c09..25a96485 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,7 @@ +2017-07-26 Mark Wielaard + + * dwarf.h: Add DW_ATE_UCS and DW_ATE_ASCII. + 2017-07-25 Mark Wielaard * dwarf.h: Add DW_TAG_coarray_type, DW_TAG_generic_subrange, diff --git a/libdw/dwarf.h b/libdw/dwarf.h index c9987843..40722721 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -571,6 +571,8 @@ enum DW_ATE_unsigned_fixed = 0xe, DW_ATE_decimal_float = 0xf, DW_ATE_UTF = 0x10, + DW_ATE_UCS = 0x11, + DW_ATE_ASCII = 0x12, DW_ATE_lo_user = 0x80, DW_ATE_hi_user = 0xff -- cgit v1.2.3 From d14fd3bc70b96f29c32e596511c5c8e6bedbb5ca Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 26 Jul 2017 17:44:29 +0200 Subject: libdw: DWARF5 Add new DW_LANG codes and default lower array bound. Add DW_LANG_OpenCL, DW_LANG_Modula3, DW_LANG_C_plus_plus_03, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift, DW_LANG_Julia, DW_LANG_Dylan, DW_LANG_RenderScript and DW_LANG_BLISS to dwarf.h. Update default language array lower bounds in dwarf_aggregate_size.c. Signed-off-by: Mark Wielaard --- ChangeLog | 4 ++-- NEWS | 4 ++-- libdw/ChangeLog | 11 +++++++++++ libdw/dwarf.h | 11 ++++++++++- libdw/dwarf_aggregate_size.c | 12 ++++++++++++ 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index cd91c5a7..d1330616 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ 2017-07-25 Mark Wielaard - * NEWS: Mention new DWARF5 attributes, tags and character encodings - in dwarf.h. + * NEWS: Mention new DWARF5 attributes, tags, character encodings + and language codes in dwarf.h. 2017-07-18 Mark Wielaard diff --git a/NEWS b/NEWS index 9437061c..2039cfe4 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ Version 0.170 -libdw: Added new DWARF5 attribute, tag and character encodings constants - to dwarf.h. +libdw: Added new DWARF5 attribute, tag, character encodings constants and + language codes to dwarf.h. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 25a96485..39a9c1dc 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,14 @@ +2017-07-26 Mark Wielaard + + * dwarf.h: Add DW_LANG_OpenCL, DW_LANG_Modula3, + DW_LANG_C_plus_plus_03, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift, + DW_LANG_Julia, DW_LANG_Dylan, DW_LANG_RenderScript, DW_LANG_BLISS. + * dwarf_aggregate_size.c (array_size): Add lower bound for + DW_LANG_C_plus_plus_03, DW_LANG_Python, DW_LANG_OpenCL, + DW_LANG_Haskell, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift, + DW_LANG_Dylan, DW_LANG_RenderScript, DW_LANG_Modula3, + DW_LANG_Julia and DW_LANG_BLISS. + 2017-07-26 Mark Wielaard * dwarf.h: Add DW_ATE_UCS and DW_ATE_ASCII. diff --git a/libdw/dwarf.h b/libdw/dwarf.h index 40722721..dd4384fb 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -652,14 +652,23 @@ enum DW_LANG_UPC = 0x0012, /* Unified Parallel C */ DW_LANG_D = 0x0013, /* D */ DW_LANG_Python = 0x0014, /* Python */ + DW_LANG_OpenCL = 0x0015, /* OpenCL */ DW_LANG_Go = 0x0016, /* Go */ + DW_LANG_Modula3 = 0x0017, /* Modula-3 */ DW_LANG_Haskell = 0x0018, /* Haskell */ + DW_LANG_C_plus_plus_03 = 0x0019, /* ISO C++:2003 */ DW_LANG_C_plus_plus_11 = 0x001a, /* ISO C++:2011 */ + DW_LANG_OCaml = 0x001b, /* OCaml */ + DW_LANG_Rust = 0x001c, /* Rust */ DW_LANG_C11 = 0x001d, /* ISO C:2011 */ + DW_LANG_Swift = 0x001e, /* Swift */ + DW_LANG_Julia = 0x001f, /* Julia */ + DW_LANG_Dylan = 0x0020, /* Dylan */ DW_LANG_C_plus_plus_14 = 0x0021, /* ISO C++:2014 */ DW_LANG_Fortran03 = 0x0022, /* ISO/IEC 1539-1:2004 */ DW_LANG_Fortran08 = 0x0023, /* ISO/IEC 1539-1:2010 */ - + DW_LANG_RenderScript = 0x0024, /* RenderScript Kernal Language */ + DW_LANG_BLISS = 0x0025, /* BLISS */ DW_LANG_lo_user = 0x8000, DW_LANG_Mips_Assembler = 0x8001, /* Assembler */ diff --git a/libdw/dwarf_aggregate_size.c b/libdw/dwarf_aggregate_size.c index 52ef0067..0472a9be 100644 --- a/libdw/dwarf_aggregate_size.c +++ b/libdw/dwarf_aggregate_size.c @@ -105,14 +105,24 @@ array_size (Dwarf_Die *die, Dwarf_Word *size, case DW_LANG_C99: case DW_LANG_C11: case DW_LANG_C_plus_plus: + case DW_LANG_C_plus_plus_03: case DW_LANG_C_plus_plus_11: case DW_LANG_C_plus_plus_14: case DW_LANG_ObjC: case DW_LANG_ObjC_plus_plus: case DW_LANG_Java: case DW_LANG_D: + case DW_LANG_Python: case DW_LANG_UPC: + case DW_LANG_OpenCL: case DW_LANG_Go: + case DW_LANG_Haskell: + case DW_LANG_OCaml: + case DW_LANG_Rust: + case DW_LANG_Swift: + case DW_LANG_Dylan: + case DW_LANG_RenderScript: + case DW_LANG_BLISS: lower = 0; break; @@ -127,7 +137,9 @@ array_size (Dwarf_Die *die, Dwarf_Word *size, case DW_LANG_Fortran08: case DW_LANG_Pascal83: case DW_LANG_Modula2: + case DW_LANG_Modula3: case DW_LANG_PLI: + case DW_LANG_Julia: lower = 1; break; -- cgit v1.2.3 From 2eb1e3485614f5a4d3cbe8f28efd0d0de980911f Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 26 Jul 2017 18:06:21 +0200 Subject: libdw: Add dwarf_default_lower_bound. Add dwarf_default_lower_bound to get the default lower bound for a language when not given as attribute for an subrange type. Implementation extracted from dwarf_aggregate_size. Add a test to check all known language codes are handled. Signed-off-by: Mark Wielaard --- ChangeLog | 4 ++ NEWS | 1 + libdw/ChangeLog | 11 +++++ libdw/Makefile.am | 4 +- libdw/dwarf_aggregate_size.c | 54 ++--------------------- libdw/dwarf_default_lower_bound.c | 91 +++++++++++++++++++++++++++++++++++++++ libdw/dwarf_error.c | 1 + libdw/libdw.h | 6 +++ libdw/libdw.map | 1 + libdw/libdwP.h | 4 +- tests/ChangeLog | 7 +++ tests/Makefile.am | 5 ++- tests/dwarf_default_lower_bound.c | 83 +++++++++++++++++++++++++++++++++++ 13 files changed, 217 insertions(+), 55 deletions(-) create mode 100644 libdw/dwarf_default_lower_bound.c create mode 100644 tests/dwarf_default_lower_bound.c diff --git a/ChangeLog b/ChangeLog index d1330616..25944f06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-07-26 Mark Wielaard + + * NEWS: Mention new dwarf_default_lower_bound function. + 2017-07-25 Mark Wielaard * NEWS: Mention new DWARF5 attributes, tags, character encodings diff --git a/NEWS b/NEWS index 2039cfe4..5bf0a4d4 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ Version 0.170 libdw: Added new DWARF5 attribute, tag, character encodings constants and language codes to dwarf.h. + New function dwarf_default_lower_bound. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 39a9c1dc..ee7dc92e 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,14 @@ +2017-07-26 Mark Wielaard + + * dwarf_default_lower_bound.c: New file. + * Makefile.am (libdw_a_SOURCES): Add dwarf_default_lower_bound.c. + * dwarf_aggregate_size.c (array_size): Use dwarf_default_lower_bound. + * dwarf_error.c (errmsgs): Add DWARF_E_UNKNOWN_LANGUAGE. + * libdw.h: Add dwarf_default_lower_bound. + * libdw.map (ELFUTILS_0.170): Add dwarf_default_lower_bound. + * libdwP.h: Add DWARF_E_UNKNOWN_LANGUAGE and + dwarf_default_lower_bound INTDECL. + 2017-07-26 Mark Wielaard * dwarf.h: Add DW_LANG_OpenCL, DW_LANG_Modula3, diff --git a/libdw/Makefile.am b/libdw/Makefile.am index ad031b11..ff8c291e 100644 --- a/libdw/Makefile.am +++ b/libdw/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to create Makefile.in ## -## Copyright (C) 2002-2010, 2012, 2014 Red Hat, Inc. +## Copyright (C) 2002-2010, 2012, 2014, 2016 Red Hat, Inc. ## This file is part of elfutils. ## ## This file is free software; you can redistribute it and/or modify @@ -89,7 +89,7 @@ libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \ dwarf_aggregate_size.c dwarf_getlocation_implicit_pointer.c \ dwarf_getlocation_die.c dwarf_getlocation_attr.c \ dwarf_getalt.c dwarf_setalt.c dwarf_cu_getdwarf.c \ - dwarf_cu_die.c dwarf_peel_type.c + dwarf_cu_die.c dwarf_peel_type.c dwarf_default_lower_bound.c if MAINTAINER_MODE BUILT_SOURCES = $(srcdir)/known-dwarf.h diff --git a/libdw/dwarf_aggregate_size.c b/libdw/dwarf_aggregate_size.c index 0472a9be..838468dd 100644 --- a/libdw/dwarf_aggregate_size.c +++ b/libdw/dwarf_aggregate_size.c @@ -95,57 +95,11 @@ array_size (Dwarf_Die *die, Dwarf_Word *size, } else { - /* Determine default lower bound from language, - as per "4.12 Subrange Type Entries". */ Dwarf_Die cu = CUDIE (die->cu); - switch (INTUSE(dwarf_srclang) (&cu)) - { - case DW_LANG_C: - case DW_LANG_C89: - case DW_LANG_C99: - case DW_LANG_C11: - case DW_LANG_C_plus_plus: - case DW_LANG_C_plus_plus_03: - case DW_LANG_C_plus_plus_11: - case DW_LANG_C_plus_plus_14: - case DW_LANG_ObjC: - case DW_LANG_ObjC_plus_plus: - case DW_LANG_Java: - case DW_LANG_D: - case DW_LANG_Python: - case DW_LANG_UPC: - case DW_LANG_OpenCL: - case DW_LANG_Go: - case DW_LANG_Haskell: - case DW_LANG_OCaml: - case DW_LANG_Rust: - case DW_LANG_Swift: - case DW_LANG_Dylan: - case DW_LANG_RenderScript: - case DW_LANG_BLISS: - lower = 0; - break; - - case DW_LANG_Ada83: - case DW_LANG_Ada95: - case DW_LANG_Cobol74: - case DW_LANG_Cobol85: - case DW_LANG_Fortran77: - case DW_LANG_Fortran90: - case DW_LANG_Fortran95: - case DW_LANG_Fortran03: - case DW_LANG_Fortran08: - case DW_LANG_Pascal83: - case DW_LANG_Modula2: - case DW_LANG_Modula3: - case DW_LANG_PLI: - case DW_LANG_Julia: - lower = 1; - break; - - default: - return -1; - } + int lang = INTUSE(dwarf_srclang) (&cu); + if (lang == -1 + || INTUSE(dwarf_default_lower_bound) (lang, &lower) != 0) + return -1; } if (unlikely (lower > upper)) return -1; diff --git a/libdw/dwarf_default_lower_bound.c b/libdw/dwarf_default_lower_bound.c new file mode 100644 index 00000000..a33a3433 --- /dev/null +++ b/libdw/dwarf_default_lower_bound.c @@ -0,0 +1,91 @@ +/* Get the default subrange lower bound for a given language. + Copyright (C) 2016 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "libdwP.h" + +/* Determine default lower bound from language, as per the DWARF5 + "Subrange Type Entries" table. */ +int +dwarf_default_lower_bound (int lang, Dwarf_Sword *result) +{ + switch (lang) + { + case DW_LANG_C: + case DW_LANG_C89: + case DW_LANG_C99: + case DW_LANG_C11: + case DW_LANG_C_plus_plus: + case DW_LANG_C_plus_plus_03: + case DW_LANG_C_plus_plus_11: + case DW_LANG_C_plus_plus_14: + case DW_LANG_ObjC: + case DW_LANG_ObjC_plus_plus: + case DW_LANG_Java: + case DW_LANG_D: + case DW_LANG_Python: + case DW_LANG_UPC: + case DW_LANG_OpenCL: + case DW_LANG_Go: + case DW_LANG_Haskell: + case DW_LANG_OCaml: + case DW_LANG_Rust: + case DW_LANG_Swift: + case DW_LANG_Dylan: + case DW_LANG_RenderScript: + case DW_LANG_BLISS: + *result = 0; + return 0; + + case DW_LANG_Ada83: + case DW_LANG_Ada95: + case DW_LANG_Cobol74: + case DW_LANG_Cobol85: + case DW_LANG_Fortran77: + case DW_LANG_Fortran90: + case DW_LANG_Fortran95: + case DW_LANG_Fortran03: + case DW_LANG_Fortran08: + case DW_LANG_Pascal83: + case DW_LANG_Modula2: + case DW_LANG_Modula3: + case DW_LANG_PLI: + case DW_LANG_Julia: + *result = 1; + return 0; + + default: + __libdw_seterrno (DWARF_E_UNKNOWN_LANGUAGE); + return -1; + } +} +INTDEF (dwarf_default_lower_bound) diff --git a/libdw/dwarf_error.c b/libdw/dwarf_error.c index 66fdc81a..939ec047 100644 --- a/libdw/dwarf_error.c +++ b/libdw/dwarf_error.c @@ -95,6 +95,7 @@ static const char *errmsgs[] = [DWARF_E_NO_ALT_DEBUGLINK] = N_("no alternative debug link found"), [DWARF_E_INVALID_OPCODE] = N_("invalid opcode"), [DWARF_E_NOT_CUDIE] = N_("not a CU (unit) DIE"), + [DWARF_E_UNKNOWN_LANGUAGE] = N_("unknown language code") }; #define nerrmsgs (sizeof (errmsgs) / sizeof (errmsgs[0])) diff --git a/libdw/libdw.h b/libdw/libdw.h index 4903b55f..49c4ebb9 100644 --- a/libdw/libdw.h +++ b/libdw/libdw.h @@ -733,6 +733,12 @@ extern int dwarf_getlocation_attr (Dwarf_Attribute *attr, For DW_TAG_array_type it can apply much more complex rules. */ extern int dwarf_aggregate_size (Dwarf_Die *die, Dwarf_Word *size); +/* Given a language code, as returned by dwarf_srclan, get the default + lower bound for a subrange type without a lower bound attribute. + Returns zero on success or -1 on failure when the given language + wasn't recognized. */ +extern int dwarf_default_lower_bound (int lang, Dwarf_Sword *result) + __nonnull_attribute__ (2); /* Return scope DIEs containing PC address. Sets *SCOPES to a malloc'd array of Dwarf_Die structures, diff --git a/libdw/libdw.map b/libdw/libdw.map index 44e096ae..14307056 100644 --- a/libdw/libdw.map +++ b/libdw/libdw.map @@ -341,5 +341,6 @@ ELFUTILS_0.167 { ELFUTILS_0.170 { global: + dwarf_default_lower_bound; dwarf_line_file; } ELFUTILS_0.167; diff --git a/libdw/libdwP.h b/libdw/libdwP.h index 5d095a7e..6ad322c1 100644 --- a/libdw/libdwP.h +++ b/libdw/libdwP.h @@ -1,5 +1,5 @@ /* Internal definitions for libdwarf. - Copyright (C) 2002-2011, 2013-2015 Red Hat, Inc. + Copyright (C) 2002-2011, 2013-2016 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2002. @@ -130,6 +130,7 @@ enum DWARF_E_NO_ALT_DEBUGLINK, DWARF_E_INVALID_OPCODE, DWARF_E_NOT_CUDIE, + DWARF_E_UNKNOWN_LANGUAGE, }; @@ -764,6 +765,7 @@ INTDECL (dwarf_attr_integrate) INTDECL (dwarf_begin) INTDECL (dwarf_begin_elf) INTDECL (dwarf_child) +INTDECL (dwarf_default_lower_bound) INTDECL (dwarf_dieoffset) INTDECL (dwarf_diename) INTDECL (dwarf_end) diff --git a/tests/ChangeLog b/tests/ChangeLog index 519f25a3..fa3f94ed 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,10 @@ +2017-07-26 Mark Wielaard + + * dwarf_default_lower_bound.c: New test. + * Makefile.am (check_PROGRAMS): Add dwarf_default_lower_bound. + (TESTS): Likewise. + (dwarf_default_lower_bound_LDADD): New variable. + 2017-07-21 Mark Wielaard * get-lines.c (main): Add dwarf_line_file test. diff --git a/tests/Makefile.am b/tests/Makefile.am index 407c0511..3735084f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -55,7 +55,7 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ getsrc_die strptr newdata elfstrtab dwfl-proc-attach \ elfshphehdr elfstrmerge dwelfgnucompressed elfgetchdr \ elfgetzdata elfputzdata zstrptr emptyfile vendorelf \ - fillfile + fillfile dwarf_default_lower_bound asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \ asm-tst6 asm-tst7 asm-tst8 asm-tst9 @@ -135,7 +135,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-elfgetzdata.sh run-elfputzdata.sh run-zstrptr.sh \ run-compress-test.sh \ run-readelf-zdebug.sh run-readelf-zdebug-rel.sh \ - emptyfile vendorelf fillfile + emptyfile vendorelf fillfile dwarf_default_lower_bound if !BIARCH export ELFUTILS_DISABLE_BIARCH = 1 @@ -505,6 +505,7 @@ zstrptr_LDADD = $(libelf) emptyfile_LDADD = $(libelf) vendorelf_LDADD = $(libelf) fillfile_LDADD = $(libelf) +dwarf_default_lower_bound_LDADD = $(libdw) # We want to test the libelf header against the system elf.h header. # Don't include any -I CPPFLAGS. diff --git a/tests/dwarf_default_lower_bound.c b/tests/dwarf_default_lower_bound.c new file mode 100644 index 00000000..d57424fc --- /dev/null +++ b/tests/dwarf_default_lower_bound.c @@ -0,0 +1,83 @@ +/* Test all DW_LANG constants are handled by dwarf_default_lower_bound. + + Copyright (C) 2016 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include ELFUTILS_HEADER(dw) +#include "../libdw/known-dwarf.h" + +#include +#include +#include + +static void +test_lang (const char *name, int lang) +{ + Dwarf_Sword low; + int res = dwarf_default_lower_bound (lang, &low); + + /* Assembler is special, it doesn't really have arrays. */ + if (lang == DW_LANG_Mips_Assembler) + { + if (res == 0) + { + printf ("%s shouldn't have a known lower bound\n", name); + exit (-1); + } + printf ("%s: \n", name); + return; + } + + if (res != 0) + { + printf ("dwarf_default_lower_bound failed (%d) for %s\n", res, name); + exit (-1); + } + + /* All currently known lower bounds are either zero or one, but + they don't have to. Update test once one is a different value. */ + if (low != 0 && low != 1) + { + printf ("unexpected lower bound %" PRId64 " for %s\n", low, name); + exit (-1); + } + + printf ("%s: %" PRId64 "\n", name, low); +} + +int +main (int argc __attribute__ ((unused)), char *argv[] __attribute__ ((unused))) +{ + Dwarf_Sword low; + /* Bad language code must fail. */ + if (dwarf_default_lower_bound (-1, &low) == 0) + { + printf ("Bad lang code -1 succeeded (%" PRId64 ")\n", low); + exit (-1); + } + + /* Test all known language codes. */ +#define DWARF_ONE_KNOWN_DW_LANG(NAME, CODE) test_lang (#NAME, CODE); + DWARF_ALL_KNOWN_DW_LANG +#undef DWARF_ONE_KNOWN_DW_LANG + + return 0; +} -- cgit v1.2.3 From 75834f33d6abcbfbd160af97cda5bc83c9ed8a5d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 26 Jul 2017 18:15:20 +0200 Subject: libdw: DWARF5 Add DW_CC_pass_by_reference and DW_CC_pass_by_reference. Signed-off-by: Mark Wielaard --- ChangeLog | 4 ++++ NEWS | 4 ++-- libdw/ChangeLog | 4 ++++ libdw/dwarf.h | 7 ++++++- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 25944f06..7748f139 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-07-26 Mark Wielaard + + * NEWS: Mention new DWARF5 calling conventions. + 2017-07-26 Mark Wielaard * NEWS: Mention new dwarf_default_lower_bound function. diff --git a/NEWS b/NEWS index 5bf0a4d4..409805e7 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ Version 0.170 -libdw: Added new DWARF5 attribute, tag, character encodings constants and - language codes to dwarf.h. +libdw: Added new DWARF5 attribute, tag, character encoding, language code + and calling convention constants to dwarf.h. New function dwarf_default_lower_bound. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index ee7dc92e..1c4eb366 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,7 @@ +2017-07-26 Mark Wielaard + + * dwarf.h: Add DW_CC_pass_by_reference and DW_CC_pass_by_reference. + 2017-07-26 Mark Wielaard * dwarf_default_lower_bound.c: New file. diff --git a/libdw/dwarf.h b/libdw/dwarf.h index dd4384fb..de8f7e5a 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -688,12 +688,17 @@ enum }; -/* DWARF calling conventions encodings. */ +/* DWARF calling conventions encodings. + Used as values of DW_AT_calling_convention for subroutines + (normal, program or nocall) or structures, unions and class types + (normal, reference or value). */ enum { DW_CC_normal = 0x1, DW_CC_program = 0x2, DW_CC_nocall = 0x3, + DW_CC_pass_by_reference = 0x4, + DW_CC_pass_by_value = 0x5, DW_CC_lo_user = 0x40, DW_CC_hi_user = 0xff }; -- cgit v1.2.3 From 02e3093731b698547d30aaa3c1a0f66485a88ebd Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 26 Jul 2017 18:32:27 +0200 Subject: Handle DWARF5 defaulted member function encodings. Add DW_DEFAULTED_no, DW_DEFAULTED_in_class and DW_DEFAULTED_out_of_class to dwarf.h. Print value (no, in_class or out_of_class) of DW_AT_defaulted in readelf. Signed-off-by: Mark Wielaard --- ChangeLog | 3 ++- NEWS | 4 ++-- libdw/ChangeLog | 5 +++++ libdw/dwarf.h | 8 ++++++++ src/ChangeLog | 7 +++++++ src/readelf.c | 28 ++++++++++++++++++++++++++++ 6 files changed, 52 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7748f139..b4722db6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2017-07-26 Mark Wielaard - * NEWS: Mention new DWARF5 calling conventions. + * NEWS: Mention new DWARF5 calling conventions and defaulted member + function. 2017-07-26 Mark Wielaard diff --git a/NEWS b/NEWS index 409805e7..5f85fc26 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ Version 0.170 -libdw: Added new DWARF5 attribute, tag, character encoding, language code - and calling convention constants to dwarf.h. +libdw: Added new DWARF5 attribute, tag, character encoding, language code, + calling convention and defaulted member function constants to dwarf.h. New function dwarf_default_lower_bound. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 1c4eb366..a74733c2 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,8 @@ +2017-07-26 Mark Wielaard + + * dwarf.h: Add DW_DEFAULTED_no, DW_DEFAULTED_in_class and + DW_DEFAULTED_out_of_class. + 2017-07-26 Mark Wielaard * dwarf.h: Add DW_CC_pass_by_reference and DW_CC_pass_by_reference. diff --git a/libdw/dwarf.h b/libdw/dwarf.h index de8f7e5a..82a68f26 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -729,6 +729,14 @@ enum DW_DSC_range = 1 }; +/* DWARF defaulted member function encodings. */ +enum + { + DW_DEFAULTED_no = 0, + DW_DEFAULTED_in_class = 1, + DW_DEFAULTED_out_of_class = 2 + }; + /* DWARF standard opcode encodings. */ enum diff --git a/src/ChangeLog b/src/ChangeLog index f92f10d7..3ebc7044 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2017-07-26 Mark Wielaard + + * readelf.c (dwarf_defaulted_string): New function. + (dwarf_defaulted_name): Likewise. + (attr_callback): Use dwarf_defaulted_name to get value of + DW_AT_defaulted. + 2017-07-20 Mark Wielaard * strip.c (handle_elf): Deal with data marker symbols pointing to diff --git a/src/readelf.c b/src/readelf.c index 40d49139..5e1685df 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -3796,6 +3796,23 @@ dwarf_access_string (unsigned int code) } +static const char * +dwarf_defaulted_string (unsigned int code) +{ + static const char *const known[] = + { +#define DWARF_ONE_KNOWN_DW_DEFAULTED(NAME, CODE) [CODE] = #NAME, + DWARF_ALL_KNOWN_DW_DEFAULTED +#undef DWARF_ONE_KNOWN_DW_DEFAULTED + }; + + if (likely (code < sizeof (known) / sizeof (known[0]))) + return known[code]; + + return NULL; +} + + static const char * dwarf_visibility_string (unsigned int code) { @@ -4001,6 +4018,14 @@ dwarf_access_name (unsigned int code) } +static const char * +dwarf_defaulted_name (unsigned int code) +{ + const char *ret = dwarf_defaulted_string (code); + return string_or_unknown (ret, code, 0, 0, false); +} + + static const char * dwarf_visibility_name (unsigned int code) { @@ -6053,6 +6078,9 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) case DW_AT_accessibility: valuestr = dwarf_access_name (num); break; + case DW_AT_defaulted: + valuestr = dwarf_defaulted_name (num); + break; case DW_AT_visibility: valuestr = dwarf_visibility_name (num); break; -- cgit v1.2.3 From 274f28ce24955b2e6a17e9ff2eb0c7c2e5751f97 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 26 Jul 2017 22:54:59 +0200 Subject: libdw: Handle DWARF5 immutable, packed and shared in dwarf_peel_type. Also update the documentation to explain that any type alias or modifier that doesn't modify, change the structural layout or the way to access the underlying type is peeled. Explicitly mention pointer and reference types as examples of modifiers that don't obey that rule and so aren't peeled. Signed-off-by: Mark Wielaard --- ChangeLog | 4 ++++ NEWS | 1 + libdw/ChangeLog | 6 ++++++ libdw/dwarf_peel_type.c | 7 +++++-- libdw/libdw.h | 28 ++++++++++++++++++---------- 5 files changed, 34 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index b4722db6..b7efc847 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-07-26 Mark Wielaard + + * NEWS: Mention dwarf_peel_type DWARF5 tags improvement. + 2017-07-26 Mark Wielaard * NEWS: Mention new DWARF5 calling conventions and defaulted member diff --git a/NEWS b/NEWS index 5f85fc26..054ac95a 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ Version 0.170 libdw: Added new DWARF5 attribute, tag, character encoding, language code, calling convention and defaulted member function constants to dwarf.h. New function dwarf_default_lower_bound. + dwarf_peel_type now handles DWARF5 immutable, packed and shared tags. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index a74733c2..d0b3f4ca 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,9 @@ +2017-07-26 Mark Wielaard + + * dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_immutable_type, + DW_TAG_packed_type and DW_TAG_shared_type. + * libdw.h (dwarf_peel_type): Extend documentation. + 2017-07-26 Mark Wielaard * dwarf.h: Add DW_DEFAULTED_no, DW_DEFAULTED_in_class and diff --git a/libdw/dwarf_peel_type.c b/libdw/dwarf_peel_type.c index 97356944..6bbfd424 100644 --- a/libdw/dwarf_peel_type.c +++ b/libdw/dwarf_peel_type.c @@ -1,5 +1,5 @@ /* Peel type aliases and qualifier tags from a type DIE. - Copyright (C) 2014, 2015 Red Hat, Inc. + Copyright (C) 2014, 2015, 2016 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -50,7 +50,10 @@ dwarf_peel_type (Dwarf_Die *die, Dwarf_Die *result) || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type || tag == DW_TAG_restrict_type - || tag == DW_TAG_atomic_type) + || tag == DW_TAG_atomic_type + || tag == DW_TAG_immutable_type + || tag == DW_TAG_packed_type + || tag == DW_TAG_shared_type) { Dwarf_Attribute attr_mem; Dwarf_Attribute *attr = INTUSE (dwarf_attr_integrate) (result, DW_AT_type, diff --git a/libdw/libdw.h b/libdw/libdw.h index 49c4ebb9..63a38ff9 100644 --- a/libdw/libdw.h +++ b/libdw/libdw.h @@ -1,5 +1,5 @@ /* Interfaces for libdw. - Copyright (C) 2002-2010, 2013, 2014 Red Hat, Inc. + Copyright (C) 2002-2010, 2013, 2014, 2016 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -378,8 +378,11 @@ extern int dwarf_child (Dwarf_Die *die, Dwarf_Die *result) extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result) __nonnull_attribute__ (2); -/* For type aliases and qualifier type DIEs follow the DW_AT_type - attribute (recursively) and return the underlying type Dwarf_Die. +/* For type aliases and qualifier type DIEs, which don't modify or + change the structural layout of the underlying type, follow the + DW_AT_type attribute (recursively) and return the underlying type + Dwarf_Die. + Returns 0 when RESULT contains a Dwarf_Die (possibly equal to the given DIE) that isn't a type alias or qualifier type. Returns 1 when RESULT contains a type alias or qualifier Dwarf_Die that @@ -387,13 +390,18 @@ extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result) attribute). Returns -1 when an error occured. The current DWARF specification defines one type alias tag - (DW_TAG_typedef) and three qualifier type tags (DW_TAG_const_type, - DW_TAG_volatile_type, DW_TAG_restrict_type). DWARF5 defines one - other qualifier type tag (DW_TAG_atomic_type). A future version of - this function might peel other alias or qualifier type tags if a - future DWARF version or GNU extension defines other type aliases or - qualifier type tags that don't modify or change the structural - layout of the underlying type. */ + (DW_TAG_typedef) and seven modifier/qualifier type tags + (DW_TAG_const_type, DW_TAG_volatile_type, DW_TAG_restrict_type, + DW_TAG_atomic_type, DW_TAG_immutable_type, DW_TAG_packed_type and + DW_TAG_shared_type). This function won't peel modifier type + tags that change the way the underlying type is accessed such + as the pointer or reference type tags (DW_TAG_pointer_type, + DW_TAG_reference_type or DW_TAG_rvalue_reference_type). + + A future version of this function might peel other alias or + qualifier type tags if a future DWARF version or GNU extension + defines other type aliases or qualifier type tags that don't modify, + change the structural layout or the way to access the underlying type. */ extern int dwarf_peel_type (Dwarf_Die *die, Dwarf_Die *result) __nonnull_attribute__ (2); -- cgit v1.2.3 From f9d791a92bce59cd68a909d77b94e5ece3c66c01 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 26 Jul 2017 23:02:18 +0200 Subject: libdw: Add DW_MACRO constants and DW_MACRO_GNU compatibility defines. Accept version 5 .debug_macro format, which is identical to the GNU version 4 format. No real support yet for the new supplementary object file (sup) and indirect string references (strx). GCC doesn't generate them yet. readelf does recognize them, but doesn't try to decode them. dwarf_getmacros currently rejects the new formats. Signed-off-by: Mark Wielaard --- ChangeLog | 4 +++ NEWS | 4 ++- libdw/ChangeLog | 7 ++++ libdw/dwarf.h | 38 ++++++++++++++------ libdw/dwarf_getmacros.c | 27 +++++++------- src/ChangeLog | 7 ++++ src/readelf.c | 95 ++++++++++++++++++++++++++++++++++++++++--------- tests/ChangeLog | 4 +++ tests/dwarf-getmacros.c | 10 +++--- 9 files changed, 152 insertions(+), 44 deletions(-) diff --git a/ChangeLog b/ChangeLog index b7efc847..8748ab86 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-07-26 Mark Wielaard + + * NEWS: Mention dwarf_getmacros handling version 5 .debug_macro. + 2017-07-26 Mark Wielaard * NEWS: Mention dwarf_peel_type DWARF5 tags improvement. diff --git a/NEWS b/NEWS index 054ac95a..5c2d8add 100644 --- a/NEWS +++ b/NEWS @@ -1,9 +1,11 @@ Version 0.170 libdw: Added new DWARF5 attribute, tag, character encoding, language code, - calling convention and defaulted member function constants to dwarf.h. + calling convention, defaulted member function and macro constants + to dwarf.h. New function dwarf_default_lower_bound. dwarf_peel_type now handles DWARF5 immutable, packed and shared tags. + dwarf_getmacros now handles DWARF5 .debug_macro sections. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index d0b3f4ca..6533eb50 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,10 @@ +2017-07-26 Mark Wielaard + + * dwarf.h: Add DW_MACRO_* and compat defines for DW_MACRO_GNU_*. + * dwarf_getmacros.c (get_table_for_offset): Accept either version + 4 or 5. Use DW_MACRO names instead of DW_MACRO_GNU names. + (read_macros): Use table version for fake_cu. + 2017-07-26 Mark Wielaard * dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_immutable_type, diff --git a/libdw/dwarf.h b/libdw/dwarf.h index 82a68f26..902d2617 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -780,20 +780,38 @@ enum }; -/* DWARF debug_macro type encodings. GNU/DWARF5 extension. */ +/* DWARF debug_macro type encodings. */ enum { - DW_MACRO_GNU_define = 0x01, - DW_MACRO_GNU_undef = 0x02, - DW_MACRO_GNU_start_file = 0x03, - DW_MACRO_GNU_end_file = 0x04, - DW_MACRO_GNU_define_indirect = 0x05, - DW_MACRO_GNU_undef_indirect = 0x06, - DW_MACRO_GNU_transparent_include = 0x07, - DW_MACRO_GNU_lo_user = 0xe0, - DW_MACRO_GNU_hi_user = 0xff + DW_MACRO_define = 0x01, + DW_MACRO_undef = 0x02, + DW_MACRO_start_file = 0x03, + DW_MACRO_end_file = 0x04, + DW_MACRO_define_strp = 0x05, + DW_MACRO_undef_strp = 0x06, + DW_MACRO_import = 0x07, + DW_MACRO_define_sup = 0x08, + DW_MACRO_undef_sup = 0x09, + DW_MACRO_import_sup = 0x0a, + DW_MACRO_define_strx = 0x0b, + DW_MACRO_undef_strx = 0x0c, + DW_MACRO_lo_user = 0xe0, + DW_MACRO_hi_user = 0xff }; +/* Old GNU extension names for DWARF5 debug_macro type encodings. + There are no equivalents for the supplementary object file (sup) + and indirect string references (strx). */ +#define DW_MACRO_GNU_define DW_MACRO_define +#define DW_MACRO_GNU_undef DW_MACRO_undef +#define DW_MACRO_GNU_start_file DW_MACRO_start_file +#define DW_MACRO_GNU_end_file DW_MACRO_end_file +#define DW_MACRO_GNU_define_indirect DW_MACRO_define_strp +#define DW_MACRO_GNU_undef_indirect DW_MACRO_undef_strp +#define DW_MACRO_GNU_transparent_include DW_MACRO_import +#define DW_MACRO_GNU_lo_user DW_MACRO_lo_user +#define DW_MACRO_GNU_hi_user DW_MACRO_hi_user + /* DWARF call frame instruction encodings. */ enum diff --git a/libdw/dwarf_getmacros.c b/libdw/dwarf_getmacros.c index eb505085..db6582b6 100644 --- a/libdw/dwarf_getmacros.c +++ b/libdw/dwarf_getmacros.c @@ -158,7 +158,7 @@ get_table_for_offset (Dwarf *dbg, Dwarf_Word macoff, } uint16_t version = read_2ubyte_unaligned_inc (dbg, readp); - if (version != 4) + if (version != 4 && version != 5) { __libdw_seterrno (DWARF_E_INVALID_VERSION); return NULL; @@ -198,15 +198,17 @@ get_table_for_offset (Dwarf *dbg, Dwarf_Word macoff, Dwarf_Macro_Op_Proto op_protos[255] = { - [DW_MACRO_GNU_define - 1] = p_udata_str, - [DW_MACRO_GNU_undef - 1] = p_udata_str, - [DW_MACRO_GNU_define_indirect - 1] = p_udata_strp, - [DW_MACRO_GNU_undef_indirect - 1] = p_udata_strp, - [DW_MACRO_GNU_start_file - 1] = p_udata_udata, - [DW_MACRO_GNU_end_file - 1] = p_none, - [DW_MACRO_GNU_transparent_include - 1] = p_secoffset, - /* N.B. DW_MACRO_undef_indirectx, DW_MACRO_define_indirectx - should be added when 130313.1 is supported. */ + [DW_MACRO_define - 1] = p_udata_str, + [DW_MACRO_undef - 1] = p_udata_str, + [DW_MACRO_define_strp - 1] = p_udata_strp, + [DW_MACRO_undef_strp - 1] = p_udata_strp, + [DW_MACRO_start_file - 1] = p_udata_udata, + [DW_MACRO_end_file - 1] = p_none, + [DW_MACRO_import - 1] = p_secoffset, + /* When adding support for DWARF5 supplementary object files and + indirect string tables also add support for DW_MACRO_define_sup, + DW_MACRO_undef_sup, DW_MACRO_import_sup, DW_MACRO_define_strx + and DW_MACRO_undef_strx. */ }; if ((flags & 0x4) != 0) @@ -354,10 +356,11 @@ read_macros (Dwarf *dbg, int sec_index, /* A fake CU with bare minimum data to fool dwarf_formX into doing the right thing with the attributes that we put out. - We arbitrarily pretend it's version 4. */ + We pretend it is the same version as the actual table. + Version 4 for the old GNU extension, version 5 for DWARF5. */ Dwarf_CU fake_cu = { .dbg = dbg, - .version = 4, + .version = table->version, .offset_size = table->is_64bit ? 8 : 4, .startp = (void *) startp + offset, .endp = (void *) endp, diff --git a/src/ChangeLog b/src/ChangeLog index 3ebc7044..54ba767e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2017-07-26 Mark Wielaard + + * readelf.c (print_debug_macro_section): Accept either version 4 or + version 5. Use DW_MACRO names instead of DW_MACRO_GNU names. Add + minimal support for DW_MACRO_define_sup, DW_MACRO_undef_sup, + DW_MACRO_import_sup, DW_MACRO_define_strx and DW_MACRO_undef_strx. + 2017-07-26 Mark Wielaard * readelf.c (dwarf_defaulted_string): New function. diff --git a/src/readelf.c b/src/readelf.c index 5e1685df..73be474b 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -7394,7 +7394,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), // Version 4 is the GNU extension for DWARF4. DWARF5 will use version // 5 when it gets standardized. - if (vers != 4) + if (vers != 4 && vers != 5) { printf (gettext (" unknown version, cannot parse section\n")); return; @@ -7418,7 +7418,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), line_offset); } - const unsigned char *vendor[DW_MACRO_GNU_hi_user - DW_MACRO_GNU_lo_user]; + const unsigned char *vendor[DW_MACRO_hi_user - DW_MACRO_lo_user]; memset (vendor, 0, sizeof vendor); if (flag & 0x04) { @@ -7435,12 +7435,12 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), goto invalid_data; unsigned int opcode = *readp++; printf (gettext (" [%" PRIx8 "]"), opcode); - if (opcode < DW_MACRO_GNU_lo_user - || opcode > DW_MACRO_GNU_hi_user) + if (opcode < DW_MACRO_lo_user + || opcode > DW_MACRO_hi_user) goto invalid_data; // Record the start of description for this vendor opcode. // uleb128 nr args, 1 byte per arg form. - vendor[opcode - DW_MACRO_GNU_lo_user] = readp; + vendor[opcode - DW_MACRO_lo_user] = readp; if (readp + 1 > readendp) goto invalid_data; unsigned int args = *readp++; @@ -7493,7 +7493,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), switch (opcode) { - case DW_MACRO_GNU_start_file: + case DW_MACRO_start_file: get_uleb128 (u128, readp, readendp); if (readp >= readendp) goto invalid_data; @@ -7523,12 +7523,12 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), ++level; break; - case DW_MACRO_GNU_end_file: + case DW_MACRO_end_file: --level; printf ("%*send_file\n", level, ""); break; - case DW_MACRO_GNU_define: + case DW_MACRO_define: get_uleb128 (u128, readp, readendp); endp = memchr (readp, '\0', readendp - readp); if (endp == NULL) @@ -7538,7 +7538,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), readp = endp + 1; break; - case DW_MACRO_GNU_undef: + case DW_MACRO_undef: get_uleb128 (u128, readp, readendp); endp = memchr (readp, '\0', readendp - readp); if (endp == NULL) @@ -7548,7 +7548,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), readp = endp + 1; break; - case DW_MACRO_GNU_define_indirect: + case DW_MACRO_define_strp: get_uleb128 (u128, readp, readendp); if (readp + offset_len > readendp) goto invalid_data; @@ -7560,7 +7560,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), level, "", dwarf_getstring (dbg, off, NULL), u128); break; - case DW_MACRO_GNU_undef_indirect: + case DW_MACRO_undef_strp: get_uleb128 (u128, readp, readendp); if (readp + offset_len > readendp) goto invalid_data; @@ -7572,7 +7572,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), level, "", dwarf_getstring (dbg, off, NULL), u128); break; - case DW_MACRO_GNU_transparent_include: + case DW_MACRO_import: if (readp + offset_len > readendp) goto invalid_data; if (offset_len == 8) @@ -7583,15 +7583,78 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), level, "", off); break; + case DW_MACRO_define_sup: + get_uleb128 (u128, readp, readendp); + if (readp + offset_len > readendp) + goto invalid_data; + if (offset_len == 8) + off = read_8ubyte_unaligned_inc (dbg, readp); + else + off = read_4ubyte_unaligned_inc (dbg, readp); + // Needs support for reading from supplementary object file. + printf ("%*s#define , line %u (sup)\n", + level, "", off, u128); + break; + + case DW_MACRO_undef_sup: + get_uleb128 (u128, readp, readendp); + if (readp + offset_len > readendp) + goto invalid_data; + if (offset_len == 8) + off = read_8ubyte_unaligned_inc (dbg, readp); + else + off = read_4ubyte_unaligned_inc (dbg, readp); + // Needs support for reading from supplementary object file. + printf ("%*s#undef , line %u (sup)\n", + level, "", off, u128); + break; + + case DW_MACRO_import_sup: + if (readp + offset_len > readendp) + goto invalid_data; + if (offset_len == 8) + off = read_8ubyte_unaligned_inc (dbg, readp); + else + off = read_4ubyte_unaligned_inc (dbg, readp); + printf ("%*s#include offset 0x%" PRIx64 " (sup)\n", + level, "", off); + break; + + case DW_MACRO_define_strx: + get_uleb128 (u128, readp, readendp); + if (readp + offset_len > readendp) + goto invalid_data; + if (offset_len == 8) + off = read_8ubyte_unaligned_inc (dbg, readp); + else + off = read_4ubyte_unaligned_inc (dbg, readp); + // Needs support for reading indirect string offset table + printf ("%*s#define , line %u (strx)\n", + level, "", off, u128); + break; + + case DW_MACRO_undef_strx: + get_uleb128 (u128, readp, readendp); + if (readp + offset_len > readendp) + goto invalid_data; + if (offset_len == 8) + off = read_8ubyte_unaligned_inc (dbg, readp); + else + off = read_4ubyte_unaligned_inc (dbg, readp); + // Needs support for reading indirect string offset table. + printf ("%*s#undef , line %u (strx)\n", + level, "", off, u128); + break; + default: printf ("%*svendor opcode 0x%" PRIx8, level, "", opcode); - if (opcode < DW_MACRO_GNU_lo_user - || opcode > DW_MACRO_GNU_lo_user - || vendor[opcode - DW_MACRO_GNU_lo_user] == NULL) + if (opcode < DW_MACRO_lo_user + || opcode > DW_MACRO_lo_user + || vendor[opcode - DW_MACRO_lo_user] == NULL) goto invalid_data; const unsigned char *op_desc; - op_desc = vendor[opcode - DW_MACRO_GNU_lo_user]; + op_desc = vendor[opcode - DW_MACRO_lo_user]; // Just skip the arguments, we cannot really interpret them, // but print as much as we can. diff --git a/tests/ChangeLog b/tests/ChangeLog index fa3f94ed..04efdc81 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,5 +1,9 @@ 2017-07-26 Mark Wielaard + * dwarf-getmacros.c (mac): Use DW_MACRO names instead of DW_MACRO_GNU. + +2016-10-27 Mark Wielaard + * dwarf_default_lower_bound.c: New test. * Makefile.am (check_PROGRAMS): Add dwarf_default_lower_bound. (TESTS): Likewise. diff --git a/tests/dwarf-getmacros.c b/tests/dwarf-getmacros.c index 92e093ca..ac70248d 100644 --- a/tests/dwarf-getmacros.c +++ b/tests/dwarf-getmacros.c @@ -38,7 +38,7 @@ mac (Dwarf_Macro *macro, void *dbg) dwarf_macro_opcode (macro, &opcode); switch (opcode) { - case DW_MACRO_GNU_transparent_include: + case DW_MACRO_import: { Dwarf_Attribute at; int r = dwarf_macro_param (macro, 0, &at); @@ -56,7 +56,7 @@ mac (Dwarf_Macro *macro, void *dbg) break; } - case DW_MACRO_GNU_start_file: + case DW_MACRO_start_file: { Dwarf_Files *files; size_t nfiles; @@ -73,7 +73,7 @@ mac (Dwarf_Macro *macro, void *dbg) break; } - case DW_MACRO_GNU_end_file: + case DW_MACRO_end_file: { --level; printf ("%*s/file\n", level, ""); @@ -81,7 +81,7 @@ mac (Dwarf_Macro *macro, void *dbg) } case DW_MACINFO_define: - case DW_MACRO_GNU_define_indirect: + case DW_MACRO_define_strp: { const char *value; dwarf_macro_param2 (macro, NULL, &value); @@ -90,7 +90,7 @@ mac (Dwarf_Macro *macro, void *dbg) } case DW_MACINFO_undef: - case DW_MACRO_GNU_undef_indirect: + case DW_MACRO_undef_strp: break; default: -- cgit v1.2.3 From 31bae8177b7302d0bcf3b57c9dce8abb591821aa Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 27 Jul 2017 23:07:00 +0200 Subject: backends: sparc GOTDATA_OP[_HIX22|LOX10] can be used in ET_REL files. Tested on new GNU Compile Farm server gcc202. Signed-off-by: Mark Wielaard --- backends/ChangeLog | 5 +++++ backends/sparc_reloc.def | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index 83710c19..a66e923e 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,8 @@ +2017-07-27 Mark Wielaard + + * sparc_reloc.def: GOTDATA_OP_HIX22, GOTDATA_OP_LOX10 and + GOTDATA_OP can be used in ET_REL files. + 2017-07-19 Gustavo Romero * ppc_corenote.c: Add offsets for ppc64 HTM SPRs: thfar, tfiar, diff --git a/backends/sparc_reloc.def b/backends/sparc_reloc.def index ce0b5556..7cd5ce96 100644 --- a/backends/sparc_reloc.def +++ b/backends/sparc_reloc.def @@ -110,9 +110,9 @@ RELOC_TYPE (TLS_TPOFF32, DYN) RELOC_TYPE (TLS_TPOFF64, DYN) RELOC_TYPE (GOTDATA_HIX22, REL) RELOC_TYPE (GOTDATA_LOX10, REL) -RELOC_TYPE (GOTDATA_OP_HIX22, DYN) -RELOC_TYPE (GOTDATA_OP_LOX10, DYN) -RELOC_TYPE (GOTDATA_OP, DYN) +RELOC_TYPE (GOTDATA_OP_HIX22, REL|DYN) +RELOC_TYPE (GOTDATA_OP_LOX10, REL|DYN) +RELOC_TYPE (GOTDATA_OP, REL|DYN) RELOC_TYPE (H34, REL) RELOC_TYPE (SIZE32, REL) RELOC_TYPE (SIZE64, REL) -- cgit v1.2.3 From 54ba4ce2973113d8f4315d4fc90e16a9b4476ea6 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 2 Aug 2017 18:30:07 +0200 Subject: Prepare for 0.170. Set version to 0.170. Update po/*.po files. Add some more user visible changes to NEWS. Signed-off-by: Mark Wielaard --- ChangeLog | 5 + NEWS | 2 +- config/ChangeLog | 6 +- config/elfutils.spec.in | 10 + configure.ac | 2 +- po/ChangeLog | 4 + po/de.po | 477 ++++++++++++++++++++++++---------------------- po/es.po | 487 ++++++++++++++++++++++++----------------------- po/ja.po | 490 +++++++++++++++++++++++++----------------------- po/pl.po | 484 +++++++++++++++++++++++++---------------------- po/uk.po | 487 ++++++++++++++++++++++++----------------------- 11 files changed, 1306 insertions(+), 1148 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8748ab86..9253c0a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-08-02 Mark Wielaard + + * configure.ac: Set version to 0.170. + * NEWS: Mention new libdw dwarf_line_file function. + 2017-07-26 Mark Wielaard * NEWS: Mention dwarf_getmacros handling version 5 .debug_macro. diff --git a/NEWS b/NEWS index 5c2d8add..72e5118d 100644 --- a/NEWS +++ b/NEWS @@ -3,7 +3,7 @@ Version 0.170 libdw: Added new DWARF5 attribute, tag, character encoding, language code, calling convention, defaulted member function and macro constants to dwarf.h. - New function dwarf_default_lower_bound. + New functions dwarf_default_lower_bound and dwarf_line_file. dwarf_peel_type now handles DWARF5 immutable, packed and shared tags. dwarf_getmacros now handles DWARF5 .debug_macro sections. diff --git a/config/ChangeLog b/config/ChangeLog index 3492d6d7..02cf76f9 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,4 +1,8 @@ -2016-05-05 Mark Wielaard +2016-08-02 Mark Wielaard + + * elfutils.spec.in: Update for 0.170. + +2017-05-05 Mark Wielaard * elfutils.spec.in: Update for 0.169. diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in index 06b7290d..439fcb73 100644 --- a/config/elfutils.spec.in +++ b/config/elfutils.spec.in @@ -227,6 +227,16 @@ rm -rf ${RPM_BUILD_ROOT} %config(noreplace) %{_sysctldir}/10-default-yama-scope.conf %changelog +* Wed Aug 2 2017 Mark Wielaard 0.170-1 +- libdw: Added new DWARF5 attribute, tag, character encoding, + language code, calling convention, defaulted member function + and macro constants to dwarf.h. + New functions dwarf_default_lower_bound and dwarf_line_file. + dwarf_peel_type now handles DWARF5 immutable, packed and shared tags. + dwarf_getmacros now handles DWARF5 .debug_macro sections. +- strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. +- backends: The bpf disassembler is now always build on all platforms. + * Fri May 5 2017 Mark Wielaard 0.169-1 - backends: Add support for EM_PPC64 GNU_ATTRIBUTES. Frame pointer unwinding fallback support for i386, x86_64, aarch64. diff --git a/configure.ac b/configure.ac index bb58f4b8..1f1856df 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.169],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/]) +AC_INIT([elfutils],[0.170],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/]) dnl Workaround for older autoconf < 2.64 m4_ifndef([AC_PACKAGE_URL], diff --git a/po/ChangeLog b/po/ChangeLog index 5e02edf2..465ae165 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,7 @@ +2017-08-02 Mark Wielaard + + * *.po: Update for 0.170. + 2017-05-05 Mark Wielaard * *.po: Update for 0.169. diff --git a/po/de.po b/po/de.po index 63c794ed..3b3e042b 100644 --- a/po/de.po +++ b/po/de.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils VERSION\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2017-05-05 09:44+0200\n" +"POT-Creation-Date: 2017-08-02 18:29+0200\n" "PO-Revision-Date: 2009-06-29 15:15+0200\n" "Last-Translator: Michael Münch \n" "Language-Team: German\n" @@ -55,7 +55,7 @@ msgstr "" "auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n" #: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296 -#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432 +#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432 #, c-format msgid "memory exhausted" msgstr "Kein Speicher mehr verfügbar" @@ -257,6 +257,11 @@ msgstr "ungültiger Operand" msgid "not a CU (unit) DIE" msgstr "" +#: libdw/dwarf_error.c:98 +#, fuzzy +msgid "unknown language code" +msgstr "unbekannter Typ" + #: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374 msgid "Input selection options:" msgstr "Eingabeauswahloptionen:" @@ -291,34 +296,34 @@ msgstr "Kernel mit allen Modulen" msgid "Search path for separate debuginfo files" msgstr "Dateisuchpfad für separate Debug-Informationen" -#: libdwfl/argp-std.c:161 +#: libdwfl/argp-std.c:164 msgid "only one of -e, -p, -k, -K, or --core allowed" msgstr "Nur eine Option von -e, -p, -k, -K, oder --core erlaubt" -#: libdwfl/argp-std.c:234 +#: libdwfl/argp-std.c:237 msgid "cannot load kernel symbols" msgstr "Konnte Kernel Symbole nicht laden" #. Non-fatal to have no modules since we do have the kernel. -#: libdwfl/argp-std.c:238 +#: libdwfl/argp-std.c:241 msgid "cannot find kernel modules" msgstr "Konnte Kernel Module nicht finden" -#: libdwfl/argp-std.c:255 +#: libdwfl/argp-std.c:258 msgid "cannot find kernel or modules" msgstr "Konnte Kernel oder Module nicht finden" -#: libdwfl/argp-std.c:294 +#: libdwfl/argp-std.c:297 #, c-format msgid "cannot read ELF core file: %s" msgstr "Konnte ELF Kerndatei %s nicht lesen" -#: libdwfl/argp-std.c:317 +#: libdwfl/argp-std.c:320 #, fuzzy msgid "Not enough memory" msgstr "nicht genügend Speicher" -#: libdwfl/argp-std.c:327 +#: libdwfl/argp-std.c:330 msgid "No modules recognized in core file" msgstr "Keine Module in der Kerndatei gefunden" @@ -489,7 +494,7 @@ msgstr "Ungültige ELF Datei" msgid "No backend" msgstr "Kein Backend" -#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 #: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 @@ -586,7 +591,7 @@ msgstr "ungültige Grösse des Quell-Operanden" msgid "invalid size of destination operand" msgstr "ungültige Grösse des Ziel-Operanden" -#: libelf/elf_error.c:87 src/readelf.c:5114 +#: libelf/elf_error.c:87 src/readelf.c:5139 #, c-format msgid "invalid encoding" msgstr "ungültige Kodierung" @@ -669,8 +674,8 @@ msgstr "data/scn Unterschied" msgid "invalid section header" msgstr "ungültiger Abschnitts-Header" -#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809 -#: src/readelf.c:7910 src/readelf.c:8091 +#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900 +#: src/readelf.c:8001 src/readelf.c:8182 #, c-format msgid "invalid data" msgstr "Ungültige Daten" @@ -1293,7 +1298,7 @@ msgid "Invalid value '%s' for --gaps parameter." msgstr "" #: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142 -#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490 +#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555 #: src/unstrip.c:2023 src/unstrip.c:2052 #, c-format msgid "cannot open '%s'" @@ -1324,7 +1329,7 @@ msgstr "" msgid "cannot get relocation: %s" msgstr "" -#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "" @@ -1375,7 +1380,7 @@ msgstr "" msgid "Force compression of section even if it would become larger" msgstr "" -#: src/elfcompress.c:1282 src/strip.c:88 +#: src/elfcompress.c:1282 src/strip.c:91 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "" @@ -3155,7 +3160,7 @@ msgstr "" #. Strings for arguments in help texts. #: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81 -#: src/strings.c:88 src/strip.c:96 +#: src/strings.c:88 src/strip.c:99 msgid "[FILE...]" msgstr "" @@ -3240,7 +3245,7 @@ msgid "" "a relocation modifies memory at offset %llu in a write-protected segment\n" msgstr "" -#: src/nm.c:67 src/strip.c:68 +#: src/nm.c:67 src/strip.c:70 msgid "Output selection:" msgstr "" @@ -3307,7 +3312,7 @@ msgstr "Kennzeichne schwache Symbole" msgid "Print size of defined symbols" msgstr "Zeige Grösse der definierten Symbole" -#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73 +#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "Ausgabeoptionen:" @@ -3337,18 +3342,18 @@ msgstr "" msgid "Output formatting" msgstr "Ausgabeformat:" -#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128 +#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131 #, fuzzy, c-format msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: INTERNER FEHLER %d (%s-%s): %s" #: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309 -#: src/strip.c:2299 +#: src/strip.c:2421 #, c-format msgid "while closing '%s'" msgstr "beim Schliessen von '%s'" -#: src/nm.c:404 src/objdump.c:281 src/strip.c:378 +#: src/nm.c:404 src/objdump.c:281 src/strip.c:443 #, c-format msgid "%s: File format not recognized" msgstr "%s: Dateiformat nicht erkannt" @@ -3392,9 +3397,9 @@ msgstr "Kann Suchbaum nicht erstellen" #: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664 #: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314 #: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315 -#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439 -#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466 -#: src/strip.c:507 +#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530 +#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466 +#: src/strip.c:572 #, c-format msgid "cannot get section header string table index" msgstr "" @@ -3670,7 +3675,7 @@ msgstr "" msgid "cannot generate Elf descriptor: %s" msgstr "konnte Elf-Deskriptor nicht erzeugen: %s" -#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576 +#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641 #, c-format msgid "cannot determine number of sections: %s" msgstr "" @@ -3680,7 +3685,7 @@ msgstr "" msgid "cannot get section: %s" msgstr "" -#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662 +#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753 #: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565 #: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109 #: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650 @@ -3694,8 +3699,8 @@ msgstr "" msgid "cannot get section name" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899 -#: src/readelf.c:8076 +#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990 +#: src/readelf.c:8167 #, c-format msgid "cannot get %s content: %s" msgstr "" @@ -4032,8 +4037,8 @@ msgstr "" msgid "" msgstr "" -#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533 -#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591 +#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624 +#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682 msgid "Couldn't uncompress section" msgstr "" @@ -4043,7 +4048,7 @@ msgid "cannot get section [%zd] header: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" #: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654 -#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734 +#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr "ungültige .debug_line Sektion" @@ -4446,46 +4451,46 @@ msgstr "%s+%#" msgid "%s+%#0*" msgstr "%s+%#0*" -#: src/readelf.c:4056 +#: src/readelf.c:4081 msgid "empty block" msgstr "" -#: src/readelf.c:4059 +#: src/readelf.c:4084 #, c-format msgid "%zu byte block:" msgstr "" -#: src/readelf.c:4456 +#: src/readelf.c:4481 #, c-format msgid "%*s[%4] %s \n" msgstr "" -#: src/readelf.c:4513 +#: src/readelf.c:4538 #, c-format msgid "%s %# used with different address sizes" msgstr "" -#: src/readelf.c:4520 +#: src/readelf.c:4545 #, c-format msgid "%s %# used with different offset sizes" msgstr "" -#: src/readelf.c:4527 +#: src/readelf.c:4552 #, c-format msgid "%s %# used with different base addresses" msgstr "" -#: src/readelf.c:4616 +#: src/readelf.c:4641 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:4624 +#: src/readelf.c:4649 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr "" -#: src/readelf.c:4650 +#: src/readelf.c:4675 #, c-format msgid "" "\n" @@ -4493,37 +4498,37 @@ msgid "" " [ Code]\n" msgstr "" -#: src/readelf.c:4658 +#: src/readelf.c:4683 #, c-format msgid "" "\n" "Abbreviation section at offset %:\n" msgstr "" -#: src/readelf.c:4671 +#: src/readelf.c:4696 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr "" -#: src/readelf.c:4687 +#: src/readelf.c:4712 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr "" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745 msgid "yes" msgstr "ja" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745 msgid "no" msgstr "nein" -#: src/readelf.c:4724 src/readelf.c:4797 +#: src/readelf.c:4749 src/readelf.c:4822 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "" -#: src/readelf.c:4739 +#: src/readelf.c:4764 #, c-format msgid "" "\n" @@ -4534,195 +4539,195 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:4770 +#: src/readelf.c:4795 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:4772 +#: src/readelf.c:4797 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" msgstr "" -#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487 -#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728 +#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515 +#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819 #, c-format msgid "" "\n" "DWARF section [%2zu] '%s' at offset %#:\n" msgstr "" -#: src/readelf.c:4815 src/readelf.c:6513 +#: src/readelf.c:4840 src/readelf.c:6541 #, c-format msgid "" "\n" "Table at offset %zu:\n" msgstr "" -#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524 +#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "" -#: src/readelf.c:4835 +#: src/readelf.c:4860 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " %s: %\n" -#: src/readelf.c:4847 +#: src/readelf.c:4872 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:4851 +#: src/readelf.c:4876 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:4862 +#: src/readelf.c:4887 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " %s: %\n" -#: src/readelf.c:4868 +#: src/readelf.c:4893 #, c-format msgid " Address size: %6\n" msgstr "" -#: src/readelf.c:4872 +#: src/readelf.c:4897 #, fuzzy, c-format msgid "unsupported address size" msgstr "Kein Adress-Wert" -#: src/readelf.c:4877 +#: src/readelf.c:4902 #, c-format msgid "" " Segment size: %6\n" "\n" msgstr "" -#: src/readelf.c:4881 +#: src/readelf.c:4906 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:4921 +#: src/readelf.c:4946 #, fuzzy, c-format msgid " %s..%s (%)\n" msgstr " %s: %\n" -#: src/readelf.c:4924 +#: src/readelf.c:4949 #, fuzzy, c-format msgid " %s..%s\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:4933 +#: src/readelf.c:4958 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:4951 +#: src/readelf.c:4976 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "" -#: src/readelf.c:4981 src/readelf.c:7046 +#: src/readelf.c:5006 src/readelf.c:7074 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:5003 src/readelf.c:7068 +#: src/readelf.c:5028 src/readelf.c:7096 #, c-format msgid " [%6tx] base address %s\n" msgstr "" -#: src/readelf.c:5010 src/readelf.c:7075 +#: src/readelf.c:5035 src/readelf.c:7103 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] %s..%s\n" #. We have an address range entry. #. First address range entry in a list. -#: src/readelf.c:5021 +#: src/readelf.c:5046 #, c-format msgid " [%6tx] %s..%s\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:5023 +#: src/readelf.c:5048 #, c-format msgid " %s..%s\n" msgstr " %s..%s\n" -#: src/readelf.c:5259 +#: src/readelf.c:5284 msgid " \n" msgstr "" -#: src/readelf.c:5512 +#: src/readelf.c:5537 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "ELF Kopf konnte nicht ausgelesen werden" -#: src/readelf.c:5529 +#: src/readelf.c:5554 #, c-format msgid "" "\n" "Call frame information section [%2zu] '%s' at offset %#:\n" msgstr "" -#: src/readelf.c:5579 +#: src/readelf.c:5604 #, c-format msgid "" "\n" " [%6tx] Zero terminator\n" msgstr "" -#: src/readelf.c:5672 src/readelf.c:5827 +#: src/readelf.c:5697 src/readelf.c:5852 #, fuzzy, c-format msgid "invalid augmentation length" msgstr "ungültige Abschnittsausrichtung" -#: src/readelf.c:5687 +#: src/readelf.c:5712 msgid "FDE address encoding: " msgstr "" -#: src/readelf.c:5693 +#: src/readelf.c:5718 msgid "LSDA pointer encoding: " msgstr "" -#: src/readelf.c:5804 +#: src/readelf.c:5829 #, c-format msgid " (offset: %#)" msgstr "" -#: src/readelf.c:5811 +#: src/readelf.c:5836 #, c-format msgid " (end offset: %#)" msgstr "" -#: src/readelf.c:5848 +#: src/readelf.c:5873 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr "" -#: src/readelf.c:5903 +#: src/readelf.c:5928 #, c-format msgid "cannot get attribute code: %s" msgstr "" -#: src/readelf.c:5912 +#: src/readelf.c:5937 #, c-format msgid "cannot get attribute form: %s" msgstr "" -#: src/readelf.c:5927 +#: src/readelf.c:5952 #, c-format msgid "cannot get attribute value: %s" msgstr "" -#: src/readelf.c:6226 +#: src/readelf.c:6254 #, c-format msgid "" "\n" @@ -4730,7 +4735,7 @@ msgid "" " [Offset]\n" msgstr "" -#: src/readelf.c:6258 +#: src/readelf.c:6286 #, c-format msgid "" " Type unit at offset %:\n" @@ -4739,7 +4744,7 @@ msgid "" " Type signature: %#, Type offset: %#\n" msgstr "" -#: src/readelf.c:6267 +#: src/readelf.c:6295 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -4747,32 +4752,32 @@ msgid "" "%, Offset size: %\n" msgstr "" -#: src/readelf.c:6292 +#: src/readelf.c:6320 #, c-format msgid "cannot get DIE at offset % in section '%s': %s" msgstr "" -#: src/readelf.c:6306 +#: src/readelf.c:6334 #, c-format msgid "cannot get DIE offset: %s" msgstr "" -#: src/readelf.c:6315 +#: src/readelf.c:6343 #, c-format msgid "cannot get tag of DIE at offset % in section '%s': %s" msgstr "" -#: src/readelf.c:6347 +#: src/readelf.c:6375 #, c-format msgid "cannot get next DIE: %s\n" msgstr "" -#: src/readelf.c:6355 +#: src/readelf.c:6383 #, c-format msgid "cannot get next DIE: %s" msgstr "" -#: src/readelf.c:6391 +#: src/readelf.c:6419 #, c-format msgid "" "\n" @@ -4780,13 +4785,13 @@ msgid "" "\n" msgstr "" -#: src/readelf.c:6500 +#: src/readelf.c:6528 #, c-format msgid "cannot get line data section data: %s" msgstr "" #. Print what we got so far. -#: src/readelf.c:6570 +#: src/readelf.c:6598 #, c-format msgid "" "\n" @@ -4803,148 +4808,148 @@ msgid "" "Opcodes:\n" msgstr "" -#: src/readelf.c:6591 +#: src/readelf.c:6619 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "" -#: src/readelf.c:6606 +#: src/readelf.c:6634 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:6614 +#: src/readelf.c:6642 msgid "" "\n" "Directory table:" msgstr "" -#: src/readelf.c:6630 +#: src/readelf.c:6658 msgid "" "\n" "File name table:\n" " Entry Dir Time Size Name" msgstr "" -#: src/readelf.c:6665 +#: src/readelf.c:6693 msgid "" "\n" "Line number statements:" msgstr "" -#: src/readelf.c:6716 +#: src/readelf.c:6744 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "" -#: src/readelf.c:6752 +#: src/readelf.c:6780 #, c-format msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n" msgstr "" -#: src/readelf.c:6757 +#: src/readelf.c:6785 #, c-format msgid " special opcode %u: address+%u = %s, line%+d = %zu\n" msgstr "" -#: src/readelf.c:6777 +#: src/readelf.c:6805 #, c-format msgid " extended opcode %u: " msgstr "" -#: src/readelf.c:6782 +#: src/readelf.c:6810 msgid " end of sequence" msgstr "" -#: src/readelf.c:6801 +#: src/readelf.c:6829 #, c-format msgid " set address to %s\n" msgstr "" -#: src/readelf.c:6828 +#: src/readelf.c:6856 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" -#: src/readelf.c:6841 +#: src/readelf.c:6869 #, c-format msgid " set discriminator to %u\n" msgstr "" #. Unknown, ignore it. -#: src/readelf.c:6846 +#: src/readelf.c:6874 #, fuzzy msgid " unknown opcode" msgstr "unbekannter Typ" #. Takes no argument. -#: src/readelf.c:6858 +#: src/readelf.c:6886 msgid " copy" msgstr "" -#: src/readelf.c:6869 +#: src/readelf.c:6897 #, c-format msgid " advance address by %u to %s, op_index to %u\n" msgstr "" -#: src/readelf.c:6873 +#: src/readelf.c:6901 #, c-format msgid " advance address by %u to %s\n" msgstr "" -#: src/readelf.c:6884 +#: src/readelf.c:6912 #, c-format msgid " advance line by constant %d to %\n" msgstr "" -#: src/readelf.c:6892 +#: src/readelf.c:6920 #, c-format msgid " set file to %\n" msgstr "" -#: src/readelf.c:6902 +#: src/readelf.c:6930 #, c-format msgid " set column to %\n" msgstr "" -#: src/readelf.c:6909 +#: src/readelf.c:6937 #, c-format msgid " set '%s' to %\n" msgstr "" #. Takes no argument. -#: src/readelf.c:6915 +#: src/readelf.c:6943 msgid " set basic block flag" msgstr "" -#: src/readelf.c:6928 +#: src/readelf.c:6956 #, c-format msgid " advance address by constant %u to %s, op_index to %u\n" msgstr "" -#: src/readelf.c:6932 +#: src/readelf.c:6960 #, c-format msgid " advance address by constant %u to %s\n" msgstr "" -#: src/readelf.c:6950 +#: src/readelf.c:6978 #, c-format msgid " advance address by fixed value %u to %s\n" msgstr "" #. Takes no argument. -#: src/readelf.c:6959 +#: src/readelf.c:6987 msgid " set prologue end flag" msgstr "" #. Takes no argument. -#: src/readelf.c:6964 +#: src/readelf.c:6992 msgid " set epilogue begin flag" msgstr "" -#: src/readelf.c:6973 +#: src/readelf.c:7001 #, c-format msgid " set isa to %u\n" msgstr "" @@ -4952,109 +4957,109 @@ msgstr "" #. This is a new opcode the generator but not we know about. #. Read the parameters associated with it but then discard #. everything. Read all the parameters for this opcode. -#: src/readelf.c:6982 +#: src/readelf.c:7010 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:7014 +#: src/readelf.c:7042 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "" #. First entry in a list. -#: src/readelf.c:7089 +#: src/readelf.c:7117 #, c-format msgid " [%6tx] %s..%s" msgstr " [%6tx] %s..%s" -#: src/readelf.c:7091 +#: src/readelf.c:7119 #, c-format msgid " %s..%s" msgstr " %s..%s" -#: src/readelf.c:7098 src/readelf.c:7986 +#: src/readelf.c:7126 src/readelf.c:8077 msgid " \n" msgstr "" -#: src/readelf.c:7150 src/readelf.c:7312 +#: src/readelf.c:7178 src/readelf.c:7340 #, c-format msgid "cannot get macro information section data: %s" msgstr "" -#: src/readelf.c:7230 +#: src/readelf.c:7258 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "" -#: src/readelf.c:7253 +#: src/readelf.c:7281 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "" -#: src/readelf.c:7353 +#: src/readelf.c:7381 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " %s: %\n" -#: src/readelf.c:7365 +#: src/readelf.c:7393 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:7371 src/readelf.c:8105 +#: src/readelf.c:7399 src/readelf.c:8196 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:7378 +#: src/readelf.c:7406 #, fuzzy, c-format msgid " Flag: 0x%\n" msgstr " %s: %\n" -#: src/readelf.c:7381 +#: src/readelf.c:7409 #, c-format msgid " Offset length: %\n" msgstr "" -#: src/readelf.c:7389 +#: src/readelf.c:7417 #, c-format msgid " .debug_line offset: 0x%\n" msgstr "" -#: src/readelf.c:7402 +#: src/readelf.c:7430 #, c-format msgid " extension opcode table, % items:\n" msgstr "" -#: src/readelf.c:7409 +#: src/readelf.c:7437 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:7421 +#: src/readelf.c:7449 #, c-format msgid " % arguments:" msgstr "" -#: src/readelf.c:7449 +#: src/readelf.c:7477 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:7686 +#: src/readelf.c:7777 #, c-format msgid "vendor opcode not verified?" msgstr "" -#: src/readelf.c:7714 +#: src/readelf.c:7805 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" -#: src/readelf.c:7755 +#: src/readelf.c:7846 #, c-format msgid "" "\n" @@ -5062,47 +5067,47 @@ msgid "" " %*s String\n" msgstr "" -#: src/readelf.c:7769 +#: src/readelf.c:7860 #, c-format msgid " *** error while reading strings: %s\n" msgstr "" -#: src/readelf.c:7789 +#: src/readelf.c:7880 #, c-format msgid "" "\n" "Call frame search table section [%2zu] '.eh_frame_hdr':\n" msgstr "" -#: src/readelf.c:7891 +#: src/readelf.c:7982 #, c-format msgid "" "\n" "Exception handling table section [%2zu] '.gcc_except_table':\n" msgstr "" -#: src/readelf.c:7914 +#: src/readelf.c:8005 #, c-format msgid " LPStart encoding: %#x " msgstr "" -#: src/readelf.c:7926 +#: src/readelf.c:8017 #, c-format msgid " TType encoding: %#x " msgstr "" -#: src/readelf.c:7941 +#: src/readelf.c:8032 #, c-format msgid " Call site encoding: %#x " msgstr "" -#: src/readelf.c:7954 +#: src/readelf.c:8045 msgid "" "\n" " Call site table:" msgstr "" -#: src/readelf.c:7968 +#: src/readelf.c:8059 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5111,141 +5116,141 @@ msgid "" " Action: %u\n" msgstr "" -#: src/readelf.c:8041 +#: src/readelf.c:8132 #, c-format msgid "invalid TType encoding" msgstr "" -#: src/readelf.c:8067 +#: src/readelf.c:8158 #, c-format msgid "" "\n" "GDB section [%2zu] '%s' at offset %# contains % bytes :\n" msgstr "" -#: src/readelf.c:8096 +#: src/readelf.c:8187 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:8114 +#: src/readelf.c:8205 #, c-format msgid " CU offset: %#\n" msgstr "" -#: src/readelf.c:8121 +#: src/readelf.c:8212 #, c-format msgid " TU offset: %#\n" msgstr "" -#: src/readelf.c:8128 +#: src/readelf.c:8219 #, c-format msgid " address offset: %#\n" msgstr "" -#: src/readelf.c:8135 +#: src/readelf.c:8226 #, c-format msgid " symbol offset: %#\n" msgstr "" -#: src/readelf.c:8142 +#: src/readelf.c:8233 #, c-format msgid " constant offset: %#\n" msgstr "" -#: src/readelf.c:8156 +#: src/readelf.c:8247 #, c-format msgid "" "\n" " CU list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:8181 +#: src/readelf.c:8272 #, c-format msgid "" "\n" " TU list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:8210 +#: src/readelf.c:8301 #, c-format msgid "" "\n" " Address list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:8243 +#: src/readelf.c:8334 #, c-format msgid "" "\n" " Symbol table at offset %# contains %zu slots:\n" msgstr "" -#: src/readelf.c:8330 +#: src/readelf.c:8421 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "" -#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277 +#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368 #, c-format msgid "cannot convert core note data: %s" msgstr "" -#: src/readelf.c:8849 +#: src/readelf.c:8940 #, c-format msgid "" "\n" "%*s... ..." msgstr "" -#: src/readelf.c:9356 +#: src/readelf.c:9447 msgid " Owner Data size Type\n" msgstr "" -#: src/readelf.c:9374 +#: src/readelf.c:9465 #, c-format msgid " %-13.*s %9 %s\n" msgstr "" -#: src/readelf.c:9424 +#: src/readelf.c:9515 #, c-format msgid "cannot get content of note section: %s" msgstr "" -#: src/readelf.c:9451 +#: src/readelf.c:9542 #, c-format msgid "" "\n" "Note section [%2zu] '%s' of % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:9474 +#: src/readelf.c:9565 #, c-format msgid "" "\n" "Note segment of % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:9520 +#: src/readelf.c:9611 #, fuzzy, c-format msgid "" "\n" "Section [%zu] '%s' has no data to dump.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:9547 src/readelf.c:9598 +#: src/readelf.c:9638 src/readelf.c:9689 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:9552 +#: src/readelf.c:9643 #, c-format msgid "" "\n" "Hex dump of section [%zu] '%s', % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:9557 +#: src/readelf.c:9648 #, c-format msgid "" "\n" @@ -5253,21 +5258,21 @@ msgid "" "%#0:\n" msgstr "" -#: src/readelf.c:9571 +#: src/readelf.c:9662 #, fuzzy, c-format msgid "" "\n" "Section [%zu] '%s' has no strings to dump.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:9603 +#: src/readelf.c:9694 #, c-format msgid "" "\n" "String section [%zu] '%s' contains % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:9608 +#: src/readelf.c:9699 #, c-format msgid "" "\n" @@ -5275,45 +5280,45 @@ msgid "" "offset %#0:\n" msgstr "" -#: src/readelf.c:9657 +#: src/readelf.c:9748 #, c-format msgid "" "\n" "section [%lu] does not exist" msgstr "" -#: src/readelf.c:9686 +#: src/readelf.c:9777 #, c-format msgid "" "\n" "section '%s' does not exist" msgstr "" -#: src/readelf.c:9743 +#: src/readelf.c:9834 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "" -#: src/readelf.c:9746 +#: src/readelf.c:9837 #, c-format msgid "" "\n" "Archive '%s' has no symbol index\n" msgstr "" -#: src/readelf.c:9750 +#: src/readelf.c:9841 #, c-format msgid "" "\n" "Index of archive '%s' has %zu entries:\n" msgstr "" -#: src/readelf.c:9768 +#: src/readelf.c:9859 #, fuzzy, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:9773 +#: src/readelf.c:9864 #, c-format msgid "Archive member '%s' contains:\n" msgstr "" @@ -5566,82 +5571,94 @@ msgstr "mprotect fehlgeschlagen" msgid "Skipping section %zd '%s' data outside file" msgstr "" -#: src/strip.c:69 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "" -#: src/strip.c:70 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "" -#: src/strip.c:71 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "" -#: src/strip.c:75 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "" -#: src/strip.c:79 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "" -#: src/strip.c:81 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "" -#: src/strip.c:83 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " "operation is not reversable, needs -f)" msgstr "" -#: src/strip.c:85 +#: src/strip.c:87 msgid "Remove .comment section" msgstr "" +#: src/strip.c:88 +msgid "" +"Remove the named section. SECTION is an extended wildcard pattern. May be " +"given more than once. Only non-allocated sections can be removed." +msgstr "" + +#: src/strip.c:89 +msgid "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." +msgstr "" + #. Short description of program. -#: src/strip.c:93 +#: src/strip.c:96 msgid "Discard symbols from object files." msgstr "" -#: src/strip.c:187 +#: src/strip.c:242 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "" -#: src/strip.c:201 +#: src/strip.c:256 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "" -#: src/strip.c:223 +#: src/strip.c:279 #, c-format msgid "-f option specified twice" msgstr "" -#: src/strip.c:232 +#: src/strip.c:288 #, c-format msgid "-F option specified twice" msgstr "" -#: src/strip.c:265 +#: src/strip.c:347 #, c-format -msgid "-R option supports only .comment section" +msgid "cannot both keep and remove .comment section" msgstr "" -#: src/strip.c:307 src/strip.c:331 +#: src/strip.c:372 src/strip.c:396 #, c-format msgid "cannot stat input file '%s'" msgstr "" -#: src/strip.c:321 +#: src/strip.c:386 #, c-format msgid "while opening '%s'" msgstr "" -#: src/strip.c:359 +#: src/strip.c:424 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "" @@ -5652,107 +5669,117 @@ msgstr "" #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:371 +#: src/strip.c:436 #, fuzzy, c-format msgid "%s: no support for stripping archive" msgstr "%s: Kein Eintrag %s in dem Archiv!\n" -#: src/strip.c:470 +#: src/strip.c:535 #, c-format msgid "cannot open EBL backend" msgstr "" -#: src/strip.c:515 +#: src/strip.c:580 #, fuzzy, c-format msgid "cannot get number of phdrs" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/strip.c:531 src/strip.c:555 +#: src/strip.c:596 src/strip.c:620 #, c-format msgid "cannot create new file '%s': %s" msgstr "" -#: src/strip.c:621 +#: src/strip.c:686 #, c-format msgid "illformed file '%s'" msgstr "" -#: src/strip.c:955 src/strip.c:1054 +#: src/strip.c:696 +#, fuzzy, c-format +msgid "Cannot remove allocated section '%s'" +msgstr "konnte Abschnittsdaten nicht holen: %s" + +#: src/strip.c:705 +#, fuzzy, c-format +msgid "Cannot both keep and remove section '%s'" +msgstr "Konnte Archiv '%s' nicht öffnen" + +#: src/strip.c:1061 src/strip.c:1160 #, c-format msgid "while generating output file: %s" msgstr "" -#: src/strip.c:1020 src/strip.c:2090 +#: src/strip.c:1126 src/strip.c:2208 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "" -#: src/strip.c:1037 +#: src/strip.c:1143 #, c-format msgid "while preparing output for '%s'" msgstr "" -#: src/strip.c:1095 src/strip.c:1158 +#: src/strip.c:1205 src/strip.c:1268 #, c-format msgid "while create section header section: %s" msgstr "" -#: src/strip.c:1104 +#: src/strip.c:1214 #, c-format msgid "cannot allocate section data: %s" msgstr "" -#: src/strip.c:1170 +#: src/strip.c:1280 #, c-format msgid "while create section header string table: %s" msgstr "" -#: src/strip.c:1177 +#: src/strip.c:1287 #, c-format msgid "no memory to create section header string table" msgstr "" -#: src/strip.c:1384 +#: src/strip.c:1497 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:1876 +#: src/strip.c:1994 #, fuzzy, c-format msgid "bad relocation" msgstr "Relocations anzeigen" -#: src/strip.c:2001 src/strip.c:2114 +#: src/strip.c:2119 src/strip.c:2232 #, c-format msgid "while writing '%s': %s" msgstr "" -#: src/strip.c:2012 +#: src/strip.c:2130 #, c-format msgid "while creating '%s'" msgstr "" -#: src/strip.c:2035 +#: src/strip.c:2153 #, c-format msgid "while computing checksum for debug information" msgstr "" -#: src/strip.c:2099 +#: src/strip.c:2217 #, c-format msgid "%s: error while reading the file: %s" msgstr "" -#: src/strip.c:2139 src/strip.c:2159 +#: src/strip.c:2257 src/strip.c:2277 #, fuzzy, c-format msgid "while writing '%s'" msgstr "beim Schliessen von '%s'" -#: src/strip.c:2196 src/strip.c:2203 +#: src/strip.c:2314 src/strip.c:2321 #, c-format msgid "error while finishing '%s': %s" msgstr "" -#: src/strip.c:2220 src/strip.c:2292 +#: src/strip.c:2338 src/strip.c:2414 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "" diff --git a/po/es.po b/po/es.po index 957196a6..5a68dfd1 100644 --- a/po/es.po +++ b/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils.master.es\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2017-05-05 09:44+0200\n" +"POT-Creation-Date: 2017-08-02 18:29+0200\n" "PO-Revision-Date: 2011-01-10 15:17-0300\n" "Last-Translator: Claudio Rodrigo Pereyra Diaz \n" @@ -58,7 +58,7 @@ msgstr "" "DETERMINADO.\n" #: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296 -#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432 +#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432 #, c-format msgid "memory exhausted" msgstr "memoria agotada" @@ -259,6 +259,11 @@ msgstr "operando inválido" msgid "not a CU (unit) DIE" msgstr "" +#: libdw/dwarf_error.c:98 +#, fuzzy +msgid "unknown language code" +msgstr "código operativo desconocido " + #: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374 msgid "Input selection options:" msgstr "Opciones de selección de entrada:" @@ -295,34 +300,34 @@ msgstr "Kernel con todos los módulos" msgid "Search path for separate debuginfo files" msgstr "Ruta de búsqueda para archivos debugingfo independientes" -#: libdwfl/argp-std.c:161 +#: libdwfl/argp-std.c:164 msgid "only one of -e, -p, -k, -K, or --core allowed" msgstr "Sólo uno de -e, -p, -k, -K, ó --core está permitido" -#: libdwfl/argp-std.c:234 +#: libdwfl/argp-std.c:237 msgid "cannot load kernel symbols" msgstr "No se pueden cargar símbolos de kernel" #. Non-fatal to have no modules since we do have the kernel. -#: libdwfl/argp-std.c:238 +#: libdwfl/argp-std.c:241 msgid "cannot find kernel modules" msgstr "no se pueden hallar módulos de kernel" -#: libdwfl/argp-std.c:255 +#: libdwfl/argp-std.c:258 msgid "cannot find kernel or modules" msgstr "imposible encontrar kernel o módulos" -#: libdwfl/argp-std.c:294 +#: libdwfl/argp-std.c:297 #, c-format msgid "cannot read ELF core file: %s" msgstr "No se puede leer archivo core ELF: %s" -#: libdwfl/argp-std.c:317 +#: libdwfl/argp-std.c:320 #, fuzzy msgid "Not enough memory" msgstr "memoria agotada" -#: libdwfl/argp-std.c:327 +#: libdwfl/argp-std.c:330 msgid "No modules recognized in core file" msgstr "No hay módulos reconocidos en el archivo core" @@ -487,7 +492,7 @@ msgstr "no es un archivo ELF válido" msgid "No backend" msgstr "No hay segundo plano (Backend)" -#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 #: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 @@ -584,7 +589,7 @@ msgstr "tamaño inválido del operando fuente" msgid "invalid size of destination operand" msgstr "tamaño inválido del operando destino" -#: libelf/elf_error.c:87 src/readelf.c:5114 +#: libelf/elf_error.c:87 src/readelf.c:5139 #, c-format msgid "invalid encoding" msgstr "codificación inválida" @@ -665,8 +670,8 @@ msgstr "no coinciden los datos/scn" msgid "invalid section header" msgstr "encabezamiento de sección inválida" -#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809 -#: src/readelf.c:7910 src/readelf.c:8091 +#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900 +#: src/readelf.c:8001 src/readelf.c:8182 #, c-format msgid "invalid data" msgstr "datos inválidos" @@ -1300,7 +1305,7 @@ msgid "Invalid value '%s' for --gaps parameter." msgstr "Valor inválido '%s' para parámetro --gaps" #: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142 -#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490 +#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555 #: src/unstrip.c:2023 src/unstrip.c:2052 #, c-format msgid "cannot open '%s'" @@ -1331,7 +1336,7 @@ msgstr "No se puede obtener contenido de sección %zu: %s" msgid "cannot get relocation: %s" msgstr "No se puede obtener reubicación: %s" -#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "opción -o especificada dos veces" @@ -1383,7 +1388,7 @@ msgstr "" msgid "Force compression of section even if it would become larger" msgstr "" -#: src/elfcompress.c:1282 src/strip.c:88 +#: src/elfcompress.c:1282 src/strip.c:91 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "Relaja algunas reglas para manejar ficheros ELF rotos" @@ -3447,7 +3452,7 @@ msgstr "" #. Strings for arguments in help texts. #: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81 -#: src/strings.c:88 src/strip.c:96 +#: src/strings.c:88 src/strip.c:99 msgid "[FILE...]" msgstr "[FICHERO...]" @@ -3542,7 +3547,7 @@ msgstr "" "Una reubicación modifica memoria en compensación %llu en un segmento " "protegido contra escritura\n" -#: src/nm.c:67 src/strip.c:68 +#: src/nm.c:67 src/strip.c:70 msgid "Output selection:" msgstr "Selección de salida:" @@ -3607,7 +3612,7 @@ msgstr "Marcar símbolos débiles" msgid "Print size of defined symbols" msgstr "Tamaño de impresión de símbolos definidos" -#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73 +#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "Opciones de salida:" @@ -3637,18 +3642,18 @@ msgstr "Listar símbolos de FICHEROS (a.out por defecto)." msgid "Output formatting" msgstr "Formato de salida:" -#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128 +#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131 #, fuzzy, c-format msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: ERROR INTERNO %d (%s-%s): %s" #: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309 -#: src/strip.c:2299 +#: src/strip.c:2421 #, c-format msgid "while closing '%s'" msgstr "error al cerrar '%s'" -#: src/nm.c:404 src/objdump.c:281 src/strip.c:378 +#: src/nm.c:404 src/objdump.c:281 src/strip.c:443 #, c-format msgid "%s: File format not recognized" msgstr "%s: No se reconoce el formato del fichero" @@ -3692,9 +3697,9 @@ msgstr "No se puede crear el árbol de búsqueda" #: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664 #: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314 #: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315 -#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439 -#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466 -#: src/strip.c:507 +#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530 +#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466 +#: src/strip.c:572 #, c-format msgid "cannot get section header string table index" msgstr "no se puede obtener índice de cadena de encabezamiento de sección" @@ -3981,7 +3986,7 @@ msgstr "Sección de depuración DWARF desconocida `%s'.\n" msgid "cannot generate Elf descriptor: %s" msgstr "no se puede crear descriptor ELF: %s" -#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576 +#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641 #, c-format msgid "cannot determine number of sections: %s" msgstr "no se pudieron determinar el número de secciones: %s" @@ -3991,7 +3996,7 @@ msgstr "no se pudieron determinar el número de secciones: %s" msgid "cannot get section: %s" msgstr "No se puede encontrar la sección: %s" -#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662 +#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753 #: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565 #: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109 #: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650 @@ -4005,8 +4010,8 @@ msgstr "No se puede obtener encabezamiento de sección: %s" msgid "cannot get section name" msgstr "no se puede obtener encabezamiento de sección\n" -#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899 -#: src/readelf.c:8076 +#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990 +#: src/readelf.c:8167 #, c-format msgid "cannot get %s content: %s" msgstr "No se puede obtener el contenido %s: %s" @@ -4372,8 +4377,8 @@ msgstr "" msgid "" msgstr "" -#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533 -#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591 +#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624 +#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682 msgid "Couldn't uncompress section" msgstr "" @@ -4383,7 +4388,7 @@ msgid "cannot get section [%zd] header: %s" msgstr "No se puede obtener encabezamiento de sección: %s" #: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654 -#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734 +#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr ".debug_line section inválida" @@ -4863,46 +4868,46 @@ msgstr "%s+%#" msgid "%s+%#0*" msgstr "%s+%#0*" -#: src/readelf.c:4056 +#: src/readelf.c:4081 msgid "empty block" msgstr "bloque vacío" -#: src/readelf.c:4059 +#: src/readelf.c:4084 #, c-format msgid "%zu byte block:" msgstr "bloque de byte %zu:" -#: src/readelf.c:4456 +#: src/readelf.c:4481 #, c-format msgid "%*s[%4] %s \n" msgstr "%*s[%4] %s \n" -#: src/readelf.c:4513 +#: src/readelf.c:4538 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# utilizado con direcciones de diferente tamaño" -#: src/readelf.c:4520 +#: src/readelf.c:4545 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# utilizado con offsetr de diferente tamaño" -#: src/readelf.c:4527 +#: src/readelf.c:4552 #, fuzzy, c-format msgid "%s %# used with different base addresses" msgstr "%s %# utilizado con direcciones de diferente tamaño" -#: src/readelf.c:4616 +#: src/readelf.c:4641 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:4624 +#: src/readelf.c:4649 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] ... % bytes ...\n" -#: src/readelf.c:4650 +#: src/readelf.c:4675 #, c-format msgid "" "\n" @@ -4913,7 +4918,7 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#:\n" " [ Código]\n" -#: src/readelf.c:4658 +#: src/readelf.c:4683 #, c-format msgid "" "\n" @@ -4922,30 +4927,30 @@ msgstr "" "\n" "Sección de abreviatura en compensación %:\n" -#: src/readelf.c:4671 +#: src/readelf.c:4696 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** error en lectura de abreviatura: %s\n" -#: src/readelf.c:4687 +#: src/readelf.c:4712 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] compensación: %, hijos: %s, etiqueta: %s\n" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745 msgid "yes" msgstr "sí" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745 msgid "no" msgstr "no" -#: src/readelf.c:4724 src/readelf.c:4797 +#: src/readelf.c:4749 src/readelf.c:4822 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "no se ha podido obtener contenido de .debug_aranges: %s" -#: src/readelf.c:4739 +#: src/readelf.c:4764 #, c-format msgid "" "\n" @@ -4960,12 +4965,12 @@ msgstr[1] "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entradas %zu:\n" -#: src/readelf.c:4770 +#: src/readelf.c:4795 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:4772 +#: src/readelf.c:4797 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -4973,8 +4978,8 @@ msgstr "" " Inicio [%*zu]: %0#*, longitud: %5, compensación CU DIE: " "%6\n" -#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487 -#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728 +#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515 +#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819 #, c-format msgid "" "\n" @@ -4983,7 +4988,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#:\n" -#: src/readelf.c:4815 src/readelf.c:6513 +#: src/readelf.c:4840 src/readelf.c:6541 #, fuzzy, c-format msgid "" "\n" @@ -4992,113 +4997,113 @@ msgstr "" "\n" "Tabla en compensación %Zu:\n" -#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524 +#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:4835 +#: src/readelf.c:4860 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " (compensación: %#)" -#: src/readelf.c:4847 +#: src/readelf.c:4872 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:4851 +#: src/readelf.c:4876 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:4862 +#: src/readelf.c:4887 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " (compensación: %#)" -#: src/readelf.c:4868 +#: src/readelf.c:4893 #, fuzzy, c-format msgid " Address size: %6\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:4872 +#: src/readelf.c:4897 #, fuzzy, c-format msgid "unsupported address size" msgstr "no hay valor de dirección" -#: src/readelf.c:4877 +#: src/readelf.c:4902 #, fuzzy, c-format msgid "" " Segment size: %6\n" "\n" msgstr " establecer archivo a %\n" -#: src/readelf.c:4881 +#: src/readelf.c:4906 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:4921 +#: src/readelf.c:4946 #, fuzzy, c-format msgid " %s..%s (%)\n" msgstr " %s: %\n" -#: src/readelf.c:4924 +#: src/readelf.c:4949 #, fuzzy, c-format msgid " %s..%s\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:4933 +#: src/readelf.c:4958 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:4951 +#: src/readelf.c:4976 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "no se ha podido obtener contenido de .debug_ranges: %s" -#: src/readelf.c:4981 src/readelf.c:7046 +#: src/readelf.c:5006 src/readelf.c:7074 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:5003 src/readelf.c:7068 +#: src/readelf.c:5028 src/readelf.c:7096 #, c-format msgid " [%6tx] base address %s\n" msgstr " [%6tx] (dirección base) %s\n" -#: src/readelf.c:5010 src/readelf.c:7075 +#: src/readelf.c:5035 src/readelf.c:7103 #, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] lista vacía\n" #. We have an address range entry. #. First address range entry in a list. -#: src/readelf.c:5021 +#: src/readelf.c:5046 #, c-format msgid " [%6tx] %s..%s\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:5023 +#: src/readelf.c:5048 #, c-format msgid " %s..%s\n" msgstr " %s..%s\n" -#: src/readelf.c:5259 +#: src/readelf.c:5284 #, fuzzy msgid " \n" msgstr " \n" -#: src/readelf.c:5512 +#: src/readelf.c:5537 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "no se puede leer encabezamiento ELF: %s" -#: src/readelf.c:5529 +#: src/readelf.c:5554 #, c-format msgid "" "\n" @@ -5108,7 +5113,7 @@ msgstr "" "Sección de información de marco de llamada [%2zu] '%s' en compensación " "%#:\n" -#: src/readelf.c:5579 +#: src/readelf.c:5604 #, c-format msgid "" "\n" @@ -5117,50 +5122,50 @@ msgstr "" "\n" " [%6tx] Terminator cero\n" -#: src/readelf.c:5672 src/readelf.c:5827 +#: src/readelf.c:5697 src/readelf.c:5852 #, c-format msgid "invalid augmentation length" msgstr "longitud de aumento inválida" -#: src/readelf.c:5687 +#: src/readelf.c:5712 msgid "FDE address encoding: " msgstr "Codificación de dirección FDE:" -#: src/readelf.c:5693 +#: src/readelf.c:5718 msgid "LSDA pointer encoding: " msgstr "Codificación de puntero LSDA:" -#: src/readelf.c:5804 +#: src/readelf.c:5829 #, c-format msgid " (offset: %#)" msgstr " (compensación: %#)" -#: src/readelf.c:5811 +#: src/readelf.c:5836 #, c-format msgid " (end offset: %#)" msgstr " (fin de compensación: %#)" -#: src/readelf.c:5848 +#: src/readelf.c:5873 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr "Puntero %-26sLSDA: %#\n" -#: src/readelf.c:5903 +#: src/readelf.c:5928 #, c-format msgid "cannot get attribute code: %s" msgstr "No se puede obtener código de atributo: %s" -#: src/readelf.c:5912 +#: src/readelf.c:5937 #, c-format msgid "cannot get attribute form: %s" msgstr "No se puede obtener forma de atributo: %s" -#: src/readelf.c:5927 +#: src/readelf.c:5952 #, c-format msgid "cannot get attribute value: %s" msgstr "No se puede obtener valor: %s" -#: src/readelf.c:6226 +#: src/readelf.c:6254 #, c-format msgid "" "\n" @@ -5171,7 +5176,7 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#:\n" " [Offset]\n" -#: src/readelf.c:6258 +#: src/readelf.c:6286 #, c-format msgid "" " Type unit at offset %:\n" @@ -5184,7 +5189,7 @@ msgstr "" "Tamaño de dirección: %, Tamaño de compensación: %\n" " Tipo de firma: %#, Tipo de compensación: %#\n" -#: src/readelf.c:6267 +#: src/readelf.c:6295 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5195,34 +5200,34 @@ msgstr "" " Versión: %, Compensación de sección de abreviatura: %, " "Tamaño de dirección: %, Tamaño de compensación: %\n" -#: src/readelf.c:6292 +#: src/readelf.c:6320 #, c-format msgid "cannot get DIE at offset % in section '%s': %s" msgstr "no se puede obtener DIE en compensación % en sección '%s': %s" -#: src/readelf.c:6306 +#: src/readelf.c:6334 #, c-format msgid "cannot get DIE offset: %s" msgstr "no se puede obtener DIE en compensación: %s" -#: src/readelf.c:6315 +#: src/readelf.c:6343 #, c-format msgid "cannot get tag of DIE at offset % in section '%s': %s" msgstr "" "no se ha podido obtener etiqueta de DIE en compensación% en sección " "'%s': %s" -#: src/readelf.c:6347 +#: src/readelf.c:6375 #, c-format msgid "cannot get next DIE: %s\n" msgstr "No se puede obtener próximo DIE: %s\n" -#: src/readelf.c:6355 +#: src/readelf.c:6383 #, c-format msgid "cannot get next DIE: %s" msgstr "No se puede obtener próximo DIE: %s" -#: src/readelf.c:6391 +#: src/readelf.c:6419 #, fuzzy, c-format msgid "" "\n" @@ -5232,13 +5237,13 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#:\n" -#: src/readelf.c:6500 +#: src/readelf.c:6528 #, c-format msgid "cannot get line data section data: %s" msgstr "No se puede obtener sección de datos de línea: %s" #. Print what we got so far. -#: src/readelf.c:6570 +#: src/readelf.c:6598 #, c-format msgid "" "\n" @@ -5267,19 +5272,19 @@ msgstr "" "\n" "Códigos operativos:\n" -#: src/readelf.c:6591 +#: src/readelf.c:6619 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "datos inválidos en compensación %tu en sección [%zu] '%s'" -#: src/readelf.c:6606 +#: src/readelf.c:6634 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] " [%*] argumento %hhu \n" msgstr[1] " [%*] argumento %hhu\n" -#: src/readelf.c:6614 +#: src/readelf.c:6642 msgid "" "\n" "Directory table:" @@ -5287,7 +5292,7 @@ msgstr "" "\n" "Tabla de Directorio:" -#: src/readelf.c:6630 +#: src/readelf.c:6658 msgid "" "\n" "File name table:\n" @@ -5297,7 +5302,7 @@ msgstr "" "Tabla de nombre de archivo:\n" " Directorio de entrada Tiempo Tamaño Nombre" -#: src/readelf.c:6665 +#: src/readelf.c:6693 msgid "" "\n" "Line number statements:" @@ -5305,121 +5310,121 @@ msgstr "" "\n" " Declaraciones de número de Línea:" -#: src/readelf.c:6716 +#: src/readelf.c:6744 #, fuzzy, c-format msgid "invalid maximum operations per instruction is zero" msgstr "longitud mínima inválida de tamaño de cadena coincidente" -#: src/readelf.c:6752 +#: src/readelf.c:6780 #, c-format msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n" msgstr "" " opcode especial %u: dirección+%u = %s, op_index = %u, línea%+d = %zu\n" -#: src/readelf.c:6757 +#: src/readelf.c:6785 #, c-format msgid " special opcode %u: address+%u = %s, line%+d = %zu\n" msgstr " opcode especial %u: dirección+%u = %s, línea%+d = %zu\n" -#: src/readelf.c:6777 +#: src/readelf.c:6805 #, c-format msgid " extended opcode %u: " msgstr " Código operativo extendido %u: " -#: src/readelf.c:6782 +#: src/readelf.c:6810 #, fuzzy msgid " end of sequence" msgstr "Fin de secuencia" -#: src/readelf.c:6801 +#: src/readelf.c:6829 #, fuzzy, c-format msgid " set address to %s\n" msgstr "Establecer dirección a %s\n" -#: src/readelf.c:6828 +#: src/readelf.c:6856 #, fuzzy, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" "definir nuevo archivo: dir=%u, mtime=%, longitud=%, nombre=" "%s\n" -#: src/readelf.c:6841 +#: src/readelf.c:6869 #, c-format msgid " set discriminator to %u\n" msgstr " establecer discriminador a %u\n" #. Unknown, ignore it. -#: src/readelf.c:6846 +#: src/readelf.c:6874 #, fuzzy msgid " unknown opcode" msgstr "código operativo desconocido " #. Takes no argument. -#: src/readelf.c:6858 +#: src/readelf.c:6886 msgid " copy" msgstr "Copiar" -#: src/readelf.c:6869 +#: src/readelf.c:6897 #, fuzzy, c-format msgid " advance address by %u to %s, op_index to %u\n" msgstr "dirección avanzada por %u a %s, op_index a %u\n" -#: src/readelf.c:6873 +#: src/readelf.c:6901 #, fuzzy, c-format msgid " advance address by %u to %s\n" msgstr "Dirección de avance por %u a %s\n" -#: src/readelf.c:6884 +#: src/readelf.c:6912 #, c-format msgid " advance line by constant %d to %\n" msgstr " línea de avance por la constante %d a %\n" -#: src/readelf.c:6892 +#: src/readelf.c:6920 #, c-format msgid " set file to %\n" msgstr " establecer archivo a %\n" -#: src/readelf.c:6902 +#: src/readelf.c:6930 #, c-format msgid " set column to %\n" msgstr " Establecer columna a %\n" -#: src/readelf.c:6909 +#: src/readelf.c:6937 #, c-format msgid " set '%s' to %\n" msgstr "Establecer '%s' a %\n" #. Takes no argument. -#: src/readelf.c:6915 +#: src/readelf.c:6943 msgid " set basic block flag" msgstr "Establecer bandera de bloque básico" -#: src/readelf.c:6928 +#: src/readelf.c:6956 #, fuzzy, c-format msgid " advance address by constant %u to %s, op_index to %u\n" msgstr "dirección avanzada por constante %u a %s, op_index a %u\n" -#: src/readelf.c:6932 +#: src/readelf.c:6960 #, fuzzy, c-format msgid " advance address by constant %u to %s\n" msgstr "Dirección de avance por constante %u a %s\n" -#: src/readelf.c:6950 +#: src/readelf.c:6978 #, fuzzy, c-format msgid " advance address by fixed value %u to %s\n" msgstr "dirección de avance por valor corregido %u a %s\n" #. Takes no argument. -#: src/readelf.c:6959 +#: src/readelf.c:6987 msgid " set prologue end flag" msgstr " Establecer bandera prologue_end" #. Takes no argument. -#: src/readelf.c:6964 +#: src/readelf.c:6992 msgid " set epilogue begin flag" msgstr " Establecer bandera epilogue_begin" -#: src/readelf.c:6973 +#: src/readelf.c:7001 #, c-format msgid " set isa to %u\n" msgstr " establecer isa para %u\n" @@ -5427,111 +5432,111 @@ msgstr " establecer isa para %u\n" #. This is a new opcode the generator but not we know about. #. Read the parameters associated with it but then discard #. everything. Read all the parameters for this opcode. -#: src/readelf.c:6982 +#: src/readelf.c:7010 #, c-format msgid " unknown opcode with % 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:7014 +#: src/readelf.c:7042 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "no es posible obtener contenido de .debug_loc: %s" #. First entry in a list. -#: src/readelf.c:7089 +#: src/readelf.c:7117 #, c-format msgid " [%6tx] %s..%s" msgstr " [%6tx] %s..%s" -#: src/readelf.c:7091 +#: src/readelf.c:7119 #, c-format msgid " %s..%s" msgstr " %s..%s" -#: src/readelf.c:7098 src/readelf.c:7986 +#: src/readelf.c:7126 src/readelf.c:8077 msgid " \n" msgstr " \n" -#: src/readelf.c:7150 src/readelf.c:7312 +#: src/readelf.c:7178 src/readelf.c:7340 #, c-format msgid "cannot get macro information section data: %s" msgstr "no es posible obtener datos de la sección de macro información: %s" -#: src/readelf.c:7230 +#: src/readelf.c:7258 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** cadena no finalizada al final de la sección" -#: src/readelf.c:7253 +#: src/readelf.c:7281 #, fuzzy, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** cadena no finalizada al final de la sección" -#: src/readelf.c:7353 +#: src/readelf.c:7381 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:7365 +#: src/readelf.c:7393 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:7371 src/readelf.c:8105 +#: src/readelf.c:7399 src/readelf.c:8196 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:7378 +#: src/readelf.c:7406 #, fuzzy, c-format msgid " Flag: 0x%\n" msgstr " Dirección de punto de entrada: %#\n" -#: src/readelf.c:7381 +#: src/readelf.c:7409 #, fuzzy, c-format msgid " Offset length: %\n" msgstr " (compensación: %#)" -#: src/readelf.c:7389 +#: src/readelf.c:7417 #, fuzzy, c-format msgid " .debug_line offset: 0x%\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:7402 +#: src/readelf.c:7430 #, fuzzy, c-format msgid " extension opcode table, % items:\n" msgstr " opcódigo con parámetro % desconocido:" -#: src/readelf.c:7409 +#: src/readelf.c:7437 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:7421 +#: src/readelf.c:7449 #, fuzzy, c-format msgid " % arguments:" msgstr " [%*] argumento %hhu \n" -#: src/readelf.c:7449 +#: src/readelf.c:7477 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:7686 +#: src/readelf.c:7777 #, c-format msgid "vendor opcode not verified?" msgstr "" -#: src/readelf.c:7714 +#: src/readelf.c:7805 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" " Compensación [%5d] DIE: %6, Compensación CU DIE: %6, " "nombre: %s\n" -#: src/readelf.c:7755 +#: src/readelf.c:7846 #, c-format msgid "" "\n" @@ -5542,12 +5547,12 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#:\n" " %*s String\n" -#: src/readelf.c:7769 +#: src/readelf.c:7860 #, c-format msgid " *** error while reading strings: %s\n" msgstr " *** error en lectura de cadenas: %s\n" -#: src/readelf.c:7789 +#: src/readelf.c:7880 #, c-format msgid "" "\n" @@ -5556,7 +5561,7 @@ msgstr "" "\n" "Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:7891 +#: src/readelf.c:7982 #, c-format msgid "" "\n" @@ -5565,22 +5570,22 @@ msgstr "" "\n" "Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:7914 +#: src/readelf.c:8005 #, c-format msgid " LPStart encoding: %#x " msgstr "Codificación LPStart: %#x " -#: src/readelf.c:7926 +#: src/readelf.c:8017 #, c-format msgid " TType encoding: %#x " msgstr "Codificación TType: %#x " -#: src/readelf.c:7941 +#: src/readelf.c:8032 #, c-format msgid " Call site encoding: %#x " msgstr "Codificación de sitio de llamada: %#x " -#: src/readelf.c:7954 +#: src/readelf.c:8045 msgid "" "\n" " Call site table:" @@ -5588,7 +5593,7 @@ msgstr "" "\n" " Tabla de sitio de llamada:" -#: src/readelf.c:7968 +#: src/readelf.c:8059 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5601,12 +5606,12 @@ msgstr "" " Landing pad: %#\n" " Action: %u\n" -#: src/readelf.c:8041 +#: src/readelf.c:8132 #, c-format msgid "invalid TType encoding" msgstr "Codificación TType inválida" -#: src/readelf.c:8067 +#: src/readelf.c:8158 #, fuzzy, c-format msgid "" "\n" @@ -5615,37 +5620,37 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:8096 +#: src/readelf.c:8187 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:8114 +#: src/readelf.c:8205 #, fuzzy, c-format msgid " CU offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:8121 +#: src/readelf.c:8212 #, fuzzy, c-format msgid " TU offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:8128 +#: src/readelf.c:8219 #, fuzzy, c-format msgid " address offset: %#\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:8135 +#: src/readelf.c:8226 #, fuzzy, c-format msgid " symbol offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:8142 +#: src/readelf.c:8233 #, fuzzy, c-format msgid " constant offset: %#\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:8156 +#: src/readelf.c:8247 #, fuzzy, c-format msgid "" "\n" @@ -5654,7 +5659,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:8181 +#: src/readelf.c:8272 #, fuzzy, c-format msgid "" "\n" @@ -5663,7 +5668,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:8210 +#: src/readelf.c:8301 #, fuzzy, c-format msgid "" "\n" @@ -5672,7 +5677,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:8243 +#: src/readelf.c:8334 #, fuzzy, c-format msgid "" "\n" @@ -5681,17 +5686,17 @@ msgstr "" "\n" "Tabla de símbolos inválida en compensación %#0\n" -#: src/readelf.c:8330 +#: src/readelf.c:8421 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "no se puede depurar descriptor de contexto: %s" -#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277 +#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368 #, c-format msgid "cannot convert core note data: %s" msgstr "no es posible convertir datos de la nota principal: %s" -#: src/readelf.c:8849 +#: src/readelf.c:8940 #, c-format msgid "" "\n" @@ -5700,21 +5705,21 @@ msgstr "" "\n" "%*s... ..." -#: src/readelf.c:9356 +#: src/readelf.c:9447 msgid " Owner Data size Type\n" msgstr " Owner Data size Type\n" -#: src/readelf.c:9374 +#: src/readelf.c:9465 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:9424 +#: src/readelf.c:9515 #, c-format msgid "cannot get content of note section: %s" msgstr "no se puede obtener el contenido de sección de nota: %s" -#: src/readelf.c:9451 +#: src/readelf.c:9542 #, c-format msgid "" "\n" @@ -5723,7 +5728,7 @@ msgstr "" "\n" "Sección de nota [%2zu] '%s' de % bytes en compensación %#0:\n" -#: src/readelf.c:9474 +#: src/readelf.c:9565 #, c-format msgid "" "\n" @@ -5732,7 +5737,7 @@ msgstr "" "\n" "Segmento de nota de % bytes en compensación %#0:\n" -#: src/readelf.c:9520 +#: src/readelf.c:9611 #, fuzzy, c-format msgid "" "\n" @@ -5741,12 +5746,12 @@ msgstr "" "\n" "Sección [%Zu] '%s' no tiene datos para volcar.\n" -#: src/readelf.c:9547 src/readelf.c:9598 +#: src/readelf.c:9638 src/readelf.c:9689 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "no se pueden obtener datos para sección [%Zu] '%s': %s" -#: src/readelf.c:9552 +#: src/readelf.c:9643 #, fuzzy, c-format msgid "" "\n" @@ -5756,7 +5761,7 @@ msgstr "" "Volcado Hex de sección [%Zu] '%s', % bytes en compensación " "%#0:\n" -#: src/readelf.c:9557 +#: src/readelf.c:9648 #, fuzzy, c-format msgid "" "\n" @@ -5767,7 +5772,7 @@ msgstr "" "Volcado Hex de sección [%Zu] '%s', % bytes en compensación " "%#0:\n" -#: src/readelf.c:9571 +#: src/readelf.c:9662 #, fuzzy, c-format msgid "" "\n" @@ -5776,7 +5781,7 @@ msgstr "" "\n" "Sección [%Zu] '%s' no tiene datos para volcar.\n" -#: src/readelf.c:9603 +#: src/readelf.c:9694 #, fuzzy, c-format msgid "" "\n" @@ -5786,7 +5791,7 @@ msgstr "" "Sección de cadena [%Zu] '%s' contiene % bytes en compensación " "%#0:\n" -#: src/readelf.c:9608 +#: src/readelf.c:9699 #, fuzzy, c-format msgid "" "\n" @@ -5797,7 +5802,7 @@ msgstr "" "Sección de cadena [%Zu] '%s' contiene % bytes en compensación " "%#0:\n" -#: src/readelf.c:9657 +#: src/readelf.c:9748 #, c-format msgid "" "\n" @@ -5806,7 +5811,7 @@ msgstr "" "\n" "sección [%lu] no existe" -#: src/readelf.c:9686 +#: src/readelf.c:9777 #, c-format msgid "" "\n" @@ -5815,12 +5820,12 @@ msgstr "" "\n" "sección '%s' no existe" -#: src/readelf.c:9743 +#: src/readelf.c:9834 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "no se puede obtener el índice de símbolo de archivo '%s': %s" -#: src/readelf.c:9746 +#: src/readelf.c:9837 #, c-format msgid "" "\n" @@ -5829,7 +5834,7 @@ msgstr "" "\n" "Archivo '%s' no tiene índice de símbolo\n" -#: src/readelf.c:9750 +#: src/readelf.c:9841 #, fuzzy, c-format msgid "" "\n" @@ -5838,12 +5843,12 @@ msgstr "" "\n" "Índice de archivo '%s' tiene %Zu entradas:\n" -#: src/readelf.c:9768 +#: src/readelf.c:9859 #, fuzzy, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "no es posible extraer miembro en compensación %Zu en '%s': %s" -#: src/readelf.c:9773 +#: src/readelf.c:9864 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Miembro de archivo contiene '%s':\n" @@ -6103,82 +6108,94 @@ msgstr "mprotect falló" msgid "Skipping section %zd '%s' data outside file" msgstr "" -#: src/strip.c:69 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "Colocar la salida obtenida en FICHERO" -#: src/strip.c:70 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "Extraer secciones eliminadas en FICHERO" -#: src/strip.c:71 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "Incorporar nombre FILE en lugar de argumento -f" -#: src/strip.c:75 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "Elimina todos los símbolos de depuración" -#: src/strip.c:79 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "Quitar sección de cabeceras (no recomendado)" -#: src/strip.c:81 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "Copiar marcas de tiempo modificadas/acceso a la salida" -#: src/strip.c:83 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " "operation is not reversable, needs -f)" msgstr "" -#: src/strip.c:85 +#: src/strip.c:87 msgid "Remove .comment section" msgstr "Quitar sección de comentario" +#: src/strip.c:88 +msgid "" +"Remove the named section. SECTION is an extended wildcard pattern. May be " +"given more than once. Only non-allocated sections can be removed." +msgstr "" + +#: src/strip.c:89 +msgid "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." +msgstr "" + #. Short description of program. -#: src/strip.c:93 +#: src/strip.c:96 msgid "Discard symbols from object files." msgstr "Descarta símbolos de archivos objeto." -#: src/strip.c:187 +#: src/strip.c:242 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "" -#: src/strip.c:201 +#: src/strip.c:256 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "Sólo se permite ingresar un archivo junto con '-o' y '-f'" -#: src/strip.c:223 +#: src/strip.c:279 #, c-format msgid "-f option specified twice" msgstr "opción -f especificada dos veces" -#: src/strip.c:232 +#: src/strip.c:288 #, c-format msgid "-F option specified twice" msgstr "opción -F especificada dos veces" -#: src/strip.c:265 -#, c-format -msgid "-R option supports only .comment section" -msgstr "la opción -R soporta únicamente. sección de comentario" +#: src/strip.c:347 +#, fuzzy, c-format +msgid "cannot both keep and remove .comment section" +msgstr "Quitar sección de comentario" -#: src/strip.c:307 src/strip.c:331 +#: src/strip.c:372 src/strip.c:396 #, c-format msgid "cannot stat input file '%s'" msgstr "no sepuede stat fichero de entrada '%s'" -#: src/strip.c:321 +#: src/strip.c:386 #, c-format msgid "while opening '%s'" msgstr "mientras se abría '%s'" -#: src/strip.c:359 +#: src/strip.c:424 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo" @@ -6189,107 +6206,117 @@ msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo" #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:371 +#: src/strip.c:436 #, fuzzy, c-format msgid "%s: no support for stripping archive" msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo" -#: src/strip.c:470 +#: src/strip.c:535 #, c-format msgid "cannot open EBL backend" msgstr "No se puede abrir el segundo plano EBL" -#: src/strip.c:515 +#: src/strip.c:580 #, fuzzy, c-format msgid "cannot get number of phdrs" msgstr "no se pudo determinar la cantidad de encabezados de programa: %s" -#: src/strip.c:531 src/strip.c:555 +#: src/strip.c:596 src/strip.c:620 #, c-format msgid "cannot create new file '%s': %s" msgstr "no se puede crear fichero nuevo '%s': %s" -#: src/strip.c:621 +#: src/strip.c:686 #, c-format msgid "illformed file '%s'" msgstr "Fichero illformed '%s'" -#: src/strip.c:955 src/strip.c:1054 +#: src/strip.c:696 +#, fuzzy, c-format +msgid "Cannot remove allocated section '%s'" +msgstr "No se puede asignar sección PLT: %s" + +#: src/strip.c:705 +#, fuzzy, c-format +msgid "Cannot both keep and remove section '%s'" +msgstr "No se puede añadir nueva sección: %s" + +#: src/strip.c:1061 src/strip.c:1160 #, c-format msgid "while generating output file: %s" msgstr "al generar fichero de salida: %s" -#: src/strip.c:1020 src/strip.c:2090 +#: src/strip.c:1126 src/strip.c:2208 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "%s: error al crear encabezamiento ELF: %s" -#: src/strip.c:1037 +#: src/strip.c:1143 #, c-format msgid "while preparing output for '%s'" msgstr "al preparar salida para '%s'" -#: src/strip.c:1095 src/strip.c:1158 +#: src/strip.c:1205 src/strip.c:1268 #, c-format msgid "while create section header section: %s" msgstr "al crear sección de encabezamiento de sección: %s" -#: src/strip.c:1104 +#: src/strip.c:1214 #, c-format msgid "cannot allocate section data: %s" msgstr "no se puede asignar espacio para los datos: %s" -#: src/strip.c:1170 +#: src/strip.c:1280 #, c-format msgid "while create section header string table: %s" msgstr "al crear tabla de cadenas de encabezamiento de sección: %s" -#: src/strip.c:1177 +#: src/strip.c:1287 #, fuzzy, c-format msgid "no memory to create section header string table" msgstr "al crear tabla de cadenas de encabezamiento de sección: %s" -#: src/strip.c:1384 +#: src/strip.c:1497 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:1876 +#: src/strip.c:1994 #, fuzzy, c-format msgid "bad relocation" msgstr "Mostrar reubicaciones" -#: src/strip.c:2001 src/strip.c:2114 +#: src/strip.c:2119 src/strip.c:2232 #, c-format msgid "while writing '%s': %s" msgstr "al escribir '%s': %s" -#: src/strip.c:2012 +#: src/strip.c:2130 #, c-format msgid "while creating '%s'" msgstr "al crear '%s'" -#: src/strip.c:2035 +#: src/strip.c:2153 #, c-format msgid "while computing checksum for debug information" msgstr "al computar la suma de verificación para información de depuración" -#: src/strip.c:2099 +#: src/strip.c:2217 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: error al leer el fichero: %s" -#: src/strip.c:2139 src/strip.c:2159 +#: src/strip.c:2257 src/strip.c:2277 #, c-format msgid "while writing '%s'" msgstr "al escribir '%s'" -#: src/strip.c:2196 src/strip.c:2203 +#: src/strip.c:2314 src/strip.c:2321 #, c-format msgid "error while finishing '%s': %s" msgstr "Error al terminar '%s': %s" -#: src/strip.c:2220 src/strip.c:2292 +#: src/strip.c:2338 src/strip.c:2414 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "no es posible establecer acceso y fecha de modificación de '%s'" @@ -6700,12 +6727,12 @@ msgstr "También mostrar nombres de función" msgid "Show instances of inlined functions" msgstr "" +#~ msgid "-R option supports only .comment section" +#~ msgstr "la opción -R soporta únicamente. sección de comentario" + #~ msgid "Written by %s.\n" #~ msgstr "Escrito por %s.\n" -#~ msgid "cannot allocate PLT section: %s" -#~ msgstr "No se puede asignar sección PLT: %s" - #~ msgid "cannot allocate PLTREL section: %s" #~ msgstr "No se puede asignar sección PLTREL: %s" diff --git a/po/ja.po b/po/ja.po index 7d0d1440..6ab09aa3 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2017-05-05 09:44+0200\n" +"POT-Creation-Date: 2017-08-02 18:29+0200\n" "PO-Revision-Date: 2009-09-20 15:32+0900\n" "Last-Translator: Hyu_gabaru Ryu_ichi \n" "Language-Team: Japanese \n" @@ -51,7 +51,7 @@ msgstr "" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" #: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296 -#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432 +#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432 #, c-format msgid "memory exhausted" msgstr "メモリー消費済み" @@ -252,6 +252,11 @@ msgstr "不当なオペランド" msgid "not a CU (unit) DIE" msgstr "" +#: libdw/dwarf_error.c:98 +#, fuzzy +msgid "unknown language code" +msgstr "不明な命令コード" + #: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374 msgid "Input selection options:" msgstr "選択オプションを入力してください:" @@ -288,34 +293,34 @@ msgstr "全てのモジュール付きのカーネル" msgid "Search path for separate debuginfo files" msgstr "分離した debuginfo ファイルべきパスを探す" -#: libdwfl/argp-std.c:161 +#: libdwfl/argp-std.c:164 msgid "only one of -e, -p, -k, -K, or --core allowed" msgstr "-e か、-p、-k、-K、--core のひとつだけが認められます" -#: libdwfl/argp-std.c:234 +#: libdwfl/argp-std.c:237 msgid "cannot load kernel symbols" msgstr "カーネルシンボルをロードできません" #. Non-fatal to have no modules since we do have the kernel. -#: libdwfl/argp-std.c:238 +#: libdwfl/argp-std.c:241 msgid "cannot find kernel modules" msgstr "カーネルモジュールを見つけられません" -#: libdwfl/argp-std.c:255 +#: libdwfl/argp-std.c:258 msgid "cannot find kernel or modules" msgstr "カーネルかモジュールを見つけられません" -#: libdwfl/argp-std.c:294 +#: libdwfl/argp-std.c:297 #, c-format msgid "cannot read ELF core file: %s" msgstr "ELF コアファイルを読めません: %s" -#: libdwfl/argp-std.c:317 +#: libdwfl/argp-std.c:320 #, fuzzy msgid "Not enough memory" msgstr "メモリー不足" -#: libdwfl/argp-std.c:327 +#: libdwfl/argp-std.c:330 msgid "No modules recognized in core file" msgstr "コアファイルの中にモジュールを認識できません" @@ -486,7 +491,7 @@ msgstr "不当な ELF ファイル" msgid "No backend" msgstr "バックエンドがありません" -#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 #: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 @@ -583,7 +588,7 @@ msgstr "ソース演算子の大きさが無効" msgid "invalid size of destination operand" msgstr "宛先演算子の大きさが無効" -#: libelf/elf_error.c:87 src/readelf.c:5114 +#: libelf/elf_error.c:87 src/readelf.c:5139 #, c-format msgid "invalid encoding" msgstr "無効なエンコード" @@ -665,8 +670,8 @@ msgstr "データ/scnが不整合です" msgid "invalid section header" msgstr "不当なセクションヘッダー" -#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809 -#: src/readelf.c:7910 src/readelf.c:8091 +#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900 +#: src/readelf.c:8001 src/readelf.c:8182 #, c-format msgid "invalid data" msgstr "不当なデータ" @@ -1292,7 +1297,7 @@ msgid "Invalid value '%s' for --gaps parameter." msgstr "" #: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142 -#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490 +#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555 #: src/unstrip.c:2023 src/unstrip.c:2052 #, c-format msgid "cannot open '%s'" @@ -1323,7 +1328,7 @@ msgstr "" msgid "cannot get relocation: %s" msgstr "" -#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "-o オプションが 2 回指定されています" @@ -1375,7 +1380,7 @@ msgstr "" msgid "Force compression of section even if it would become larger" msgstr "" -#: src/elfcompress.c:1282 src/strip.c:88 +#: src/elfcompress.c:1282 src/strip.c:91 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "少し壊れた ELF ファイルを取り扱うためにルールを少し緩和する" @@ -3236,7 +3241,7 @@ msgstr "" #. Strings for arguments in help texts. #: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81 -#: src/strings.c:88 src/strip.c:96 +#: src/strings.c:88 src/strip.c:99 msgid "[FILE...]" msgstr "[ふぁいる...]" @@ -3321,7 +3326,7 @@ msgid "" "a relocation modifies memory at offset %llu in a write-protected segment\n" msgstr "" -#: src/nm.c:67 src/strip.c:68 +#: src/nm.c:67 src/strip.c:70 msgid "Output selection:" msgstr "出力選択:" @@ -3386,7 +3391,7 @@ msgstr "弱いシンボルに印を点ける" msgid "Print size of defined symbols" msgstr "定義されたシンボルの印刷サイズ" -#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73 +#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "出力オプション:" @@ -3416,18 +3421,18 @@ msgstr "ふぁいる からシンボルを表示 (デフォルトではa.out)。 msgid "Output formatting" msgstr "出力形式:" -#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128 +#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131 #, fuzzy, c-format msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: 内部エラー %d (%s-%s): %s" #: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309 -#: src/strip.c:2299 +#: src/strip.c:2421 #, c-format msgid "while closing '%s'" msgstr "'%s' を閉じている最中" -#: src/nm.c:404 src/objdump.c:281 src/strip.c:378 +#: src/nm.c:404 src/objdump.c:281 src/strip.c:443 #, c-format msgid "%s: File format not recognized" msgstr "%s: ファイル形式を認識できませんでした" @@ -3471,9 +3476,9 @@ msgstr "検索ツリーを生成できません" #: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664 #: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314 #: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315 -#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439 -#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466 -#: src/strip.c:507 +#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530 +#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466 +#: src/strip.c:572 #, c-format msgid "cannot get section header string table index" msgstr "セクションヘッダー文字列テーブル索引が得られません" @@ -3755,7 +3760,7 @@ msgstr "不明な DWARF デバッグセクション `%s'.\n" msgid "cannot generate Elf descriptor: %s" msgstr "Elf 記述子を生成できません: %s" -#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576 +#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641 #, c-format msgid "cannot determine number of sections: %s" msgstr "セクション数を決定できません: %s" @@ -3765,7 +3770,7 @@ msgstr "セクション数を決定できません: %s" msgid "cannot get section: %s" msgstr "セクションを得られません: %s" -#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662 +#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753 #: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565 #: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109 #: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650 @@ -3779,8 +3784,8 @@ msgstr "セクションヘッダーを得られません: %s" msgid "cannot get section name" msgstr "セクションを得られません: %s" -#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899 -#: src/readelf.c:8076 +#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990 +#: src/readelf.c:8167 #, c-format msgid "cannot get %s content: %s" msgstr "%s の内容を得られません: %s" @@ -4141,8 +4146,8 @@ msgstr "<不当なシンボル>" msgid "" msgstr "<不当なセクション>" -#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533 -#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591 +#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624 +#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682 msgid "Couldn't uncompress section" msgstr "" @@ -4152,7 +4157,7 @@ msgid "cannot get section [%zd] header: %s" msgstr "セクションヘッダーを得られません: %s" #: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654 -#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734 +#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr "不当な .debug_line セクション" @@ -4588,46 +4593,46 @@ msgstr "%s+%#" msgid "%s+%#0*" msgstr "%s+%#0*" -#: src/readelf.c:4056 +#: src/readelf.c:4081 msgid "empty block" msgstr "空ブロック" -#: src/readelf.c:4059 +#: src/readelf.c:4084 #, c-format msgid "%zu byte block:" msgstr "%zu バイトのブロック:" -#: src/readelf.c:4456 +#: src/readelf.c:4481 #, c-format msgid "%*s[%4] %s \n" msgstr "%*s[%4] %s \n" -#: src/readelf.c:4513 +#: src/readelf.c:4538 #, c-format msgid "%s %# used with different address sizes" msgstr "" -#: src/readelf.c:4520 +#: src/readelf.c:4545 #, c-format msgid "%s %# used with different offset sizes" msgstr "" -#: src/readelf.c:4527 +#: src/readelf.c:4552 #, c-format msgid "%s %# used with different base addresses" msgstr "" -#: src/readelf.c:4616 +#: src/readelf.c:4641 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:4624 +#: src/readelf.c:4649 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr "" -#: src/readelf.c:4650 +#: src/readelf.c:4675 #, c-format msgid "" "\n" @@ -4638,7 +4643,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" " [ コード]\n" -#: src/readelf.c:4658 +#: src/readelf.c:4683 #, c-format msgid "" "\n" @@ -4647,30 +4652,30 @@ msgstr "" "\n" "オフセット % の略語セクション:\n" -#: src/readelf.c:4671 +#: src/readelf.c:4696 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** 略語を読んでいる間にエラー: %s\n" -#: src/readelf.c:4687 +#: src/readelf.c:4712 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] オフセット: %、子: %s、タグ: %s\n" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745 msgid "yes" msgstr "はい" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745 msgid "no" msgstr "いいえ" -#: src/readelf.c:4724 src/readelf.c:4797 +#: src/readelf.c:4749 src/readelf.c:4822 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr ".debug_aragnes の内容を得られません: %s" -#: src/readelf.c:4739 +#: src/readelf.c:4764 #, c-format msgid "" "\n" @@ -4683,20 +4688,20 @@ msgstr[0] "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:4770 +#: src/readelf.c:4795 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:4772 +#: src/readelf.c:4797 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" msgstr "" " [%*zu] 開始: %0#*、長さ: %5、CU DIE オフセット: %6\n" -#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487 -#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728 +#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515 +#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819 #, c-format msgid "" "\n" @@ -4705,7 +4710,7 @@ msgstr "" "\n" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:4815 src/readelf.c:6513 +#: src/readelf.c:4840 src/readelf.c:6541 #, fuzzy, c-format msgid "" "\n" @@ -4714,86 +4719,86 @@ msgstr "" "\n" "オフセット %Zu のテーブル:\n" -#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524 +#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:4835 +#: src/readelf.c:4860 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " (オフセット: %#)" -#: src/readelf.c:4847 +#: src/readelf.c:4872 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:4851 +#: src/readelf.c:4876 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:4862 +#: src/readelf.c:4887 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " (オフセット: %#)" -#: src/readelf.c:4868 +#: src/readelf.c:4893 #, fuzzy, c-format msgid " Address size: %6\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:4872 +#: src/readelf.c:4897 #, fuzzy, c-format msgid "unsupported address size" msgstr "アドレス値ではありません" -#: src/readelf.c:4877 +#: src/readelf.c:4902 #, fuzzy, c-format msgid "" " Segment size: %6\n" "\n" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:4881 +#: src/readelf.c:4906 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:4921 +#: src/readelf.c:4946 #, fuzzy, c-format msgid " %s..%s (%)\n" msgstr " %s: %\n" -#: src/readelf.c:4924 +#: src/readelf.c:4949 #, fuzzy, c-format msgid " %s..%s\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:4933 +#: src/readelf.c:4958 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:4951 +#: src/readelf.c:4976 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr ".degub_ranges の内容を得られません: %s" -#: src/readelf.c:4981 src/readelf.c:7046 +#: src/readelf.c:5006 src/readelf.c:7074 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:5003 src/readelf.c:7068 +#: src/readelf.c:5028 src/readelf.c:7096 #, c-format msgid " [%6tx] base address %s\n" msgstr " [%6tx] ベースアドレス %s\n" -#: src/readelf.c:5010 src/readelf.c:7075 +#: src/readelf.c:5035 src/readelf.c:7103 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr "" @@ -4802,27 +4807,27 @@ msgstr "" #. We have an address range entry. #. First address range entry in a list. -#: src/readelf.c:5021 +#: src/readelf.c:5046 #, c-format msgid " [%6tx] %s..%s\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:5023 +#: src/readelf.c:5048 #, c-format msgid " %s..%s\n" msgstr " %s..%s\n" -#: src/readelf.c:5259 +#: src/readelf.c:5284 #, fuzzy msgid " \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:5512 +#: src/readelf.c:5537 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:5529 +#: src/readelf.c:5554 #, c-format msgid "" "\n" @@ -4831,7 +4836,7 @@ msgstr "" "\n" "オフセット %3$# の フレーム情報呼出しセクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:5579 +#: src/readelf.c:5604 #, c-format msgid "" "\n" @@ -4840,50 +4845,50 @@ msgstr "" "\n" " [%6tx] ゼロ終端\n" -#: src/readelf.c:5672 src/readelf.c:5827 +#: src/readelf.c:5697 src/readelf.c:5852 #, fuzzy, c-format msgid "invalid augmentation length" msgstr "不当な拡大エンコード" -#: src/readelf.c:5687 +#: src/readelf.c:5712 msgid "FDE address encoding: " msgstr "FDE アドレスエンコード" -#: src/readelf.c:5693 +#: src/readelf.c:5718 msgid "LSDA pointer encoding: " msgstr "LSDA ポインターエンコード:" -#: src/readelf.c:5804 +#: src/readelf.c:5829 #, c-format msgid " (offset: %#)" msgstr " (オフセット: %#)" -#: src/readelf.c:5811 +#: src/readelf.c:5836 #, c-format msgid " (end offset: %#)" msgstr " (終了オフセット: %#)" -#: src/readelf.c:5848 +#: src/readelf.c:5873 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sLSDA ポインター: %#\n" -#: src/readelf.c:5903 +#: src/readelf.c:5928 #, c-format msgid "cannot get attribute code: %s" msgstr "属性コードを得られません: %s" -#: src/readelf.c:5912 +#: src/readelf.c:5937 #, c-format msgid "cannot get attribute form: %s" msgstr "属性様式を得られません: %s" -#: src/readelf.c:5927 +#: src/readelf.c:5952 #, c-format msgid "cannot get attribute value: %s" msgstr "属性値を得られません: %s" -#: src/readelf.c:6226 +#: src/readelf.c:6254 #, c-format msgid "" "\n" @@ -4894,7 +4899,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" " [オフセット]\n" -#: src/readelf.c:6258 +#: src/readelf.c:6286 #, fuzzy, c-format msgid "" " Type unit at offset %:\n" @@ -4906,7 +4911,7 @@ msgstr "" " バージョン: %2$、略語セクションオフセット: %3$、アドレスの大" "きさ: %4$、オフセットの大きさ: %5$\n" -#: src/readelf.c:6267 +#: src/readelf.c:6295 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -4917,35 +4922,35 @@ msgstr "" " バージョン: %2$、略語セクションオフセット: %3$、アドレスの大" "きさ: %4$、オフセットの大きさ: %5$\n" -#: src/readelf.c:6292 +#: src/readelf.c:6320 #, c-format msgid "cannot get DIE at offset % in section '%s': %s" msgstr "" "セクション '%2$s' の オフセット %1$ の DIE を得られません: %3$s" -#: src/readelf.c:6306 +#: src/readelf.c:6334 #, c-format msgid "cannot get DIE offset: %s" msgstr "DIE オフセットを得られません: %s" -#: src/readelf.c:6315 +#: src/readelf.c:6343 #, c-format msgid "cannot get tag of DIE at offset % in section '%s': %s" msgstr "" "セクション '%2$s' 中のオフセット %1$ の DIE のタグを得られません: " "%3$s" -#: src/readelf.c:6347 +#: src/readelf.c:6375 #, c-format msgid "cannot get next DIE: %s\n" msgstr "次の DIE を得られません: %s\n" -#: src/readelf.c:6355 +#: src/readelf.c:6383 #, c-format msgid "cannot get next DIE: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:6391 +#: src/readelf.c:6419 #, fuzzy, c-format msgid "" "\n" @@ -4955,13 +4960,13 @@ msgstr "" "\n" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:6500 +#: src/readelf.c:6528 #, c-format msgid "cannot get line data section data: %s" msgstr "ラインデータセクションデータを得られません: %s" #. Print what we got so far. -#: src/readelf.c:6570 +#: src/readelf.c:6598 #, fuzzy, c-format msgid "" "\n" @@ -4989,18 +4994,18 @@ msgstr "" "\n" "命令コード:\n" -#: src/readelf.c:6591 +#: src/readelf.c:6619 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "セクション [%2$zu] '%3$s' 中のオフセット %1$tu に不当なデータ" -#: src/readelf.c:6606 +#: src/readelf.c:6634 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] " [%*] %hhu パラメーター\n" -#: src/readelf.c:6614 +#: src/readelf.c:6642 msgid "" "\n" "Directory table:" @@ -5008,7 +5013,7 @@ msgstr "" "\n" "ディレクトリーテーブル:" -#: src/readelf.c:6630 +#: src/readelf.c:6658 msgid "" "\n" "File name table:\n" @@ -5018,7 +5023,7 @@ msgstr "" "ファイル名テーブル:\n" " Entry Dir 時刻 大きさ 名前" -#: src/readelf.c:6665 +#: src/readelf.c:6693 msgid "" "\n" "Line number statements:" @@ -5026,119 +5031,119 @@ msgstr "" "\n" "行 番号 文:" -#: src/readelf.c:6716 +#: src/readelf.c:6744 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "" -#: src/readelf.c:6752 +#: src/readelf.c:6780 #, fuzzy, c-format msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n" msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n" -#: src/readelf.c:6757 +#: src/readelf.c:6785 #, c-format msgid " special opcode %u: address+%u = %s, line%+d = %zu\n" msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n" -#: src/readelf.c:6777 +#: src/readelf.c:6805 #, c-format msgid " extended opcode %u: " msgstr " 拡張命令コード %u: " -#: src/readelf.c:6782 +#: src/readelf.c:6810 #, fuzzy msgid " end of sequence" msgstr "列の終わり" -#: src/readelf.c:6801 +#: src/readelf.c:6829 #, fuzzy, c-format msgid " set address to %s\n" msgstr "アドレスを %s に設定する\n" -#: src/readelf.c:6828 +#: src/readelf.c:6856 #, fuzzy, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" "新ファイルを定義する: dir=%u、mtime=%、長さh=%、名前=%s\n" -#: src/readelf.c:6841 +#: src/readelf.c:6869 #, fuzzy, c-format msgid " set discriminator to %u\n" msgstr "カラムを % に設定する\n" #. Unknown, ignore it. -#: src/readelf.c:6846 +#: src/readelf.c:6874 #, fuzzy msgid " unknown opcode" msgstr "不明な命令コード" #. Takes no argument. -#: src/readelf.c:6858 +#: src/readelf.c:6886 msgid " copy" msgstr "複写" -#: src/readelf.c:6869 +#: src/readelf.c:6897 #, fuzzy, c-format msgid " advance address by %u to %s, op_index to %u\n" msgstr "アドレスを %u だけ進めて %s にする\n" -#: src/readelf.c:6873 +#: src/readelf.c:6901 #, fuzzy, c-format msgid " advance address by %u to %s\n" msgstr "アドレスを %u だけ進めて %s にする\n" -#: src/readelf.c:6884 +#: src/readelf.c:6912 #, c-format msgid " advance line by constant %d to %\n" msgstr "行を定数 %d だけ進めて % にする\n" -#: src/readelf.c:6892 +#: src/readelf.c:6920 #, c-format msgid " set file to %\n" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:6902 +#: src/readelf.c:6930 #, c-format msgid " set column to %\n" msgstr "カラムを % に設定する\n" -#: src/readelf.c:6909 +#: src/readelf.c:6937 #, c-format msgid " set '%s' to %\n" msgstr " '%s' を % に設定する\n" #. Takes no argument. -#: src/readelf.c:6915 +#: src/readelf.c:6943 msgid " set basic block flag" msgstr "基本ブロックフラグを設定する" -#: src/readelf.c:6928 +#: src/readelf.c:6956 #, fuzzy, c-format msgid " advance address by constant %u to %s, op_index to %u\n" msgstr "アドレスを定数 %u だけ済めて %s にする\n" -#: src/readelf.c:6932 +#: src/readelf.c:6960 #, fuzzy, c-format msgid " advance address by constant %u to %s\n" msgstr "アドレスを定数 %u だけ済めて %s にする\n" -#: src/readelf.c:6950 +#: src/readelf.c:6978 #, fuzzy, c-format msgid " advance address by fixed value %u to %s\n" msgstr "アドレスを固定値 %u だけ進めて %s にする\n" #. Takes no argument. -#: src/readelf.c:6959 +#: src/readelf.c:6987 msgid " set prologue end flag" msgstr "プロローグ終了フラグを設定する" #. Takes no argument. -#: src/readelf.c:6964 +#: src/readelf.c:6992 msgid " set epilogue begin flag" msgstr "エピローグ開始フラグを設定する" -#: src/readelf.c:6973 +#: src/readelf.c:7001 #, fuzzy, c-format msgid " set isa to %u\n" msgstr " ファイルを % に設定する\n" @@ -5146,104 +5151,104 @@ 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:6982 +#: src/readelf.c:7010 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" msgstr[0] " % 個のパラメーターのある不明な命令コード:" -#: src/readelf.c:7014 +#: src/readelf.c:7042 #, c-format msgid "cannot get .debug_loc content: %s" msgstr ".debug_loc の内容を得られません: %s" #. First entry in a list. -#: src/readelf.c:7089 +#: src/readelf.c:7117 #, c-format msgid " [%6tx] %s..%s" msgstr " [%6tx] %s..%s" -#: src/readelf.c:7091 +#: src/readelf.c:7119 #, c-format msgid " %s..%s" msgstr " %s..%s" -#: src/readelf.c:7098 src/readelf.c:7986 +#: src/readelf.c:7126 src/readelf.c:8077 #, fuzzy msgid " \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:7150 src/readelf.c:7312 +#: src/readelf.c:7178 src/readelf.c:7340 #, c-format msgid "cannot get macro information section data: %s" msgstr "マクロ情報セクションのデータを得られません: %s" -#: src/readelf.c:7230 +#: src/readelf.c:7258 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** 最後のセクションの終端していない文字列" -#: src/readelf.c:7253 +#: src/readelf.c:7281 #, fuzzy, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** 最後のセクションの終端していない文字列" -#: src/readelf.c:7353 +#: src/readelf.c:7381 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " 所有者 大きさ\n" -#: src/readelf.c:7365 +#: src/readelf.c:7393 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:7371 src/readelf.c:8105 +#: src/readelf.c:7399 src/readelf.c:8196 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:7378 +#: src/readelf.c:7406 #, fuzzy, c-format msgid " Flag: 0x%\n" msgstr " 入口点アドレス : %#\n" -#: src/readelf.c:7381 +#: src/readelf.c:7409 #, fuzzy, c-format msgid " Offset length: %\n" msgstr " (オフセット: %#)" -#: src/readelf.c:7389 +#: src/readelf.c:7417 #, fuzzy, c-format msgid " .debug_line offset: 0x%\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:7402 +#: src/readelf.c:7430 #, fuzzy, c-format msgid " extension opcode table, % items:\n" msgstr " % 個のパラメーターのある不明な命令コード:" -#: src/readelf.c:7409 +#: src/readelf.c:7437 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:7421 +#: src/readelf.c:7449 #, fuzzy, c-format msgid " % arguments:" msgstr " [%*] %hhu パラメーター\n" -#: src/readelf.c:7449 +#: src/readelf.c:7477 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:7686 +#: src/readelf.c:7777 #, c-format msgid "vendor opcode not verified?" msgstr "" -#: src/readelf.c:7714 +#: src/readelf.c:7805 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" @@ -5251,7 +5256,7 @@ msgstr "" # # "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" # # " %4$*s 文字列\n" がエラーになるのは何故? 取り敢えず fuzzy扱い -#: src/readelf.c:7755 +#: src/readelf.c:7846 #, fuzzy, c-format msgid "" "\n" @@ -5262,12 +5267,12 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" " %4$*s 文字列\n" -#: src/readelf.c:7769 +#: src/readelf.c:7860 #, c-format msgid " *** error while reading strings: %s\n" msgstr " *** 文字列の読込み中にエラー: %s\n" -#: src/readelf.c:7789 +#: src/readelf.c:7880 #, c-format msgid "" "\n" @@ -5276,7 +5281,7 @@ msgstr "" "\n" "呼出しフレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:7891 +#: src/readelf.c:7982 #, c-format msgid "" "\n" @@ -5285,22 +5290,22 @@ msgstr "" "\n" "例外取扱いテーブルセクション [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:7914 +#: src/readelf.c:8005 #, c-format msgid " LPStart encoding: %#x " msgstr " LPStart コード化: %#x " -#: src/readelf.c:7926 +#: src/readelf.c:8017 #, c-format msgid " TType encoding: %#x " msgstr "TType コード化: %#x " -#: src/readelf.c:7941 +#: src/readelf.c:8032 #, c-format msgid " Call site encoding: %#x " msgstr "呼出しサイトコード化: %#x " -#: src/readelf.c:7954 +#: src/readelf.c:8045 msgid "" "\n" " Call site table:" @@ -5308,7 +5313,7 @@ msgstr "" "\n" " 呼出しサイトテーブル:" -#: src/readelf.c:7968 +#: src/readelf.c:8059 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5321,12 +5326,12 @@ msgstr "" " 離着陸場: %#\n" " 行動: %u\n" -#: src/readelf.c:8041 +#: src/readelf.c:8132 #, c-format msgid "invalid TType encoding" msgstr "不当な TType コード化" -#: src/readelf.c:8067 +#: src/readelf.c:8158 #, fuzzy, c-format msgid "" "\n" @@ -5336,37 +5341,37 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:8096 +#: src/readelf.c:8187 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:8114 +#: src/readelf.c:8205 #, fuzzy, c-format msgid " CU offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:8121 +#: src/readelf.c:8212 #, fuzzy, c-format msgid " TU offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:8128 +#: src/readelf.c:8219 #, fuzzy, c-format msgid " address offset: %#\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:8135 +#: src/readelf.c:8226 #, fuzzy, c-format msgid " symbol offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:8142 +#: src/readelf.c:8233 #, fuzzy, c-format msgid " constant offset: %#\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:8156 +#: src/readelf.c:8247 #, fuzzy, c-format msgid "" "\n" @@ -5376,7 +5381,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:8181 +#: src/readelf.c:8272 #, fuzzy, c-format msgid "" "\n" @@ -5386,7 +5391,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:8210 +#: src/readelf.c:8301 #, fuzzy, c-format msgid "" "\n" @@ -5396,7 +5401,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:8243 +#: src/readelf.c:8334 #, fuzzy, c-format msgid "" "\n" @@ -5405,17 +5410,17 @@ msgstr "" "\n" "オフセット %#0 に不当なシンボルテーブル\n" -#: src/readelf.c:8330 +#: src/readelf.c:8421 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "デバッグ内容記述子を得られません: %s" -#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277 +#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368 #, c-format msgid "cannot convert core note data: %s" msgstr "コアノートデータの変換ができません: %s" -#: src/readelf.c:8849 +#: src/readelf.c:8940 #, c-format msgid "" "\n" @@ -5424,21 +5429,21 @@ msgstr "" "\n" "%*s... < %u 回の繰返し> ..." -#: src/readelf.c:9356 +#: src/readelf.c:9447 msgid " Owner Data size Type\n" msgstr " 所有者 データ大きさタイプ\n" -#: src/readelf.c:9374 +#: src/readelf.c:9465 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:9424 +#: src/readelf.c:9515 #, c-format msgid "cannot get content of note section: %s" msgstr "ノートセクションの内容を得られません: %s" -#: src/readelf.c:9451 +#: src/readelf.c:9542 #, c-format msgid "" "\n" @@ -5448,7 +5453,7 @@ msgstr "" "オフセット %4$#0 の %3$ バイトのノートセクション [%1$2zu] " "'%2$s':\n" -#: src/readelf.c:9474 +#: src/readelf.c:9565 #, c-format msgid "" "\n" @@ -5457,7 +5462,7 @@ msgstr "" "\n" "オフセット %2$#0 の %1$ バイトのノートセグメント:\n" -#: src/readelf.c:9520 +#: src/readelf.c:9611 #, fuzzy, c-format msgid "" "\n" @@ -5466,12 +5471,12 @@ msgstr "" "\n" "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n" -#: src/readelf.c:9547 src/readelf.c:9598 +#: src/readelf.c:9638 src/readelf.c:9689 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "セクション [%Zu] '%s' からデータが得られません: %s" -#: src/readelf.c:9552 +#: src/readelf.c:9643 #, fuzzy, c-format msgid "" "\n" @@ -5481,7 +5486,7 @@ msgstr "" "オフセット %4$#0 のセクション [%1$Zu] '%2$s' の16進ダン" "プ、%3$ バイト:\n" -#: src/readelf.c:9557 +#: src/readelf.c:9648 #, fuzzy, c-format msgid "" "\n" @@ -5492,7 +5497,7 @@ msgstr "" "オフセット %4$#0 のセクション [%1$Zu] '%2$s' の16進ダン" "プ、%3$ バイト:\n" -#: src/readelf.c:9571 +#: src/readelf.c:9662 #, fuzzy, c-format msgid "" "\n" @@ -5501,7 +5506,7 @@ msgstr "" "\n" "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n" -#: src/readelf.c:9603 +#: src/readelf.c:9694 #, fuzzy, c-format msgid "" "\n" @@ -5511,7 +5516,7 @@ msgstr "" "オフセット %4$#0 文字列セクション [%1$Zu] '%2$s' には %3$ バ" "イトあります:\n" -#: src/readelf.c:9608 +#: src/readelf.c:9699 #, fuzzy, c-format msgid "" "\n" @@ -5522,7 +5527,7 @@ msgstr "" "オフセット %4$#0 文字列セクション [%1$Zu] '%2$s' には %3$ バ" "イトあります:\n" -#: src/readelf.c:9657 +#: src/readelf.c:9748 #, c-format msgid "" "\n" @@ -5531,7 +5536,7 @@ msgstr "" "\n" "セクション [%lu] がありません" -#: src/readelf.c:9686 +#: src/readelf.c:9777 #, c-format msgid "" "\n" @@ -5540,12 +5545,12 @@ msgstr "" "\n" "セクション '%s' がありません" -#: src/readelf.c:9743 +#: src/readelf.c:9834 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "アーカイブのシンボル索引 '%s' を得られません: %s" -#: src/readelf.c:9746 +#: src/readelf.c:9837 #, c-format msgid "" "\n" @@ -5554,7 +5559,7 @@ msgstr "" "\n" "アーカイブ '%s' にはシンボル索引がありません\n" -#: src/readelf.c:9750 +#: src/readelf.c:9841 #, fuzzy, c-format msgid "" "\n" @@ -5563,12 +5568,12 @@ msgstr "" "\n" "アーカイブ '%s' の索引には %Zu 項目あります:\n" -#: src/readelf.c:9768 +#: src/readelf.c:9859 #, fuzzy, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "'%2$s' の オフセット %1$Zu のメンバーを抽出できません: %3$s" -#: src/readelf.c:9773 +#: src/readelf.c:9864 #, c-format msgid "Archive member '%s' contains:\n" msgstr "アーカイブメンバー '%s' には以下があります:\n" @@ -5825,82 +5830,94 @@ msgstr "" msgid "Skipping section %zd '%s' data outside file" msgstr "" -#: src/strip.c:69 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "はぎ取った出力を ふぁいる に置く" -#: src/strip.c:70 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "抽出した取り除いたセクションを ふぁいる に置く" -#: src/strip.c:71 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "-f パラメーターの代わりに 名前 ふぁいる を有効にする" -#: src/strip.c:75 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "デバッグ用のシンボルを全て取り除く" -#: src/strip.c:79 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "" -#: src/strip.c:81 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "修正/アクセスタイムスタンプを出力へ複写する" -#: src/strip.c:83 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " "operation is not reversable, needs -f)" msgstr "" -#: src/strip.c:85 +#: src/strip.c:87 msgid "Remove .comment section" msgstr ".comment セクションを取り除く" +#: src/strip.c:88 +msgid "" +"Remove the named section. SECTION is an extended wildcard pattern. May be " +"given more than once. Only non-allocated sections can be removed." +msgstr "" + +#: src/strip.c:89 +msgid "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." +msgstr "" + #. Short description of program. -#: src/strip.c:93 +#: src/strip.c:96 msgid "Discard symbols from object files." msgstr "オブジェクトファイルからシンボルを破棄する" -#: src/strip.c:187 +#: src/strip.c:242 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "" -#: src/strip.c:201 +#: src/strip.c:256 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "'-o' と '-f' と一緒の場合は入力ファイルは 1 つしか認められません" -#: src/strip.c:223 +#: src/strip.c:279 #, c-format msgid "-f option specified twice" msgstr "-f オプションが 2 回指定されています" -#: src/strip.c:232 +#: src/strip.c:288 #, c-format msgid "-F option specified twice" msgstr "-F オプションが 2 回指定されています" -#: src/strip.c:265 -#, c-format -msgid "-R option supports only .comment section" -msgstr "-R オプションは .comment セクションのみをサポートします" +#: src/strip.c:347 +#, fuzzy, c-format +msgid "cannot both keep and remove .comment section" +msgstr ".comment セクションを取り除く" -#: src/strip.c:307 src/strip.c:331 +#: src/strip.c:372 src/strip.c:396 #, c-format msgid "cannot stat input file '%s'" msgstr "入力ファイル '%s' を stat できません" -#: src/strip.c:321 +#: src/strip.c:386 #, c-format msgid "while opening '%s'" msgstr "'%s' を開いている間" -#: src/strip.c:359 +#: src/strip.c:424 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "%s: アーカイブから抜き出している時は -o や -f は使えません" @@ -5911,107 +5928,117 @@ msgstr "%s: アーカイブから抜き出している時は -o や -f は使え #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:371 +#: src/strip.c:436 #, fuzzy, c-format msgid "%s: no support for stripping archive" msgstr "%s: アーカイブから抜き出している時は -o や -f は使えません" -#: src/strip.c:470 +#: src/strip.c:535 #, c-format msgid "cannot open EBL backend" msgstr "EBL バックエンドを開けません" -#: src/strip.c:515 +#: src/strip.c:580 #, fuzzy, c-format msgid "cannot get number of phdrs" msgstr "セクション数を決定できません: %s" -#: src/strip.c:531 src/strip.c:555 +#: src/strip.c:596 src/strip.c:620 #, c-format msgid "cannot create new file '%s': %s" msgstr "新しいファイル '%s' を生成できません: %s" -#: src/strip.c:621 +#: src/strip.c:686 #, c-format msgid "illformed file '%s'" msgstr "不適格なファイル '%s'" -#: src/strip.c:955 src/strip.c:1054 +#: src/strip.c:696 +#, fuzzy, c-format +msgid "Cannot remove allocated section '%s'" +msgstr "PLT セクションを割り当てられません: %s" + +#: src/strip.c:705 +#, fuzzy, c-format +msgid "Cannot both keep and remove section '%s'" +msgstr "0番目のセクションのヘッダーを得られません: %s" + +#: src/strip.c:1061 src/strip.c:1160 #, c-format msgid "while generating output file: %s" msgstr "出力ファイルを生成している間: %s" -#: src/strip.c:1020 src/strip.c:2090 +#: src/strip.c:1126 src/strip.c:2208 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "%s: ELF ヘッダーを生成している間にエラー: %s" -#: src/strip.c:1037 +#: src/strip.c:1143 #, c-format msgid "while preparing output for '%s'" msgstr "'%s' のための出力を準備している間" -#: src/strip.c:1095 src/strip.c:1158 +#: src/strip.c:1205 src/strip.c:1268 #, c-format msgid "while create section header section: %s" msgstr "セクションヘッダーセクションを生成している間: %s" -#: src/strip.c:1104 +#: src/strip.c:1214 #, c-format msgid "cannot allocate section data: %s" msgstr "セクションデータを割り当てられません: %s" -#: src/strip.c:1170 +#: src/strip.c:1280 #, c-format msgid "while create section header string table: %s" msgstr "セクションヘッダー文字列テーブルを生成中: %s" -#: src/strip.c:1177 +#: src/strip.c:1287 #, fuzzy, c-format msgid "no memory to create section header string table" msgstr "セクションヘッダー文字列テーブルを生成中: %s" -#: src/strip.c:1384 +#: src/strip.c:1497 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:1876 +#: src/strip.c:1994 #, fuzzy, c-format msgid "bad relocation" msgstr "リロケーションを表示" -#: src/strip.c:2001 src/strip.c:2114 +#: src/strip.c:2119 src/strip.c:2232 #, c-format msgid "while writing '%s': %s" msgstr "'%s' を書込み中: %s" -#: src/strip.c:2012 +#: src/strip.c:2130 #, c-format msgid "while creating '%s'" msgstr "'%s' を生成中" -#: src/strip.c:2035 +#: src/strip.c:2153 #, c-format msgid "while computing checksum for debug information" msgstr "デバッグ情報のチェックサムを計算中" -#: src/strip.c:2099 +#: src/strip.c:2217 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: ファイルを読込み中にエラー: %s" -#: src/strip.c:2139 src/strip.c:2159 +#: src/strip.c:2257 src/strip.c:2277 #, fuzzy, c-format msgid "while writing '%s'" msgstr "'%s' を書込み中: %s" -#: src/strip.c:2196 src/strip.c:2203 +#: src/strip.c:2314 src/strip.c:2321 #, c-format msgid "error while finishing '%s': %s" msgstr "'%s' の終了中にエラー: %s" -#: src/strip.c:2220 src/strip.c:2292 +#: src/strip.c:2338 src/strip.c:2414 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "'%s' のアクセスと変更日付を設定できません" @@ -6384,12 +6411,12 @@ msgstr "出力選択:" msgid "Show instances of inlined functions" msgstr "" +#~ msgid "-R option supports only .comment section" +#~ msgstr "-R オプションは .comment セクションのみをサポートします" + #~ msgid "Written by %s.\n" #~ msgstr "%s によって書かれました。\n" -#~ msgid "cannot allocate PLT section: %s" -#~ msgstr "PLT セクションを割り当てられません: %s" - #~ msgid "cannot allocate PLTREL section: %s" #~ msgstr "PLTREL セクションを割り当てられません: %s" @@ -6815,9 +6842,6 @@ msgstr "" #~ msgid "internal error: non-nobits section follows nobits section" #~ msgstr "内部エラー: 非 nobits セクションが nobits セクションに続きます" -#~ msgid "cannot get header of 0th section: %s" -#~ msgstr "0番目のセクションのヘッダーを得られません: %s" - #~ msgid "linker backend didn't specify function to relocate section" #~ msgstr "" #~ "リンカーバックエンドがセクションをリロケートするための機能を指定していませ" diff --git a/po/pl.po b/po/pl.po index 80d2899e..13070d44 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2017-05-05 09:44+0200\n" +"POT-Creation-Date: 2017-08-02 18:29+0200\n" "PO-Revision-Date: 2016-12-29 17:48+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" @@ -60,7 +60,7 @@ msgstr "" "HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n" #: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296 -#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432 +#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432 #, c-format msgid "memory exhausted" msgstr "pamięć wyczerpana" @@ -260,6 +260,11 @@ msgstr "nieprawidłowa instrukcja" msgid "not a CU (unit) DIE" msgstr "nie jest CU (jednostką) DIE" +#: libdw/dwarf_error.c:98 +#, fuzzy +msgid "unknown language code" +msgstr " nieznana instrukcja" + #: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374 msgid "Input selection options:" msgstr "Opcje wyboru wejścia:" @@ -296,33 +301,33 @@ msgstr "Jądro ze wszystkimi modułami" msgid "Search path for separate debuginfo files" msgstr "Wyszukuje ścieżkę dla oddzielnych plików debuginfo" -#: libdwfl/argp-std.c:161 +#: libdwfl/argp-std.c:164 msgid "only one of -e, -p, -k, -K, or --core allowed" msgstr "dopuszczalna jest tylko jedna z opcji -e, -p, -k, -K lub --core" -#: libdwfl/argp-std.c:234 +#: libdwfl/argp-std.c:237 msgid "cannot load kernel symbols" msgstr "nie można wczytać symboli jądra" #. Non-fatal to have no modules since we do have the kernel. -#: libdwfl/argp-std.c:238 +#: libdwfl/argp-std.c:241 msgid "cannot find kernel modules" msgstr "nie można odnaleźć modułów jądra" -#: libdwfl/argp-std.c:255 +#: libdwfl/argp-std.c:258 msgid "cannot find kernel or modules" msgstr "nie można odnaleźć jądra lub modułów" -#: libdwfl/argp-std.c:294 +#: libdwfl/argp-std.c:297 #, c-format msgid "cannot read ELF core file: %s" msgstr "nie można odczytać pliku core ELF: %s" -#: libdwfl/argp-std.c:317 +#: libdwfl/argp-std.c:320 msgid "Not enough memory" msgstr "Za mało pamięci" -#: libdwfl/argp-std.c:327 +#: libdwfl/argp-std.c:330 msgid "No modules recognized in core file" msgstr "Nie rozpoznano żadnych modułów w pliku core" @@ -482,7 +487,7 @@ msgstr "Nie jest plikiem ELF ET_CORE" msgid "No backend" msgstr "Brak zaplecza" -#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 #: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 @@ -579,7 +584,7 @@ msgstr "nieprawidłowy rozmiar operanda źródłowego" msgid "invalid size of destination operand" msgstr "nieprawidłowy rozmiar operanda docelowego" -#: libelf/elf_error.c:87 src/readelf.c:5114 +#: libelf/elf_error.c:87 src/readelf.c:5139 #, c-format msgid "invalid encoding" msgstr "nieprawidłowe kodowanie" @@ -660,8 +665,8 @@ msgstr "dane/scn nie zgadzają się" msgid "invalid section header" msgstr "nieprawidłowy nagłówek sekcji" -#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809 -#: src/readelf.c:7910 src/readelf.c:8091 +#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900 +#: src/readelf.c:8001 src/readelf.c:8182 #, c-format msgid "invalid data" msgstr "nieprawidłowe dane" @@ -1284,7 +1289,7 @@ msgid "Invalid value '%s' for --gaps parameter." msgstr "Nieprawidłowa wartość „%s” dla parametru --gaps." #: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142 -#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490 +#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555 #: src/unstrip.c:2023 src/unstrip.c:2052 #, c-format msgid "cannot open '%s'" @@ -1315,7 +1320,7 @@ msgstr "nie można uzyskać zawartości sekcji %zu: %s" msgid "cannot get relocation: %s" msgstr "nie można uzyskać relokacji: %s" -#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "Opcję -o podano dwukrotnie" @@ -1371,7 +1376,7 @@ msgstr "Wyświetla komunikat dla każdej (de)kompresowanej sekcji" msgid "Force compression of section even if it would become larger" msgstr "Wymusza kompresję sekcji nawet, jeśli spowodowałoby to jej zwiększenie" -#: src/elfcompress.c:1282 src/strip.c:88 +#: src/elfcompress.c:1282 src/strip.c:91 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "Łagodzi kilka reguł, aby obsłużyć lekko uszkodzone pliki ELF" @@ -3372,7 +3377,7 @@ msgstr "Odnajduje źródło relokacji tekstu w PLIKACH (domyślnie a.out)." #. Strings for arguments in help texts. #: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81 -#: src/strings.c:88 src/strip.c:96 +#: src/strings.c:88 src/strip.c:99 msgid "[FILE...]" msgstr "[PLIK…]" @@ -3462,7 +3467,7 @@ msgstr "" "relokacja modyfikuje pamięć pod offsetem %llu w segmencie zabezpieczonym " "przed zapisem\n" -#: src/nm.c:67 src/strip.c:68 +#: src/nm.c:67 src/strip.c:70 msgid "Output selection:" msgstr "Wybór wyjścia:" @@ -3526,7 +3531,7 @@ msgstr "Oznacza specjalne symbole" msgid "Print size of defined symbols" msgstr "Wyświetla rozmiar określonych symboli" -#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73 +#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "Opcje wyjścia:" @@ -3555,18 +3560,18 @@ msgstr "Wyświetla listę symboli z PLIKU (domyślnie a.out)." msgid "Output formatting" msgstr "Formatowanie wyjścia" -#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128 +#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131 #, c-format msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: BŁĄD WEWNĘTRZNY %d (%s): %s" #: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309 -#: src/strip.c:2299 +#: src/strip.c:2421 #, c-format msgid "while closing '%s'" msgstr "podczas zamykania „%s”" -#: src/nm.c:404 src/objdump.c:281 src/strip.c:378 +#: src/nm.c:404 src/objdump.c:281 src/strip.c:443 #, c-format msgid "%s: File format not recognized" msgstr "%s: nie rozpoznano formatu pliku" @@ -3609,9 +3614,9 @@ msgstr "nie można utworzyć drzewa wyszukiwania" #: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664 #: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314 #: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315 -#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439 -#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466 -#: src/strip.c:507 +#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530 +#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466 +#: src/strip.c:572 #, c-format msgid "cannot get section header string table index" msgstr "nie można uzyskać indeksu tabeli ciągów nagłówków sekcji" @@ -3894,7 +3899,7 @@ msgstr "Nieznana sekcja debugowania DWARF „%s”.\n" msgid "cannot generate Elf descriptor: %s" msgstr "nie można utworzyć deskryptora ELF: %s" -#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576 +#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641 #, c-format msgid "cannot determine number of sections: %s" msgstr "nie można określić liczby sekcji: %s" @@ -3904,7 +3909,7 @@ msgstr "nie można określić liczby sekcji: %s" msgid "cannot get section: %s" msgstr "nie można uzyskać sekcji: %s" -#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662 +#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753 #: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565 #: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109 #: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650 @@ -3918,8 +3923,8 @@ msgstr "nie można uzyskać nagłówka sekcji: %s" msgid "cannot get section name" msgstr "nie można uzyskać nazwy sekcji" -#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899 -#: src/readelf.c:8076 +#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990 +#: src/readelf.c:8167 #, c-format msgid "cannot get %s content: %s" msgstr "nie można uzyskać zwartości %s: %s" @@ -4291,8 +4296,8 @@ msgstr "" msgid "" msgstr "" -#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533 -#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591 +#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624 +#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682 msgid "Couldn't uncompress section" msgstr "Nie można dekompresować sekcji" @@ -4302,7 +4307,7 @@ msgid "cannot get section [%zd] header: %s" msgstr "nie można uzyskać nagłówka sekcji [%zd]: %s" #: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654 -#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734 +#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759 #, c-format msgid "invalid sh_link value in section %zu" msgstr "nieprawidłowa wartość sh_link w sekcji %zu" @@ -4819,46 +4824,46 @@ msgstr "%s+%#" msgid "%s+%#0*" msgstr "%s+%#0*" -#: src/readelf.c:4056 +#: src/readelf.c:4081 msgid "empty block" msgstr "pusty blok" -#: src/readelf.c:4059 +#: src/readelf.c:4084 #, c-format msgid "%zu byte block:" msgstr "%zu bajtowy blok:" -#: src/readelf.c:4456 +#: src/readelf.c:4481 #, c-format msgid "%*s[%4] %s \n" msgstr "%*s[%4] %s \n" -#: src/readelf.c:4513 +#: src/readelf.c:4538 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# zostało użyte z różnymi rozmiarami adresu" -#: src/readelf.c:4520 +#: src/readelf.c:4545 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# zostało użyte z różnymi rozmiarami offsetu" -#: src/readelf.c:4527 +#: src/readelf.c:4552 #, c-format msgid "%s %# used with different base addresses" msgstr "%s %# zostało użyte z różnymi adresami podstawowymi" -#: src/readelf.c:4616 +#: src/readelf.c:4641 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:4624 +#: src/readelf.c:4649 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] … % bajtów…\n" -#: src/readelf.c:4650 +#: src/readelf.c:4675 #, c-format msgid "" "\n" @@ -4869,7 +4874,7 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" " [ Kod]\n" -#: src/readelf.c:4658 +#: src/readelf.c:4683 #, c-format msgid "" "\n" @@ -4878,30 +4883,30 @@ msgstr "" "\n" "Sekcja skrótów pod offsetem %:\n" -#: src/readelf.c:4671 +#: src/readelf.c:4696 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** błąd podczas odczytywania skrótu: %s\n" -#: src/readelf.c:4687 +#: src/readelf.c:4712 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] offset: %, potomek: %s, znacznik: %s\n" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745 msgid "yes" msgstr "tak" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745 msgid "no" msgstr "nie" -#: src/readelf.c:4724 src/readelf.c:4797 +#: src/readelf.c:4749 src/readelf.c:4822 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "nie można uzyskać zawartości .debug_aranges: %s" -#: src/readelf.c:4739 +#: src/readelf.c:4764 #, c-format msgid "" "\n" @@ -4919,12 +4924,12 @@ msgstr[2] "" "\n" "Sekcja DWARF [%2zu] „%s” pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:4770 +#: src/readelf.c:4795 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:4772 +#: src/readelf.c:4797 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -4932,8 +4937,8 @@ msgstr "" " [%*zu] początek: %0#*, długość: %5, offset CU DIE: " "%6\n" -#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487 -#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728 +#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515 +#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819 #, c-format msgid "" "\n" @@ -4942,7 +4947,7 @@ msgstr "" "\n" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" -#: src/readelf.c:4815 src/readelf.c:6513 +#: src/readelf.c:4840 src/readelf.c:6541 #, c-format msgid "" "\n" @@ -4951,12 +4956,12 @@ msgstr "" "\n" "Tabela pod offsetem %zu:\n" -#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524 +#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "nieprawidłowe dane w sekcji [%zu] „%s”" -#: src/readelf.c:4835 +#: src/readelf.c:4860 #, c-format msgid "" "\n" @@ -4965,32 +4970,32 @@ msgstr "" "\n" " Długość: %6\n" -#: src/readelf.c:4847 +#: src/readelf.c:4872 #, c-format msgid " DWARF version: %6\n" msgstr " Wersja DWARF: %6\n" -#: src/readelf.c:4851 +#: src/readelf.c:4876 #, c-format msgid "unsupported aranges version" msgstr "nieobsługiwana wersja aranges" -#: src/readelf.c:4862 +#: src/readelf.c:4887 #, c-format msgid " CU offset: %6\n" msgstr " Offset CU: %6\n" -#: src/readelf.c:4868 +#: src/readelf.c:4893 #, c-format msgid " Address size: %6\n" msgstr " Offset adresu: %6\n" -#: src/readelf.c:4872 +#: src/readelf.c:4897 #, c-format msgid "unsupported address size" msgstr "nieobsługiwany rozmiar adresu" -#: src/readelf.c:4877 +#: src/readelf.c:4902 #, c-format msgid "" " Segment size: %6\n" @@ -4999,68 +5004,68 @@ msgstr "" " Rozmiar segmentu: %6\n" "\n" -#: src/readelf.c:4881 +#: src/readelf.c:4906 #, c-format msgid "unsupported segment size" msgstr "nieobsługiwany rozmiar segmentu" -#: src/readelf.c:4921 +#: src/readelf.c:4946 #, c-format msgid " %s..%s (%)\n" msgstr " %s..%s (%)\n" -#: src/readelf.c:4924 +#: src/readelf.c:4949 #, c-format msgid " %s..%s\n" msgstr " %s..%s\n" -#: src/readelf.c:4933 +#: src/readelf.c:4958 #, c-format msgid " %zu padding bytes\n" msgstr " bajty wypełnienia: %zu\n" -#: src/readelf.c:4951 +#: src/readelf.c:4976 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "nie można uzyskać zawartości .debug_ranges: %s" -#: src/readelf.c:4981 src/readelf.c:7046 +#: src/readelf.c:5006 src/readelf.c:7074 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:5003 src/readelf.c:7068 +#: src/readelf.c:5028 src/readelf.c:7096 #, c-format msgid " [%6tx] base address %s\n" msgstr " [%6tx] adres podstawowy %s\n" -#: src/readelf.c:5010 src/readelf.c:7075 +#: src/readelf.c:5035 src/readelf.c:7103 #, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] pusta lista\n" #. We have an address range entry. #. First address range entry in a list. -#: src/readelf.c:5021 +#: src/readelf.c:5046 #, c-format msgid " [%6tx] %s..%s\n" msgstr " [%6tx] %s…%s\n" -#: src/readelf.c:5023 +#: src/readelf.c:5048 #, c-format msgid " %s..%s\n" msgstr " %s…%s\n" -#: src/readelf.c:5259 +#: src/readelf.c:5284 msgid " \n" msgstr " \n" -#: src/readelf.c:5512 +#: src/readelf.c:5537 #, c-format msgid "cannot get ELF: %s" msgstr "nie można uzyskać ELF: %s" -#: src/readelf.c:5529 +#: src/readelf.c:5554 #, c-format msgid "" "\n" @@ -5069,7 +5074,7 @@ msgstr "" "\n" "Sekcja informacji o ramce wywołania [%2zu] „%s” pod offsetem %#:\n" -#: src/readelf.c:5579 +#: src/readelf.c:5604 #, c-format msgid "" "\n" @@ -5078,50 +5083,50 @@ msgstr "" "\n" " [%6tx] Zerowy koniec\n" -#: src/readelf.c:5672 src/readelf.c:5827 +#: src/readelf.c:5697 src/readelf.c:5852 #, c-format msgid "invalid augmentation length" msgstr "nieprawidłowa długość powiększenia" -#: src/readelf.c:5687 +#: src/readelf.c:5712 msgid "FDE address encoding: " msgstr "Kodowanie adresu FDE: " -#: src/readelf.c:5693 +#: src/readelf.c:5718 msgid "LSDA pointer encoding: " msgstr "Kodowanie wskaźnika LSDA: " -#: src/readelf.c:5804 +#: src/readelf.c:5829 #, c-format msgid " (offset: %#)" msgstr " (offset: %#)" -#: src/readelf.c:5811 +#: src/readelf.c:5836 #, c-format msgid " (end offset: %#)" msgstr " (kończący offset: %#)" -#: src/readelf.c:5848 +#: src/readelf.c:5873 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sWskaźnik LSDA: %#\n" -#: src/readelf.c:5903 +#: src/readelf.c:5928 #, c-format msgid "cannot get attribute code: %s" msgstr "nie można uzyskać kodu atrybutu: %s" -#: src/readelf.c:5912 +#: src/readelf.c:5937 #, c-format msgid "cannot get attribute form: %s" msgstr "nie można uzyskać formy atrybutu: %s" -#: src/readelf.c:5927 +#: src/readelf.c:5952 #, c-format msgid "cannot get attribute value: %s" msgstr "nie można uzyskać wartości atrybutu: %s" -#: src/readelf.c:6226 +#: src/readelf.c:6254 #, c-format msgid "" "\n" @@ -5132,7 +5137,7 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" " [Offset]\n" -#: src/readelf.c:6258 +#: src/readelf.c:6286 #, c-format msgid "" " Type unit at offset %:\n" @@ -5145,7 +5150,7 @@ msgstr "" "%, rozmiar offsetu: %\n" " Podpis typu: %#, offset typu: %#\n" -#: src/readelf.c:6267 +#: src/readelf.c:6295 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5156,33 +5161,33 @@ msgstr "" " Wersja: %, offset sekcji skrótów: %, rozmiar adresu: " "%, rozmiar offsetu: %\n" -#: src/readelf.c:6292 +#: src/readelf.c:6320 #, c-format msgid "cannot get DIE at offset % in section '%s': %s" msgstr "nie można uzyskać DIE pod offsetem % w sekcji „%s”: %s" -#: src/readelf.c:6306 +#: src/readelf.c:6334 #, c-format msgid "cannot get DIE offset: %s" msgstr "nie można uzyskać offsetu DIE: %s" -#: src/readelf.c:6315 +#: src/readelf.c:6343 #, c-format msgid "cannot get tag of DIE at offset % in section '%s': %s" msgstr "" "nie można uzyskać znacznika DIE pod offsetem % w sekcji „%s”: %s" -#: src/readelf.c:6347 +#: src/readelf.c:6375 #, c-format msgid "cannot get next DIE: %s\n" msgstr "nie można uzyskać następnego DIE: %s\n" -#: src/readelf.c:6355 +#: src/readelf.c:6383 #, c-format msgid "cannot get next DIE: %s" msgstr "nie można uzyskać następnego DIE: %s" -#: src/readelf.c:6391 +#: src/readelf.c:6419 #, c-format msgid "" "\n" @@ -5193,13 +5198,13 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" "\n" -#: src/readelf.c:6500 +#: src/readelf.c:6528 #, c-format msgid "cannot get line data section data: %s" msgstr "nie można uzyskać danych sekcji danych wiersza: %s" #. Print what we got so far. -#: src/readelf.c:6570 +#: src/readelf.c:6598 #, c-format msgid "" "\n" @@ -5228,12 +5233,12 @@ msgstr "" "\n" "Instrukcje:\n" -#: src/readelf.c:6591 +#: src/readelf.c:6619 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "nieprawidłowe dane pod offsetem %tu w sekcji [%zu] „%s”" -#: src/readelf.c:6606 +#: src/readelf.c:6634 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" @@ -5241,7 +5246,7 @@ msgstr[0] " [%*] %hhu parametr\n" msgstr[1] " [%*] %hhu parametry\n" msgstr[2] " [%*] %hhu parametrów\n" -#: src/readelf.c:6614 +#: src/readelf.c:6642 msgid "" "\n" "Directory table:" @@ -5249,7 +5254,7 @@ msgstr "" "\n" "Tabela katalogu:" -#: src/readelf.c:6630 +#: src/readelf.c:6658 msgid "" "\n" "File name table:\n" @@ -5259,7 +5264,7 @@ msgstr "" "Tabela nazw plików:\n" " Wpis Kat Czas Rozmiar Nazwa" -#: src/readelf.c:6665 +#: src/readelf.c:6693 msgid "" "\n" "Line number statements:" @@ -5267,119 +5272,119 @@ msgstr "" "\n" "Instrukcje numerów wierszy:" -#: src/readelf.c:6716 +#: src/readelf.c:6744 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "nieprawidłowe maksimum operacji na instrukcję wynosi zero" -#: src/readelf.c:6752 +#: src/readelf.c:6780 #, c-format msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n" msgstr "" " instrukcja specjalna %u: adres+%u = %s, op_index = %u, wiersz%+d = %zu\n" -#: src/readelf.c:6757 +#: src/readelf.c:6785 #, c-format msgid " special opcode %u: address+%u = %s, line%+d = %zu\n" msgstr " instrukcja specjalna %u: adres+%u = %s, wiersz%+d = %zu\n" -#: src/readelf.c:6777 +#: src/readelf.c:6805 #, c-format msgid " extended opcode %u: " msgstr " instrukcja rozszerzona %u: " -#: src/readelf.c:6782 +#: src/readelf.c:6810 msgid " end of sequence" msgstr " koniec sekwencji" -#: src/readelf.c:6801 +#: src/readelf.c:6829 #, c-format msgid " set address to %s\n" msgstr " ustawienie adresu na %s\n" -#: src/readelf.c:6828 +#: src/readelf.c:6856 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" " definicja nowego pliku: dir=%u, mtime=%, długość=%, nazwa=" "%s\n" -#: src/readelf.c:6841 +#: src/readelf.c:6869 #, c-format msgid " set discriminator to %u\n" msgstr " ustawienie dyskryminatora na %u\n" #. Unknown, ignore it. -#: src/readelf.c:6846 +#: src/readelf.c:6874 msgid " unknown opcode" msgstr " nieznana instrukcja" #. Takes no argument. -#: src/readelf.c:6858 +#: src/readelf.c:6886 msgid " copy" msgstr " kopiowanie" -#: src/readelf.c:6869 +#: src/readelf.c:6897 #, c-format msgid " advance address by %u to %s, op_index to %u\n" msgstr " zwiększenie adresu o %u do %s, op_index do %u\n" -#: src/readelf.c:6873 +#: src/readelf.c:6901 #, c-format msgid " advance address by %u to %s\n" msgstr " zwiększenie adresu o %u do %s\n" -#: src/readelf.c:6884 +#: src/readelf.c:6912 #, c-format msgid " advance line by constant %d to %\n" msgstr " zwiększenie wiersza o stałą %d do %\n" -#: src/readelf.c:6892 +#: src/readelf.c:6920 #, c-format msgid " set file to %\n" msgstr " ustawienie pliku na %\n" -#: src/readelf.c:6902 +#: src/readelf.c:6930 #, c-format msgid " set column to %\n" msgstr " ustawienie kolumny na %\n" -#: src/readelf.c:6909 +#: src/readelf.c:6937 #, c-format msgid " set '%s' to %\n" msgstr " ustawienie „%s” na %\n" #. Takes no argument. -#: src/readelf.c:6915 +#: src/readelf.c:6943 msgid " set basic block flag" msgstr " ustawienie podstawowej flagi bloku" -#: src/readelf.c:6928 +#: src/readelf.c:6956 #, c-format msgid " advance address by constant %u to %s, op_index to %u\n" msgstr " zwiększenie adresu o stałą %u do %s, op_index do %u\n" -#: src/readelf.c:6932 +#: src/readelf.c:6960 #, c-format msgid " advance address by constant %u to %s\n" msgstr " zwiększenie adresu o stałą %u do %s\n" -#: src/readelf.c:6950 +#: src/readelf.c:6978 #, c-format msgid " advance address by fixed value %u to %s\n" msgstr " zwiększenie adresu o stałą wartość %u do %s\n" #. Takes no argument. -#: src/readelf.c:6959 +#: src/readelf.c:6987 msgid " set prologue end flag" msgstr " ustawienie flagi końca prologu" #. Takes no argument. -#: src/readelf.c:6964 +#: src/readelf.c:6992 msgid " set epilogue begin flag" msgstr " ustawienie flagi początku epilogu" -#: src/readelf.c:6973 +#: src/readelf.c:7001 #, c-format msgid " set isa to %u\n" msgstr " ustawienie isa na %u\n" @@ -5387,7 +5392,7 @@ msgstr " ustawienie isa na %u\n" #. This is a new opcode the generator but not we know about. #. Read the parameters associated with it but then discard #. everything. Read all the parameters for this opcode. -#: src/readelf.c:6982 +#: src/readelf.c:7010 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" @@ -5395,102 +5400,102 @@ msgstr[0] " nieznana instrukcja z % parametrem:" msgstr[1] " nieznana instrukcja z % parametrami:" msgstr[2] " nieznana instrukcja z % parametrami:" -#: src/readelf.c:7014 +#: src/readelf.c:7042 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "nie można uzyskać zawartości .debug_log: %s" #. First entry in a list. -#: src/readelf.c:7089 +#: src/readelf.c:7117 #, c-format msgid " [%6tx] %s..%s" msgstr " [%6tx] %s…%s" -#: src/readelf.c:7091 +#: src/readelf.c:7119 #, c-format msgid " %s..%s" msgstr " %s…%s" -#: src/readelf.c:7098 src/readelf.c:7986 +#: src/readelf.c:7126 src/readelf.c:8077 msgid " \n" msgstr " \n" -#: src/readelf.c:7150 src/readelf.c:7312 +#: src/readelf.c:7178 src/readelf.c:7340 #, c-format msgid "cannot get macro information section data: %s" msgstr "nie można uzyskać danych sekcji informacji o makrach: %s" -#: src/readelf.c:7230 +#: src/readelf.c:7258 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** niezakończony ciąg na końcu sekcji" -#: src/readelf.c:7253 +#: src/readelf.c:7281 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** brak parametru DW_MACINFO_start_file na końcu sekcji" -#: src/readelf.c:7353 +#: src/readelf.c:7381 #, c-format msgid " Offset: 0x%\n" msgstr " Offset: 0x%\n" -#: src/readelf.c:7365 +#: src/readelf.c:7393 #, c-format msgid " Version: %\n" msgstr " Wersja: %\n" -#: src/readelf.c:7371 src/readelf.c:8105 +#: src/readelf.c:7399 src/readelf.c:8196 #, c-format msgid " unknown version, cannot parse section\n" msgstr " nieznana wersja, nie można przetworzyć sekcji\n" -#: src/readelf.c:7378 +#: src/readelf.c:7406 #, c-format msgid " Flag: 0x%\n" msgstr " Flaga: 0x%\n" -#: src/readelf.c:7381 +#: src/readelf.c:7409 #, c-format msgid " Offset length: %\n" msgstr " Długość offsetu: %\n" -#: src/readelf.c:7389 +#: src/readelf.c:7417 #, c-format msgid " .debug_line offset: 0x%\n" msgstr " Offset .debug_line: 0x%\n" -#: src/readelf.c:7402 +#: src/readelf.c:7430 #, c-format msgid " extension opcode table, % items:\n" msgstr " tabela instrukcji rozszerzenia, % elementów:\n" -#: src/readelf.c:7409 +#: src/readelf.c:7437 #, c-format msgid " [%]" msgstr " [%]" -#: src/readelf.c:7421 +#: src/readelf.c:7449 #, c-format msgid " % arguments:" msgstr " Parametry %:" -#: src/readelf.c:7449 +#: src/readelf.c:7477 #, c-format msgid " no arguments." msgstr " brak parametrów." -#: src/readelf.c:7686 +#: src/readelf.c:7777 #, c-format msgid "vendor opcode not verified?" msgstr "instrukcja producenta nie została sprawdzona?" -#: src/readelf.c:7714 +#: src/readelf.c:7805 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr " [%5d] offset DIE: %6, offset CU DIE: %6, nazwa: %s\n" -#: src/readelf.c:7755 +#: src/readelf.c:7846 #, c-format msgid "" "\n" @@ -5501,12 +5506,12 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" " %*s Ciąg\n" -#: src/readelf.c:7769 +#: src/readelf.c:7860 #, c-format msgid " *** error while reading strings: %s\n" msgstr " *** błąd podczas odczytywania ciągów: %s\n" -#: src/readelf.c:7789 +#: src/readelf.c:7880 #, c-format msgid "" "\n" @@ -5515,7 +5520,7 @@ msgstr "" "\n" "Sekcja tabeli wyszukiwania ramki wywołania [%2zu] „.eh_frame_hdr”:\n" -#: src/readelf.c:7891 +#: src/readelf.c:7982 #, c-format msgid "" "\n" @@ -5524,22 +5529,22 @@ msgstr "" "\n" "Sekcja tabeli obsługiwania wyjątków [%2zu] „.gcc_except_table”:\n" -#: src/readelf.c:7914 +#: src/readelf.c:8005 #, c-format msgid " LPStart encoding: %#x " msgstr " Kodowanie LPStart: %#x " -#: src/readelf.c:7926 +#: src/readelf.c:8017 #, c-format msgid " TType encoding: %#x " msgstr " Kodowanie TType: %#x " -#: src/readelf.c:7941 +#: src/readelf.c:8032 #, c-format msgid " Call site encoding: %#x " msgstr " Kodowanie strony wywołania: %#x " -#: src/readelf.c:7954 +#: src/readelf.c:8045 msgid "" "\n" " Call site table:" @@ -5547,7 +5552,7 @@ msgstr "" "\n" " Tabela strony wywołania:" -#: src/readelf.c:7968 +#: src/readelf.c:8059 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5560,12 +5565,12 @@ msgstr "" " Lądowisko: %#\n" " Działanie: %u\n" -#: src/readelf.c:8041 +#: src/readelf.c:8132 #, c-format msgid "invalid TType encoding" msgstr "nieprawidłowe kodowanie TType" -#: src/readelf.c:8067 +#: src/readelf.c:8158 #, c-format msgid "" "\n" @@ -5574,37 +5579,37 @@ msgstr "" "\n" "Sekcja GDB [%2zu] „%s” pod offsetem %# zawiera % bajtów:\n" -#: src/readelf.c:8096 +#: src/readelf.c:8187 #, c-format msgid " Version: %\n" msgstr " Wersja: %\n" -#: src/readelf.c:8114 +#: src/readelf.c:8205 #, c-format msgid " CU offset: %#\n" msgstr " offset CU: %#\n" -#: src/readelf.c:8121 +#: src/readelf.c:8212 #, c-format msgid " TU offset: %#\n" msgstr " offset TU: %#\n" -#: src/readelf.c:8128 +#: src/readelf.c:8219 #, c-format msgid " address offset: %#\n" msgstr " offset adresu: %#\n" -#: src/readelf.c:8135 +#: src/readelf.c:8226 #, c-format msgid " symbol offset: %#\n" msgstr " offset symbolu: %#\n" -#: src/readelf.c:8142 +#: src/readelf.c:8233 #, c-format msgid " constant offset: %#\n" msgstr " offset stałej: %#\n" -#: src/readelf.c:8156 +#: src/readelf.c:8247 #, c-format msgid "" "\n" @@ -5613,7 +5618,7 @@ msgstr "" "\n" " Lista CU pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:8181 +#: src/readelf.c:8272 #, c-format msgid "" "\n" @@ -5622,7 +5627,7 @@ msgstr "" "\n" " Lista TU pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:8210 +#: src/readelf.c:8301 #, c-format msgid "" "\n" @@ -5631,7 +5636,7 @@ msgstr "" "\n" " Lista adresów pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:8243 +#: src/readelf.c:8334 #, c-format msgid "" "\n" @@ -5640,17 +5645,17 @@ msgstr "" "\n" " Tabela symboli pod offsetem %# zawiera %zu gniazd:\n" -#: src/readelf.c:8330 +#: src/readelf.c:8421 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s" -#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277 +#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368 #, c-format msgid "cannot convert core note data: %s" msgstr "nie można konwertować danych notatki core: %s" -#: src/readelf.c:8849 +#: src/readelf.c:8940 #, c-format msgid "" "\n" @@ -5659,21 +5664,21 @@ msgstr "" "\n" "%*s… …" -#: src/readelf.c:9356 +#: src/readelf.c:9447 msgid " Owner Data size Type\n" msgstr " Właściciel Rozmiar danych Typ\n" -#: src/readelf.c:9374 +#: src/readelf.c:9465 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:9424 +#: src/readelf.c:9515 #, c-format msgid "cannot get content of note section: %s" msgstr "nie można uzyskać zawartości sekcji notatki: %s" -#: src/readelf.c:9451 +#: src/readelf.c:9542 #, c-format msgid "" "\n" @@ -5683,7 +5688,7 @@ msgstr "" "Segment notatki [%2zu] „%s” o długości % bajtów pod offsetem " "%#0:\n" -#: src/readelf.c:9474 +#: src/readelf.c:9565 #, c-format msgid "" "\n" @@ -5692,7 +5697,7 @@ msgstr "" "\n" "Segment notatki o długości % bajtów pod offsetem %#0:\n" -#: src/readelf.c:9520 +#: src/readelf.c:9611 #, c-format msgid "" "\n" @@ -5701,12 +5706,12 @@ msgstr "" "\n" "Sekcja [%zu] „%s” nie ma danych do zrzucenia.\n" -#: src/readelf.c:9547 src/readelf.c:9598 +#: src/readelf.c:9638 src/readelf.c:9689 #, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "nie można uzyskać danych dla sekcji [%zu] „%s”: %s" -#: src/readelf.c:9552 +#: src/readelf.c:9643 #, c-format msgid "" "\n" @@ -5716,7 +5721,7 @@ msgstr "" "Segment zrzutu szesnastkowego [%zu] „%s”, % bajtów pod offsetem " "%#0:\n" -#: src/readelf.c:9557 +#: src/readelf.c:9648 #, c-format msgid "" "\n" @@ -5727,7 +5732,7 @@ msgstr "" "Zrzut szesnastkowy sekcji [%zu] „%s”, % bajtów (%zd " "nieskompresowanych) pod offsetem %#0:\n" -#: src/readelf.c:9571 +#: src/readelf.c:9662 #, c-format msgid "" "\n" @@ -5736,7 +5741,7 @@ msgstr "" "\n" "Sekcja [%zu] „%s” nie ma ciągów do zrzucenia.\n" -#: src/readelf.c:9603 +#: src/readelf.c:9694 #, c-format msgid "" "\n" @@ -5745,7 +5750,7 @@ msgstr "" "\n" "Sekcja ciągów [%zu] „%s” zawiera % bajtów pod offsetem %#0:\n" -#: src/readelf.c:9608 +#: src/readelf.c:9699 #, c-format msgid "" "\n" @@ -5756,7 +5761,7 @@ msgstr "" "Sekcja ciągów [%zu] „%s” zawiera % bajtów (%zd nieskompresowanych) " "pod offsetem %#0:\n" -#: src/readelf.c:9657 +#: src/readelf.c:9748 #, c-format msgid "" "\n" @@ -5765,7 +5770,7 @@ msgstr "" "\n" "sekcja [%lu] nie istnieje" -#: src/readelf.c:9686 +#: src/readelf.c:9777 #, c-format msgid "" "\n" @@ -5774,12 +5779,12 @@ msgstr "" "\n" "sekcja „%s” nie istnieje" -#: src/readelf.c:9743 +#: src/readelf.c:9834 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "nie można uzyskać indeksu symboli archiwum „%s”: %s" -#: src/readelf.c:9746 +#: src/readelf.c:9837 #, c-format msgid "" "\n" @@ -5788,7 +5793,7 @@ msgstr "" "\n" "Archiwum „%s” nie ma indeksu symboli\n" -#: src/readelf.c:9750 +#: src/readelf.c:9841 #, c-format msgid "" "\n" @@ -5797,12 +5802,12 @@ msgstr "" "\n" "Indeks archiwum „%s” ma %zu wpisów:\n" -#: src/readelf.c:9768 +#: src/readelf.c:9859 #, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "nie można wydobyć elementów pod offsetem %zu w „%s”: %s" -#: src/readelf.c:9773 +#: src/readelf.c:9864 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Element archiwum „%s” zawiera:\n" @@ -6075,31 +6080,31 @@ msgstr "mprotect się nie powiodło" msgid "Skipping section %zd '%s' data outside file" msgstr "Pomijanie sekcji %zd „%s” dane poza plikiem" -#: src/strip.c:69 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "Umieszcza okrojone wyjście w PLIKU" -#: src/strip.c:70 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "Wydobywa usunięte sekcje do PLIKU" -#: src/strip.c:71 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "Osadza nazwę PLIKU zamiast parametru -f" -#: src/strip.c:75 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "Usuwa wszystkie symbole debugowania" -#: src/strip.c:79 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "Usuwa nagłówki sekcji (niezalecane)" -#: src/strip.c:81 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "Kopiuje czasy modyfikacji/dostępu do wyjścia" -#: src/strip.c:83 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " @@ -6109,51 +6114,63 @@ msgstr "" "usunięte sekcje zostały umieszczone w pliku debugowania (ma znaczenie tylko " "dla plików ET_REL, działanie jest nieodwracalne, wymaga użycia opcji -f)" -#: src/strip.c:85 +#: src/strip.c:87 msgid "Remove .comment section" msgstr "Usuwa sekcję .comment" +#: src/strip.c:88 +msgid "" +"Remove the named section. SECTION is an extended wildcard pattern. May be " +"given more than once. Only non-allocated sections can be removed." +msgstr "" + +#: src/strip.c:89 +msgid "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." +msgstr "" + #. Short description of program. -#: src/strip.c:93 +#: src/strip.c:96 msgid "Discard symbols from object files." msgstr "Odrzuca symbole z plików obiektów." -#: src/strip.c:187 +#: src/strip.c:242 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "Użyto --reloc-debug-sections bez opcji -f" -#: src/strip.c:201 +#: src/strip.c:256 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "Tylko jeden plik wejściowy jest dozwolony z „-o” i „-f”" -#: src/strip.c:223 +#: src/strip.c:279 #, c-format msgid "-f option specified twice" msgstr "Opcję -f podano dwukrotnie" -#: src/strip.c:232 +#: src/strip.c:288 #, c-format msgid "-F option specified twice" msgstr "Opcję -F podano dwukrotnie" -#: src/strip.c:265 -#, c-format -msgid "-R option supports only .comment section" -msgstr "Opcja -R obsługuje tylko sekcję .comment" +#: src/strip.c:347 +#, fuzzy, c-format +msgid "cannot both keep and remove .comment section" +msgstr "Usuwa sekcję .comment" -#: src/strip.c:307 src/strip.c:331 +#: src/strip.c:372 src/strip.c:396 #, c-format msgid "cannot stat input file '%s'" msgstr "nie można wykonać stat na pliku wejściowym „%s”" -#: src/strip.c:321 +#: src/strip.c:386 #, c-format msgid "while opening '%s'" msgstr "podczas otwierania „%s”" -#: src/strip.c:359 +#: src/strip.c:424 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "%s: nie można używać -o lub -f podczas okrajania archiwum" @@ -6164,107 +6181,117 @@ msgstr "%s: nie można używać -o lub -f podczas okrajania archiwum" #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:371 +#: src/strip.c:436 #, c-format msgid "%s: no support for stripping archive" msgstr "%s: brak obsługi okrajania archiwum" -#: src/strip.c:470 +#: src/strip.c:535 #, c-format msgid "cannot open EBL backend" msgstr "nie można otworzyć zaplecza EBL" -#: src/strip.c:515 +#: src/strip.c:580 #, c-format msgid "cannot get number of phdrs" msgstr "nie można uzyskać liczby phdr" -#: src/strip.c:531 src/strip.c:555 +#: src/strip.c:596 src/strip.c:620 #, c-format msgid "cannot create new file '%s': %s" msgstr "nie można utworzyć nowego pliku „%s”: %s" -#: src/strip.c:621 +#: src/strip.c:686 #, c-format msgid "illformed file '%s'" msgstr "plik „%s” ma błędny format" -#: src/strip.c:955 src/strip.c:1054 +#: src/strip.c:696 +#, fuzzy, c-format +msgid "Cannot remove allocated section '%s'" +msgstr "nie można przydzielić danych sekcji: %s" + +#: src/strip.c:705 +#, fuzzy, c-format +msgid "Cannot both keep and remove section '%s'" +msgstr "nie można dodać nowej sekcji: %s" + +#: src/strip.c:1061 src/strip.c:1160 #, c-format msgid "while generating output file: %s" msgstr "podczas tworzenia pliku wyjściowego: %s" -#: src/strip.c:1020 src/strip.c:2090 +#: src/strip.c:1126 src/strip.c:2208 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s" -#: src/strip.c:1037 +#: src/strip.c:1143 #, c-format msgid "while preparing output for '%s'" msgstr "podczas przygotowywania wyjścia dla „%s”" -#: src/strip.c:1095 src/strip.c:1158 +#: src/strip.c:1205 src/strip.c:1268 #, c-format msgid "while create section header section: %s" msgstr "podczas tworzenia sekcji nagłówka sekcji: %s" -#: src/strip.c:1104 +#: src/strip.c:1214 #, c-format msgid "cannot allocate section data: %s" msgstr "nie można przydzielić danych sekcji: %s" -#: src/strip.c:1170 +#: src/strip.c:1280 #, c-format msgid "while create section header string table: %s" msgstr "podczas tworzenia tabeli ciągów nagłówka sekcji: %s" -#: src/strip.c:1177 +#: src/strip.c:1287 #, c-format msgid "no memory to create section header string table" msgstr "brak pamięci do utworzenia tabeli ciągów nagłówka sekcji" -#: src/strip.c:1384 +#: src/strip.c:1497 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "Nie można usunąć symbolu [%zd] z przydzielonej tabeli symboli [%zd]" -#: src/strip.c:1876 +#: src/strip.c:1994 #, c-format msgid "bad relocation" msgstr "błędna relokacja" -#: src/strip.c:2001 src/strip.c:2114 +#: src/strip.c:2119 src/strip.c:2232 #, c-format msgid "while writing '%s': %s" msgstr "podczas zapisywania „%s”: %s" -#: src/strip.c:2012 +#: src/strip.c:2130 #, c-format msgid "while creating '%s'" msgstr "podczas tworzenia „%s”" -#: src/strip.c:2035 +#: src/strip.c:2153 #, c-format msgid "while computing checksum for debug information" msgstr "podczas obliczania sumy kontrolnej dla informacji debugowania" -#: src/strip.c:2099 +#: src/strip.c:2217 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: błąd podczas odczytywania pliku: %s" -#: src/strip.c:2139 src/strip.c:2159 +#: src/strip.c:2257 src/strip.c:2277 #, c-format msgid "while writing '%s'" msgstr "podczas zapisywania „%s”" -#: src/strip.c:2196 src/strip.c:2203 +#: src/strip.c:2314 src/strip.c:2321 #, c-format msgid "error while finishing '%s': %s" msgstr "błąd podczas kończenia „%s”: %s" -#: src/strip.c:2220 src/strip.c:2292 +#: src/strip.c:2338 src/strip.c:2414 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "nie można ustawić czasu dostępu i modyfikacji „%s”" @@ -6672,3 +6699,6 @@ msgstr "Dodatkowo wyświetla nazwy funkcji" #: tests/dwflmodtest.c:214 msgid "Show instances of inlined functions" msgstr "Wyświetla wystąpienia wstawionych funkcji" + +#~ msgid "-R option supports only .comment section" +#~ msgstr "Opcja -R obsługuje tylko sekcję .comment" diff --git a/po/uk.po b/po/uk.po index 88e87e18..032cd3da 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2017-05-05 09:44+0200\n" +"POT-Creation-Date: 2017-08-02 18:29+0200\n" "PO-Revision-Date: 2015-09-26 16:41+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -59,7 +59,7 @@ msgstr "" "гарантій, зокрема гарантій працездатності або придатності для певної мети.\n" #: lib/xmalloc.c:53 lib/xmalloc.c:66 lib/xmalloc.c:78 src/readelf.c:3296 -#: src/readelf.c:3687 src/readelf.c:8435 src/unstrip.c:2227 src/unstrip.c:2432 +#: src/readelf.c:3687 src/readelf.c:8526 src/unstrip.c:2227 src/unstrip.c:2432 #, c-format msgid "memory exhausted" msgstr "пам’ять вичерпано" @@ -259,6 +259,11 @@ msgstr "некоректний код операції" msgid "not a CU (unit) DIE" msgstr "не є DIE CU (модуля)" +#: libdw/dwarf_error.c:98 +#, fuzzy +msgid "unknown language code" +msgstr " невідомий код операції" + #: libdwfl/argp-std.c:50 src/stack.c:636 src/unstrip.c:2374 msgid "Input selection options:" msgstr "Вибір параметрів виведення даних:" @@ -295,35 +300,35 @@ msgstr "Ядро з усіма модулями" msgid "Search path for separate debuginfo files" msgstr "Шукати у вказаному каталозі окремі файли debuginfo" -#: libdwfl/argp-std.c:161 +#: libdwfl/argp-std.c:164 msgid "only one of -e, -p, -k, -K, or --core allowed" msgstr "" "можна використовувати лише один за параметрів: -e, -p, -k, -K або --core" -#: libdwfl/argp-std.c:234 +#: libdwfl/argp-std.c:237 msgid "cannot load kernel symbols" msgstr "не вдалося завантажити символи ядра" #. Non-fatal to have no modules since we do have the kernel. -#: libdwfl/argp-std.c:238 +#: libdwfl/argp-std.c:241 msgid "cannot find kernel modules" msgstr "не вдалося виявити модулі ядра" -#: libdwfl/argp-std.c:255 +#: libdwfl/argp-std.c:258 msgid "cannot find kernel or modules" msgstr "не вдалося виявити ядро або модулі" -#: libdwfl/argp-std.c:294 +#: libdwfl/argp-std.c:297 #, c-format msgid "cannot read ELF core file: %s" msgstr "не вдалося прочитати файл core ELF: %s" -#: libdwfl/argp-std.c:317 +#: libdwfl/argp-std.c:320 #, fuzzy msgid "Not enough memory" msgstr "нестача пам'яті" -#: libdwfl/argp-std.c:327 +#: libdwfl/argp-std.c:330 msgid "No modules recognized in core file" msgstr "Не вдалося виявити модулі у файлі core" @@ -483,7 +488,7 @@ msgstr "Не є файлом ET_CORE ELF" msgid "No backend" msgstr "Немає сервера" -#: libebl/eblcorenotetypename.c:99 libebl/eblobjnotetypename.c:76 +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:76 #: libebl/eblobjnotetypename.c:83 libebl/eblobjnotetypename.c:102 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 #: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79 @@ -580,7 +585,7 @@ msgstr "некоректна розмірність вхідного парам msgid "invalid size of destination operand" msgstr "некоректна розмірність вихідного параметра" -#: libelf/elf_error.c:87 src/readelf.c:5114 +#: libelf/elf_error.c:87 src/readelf.c:5139 #, c-format msgid "invalid encoding" msgstr "некоректне кодування" @@ -661,8 +666,8 @@ msgstr "невідповідність полів data/scn" msgid "invalid section header" msgstr "некоректний заголовок розділу" -#: libelf/elf_error.c:187 src/readelf.c:7361 src/readelf.c:7809 -#: src/readelf.c:7910 src/readelf.c:8091 +#: libelf/elf_error.c:187 src/readelf.c:7389 src/readelf.c:7900 +#: src/readelf.c:8001 src/readelf.c:8182 #, c-format msgid "invalid data" msgstr "некоректні дані" @@ -1294,7 +1299,7 @@ msgid "Invalid value '%s' for --gaps parameter." msgstr "Некоректне значення «%s» параметра --gaps." #: src/elfcmp.c:719 src/findtextrel.c:206 src/nm.c:365 src/ranlib.c:142 -#: src/size.c:273 src/strings.c:186 src/strip.c:453 src/strip.c:490 +#: src/size.c:273 src/strings.c:186 src/strip.c:518 src/strip.c:555 #: src/unstrip.c:2023 src/unstrip.c:2052 #, c-format msgid "cannot open '%s'" @@ -1325,7 +1330,7 @@ msgstr "не вдалося отримати вміст розділу %zu: %s" msgid "cannot get relocation: %s" msgstr "не вдалося отримати пересування: %s" -#: src/elfcompress.c:115 src/strip.c:241 src/unstrip.c:121 +#: src/elfcompress.c:115 src/strip.c:297 src/unstrip.c:121 #, c-format msgid "-o option specified twice" msgstr "параметр -o вказано двічі" @@ -1378,7 +1383,7 @@ msgstr "" msgid "Force compression of section even if it would become larger" msgstr "" -#: src/elfcompress.c:1282 src/strip.c:88 +#: src/elfcompress.c:1282 src/strip.c:91 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "" "Знехтувати декількома правилами для обробки трохи пошкоджених файлів ELF" @@ -3425,7 +3430,7 @@ msgstr "Шукає джерело пересуваного тексту у ФА #. Strings for arguments in help texts. #: src/findtextrel.c:75 src/nm.c:109 src/objdump.c:72 src/size.c:81 -#: src/strings.c:88 src/strip.c:96 +#: src/strings.c:88 src/strip.c:99 msgid "[FILE...]" msgstr "[ФАЙЛ...]" @@ -3518,7 +3523,7 @@ msgstr "" "пересування призводить до зміни запису пам’яті за зміщенням %llu у " "захищеному від запису сегменті\n" -#: src/nm.c:67 src/strip.c:68 +#: src/nm.c:67 src/strip.c:70 msgid "Output selection:" msgstr "Вибір виводу:" @@ -3582,7 +3587,7 @@ msgstr "Позначати спеціальні символи" msgid "Print size of defined symbols" msgstr "Вивести розмір визначених символів" -#: src/nm.c:92 src/size.c:69 src/strip.c:73 src/unstrip.c:73 +#: src/nm.c:92 src/size.c:69 src/strip.c:75 src/unstrip.c:73 msgid "Output options:" msgstr "Параметри виводу:" @@ -3611,18 +3616,18 @@ msgstr "Показати список символів з ФАЙЛів (типо msgid "Output formatting" msgstr "Форматування виводу" -#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:128 +#: src/nm.c:141 src/objdump.c:104 src/size.c:106 src/strip.c:131 #, c-format msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: ВНУТРІШНЯ ПОМИЛКА %d (%s): %s" #: src/nm.c:382 src/nm.c:394 src/size.c:289 src/size.c:298 src/size.c:309 -#: src/strip.c:2299 +#: src/strip.c:2421 #, c-format msgid "while closing '%s'" msgstr "під час закриття «%s»" -#: src/nm.c:404 src/objdump.c:281 src/strip.c:378 +#: src/nm.c:404 src/objdump.c:281 src/strip.c:443 #, c-format msgid "%s: File format not recognized" msgstr "%s: не вдалося розпізнати формат файла" @@ -3665,9 +3670,9 @@ msgstr "не вдалося створити дерево пошуку" #: src/readelf.c:1115 src/readelf.c:1315 src/readelf.c:1463 src/readelf.c:1664 #: src/readelf.c:1870 src/readelf.c:2060 src/readelf.c:2238 src/readelf.c:2314 #: src/readelf.c:2572 src/readelf.c:2648 src/readelf.c:2735 src/readelf.c:3315 -#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8339 src/readelf.c:9439 -#: src/readelf.c:9642 src/readelf.c:9710 src/size.c:397 src/size.c:466 -#: src/strip.c:507 +#: src/readelf.c:3365 src/readelf.c:3428 src/readelf.c:8430 src/readelf.c:9530 +#: src/readelf.c:9733 src/readelf.c:9801 src/size.c:397 src/size.c:466 +#: src/strip.c:572 #, c-format msgid "cannot get section header string table index" msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків" @@ -3948,7 +3953,7 @@ msgstr "Невідомий діагностичний розділ DWARF «%s». msgid "cannot generate Elf descriptor: %s" msgstr "не вдалося створити дескриптор Elf: %s" -#: src/readelf.c:528 src/readelf.c:844 src/strip.c:576 +#: src/readelf.c:528 src/readelf.c:844 src/strip.c:641 #, c-format msgid "cannot determine number of sections: %s" msgstr "не вдалося визначити кількість розділів: %s" @@ -3958,7 +3963,7 @@ msgstr "не вдалося визначити кількість розділі msgid "cannot get section: %s" msgstr "не вдалося отримати розділ: %s" -#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9662 +#: src/readelf.c:555 src/readelf.c:1144 src/readelf.c:1347 src/readelf.c:9753 #: src/unstrip.c:375 src/unstrip.c:406 src/unstrip.c:455 src/unstrip.c:565 #: src/unstrip.c:582 src/unstrip.c:619 src/unstrip.c:817 src/unstrip.c:1109 #: src/unstrip.c:1301 src/unstrip.c:1362 src/unstrip.c:1535 src/unstrip.c:1650 @@ -3972,8 +3977,8 @@ msgstr "не вдалося отримати заголовок розділу: msgid "cannot get section name" msgstr "не вдалося отримати назву розділу" -#: src/readelf.c:572 src/readelf.c:5523 src/readelf.c:7797 src/readelf.c:7899 -#: src/readelf.c:8076 +#: src/readelf.c:572 src/readelf.c:5548 src/readelf.c:7888 src/readelf.c:7990 +#: src/readelf.c:8167 #, c-format msgid "cannot get %s content: %s" msgstr "не вдалося отримати дані %s: %s" @@ -4344,8 +4349,8 @@ msgstr "<НЕКОРЕКТНИЙ СИМВОЛ>" msgid "" msgstr "<НЕКОРЕКТНИЙ РОЗДІЛ>" -#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9533 -#: src/readelf.c:9540 src/readelf.c:9584 src/readelf.c:9591 +#: src/readelf.c:1521 src/readelf.c:2248 src/readelf.c:3331 src/readelf.c:9624 +#: src/readelf.c:9631 src/readelf.c:9675 src/readelf.c:9682 msgid "Couldn't uncompress section" msgstr "" @@ -4355,7 +4360,7 @@ msgid "cannot get section [%zd] header: %s" msgstr "не вдалося отримати заголовок розділу: %s" #: src/readelf.c:1670 src/readelf.c:2320 src/readelf.c:2578 src/readelf.c:2654 -#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4734 +#: src/readelf.c:2958 src/readelf.c:3032 src/readelf.c:4759 #, c-format msgid "invalid sh_link value in section %zu" msgstr "некоректне значення sh_link у розділі %zu" @@ -4859,46 +4864,46 @@ msgstr "%s+%#" msgid "%s+%#0*" msgstr "%s+%#0*" -#: src/readelf.c:4056 +#: src/readelf.c:4081 msgid "empty block" msgstr "порожній блок" -#: src/readelf.c:4059 +#: src/readelf.c:4084 #, c-format msgid "%zu byte block:" msgstr "%zu-байтовий блок:" -#: src/readelf.c:4456 +#: src/readelf.c:4481 #, c-format msgid "%*s[%4] %s \n" msgstr "%*s[%4] %s <ОБРІЗАНО>\n" -#: src/readelf.c:4513 +#: src/readelf.c:4538 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# використано з різними розмірами адрес" -#: src/readelf.c:4520 +#: src/readelf.c:4545 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# використано з різними розмірами зміщень" -#: src/readelf.c:4527 +#: src/readelf.c:4552 #, c-format msgid "%s %# used with different base addresses" msgstr "%s %# використано з різними базовими адресами" -#: src/readelf.c:4616 +#: src/readelf.c:4641 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <НЕВИКОРИСТОВУВАНІ ДАНІ У РЕШТІ РОЗДІЛУ>\n" -#: src/readelf.c:4624 +#: src/readelf.c:4649 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] <НЕВИКОРИСТОВУВАНІ ДАНІ> ... % байтів ...\n" -#: src/readelf.c:4650 +#: src/readelf.c:4675 #, c-format msgid "" "\n" @@ -4909,7 +4914,7 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" " [ Код]\n" -#: src/readelf.c:4658 +#: src/readelf.c:4683 #, c-format msgid "" "\n" @@ -4918,30 +4923,30 @@ msgstr "" "\n" "Розділ скорочень за зміщенням %:\n" -#: src/readelf.c:4671 +#: src/readelf.c:4696 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** помилка під час читання скорочення: %s\n" -#: src/readelf.c:4687 +#: src/readelf.c:4712 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] зміщення: %, дочірній: %s, мітка: %s\n" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:6144 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:6172 src/readelf.c:7745 msgid "yes" msgstr "так" -#: src/readelf.c:4690 src/readelf.c:6136 src/readelf.c:7654 +#: src/readelf.c:4715 src/readelf.c:6164 src/readelf.c:7745 msgid "no" msgstr "ні" -#: src/readelf.c:4724 src/readelf.c:4797 +#: src/readelf.c:4749 src/readelf.c:4822 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "не вдалося отримати дані get .debug_aranges: %s" -#: src/readelf.c:4739 +#: src/readelf.c:4764 #, c-format msgid "" "\n" @@ -4959,12 +4964,12 @@ msgstr[2] "" "\n" "Розділ DWARF [%2zu] «%s» за зміщенням %# містить %zu записів:\n" -#: src/readelf.c:4770 +#: src/readelf.c:4795 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:4772 +#: src/readelf.c:4797 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -4972,8 +4977,8 @@ msgstr "" " [%*zu] початок: %0#*, довжина: %5, зміщення CU DIE: " "%6\n" -#: src/readelf.c:4802 src/readelf.c:4956 src/readelf.c:5533 src/readelf.c:6487 -#: src/readelf.c:7019 src/readelf.c:7139 src/readelf.c:7303 src/readelf.c:7728 +#: src/readelf.c:4827 src/readelf.c:4981 src/readelf.c:5558 src/readelf.c:6515 +#: src/readelf.c:7047 src/readelf.c:7167 src/readelf.c:7331 src/readelf.c:7819 #, c-format msgid "" "\n" @@ -4982,7 +4987,7 @@ msgstr "" "\n" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" -#: src/readelf.c:4815 src/readelf.c:6513 +#: src/readelf.c:4840 src/readelf.c:6541 #, c-format msgid "" "\n" @@ -4991,12 +4996,12 @@ msgstr "" "\n" "Таблиця за зміщенням %zu:\n" -#: src/readelf.c:4819 src/readelf.c:5557 src/readelf.c:6524 +#: src/readelf.c:4844 src/readelf.c:5582 src/readelf.c:6552 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "некоректні дані у розділі [%zu] «%s»" -#: src/readelf.c:4835 +#: src/readelf.c:4860 #, c-format msgid "" "\n" @@ -5005,32 +5010,32 @@ msgstr "" "\n" " Довжина: %6\n" -#: src/readelf.c:4847 +#: src/readelf.c:4872 #, c-format msgid " DWARF version: %6\n" msgstr " версія DWARF: %6\n" -#: src/readelf.c:4851 +#: src/readelf.c:4876 #, c-format msgid "unsupported aranges version" msgstr "непідтримувана версія aranges" -#: src/readelf.c:4862 +#: src/readelf.c:4887 #, c-format msgid " CU offset: %6\n" msgstr " зміщення CU: %6\n" -#: src/readelf.c:4868 +#: src/readelf.c:4893 #, c-format msgid " Address size: %6\n" msgstr " Розмір адреси: %6\n" -#: src/readelf.c:4872 +#: src/readelf.c:4897 #, c-format msgid "unsupported address size" msgstr "непідтримуваний розмір адреси" -#: src/readelf.c:4877 +#: src/readelf.c:4902 #, c-format msgid "" " Segment size: %6\n" @@ -5039,68 +5044,68 @@ msgstr "" " Розмір сегмента: %6\n" "\n" -#: src/readelf.c:4881 +#: src/readelf.c:4906 #, c-format msgid "unsupported segment size" msgstr "непідтримуваний розмір сегмента" -#: src/readelf.c:4921 +#: src/readelf.c:4946 #, c-format msgid " %s..%s (%)\n" msgstr " %s..%s (%)\n" -#: src/readelf.c:4924 +#: src/readelf.c:4949 #, c-format msgid " %s..%s\n" msgstr " %s..%s\n" -#: src/readelf.c:4933 +#: src/readelf.c:4958 #, c-format msgid " %zu padding bytes\n" msgstr " %zu байтів доповнення\n" -#: src/readelf.c:4951 +#: src/readelf.c:4976 #, c-format msgid "cannot get .debug_ranges content: %s" msgstr "не вдалося отримати дані .debug_ranges: %s" -#: src/readelf.c:4981 src/readelf.c:7046 +#: src/readelf.c:5006 src/readelf.c:7074 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:5003 src/readelf.c:7068 +#: src/readelf.c:5028 src/readelf.c:7096 #, c-format msgid " [%6tx] base address %s\n" msgstr " [%6tx] базова адреса %s\n" -#: src/readelf.c:5010 src/readelf.c:7075 +#: src/readelf.c:5035 src/readelf.c:7103 #, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] порожній список\n" #. We have an address range entry. #. First address range entry in a list. -#: src/readelf.c:5021 +#: src/readelf.c:5046 #, c-format msgid " [%6tx] %s..%s\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:5023 +#: src/readelf.c:5048 #, c-format msgid " %s..%s\n" msgstr " %s..%s\n" -#: src/readelf.c:5259 +#: src/readelf.c:5284 msgid " \n" msgstr " <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:5512 +#: src/readelf.c:5537 #, c-format msgid "cannot get ELF: %s" msgstr "не вдалося отримати ELF: %s" -#: src/readelf.c:5529 +#: src/readelf.c:5554 #, c-format msgid "" "\n" @@ -5109,7 +5114,7 @@ msgstr "" "\n" "Розділ відомостей щодо вікна викликів [%2zu] «%s» за зміщенням %#:\n" -#: src/readelf.c:5579 +#: src/readelf.c:5604 #, c-format msgid "" "\n" @@ -5118,50 +5123,50 @@ msgstr "" "\n" " [%6tx] нульовий переривач\n" -#: src/readelf.c:5672 src/readelf.c:5827 +#: src/readelf.c:5697 src/readelf.c:5852 #, c-format msgid "invalid augmentation length" msgstr "некоректна довжина збільшення" -#: src/readelf.c:5687 +#: src/readelf.c:5712 msgid "FDE address encoding: " msgstr "Кодування адреси FDE: " -#: src/readelf.c:5693 +#: src/readelf.c:5718 msgid "LSDA pointer encoding: " msgstr "Кодування вказівника LSDA: " -#: src/readelf.c:5804 +#: src/readelf.c:5829 #, c-format msgid " (offset: %#)" msgstr " (зміщення: %#)" -#: src/readelf.c:5811 +#: src/readelf.c:5836 #, c-format msgid " (end offset: %#)" msgstr " (зміщення від кінця: %#)" -#: src/readelf.c:5848 +#: src/readelf.c:5873 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sвказівник LSDA: %#\n" -#: src/readelf.c:5903 +#: src/readelf.c:5928 #, c-format msgid "cannot get attribute code: %s" msgstr "не вдалося отримати код атрибута: %s" -#: src/readelf.c:5912 +#: src/readelf.c:5937 #, c-format msgid "cannot get attribute form: %s" msgstr "не вдалося отримати форму атрибута: %s" -#: src/readelf.c:5927 +#: src/readelf.c:5952 #, c-format msgid "cannot get attribute value: %s" msgstr "не вдалося отримати значення атрибута: %s" -#: src/readelf.c:6226 +#: src/readelf.c:6254 #, c-format msgid "" "\n" @@ -5172,7 +5177,7 @@ msgstr "" "Розділ DWARF [%2zu] «%s» за зміщенням %#:\n" " [Зміщення]\n" -#: src/readelf.c:6258 +#: src/readelf.c:6286 #, c-format msgid "" " Type unit at offset %:\n" @@ -5185,7 +5190,7 @@ msgstr "" "Зміщення: %\n" " Підпис типу: %#, Зміщення типу: %#\n" -#: src/readelf.c:6267 +#: src/readelf.c:6295 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5196,33 +5201,33 @@ msgstr "" " Версія: %, Зміщення розділу скорочень: %, Адреса: %, " "Зміщення: %\n" -#: src/readelf.c:6292 +#: src/readelf.c:6320 #, c-format msgid "cannot get DIE at offset % in section '%s': %s" msgstr "не вдалося отримати DIE за зміщенням % у розділі «%s»: %s" -#: src/readelf.c:6306 +#: src/readelf.c:6334 #, c-format msgid "cannot get DIE offset: %s" msgstr "не вдалося отримати зміщення DIE: %s" -#: src/readelf.c:6315 +#: src/readelf.c:6343 #, c-format msgid "cannot get tag of DIE at offset % in section '%s': %s" msgstr "" "не вдалося отримати мітку DIE за зміщенням % у розділі «%s»: %s" -#: src/readelf.c:6347 +#: src/readelf.c:6375 #, c-format msgid "cannot get next DIE: %s\n" msgstr "не вдалося визначити наступний DIE: %s\n" -#: src/readelf.c:6355 +#: src/readelf.c:6383 #, c-format msgid "cannot get next DIE: %s" msgstr "не вдалося визначити наступний DIE: %s" -#: src/readelf.c:6391 +#: src/readelf.c:6419 #, c-format msgid "" "\n" @@ -5233,13 +5238,13 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" "\n" -#: src/readelf.c:6500 +#: src/readelf.c:6528 #, c-format msgid "cannot get line data section data: %s" msgstr "не вдалося отримати дані розділу лінійних даних: %s" #. Print what we got so far. -#: src/readelf.c:6570 +#: src/readelf.c:6598 #, c-format msgid "" "\n" @@ -5268,12 +5273,12 @@ msgstr "" "\n" "Коди операцій:\n" -#: src/readelf.c:6591 +#: src/readelf.c:6619 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "некоректні дані зі зміщенням %tu у розділі [%zu] «%s»" -#: src/readelf.c:6606 +#: src/readelf.c:6634 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" @@ -5281,7 +5286,7 @@ msgstr[0] " [%*] %hhu аргумент\n" msgstr[1] " [%*] %hhu аргументи\n" msgstr[2] " [%*] %hhu аргументів\n" -#: src/readelf.c:6614 +#: src/readelf.c:6642 msgid "" "\n" "Directory table:" @@ -5289,7 +5294,7 @@ msgstr "" "\n" "Таблиця каталогу:" -#: src/readelf.c:6630 +#: src/readelf.c:6658 msgid "" "\n" "File name table:\n" @@ -5299,7 +5304,7 @@ msgstr "" "Таблиця назв файлів:\n" " Запис Кат Час Розмір Назва" -#: src/readelf.c:6665 +#: src/readelf.c:6693 msgid "" "\n" "Line number statements:" @@ -5307,120 +5312,120 @@ msgstr "" "\n" "Оператори номерів рядків:" -#: src/readelf.c:6716 +#: src/readelf.c:6744 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "некоректну кількість операцій на інструкцію прирівняно до нуля" -#: src/readelf.c:6752 +#: src/readelf.c:6780 #, c-format msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n" msgstr "" " спеціальний код операції %u: адреса+%u = %s, індекс_оп = %u, рядок%+d = " "%zu\n" -#: src/readelf.c:6757 +#: src/readelf.c:6785 #, c-format msgid " special opcode %u: address+%u = %s, line%+d = %zu\n" msgstr " спеціальний код операції %u: адреса+%u = %s, рядок%+d = %zu\n" -#: src/readelf.c:6777 +#: src/readelf.c:6805 #, c-format msgid " extended opcode %u: " msgstr " розширений код операції %u: " -#: src/readelf.c:6782 +#: src/readelf.c:6810 msgid " end of sequence" msgstr " кінець послідовності" -#: src/readelf.c:6801 +#: src/readelf.c:6829 #, c-format msgid " set address to %s\n" msgstr " встановити адресу у значення %s\n" -#: src/readelf.c:6828 +#: src/readelf.c:6856 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" " визначення нового файла: dir=%u, mtime=%, довжина=%, назва=" "%s\n" -#: src/readelf.c:6841 +#: src/readelf.c:6869 #, c-format msgid " set discriminator to %u\n" msgstr " встановити розрізнення для %u\n" #. Unknown, ignore it. -#: src/readelf.c:6846 +#: src/readelf.c:6874 msgid " unknown opcode" msgstr " невідомий код операції" #. Takes no argument. -#: src/readelf.c:6858 +#: src/readelf.c:6886 msgid " copy" msgstr " копія" -#: src/readelf.c:6869 +#: src/readelf.c:6897 #, c-format msgid " advance address by %u to %s, op_index to %u\n" msgstr " збільшення адреси на %u до %s, індекс_оп до %u\n" -#: src/readelf.c:6873 +#: src/readelf.c:6901 #, c-format msgid " advance address by %u to %s\n" msgstr " збільшення адреси на %u до %s\n" -#: src/readelf.c:6884 +#: src/readelf.c:6912 #, c-format msgid " advance line by constant %d to %\n" msgstr " просувати рядок на сталу %d до %\n" -#: src/readelf.c:6892 +#: src/readelf.c:6920 #, c-format msgid " set file to %\n" msgstr " встановити файл у %\n" -#: src/readelf.c:6902 +#: src/readelf.c:6930 #, c-format msgid " set column to %\n" msgstr " встановити значення стовпчика %\n" -#: src/readelf.c:6909 +#: src/readelf.c:6937 #, c-format msgid " set '%s' to %\n" msgstr " встановити «%s» у %\n" #. Takes no argument. -#: src/readelf.c:6915 +#: src/readelf.c:6943 msgid " set basic block flag" msgstr " встановити прапорець базового блоку" -#: src/readelf.c:6928 +#: src/readelf.c:6956 #, c-format msgid " advance address by constant %u to %s, op_index to %u\n" msgstr " збільшити адресу на сталу величину %u до %s, індекс_оп до %u\n" -#: src/readelf.c:6932 +#: src/readelf.c:6960 #, c-format msgid " advance address by constant %u to %s\n" msgstr " збільшити адресу на сталу величину %u до %s\n" -#: src/readelf.c:6950 +#: src/readelf.c:6978 #, c-format msgid " advance address by fixed value %u to %s\n" msgstr " збільшити адресу на фіксовану величину %u до %s\n" #. Takes no argument. -#: src/readelf.c:6959 +#: src/readelf.c:6987 msgid " set prologue end flag" msgstr " встановити прапорець кінця вступу" #. Takes no argument. -#: src/readelf.c:6964 +#: src/readelf.c:6992 msgid " set epilogue begin flag" msgstr " встановити прапорець початку епілогу" -#: src/readelf.c:6973 +#: src/readelf.c:7001 #, c-format msgid " set isa to %u\n" msgstr " встановити isa у %u\n" @@ -5428,7 +5433,7 @@ msgstr " встановити isa у %u\n" #. This is a new opcode the generator but not we know about. #. Read the parameters associated with it but then discard #. everything. Read all the parameters for this opcode. -#: src/readelf.c:6982 +#: src/readelf.c:7010 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" @@ -5436,103 +5441,103 @@ msgstr[0] " невідомий код операції з % параме msgstr[1] " невідомий код операції з % параметрами:" msgstr[2] " невідомий код операції з % параметрами:" -#: src/readelf.c:7014 +#: src/readelf.c:7042 #, c-format msgid "cannot get .debug_loc content: %s" msgstr "не вдалося отримати вміст .debug_loc: %s" #. First entry in a list. -#: src/readelf.c:7089 +#: src/readelf.c:7117 #, c-format msgid " [%6tx] %s..%s" msgstr " [%6tx] %s..%s" -#: src/readelf.c:7091 +#: src/readelf.c:7119 #, c-format msgid " %s..%s" msgstr " %s..%s" -#: src/readelf.c:7098 src/readelf.c:7986 +#: src/readelf.c:7126 src/readelf.c:8077 msgid " \n" msgstr " <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:7150 src/readelf.c:7312 +#: src/readelf.c:7178 src/readelf.c:7340 #, c-format msgid "cannot get macro information section data: %s" msgstr "не вдалося отримати дані розділу відомостей щодо макросів: %s" -#: src/readelf.c:7230 +#: src/readelf.c:7258 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** незавершений рядок наприкінці розділу" -#: src/readelf.c:7253 +#: src/readelf.c:7281 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** пропущено аргумент DW_MACINFO_start_file наприкінці розділу" -#: src/readelf.c:7353 +#: src/readelf.c:7381 #, c-format msgid " Offset: 0x%\n" msgstr " Зміщення: 0x%\n" -#: src/readelf.c:7365 +#: src/readelf.c:7393 #, c-format msgid " Version: %\n" msgstr " Версія: %\n" -#: src/readelf.c:7371 src/readelf.c:8105 +#: src/readelf.c:7399 src/readelf.c:8196 #, c-format msgid " unknown version, cannot parse section\n" msgstr " невідома версія, не вдалося обробити розділ\n" -#: src/readelf.c:7378 +#: src/readelf.c:7406 #, c-format msgid " Flag: 0x%\n" msgstr " Прапорець: 0x%\n" -#: src/readelf.c:7381 +#: src/readelf.c:7409 #, c-format msgid " Offset length: %\n" msgstr " Довжина зміщення: %\n" -#: src/readelf.c:7389 +#: src/readelf.c:7417 #, c-format msgid " .debug_line offset: 0x%\n" msgstr " зміщення .debug_line: 0x%\n" -#: src/readelf.c:7402 +#: src/readelf.c:7430 #, c-format msgid " extension opcode table, % items:\n" msgstr " таблиця кодів операцій розширень, записів — %:\n" -#: src/readelf.c:7409 +#: src/readelf.c:7437 #, c-format msgid " [%]" msgstr " [%]" -#: src/readelf.c:7421 +#: src/readelf.c:7449 #, c-format msgid " % arguments:" msgstr " % аргументів:" -#: src/readelf.c:7449 +#: src/readelf.c:7477 #, c-format msgid " no arguments." msgstr " немає аргументів." -#: src/readelf.c:7686 +#: src/readelf.c:7777 #, c-format msgid "vendor opcode not verified?" msgstr "код операції постачальника не перевірено?" -#: src/readelf.c:7714 +#: src/readelf.c:7805 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" " [%5d] зміщення DIE: %6, зміщення CU DIE: %6, назва: %s\n" -#: src/readelf.c:7755 +#: src/readelf.c:7846 #, c-format msgid "" "\n" @@ -5543,12 +5548,12 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" " %*s Рядок\n" -#: src/readelf.c:7769 +#: src/readelf.c:7860 #, c-format msgid " *** error while reading strings: %s\n" msgstr " *** помилка під час читання рядків: %s\n" -#: src/readelf.c:7789 +#: src/readelf.c:7880 #, c-format msgid "" "\n" @@ -5557,7 +5562,7 @@ msgstr "" "\n" "Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:7891 +#: src/readelf.c:7982 #, c-format msgid "" "\n" @@ -5566,22 +5571,22 @@ msgstr "" "\n" "Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:7914 +#: src/readelf.c:8005 #, c-format msgid " LPStart encoding: %#x " msgstr " Кодування LPStart: %#x " -#: src/readelf.c:7926 +#: src/readelf.c:8017 #, c-format msgid " TType encoding: %#x " msgstr " Кодування TType: %#x " -#: src/readelf.c:7941 +#: src/readelf.c:8032 #, c-format msgid " Call site encoding: %#x " msgstr " Кодування місця виклику:%#x " -#: src/readelf.c:7954 +#: src/readelf.c:8045 msgid "" "\n" " Call site table:" @@ -5589,7 +5594,7 @@ msgstr "" "\n" " Таблиця місця виклику:" -#: src/readelf.c:7968 +#: src/readelf.c:8059 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5602,12 +5607,12 @@ msgstr "" " Місце застосування: %#\n" " Дія: %u\n" -#: src/readelf.c:8041 +#: src/readelf.c:8132 #, c-format msgid "invalid TType encoding" msgstr "некоректне кодування TType" -#: src/readelf.c:8067 +#: src/readelf.c:8158 #, c-format msgid "" "\n" @@ -5616,37 +5621,37 @@ msgstr "" "\n" "Розділ GDB [%2zu] «%s» за зміщенням %# містить % байтів:\n" -#: src/readelf.c:8096 +#: src/readelf.c:8187 #, c-format msgid " Version: %\n" msgstr " Версія: %\n" -#: src/readelf.c:8114 +#: src/readelf.c:8205 #, c-format msgid " CU offset: %#\n" msgstr " зміщення CU: %#\n" -#: src/readelf.c:8121 +#: src/readelf.c:8212 #, c-format msgid " TU offset: %#\n" msgstr " зміщення TU: %#\n" -#: src/readelf.c:8128 +#: src/readelf.c:8219 #, c-format msgid " address offset: %#\n" msgstr " зміщення адреси: %#\n" -#: src/readelf.c:8135 +#: src/readelf.c:8226 #, c-format msgid " symbol offset: %#\n" msgstr " зміщення символу: %#\n" -#: src/readelf.c:8142 +#: src/readelf.c:8233 #, c-format msgid " constant offset: %#\n" msgstr " стале зміщення: %#\n" -#: src/readelf.c:8156 +#: src/readelf.c:8247 #, c-format msgid "" "\n" @@ -5655,7 +5660,7 @@ msgstr "" "\n" " Список CU зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:8181 +#: src/readelf.c:8272 #, c-format msgid "" "\n" @@ -5664,7 +5669,7 @@ msgstr "" "\n" " Список TU зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:8210 +#: src/readelf.c:8301 #, c-format msgid "" "\n" @@ -5673,7 +5678,7 @@ msgstr "" "\n" " Список адрес зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:8243 +#: src/readelf.c:8334 #, c-format msgid "" "\n" @@ -5682,17 +5687,17 @@ msgstr "" "\n" " Таблиця символів за зміщенням %# містить %zu позицій:\n" -#: src/readelf.c:8330 +#: src/readelf.c:8421 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "не вдалося отримати дескриптор контексту зневаджування: %s" -#: src/readelf.c:8486 src/readelf.c:9108 src/readelf.c:9219 src/readelf.c:9277 +#: src/readelf.c:8577 src/readelf.c:9199 src/readelf.c:9310 src/readelf.c:9368 #, c-format msgid "cannot convert core note data: %s" msgstr "не вдалося перетворити дані запису ядра: %s" -#: src/readelf.c:8849 +#: src/readelf.c:8940 #, c-format msgid "" "\n" @@ -5701,21 +5706,21 @@ msgstr "" "\n" "%*s... <повторюється %u разів> ..." -#: src/readelf.c:9356 +#: src/readelf.c:9447 msgid " Owner Data size Type\n" msgstr " Власник Розм. даних Тип\n" -#: src/readelf.c:9374 +#: src/readelf.c:9465 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:9424 +#: src/readelf.c:9515 #, c-format msgid "cannot get content of note section: %s" msgstr "не вдалося отримати вміст розділу записів: %s" -#: src/readelf.c:9451 +#: src/readelf.c:9542 #, c-format msgid "" "\n" @@ -5725,7 +5730,7 @@ msgstr "" "Розділ записів (note) [%2zu] «%s» з % байтів за зміщенням " "%#0:\n" -#: src/readelf.c:9474 +#: src/readelf.c:9565 #, c-format msgid "" "\n" @@ -5734,7 +5739,7 @@ msgstr "" "\n" "Сегмент записів з % байтів за зміщенням %#0:\n" -#: src/readelf.c:9520 +#: src/readelf.c:9611 #, c-format msgid "" "\n" @@ -5743,12 +5748,12 @@ msgstr "" "\n" "У розділі [%zu] «%s» не міститься даних для створення дампу.\n" -#: src/readelf.c:9547 src/readelf.c:9598 +#: src/readelf.c:9638 src/readelf.c:9689 #, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "не вдалося отримати дані для розділу [%zu] «%s»: %s" -#: src/readelf.c:9552 +#: src/readelf.c:9643 #, c-format msgid "" "\n" @@ -5757,7 +5762,7 @@ msgstr "" "\n" "Шіст. дамп розділу [%zu] «%s», % байтів за зміщенням %#0:\n" -#: src/readelf.c:9557 +#: src/readelf.c:9648 #, fuzzy, c-format msgid "" "\n" @@ -5767,7 +5772,7 @@ msgstr "" "\n" "Шіст. дамп розділу [%zu] «%s», % байтів за зміщенням %#0:\n" -#: src/readelf.c:9571 +#: src/readelf.c:9662 #, c-format msgid "" "\n" @@ -5776,7 +5781,7 @@ msgstr "" "\n" "У розділі [%zu] «%s» не міститься рядків для створення дампу.\n" -#: src/readelf.c:9603 +#: src/readelf.c:9694 #, c-format msgid "" "\n" @@ -5785,7 +5790,7 @@ msgstr "" "\n" "Розділ рядків [%zu] «%s» містить % байтів за зміщенням %#0:\n" -#: src/readelf.c:9608 +#: src/readelf.c:9699 #, fuzzy, c-format msgid "" "\n" @@ -5795,7 +5800,7 @@ msgstr "" "\n" "Розділ рядків [%zu] «%s» містить % байтів за зміщенням %#0:\n" -#: src/readelf.c:9657 +#: src/readelf.c:9748 #, c-format msgid "" "\n" @@ -5804,7 +5809,7 @@ msgstr "" "\n" "розділу [%lu] не існує" -#: src/readelf.c:9686 +#: src/readelf.c:9777 #, c-format msgid "" "\n" @@ -5813,12 +5818,12 @@ msgstr "" "\n" "розділу «%s» не існує" -#: src/readelf.c:9743 +#: src/readelf.c:9834 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "не вдалося отримати покажчик символів архіву «%s»: %s" -#: src/readelf.c:9746 +#: src/readelf.c:9837 #, c-format msgid "" "\n" @@ -5827,7 +5832,7 @@ msgstr "" "\n" "У архіві «%s» немає покажчика символів\n" -#: src/readelf.c:9750 +#: src/readelf.c:9841 #, c-format msgid "" "\n" @@ -5836,12 +5841,12 @@ msgstr "" "\n" "Покажчик архіву «%s» містить %zu записів:\n" -#: src/readelf.c:9768 +#: src/readelf.c:9859 #, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "не вдалося видобути елемент за зміщенням %zu у «%s»: %s" -#: src/readelf.c:9773 +#: src/readelf.c:9864 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Елемент архіву «%s» містить:\n" @@ -6119,31 +6124,31 @@ msgstr "помилка mprotect" msgid "Skipping section %zd '%s' data outside file" msgstr "Пропускаємо дані %zd «%s» поза файлом" -#: src/strip.c:69 +#: src/strip.c:71 msgid "Place stripped output into FILE" msgstr "Вивести дані після вилучення до ФАЙЛа" -#: src/strip.c:70 +#: src/strip.c:72 msgid "Extract the removed sections into FILE" msgstr "Видобути вилучені розділи до ФАЙЛа" -#: src/strip.c:71 +#: src/strip.c:73 msgid "Embed name FILE instead of -f argument" msgstr "Вбудувати назву ФАЙЛа замість аргументу -f" -#: src/strip.c:75 +#: src/strip.c:77 msgid "Remove all debugging symbols" msgstr "Вилучити всі символи зневаджування" -#: src/strip.c:79 +#: src/strip.c:81 msgid "Remove section headers (not recommended)" msgstr "Вилучити заголовки розділів (не рекомендовано)" -#: src/strip.c:81 +#: src/strip.c:83 msgid "Copy modified/access timestamps to the output" msgstr "Скопіювати часові позначки зміни/доступу до виведених даних" -#: src/strip.c:83 +#: src/strip.c:85 msgid "" "Resolve all trivial relocations between debug sections if the removed " "sections are placed in a debug file (only relevant for ET_REL files, " @@ -6153,52 +6158,64 @@ msgstr "" "вилучені розділи було розташовано у діагностичному файлі (стосується лише " "файлів ET_REL, скасувати дію неможливо, потребує параметра -f)" -#: src/strip.c:85 +#: src/strip.c:87 msgid "Remove .comment section" msgstr "Вилучити розділ .comment" +#: src/strip.c:88 +msgid "" +"Remove the named section. SECTION is an extended wildcard pattern. May be " +"given more than once. Only non-allocated sections can be removed." +msgstr "" + +#: src/strip.c:89 +msgid "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." +msgstr "" + #. Short description of program. -#: src/strip.c:93 +#: src/strip.c:96 msgid "Discard symbols from object files." msgstr "Відкинути символи з об’єктних файлів" -#: src/strip.c:187 +#: src/strip.c:242 #, c-format msgid "--reloc-debug-sections used without -f" msgstr "--reloc-debug-sections використано без -f" -#: src/strip.c:201 +#: src/strip.c:256 #, c-format msgid "Only one input file allowed together with '-o' and '-f'" msgstr "" "Разом з «-o» або «-f» можна використовувати лише один файл вхідних даних" -#: src/strip.c:223 +#: src/strip.c:279 #, c-format msgid "-f option specified twice" msgstr "параметр -f вказано двічі" -#: src/strip.c:232 +#: src/strip.c:288 #, c-format msgid "-F option specified twice" msgstr "параметр -F вказано двічі" -#: src/strip.c:265 -#, c-format -msgid "-R option supports only .comment section" -msgstr "Для параметра -R передбачено підтримку лише розділу .comment" +#: src/strip.c:347 +#, fuzzy, c-format +msgid "cannot both keep and remove .comment section" +msgstr "Вилучити розділ .comment" -#: src/strip.c:307 src/strip.c:331 +#: src/strip.c:372 src/strip.c:396 #, c-format msgid "cannot stat input file '%s'" msgstr "не вдалося отримати дані з вхідного файла «%s» за допомогою stat" -#: src/strip.c:321 +#: src/strip.c:386 #, c-format msgid "while opening '%s'" msgstr "під час спроби відкриття «%s»" -#: src/strip.c:359 +#: src/strip.c:424 #, c-format msgid "%s: cannot use -o or -f when stripping archive" msgstr "" @@ -6211,107 +6228,117 @@ msgstr "" #. result = handle_ar (fd, elf, NULL, fname, #. preserve_dates ? tv : NULL); #. -#: src/strip.c:371 +#: src/strip.c:436 #, c-format msgid "%s: no support for stripping archive" msgstr "%s: підтримки вилучення додаткового вмісту з архіву не передбачено" -#: src/strip.c:470 +#: src/strip.c:535 #, c-format msgid "cannot open EBL backend" msgstr "не вдалося відкрити канал сервера EBL" -#: src/strip.c:515 +#: src/strip.c:580 #, c-format msgid "cannot get number of phdrs" msgstr "не вдалося отримати кількість phdr" -#: src/strip.c:531 src/strip.c:555 +#: src/strip.c:596 src/strip.c:620 #, c-format msgid "cannot create new file '%s': %s" msgstr "не вдалося створити файл «%s»: %s" -#: src/strip.c:621 +#: src/strip.c:686 #, c-format msgid "illformed file '%s'" msgstr "помилкове форматування файла «%s»" -#: src/strip.c:955 src/strip.c:1054 +#: src/strip.c:696 +#, fuzzy, c-format +msgid "Cannot remove allocated section '%s'" +msgstr "не вдалося розмістити PLT-розділ: %s" + +#: src/strip.c:705 +#, fuzzy, c-format +msgid "Cannot both keep and remove section '%s'" +msgstr "не вдалося додати новий розділ: %s" + +#: src/strip.c:1061 src/strip.c:1160 #, c-format msgid "while generating output file: %s" msgstr "під час спроби створення файла з виведеними даними: %s" -#: src/strip.c:1020 src/strip.c:2090 +#: src/strip.c:1126 src/strip.c:2208 #, c-format msgid "%s: error while creating ELF header: %s" msgstr "%s: помилка під час створення заголовка ELF: %s" -#: src/strip.c:1037 +#: src/strip.c:1143 #, c-format msgid "while preparing output for '%s'" msgstr "під час приготування виведених даних для «%s»" -#: src/strip.c:1095 src/strip.c:1158 +#: src/strip.c:1205 src/strip.c:1268 #, c-format msgid "while create section header section: %s" msgstr "під час створення розділу заголовка розділу: %s" -#: src/strip.c:1104 +#: src/strip.c:1214 #, c-format msgid "cannot allocate section data: %s" msgstr "не вдалося розмістити дані розділу: %s" -#: src/strip.c:1170 +#: src/strip.c:1280 #, c-format msgid "while create section header string table: %s" msgstr "під час створення таблиці рядків заголовка розділу: %s" -#: src/strip.c:1177 +#: src/strip.c:1287 #, fuzzy, c-format msgid "no memory to create section header string table" msgstr "під час створення таблиці рядків заголовка розділу: %s" -#: src/strip.c:1384 +#: src/strip.c:1497 #, c-format msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:1876 +#: src/strip.c:1994 #, c-format msgid "bad relocation" msgstr "помилкове пересування" -#: src/strip.c:2001 src/strip.c:2114 +#: src/strip.c:2119 src/strip.c:2232 #, c-format msgid "while writing '%s': %s" msgstr "під час запису «%s»: %s" -#: src/strip.c:2012 +#: src/strip.c:2130 #, c-format msgid "while creating '%s'" msgstr "під час спроби створення «%s»" -#: src/strip.c:2035 +#: src/strip.c:2153 #, c-format msgid "while computing checksum for debug information" msgstr "під час обчислення контрольної суми для діагностичних даних" -#: src/strip.c:2099 +#: src/strip.c:2217 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: помилка під час читання файла: %s" -#: src/strip.c:2139 src/strip.c:2159 +#: src/strip.c:2257 src/strip.c:2277 #, c-format msgid "while writing '%s'" msgstr "під час спроби запису «%s»" -#: src/strip.c:2196 src/strip.c:2203 +#: src/strip.c:2314 src/strip.c:2321 #, c-format msgid "error while finishing '%s': %s" msgstr "помилка під час завершення «%s»: %s" -#: src/strip.c:2220 src/strip.c:2292 +#: src/strip.c:2338 src/strip.c:2414 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "не вдалося встановити права доступу та дату зміни «%s»" @@ -6728,12 +6755,12 @@ msgstr "Додатково вивести назви функцій" msgid "Show instances of inlined functions" msgstr "Вивести екземпляри вбудованих функцій" +#~ msgid "-R option supports only .comment section" +#~ msgstr "Для параметра -R передбачено підтримку лише розділу .comment" + #~ msgid "Written by %s.\n" #~ msgstr "Автор — %s.\n" -#~ msgid "cannot allocate PLT section: %s" -#~ msgstr "не вдалося розмістити PLT-розділ: %s" - #~ msgid "cannot allocate PLTREL section: %s" #~ msgstr "не вдалося розмістити розділ PLTREL: %s" -- cgit v1.2.3