aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-07-15 02:00:34 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-07-15 02:00:34 +0000
commit679de50eefd4bf9119c74609642fe993172a0813 (patch)
tree15db324236530f56b2ab76f876a5aeeb6959f8c3
parent5f92182e496a66149ba09c92fe497135643663f5 (diff)
parent09dec374e7387d9521b54bcd682bb1431fdf36b8 (diff)
downloadelfutils-android12-mainline-captiveportallogin-release.tar.gz
Snap for 7550930 from 09dec374e7387d9521b54bcd682bb1431fdf36b8 to mainline-captiveportallogin-releaseandroid-mainline-12.0.0_r6android-mainline-12.0.0_r23android12-mainline-captiveportallogin-release
Change-Id: I945cca00757ad0471b521cfd953ac4be163ea03d
-rw-r--r--.gitignore146
-rw-r--r--ABOUT-NLS1068
-rw-r--r--Android.bp156
-rw-r--r--CONTRIBUTING2
-rw-r--r--ChangeLog133
-rw-r--r--CleanSpec.mk58
-rw-r--r--METADATA13
-rw-r--r--Makefile.am59
-rw-r--r--NEWS115
-rw-r--r--NOTES4
-rw-r--r--OWNERS5
-rw-r--r--README2
-rw-r--r--TODO2
-rw-r--r--backends/ChangeLog72
-rw-r--r--backends/Makefile.am13
-rw-r--r--backends/aarch64_init.c13
-rw-r--r--backends/aarch64_retval.c2
-rw-r--r--backends/aarch64_symbol.c26
-rw-r--r--backends/alpha_init.c11
-rw-r--r--backends/arm_init.c11
-rw-r--r--backends/bpf_init.c10
-rw-r--r--backends/common-reloc.c6
-rw-r--r--backends/csky_init.c11
-rw-r--r--backends/i386_init.c12
-rw-r--r--backends/i386_syscall.c50
-rw-r--r--backends/ia64_init.c11
-rw-r--r--backends/libebl_CPU.h3
-rw-r--r--backends/m68k_init.c11
-rw-r--r--backends/ppc64_init.c12
-rw-r--r--backends/ppc_cfi.c2
-rw-r--r--backends/ppc_init.c12
-rw-r--r--backends/ppc_initreg.c1
-rw-r--r--backends/ppc_syscall.c53
-rw-r--r--backends/riscv_init.c11
-rw-r--r--backends/s390_init.c11
-rw-r--r--backends/sh_init.c11
-rw-r--r--backends/sparc_init.c11
-rw-r--r--backends/tilegx_corenote.c64
-rw-r--r--backends/tilegx_init.c58
-rw-r--r--backends/tilegx_regs.c129
-rw-r--r--backends/tilegx_reloc.def121
-rw-r--r--backends/tilegx_retval.c154
-rw-r--r--backends/tilegx_symbol.c58
-rw-r--r--backends/x86_64_init.c13
-rw-r--r--backends/x86_64_symbol.c8
-rw-r--r--backends/x86_64_syscall.c50
-rw-r--r--config.h68
-rw-r--r--config/.gitignore15
-rw-r--r--config/10-default-yama-scope.conf2
-rw-r--r--config/ChangeLog126
-rw-r--r--config/Makefile.am14
-rw-r--r--config/debuginfod.service4
-rw-r--r--config/debuginfod.sysconfig2
-rw-r--r--config/elfutils.spec.in121
-rw-r--r--config/libdw.pc.in4
-rw-r--r--config/profile.csh.in11
-rw-r--r--config/profile.sh.in4
-rwxr-xr-xconfig/upload-release.sh6
-rw-r--r--configure.ac184
-rw-r--r--debuginfod/.gitignore3
-rw-r--r--debuginfod/ChangeLog489
-rw-r--r--debuginfod/Makefile.am54
-rw-r--r--debuginfod/debuginfod-client.c713
-rw-r--r--debuginfod/debuginfod-find.c124
-rw-r--r--debuginfod/debuginfod.cxx2188
-rw-r--r--debuginfod/debuginfod.h.in (renamed from debuginfod/debuginfod.h)25
-rw-r--r--debuginfod/libdebuginfod.map10
-rw-r--r--doc/ChangeLog130
-rw-r--r--doc/Makefile.am17
-rw-r--r--doc/debuginfod-find.132
-rw-r--r--doc/debuginfod.8212
-rw-r--r--doc/debuginfod_add_http_header.31
-rw-r--r--doc/debuginfod_find_debuginfo.3139
-rw-r--r--doc/debuginfod_get_url.31
-rw-r--r--doc/debuginfod_get_user_data.31
-rw-r--r--doc/debuginfod_set_user_data.31
-rw-r--r--doc/elfutils.sgml2
-rw-r--r--doc/readelf.14
-rw-r--r--lib/Android.bp10
-rw-r--r--lib/ChangeLog24
-rw-r--r--lib/color.c4
-rw-r--r--lib/eu-config.h3
-rw-r--r--lib/printversion.c4
-rw-r--r--lib/system.h14
-rw-r--r--lib/xmalloc.c4
-rw-r--r--libasm/ChangeLog45
-rw-r--r--libasm/Makefile.am8
-rw-r--r--libasm/asm_align.c4
-rw-r--r--libasm/asm_begin.c2
-rw-r--r--libasm/asm_end.c4
-rw-r--r--libasm/libasm.h3
-rw-r--r--libasm/libasmP.h4
-rw-r--r--libcpu/.gitignore5
-rw-r--r--libcpu/Android.bp78
-rw-r--r--libcpu/ChangeLog31
-rw-r--r--libcpu/Makefile.am5
-rwxr-xr-xlibcpu/android_mnemonic_preprocess.sh10
-rw-r--r--libcpu/bpf_disasm.c2
-rw-r--r--libcpu/i386_disasm.c13
-rw-r--r--libcpu/i386_lex.l4
-rw-r--r--libcpu/i386_parse.y5
-rw-r--r--libdw/.gitignore1
-rw-r--r--libdw/ChangeLog110
-rw-r--r--libdw/Makefile.am9
-rw-r--r--libdw/cfi.c42
-rw-r--r--libdw/cfi.h2
-rw-r--r--libdw/dwarf.h3
-rw-r--r--libdw/dwarf_begin_elf.c6
-rw-r--r--libdw/dwarf_decl_file.c2
-rw-r--r--libdw/dwarf_frame_register.c2
-rw-r--r--libdw/dwarf_getcfi.c5
-rw-r--r--libdw/dwarf_getcfi_elf.c8
-rw-r--r--libdw/dwarf_getlocation.c31
-rw-r--r--libdw/dwarf_getsrclines.c2
-rw-r--r--libdw/dwarf_ranges.c5
-rw-r--r--libdw/known-dwarf.h633
-rw-r--r--libdw/libdw.h27
-rw-r--r--libdw/libdw.map10
-rw-r--r--libdw/libdwP.h8
-rw-r--r--libdw/libdw_alloc.c5
-rw-r--r--libdw/libdw_visit_scopes.c6
-rw-r--r--libdw/memory-access.h44
-rw-r--r--libdwelf/ChangeLog13
-rw-r--r--libdwelf/dwelf_elf_e_machine_string.c10
-rw-r--r--libdwelf/dwelf_strtab.c2
-rw-r--r--libdwelf/libdwelf.h4
-rw-r--r--libdwfl/ChangeLog237
-rw-r--r--libdwfl/Makefile.am8
-rw-r--r--libdwfl/argp-std.c6
-rw-r--r--libdwfl/core-file.c17
-rw-r--r--libdwfl/debuginfod-client.c5
-rw-r--r--libdwfl/dwfl_build_id_find_elf.c9
-rw-r--r--libdwfl/dwfl_end.c2
-rw-r--r--libdwfl/dwfl_error.c17
-rw-r--r--libdwfl/dwfl_module_getdwarf.c4
-rw-r--r--libdwfl/dwfl_report_elf.c2
-rw-r--r--libdwfl/dwfl_segment_report_module.c676
-rw-r--r--libdwfl/elf-from-memory.c196
-rw-r--r--libdwfl/find-debuginfo.c30
-rw-r--r--libdwfl/frame_unwind.c9
-rw-r--r--libdwfl/gzip.c81
-rw-r--r--libdwfl/libdwfl.h28
-rw-r--r--libdwfl/libdwflP.h23
-rw-r--r--libdwfl/link_map.c222
-rw-r--r--libdwfl/linux-core-attach.c7
-rw-r--r--libdwfl/linux-kernel-modules.c51
-rw-r--r--libdwfl/linux-pid-attach.c18
-rw-r--r--libdwfl/open.c6
-rw-r--r--libdwfl/segment.c35
-rw-r--r--libdwfl/zstd.c4
-rw-r--r--libebl/ChangeLog67
-rw-r--r--libebl/Makefile.am2
-rw-r--r--libebl/ebl-hooks.h4
-rw-r--r--libebl/ebl_syscall_abi.c40
-rw-r--r--libebl/eblbackendname.c2
-rw-r--r--libebl/eblcorenotetypename.c2
-rw-r--r--libebl/ebldynamictagname.c2
-rw-r--r--libebl/eblobjnote.c89
-rw-r--r--libebl/eblobjnotetypename.c6
-rw-r--r--libebl/eblopenbackend.c56
-rw-r--r--libebl/eblosabiname.c4
-rw-r--r--libebl/eblsectionname.c2
-rw-r--r--libebl/eblsectiontypename.c2
-rw-r--r--libebl/eblsegmenttypename.c4
-rw-r--r--libebl/eblsymbolbindingname.c2
-rw-r--r--libebl/eblsymboltypename.c2
-rw-r--r--libebl/libebl.h12
-rw-r--r--libebl/libeblP.h11
-rw-r--r--libelf/Android.bp174
-rw-r--r--libelf/ChangeLog100
-rw-r--r--libelf/Makefile.am9
-rw-r--r--libelf/common.h2
-rw-r--r--libelf/elf-knowledge.h6
-rw-r--r--libelf/elf.h125
-rw-r--r--libelf/elf32_checksum.c2
-rw-r--r--libelf/elf32_updatenull.c12
-rw-r--r--libelf/elf_begin.c11
-rw-r--r--libelf/elf_compress.c16
-rw-r--r--libelf/elf_compress_gnu.c5
-rw-r--r--libelf/elf_getdata.c16
-rw-r--r--libelf/elf_getphdrnum.c21
-rw-r--r--libelf/elf_strptr.c4
-rw-r--r--libelf/gelf.h2
-rw-r--r--libelf/libelf.h2
-rw-r--r--libelf/libelfP.h10
-rw-r--r--m4/.gitignore5
-rw-r--r--m4/ChangeLog6
-rw-r--r--m4/Makefile.am21
-rw-r--r--m4/codeset.m423
-rw-r--r--m4/gettext.m4401
-rw-r--r--m4/iconv.m4268
-rw-r--r--m4/lcmessage.m432
-rw-r--r--m4/nls.m431
-rw-r--r--m4/po.m4452
-rw-r--r--m4/progtest.m492
-rw-r--r--po/.gitignore18
-rw-r--r--po/ChangeLog35
-rw-r--r--po/Makefile.in.in453
-rw-r--r--po/Makevars24
-rw-r--r--po/Rules-quot47
-rw-r--r--po/boldquot.sed10
-rw-r--r--po/de.po1821
-rw-r--r--po/en@boldquot.header25
-rw-r--r--po/en@quot.header22
-rw-r--r--po/es.po1849
-rw-r--r--po/fr.po5665
-rw-r--r--po/insert-header.sin23
-rw-r--r--po/it.po5666
-rw-r--r--po/ja.po1846
-rw-r--r--po/nl.po5666
-rw-r--r--po/pl.po1849
-rw-r--r--po/quot.sed6
-rw-r--r--po/remove-potcdate.sin19
-rw-r--r--po/ru.po5665
-rw-r--r--po/uk.po2445
-rw-r--r--po/zh_CN.po5666
-rwxr-xr-xpost_update.sh20
-rw-r--r--src/.gitignore17
-rw-r--r--src/ChangeLog263
-rw-r--r--src/Makefile.am6
-rw-r--r--src/addr2line.c55
-rw-r--r--src/ar.c187
-rw-r--r--src/arlib-argp.c21
-rw-r--r--src/arlib.c4
-rw-r--r--src/elfclassify.c9
-rw-r--r--src/elfcmp.c94
-rw-r--r--src/elfcompress.c2
-rw-r--r--src/elflint.c885
-rw-r--r--src/findtextrel.c42
-rw-r--r--src/nm.c132
-rw-r--r--src/objdump.c31
-rw-r--r--src/ranlib.c58
-rw-r--r--src/readelf.c1142
-rw-r--r--src/size.c37
-rw-r--r--src/stack.c9
-rw-r--r--src/strings.c22
-rw-r--r--src/strip.c621
-rw-r--r--src/unstrip.c34
-rw-r--r--tests/.gitignore114
-rw-r--r--tests/ChangeLog437
-rw-r--r--tests/Makefile.am112
-rw-r--r--tests/addrcfi.c2
-rw-r--r--tests/alldts.c3
-rw-r--r--tests/arextract.c2
-rw-r--r--tests/asm-tst1.c1
-rw-r--r--tests/asm-tst2.c1
-rw-r--r--tests/asm-tst3.c1
-rw-r--r--tests/asm-tst4.c1
-rw-r--r--tests/asm-tst5.c1
-rw-r--r--tests/asm-tst6.c1
-rw-r--r--tests/asm-tst7.c1
-rw-r--r--tests/asm-tst8.c1
-rw-r--r--tests/asm-tst9.c1
-rw-r--r--tests/backtrace-data.c1
-rw-r--r--tests/configure.ac58
-rwxr-xr-xtests/coverage.sh2
-rw-r--r--tests/debuginfod-debs/hithere-dbgsym_1.0-1_amd64.ddebbin0 -> 3820 bytes
-rw-r--r--tests/debuginfod-debs/hithere_1.0-1.debian.tar.xzbin0 -> 764 bytes
-rw-r--r--tests/debuginfod-debs/hithere_1.0-1.dsc19
-rw-r--r--tests/debuginfod-debs/hithere_1.0-1_amd64.debbin0 -> 3020 bytes
-rw-r--r--tests/debuginfod-debs/hithere_1.0.orig.tar.gzbin0 -> 617 bytes
-rw-r--r--tests/debuginfod-rpms/fedora31/hello3-1.0-2.src.rpmbin0 -> 8135 bytes
-rw-r--r--tests/debuginfod-rpms/fedora31/hello3-1.0-2.x86_64.rpmbin0 -> 10350 bytes
-rw-r--r--tests/debuginfod-rpms/fedora31/hello3-debuginfo-1.0-2.x86_64.rpmbin0 -> 11223 bytes
-rw-r--r--tests/debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpmbin0 -> 7268 bytes
-rw-r--r--tests/debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpmbin0 -> 10263 bytes
-rw-r--r--tests/debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpmbin0 -> 10806 bytes
-rw-r--r--tests/debuginfod-rpms/hello3.spec.60
-rw-r--r--tests/debuginfod-tars/hello-1-1-x86_64.pkg.tar.xzbin0 -> 3572 bytes
-rw-r--r--tests/debuginfod-tars/hello-debug-1-1-x86_64.pkg.tar.bz2bin0 -> 5814 bytes
-rw-r--r--tests/debuginfod-tars/pacman-sources/PKGBUILD19
-rw-r--r--tests/debuginfod-tars/pacman-sources/README.md19
-rw-r--r--tests/debuginfod-tars/pacman-sources/hello.c6
-rw-r--r--tests/dwarf-die-addr-die.c2
-rw-r--r--tests/dwfl-bug-fd-leak.c11
-rw-r--r--tests/dwfl-proc-attach.c19
-rw-r--r--tests/dwfl-report-segment-contiguous.c82
-rw-r--r--tests/dwflmodtest.c4
-rw-r--r--tests/ecp.c2
-rw-r--r--tests/elfputzdata.c21
-rw-r--r--tests/elfstrmerge.c4
-rw-r--r--tests/elfstrtab.c7
-rw-r--r--tests/emptyfile.c7
-rw-r--r--tests/fillfile.c7
-rw-r--r--tests/getphdrnum.c48
-rw-r--r--tests/leb128.c173
-rw-r--r--tests/newdata.c3
-rw-r--r--tests/read_unaligned.c564
-rwxr-xr-xtests/run-allfcts.sh79
-rwxr-xr-xtests/run-allregs.sh69
-rwxr-xr-xtests/run-ar.sh2
-rwxr-xr-xtests/run-backtrace-core-aarch64.sh2
-rwxr-xr-xtests/run-backtrace-core-i386.sh2
-rwxr-xr-xtests/run-backtrace-core-ppc.sh2
-rwxr-xr-xtests/run-backtrace-core-s390.sh2
-rwxr-xr-xtests/run-backtrace-core-s390x.sh2
-rwxr-xr-xtests/run-backtrace-core-sparc.sh2
-rwxr-xr-xtests/run-backtrace-core-x32.sh2
-rwxr-xr-xtests/run-backtrace-core-x86_64.sh2
-rwxr-xr-xtests/run-backtrace-data.sh2
-rwxr-xr-xtests/run-backtrace-demangle.sh2
-rwxr-xr-xtests/run-backtrace-dwarf.sh2
-rwxr-xr-xtests/run-backtrace-fp-core-aarch64.sh2
-rwxr-xr-xtests/run-backtrace-fp-core-i386.sh2
-rwxr-xr-xtests/run-backtrace-fp-core-ppc64le.sh2
-rwxr-xr-xtests/run-backtrace-fp-core-x86_64.sh2
-rwxr-xr-xtests/run-backtrace-native-biarch.sh2
-rwxr-xr-xtests/run-backtrace-native-core-biarch.sh2
-rwxr-xr-xtests/run-backtrace-native-core.sh2
-rwxr-xr-xtests/run-backtrace-native.sh2
-rwxr-xr-xtests/run-debuginfod-find.sh338
-rwxr-xr-xtests/run-deleted.sh2
-rwxr-xr-xtests/run-disasm-x86-64.sh2
-rwxr-xr-xtests/run-disasm-x86.sh2
-rwxr-xr-xtests/run-dwelf_elf_e_machine_string.sh2
-rwxr-xr-xtests/run-elfclassify.sh4
-rwxr-xr-xtests/run-getphdrnum.sh137
-rwxr-xr-xtests/run-large-elf-file.sh2
-rwxr-xr-xtests/run-lfs-symbols.sh31
-rwxr-xr-xtests/run-linkmap-cut.sh2
-rwxr-xr-xtests/run-nm-syms.sh166
-rwxr-xr-xtests/run-pt_gnu_prop-tests.sh135
-rwxr-xr-xtests/run-readelf-compressed-zstd.sh39
-rwxr-xr-xtests/run-readelf-frames.sh173
-rwxr-xr-xtests/run-readelf-line.sh2
-rwxr-xr-xtests/run-readelf-n.sh31
-rwxr-xr-xtests/run-retain.sh44
-rwxr-xr-xtests/run-stack-demangled-test.sh2
-rwxr-xr-xtests/run-strip-g.sh2
-rwxr-xr-xtests/run-strip-nothing.sh2
-rwxr-xr-xtests/run-test-includes.sh26
-rwxr-xr-xtests/run-varlocs-self.sh4
-rw-r--r--tests/sectiondump.c6
-rw-r--r--tests/test-subr.sh13
-rwxr-xr-xtests/test-wrapper.sh10
-rwxr-xr-xtests/testfile-gnu-property-note-aarch64.bz2bin0 -> 1952 bytes
-rwxr-xr-xtests/testfile-lto-gcc10.bz2bin0 -> 4319 bytes
-rwxr-xr-xtests/testfile-lto-gcc8.bz2bin0 -> 3686 bytes
-rwxr-xr-xtests/testfile-lto-gcc9.bz2bin0 -> 3809 bytes
-rw-r--r--tests/testfile-phdrs.elf.bz2bin0 -> 188 bytes
-rw-r--r--tests/testfile-retain.o.bz2bin0 -> 261 bytes
-rwxr-xr-xtests/testfile60.bz2bin2974 -> 0 bytes
-rwxr-xr-xtests/testfile_pt_gnu_prop.bz2bin0 -> 1593 bytes
-rwxr-xr-xtests/testfile_pt_gnu_prop32.bz2bin0 -> 1777 bytes
-rw-r--r--tests/testfilesyms32.bz2bin0 -> 771 bytes
-rw-r--r--tests/testfilesyms64.bz2bin0 -> 652 bytes
-rw-r--r--tests/update1.c3
-rw-r--r--tests/update2.c3
-rw-r--r--tests/update3.c3
-rw-r--r--tests/update4.c3
-rw-r--r--tests/varlocs.c2
-rw-r--r--tests/vdsosyms.c2
-rw-r--r--tests/vendorelf.c5
-rw-r--r--tests/zstrptr.c43
-rw-r--r--version.h2
355 files changed, 16515 insertions, 41881 deletions
diff --git a/.gitignore b/.gitignore
index 72f22855..8bcd88d7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
-#*
*#
*.a
+*.gcda
+*.gcno
*.o
*.orig
*.os
@@ -8,160 +9,25 @@
*.rej
*.so
*.so.1
-*/Makefile.in
*~
.#*
.deps
.glimpse_*
=*
-/INSTALL
Makefile
Makefile.in
+/*.lcov
+/ABOUT-NLS
+/INSTALL
/aclocal.m4
/autom4te.*
-/backends/*.map
/config.cache
/config.h
/config.h.in
/config.log
/config.status
-/config/ar-lib
-/config/compile
-/config/config.guess
-/config/config.sub
-/config/depcomp
-/config/install-sh
-/config/libdw.pc
-/config/libelf.pc
-/config/missing
-/config/test-driver
-/config/ylwrap
/configure
+/coverage
/elfutils.spec
-/libcpu/*_dis.h
-/libcpu/*.mnemonics
-/libcpu/*_gendis
-/libcpu/*_lex.c
-/libcpu/*_parse.[ch]
-/libdw/known-dwarf.h
-/po/*.gmo
-/po/*.pot
-/po/en@boldquot.insert-header
-/po/en@boldquot.po
-/po/en@quot.insert-header
-/po/en@quot.po
-/po/Makevars.template
-/po/POTFILES
-/po/remove-potcdate.sed
-/po/stamp-po
-/src/addr2line
-/src/ar
-/src/elfclassify
-/src/elfcmp
-/src/elfcompress
-/src/elflint
-/src/findtextrel
-/src/make-debug-archive
-/src/nm
-/src/objdump
-/src/ranlib
-/src/readelf
-/src/size
-/src/stack
-/src/strings
-/src/strip
-/src/unstrip
/stamp-h1
-/tests/*.log
-/tests/*.trs
-/tests/addrcfi
-/tests/addrscopes
-/tests/aggregate_size
-/tests/alldts
-/tests/allfcts
-/tests/allregs
-/tests/arextract
-/tests/arls
-/tests/arsymtest
-/tests/asm-tst1
-/tests/asm-tst2
-/tests/asm-tst3
-/tests/asm-tst4
-/tests/asm-tst5
-/tests/asm-tst6
-/tests/asm-tst7
-/tests/asm-tst8
-/tests/asm-tst9
-/tests/backtrace
-/tests/backtrace-child
-/tests/backtrace-child-biarch
-/tests/backtrace-data
-/tests/backtrace-dwarf
-/tests/buildid
-/tests/debugaltlink
-/tests/debuglink
-/tests/deleted
-/tests/dwarf-getmacros
-/tests/dwarf-getstring
-/tests/dwarf-ranges
-/tests/dwelfgnucompressed
-/tests/dwfl-addr-sect
-/tests/dwfl-bug-addr-overflow
-/tests/dwfl-bug-fd-leak
-/tests/dwfl-bug-getmodules
-/tests/dwfl-bug-report
-/tests/dwfl-proc-attach
-/tests/dwfl-report-elf-align
-/tests/dwfllines
-/tests/dwflmodtest
-/tests/dwflsyms
-/tests/early-offscn
-/tests/ecp
-/tests/elfgetchdr
-/tests/elfgetzdata
-/tests/elfputzdata
-/tests/elfshphehdr
-/tests/elfstrmerge
-/tests/elfstrtab
-/tests/emptyfile
-/tests/fillfile
-/tests/find-prologues
-/tests/funcretval
-/tests/funcscopes
-/tests/get-aranges
-/tests/get-files
-/tests/get-lines
-/tests/get-pubnames
-/tests/getsrc_die
-/tests/hash
-/tests/line2addr
-/tests/low_high_pc
-/tests/msg_tst
-/tests/newdata
-/tests/newfile
-/tests/newscn
-/tests/peel_type
-/tests/rdwrmmap
-/tests/rerequest_tag
-/tests/saridx
-/tests/scnnames
-/tests/sectiondump
-/tests/show-abbrev
-/tests/show-die-info
-/tests/showptable
-/tests/strptr
-/tests/system-elf-libelf-test
-/tests/test-elf_cntl_gelf_getshdr
-/tests/test-flag-nobits
-/tests/test-nlist
-/tests/typeiter
-/tests/typeiter2
-/tests/update1
-/tests/update2
-/tests/update3
-/tests/update4
-/tests/varlocs
-/tests/vendorelf
-/tests/vdsosyms
-/tests/zstrptr
/version.h
diff --git a/ABOUT-NLS b/ABOUT-NLS
deleted file mode 100644
index 83bc72ec..00000000
--- a/ABOUT-NLS
+++ /dev/null
@@ -1,1068 +0,0 @@
-1 Notes on the Free Translation Project
-***************************************
-
-Free software is going international! The Free Translation Project is
-a way to get maintainers of free software, translators, and users all
-together, so that free software will gradually become able to speak many
-languages. A few packages already provide translations for their
-messages.
-
- If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
-itself available at your nearest GNU archive site. But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
-this package with messages translated.
-
- Installers will find here some useful hints. These notes also
-explain how users should proceed for getting the programs to use the
-available translations. They tell how people wanting to contribute and
-work on translations can contact the appropriate team.
-
- When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used. The information can be found in the
-`intl/VERSION' file, in internationalized packages.
-
-1.1 Quick configuration advice
-==============================
-
-If you want to exploit the full power of internationalization, you
-should configure it using
-
- ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed. So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation. Future versions of GNU `gettext' will
-very likely convey even more functionality. So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
- So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-1.2 INSTALL Matters
-===================
-
-Some packages are "localizable" when properly installed; the programs
-they contain can be made to speak your own native language. Most such
-packages use GNU `gettext'. Other packages have their own ways to
-internationalization, predating GNU `gettext'.
-
- By default, this package will be installed to allow translation of
-messages. It will automatically detect whether the system already
-provides the GNU `gettext' functions. If not, the included GNU
-`gettext' library will be used. This library is wholly contained
-within this package, usually in the `intl/' subdirectory, so prior
-installation of the GNU `gettext' package is _not_ required.
-Installers may use special options at configuration time for changing
-the default behaviour. The commands:
-
- ./configure --with-included-gettext
- ./configure --disable-nls
-
-will, respectively, bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
-
- When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this. This might not be desirable. You should use
-the more recent version of the GNU `gettext' library. I.e. if the file
-`intl/VERSION' shows that the library which comes with this package is
-more recent, you should use
-
- ./configure --with-included-gettext
-
-to prevent auto-detection.
-
- The configuration process will not test for the `catgets' function
-and therefore it will not be used. The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
-
- Internationalized packages usually have many `po/LL.po' files, where
-LL gives an ISO 639 two-letter code identifying the language. Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package. However, the environment variable `LINGUAS'
-may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
-codes, stating which languages are allowed.
-
-1.3 Using This Package
-======================
-
-As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination. If you happen to have the `LC_ALL' or some other
-`LC_xxx' environment variables set, you should unset them before
-setting `LANG', otherwise the setting of `LANG' will not have the
-desired effect. Here `LL' is an ISO 639 two-letter language code, and
-`CC' is an ISO 3166 two-letter country code. For example, let's
-suppose that you speak German and live in Germany. At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
-
- You might think that the country code specification is redundant.
-But in fact, some languages have dialects in different countries. For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
-country code serves to distinguish the dialects.
-
- The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc. On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
-locales supported by your system for your language by running the
-command `locale -a | grep '^LL''.
-
- Not all programs have translations for all languages. By default, an
-English message is shown in place of a nonexistent translation. If you
-understand other languages, you can set up a priority list of languages.
-This is done through a different environment variable, called
-`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
-set to the primary language; this is required by other parts of the
-system libraries. For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
-
- Special advice for Norwegian users: The language code for Norwegian
-bokma*l changed from `no' to `nb' recently (in 2003). During the
-transition period, while some message catalogs for this language are
-installed under `nb' and some older ones under `no', it's recommended
-for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
-older translations are used.
-
- In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect. For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
-
-1.4 Translating Teams
-=====================
-
-For the Free Translation Project to be a success, we need interested
-people who like their own language and write it well, and who are also
-able to synergize with other translators speaking the same language.
-Each translation team has its own mailing list. The up-to-date list of
-teams can be found at the Free Translation Project's homepage,
-`http://translationproject.org/', in the "Teams" area.
-
- If you'd like to volunteer to _work_ at translating messages, you
-should become a member of the translating team for your own language.
-The subscribing address is _not_ the same as the list itself, it has
-`-request' appended. For example, speakers of Swedish can send a
-message to `sv-request@li.org', having this message body:
-
- subscribe
-
- Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around. If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to `coordinator@translationproject.org' to
-reach the coordinator for all translator teams.
-
- The English team is special. It works at improving and uniformizing
-the terminology in use. Proven linguistic skills are praised more than
-programming skills, here.
-
-1.5 Available Packages
-======================
-
-Languages are not equally supported in all packages. The following
-matrix shows the current state of internationalization, as of November
-2007. The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
-translation percentage of at least 50%.
-
- Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo
- +----------------------------------------------------+
- Compendium | [] [] [] [] |
- a2ps | [] [] [] [] [] |
- aegis | () |
- ant-phone | () |
- anubis | [] |
- ap-utils | |
- aspell | [] [] [] [] [] |
- bash | [] |
- bfd | |
- bibshelf | [] |
- binutils | |
- bison | [] [] |
- bison-runtime | [] |
- bluez-pin | [] [] [] [] [] |
- cflow | [] |
- clisp | [] [] [] |
- console-tools | [] [] |
- coreutils | [] [] [] [] |
- cpio | |
- cpplib | [] [] [] |
- cryptonit | [] |
- dialog | |
- diffutils | [] [] [] [] [] [] |
- doodle | [] |
- e2fsprogs | [] [] |
- enscript | [] [] [] [] |
- fetchmail | [] [] () [] [] |
- findutils | [] |
- findutils_stable | [] [] [] |
- flex | [] [] [] |
- fslint | |
- gas | |
- gawk | [] [] [] |
- gcal | [] |
- gcc | [] |
- gettext-examples | [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] |
- gettext-tools | [] [] |
- gip | [] |
- gliv | [] [] |
- glunarclock | [] |
- gmult | [] [] |
- gnubiff | () |
- gnucash | [] [] () () [] |
- gnuedu | |
- gnulib | [] |
- gnunet | |
- gnunet-gtk | |
- gnutls | [] |
- gpe-aerial | [] [] |
- gpe-beam | [] [] |
- gpe-calendar | |
- gpe-clock | [] [] |
- gpe-conf | [] [] |
- gpe-contacts | |
- gpe-edit | [] |
- gpe-filemanager | |
- gpe-go | [] |
- gpe-login | [] [] |
- gpe-ownerinfo | [] [] |
- gpe-package | |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] |
- gpe-taskmanager | [] [] |
- gpe-timesheet | [] |
- gpe-today | [] [] |
- gpe-todo | |
- gphoto2 | [] [] [] [] |
- gprof | [] [] |
- gpsdrive | |
- gramadoir | [] [] |
- grep | [] [] |
- gretl | () |
- gsasl | |
- gss | |
- gst-plugins-bad | [] [] |
- gst-plugins-base | [] [] |
- gst-plugins-good | [] [] [] |
- gst-plugins-ugly | [] [] |
- gstreamer | [] [] [] [] [] [] [] |
- gtick | () |
- gtkam | [] [] [] [] |
- gtkorphan | [] [] |
- gtkspell | [] [] [] [] |
- gutenprint | [] |
- hello | [] [] [] [] [] |
- herrie | [] |
- hylafax | |
- idutils | [] [] |
- indent | [] [] [] [] |
- iso_15924 | |
- iso_3166 | [] [] [] [] [] [] [] [] [] [] [] |
- iso_3166_2 | |
- iso_4217 | [] [] [] |
- iso_639 | [] [] [] [] |
- jpilot | [] |
- jtag | |
- jwhois | |
- kbd | [] [] [] [] |
- keytouch | [] [] |
- keytouch-editor | [] |
- keytouch-keyboa... | [] |
- latrine | () |
- ld | [] |
- leafpad | [] [] [] [] [] |
- libc | [] [] [] [] |
- libexif | [] |
- libextractor | [] |
- libgpewidget | [] [] [] |
- libgpg-error | [] |
- libgphoto2 | [] [] |
- libgphoto2_port | [] [] |
- libgsasl | |
- libiconv | [] [] |
- libidn | [] [] [] |
- lifelines | [] () |
- lilypond | [] |
- lingoteach | |
- lprng | |
- lynx | [] [] [] [] |
- m4 | [] [] [] [] |
- mailfromd | |
- mailutils | [] |
- make | [] [] |
- man-db | [] [] [] |
- minicom | [] [] [] |
- nano | [] [] [] |
- opcodes | [] |
- parted | [] [] |
- pilot-qof | |
- popt | [] [] [] |
- psmisc | [] |
- pwdutils | |
- qof | |
- radius | [] |
- recode | [] [] [] [] [] [] |
- rpm | [] |
- screem | |
- scrollkeeper | [] [] [] [] [] [] [] [] |
- sed | [] [] [] |
- shared-mime-info | [] [] [] [] () [] [] [] |
- sharutils | [] [] [] [] [] [] |
- shishi | |
- skencil | [] () |
- solfege | |
- soundtracker | [] [] |
- sp | [] |
- system-tools-ba... | [] [] [] [] [] [] [] [] [] |
- tar | [] [] |
- texinfo | [] [] [] |
- tin | () () |
- tuxpaint | [] [] [] [] [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] [] [] |
- util-linux-ng | [] [] [] [] |
- vorbis-tools | [] |
- wastesedge | () |
- wdiff | [] [] [] [] |
- wget | [] [] [] |
- xchat | [] [] [] [] [] [] [] |
- xkeyboard-config | [] |
- xpad | [] [] [] |
- +----------------------------------------------------+
- af am ar az be bg bs ca cs cy da de el en en_GB eo
- 6 0 2 1 8 26 2 40 48 2 56 88 15 1 15 18
-
- es et eu fa fi fr ga gl gu he hi hr hu id is it
- +--------------------------------------------------+
- Compendium | [] [] [] [] [] |
- a2ps | [] [] [] () |
- aegis | |
- ant-phone | [] |
- anubis | [] |
- ap-utils | [] [] |
- aspell | [] [] [] |
- bash | [] |
- bfd | [] [] |
- bibshelf | [] [] [] |
- binutils | [] [] [] |
- bison | [] [] [] [] [] [] |
- bison-runtime | [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] |
- cflow | [] |
- clisp | [] [] |
- console-tools | |
- coreutils | [] [] [] [] [] [] |
- cpio | [] [] [] |
- cpplib | [] [] |
- cryptonit | [] |
- dialog | [] [] [] |
- diffutils | [] [] [] [] [] [] [] [] [] |
- doodle | [] [] |
- e2fsprogs | [] [] [] |
- enscript | [] [] [] |
- fetchmail | [] |
- findutils | [] [] [] |
- findutils_stable | [] [] [] [] |
- flex | [] [] [] |
- fslint | |
- gas | [] [] |
- gawk | [] [] [] [] () |
- gcal | [] [] |
- gcc | [] |
- gettext-examples | [] [] [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] [] |
- gettext-tools | [] [] [] [] |
- gip | [] [] [] [] |
- gliv | () |
- glunarclock | [] [] [] |
- gmult | [] [] [] |
- gnubiff | () () |
- gnucash | () () () |
- gnuedu | [] |
- gnulib | [] [] [] |
- gnunet | |
- gnunet-gtk | |
- gnutls | |
- gpe-aerial | [] [] |
- gpe-beam | [] [] |
- gpe-calendar | |
- gpe-clock | [] [] [] [] |
- gpe-conf | [] |
- gpe-contacts | [] [] |
- gpe-edit | [] [] [] [] |
- gpe-filemanager | [] |
- gpe-go | [] [] [] |
- gpe-login | [] [] [] |
- gpe-ownerinfo | [] [] [] [] [] |
- gpe-package | [] |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] [] [] |
- gpe-taskmanager | [] [] [] |
- gpe-timesheet | [] [] [] [] |
- gpe-today | [] [] [] [] |
- gpe-todo | [] |
- gphoto2 | [] [] [] [] [] |
- gprof | [] [] [] [] [] |
- gpsdrive | [] |
- gramadoir | [] [] |
- grep | [] [] [] |
- gretl | [] [] [] () |
- gsasl | [] [] |
- gss | [] [] |
- gst-plugins-bad | [] [] [] [] |
- gst-plugins-base | [] [] [] [] |
- gst-plugins-good | [] [] [] [] [] |
- gst-plugins-ugly | [] [] [] [] |
- gstreamer | [] [] [] |
- gtick | [] [] [] |
- gtkam | [] [] [] [] |
- gtkorphan | [] [] |
- gtkspell | [] [] [] [] [] [] [] |
- gutenprint | [] |
- hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
- herrie | [] |
- hylafax | |
- idutils | [] [] [] [] [] |
- indent | [] [] [] [] [] [] [] [] [] [] |
- iso_15924 | [] |
- iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] |
- iso_3166_2 | [] |
- iso_4217 | [] [] [] [] [] [] |
- iso_639 | [] [] [] [] [] [] |
- jpilot | [] [] |
- jtag | [] |
- jwhois | [] [] [] [] [] |
- kbd | [] [] |
- keytouch | [] [] [] |
- keytouch-editor | [] |
- keytouch-keyboa... | [] [] |
- latrine | [] [] |
- ld | [] [] [] [] |
- leafpad | [] [] [] [] [] [] |
- libc | [] [] [] [] [] |
- libexif | [] |
- libextractor | [] |
- libgpewidget | [] [] [] [] [] |
- libgpg-error | [] |
- libgphoto2 | [] [] [] |
- libgphoto2_port | [] [] |
- libgsasl | [] [] |
- libiconv | [] [] [] |
- libidn | [] [] |
- lifelines | () |
- lilypond | [] [] [] |
- lingoteach | [] [] [] |
- lprng | |
- lynx | [] [] [] |
- m4 | [] [] [] [] |
- mailfromd | |
- mailutils | [] [] |
- make | [] [] [] [] [] [] [] [] |
- man-db | [] |
- minicom | [] [] [] [] |
- nano | [] [] [] [] [] [] [] |
- opcodes | [] [] [] [] |
- parted | [] [] [] |
- pilot-qof | |
- popt | [] [] [] [] |
- psmisc | [] [] |
- pwdutils | |
- qof | [] |
- radius | [] [] |
- recode | [] [] [] [] [] [] [] [] |
- rpm | [] [] |
- screem | |
- scrollkeeper | [] [] [] |
- sed | [] [] [] [] [] |
- shared-mime-info | [] [] [] [] [] [] |
- sharutils | [] [] [] [] [] [] [] [] |
- shishi | [] |
- skencil | [] [] |
- solfege | [] |
- soundtracker | [] [] [] |
- sp | [] |
- system-tools-ba... | [] [] [] [] [] [] [] [] [] |
- tar | [] [] [] [] [] |
- texinfo | [] [] [] |
- tin | [] () |
- tuxpaint | [] [] |
- unicode-han-tra... | |
- unicode-transla... | [] [] |
- util-linux | [] [] [] [] [] [] [] |
- util-linux-ng | [] [] [] [] [] [] [] |
- vorbis-tools | |
- wastesedge | () |
- wdiff | [] [] [] [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] [] |
- xchat | [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] [] [] |
- xpad | [] [] [] |
- +--------------------------------------------------+
- es et eu fa fi fr ga gl gu he hi hr hu id is it
- 85 22 14 2 48 101 61 12 2 8 2 6 53 29 1 52
-
- ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn
- +--------------------------------------------------+
- Compendium | [] |
- a2ps | () [] [] |
- aegis | () |
- ant-phone | [] |
- anubis | [] [] [] |
- ap-utils | [] |
- aspell | [] [] |
- bash | [] |
- bfd | |
- bibshelf | [] |
- binutils | |
- bison | [] [] [] |
- bison-runtime | [] [] [] |
- bluez-pin | [] [] [] |
- cflow | |
- clisp | [] |
- console-tools | |
- coreutils | [] |
- cpio | [] |
- cpplib | [] |
- cryptonit | [] |
- dialog | [] [] |
- diffutils | [] [] [] |
- doodle | |
- e2fsprogs | [] |
- enscript | [] |
- fetchmail | [] [] |
- findutils | [] |
- findutils_stable | [] |
- flex | [] [] |
- fslint | |
- gas | |
- gawk | [] [] |
- gcal | |
- gcc | |
- gettext-examples | [] [] [] |
- gettext-runtime | [] [] [] |
- gettext-tools | [] [] |
- gip | [] [] |
- gliv | [] |
- glunarclock | [] [] |
- gmult | [] [] [] |
- gnubiff | |
- gnucash | () () () |
- gnuedu | |
- gnulib | [] [] |
- gnunet | |
- gnunet-gtk | |
- gnutls | [] |
- gpe-aerial | [] |
- gpe-beam | [] |
- gpe-calendar | [] |
- gpe-clock | [] [] [] |
- gpe-conf | [] [] [] |
- gpe-contacts | [] |
- gpe-edit | [] [] [] |
- gpe-filemanager | [] [] |
- gpe-go | [] [] [] |
- gpe-login | [] [] [] |
- gpe-ownerinfo | [] [] |
- gpe-package | [] [] |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] [] |
- gpe-taskmanager | [] [] [] [] |
- gpe-timesheet | [] |
- gpe-today | [] [] |
- gpe-todo | [] |
- gphoto2 | [] [] |
- gprof | [] |
- gpsdrive | [] |
- gramadoir | () |
- grep | [] [] |
- gretl | |
- gsasl | [] |
- gss | |
- gst-plugins-bad | [] |
- gst-plugins-base | [] |
- gst-plugins-good | [] |
- gst-plugins-ugly | [] |
- gstreamer | [] |
- gtick | [] |
- gtkam | [] [] |
- gtkorphan | [] |
- gtkspell | [] [] |
- gutenprint | [] |
- hello | [] [] [] [] [] [] [] |
- herrie | [] |
- hylafax | |
- idutils | [] |
- indent | [] [] |
- iso_15924 | [] |
- iso_3166 | [] [] [] [] [] [] [] [] |
- iso_3166_2 | [] |
- iso_4217 | [] [] [] |
- iso_639 | [] [] [] [] |
- jpilot | () () |
- jtag | |
- jwhois | [] |
- kbd | [] |
- keytouch | [] |
- keytouch-editor | [] |
- keytouch-keyboa... | |
- latrine | [] |
- ld | |
- leafpad | [] [] |
- libc | [] [] [] |
- libexif | |
- libextractor | |
- libgpewidget | [] |
- libgpg-error | |
- libgphoto2 | [] |
- libgphoto2_port | [] |
- libgsasl | [] |
- libiconv | [] |
- libidn | [] [] |
- lifelines | [] |
- lilypond | [] |
- lingoteach | [] |
- lprng | |
- lynx | [] [] |
- m4 | [] [] |
- mailfromd | |
- mailutils | |
- make | [] [] [] |
- man-db | |
- minicom | [] |
- nano | [] [] [] |
- opcodes | [] |
- parted | [] [] |
- pilot-qof | |
- popt | [] [] [] |
- psmisc | [] [] [] |
- pwdutils | |
- qof | |
- radius | |
- recode | [] |
- rpm | [] [] |
- screem | [] |
- scrollkeeper | [] [] [] [] |
- sed | [] [] |
- shared-mime-info | [] [] [] [] [] [] [] |
- sharutils | [] [] |
- shishi | |
- skencil | |
- solfege | () () |
- soundtracker | |
- sp | () |
- system-tools-ba... | [] [] [] [] |
- tar | [] [] [] |
- texinfo | [] [] |
- tin | |
- tuxpaint | () [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] |
- util-linux-ng | [] [] |
- vorbis-tools | |
- wastesedge | [] |
- wdiff | [] [] |
- wget | [] [] |
- xchat | [] [] [] [] |
- xkeyboard-config | [] [] [] |
- xpad | [] [] [] |
- +--------------------------------------------------+
- ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn
- 51 2 25 3 2 0 6 0 2 2 20 0 11 1 103 6
-
- or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
- +--------------------------------------------------+
- Compendium | [] [] [] [] [] |
- a2ps | () [] [] [] [] [] [] |
- aegis | () () |
- ant-phone | [] [] |
- anubis | [] [] [] |
- ap-utils | () |
- aspell | [] [] [] |
- bash | [] [] |
- bfd | |
- bibshelf | [] |
- binutils | [] [] |
- bison | [] [] [] [] [] |
- bison-runtime | [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] [] [] [] [] |
- cflow | [] |
- clisp | [] |
- console-tools | [] |
- coreutils | [] [] [] [] |
- cpio | [] [] [] |
- cpplib | [] |
- cryptonit | [] [] |
- dialog | [] |
- diffutils | [] [] [] [] [] [] |
- doodle | [] [] |
- e2fsprogs | [] [] |
- enscript | [] [] [] [] [] |
- fetchmail | [] [] [] |
- findutils | [] [] [] |
- findutils_stable | [] [] [] [] [] [] |
- flex | [] [] [] [] [] |
- fslint | [] |
- gas | |
- gawk | [] [] [] [] |
- gcal | [] |
- gcc | [] [] |
- gettext-examples | [] [] [] [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] [] [] [] |
- gettext-tools | [] [] [] [] [] [] [] |
- gip | [] [] [] [] |
- gliv | [] [] [] [] [] [] |
- glunarclock | [] [] [] [] [] [] |
- gmult | [] [] [] [] |
- gnubiff | () [] |
- gnucash | () [] |
- gnuedu | |
- gnulib | [] [] [] |
- gnunet | |
- gnunet-gtk | [] |
- gnutls | [] [] |
- gpe-aerial | [] [] [] [] [] [] [] |
- gpe-beam | [] [] [] [] [] [] [] |
- gpe-calendar | [] [] [] [] |
- gpe-clock | [] [] [] [] [] [] [] [] |
- gpe-conf | [] [] [] [] [] [] [] |
- gpe-contacts | [] [] [] [] [] |
- gpe-edit | [] [] [] [] [] [] [] [] [] |
- gpe-filemanager | [] [] |
- gpe-go | [] [] [] [] [] [] [] [] |
- gpe-login | [] [] [] [] [] [] [] [] |
- gpe-ownerinfo | [] [] [] [] [] [] [] [] |
- gpe-package | [] [] |
- gpe-sketchbook | [] [] [] [] [] [] [] [] |
- gpe-su | [] [] [] [] [] [] [] [] |
- gpe-taskmanager | [] [] [] [] [] [] [] [] |
- gpe-timesheet | [] [] [] [] [] [] [] [] |
- gpe-today | [] [] [] [] [] [] [] [] |
- gpe-todo | [] [] [] [] |
- gphoto2 | [] [] [] [] [] [] |
- gprof | [] [] [] |
- gpsdrive | [] [] |
- gramadoir | [] [] |
- grep | [] [] [] [] |
- gretl | [] [] [] |
- gsasl | [] [] [] |
- gss | [] [] [] [] |
- gst-plugins-bad | [] [] [] |
- gst-plugins-base | [] [] |
- gst-plugins-good | [] [] |
- gst-plugins-ugly | [] [] [] |
- gstreamer | [] [] [] [] |
- gtick | [] |
- gtkam | [] [] [] [] [] |
- gtkorphan | [] |
- gtkspell | [] [] [] [] [] [] [] [] |
- gutenprint | [] |
- hello | [] [] [] [] [] [] [] [] |
- herrie | [] [] [] |
- hylafax | |
- idutils | [] [] [] [] [] |
- indent | [] [] [] [] [] [] [] |
- iso_15924 | |
- iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] |
- iso_3166_2 | |
- iso_4217 | [] [] [] [] [] [] [] |
- iso_639 | [] [] [] [] [] [] [] |
- jpilot | |
- jtag | [] |
- jwhois | [] [] [] [] |
- kbd | [] [] [] |
- keytouch | [] |
- keytouch-editor | [] |
- keytouch-keyboa... | [] |
- latrine | |
- ld | [] |
- leafpad | [] [] [] [] [] [] |
- libc | [] [] [] [] |
- libexif | [] [] |
- libextractor | [] [] |
- libgpewidget | [] [] [] [] [] [] [] [] |
- libgpg-error | [] [] [] |
- libgphoto2 | [] |
- libgphoto2_port | [] [] [] |
- libgsasl | [] [] [] [] |
- libiconv | [] [] [] |
- libidn | [] [] () |
- lifelines | [] [] |
- lilypond | |
- lingoteach | [] |
- lprng | [] |
- lynx | [] [] [] |
- m4 | [] [] [] [] [] |
- mailfromd | [] |
- mailutils | [] [] [] |
- make | [] [] [] [] |
- man-db | [] [] [] [] |
- minicom | [] [] [] [] [] |
- nano | [] [] [] [] |
- opcodes | [] [] |
- parted | [] |
- pilot-qof | |
- popt | [] [] [] [] |
- psmisc | [] [] |
- pwdutils | [] [] |
- qof | [] [] |
- radius | [] [] |
- recode | [] [] [] [] [] [] [] |
- rpm | [] [] [] [] |
- screem | |
- scrollkeeper | [] [] [] [] [] [] [] |
- sed | [] [] [] [] [] [] [] [] [] |
- shared-mime-info | [] [] [] [] [] [] |
- sharutils | [] [] [] [] |
- shishi | [] |
- skencil | [] [] [] |
- solfege | [] |
- soundtracker | [] [] |
- sp | |
- system-tools-ba... | [] [] [] [] [] [] [] [] [] |
- tar | [] [] [] [] |
- texinfo | [] [] [] [] |
- tin | () |
- tuxpaint | [] [] [] [] [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] [] [] |
- util-linux-ng | [] [] [] [] |
- vorbis-tools | [] |
- wastesedge | |
- wdiff | [] [] [] [] [] [] [] |
- wget | [] [] [] [] |
- xchat | [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] [] |
- xpad | [] [] [] |
- +--------------------------------------------------+
- or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
- 0 5 77 31 53 4 58 72 3 45 46 9 45 122 3
-
- tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
- +---------------------------------------------------+
- Compendium | [] [] [] [] | 19
- a2ps | [] [] [] | 19
- aegis | [] | 1
- ant-phone | [] [] | 6
- anubis | [] [] [] | 11
- ap-utils | () [] | 4
- aspell | [] [] [] | 16
- bash | [] | 6
- bfd | | 2
- bibshelf | [] | 7
- binutils | [] [] [] [] | 9
- bison | [] [] [] [] | 20
- bison-runtime | [] [] [] [] | 18
- bluez-pin | [] [] [] [] [] [] | 28
- cflow | [] [] | 5
- clisp | | 9
- console-tools | [] [] | 5
- coreutils | [] [] [] | 18
- cpio | [] [] [] [] | 11
- cpplib | [] [] [] [] [] | 12
- cryptonit | [] | 6
- dialog | [] [] [] | 9
- diffutils | [] [] [] [] [] | 29
- doodle | [] | 6
- e2fsprogs | [] [] | 10
- enscript | [] [] [] | 16
- fetchmail | [] [] | 12
- findutils | [] [] [] | 11
- findutils_stable | [] [] [] [] | 18
- flex | [] [] | 15
- fslint | [] | 2
- gas | [] | 3
- gawk | [] [] [] | 16
- gcal | [] | 5
- gcc | [] [] [] | 7
- gettext-examples | [] [] [] [] [] [] | 29
- gettext-runtime | [] [] [] [] [] [] | 28
- gettext-tools | [] [] [] [] [] | 20
- gip | [] [] | 13
- gliv | [] [] | 11
- glunarclock | [] [] [] | 15
- gmult | [] [] [] [] | 16
- gnubiff | [] | 2
- gnucash | () [] | 5
- gnuedu | [] | 2
- gnulib | [] | 10
- gnunet | | 0
- gnunet-gtk | [] [] | 3
- gnutls | | 4
- gpe-aerial | [] [] | 14
- gpe-beam | [] [] | 14
- gpe-calendar | [] [] | 7
- gpe-clock | [] [] [] [] | 21
- gpe-conf | [] [] [] | 16
- gpe-contacts | [] [] | 10
- gpe-edit | [] [] [] [] [] | 22
- gpe-filemanager | [] [] | 7
- gpe-go | [] [] [] [] | 19
- gpe-login | [] [] [] [] [] | 21
- gpe-ownerinfo | [] [] [] [] | 21
- gpe-package | [] | 6
- gpe-sketchbook | [] [] | 16
- gpe-su | [] [] [] [] | 21
- gpe-taskmanager | [] [] [] [] | 21
- gpe-timesheet | [] [] [] [] | 18
- gpe-today | [] [] [] [] [] | 21
- gpe-todo | [] [] | 8
- gphoto2 | [] [] [] [] | 21
- gprof | [] [] | 13
- gpsdrive | [] | 5
- gramadoir | [] | 7
- grep | [] | 12
- gretl | | 6
- gsasl | [] [] [] | 9
- gss | [] | 7
- gst-plugins-bad | [] [] [] | 13
- gst-plugins-base | [] [] | 11
- gst-plugins-good | [] [] [] [] [] | 16
- gst-plugins-ugly | [] [] [] | 13
- gstreamer | [] [] [] | 18
- gtick | [] [] | 7
- gtkam | [] | 16
- gtkorphan | [] | 7
- gtkspell | [] [] [] [] [] [] | 27
- gutenprint | | 4
- hello | [] [] [] [] [] | 38
- herrie | [] [] | 8
- hylafax | | 0
- idutils | [] [] | 15
- indent | [] [] [] [] [] | 28
- iso_15924 | [] [] | 4
- iso_3166 | [] [] [] [] [] [] [] [] [] | 54
- iso_3166_2 | [] [] | 4
- iso_4217 | [] [] [] [] [] | 24
- iso_639 | [] [] [] [] [] | 26
- jpilot | [] [] [] [] | 7
- jtag | [] | 3
- jwhois | [] [] [] | 13
- kbd | [] [] [] | 13
- keytouch | [] | 8
- keytouch-editor | [] | 5
- keytouch-keyboa... | [] | 5
- latrine | [] [] | 5
- ld | [] [] [] [] | 10
- leafpad | [] [] [] [] [] | 24
- libc | [] [] [] | 19
- libexif | [] | 5
- libextractor | [] | 5
- libgpewidget | [] [] [] | 20
- libgpg-error | [] | 6
- libgphoto2 | [] [] | 9
- libgphoto2_port | [] [] [] | 11
- libgsasl | [] | 8
- libiconv | [] [] | 11
- libidn | [] [] | 11
- lifelines | | 4
- lilypond | [] | 6
- lingoteach | [] | 6
- lprng | [] | 2
- lynx | [] [] [] | 15
- m4 | [] [] [] | 18
- mailfromd | [] [] | 3
- mailutils | [] [] | 8
- make | [] [] [] | 20
- man-db | [] | 9
- minicom | [] | 14
- nano | [] [] [] | 20
- opcodes | [] [] | 10
- parted | [] [] [] | 11
- pilot-qof | [] | 1
- popt | [] [] [] [] | 18
- psmisc | [] [] | 10
- pwdutils | [] | 3
- qof | [] | 4
- radius | [] [] | 7
- recode | [] [] [] | 25
- rpm | [] [] [] [] | 13
- screem | [] | 2
- scrollkeeper | [] [] [] [] | 26
- sed | [] [] [] [] | 23
- shared-mime-info | [] [] [] | 29
- sharutils | [] [] [] | 23
- shishi | [] | 3
- skencil | [] | 7
- solfege | [] | 3
- soundtracker | [] [] | 9
- sp | [] | 3
- system-tools-ba... | [] [] [] [] [] [] [] | 38
- tar | [] [] [] | 17
- texinfo | [] [] [] | 15
- tin | | 1
- tuxpaint | [] [] [] | 19
- unicode-han-tra... | | 0
- unicode-transla... | | 2
- util-linux | [] [] [] | 20
- util-linux-ng | [] [] [] | 20
- vorbis-tools | [] [] | 4
- wastesedge | | 1
- wdiff | [] [] | 23
- wget | [] [] [] | 20
- xchat | [] [] [] [] | 29
- xkeyboard-config | [] [] [] | 14
- xpad | [] [] [] | 15
- +---------------------------------------------------+
- 76 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
- 163 domains 0 3 1 74 51 0 143 21 1 57 7 45 0 2036
-
- Some counters in the preceding matrix are higher than the number of
-visible blocks let us expect. This is because a few extra PO files are
-used for implementing regional variants of languages, or language
-dialects.
-
- For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer. There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
- If November 2007 seems to be old, you may fetch a more recent copy
-of this `ABOUT-NLS' file on most GNU archive sites. The most
-up-to-date matrix with full percentage details can be found at
-`http://translationproject.org/extra/matrix.html'.
-
-1.6 Using `gettext' in new packages
-===================================
-
-If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package. Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library. This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
-
- Once the sources are changed appropriately and the setup can handle
-the use of `gettext' the only thing missing are the translations. The
-Free Translation Project is also available for packages which are not
-developed inside the GNU project. Therefore the information given above
-applies also for every other Free Software Project. Contact
-`coordinator@translationproject.org' to make the `.pot' files available
-to the translation teams.
-
diff --git a/Android.bp b/Android.bp
index 375e36d1..2ca70cc9 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,3 +1,104 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE
+// CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
+// DEPENDING ON IT IN YOUR PROJECT. ***
+package {
+ default_applicable_licenses: ["external_elfutils_license"],
+}
+
+// http://go/android-license-faq
+license {
+ name: "external_elfutils_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ "SPDX-license-identifier-BSD",
+ "SPDX-license-identifier-GFDL", // by exception only
+ "SPDX-license-identifier-GPL-2.0-or-later",
+ "SPDX-license-identifier-GPL-3.0-or-later",
+ "SPDX-license-identifier-LGPL-3.0-or-later",
+ ],
+ license_text: [
+ "COPYING",
+ "COPYING-GPLV2",
+ "COPYING-LGPLV3",
+ "NOTICE",
+ ],
+}
+
+cc_defaults {
+ name: "elfutils_defaults",
+ cflags: [
+ "-DHAVE_CONFIG_H",
+ "-D_GNU_SOURCE",
+ // upper bound for the number of lines of the resulting mnemonic files
+ "-DNMNES=1000",
+ "-std=gnu99",
+ "-Werror",
+ // to suppress the "pointer of type ‘void *’ used in arithmetic" warning
+ "-Wno-pointer-arith",
+ "-Wno-typedef-redefinition",
+ ],
+ header_libs: [
+ "elfutils_headers",
+ ],
+ export_header_lib_headers: ["elfutils_headers"],
+
+ visibility: [
+ "//external/dwarves:__subpackages__",
+ "//external/elfutils:__subpackages__",
+ "//external/libabigail:__subpackages__",
+ "//external/libbpf:__subpackages__",
+ ],
+}
+
+cc_library {
+ name: "libelf",
+ host_supported: true,
+ vendor_available: true,
+ defaults: ["elfutils_defaults"],
+
+ srcs: ["libelf/*.c",],
+
+ static_libs: ["libz"],
+
+ export_include_dirs: ["libelf"],
+
+ target: {
+ darwin: {
+ enabled: false,
+ },
+ android: {
+ cflags: [
+ "-D_FILE_OFFSET_BITS=64",
+ "-include AndroidFixup.h",
+ ],
+ shared: {
+ enabled: false,
+ },
+ },
+ },
+
+ visibility: [
+ "//device/google/contexthub/util/nanoapp_postprocess",
+ "//external/igt-gpu-tools",
+ "//external/mesa3d",
+ ],
+}
+
cc_library_headers {
name: "elfutils_headers",
host_supported: true,
@@ -15,4 +116,57 @@ cc_library_headers {
visibility: [":__subpackages__"],
}
-subdirs = ["libelf"]
+cc_library_host_static {
+ name: "libdw",
+ defaults: ["elfutils_defaults"],
+ target: {
+ darwin: {
+ enabled: false,
+ },
+ },
+ srcs: [
+ "backends/*.c",
+ "libcpu/*_disasm.c",
+ "libdw/*.c",
+ "libdwelf/*.c",
+ "libdwfl/*.c",
+ "libebl/*.c",
+ ],
+ generated_headers: [
+ "i386_dis",
+ "i386_mnemonics",
+ "x86_64_dis",
+ "x86_64_mnemonics",
+ ],
+ exclude_srcs: [
+ // Do not enabled compression support
+ "libdwfl/bzip2.c",
+ "libdwfl/lzma.c",
+ "libdwfl/zstd.c",
+ // Those headers are incompatible with clang due to nested function
+ // definitions.
+ "libdwfl/dwfl_segment_report_module.c",
+ "libdwfl/debuginfod-client.c",
+ "libdwfl/elf-from-memory.c",
+ "libdwfl/link_map.c",
+ // Those are common source files actually used as headers and not
+ // compiled standalone.
+ "backends/common-reloc.c",
+ "backends/linux-core-note.c",
+ "backends/x86_corenote.c",
+ ],
+ local_include_dirs: [
+ "libcpu",
+ "libasm",
+ "libdwelf",
+ "libdwfl",
+ "libebl",
+ ],
+ export_include_dirs: [
+ "libdw",
+ ],
+ static_libs: [
+ "libelf"
+ ],
+ compile_multilib: "64",
+}
diff --git a/CONTRIBUTING b/CONTRIBUTING
index e3d5a0f7..bb48975b 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -8,7 +8,7 @@ elfutils-devel@sourceware.org.
https://sourceware.org/ml/elfutils-devel/
To subscribe send an email to elfutils-devel-subscribe@sourceware.org
-Or use the form at https://sourceware.org/lists.html#ml-requestor
+Or use the form at https://sourceware.org/mailman/listinfo/elfutils-devel
Please supply patches using git format-patch or using git send-email.
diff --git a/ChangeLog b/ChangeLog
index 0e229622..d379e713 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,136 @@
+2021-02-05 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac (AC_INIT): Set version to 0.183.
+ (AC_COPYRIGHT): Update Copyright year.
+ * NEWS: Add 0.183 section.
+
+2021-02-01 Érico Nogueira <ericonr@disroot.org>
+
+ * configure.ac: Check for GNU strerror_r.
+
+2021-01-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * configure.ac [--enable-gcov]: Check for gcov, lcov, and genhtml.
+ * Makefile.am [GCOV] (coverage, coverage-clean): New targets.
+ * .gitignore: Update.
+
+2020-12-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * .gitignore: Move subdirectory patterns to separate .gitignore files.
+
+ * .gitignore: Update.
+
+2020-12-15 Dmitry V. Levin <ldv@altlinux.org>
+
+ * configure.ac (USE_NLS, AM_PO_SUBDIRS): Remove.
+ (AM_GNU_GETTEXT, AM_GNU_GETTEXT_VERSION,
+ AM_GNU_GETTEXT_REQUIRE_VERSION): Use these macros to setup the gettext
+ infrastructure.
+ * .gitignore: Update.
+
+ * Makefile.am (SUBDIRS): Remove m4.
+ * configure.ac (AC_CONFIG_FILES): Remove m4/Makefile.
+
+ * configure.ac (AC_CONFIG_MACRO_DIR): Remove.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * configure.ac: Fix spelling typos in comments.
+ * NEWS: Fix spelling typos.
+ * NOTES: Likewise.
+ * TODO: Likewise.
+
+2020-12-11 Dmitry V. Levin <ldv@altlinux.org>
+
+ * configure.ac (AM_CONDITIONAL): Remove HAVE_LIBASM and STANDALONE.
+
+ * configure.ac: Rewrite argp check.
+
+ * configure.ac (AC_MSG_FAILURE): Fix typo.
+
+2020-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * configure.ac (LIBDEBUGINFOD_SONAME): New AC_SUBST variable.
+ (AC_CONFIG_FILES): Add debuginfod/debuginfod.h.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+
+ * configure.ac: Check for fts and obstack from outside libc.
+
+2020-10-28 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Set version to 0.182.
+ * NEWS: Add 0.182 section.
+
+2020-10-28 Tom Tromey <tom@tromey.com>
+
+ * .gitignore: Add /tests/leb128.
+
+2020-10-01 Frank Ch. Eigler <fche@redhat.com>
+
+ PR25461
+ * configure.ac: Add --enable-debuginfod-urls[=URLS] option.
+
+2020-09-18 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Check availability of libzstd and zstd.
+
+2020-09-08 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Set version to 0.181.
+ * NEWS: Add 0.181 section.
+
+2020-08-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * configure.ac (--enable-libdebuginfod): AC_DEFINE ENABLE_LIBDEBUGINFOD.
+
+2020-07-17 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Set -DBAD_FTS=1 also for CXXFLAGS.
+
+2020-06-19 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (SUBDIRS): Always add debuginfod.
+ * configure.ac (debuginfod): Split off...
+ (libdebuginfod): ... this. Also add DUMME_DEBUGINFOD.
+
+2020-06-15 Sergei Trofimovich <slyfox@gentoo.org>
+
+ * configure.ac: Use READELF in build-id check.
+
+2020-06-11 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Set version to 0.180.
+ * NEWS: Add 0.180 section.
+ * .gitignore: Update with new generated file.
+
+2020-06-10 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac (MODVERSION): Remove.
+
+2020-03-30 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Set version to 0.179.
+ * NEWS: Add 0.179 section.
+
+2020-03-25 Mark Wielaard <mark@klomp.org>
+
+ * README: Update mailinglist subscription info.
+ * CONTRIBUTING: Likewise.
+
+2020-02-03 Frank Ch. Eigler <fche@redhat.com>
+
+ * configure.ac: Tolerate CXX= for debuginfod configuration.
+
+2019-12-11 Omar Sandoval <osandov@fb.com>
+
+ * configure.ac: Apply -Werror after user-defined CFLAGS in
+ -D_FORTIFY_SOURCE=2 check.
+
+2019-12-06 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac: Add ac_cv_buildid check.
+
2019-11-26 Mark Wielaard <mark@klomp.org>
* configure.ac: Set version to 0.178.
diff --git a/CleanSpec.mk b/CleanSpec.mk
deleted file mode 100644
index 20d1ae75..00000000
--- a/CleanSpec.mk
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2007 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# If you don't need to do a full clean build but would like to touch
-# a file or delete some intermediate files, add a clean step to the end
-# of the list. These steps will only be run once, if they haven't been
-# run before.
-#
-# E.g.:
-# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
-# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
-#
-# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
-# files that are missing or have been moved.
-#
-# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
-# Use $(OUT_DIR) to refer to the "out" directory.
-#
-# If you need to re-do something that's already mentioned, just copy
-# the command and add it to the bottom of the list. E.g., if a change
-# that you made last week required touching a file and a change you
-# made today requires touching the same file, just copy the old
-# touch step and add it to the end of the list.
-#
-# ************************************************
-# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
-# ************************************************
-
-# For example:
-#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
-#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
-#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
-#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
-
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libdw_intermediates)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libdwfl_intermediates)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libelf_intermediates)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libebl_intermediates)
-$(call add-clean-step, rm -rf $(HOST_OUT)/obj/STATIC_LIBRARIES/libdw_intermediates)
-$(call add-clean-step, rm -rf $(HOST_OUT)/obj/STATIC_LIBRARIES/libdwfl_intermediates)
-$(call add-clean-step, rm -rf $(HOST_OUT)/obj/STATIC_LIBRARIES/libelf_intermediates)
-$(call add-clean-step, rm -rf $(HOST_OUT)/obj/STATIC_LIBRARIES/libebl_intermediates)
-
-# ************************************************
-# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
-# ************************************************
diff --git a/METADATA b/METADATA
index b6da4fa5..55c6e00a 100644
--- a/METADATA
+++ b/METADATA
@@ -1,3 +1,6 @@
+# *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE
+# CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
+# DEPENDING ON IT IN YOUR PROJECT. ***
name: "elfutils"
description: "elfutils is a collection of utilities and libraries to read, create and modify ELF binary files, find and handle DWARF debug data, symbols, thread state and stacktraces for processes and core files on GNU/Linux."
third_party {
@@ -9,10 +12,12 @@ third_party {
type: GIT
value: "git://sourceware.org/git/elfutils.git"
}
- version: "elfutils-0.178"
+ version: "elfutils-0.183"
+ license_type: BY_EXCEPTION_ONLY
+ license_note: "Would be RESTRICTED save for doc/COPYING-GFDL"
last_upgrade_date {
- year: 2019
- month: 12
- day: 10
+ year: 2021
+ month: 2
+ day: 16
}
}
diff --git a/Makefile.am b/Makefile.am
index bd8926b5..9c47afa9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -26,12 +26,8 @@ AM_MAKEFLAGS = --no-print-directory
pkginclude_HEADERS = version.h
-SUBDIRS = config m4 lib libelf libcpu backends libebl libdwelf libdwfl libdw \
- libasm src po doc tests
-
-if DEBUGINFOD
-SUBDIRS += debuginfod
-endif
+SUBDIRS = config lib libelf libcpu backends libebl libdwelf libdwfl libdw \
+ libasm debuginfod src po doc tests
EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
COPYING COPYING-GPLV2 COPYING-LGPLV3
@@ -51,6 +47,57 @@ distcheck-hook:
rpm: dist
rpmbuild -ts --sign elfutils-@PACKAGE_VERSION@.tar.bz2
+if GCOV
+
+COVERAGE_OUTPUT_FILE = $(PACKAGE_NAME).lcov
+COVERAGE_OUTPUT_DIRECTORY = coverage
+COVERAGE_OUTPUT_INDEX_HTML = $(COVERAGE_OUTPUT_DIRECTORY)/index.html
+COVERAGE_TITLE = $(PACKAGE_NAME)-$(PACKAGE_VERSION)
+
+COVERAGE_DIRS = $(filter-out tests,$(SUBDIRS))
+src_COVERAGE_DIRS = $(patsubst %,$(srcdir)/%,$(COVERAGE_DIRS))
+build_COVERAGE_DIRS = $(patsubst %,$(builddir)/%,$(COVERAGE_DIRS))
+all_COVERAGE_DIRS = $(sort $(src_COVERAGE_DIRS) $(build_COVERAGE_DIRS))
+LCOV_DIRS_ARGS = $(patsubst %,--directory=%,$(all_COVERAGE_DIRS))
+
+CLEANFILES = $(COVERAGE_OUTPUT_FILE)
+
+.PHONY: coverage coverage-clean
+
+clean-local: coverage-clean
+distclean-local: coverage-clean
+
+coverage-clean:
+ -rm -rf $(COVERAGE_OUTPUT_DIRECTORY)
+
+coverage: $(COVERAGE_OUTPUT_INDEX_HTML)
+ @echo 'file://$(abs_builddir)/$(COVERAGE_OUTPUT_INDEX_HTML)'
+
+$(COVERAGE_OUTPUT_INDEX_HTML): $(COVERAGE_OUTPUT_FILE)
+ LC_ALL=C $(GENHTML) \
+ --legend \
+ --show-details \
+ --rc=genhtml_branch_coverage=1 \
+ --title='$(COVERAGE_TITLE)' \
+ --prefix='$(abspath $(abs_srcdir))' \
+ --prefix='$(realpath $(abs_srcdir))' \
+ --prefix='$(abspath $(abs_builddir)/..)' \
+ --prefix='$(realpath $(abs_builddir)/..)' \
+ --output-directory='$(COVERAGE_OUTPUT_DIRECTORY)' \
+ $<
+
+$(COVERAGE_OUTPUT_FILE):
+ $(LCOV) \
+ --capture \
+ --no-external \
+ --no-checksum \
+ --rc=lcov_branch_coverage=1 \
+ --gcov-tool='$(GCOV)' \
+ --output-file='$@' \
+ $(LCOV_DIRS_ARGS)
+
+endif
+
# Tell version 3.79 and up of GNU make to not build goals in this
# directory in parallel.
.NOTPARALLEL:
diff --git a/NEWS b/NEWS
index c147ad3c..6437f201 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,100 @@
+Version 0.183
+
+debuginfod: New thread-busy metric and more detailed error metrics.
+ New --fdcache-mintmp and tracking of filesystem freespace.
+ New increased webapi concurrency while grooming.
+
+debuginfod-client: DEBUGINFOD_SONAME macro added to debuginfod.h which
+ can be used to dlopen the libdebuginfod.so library.
+ New function debuginfod_set_verbose_fd and
+ DEBUGINFOD_VERBOSE environment variable.
+
+config: profile.sh and profile.csh won't export DEBUGINFOD_URLS unless
+ configured --enable-debuginfod-urls[=URLS]
+
+elflint, readelf: Recognize SHF_GNU_RETAIN.
+ Handle SHT_X86_64_UNWIND as valid relocation target.
+
+Version 0.182
+
+backends: Support for tilegx has been removed.
+
+config: New /etc/profile.d files to provide default $DEBUGINFOD_URLS.
+
+debuginfod: More efficient package traversal, tolerate various errors
+ during scanning, grooming progress is more visible and
+ interruptible, more prometheus metrics.
+
+debuginfod-client: Now supports compressed (kernel) ELF images.
+
+libdwfl: Add ZSTD compression support.
+
+Version 0.181
+
+libelf: elf_update now compensates (fixes up) a bad sh_addralign for
+ SHF_COMPRESSED sections.
+
+libdebuginfod: configure now takes --enable-libdebuginfod=dummy or
+ --disable-libdebuginfod for bootstrapping.
+ DEBUGINFOD_URLS now accepts "scheme-free" urls
+ (guessing at what the user meant, either http:// or file://)
+
+readelf, elflint: Handle aarch64 bti, pac bits in dynamic table and gnu
+ property notes.
+
+libdw, readelf: Recognize DW_CFA_AARCH64_negate_ra_state. Allows unwinding
+ on arm64 for code that is compiled for PAC (Pointer
+ Authentication Code) as long as it isn't enabled.
+
+Version 0.180
+
+elflint: Allow SHF_EXCLUDE as generic section flag when --gnu is given.
+
+libdw, readelf: Handle GCC LTO .gnu.debuglto_ prefix.
+
+libdw: Use correct CU to resolve file names in dwarf_decl_file.
+
+libdwfl: Handle debugaltlink in dwfl_standard_find_debuginfo.
+
+size: Also obey radix printing for bsd format.
+
+nm: Explicitly print weak 'V' or 'T' and common 'C' symbols.
+
+Version 0.179
+
+debuginfod-client: When DEBUGINFOD_PROGRESS is set and the program doesn't
+ install its own debuginfod_progressfn_t show download
+ progress on stderr.
+ DEBUGINFOD_TIMEOUT is now defined as seconds to get at
+ least 100K, defaults to 90 seconds.
+ Default to $XDG_CACHE_HOME/debuginfod_client.
+ New functions debuginfod_set_user_data,
+ debuginfod_get_user_data, debuginfod_get_url and
+ debuginfod_add_http_header.
+ Support for file:// URLs.
+
+debuginfod: Uses libarchive directly for reading rpm archives.
+ Support for indexing .deb/.ddeb archives through dpkg-deb
+ or bsdtar.
+ Generic archive support through -Z EXT[=CMD]. Which can be
+ used for example for arch-linux pacman files by using
+ -Z '.tar.zst=zstdcat'.
+ Better logging using User-Agent and X-Forwarded-For headers.
+ More prometheus metrics.
+ Support for eliding dots or extraneous slashes in path names.
+
+debuginfod-find: Accept /path/names in place of buildid hex.
+
+libelf: Handle PN_XNUM in elf_getphdrnum before shdr 0 is cached
+ Ensure zlib resource cleanup on failure.
+
+libdwfl: dwfl_linux_kernel_find_elf and dwfl_linux_kernel_report_offline
+ now find and handle a compressed vmlinuz image.
+
+readelf, elflint: Handle PT_GNU_PROPERTY.
+
+translations: Updated Ukrainian translation.
+
Version 0.178
debuginfod: New server, client tool and library to index and fetch
@@ -48,7 +145,7 @@ Fixes CVE-2019-7146, CVE-2019-7148, CVE-2019-7149, CVE-2019-7150,
Version 0.175
-readelf: Handle mutliple .debug_macro sections.
+readelf: Handle multiple .debug_macro sections.
Recognize and parse GNU Property notes, NT_VERSION notes
and GNU Build Attribute ELF Notes.
@@ -549,7 +646,7 @@ Version 0.140:
libelf: Fix regression in creation of section header
-libdwfl: Less strict behavior if DWARF reader ist just used to display data
+libdwfl: Less strict behavior if DWARF reader is just used to display data
Version 0.139:
@@ -859,7 +956,7 @@ strip: support Linux kernel modules
Version 0.106:
libdw: Updated dwarf.h from DWARF3 spec
-libdw: add new funtions dwarf_func_entrypc, dwarf_func_file, dwarf_func_line,
+libdw: add new functions dwarf_func_entrypc, dwarf_func_file, dwarf_func_line,
dwarf_func_col, dwarf_getsrc_file
Version 0.105:
@@ -969,7 +1066,7 @@ libelf: change to GPL from OSL1 for now.
Version 0.90:
libebl: Recognize a few more section types and dynamic tags and return
-approriate strings.
+appropriate strings.
Version 0.89:
@@ -1071,11 +1168,11 @@ Version 0.73:
Version 0.72:
-libelf: and yet more fun with endian tranformation at output time.
+libelf: and yet more fun with endian transformation at output time.
Version 0.71:
-libelf: more fun with endian tranformation at output time. Add test for it.
+libelf: more fun with endian transformation at output time. Add test for it.
Version 0.70:
@@ -1086,7 +1183,7 @@ libelf: add unlikely in some more places.
Version 0.69:
-libelf: fix output routines to handle case where section indeces and
+libelf: fix output routines to handle case where section indices and
ordre in the output file don't match correctly. Patch by Jakub.
elflint: fix test of note section content for 64-bit platforms and files
@@ -1261,7 +1358,7 @@ General: fix a few problem gcc 3.1 had with the code.
libelf: implement {gelf,elf32,elf64}_checksum
-libelf: optimze DSO: fewer relocations, fewer PLTs
+libelf: optimize DSO: fewer relocations, fewer PLTs
add msg_tst test
@@ -1506,7 +1603,7 @@ Version 0.16:
more work on assigning input sections to output sections.
-Add gelf_xlatetof and gelf_xlatetom which were accidently left out.
+Add gelf_xlatetof and gelf_xlatetom which were accidentally left out.
Fix memory handling of section headers.
diff --git a/NOTES b/NOTES
index 2a5c23bf..deae6435 100644
--- a/NOTES
+++ b/NOTES
@@ -55,7 +55,7 @@ Some notes:
- the old linker supported extern "C++", extern "java" in version scripts.
- I believe this implementation is severly broken and needs a redesign
+ I believe this implementation is severely broken and needs a redesign
(how do wildcards work with these languages*?). Therefore it is left
out for now.
@@ -91,5 +91,5 @@ Some notes:
Sections created in output files follow the naming of special section
from the gABI.
- In no place is a section solely indentified by its name. Internal
+ In no place is a section solely identified by its name. Internal
references always use the section index.
diff --git a/OWNERS b/OWNERS
index 0088b03d..80b73257 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,4 +1 @@
-# Default code reviewers picked from top 3 or more developers.
-# Please update this list if you find better candidates.
-enh@google.com
-chh@google.com
+maennich@google.com
diff --git a/README b/README
index 0e15bae6..06a9fcd0 100644
--- a/README
+++ b/README
@@ -24,7 +24,7 @@ elfutils-devel@sourceware.org.
https://sourceware.org/ml/elfutils-devel/
To subscribe send an email to elfutils-devel-subscribe@sourceware.org
-Or use the form at https://sourceware.org/lists.html#ml-requestor
+Or use the form at https://sourceware.org/mailman/listinfo/elfutils-devel
See the CONTRIBUTING file for how to propose patches to the code.
diff --git a/TODO b/TODO
index ad10a5ee..5ed5e215 100644
--- a/TODO
+++ b/TODO
@@ -135,7 +135,7 @@ Time-stamp: <2009-02-05 22:08:01 drepper>
check whether any relocation is for a merge-able section
- check TLS relocation depencies
+ check TLS relocation dependencies
Check content of .eh_frame_hdr, .eh_frame, .gcc_except_table
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 3f5f9bb0..eb15c81d 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,75 @@
+2021-02-01 Érico Nogueira <ericonr@disroot.org>
+
+ * ppc_initreg.c: Also include <asm/ptrace.h>.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * aarch64_retval.c (aarch64_return_value_location): Fix spelling typo
+ in comment.
+ * ppc_cfi.c (ppc_abi_cfi): Likewise.
+
+2020-11-17 Mark Wielard <mark@klomp.org>
+
+ * x86_64_symbol.c (x86_64_check_reloc_target_type): New function.
+ * x86_64_init.c (x86_64_init): Hook check_reloc_target_type.
+
+2020-10-19 Mark Wielard <mark@klomp.org>
+
+ * Makefile.am (modules): Remove tilegx.
+ (tilegx_SRCS): Removed.
+ (libebl_backends_a_SOURCES): Remove tilegx_SRCS.
+ * tilegx_corenote.c: Removed.
+ * tilegx_init.c: Removed.
+ * tilegx_regs.c: Removed.
+ * tilegx_reloc.def: Removed.
+ * tilegx_retval.c: Removed.
+ * tilegx_symbol.c: Removed.
+
+2020-10-19 Mark Wielard <mark@klomp.org>
+
+ * Makefile.am (i386_SRCS): Remove i386_syscall.c.
+ (x86_64_SRCS): Remove x86_64_syscall.c.
+ (ppc_SRCS): Remove ppc_syscall.c.
+ * i386_init.c (i386_init): Remove syscall_abi HOOK.
+ * i386_syscall.c: Delete.
+ * ppc64_init.c (ppc64_init): Remove syscall_abi HOOK.
+ * ppc_syscall.c: Delete.
+ * x86_64_init.c (x86_64_init): Remove syscall_abi HOOK.
+ * x86_64_syscall.c: Delete.
+
+2020-08-28 Mark Wielard <mark@klomp.org>
+
+ * aarch64_init.c (aarch64_init): Hook dynamic_tag_name and
+ dynamic_tag_check.
+ * aarch64_symbol.c (aarch64_dynamic_tag_name): New function.
+ (aarch64_dynamic_tag_check): Likewise.
+
+2020-06-16 Mark Wielard <mark@klomp.org>
+
+ * common-reloc.c (reloc_nametable): Make zero a 1 char array.
+ Initialize it as an array { '\0' }.
+ (reloc_type_name): Access zero as an array.
+
+2020-06-10 Mark Wielard <mark@klomp.org>
+
+ * aarch64_init.c (aarch64_init): Remove ehlen, return eh.
+ * alpha_init.c (alpha_init): Likewise.
+ * arm_init.c (arm_init): Likewise.
+ * bpf_init.c (bpf_init): Likewise.
+ * csky_init.c (csky_init): Likewise.
+ * i386_init.c (i386_init): Likewise.
+ * ia64_init.c (ia64_init): Likewise.
+ * m68k_init.c (m68k_init): Likewise.
+ * ppc64_init.c (ppc64_init): Likewise.
+ * ppc_init.c (ppc_init): Likewise.
+ * riscv_init.c (riscv_init): Likewise.
+ * s390_init.c (s390_init): Likewise.
+ * sh_init.c (sh_init): Likewise.
+ * sparc_init.c (sparc_init): Likewise.
+ * tilegx_init.c (tilegx_init): Likewise.
+ * x86_64_init.c (x86_64_init): Likewise.
+ * libebl_CPU.h (init): Adjust EBLHOOK signature.
+
2019-07-05 Omar Sandoval <osandov@fb.com>
* Makefile.am: Replace libcpu_{i386,x86_64,bpf}.a with libcpu.a.
diff --git a/backends/Makefile.am b/backends/Makefile.am
index f4052125..62916c9c 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -37,16 +37,16 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
noinst_LIBRARIES = libebl_backends.a libebl_backends_pic.a
modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
- tilegx m68k bpf riscv csky
+ m68k bpf riscv csky
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 \
+ i386_retval.c i386_regs.c i386_auxv.c \
i386_initreg.c i386_unwind.c
sh_SRCS = sh_init.c sh_symbol.c sh_corenote.c sh_regs.c sh_retval.c
x86_64_SRCS = x86_64_init.c x86_64_symbol.c x86_64_corenote.c x86_64_cfi.c \
- x86_64_retval.c x86_64_regs.c x86_64_syscall.c x86_64_initreg.c \
+ x86_64_retval.c x86_64_regs.c x86_64_initreg.c \
x86_64_unwind.c x32_corenote.c
@@ -67,7 +67,7 @@ sparc_SRCS = sparc_init.c sparc_symbol.c sparc_regs.c sparc_retval.c \
sparc_cfi.c sparc_initreg.c
ppc_SRCS = ppc_init.c ppc_symbol.c ppc_retval.c ppc_regs.c \
- ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \
+ ppc_corenote.c ppc_auxv.c ppc_attrs.c \
ppc_cfi.c ppc_initreg.c
ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c ppc64_corenote.c \
@@ -77,9 +77,6 @@ s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c \
s390_corenote.c s390x_corenote.c s390_cfi.c s390_initreg.c \
s390_unwind.c
-tilegx_SRCS = tilegx_init.c tilegx_symbol.c tilegx_regs.c \
- tilegx_retval.c tilegx_corenote.c
-
m68k_SRCS = m68k_init.c m68k_symbol.c m68k_regs.c \
m68k_retval.c m68k_corenote.c m68k_cfi.c m68k_initreg.c
@@ -101,7 +98,7 @@ csky_SRCS = csky_attrs.c csky_init.c csky_symbol.c csky_cfi.c \
libebl_backends_a_SOURCES = $(i386_SRCS) $(sh_SRCS) $(x86_64_SRCS) \
$(ia64_SRCS) $(alpha_SRCS) $(arm_SRCS) \
$(aarch64_SRCS) $(sparc_SRCS) $(ppc_SRCS) \
- $(ppc64_SRCS) $(s390_SRCS) $(tilegx_SRCS) \
+ $(ppc64_SRCS) $(s390_SRCS) \
$(m68k_SRCS) $(bpf_SRCS) $(riscv_SRCS) $(csky_SRCS)
libebl_backends_pic_a_SOURCES =
diff --git a/backends/aarch64_init.c b/backends/aarch64_init.c
index 95268ae0..bed92954 100644
--- a/backends/aarch64_init.c
+++ b/backends/aarch64_init.c
@@ -38,16 +38,11 @@
#include "common-reloc.c"
-const char *
+Ebl *
aarch64_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
aarch64_init_reloc (eh);
HOOK (eh, register_info);
@@ -55,6 +50,8 @@ aarch64_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, reloc_simple_type);
HOOK (eh, return_value_location);
HOOK (eh, check_special_symbol);
+ HOOK (eh, dynamic_tag_name);
+ HOOK (eh, dynamic_tag_check);
HOOK (eh, data_marker_symbol);
HOOK (eh, abi_cfi);
@@ -65,5 +62,5 @@ aarch64_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, set_initial_registers_tid);
HOOK (eh, unwind);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/aarch64_retval.c b/backends/aarch64_retval.c
index 1308340b..72d4e8a3 100644
--- a/backends/aarch64_retval.c
+++ b/backends/aarch64_retval.c
@@ -332,7 +332,7 @@ aarch64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
switch (size)
{
case 2: /* half */
- case 4: /* sigle */
+ case 4: /* single */
case 8: /* double */
case 16: /* quad */
return pass_in_simd (locp);
diff --git a/backends/aarch64_symbol.c b/backends/aarch64_symbol.c
index e30c409d..464a5695 100644
--- a/backends/aarch64_symbol.c
+++ b/backends/aarch64_symbol.c
@@ -106,3 +106,29 @@ aarch64_data_marker_symbol (const GElf_Sym *sym, const char *sname)
&& GELF_ST_TYPE (sym->st_info) == STT_NOTYPE
&& (strcmp (sname, "$d") == 0 || strncmp (sname, "$d.", 3) == 0));
}
+
+const char *
+aarch64_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)),
+ size_t len __attribute__ ((unused)))
+{
+ switch (tag)
+ {
+ case DT_AARCH64_BTI_PLT:
+ return "AARCH64_BTI_PLT";
+ case DT_AARCH64_PAC_PLT:
+ return "AARCH64_PAC_PLT";
+ case DT_AARCH64_VARIANT_PCS:
+ return "AARCH64_VARIANT_PCS";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+bool
+aarch64_dynamic_tag_check (int64_t tag)
+{
+ return (tag == DT_AARCH64_BTI_PLT
+ || tag == DT_AARCH64_PAC_PLT
+ || tag == DT_AARCH64_VARIANT_PCS);
+}
diff --git a/backends/alpha_init.c b/backends/alpha_init.c
index f66f40c5..c69aec6d 100644
--- a/backends/alpha_init.c
+++ b/backends/alpha_init.c
@@ -39,16 +39,11 @@
#include "common-reloc.c"
-const char *
+Ebl *
alpha_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
alpha_init_reloc (eh);
HOOK (eh, dynamic_tag_name);
@@ -64,5 +59,5 @@ alpha_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, auxv_info);
eh->sysvhash_entrysize = sizeof (Elf64_Xword);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/arm_init.c b/backends/arm_init.c
index af023f02..edd53b75 100644
--- a/backends/arm_init.c
+++ b/backends/arm_init.c
@@ -39,16 +39,11 @@
#include "common-reloc.c"
-const char *
+Ebl *
arm_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
arm_init_reloc (eh);
HOOK (eh, segment_type_name);
@@ -72,5 +67,5 @@ arm_init (Elf *elf __attribute__ ((unused)),
/* Bit zero encodes whether an function address is THUMB or ARM. */
eh->func_addr_mask = ~(GElf_Addr)1;
- return MODVERSION;
+ return eh;
}
diff --git a/backends/bpf_init.c b/backends/bpf_init.c
index d407d378..f20f339e 100644
--- a/backends/bpf_init.c
+++ b/backends/bpf_init.c
@@ -39,20 +39,16 @@
#include "common-reloc.c"
-const char *
+Ebl *
bpf_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh, size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
bpf_init_reloc (eh);
HOOK (eh, register_info);
HOOK (eh, disasm);
HOOK (eh, reloc_simple_type);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/common-reloc.c b/backends/common-reloc.c
index 096ed1c7..a91bc87d 100644
--- a/backends/common-reloc.c
+++ b/backends/common-reloc.c
@@ -45,14 +45,14 @@
static const struct EBLHOOK(reloc_nametable)
{
- char zero;
+ char zero[1];
#define RELOC_TYPE(type, uses) \
char name_##type[sizeof R_NAME (type)];
#include RELOC_TYPES
#undef RELOC_TYPE
} EBLHOOK(reloc_nametable) =
{
- '\0',
+ { '\0' },
#define RELOC_TYPE(type, uses) R_NAME (type),
#include RELOC_TYPES
#undef RELOC_TYPE
@@ -92,7 +92,7 @@ EBLHOOK(reloc_type_name) (int reloc,
#endif
if (reloc >= 0 && reloc < nreloc && EBLHOOK(reloc_nameidx)[reloc] != 0)
- return &reloc_namestr[EBLHOOK(reloc_nameidx)[reloc]];
+ return reloc_namestr[EBLHOOK(reloc_nameidx)[reloc]];
return NULL;
}
diff --git a/backends/csky_init.c b/backends/csky_init.c
index b34a03aa..b2863ced 100644
--- a/backends/csky_init.c
+++ b/backends/csky_init.c
@@ -37,16 +37,11 @@
/* This defines the common reloc hooks based on csky_reloc.def. */
#include "common-reloc.c"
-const char *
+Ebl *
csky_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
csky_init_reloc (eh);
HOOK (eh, abi_cfi);
@@ -61,5 +56,5 @@ csky_init (Elf *elf __attribute__ ((unused)),
/* gcc/config/ #define DWARF_FRAME_REGISTERS. */
eh->frame_nregs = 38;
- return MODVERSION;
+ return eh;
}
diff --git a/backends/i386_init.c b/backends/i386_init.c
index 67428b53..579e5fad 100644
--- a/backends/i386_init.c
+++ b/backends/i386_init.c
@@ -38,16 +38,11 @@
/* This defines the common reloc hooks based on i386_reloc.def. */
#include "common-reloc.c"
-const char *
+Ebl *
i386_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
i386_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -57,7 +52,6 @@ i386_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, debugscn_p);
HOOK (eh, return_value_location);
HOOK (eh, register_info);
- HOOK (eh, syscall_abi);
HOOK (eh, auxv_info);
HOOK (eh, disasm);
HOOK (eh, abi_cfi);
@@ -66,5 +60,5 @@ i386_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, set_initial_registers_tid);
HOOK (eh, unwind);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/i386_syscall.c b/backends/i386_syscall.c
deleted file mode 100644
index 535dcd86..00000000
--- a/backends/i386_syscall.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Linux/i386 system call ABI in DWARF register numbers.
- Copyright (C) 2008 Red Hat, Inc.
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define BACKEND i386_
-#include "libebl_CPU.h"
-
-int
-i386_syscall_abi (Ebl *ebl __attribute__ ((unused)),
- int *sp, int *pc, int *callno, int args[6])
-{
- *sp = 4; /* %esp */
- *pc = 8; /* %eip */
- *callno = 0; /* %eax */
- args[0] = 3; /* %ebx */
- args[1] = 1; /* %ecx */
- args[2] = 2; /* %edx */
- args[3] = 6; /* %esi */
- args[4] = 7; /* %edi */
- args[5] = 5; /* %ebp */
- return 0;
-}
diff --git a/backends/ia64_init.c b/backends/ia64_init.c
index 2d1f43f2..b46b35cc 100644
--- a/backends/ia64_init.c
+++ b/backends/ia64_init.c
@@ -38,16 +38,11 @@
/* This defines the common reloc hooks based on ia64_reloc.def. */
#include "common-reloc.c"
-const char *
+Ebl *
ia64_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
ia64_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -61,5 +56,5 @@ ia64_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, return_value_location);
HOOK (eh, check_reloc_target_type);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/libebl_CPU.h b/backends/libebl_CPU.h
index ef2b922b..0e507bd3 100644
--- a/backends/libebl_CPU.h
+++ b/backends/libebl_CPU.h
@@ -37,8 +37,7 @@
#define EBLHOOK_2(a, b) a##b
/* Constructor. */
-extern const char *EBLHOOK(init) (Elf *elf, GElf_Half machine,
- Ebl *eh, size_t ehlen);
+extern Ebl *EBLHOOK(init) (Elf *elf, GElf_Half machine, Ebl *eh);
#include "ebl-hooks.h"
diff --git a/backends/m68k_init.c b/backends/m68k_init.c
index 05d544c1..7b94f23a 100644
--- a/backends/m68k_init.c
+++ b/backends/m68k_init.c
@@ -37,16 +37,11 @@
#include "common-reloc.c"
-const char *
+Ebl *
m68k_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
m68k_init_reloc (eh);
HOOK (eh, gotpc_reloc_check);
@@ -59,5 +54,5 @@ m68k_init (Elf *elf __attribute__ ((unused)),
eh->frame_nregs = 25;
HOOK (eh, set_initial_registers_tid);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/ppc64_init.c b/backends/ppc64_init.c
index c2e7043b..ffc9842c 100644
--- a/backends/ppc64_init.c
+++ b/backends/ppc64_init.c
@@ -41,16 +41,11 @@
#include "common-reloc.c"
-const char *
+Ebl *
ppc64_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
ppc64_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -63,7 +58,6 @@ ppc64_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, bss_plt_p);
HOOK (eh, return_value_location);
HOOK (eh, register_info);
- HOOK (eh, syscall_abi);
HOOK (eh, core_note);
HOOK (eh, auxv_info);
HOOK (eh, check_object_attribute);
@@ -107,5 +101,5 @@ ppc64_init (Elf *elf __attribute__ ((unused)),
}
}
- return MODVERSION;
+ return eh;
}
diff --git a/backends/ppc_cfi.c b/backends/ppc_cfi.c
index 55169aef..b4700360 100644
--- a/backends/ppc_cfi.c
+++ b/backends/ppc_cfi.c
@@ -42,7 +42,7 @@ ppc_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info)
{
/* This instruction is provided in every CIE. It is not repeated here:
DW_CFA_def_cfa, ULEB128_7 (1), ULEB128_7 (0) */
- /* r1 is assumed to be restored from cfa adress,
+ /* r1 is assumed to be restored from cfa address,
r1 acts as a stack frame pointer. */
DW_CFA_val_offset, ULEB128_7 (1), ULEB128_7 (0),
/* lr is not callee-saved but it needs to be preserved as it is pre-set
diff --git a/backends/ppc_init.c b/backends/ppc_init.c
index eb286c25..08468f8f 100644
--- a/backends/ppc_init.c
+++ b/backends/ppc_init.c
@@ -39,16 +39,11 @@
#include "common-reloc.c"
-const char *
+Ebl *
ppc_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
ppc_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -59,7 +54,6 @@ ppc_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, bss_plt_p);
HOOK (eh, return_value_location);
HOOK (eh, register_info);
- HOOK (eh, syscall_abi);
HOOK (eh, core_note);
HOOK (eh, auxv_info);
HOOK (eh, check_object_attribute);
@@ -69,5 +63,5 @@ ppc_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, set_initial_registers_tid);
HOOK (eh, dwarf_to_regno);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c
index 0e0d3599..e5cca7e1 100644
--- a/backends/ppc_initreg.c
+++ b/backends/ppc_initreg.c
@@ -33,6 +33,7 @@
#include <stdlib.h>
#if defined(__powerpc__) && defined(__linux__)
# include <sys/ptrace.h>
+# include <asm/ptrace.h>
# include <sys/user.h>
#endif
diff --git a/backends/ppc_syscall.c b/backends/ppc_syscall.c
deleted file mode 100644
index b1b9c52b..00000000
--- a/backends/ppc_syscall.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Linux/PPC system call ABI in DWARF register numbers.
- Copyright (C) 2008 Red Hat, Inc.
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define BACKEND ppc_
-#include "libebl_CPU.h"
-
-int
-ppc_syscall_abi (Ebl *ebl __attribute__ ((unused)),
- int *sp, int *pc, int *callno, int args[6])
-{
- *sp = 1;
- *pc = -1;
- *callno = 0;
- args[0] = 3;
- args[1] = 4;
- args[2] = 5;
- args[3] = 6;
- args[4] = 7;
- args[5] = 8;
- return 0;
-}
-
-__typeof (ppc_syscall_abi)
-ppc64_syscall_abi __attribute__ ((alias ("ppc_syscall_abi")));
diff --git a/backends/riscv_init.c b/backends/riscv_init.c
index 9be5c6f2..551e7bb6 100644
--- a/backends/riscv_init.c
+++ b/backends/riscv_init.c
@@ -43,16 +43,11 @@ extern __typeof (EBLHOOK (return_value_location))
extern __typeof (EBLHOOK (core_note)) riscv64_core_note attribute_hidden;
-const char *
+Ebl *
riscv_init (Elf *elf,
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
riscv_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -73,5 +68,5 @@ riscv_init (Elf *elf,
== EF_RISCV_FLOAT_ABI_DOUBLE))
eh->return_value_location = riscv_return_value_location_lp64d;
- return MODVERSION;
+ return eh;
}
diff --git a/backends/s390_init.c b/backends/s390_init.c
index b4f3e7f8..fd79502d 100644
--- a/backends/s390_init.c
+++ b/backends/s390_init.c
@@ -40,16 +40,11 @@
extern __typeof (s390_core_note) s390x_core_note;
-const char *
+Ebl *
s390_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
s390_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -75,5 +70,5 @@ s390_init (Elf *elf __attribute__ ((unused)),
if (eh->class == ELFCLASS64)
eh->sysvhash_entrysize = sizeof (Elf64_Xword);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/sh_init.c b/backends/sh_init.c
index 24f4d4a4..05cf8b18 100644
--- a/backends/sh_init.c
+++ b/backends/sh_init.c
@@ -39,16 +39,11 @@
#include "common-reloc.c"
-const char *
+Ebl *
sh_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
sh_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -58,5 +53,5 @@ sh_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, register_info);
HOOK (eh, return_value_location);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/sparc_init.c b/backends/sparc_init.c
index 6daff114..647a7897 100644
--- a/backends/sparc_init.c
+++ b/backends/sparc_init.c
@@ -44,16 +44,11 @@
extern __typeof (EBLHOOK (core_note)) sparc64_core_note attribute_hidden;
-const char *
+Ebl *
sparc_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
sparc_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -79,5 +74,5 @@ sparc_init (Elf *elf __attribute__ ((unused)),
eh->ra_offset = 8;
HOOK (eh, set_initial_registers_tid);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/tilegx_corenote.c b/backends/tilegx_corenote.c
deleted file mode 100644
index be3e7dbf..00000000
--- a/backends/tilegx_corenote.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* TILE-Gx specific core note handling.
- Copyright (C) 2012 Tilera Corporation
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <elf.h>
-#include <inttypes.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <sys/time.h>
-
-#define BACKEND tilegx_
-#include "libebl_CPU.h"
-
-static const Ebl_Register_Location prstatus_regs[] =
- {
- { .offset = 0, .regno = 0, .count = 56, .bits = 64 }, /* r0-r55 */
- { .offset = 56 * 8, .regno = 64, .count = 1, .bits = 64 } /* pc */
- };
-#define PRSTATUS_REGS_SIZE (57 * 8)
-
-#define ULONG uint64_t
-#define ALIGN_ULONG 8
-#define TYPE_ULONG ELF_T_XWORD
-#define TYPE_LONG ELF_T_SXWORD
-#define PID_T int32_t
-#define UID_T uint32_t
-#define GID_T uint32_t
-#define ALIGN_PID_T 4
-#define ALIGN_UID_T 4
-#define ALIGN_GID_T 4
-#define TYPE_PID_T ELF_T_SWORD
-#define TYPE_UID_T ELF_T_WORD
-#define TYPE_GID_T ELF_T_WORD
-
-#include "linux-core-note.c"
diff --git a/backends/tilegx_init.c b/backends/tilegx_init.c
deleted file mode 100644
index 66df9318..00000000
--- a/backends/tilegx_init.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Initialization of TILE-Gx specific backend library.
- Copyright (C) 2012 Tilera Corporation
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define BACKEND tilegx_
-#define RELOC_PREFIX R_TILEGX_
-#include "libebl_CPU.h"
-
-/* This defines the common reloc hooks based on tilegx_reloc.def. */
-#include "common-reloc.c"
-
-const char *
-tilegx_init (Elf *elf __attribute__ ((unused)),
- GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
-{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
- /* We handle it. */
- tilegx_init_reloc (eh);
- HOOK (eh, reloc_simple_type);
- HOOK (eh, return_value_location);
- HOOK (eh, register_info);
- HOOK (eh, core_note);
-
- return MODVERSION;
-}
diff --git a/backends/tilegx_regs.c b/backends/tilegx_regs.c
deleted file mode 100644
index b1e17439..00000000
--- a/backends/tilegx_regs.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* Register names and numbers for TILE-Gx DWARF.
- Copyright (C) 2012 Tilera Corporation
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <dwarf.h>
-
-#define BACKEND tilegx_
-#include "libebl_CPU.h"
-
-ssize_t
-tilegx_register_info (Ebl *ebl __attribute__ ((unused)),
- int regno, char *name, size_t namelen,
- const char **prefix, const char **setname,
- int *bits, int *type)
-{
- if (name == NULL)
- return 65;
-
- if (regno < 0 || regno > 64 || namelen < 5)
- return -1;
-
- *prefix = "";
- *setname = "integer";
- *bits = 64;
-
- switch (regno)
- {
- case 0 ... 9:
- *type = DW_ATE_signed;
- name[0] = 'r';
- name[1] = regno + '0';
- namelen = 2;
- break;
-
- case 10 ... 52:
- *type = DW_ATE_signed;
- name[0] = 'r';
- name[1] = regno / 10 + '0';
- name[2] = regno % 10 + '0';
- namelen = 3;
- break;
-
- case 53:
- *type = DW_ATE_address;
- return stpcpy (name, "tp") + 1 - name;
-
- case 54:
- *type = DW_ATE_address;
- return stpcpy (name, "sp") + 1 - name;
-
- case 55:
- *type = DW_ATE_address;
- return stpcpy (name, "lr") + 1 - name;
-
- case 56:
- *type = DW_ATE_unsigned;
- return stpcpy (name, "sn") + 1 - name;
-
- case 57:
- *type = DW_ATE_unsigned;
- return stpcpy (name, "idn0") + 1 - name;
-
- case 58:
- *type = DW_ATE_unsigned;
- return stpcpy (name, "idn1") + 1 - name;
-
- case 59:
- *type = DW_ATE_unsigned;
- return stpcpy (name, "udn0") + 1 - name;
-
- case 60:
- *type = DW_ATE_unsigned;
- return stpcpy (name, "udn1") + 1 - name;
-
- case 61:
- *type = DW_ATE_unsigned;
- return stpcpy (name, "udn2") + 1 - name;
-
- case 62:
- *type = DW_ATE_unsigned;
- return stpcpy (name, "udn3") + 1 - name;
-
- case 63:
- *type = DW_ATE_unsigned;
- return stpcpy (name, "zero") + 1 - name;
-
- case 64:
- *type = DW_ATE_address;
- return stpcpy (name, "pc") + 1 - name;
-
- /* Can't happen. */
- default:
- *setname = NULL;
- return 0;
- }
-
- name[namelen++] = '\0';
- return namelen;
-}
diff --git a/backends/tilegx_reloc.def b/backends/tilegx_reloc.def
deleted file mode 100644
index 1018110d..00000000
--- a/backends/tilegx_reloc.def
+++ /dev/null
@@ -1,121 +0,0 @@
-/* List the relocation types for tilegx. -*- C -*-
- Copyright (C) 2012 Tilera Corporation
- Copyright (C) 2015 Red Hat, Inc.
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-/* NAME, REL|EXEC|DYN */
-
-RELOC_TYPE (NONE, 0)
-RELOC_TYPE (64, REL|EXEC|DYN)
-RELOC_TYPE (32, REL|EXEC|DYN)
-RELOC_TYPE (16, REL|EXEC|DYN)
-RELOC_TYPE (8, REL|EXEC|DYN)
-RELOC_TYPE (64_PCREL, REL)
-RELOC_TYPE (32_PCREL, REL)
-RELOC_TYPE (16_PCREL, REL)
-RELOC_TYPE (8_PCREL, REL)
-RELOC_TYPE (HW0, REL)
-RELOC_TYPE (HW1, REL)
-RELOC_TYPE (HW2, REL)
-RELOC_TYPE (HW3, REL)
-RELOC_TYPE (HW0_LAST, REL)
-RELOC_TYPE (HW1_LAST, REL)
-RELOC_TYPE (HW2_LAST, REL)
-RELOC_TYPE (COPY, EXEC|DYN)
-RELOC_TYPE (GLOB_DAT, EXEC|DYN)
-RELOC_TYPE (JMP_SLOT, EXEC|DYN)
-RELOC_TYPE (RELATIVE, EXEC|DYN)
-RELOC_TYPE (BROFF_X1, REL)
-RELOC_TYPE (JUMPOFF_X1, REL)
-RELOC_TYPE (JUMPOFF_X1_PLT, REL)
-RELOC_TYPE (IMM8_X0, REL)
-RELOC_TYPE (IMM8_Y0, REL)
-RELOC_TYPE (IMM8_X1, REL)
-RELOC_TYPE (IMM8_Y1, REL)
-RELOC_TYPE (DEST_IMM8_X1, REL)
-RELOC_TYPE (MT_IMM14_X1, REL)
-RELOC_TYPE (MF_IMM14_X1, REL)
-RELOC_TYPE (MMSTART_X0, REL)
-RELOC_TYPE (MMEND_X0, REL)
-RELOC_TYPE (SHAMT_X0, REL)
-RELOC_TYPE (SHAMT_X1, REL)
-RELOC_TYPE (SHAMT_Y0, REL)
-RELOC_TYPE (SHAMT_Y1, REL)
-RELOC_TYPE (IMM16_X0_HW0, REL)
-RELOC_TYPE (IMM16_X1_HW0, REL)
-RELOC_TYPE (IMM16_X0_HW1, REL)
-RELOC_TYPE (IMM16_X1_HW1, REL)
-RELOC_TYPE (IMM16_X0_HW2, REL)
-RELOC_TYPE (IMM16_X1_HW2, REL)
-RELOC_TYPE (IMM16_X0_HW3, REL)
-RELOC_TYPE (IMM16_X1_HW3, REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST, REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST, REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST, REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST, REL)
-RELOC_TYPE (IMM16_X0_HW2_LAST, REL)
-RELOC_TYPE (IMM16_X1_HW2_LAST, REL)
-RELOC_TYPE (IMM16_X0_HW0_PCREL, REL)
-RELOC_TYPE (IMM16_X1_HW0_PCREL, REL)
-RELOC_TYPE (IMM16_X0_HW1_PCREL, REL)
-RELOC_TYPE (IMM16_X1_HW1_PCREL, REL)
-RELOC_TYPE (IMM16_X0_HW2_PCREL, REL)
-RELOC_TYPE (IMM16_X1_HW2_PCREL, REL)
-RELOC_TYPE (IMM16_X0_HW3_PCREL, REL)
-RELOC_TYPE (IMM16_X1_HW3_PCREL, REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST_PCREL, REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST_PCREL, REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST_PCREL, REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST_PCREL, REL)
-RELOC_TYPE (IMM16_X0_HW2_LAST_PCREL, REL)
-RELOC_TYPE (IMM16_X1_HW2_LAST_PCREL, REL)
-RELOC_TYPE (IMM16_X0_HW0_GOT, REL)
-RELOC_TYPE (IMM16_X1_HW0_GOT, REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST_GOT, REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST_GOT, REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST_GOT, REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST_GOT, REL)
-RELOC_TYPE (IMM16_X0_HW0_TLS_GD, REL)
-RELOC_TYPE (IMM16_X1_HW0_TLS_GD, REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_GD, REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_GD, REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_GD, REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_GD, REL)
-RELOC_TYPE (IMM16_X0_HW0_TLS_IE, REL)
-RELOC_TYPE (IMM16_X1_HW0_TLS_IE, REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_IE, REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_IE, REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_IE, REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_IE, REL)
-RELOC_TYPE (TLS_DTPMOD64, EXEC|DYN)
-RELOC_TYPE (TLS_DTPOFF64, EXEC|DYN)
-RELOC_TYPE (TLS_TPOFF64, EXEC|DYN)
-RELOC_TYPE (TLS_DTPMOD32, EXEC|DYN)
-RELOC_TYPE (TLS_DTPOFF32, EXEC|DYN)
-RELOC_TYPE (TLS_TPOFF32, EXEC|DYN)
-RELOC_TYPE (GNU_VTINHERIT, REL)
-RELOC_TYPE (GNU_VTENTRY, REL)
diff --git a/backends/tilegx_retval.c b/backends/tilegx_retval.c
deleted file mode 100644
index 7f7d24b0..00000000
--- a/backends/tilegx_retval.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Function return value location for Linux/TILE-Gx ABI.
- Copyright (C) 2012 Tilera Corporation
- Copyright (C) 2014 Red Hat, Inc.
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <assert.h>
-#include <dwarf.h>
-
-#define BACKEND tilegx_
-#include "libebl_CPU.h"
-
-
-/* r0. */
-static const Dwarf_Op loc_intreg[] =
- {
- { .atom = DW_OP_reg0 }
- };
-#define nloc_intreg 1
-
-/* The return value is a structure and is actually stored in stack space
- passed in a hidden argument by the caller. But, the compiler
- helpfully returns the address of that space in r0. */
-static const Dwarf_Op loc_aggregate[] =
- {
- { .atom = DW_OP_breg0, .number = 0 }
- };
-#define nloc_aggregate 1
-
-int
-tilegx_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
-{
- /* Start with the function's type, and get the DW_AT_type attribute,
- which is the type of the return value. */
- Dwarf_Die die_mem, *typedie = &die_mem;
- int tag = dwarf_peeled_die_type (functypedie, typedie);
- if (tag <= 0)
- return tag;
-
- Dwarf_Word size;
- switch (tag)
- {
- case -1:
- return -1;
-
- case DW_TAG_subrange_type:
- if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
- {
- Dwarf_Attribute attr_mem, *attr;
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
- FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
- case DW_TAG_pointer_type:
- case DW_TAG_ptr_to_member_type:
- {
- Dwarf_Attribute attr_mem;
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- size = 8;
- else
- return -1;
- }
- if (tag == DW_TAG_base_type)
- {
- Dwarf_Word encoding;
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
- &attr_mem),
- &encoding) != 0)
- return -1;
- }
- }
-
- /* Small enough structs are passed directly in registers R0 ... R7. */
- if (size <= 8)
- {
- intreg:
- *locp = loc_intreg;
- return nloc_intreg;
- }
-
- FALLTHROUGH;
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
- case DW_TAG_union_type:
- aggregate:
- *locp = loc_aggregate;
- return nloc_aggregate;
-
- case DW_TAG_array_type:
- case DW_TAG_string_type:
- if (dwarf_aggregate_size (typedie, &size) == 0 && size <= 8)
- {
- if (tag == DW_TAG_array_type)
- {
- Dwarf_Attribute attr_mem, *attr;
- /* Check if it's a character array. */
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- if (tag != DW_TAG_base_type)
- goto aggregate;
- if (dwarf_formudata (dwarf_attr_integrate (typedie,
- DW_AT_byte_size,
- &attr_mem),
- &size) != 0)
- return -1;
- if (size != 1)
- goto aggregate;
- }
- goto intreg;
- }
- goto aggregate;
- }
-
- /* XXX We don't have a good way to return specific errors from ebl calls.
- This value means we do not understand the type, but it is well-formed
- DWARF and might be valid. */
- return -2;
-}
diff --git a/backends/tilegx_symbol.c b/backends/tilegx_symbol.c
deleted file mode 100644
index 62a46907..00000000
--- a/backends/tilegx_symbol.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* TILEGX-specific symbolic name handling.
- Copyright (C) 2012 Tilera Corporation
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <elf.h>
-#include <stddef.h>
-
-#define BACKEND tilegx_
-#include "libebl_CPU.h"
-
-/* Check for the simple reloc types. */
-Elf_Type
-tilegx_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type,
- int *addsub __attribute__ ((unused)))
-{
- switch (type)
- {
- case R_TILEGX_64:
- return ELF_T_SXWORD;
- case R_TILEGX_32:
- return ELF_T_SWORD;
- case R_TILEGX_16:
- return ELF_T_HALF;
- case R_TILEGX_8:
- return ELF_T_BYTE;
- default:
- return ELF_T_NUM;
- }
-}
diff --git a/backends/x86_64_init.c b/backends/x86_64_init.c
index 8abafb7f..be965fa6 100644
--- a/backends/x86_64_init.c
+++ b/backends/x86_64_init.c
@@ -41,16 +41,11 @@
extern __typeof (EBLHOOK (core_note)) x32_core_note attribute_hidden;
-const char *
+Ebl *
x86_64_init (Elf *elf __attribute__ ((unused)),
GElf_Half machine __attribute__ ((unused)),
- Ebl *eh,
- size_t ehlen)
+ Ebl *eh)
{
- /* Check whether the Elf_BH object has a sufficent size. */
- if (ehlen < sizeof (Ebl))
- return NULL;
-
/* We handle it. */
x86_64_init_reloc (eh);
HOOK (eh, reloc_simple_type);
@@ -61,7 +56,6 @@ x86_64_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, core_note);
HOOK (eh, return_value_location);
HOOK (eh, register_info);
- HOOK (eh, syscall_abi);
HOOK (eh, auxv_info);
HOOK (eh, disasm);
HOOK (eh, abi_cfi);
@@ -69,6 +63,7 @@ x86_64_init (Elf *elf __attribute__ ((unused)),
eh->frame_nregs = 17;
HOOK (eh, set_initial_registers_tid);
HOOK (eh, unwind);
+ HOOK (eh, check_reloc_target_type);
- return MODVERSION;
+ return eh;
}
diff --git a/backends/x86_64_symbol.c b/backends/x86_64_symbol.c
index 98457bcb..d5f62e8f 100644
--- a/backends/x86_64_symbol.c
+++ b/backends/x86_64_symbol.c
@@ -71,3 +71,11 @@ x86_64_section_type_name (int type,
return NULL;
}
+
+/* The SHT_X86_64_UNWIND section type is a valid target for relocation. */
+bool
+x86_64_check_reloc_target_type (Ebl *ebl __attribute__ ((unused)),
+ Elf64_Word sh_type)
+{
+ return sh_type == SHT_X86_64_UNWIND;
+}
diff --git a/backends/x86_64_syscall.c b/backends/x86_64_syscall.c
deleted file mode 100644
index 0deb8bad..00000000
--- a/backends/x86_64_syscall.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Linux/x86-64 system call ABI in DWARF register numbers.
- Copyright (C) 2008 Red Hat, Inc.
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define BACKEND x86_64_
-#include "libebl_CPU.h"
-
-int
-x86_64_syscall_abi (Ebl *ebl __attribute__ ((unused)),
- int *sp, int *pc, int *callno, int args[6])
-{
- *sp = 7; /* %rsp */
- *pc = 16; /* %rip */
- *callno = 0; /* %rax */
- args[0] = 5; /* %rdi */
- args[1] = 4; /* %rsi */
- args[2] = 1; /* %rdx */
- args[3] = 10; /* %r10 */
- args[4] = 8; /* %r8 */
- args[5] = 9; /* %r9 */
- return 0;
-}
diff --git a/config.h b/config.h
index 4bfca0b6..5a31eb58 100644
--- a/config.h
+++ b/config.h
@@ -7,6 +7,34 @@
/* Should ar and ranlib use -D behavior by default? */
#define DEFAULT_AR_DETERMINISTIC false
+/* Build dummy libdebuginfod */
+/* #undef DUMMY_LIBDEBUGINFOD */
+
+/* Build debuginfod */
+/* #undef ENABLE_DEBUGINFOD */
+
+/* Enable libdebuginfod */
+/* #undef ENABLE_LIBDEBUGINFOD */
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#define ENABLE_NLS 1
+
+/* Define to 1 if you have the Mac OS X function
+ CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */
+/* #undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES */
+
+/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
+
+/* define if the compiler supports basic C++11 syntax */
+#define HAVE_CXX11 1
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#define HAVE_DCGETTEXT 1
+
/* Define to 1 if you have the declaration of `mempcpy', and to 0 if you
don't. */
#define HAVE_DECL_MEMPCPY 1
@@ -23,12 +51,22 @@
don't. */
#define HAVE_DECL_RAWMEMCHR 1
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRERROR_R 1
+
/* Defined if __attribute__((fallthrough)) is supported */
-/* #undef HAVE_FALLTHROUGH */
+#define HAVE_FALLTHROUGH 1
/* Defined if __attribute__((gcc_struct)) is supported */
/* #undef HAVE_GCC_STRUCT */
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define if you have the iconv() function and it works. */
+/* #undef HAVE_ICONV */
+
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
@@ -38,12 +76,18 @@
/* Define to 1 if you have the `process_vm_readv' function. */
#define HAVE_PROCESS_VM_READV 1
+/* Define to 1 if `stdatomic.h` is provided by the system, 0 otherwise. */
+#define HAVE_STDATOMIC_H 1
+
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
+/* Define to 1 if you have the `strerror_r' function. */
+#define HAVE_STRERROR_R 1
+
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
@@ -65,12 +109,6 @@
/* Defined if __attribute__((visibility())) is supported */
#define HAVE_VISIBILITY 1
-/* $libdir subdirectory containing libebl modules. */
-#define LIBEBL_SUBDIR "elfutils"
-
-/* Identifier for modules in the build. */
-#define MODVERSION "Build for elfutils 173 x86_64-pc-linux-gnu"
-
/* Name of package */
#define PACKAGE "elfutils"
@@ -81,7 +119,7 @@
#define PACKAGE_NAME "elfutils"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "elfutils 0.173"
+#define PACKAGE_STRING "elfutils 0.183"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "elfutils"
@@ -90,18 +128,17 @@
#define PACKAGE_URL "http://elfutils.org/"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.173"
+#define PACKAGE_VERSION "0.183"
/* The size of `long', as computed by sizeof. */
-#if __LP64__
#define SIZEOF_LONG 8
-#else
-#define SIZEOF_LONG 4
-#endif
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
+/* Define to 1 if strerror_r returns char *. */
+#define STRERROR_R_CHAR_P 1
+
/* Support bzip2 decompression via -lbz2. */
/* #undef USE_BZLIB */
@@ -117,8 +154,11 @@
/* Support gzip decompression via -lz. */
#define USE_ZLIB 1
+/* Support ZSTD (zst) decompression via -lzstd. */
+/* #undef USE_ZSTD */
+
/* Version number of package */
-#define VERSION "0.173"
+#define VERSION "0.183"
/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
`char[]'. */
diff --git a/config/.gitignore b/config/.gitignore
new file mode 100644
index 00000000..8cd8ccdb
--- /dev/null
+++ b/config/.gitignore
@@ -0,0 +1,15 @@
+/ar-lib
+/compile
+/config.guess
+/config.rpath
+/config.sub
+/depcomp
+/install-sh
+/libdebuginfod.pc
+/libdw.pc
+/libelf.pc
+/missing
+/profile.csh
+/profile.sh
+/test-driver
+/ylwrap
diff --git a/config/10-default-yama-scope.conf b/config/10-default-yama-scope.conf
index ba78ebd5..4df20903 100644
--- a/config/10-default-yama-scope.conf
+++ b/config/10-default-yama-scope.conf
@@ -17,7 +17,7 @@
# domains. A different way to restrict ptrace is to set the selinux
# deny_ptrace boolean. Both mechanisms will break some programs relying
# on the ptrace system call and might force users to elevate their
-# priviliges to root to do their work.
+# privileges to root to do their work.
#
# For more information see Documentation/security/Yama.txt in the kernel
# sources. Which also describes the defaults when CONFIG_SECURITY_YAMA
diff --git a/config/ChangeLog b/config/ChangeLog
index 16379207..d84d38c3 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,129 @@
+2021-02-05 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Update for 0.183.
+
+2020-12-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * .gitignore: New file.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * 10-default-yama-scope.conf: Fix spelling typo in comment.
+ * upload-release.sh: Likewise.
+ * elfutils.spec.in: Fix spelling typos in %changelog.
+
+2020-11-04 Dmitry V. Levin <ldv@altlinux.org>
+
+ * profile.sh.in, profile.csh.in: Do not define $DEBUGINFOD_URLS unless
+ configured using --enable-debuginfod-urls.
+
+2020-11-02 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (pkgconfig_DATA, install-data-local, uninstall-local):
+ Conditionalize on LIBDEBUGINFOD instead of DEBUGINFOD.
+
+2020-10-31 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (install-data-local, uninstall-local): Conditionalize
+ on DEBUGINFOD.
+
+2020-10-30 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Update for 0.182.
+
+2020-10-31 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.service: Bump up TimeoutStopSec.
+
+2020-10-30 Frank Ch. Eigler <fche@redhat.com>
+
+ * elfutils.spec.in: Fix debuginfod config/state file attributes
+ for non-lossy updates.
+
+2020-10-08 Frank Ch. Eigler <fche@redhat.com>
+
+ * Makefile.am (uninstall-local): Uninstall the new profile.d files.
+
+2020-10-01 Frank Ch. Eigler <fche@redhat.com>
+
+ PR25461
+ * profile.sh.in, profile.csh.in: New files for /etc/profile.d
+ to define $DEBUGINFOD_URLS.
+ * elfutils.spec.in: Configure with --enable-debuginfod-urls.
+ * Makefile.am: Install them.
+
+2020-09-18 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Add BuildRequires for libzstd-devel and zstd.
+ * libdw.pc.in: Requires.private libzstd.
+
+2020-09-08 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Update for 0.181.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * upload-release.sh: Use /usr/bin/env bash.
+
+2020-06-11 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Update for 0.189.
+
+2020-04-21 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.sysconfig (DEBUGINFOD_PATHS): Add /var/lib/pulp.
+
+2020-03-30 Mark Wielaard <mark@klomp.org>
+
+ * upload-release.sh: chmod uploaded dir and files to make them
+ readable.
+
+2020-03-30 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Update for 0.179.
+
+2020-03-25 Frank Ch. Eigler <fche@redhat.com>
+
+ * elfutils.spec.in: *Require: bsdtar instead of dpkg.
+
+2020-03-04 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in (package debuginfod): Remove Requires: rpm.
+ Add Requires: dpkg.
+
+2020-01-12 Frank Ch. Eigler <fche@redhat.com>
+
+ * elfutils.spec.in: Typo fix for "Requires: debuginfod-client".
+
+2020-01-11 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.service: Set PrivateTmp=yes.
+
+2020-01-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (pkgconfig_DATA): Conditionalize libdebuginfod.pc
+ on DEBUGINFOD.
+
+2019-12-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * elfutils.spec.in (debuginfod): Add BuildRequire dpkg
+ for deb testing. (Available on Fedora & EPEL, not base RHEL.)
+
+2019-12-05 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Add explicit version-release requires for all
+ packages.
+
+2019-11-28 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in (debuginfod): Add an explicit Requires
+ elfutils-debuginfod-client.
+
+2019-11-27 Mark Wielaard <mark@klomp.org>
+
+ * elfutils.spec.in: Move all versioned libdebuginfod libraries
+ from debuginfod-client-devel to debuginfod-client.
+
2019-11-26 Mark Wielaard <mark@klomp.org>
* elfutils.spec.in: Remove Group tags, remove fedora and rhel
diff --git a/config/Makefile.am b/config/Makefile.am
index 55e895ac..a66f5490 100644
--- a/config/Makefile.am
+++ b/config/Makefile.am
@@ -30,10 +30,20 @@
##
EXTRA_DIST = elfutils.spec.in known-dwarf.awk 10-default-yama-scope.conf \
libelf.pc.in libdw.pc.in libdebuginfod.pc.in \
- debuginfod.service debuginfod.sysconfig
+ debuginfod.service debuginfod.sysconfig profile.sh.in profile.csh.in
pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libelf.pc libdw.pc libdebuginfod.pc
+pkgconfig_DATA = libelf.pc libdw.pc
+if LIBDEBUGINFOD
+pkgconfig_DATA += libdebuginfod.pc
+
+install-data-local:
+ $(INSTALL_DATA) profile.sh -D $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.sh
+ $(INSTALL_DATA) profile.csh -D $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.csh
+
+uninstall-local:
+ rm -f $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.sh $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.csh
+endif
if MAINTAINER_MODE
$(srcdir)/elfutils.spec.in: $(top_srcdir)/NEWS
diff --git a/config/debuginfod.service b/config/debuginfod.service
index d8ef072b..b64d8cb9 100644
--- a/config/debuginfod.service
+++ b/config/debuginfod.service
@@ -9,7 +9,9 @@ User=debuginfod
Group=debuginfod
#CacheDirectory=debuginfod
ExecStart=/usr/bin/debuginfod -d /var/cache/debuginfod/debuginfod.sqlite -p $DEBUGINFOD_PORT $DEBUGINFOD_VERBOSE $DEBUGINFOD_PRAGMAS $DEBUGINFOD_PATHS
-TimeoutStopSec=10
+# Stopping can take a long time if scanning of large archives is in progress
+TimeoutStopSec=60
+PrivateTmp=yes
[Install]
WantedBy=multi-user.target
diff --git a/config/debuginfod.sysconfig b/config/debuginfod.sysconfig
index c56bcf3f..44603874 100644
--- a/config/debuginfod.sysconfig
+++ b/config/debuginfod.sysconfig
@@ -3,7 +3,7 @@ DEBUGINFOD_PORT="8002"
#DEBUGINFOD_VERBOSE="-v"
# some common places to find trustworthy ELF/DWARF files and RPMs
-DEBUGINFOD_PATHS="-t43200 -F -R /usr/lib/debug /usr/bin /usr/libexec /usr/sbin /usr/lib /usr/lib64 /var/cache/yum /var/cache/dnf"
+DEBUGINFOD_PATHS="-t43200 -F -R /usr/lib/debug /usr/bin /usr/libexec /usr/sbin /usr/lib /usr/lib64 /var/cache/yum /var/cache/dnf /var/lib/pulp"
# prefer reliability/durability over performance
#DEBUGINFOD_PRAGMAS="-D 'pragma synchronous=full;'"
diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in
index 46779340..46b404f9 100644
--- a/config/elfutils.spec.in
+++ b/config/elfutils.spec.in
@@ -1,16 +1,16 @@
# -*- rpm-spec-*-
-Summary: A collection of utilities and DSOs to handle ELF files and DWARF data
Name: elfutils
Version: @PACKAGE_VERSION@
Release: 1
URL: http://elfutils.org/
License: GPLv3+ and (GPLv2+ or LGPLv3+) and GFDL
Source: ftp://sourceware.org/pub/elfutils/%{version}/elfutils-%{version}.tar.bz2
+Summary: A collection of utilities and DSOs to handle ELF files and DWARF data
Requires: elfutils-libelf = %{version}-%{release}
Requires: elfutils-libs = %{version}-%{release}
# Can be a Recommends if rpm supports that
-Requires: elfutils-debuginfod-client
+Requires: elfutils-debuginfod-client = %{version}-%{release}
BuildRequires: gcc
# For libstdc++ demangle support
@@ -24,6 +24,7 @@ BuildRequires: flex
BuildRequires: zlib-devel
BuildRequires: bzip2-devel
BuildRequires: xz-devel
+BuildRequires: libzstd-devel
# For debuginfod
BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33
@@ -33,8 +34,10 @@ BuildRequires: pkgconfig(libarchive) >= 3.1.2
# For tests need to bunzip2 test files.
BuildRequires: bzip2
+BuildRequires: zstd
# For the run-debuginfod-find.sh test case in %check for /usr/sbin/ss
BuildRequires: iproute
+BuildRequires: bsdtar
BuildRequires: curl
%define _gnu %{nil}
@@ -54,7 +57,7 @@ License: GPLv2+ or LGPLv3+
Requires: elfutils-libelf = %{version}-%{release}
Requires: default-yama-scope
# Can be a Recommends if rpm supports that
-Requires: elfutils-debuginfod-client
+Requires: elfutils-debuginfod-client = %{version}-%{release}
%description libs
The elfutils-libs package contains libraries which implement DWARF, ELF,
@@ -68,11 +71,8 @@ Summary: Development libraries to handle compiled objects
License: GPLv2+ or LGPLv3+
Requires: elfutils-libs = %{version}-%{release}
Requires: elfutils-libelf-devel = %{version}-%{release}
-%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20
-Recommends: elfutils-debuginfod-client-devel
-%else
-Requires: elfutils-debuginfod-client-devel
-%endif
+# Can be a Recommends if rpm supports that
+Requires: elfutils-debuginfod-client-devel = %{version}-%{release}
%description devel
The elfutils-devel package contains the libraries to create
@@ -87,8 +87,8 @@ Requires: elfutils-devel = %{version}-%{release}
Requires: elfutils-libelf-devel-static = %{version}-%{release}
%description devel-static
-The elfutils-devel-static archive contains the static archives
-with the code the handle compiled objects.
+The elfutils-devel-static package contains the static archives
+with the code to handle compiled objects.
%package libelf
Summary: Library to read and write ELF files
@@ -144,17 +144,21 @@ License: GPLv3+ and (GPLv2+ or LGPLv3+)
%package debuginfod-client-devel
Summary: Libraries and headers to build debuginfod client applications
License: GPLv2+ or LGPLv3+
+Requires: elfutils-debuginfod-client = %{version}-%{release}
%package debuginfod
Summary: HTTP ELF/DWARF file server addressed by build-id
License: GPLv3+
+Requires: elfutils-libs = %{version}-%{release}
+Requires: elfutils-libelf = %{version}-%{release}
+Requires: elfutils-debuginfod-client = %{version}-%{release}
BuildRequires: systemd
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
Requires(pre): shadow-utils
-# For /usr/bin/cpio2rpm
-Requires: rpm
+# To extract .deb files with a bsdtar (= libarchive) subshell
+Requires: bsdtar
%description debuginfod-client
The elfutils-debuginfod-client package contains shared libraries
@@ -177,7 +181,7 @@ such servers to download those files on demand.
%setup -q
%build
-%configure --program-prefix=%{_programprefix} --enable-debuginfod
+%configure --program-prefix=%{_programprefix} --enable-debuginfod --enable-debuginfod-urls
make -s %{?_smp_mflags}
%install
@@ -187,6 +191,8 @@ mkdir -p ${RPM_BUILD_ROOT}%{_prefix}
%make_install
chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so*
+mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod
+touch ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite
# XXX Nuke unpackaged files
( cd ${RPM_BUILD_ROOT}
@@ -289,26 +295,28 @@ fi
%files debuginfod-client
%defattr(-,root,root)
%{_libdir}/libdebuginfod-%{version}.so
+%{_libdir}/libdebuginfod.so.*
%{_bindir}/debuginfod-find
%{_mandir}/man1/debuginfod-find.1*
-
+%config(noreplace) %{_sysconfdir}/profile.d/*
+
%files debuginfod-client-devel
%defattr(-,root,root)
%{_libdir}/pkgconfig/libdebuginfod.pc
%{_mandir}/man3/debuginfod_*.3*
%{_includedir}/elfutils/debuginfod.h
-%{_libdir}/libdebuginfod.so*
+%{_libdir}/libdebuginfod.so
%files debuginfod
%defattr(-,root,root)
%{_bindir}/debuginfod
-%config(noreplace) %verify(not md5 size mtime) %{_sysconfdir}/sysconfig/debuginfod
+%config(noreplace) %{_sysconfdir}/sysconfig/debuginfod
%{_unitdir}/debuginfod.service
%{_sysconfdir}/sysconfig/debuginfod
%{_mandir}/man8/debuginfod.8*
%dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod
-%verify(not md5 size mtime) %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite
+%ghost %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite
%pre debuginfod
getent group debuginfod >/dev/null || groupadd -r debuginfod
@@ -324,6 +332,73 @@ exit 0
%systemd_postun_with_restart debuginfod.service
%changelog
+* Fri Feb 5 2021 Mark Wielaard <mark@klomp.org> 0.183-1
+- debuginfod: New thread-busy metric and more detailed error metrics.
+ New --fdcache-mintmp and tracking of filesystem freespace.
+- debigonfod-client: DEBUGINFOD_SONAME macro added to debuginfod.h can
+ be used to dlopen the libdebuginfod.so library.
+ New function debuginfod_set_verbose_fd and DEBUGINFOD_VERBOSE
+ environment variable.
+- config: profile.sh and profile.csh won't export DEBUGINFOD_URLS
+ unless configured --enable-debuginfod-urls[=URLS]
+- elflint, readelf: Recognize SHF_GNU_RETAIN.
+ Handle SHT_X86_64_UNWIND as valid relocation target type.
+
+* Sat Oct 31 2020 Mark Wielaard <mark@klomp.org> 0.182-1
+- backends: Support for tilegx has been removed.
+- config: New /etc/profile.d files to provide default $DEBUGINFOD_URLS.
+- debuginfod: More efficient package traversal, tolerate various
+ errors during scanning, grooming progress is more visible and
+ interruptible, more prometheus metrics.
+- debuginfod-client: Now supports compressed (kernel) ELF images.
+- libdwfl: Add ZSTD compression support.
+
+* Tue Sep 8 2020 Mark Wielaard <mark@klomp.org> 0.181-1
+- libelf: elf_update now compensates (fixes up) a bad sh_addralign
+ for SHF_COMPRESSED sections.
+- libdebuginfod: configure now takes --enable-libdebuginfod=dummy or
+ --disable-libdebuginfod for bootstrapping.
+ DEBUGINFOD_URLS now accepts "scheme-free" urls
+ (guessing at what the user meant, either http:// or file://)
+- readelf, elflint: Handle aarch64 bti, pac bits in dynamic table and
+ gnu property notes.
+- libdw, readelf: Recognize DW_CFA_AARCH64_negate_ra_state. Allows
+ unwinding on arm64 for code that is compiled for PAC
+ (Pointer Authentication Code) as long as it isn't enabled.
+
+* Thu Jun 11 2020 Mark Wielaard <mark@klomp.org> 0.180-1
+- elflint: Allow SHF_EXCLUDE as generic section flag when --gnu is given.
+- libdw, readelf: Handle GCC LTO .gnu.debuglto_ prefix.
+- libdw: Use correct CU to resolve file names in dwarf_decl_file.
+- libdwfl: Handle debugaltlink in dwfl_standard_find_debuginfo.
+- size: Also obey radix printing for bsd format.
+- nm: Explicitly print weak 'V' or 'T' and common 'C' symbols.
+
+* Mon Mar 30 2020 Mark Wielaard <mark@klomp.org> 0.179-1
+- debuginfod-client: When DEBUGINFOD_PROGRESS is set and the program
+ doesn't install its own debuginfod_progressfn_t show download
+ progress on stderr.
+ DEBUGINFOD_TIMEOUT is now defined as seconds to get at least 100K,
+ defaults to 90 seconds.
+ Default to $XDG_CACHE_HOME/debuginfod_client.
+ New functions debuginfod_set_user_data, debuginfod_get_user_data,
+ debuginfod_get_url and debuginfod_add_http_header.
+ Support for file:// URLs.
+- debuginfod: Uses libarchive directly for reading rpm archives.
+ Support for indexing .deb/.ddeb archives through dpkg-deb or bsdtar.
+ Generic archive support through -Z EXT[=CMD]. Which can be used for
+ example for arch-linux pacman files by using -Z '.tar.zst=zstdcat'.
+ Better logging using User-Agent and X-Forwarded-For headers.
+ More prometheus metrics.
+ Support for eliding dots or extraneous slashes in path names.
+- debuginfod-find: Accept /path/names in place of buildid hex.
+- libelf: Handle PN_XNUM in elf_getphdrnum before shdr 0 is cached.
+ Ensure zlib resource cleanup on failure.
+- libdwfl: dwfl_linux_kernel_find_elf and dwfl_linux_kernel_report_offline
+ now find and handle a compressed vmlinuz image.
+- readelf, elflint: Handle PT_GNU_PROPERTY.
+- translations: Updated Ukrainian translation.
+
* Tue Nov 26 2019 Mark Wielaard <mark@klomp.org> 0.178-1
- debuginfod: New server, client tool and library to index and fetch
ELF/DWARF files addressed by build-id through HTTP.
@@ -358,7 +433,7 @@ exit 0
CVE-2019-7664, CVE-2019-7665.
* Wed Nov 14 2018 Mark Wielaard <mark@klomp.org> 0.175-1
-- readelf: Handle mutliple .debug_macro sections.
+- readelf: Handle multiple .debug_macro sections.
Recognize and parse GNU Property notes, NT_VERSION notes and
GNU Build Attribute ELF Notes.
- strip: Handle SHT_GROUP correctly.
@@ -717,7 +792,7 @@ exit 0
* Mon Feb 16 2009 Ulrich Drepper <drepper@redhat.com> 0.140-1
- libelf: Fix regression in creation of section header
-- libdwfl: Less strict behavior if DWARF reader ist just used to
+- libdwfl: Less strict behavior if DWARF reader is just used to
display data
* Thu Jan 22 2009 Ulrich Drepper <drepper@redhat.com> 0.139-1
@@ -776,8 +851,8 @@ ET_REL
* Mon Oct 15 2007 Ulrich Drepper <drepper@redhat.com> 0.130-1
- readelf: -p option can take an argument like -x for one section,
or no argument (as before) for all SHF_STRINGS sections;
- new option --archive-index (or -c); improved -n output fo
-r core files, on many machines
+ new option --archive-index (or -c); improved -n output for
+core files, on many machines
- libelf: new function elf_getdata_rawchunk, replaces gelf_rawchunk;
new functions gelf_getnote, gelf_getauxv, gelf_update_auxv
- readelf, elflint: handle SHT_NOTE sections without requiring phdrs
@@ -943,7 +1018,7 @@ symbols.
- readelf: improve DWARF output format
* Mon Apr 4 2005 Ulrich Drepper <drepper@redhat.com> 0.106-1
-- libdw: Updated dwarf.h from DWARF3 speclibdw: add new funtions dwarf_f
+- libdw: Updated dwarf.h from DWARF3 speclibdw: add new functions dwarf_f
unc_entrypc, dwarf_func_file, dwarf_func_line,dwarf_func_col, dwarf_ge
tsrc_file
@@ -1041,7 +1116,7 @@ tsrc_file
* Wed Jan 22 2003 Jakub Jelinek <jakub@redhat.com> 0.72-4
- fix arguments to gelf_getsymshndx and elf_getshstrndx
- fix other warnings
-- reenable checks on s390x
+- re-enable checks on s390x
* Sat Jan 11 2003 Karsten Hopp <karsten@redhat.de> 0.72-3
- temporarily disable checks on s390x, until someone has
diff --git a/config/libdw.pc.in b/config/libdw.pc.in
index 3fc283db..2e83a432 100644
--- a/config/libdw.pc.in
+++ b/config/libdw.pc.in
@@ -17,6 +17,6 @@ Requires: libelf = @VERSION@
# We support various compressed ELF images, but don't export any of the
# data structures or functions. zlib (gz) is always required, bzip2 (bz2)
-# and lzma (xz) are optional. But bzip2 doesn't have a pkg-config file.
-Requires.private: zlib @LIBLZMA@
+# lzma (xz) and zstd () are optional. But bzip2 doesn't have a pkg-config file.
+Requires.private: zlib @LIBLZMA@ @LIBZSTD@
Libs.private: @BZ2_LIB@
diff --git a/config/profile.csh.in b/config/profile.csh.in
new file mode 100644
index 00000000..0a2d6d16
--- /dev/null
+++ b/config/profile.csh.in
@@ -0,0 +1,11 @@
+if ("@DEBUGINFOD_URLS@" != "") then
+ if ($?DEBUGINFOD_URLS) then
+ if ($%DEBUGINFOD_URLS) then
+ setenv DEBUGINFOD_URLS "$DEBUGINFOD_URLS @DEBUGINFOD_URLS@"
+ else
+ setenv DEBUGINFOD_URLS "@DEBUGINFOD_URLS@"
+ endif
+ else
+ setenv DEBUGINFOD_URLS "@DEBUGINFOD_URLS@"
+ endif
+endif
diff --git a/config/profile.sh.in b/config/profile.sh.in
new file mode 100644
index 00000000..aa228a0d
--- /dev/null
+++ b/config/profile.sh.in
@@ -0,0 +1,4 @@
+if [ -n "@DEBUGINFOD_URLS@" ]; then
+ DEBUGINFOD_URLS="${DEBUGINFOD_URLS-}${DEBUGINFOD_URLS:+ }@DEBUGINFOD_URLS@"
+ export DEBUGINFOD_URLS
+fi
diff --git a/config/upload-release.sh b/config/upload-release.sh
index df5e3a07..ba43aa1f 100755
--- a/config/upload-release.sh
+++ b/config/upload-release.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# Must be run in the source directory.
# Should have passed make distcheck.
@@ -20,7 +20,7 @@ echo Make sure the git repo is tagged, signed and pushed
echo git tag -s -m \"elfutils $VERSION release\" elfutils-$VERSION
echo git push --tags
-# Create a temporary directoy and make sure it is cleaned up.
+# Create a temporary directory and make sure it is cleaned up.
tempdir=$(mktemp -d) || exit
trap "rm -rf -- ${tempdir}" EXIT
@@ -50,6 +50,8 @@ cp -r $VERSION $HOME/elfutils-$VERSION
# Upload
scp -r $VERSION sourceware.org:/sourceware/ftp/pub/elfutils/
ssh sourceware.org "(cd /sourceware/ftp/pub/elfutils \
+ && chmod go+rx $VERSION \
+ && chmod go+r $VERSION/elfutils-$VERSION.tar.bz2* \
&& ln -sf $VERSION/elfutils-$VERSION.tar.bz2 elfutils-latest.tar.bz2 \
&& ln -sf $VERSION/elfutils-$VERSION.tar.bz2.sig elfutils-latest.tar.bz2.sig \
&& ls -lah elfutils-latest*)"
diff --git a/configure.ac b/configure.ac
index 5a2dc373..d345495d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@ dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
-AC_INIT([elfutils],[0.178],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
+AC_INIT([elfutils],[0.183],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
dnl Workaround for older autoconf < 2.64
m4_ifndef([AC_PACKAGE_URL],
@@ -25,6 +25,9 @@ m4_ifndef([AC_PACKAGE_URL],
[Define to home page for this package])
AC_SUBST([PACKAGE_URL], ["http://elfutils.org/"])])
+LIBDEBUGINFOD_SONAME=libdebuginfod.so.1
+AC_SUBST([LIBDEBUGINFOD_SONAME])
+
# We want eu- as default program prefix if none was given by the user.
# But if the user explicitly provided --program-prefix="" then pretend
# it wasn't set at all (NONE). We want to test this really early before
@@ -41,7 +44,7 @@ fi
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_FILES([config/Makefile])
-AC_COPYRIGHT([Copyright (C) 1996-2018 The elfutils developers.])
+AC_COPYRIGHT([Copyright (C) 1996-2021 The elfutils developers.])
AC_PREREQ(2.63) dnl Minimum Autoconf version required.
dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
@@ -54,14 +57,11 @@ AC_CONFIG_SRCDIR([libelf/libelf.h])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_MACRO_DIR([m4])
-AC_CONFIG_FILES([m4/Makefile])
-
dnl The RPM spec file. We substitute a few values in the file.
AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
dnl debuginfo-server client & server parts.
-AC_CONFIG_FILES([debuginfod/Makefile])
+AC_CONFIG_FILES([debuginfod/Makefile debuginfod/debuginfod.h])
AC_CANONICAL_HOST
@@ -197,6 +197,15 @@ if test "$ac_cv_zdefs" = "yes"; then
dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
fi
+# We really want build-ids. Warn and force generating them if gcc was
+# configure without --enable-linker-build-id
+AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
+AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; $READELF -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
+if test "$ac_cv_buildid" = "no"; then
+ AC_MSG_WARN([compiler doesn't generate build-id by default])
+ LDFLAGS="$LDFLAGS -Wl,--build-id"
+fi
+
ZRELRO_LDFLAGS="-Wl,-z,relro"
AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
save_LDFLAGS="$LDFLAGS"
@@ -228,7 +237,7 @@ LDFLAGS="$save_LDFLAGS"])
AS_IF([test "x$ac_cv_tls" != xyes],
AC_MSG_ERROR([__thread support required]))
-dnl Before 4.9 gcc doesn't ship stdatomic.h, but the nessesary atomics are
+dnl Before 4.9 gcc doesn't ship stdatomic.h, but the necessary atomics are
dnl available by (at least) 4.7. So if the system doesn't have a stdatomic.h we
dnl fall back on one copied from FreeBSD that handles the difference.
AC_CACHE_CHECK([whether gcc provides stdatomic.h], ac_cv_has_stdatomic,
@@ -252,7 +261,8 @@ dnl check it before including config.h (which might define _FILE_OFFSET_BITS).
AC_CACHE_CHECK([whether fts.h is bad when included (with LFS)], ac_cv_bad_fts,
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <fts.h>]])],
ac_cv_bad_fts=no, ac_cv_bad_fts=yes)])
-AS_IF([test "x$ac_cv_bad_fts" = "xyes"], [CFLAGS="$CFLAGS -DBAD_FTS=1"])
+AS_IF([test "x$ac_cv_bad_fts" = "xyes"],
+ [CFLAGS="$CFLAGS -DBAD_FTS=1" CXXFLAGS="$CXXFLAGS -DBAD_FTS=1"])
# See if we can add -D_FORTIFY_SOURCE=2. Don't do it if it is already
# (differently) defined or if it generates warnings/errors because we
@@ -264,7 +274,7 @@ case "$CFLAGS" in
;;
*)
save_CFLAGS="$CFLAGS"
- CFLAGS="-D_FORTIFY_SOURCE=2 -Werror $CFLAGS"
+ CFLAGS="-D_FORTIFY_SOURCE=2 $CFLAGS -Werror"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <string.h>
int main() { return 0; }
@@ -285,7 +295,7 @@ case $use_debugpred in
esac
AC_SUBST([DEBUGPRED], $use_debugpred_val)
-dnl Enable gprof suport.
+dnl Enable gprof support.
AC_ARG_ENABLE([gprof],
AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
if test "$use_gprof" = yes; then
@@ -294,13 +304,16 @@ if test "$use_gprof" = yes; then
fi
AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
-# Enable gcov suport.
+# Enable gcov support.
AC_ARG_ENABLE([gcov],
AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
if test "$use_gcov" = yes; then
CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
LDFLAGS="$LDFLAGS -fprofile-arcs"
+ AC_CHECK_PROG([GCOV], [gcov], [gcov])
+ AC_CHECK_PROG([LCOV], [lcov], [lcov])
+ AC_CHECK_PROG([GENHTML], [genhtml], [genhtml])
fi
AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
@@ -387,8 +400,8 @@ eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
AS_IF([test "x$with_zlib" = xno], [AC_MSG_ERROR([zlib not found but is required])])
LIBS="$save_LIBS"
-dnl Test for bzlib and xz/lzma, gives BZLIB/LZMALIB .am
-dnl conditional and config.h USE_BZLIB/USE_LZMALIB #define.
+dnl Test for bzlib and xz/lzma/zstd, gives BZLIB/LZMALIB/ZSTD .am
+dnl conditional and config.h USE_BZLIB/USE_LZMALIB/USE_ZSTD #define.
save_LIBS="$LIBS"
LIBS=
eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
@@ -398,6 +411,9 @@ AC_SUBST([BZ2_LIB])
eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
AS_IF([test "x$with_lzma" = xyes], [LIBLZMA="liblzma"], [LIBLZMA=""])
AC_SUBST([LIBLZMA])
+eu_ZIPLIB(zstd,ZSTD,zstd,ZSTD_decompress,[ZSTD (zst)])
+AS_IF([test "x$with_zstd" = xyes], [LIBZSTD="libzstd"], [LIBLZSTD=""])
+AC_SUBST([LIBZSTD])
zip_LIBS="$LIBS"
LIBS="$save_LIBS"
AC_SUBST([zip_LIBS])
@@ -412,6 +428,11 @@ AC_CHECK_DECLS([mempcpy],[],[],
AC_CHECK_FUNCS([process_vm_readv])
+old_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -D_GNU_SOURCE"
+AC_FUNC_STRERROR_R()
+CFLAGS="$old_CFLAGS"
+
AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
AM_CONDITIONAL(DEMANGLE, test "x$ac_cv_lib_stdcpp___cxa_demangle" = "xyes")
@@ -504,31 +525,36 @@ if test "$ac_cv_implicit_fallthrough" = "yes"; then
[Defined if __attribute__((fallthrough)) is supported])
fi
-dnl Check if we have argp available from our libc
-AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [#include <argp.h>],
- [int argc=1; char *argv[]={"test"}; argp_parse(0,argc,&argv,0,0,0); return 0;]
- )],
- [libc_has_argp="true"],
- [libc_has_argp="false"]
-)
-
-dnl If our libc doesn't provide argp, then test for libargp
-if test "$libc_has_argp" = "false" ; then
- AC_MSG_WARN("libc does not have argp")
- AC_CHECK_LIB([argp], [argp_parse], [have_argp="true"], [have_argp="false"])
-
- if test "$have_argp" = "false"; then
- AC_MSG_ERROR("no libargp found")
- else
- argp_LDADD="-largp"
- fi
-else
- argp_LDADD=""
-fi
+saved_LIBS="$LIBS"
+AC_SEARCH_LIBS([argp_parse], [argp])
+LIBS="$saved_LIBS"
+case "$ac_cv_search_argp_parse" in
+ no) AC_MSG_FAILURE([failed to find argp_parse]) ;;
+ -l*) argp_LDADD="$ac_cv_search_argp_parse" ;;
+ *) argp_LDADD= ;;
+esac
AC_SUBST([argp_LDADD])
+saved_LIBS="$LIBS"
+AC_SEARCH_LIBS([fts_close], [fts])
+LIBS="$saved_LIBS"
+case "$ac_cv_search_fts_close" in
+ no) AC_MSG_FAILURE([failed to find fts_close]) ;;
+ -l*) fts_LIBS="$ac_cv_search_fts_close" ;;
+ *) fts_LIBS= ;;
+esac
+AC_SUBST([fts_LIBS])
+
+saved_LIBS="$LIBS"
+AC_SEARCH_LIBS([_obstack_free], [obstack])
+LIBS="$saved_LIBS"
+case "$ac_cv_search__obstack_free" in
+ no) AC_MSG_FAILURE([failed to find _obstack_free]) ;;
+ -l*) obstack_LIBS="$ac_cv_search__obstack_free" ;;
+ *) obstack_LIBS= ;;
+esac
+AC_SUBST([obstack_LIBS])
+
dnl The directories with content.
dnl Documentation.
@@ -556,7 +582,6 @@ dnl CPU handling library.
AC_CONFIG_FILES([libcpu/Makefile])
dnl Assembler library.
-AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
AC_CONFIG_FILES([libasm/Makefile])
dnl CPU-specific backend libraries.
@@ -566,16 +591,21 @@ dnl Tools.
AC_CONFIG_FILES([src/Makefile po/Makefile.in])
dnl Test suite.
-AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
AC_CONFIG_FILES([tests/Makefile])
dnl pkgconfig files
AC_CONFIG_FILES([config/libelf.pc config/libdw.pc config/libdebuginfod.pc])
-# Get the definitions necessary to create the Makefiles in the po
-# subdirectories. This is a small subset of the gettext rules.
-AC_SUBST(USE_NLS, yes)
-AM_PO_SUBDIRS
+dnl As long as "git grep 'PRI[diouxX]' po" reports matches in
+dnl translatable strings, we must use need-formatstring-macros here.
+AM_GNU_GETTEXT([external], [need-formatstring-macros])
+
+dnl AM_GNU_GETTEXT_VERSION is still needed for old versions
+dnl of autoreconf that do not recognize AM_GNU_GETTEXT_REQUIRE_VERSION.
+dnl 0.19.6 is the first version of gettext that provides
+dnl AM_GNU_GETTEXT_REQUIRE_VERSION support.
+AM_GNU_GETTEXT_VERSION([0.19.6])
+AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6])
dnl Appended to the config.h file.
dnl We hide all kinds of configuration magic in lib/eu-config.h.
@@ -618,12 +648,6 @@ esac
# Round up to the next release API (x.y) version.
eu_version=$(( (eu_version + 999) / 1000 ))
-dnl Unique ID for this build.
-MODVERSION="Build for ${eu_version} ${ac_cv_build}"
-AC_SUBST([MODVERSION])
-AC_DEFINE_UNQUOTED(MODVERSION, "$MODVERSION")
-AH_TEMPLATE([MODVERSION], [Identifier for modules in the build.])
-
AC_CHECK_SIZEOF(long)
# On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
@@ -673,29 +697,69 @@ if test "$HAVE_BUNZIP2" = "no"; then
AC_MSG_WARN([No bunzip2, needed to run make check])
fi
-# Look for libmicrohttpd, libcurl, libarchive, sqlite for debuginfo server
-# minimum versions as per rhel7. Single --enable-* option arranges to build
-# both client and server.
-AC_ARG_ENABLE([debuginfod],AC_HELP_STRING([--enable-debuginfod], [Build debuginfod server and client]))
+# For tests that need to use zstd compression
+AC_CHECK_PROG(HAVE_ZSTD, zstd, yes, no)
+AM_CONDITIONAL([HAVE_ZSTD],[test "x$HAVE_ZSTD" = "xyes"])
+
+# Look for libcurl for libdebuginfod minimum version as per rhel7.
+AC_ARG_ENABLE([libdebuginfod],AC_HELP_STRING([--enable-libdebuginfod], [Build debuginfod client library (can be =dummy)]))
+AS_IF([test "x$enable_libdebuginfod" != "xno"], [
+ if test "x$enable_libdebuginfod" != "xdummy"; then
+ AC_MSG_NOTICE([checking libdebuginfod dependencies, --disable-libdebuginfod or --enable-libdebuginfo=dummy to skip])
+ enable_libdebuginfod=yes # presume success
+ PKG_PROG_PKG_CONFIG
+ PKG_CHECK_MODULES([libcurl],[libcurl >= 7.29.0],[],[enable_libdebuginfod=no])
+ if test "x$enable_libdebuginfod" = "xno"; then
+ AC_MSG_ERROR([dependencies not found, use --disable-libdebuginfod to disable or --enable-libdebuginfod=dummy to build a (bootstrap) dummy library.])
+ fi
+ else
+ AC_MSG_NOTICE([building (bootstrap) dummy libdebuginfo library])
+ fi
+])
+
+AS_IF([test "x$enable_libdebuginfod" = "xyes" || test "x$enable_libdebuginfod" = "xdummy"],
+ [AC_DEFINE([ENABLE_LIBDEBUGINFOD], [1], [Enable libdebuginfod])])
+AS_IF([test "x$enable_libdebuginfod" = "xdummy"],
+ [AC_DEFINE([DUMMY_LIBDEBUGINFOD], [1], [Build dummy libdebuginfod])])
+AM_CONDITIONAL([LIBDEBUGINFOD],[test "x$enable_libdebuginfod" = "xyes" || test "x$enable_libdebuginfod" = "xdummy"])
+AM_CONDITIONAL([DUMMY_LIBDEBUGINFOD],[test "x$enable_libdebuginfod" = "xdummy"])
+
+# Look for libmicrohttpd, libarchive, sqlite for debuginfo server
+# minimum versions as per rhel7.
+AC_ARG_ENABLE([debuginfod],AC_HELP_STRING([--enable-debuginfod], [Build debuginfod server]))
AC_PROG_CXX
-AX_CXX_COMPILE_STDCXX(11, noext, optional)
AS_IF([test "x$enable_debuginfod" != "xno"], [
- AC_MSG_NOTICE([checking debuginfod dependencies, disable to skip])
+ AC_MSG_NOTICE([checking debuginfod C++11 support, --disable-debuginfod to skip])
+ AX_CXX_COMPILE_STDCXX(11, noext, mandatory)
+ AC_MSG_NOTICE([checking debuginfod dependencies, --disable-debuginfod to skip])
+ if test "x$enable_libdebuginfod" = "xno"; then
+ AC_MSG_ERROR([need libdebuginfod (or dummy), use --disable-debuginfod to disable.])
+ fi
enable_debuginfod=yes # presume success
PKG_PROG_PKG_CONFIG
- if test "x$ac_cv_prog_ac_ct_CXX" = "x"; then enable_debuginfod=no; fi
PKG_CHECK_MODULES([libmicrohttpd],[libmicrohttpd >= 0.9.33],[],[enable_debuginfod=no])
- PKG_CHECK_MODULES([libcurl],[libcurl >= 7.29.0],[],[enable_debuginfod=no])
PKG_CHECK_MODULES([sqlite3],[sqlite3 >= 3.7.17],[],[enable_debuginfod=no])
PKG_CHECK_MODULES([libarchive],[libarchive >= 3.1.2],[],[enable_debuginfod=no])
if test "x$enable_debuginfod" = "xno"; then
- AC_MSG_ERROR([C++ compiler or dependencies not found, use --disable-debuginfod to disable.])
+ AC_MSG_ERROR([dependencies not found, use --disable-debuginfod to disable.])
fi
])
AS_IF([test "x$enable_debuginfod" != "xno"],AC_DEFINE([ENABLE_DEBUGINFOD],[1],[Build debuginfod]))
AM_CONDITIONAL([DEBUGINFOD],[test "x$enable_debuginfod" = "xyes"])
+dnl for /etc/profile.d/elfutils.{csh,sh}
+default_debuginfod_urls=""
+AC_ARG_ENABLE(debuginfod-urls,
+ [AS_HELP_STRING([--enable-debuginfod-urls@<:@=URLS@:>@],[add URLS to profile.d DEBUGINFOD_URLS])],
+ [if test "x${enableval}" = "xyes";
+ then default_debuginfod_urls="https://debuginfod.elfutils.org/";
+ elif test "x${enableval}" != "xno"; then
+ default_debuginfod_urls="${enableval}";
+ fi],
+ [default_debuginfod_urls=""])
+AC_SUBST(DEBUGINFOD_URLS, $default_debuginfod_urls)
+AC_CONFIG_FILES([config/profile.sh config/profile.csh])
AC_OUTPUT
@@ -714,6 +778,7 @@ AC_MSG_NOTICE([
gzip support : ${with_zlib}
bzip2 support : ${with_bzlib}
lzma/xz support : ${with_lzma}
+ zstd support : ${with_zstd}
libstdc++ demangle support : ${enable_demangler}
File textrel check : ${enable_textrelcheck}
Symbol versioning : ${enable_symbol_versioning}
@@ -726,10 +791,13 @@ AC_MSG_NOTICE([
Deterministic archives by default : ${default_ar_deterministic}
Native language support : ${USE_NLS}
Extra Valgrind annotations : ${use_vg_annotations}
- Debuginfod client/server support : ${enable_debuginfod}
+ libdebuginfod client support : ${enable_libdebuginfod}
+ Debuginfod server support : ${enable_debuginfod}
+ Default DEBUGINFOD_URLS : ${default_debuginfod_urls}
EXTRA TEST FEATURES (used with make check)
have bunzip2 installed (required) : ${HAVE_BUNZIP2}
+ have zstd installed : ${HAVE_ZSTD}
debug branch prediction : ${use_debugpred}
gprof support : ${use_gprof}
gcov support : ${use_gcov}
diff --git a/debuginfod/.gitignore b/debuginfod/.gitignore
new file mode 100644
index 00000000..e0ff6687
--- /dev/null
+++ b/debuginfod/.gitignore
@@ -0,0 +1,3 @@
+/debuginfod
+/debuginfod-find
+/debuginfod.h
diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index 8aa29443..8de88522 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,492 @@
+2021-02-04 Frank Ch. Eigler <fche@redhat.com>
+
+ PR27092 low-memory handling
+ * debuginfod.cxx (fdcache_mintmp): New parameter, with cmd-line option.
+ (parse_opt): Parse it.
+ (main): Default it.
+ (statfs_free_enough_p): New function.
+ (libarchive_fdcache::*): Call it to trigger emergency fdcache flush.
+ (thread_main_scanner): Call it to report filesystem fullness metrics.
+ (groom): Ditto.
+ (set/add_metric): Take double rather than int64_t values.
+ (archive_exception): Propagate suberror to metric label.
+ (main): Detect pthread creation fatal errors properly.
+
+2021-02-02 Frank Ch. Eigler <fche@redhat.com>
+
+ PR27323
+ * debuginfod.cxx (dbq): New read-only database connection for queries
+ only.
+ (signal_handler): Interrupt it.
+ (main): Open / close it.
+ (handle_buildid): Use it for webapi queries only.
+ (database_stats_report): Make more interruptible. Report sqlite3
+ operation times to the prometheus metrics.
+ (groom): Make more interruptible.
+ (thread_main_fts_source_paths, thread_main_groom): Ensure
+ state/progress metrics are fresh even in case of exceptions.
+
+2020-12-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * .gitignore: New file.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * debuginfod-client.c (debuginfod_query_server): Fix spelling typos in
+ comments.
+ * debuginfod.cxx: Likewise.
+ (parse_opt): Fix spelling typos in error diagnostics.
+
+2020-12-08 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am [LIBDEBUGINFOD]: Create libdebuginfod.so.1 first, turn
+ libdebuginfod.so into symlink.
+
+2020-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (libdebuginfod.so): Replace $@.$(VERSION) with
+ $(LIBDEBUGINFOD_SONAME).
+ (install, uninstall, MOSTLYCLEANFILES): Replace
+ libdebuginfod.so.$(VERSION) with $(LIBDEBUGINFOD_SONAME).
+ (VERSION): Remove.
+ * debuginfod.h: Rename to ...
+ * debuginfod.h.in ... this.
+ (DEBUGINFOD_SONAME): New macro.
+
+2020-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (libdebuginfod.so$(EXEEXT)): Drop $(EXEEXT) suffix.
+
+2020-11-25 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (step_ok_done): Correct typo in prom metric label.
+
+2020-11-25 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (tmp_ms_metric): Switch from gettimeofday to
+ clock_gettime(CLOCK_MONOTONIC) for time-interval measurements.
+ (handler_cb, scan_source_paths, groom): Ditto.
+
+2020-11-23 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (tmp_ms_metric): New class for RAII timing metrics.
+ (sqlite_ps::reset, step*): Call it to track sqlite3 performance.
+ (sqlite_exception ctor): Increment sqlite3 error_count.
+
+2020-11-23 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_query_server): Initialize
+ struct handle_data errbuf to the empty string.
+
+2020-11-11 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_set_verbose_fd): New function.
+ (struct debuginfod_client): Add verbose_fd.
+ (struct handle_data): Add errbuf.
+ (debuginfod_query_server): Produce verbose output when
+ debuginfod_client verbose_fd is set. Only clear old data and set
+ default_headers when any work is done. Always goto out when setting
+ rc to an error value. Use CURLOPT_ERRORBUFFER to get more error
+ output when verbose output is requested.
+ * debuginfod.h (DEBUGINFOD_VERBOSE_ENV_VAR): New.
+ (debuginfod_set_verbose_fd): Added.
+ * debuginfod-find.c (parse_opt): Set debuginfod_set_verbose_fd on -v.
+ * bdebuginfod.map (ELFUTILS_0.183): New section, add
+ debuginfod_set_verbose_fd.
+
+2020-11-21 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod.cxx (handle_root): New function.
+ (handler_cb): Handle "/" and report url1 in webapi error.
+
+2020-11-11 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-find.c (progressfn): Use clock_gettime to print Progress
+ at most 5 times a second.
+
+2020-11-19 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (tmp_inc_metric): New class.
+ (handler_cb): Use it to track webapi operations.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+
+ * debuginfod-client.c (debuginfod_init_cache): Use ACCESSPERMS for
+ mkdir, DEFFILEMODE for open with O_CREAT.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+
+ * debuginfod.cxx: include libintl.h.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+
+ * Makefile.am (debuginfod_LDADD): Add argp_LDADD and fts_LIBS.
+ (debuginfod_find_LDADD): Likewise.
+ (libdebuginfod_so_LDLIBS): Add fts_LIBS.
+
+2020-10-31 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (scan_source_file, scan_archive_file): Add new scanned_bytes_total,
+ scanned_files_total metrics.
+ (archive_classify): Exit early if interrupted.
+ (scan_source_paths): Perform realpath/regex checks only on FTS_F files.
+ Tweak metrics.
+
+2020-10-30 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26775 cont'd.
+ * debuginfod.cxx (thread_main_scanner): Ensure control doesn't
+ leave infinite loop until program exit, even if SIGUSR2.
+ (scan_source_paths): Have traverser clean scanq on
+ SIGUSR2. Emit additional traversed_total metrics.
+ (groom): Emit additional groomed_total metrics.
+ (thread_main_groom): Restore previous thread_work_total
+ metric.
+
+2020-10-29 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26775
+ * debuginfod.cxx (forced_*_count): Make these global.
+ (runq::clear): New function.
+ (thread_main_scanner): Check for pending SIGUSR2; interrupt.
+ (scan_source_paths): Check for pending SIGUSR2; interrupt.
+ (groom): Report prometheus stats before groom also. Check for
+ pending SIGUSR1; interrupt. Increment thread_work_total for
+ each file scanned, not the entire cycle.
+
+2020-10-29 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26810
+ * debuginfod.cxx (handle_buildid_*_match): Throw exceptions for
+ more lower level libc errors.
+ (handle_buildid_match): Catch & report exceptions but return 0
+ for continued iteration in the caller.
+
+2020-10-25 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_query_server): Translate
+ CURLE_PEER_FAILED_VERIFICATION to ECONNREFUSED.
+
+2020-10-20 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26756: more prometheus metrics
+ * debuginfod.cxx (*_exception): Add counters for error occurrences.
+ (fdcache::*): Add counters for fdcache operations and status.
+ (fdcache::set_metric): New fn for overall stat counts.
+ (fdcache::limit): ... allow metric-less use from dtors.
+
+2020-10-20 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (handle_buildid*): Add a parameter for detecting
+ internally-originated lookups for dwz resolution.
+
+2020-09-18 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (scan_source_file, archive_classify): Store only
+ canonicalized file names in sdef & sref records in the database.
+
+2020-09-08 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (BUILD_STATIC): Include libcurl_LIBS in libdebuginfod
+ when NOT DUMMY_LIBDEBUGINFOD.
+
+2020-09-16 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-find.c: Fix license block comment.
+
+2020-09-15 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-find.c (main): Use dwelf_elf_begin.
+
+2020-07-03 Alice Zhang <alizhang@redhat.com>
+
+ * debuginfod-client.c (debuginfod_query_server): Use strncasecmp
+ to compare effective_url. Try CURLINFO_SCHEME as fallback.
+
+2020-06-19 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (bin_PROGRAMS): Guard with DEBUGINFOD and
+ LIBDEBUGINFOD.
+ (debuginfod_LDADD): Remove libcurl.
+ (libdebuginfod): When static and DUMMY_LIBDEBUGINFO remove libcurl.
+ (noinst_LIBRARIES): Guard with LIBDEBUGINFOD.
+ (AM_CPPFLAGS): Add -Wno-unused-parameter when DUMMY_LIBDEBUGINFOD.
+ (pkginclude_headers): Guard with LIBDEBUGINFOD
+ (libdebuginfod_so_LIBS): Likewise.
+ (+libdebuginfod_so_LDLIBS): Likewise.
+ (install): Likewise.
+ (uninstall): Likewise.
+ * debuginfod-client.c: Include dummy functions when
+ DUMMY_LIBDEBUGINFOD.
+ * debuginfod.cxx: Remove curl.h include.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_query_server): Check malloc.
+ Move curl_multi_init call before handle_data malloc call.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_query_server): Replace sizeof
+ build_id_bytes check with strlen build_id check.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_query_server): Increase suffix
+ array and prepare having to escape 1 character with 2.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_clean_cache): Handle failing
+ fopen (interval_path).
+
+2020-03-29 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_add_http_header): Check header
+ contains precisely one colon that isn't the first or last char.
+
+2020-03-29 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-client.c (struct debuginfod_client): Add a flag field
+ for progressfn printing.
+ (default_progressfn): Set it if printing \rsomething.
+ (debuginfod_end): Terminate with \n if flag set, i.e., only if the
+ default_progressfn was actually called.
+
+2020-03-27 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod.cxx (parse_opt): Check port is not zero.
+
+2020-03-28 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (handle_buildid_r_match): During archive
+ extraction / fdcache prefetching, set the mtime of each
+ file in the cache.
+
+2020-03-27 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-find.c (main): Extract buildid from /binary/ if
+ given instead of hex string.
+ * Makefile.am: Add elfutils library prereqs for debuginfod-find.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.h, libdebuginfod.map: New functions for _add_url_header.
+ * debuginfod-client.c (struct debuginfod_client): Add headers fields.
+ (debuginfod_add_http_header): New client api to add outgoing headers.
+ (add_default_headers): Renamed from add_extra_headers, skip if flag.
+ (debuginfod_query_server): Pass accumulated headers to libcurl.
+ (debuginfod_end): Clean accumulated headers.
+ (debuginfod_find_*): Add default headers at this point.
+ * debuginfod.cxx (handle_buildid): Add conn pointer. Use it to relay
+ incoming UA and XFF headers to federated upstream debuginfods.
+
+2020-03-26 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (handler_cb): Export two families of metrics for
+ prometheus traffic analysis: response times and data amounts.
+
+2020-03-26 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (parse_opt): For -U, prefer dpkg-deb
+ after all if access(3)-able, fallback to bsdtar.
+
+2020-03-25 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (parse_opt): Associate a bsdtar subshell with
+ the .deb & .ddeb extensions, instead of dpkg-deb.
+
+2020-03-26 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-client.c (debuginfod_query_server): Don't
+ set CURLOPT_PATH_AS_IS on old curl. Mostly harmless.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-client.c (debuginfod_query_server): Set
+ CURLOPT_PATH_AS_IS, to propagate file names verbatim.
+ * debuginfod.cxx (canon_pathname): Implement RFC3986
+ style pathname canonicalization.
+ (handle_buildid): Canonicalize incoming webapi source
+ paths, accept either one.
+ (scan_source_file, archive_classify): Store both
+ original and canonicalized dwarf-source file names.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (handle_buildid): In case of federated fallback
+ queries, handle errors analogously to local ENOENT/404.
+ (handle_metrics): Return a size-of-response value.
+ (handler_cb): Add code to time entire application-side processing
+ stage + response sizes + http codes, so as to emit a complete
+ httpd-flavoured log line for each webapi request.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-client.c (debuginfod_query_server): Print the
+ default_progressfn terminating \n message only if that progressfn
+ is actually set.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-find.c (main): Correct /source full-pathness check for
+ "debuginfod-find -v source deadbeef /pathname" case.
+
+2020-03-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-client.c (struct debuginfod_client): Add url field.
+ (struct handle_data): Add client field as backpointer.
+ (debuginfod_write_callback): Compute & save URL.
+ (default_progressfn): Print front pieces of the URL.
+ (debuginfod_query_server): Clear URL and cleanup after progressfn.
+ * debuginfod-find.c (main): Print URL at transfer conclusion.
+
+2020-03-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.h, libdebuginfod.map: New functions for _get/set_user().
+ * debuginfod-client.c: Implement them.
+ * debuginfod-find.c: Include a token call just for testing them.
+
+2020-03-03 Aaron Merey <amerey@redhat.com>
+
+ * debuginfod-client.c (debuginfod_query_server): Update
+ cache_path even when new default path already exists.
+
+2020-02-27 Aaron Merey <amerey@redhat.com>
+
+ * debuginfod-client.c (xalloc_str): New macro. Call
+ asprintf with error checking.
+ (debuginfod_query_server): Use XDG_CACHE_HOME as a default
+ cache location if it is set. Replace snprintf with xalloc_str.
+
+2020-02-26 Konrad Kleine <kkleine@redhat.com>
+
+ * debuginfod-client.c (debuginfod_query_server): Handle curl's
+ response code correctly when DEBUGINFOD_URLS begin with file://
+
+2020-02-25 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (parse_opt): Treat -R as if -Z.rpm .
+
+2020-02-25 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (fdcache_prefetch): New parameter.
+ (parse_opt): Parse it.
+ (main): Default it.
+ (fdcache::fd_size_mb): Change to double for accuracy.
+ (fdcache::probe): New function.
+ (fdcache::intern): New option to intern at end of LRU.
+ (fdcache::lookup): Clean fdcache.
+ (handle_buildid_r_match): Implement multi-stage archive
+ parsing, with optional prefetching of extracted contents
+ into the fdcache.
+
+2020-02-19 Aaron Merey <amerey@redhat.com>
+
+ * debuginfod-client.c (debuginfod_clean_cache): Restrict
+ cleanup to client-pattern files.
+
+2020-02-05 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (argp options): Add -Z option.
+ (canonicalized_archive_entry_pathname): New function for
+ distro-agnostic file name matching/storage.
+
+2020-01-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (dwarf_extract_source_paths): Don't print
+ "skipping hat" messages at verbosity <=3, too noisy.
+
+2020-01-19 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (scanq): Rework to let groomer/fts threads
+ synchronize with an empty workqueue, and lock out workqueue
+ consumers.
+ (thread_groom): Adopt new scanq idle APIs to lock out scanners.
+ (thread_main_fts_source_paths): Adopt new scanq idler API to
+ avoid being restarted while scanners haven't even finished yet.
+ (thread_main_*): Increment thread_work_total metric only after
+ a work cycle is completed, not when it begins.
+
+2020-01-18 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (thread_main_scanner): Handle empty source_paths[].
+
+2020-01-11 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (libarchive_fdcache): New class/facility to own a
+ cache of temporary files that were previously extracted from an
+ archive. If only it could store just unlinked fd's instead of
+ filenames.
+ (handle_buildid_r_match): Use it to answer dwz/altdebug and webapi
+ requests.
+ (groom): Clean it.
+ (main): Initialize the cache control parameters from heuristics.
+ Use a consistent tmpdir for these and tmp files elsewhere.
+
+2020-01-11 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (conninfo): Print User-Agent and X-Forwarded-For
+ request headers, after mild safety-censorship (for easier machine
+ processing).
+
+2020-01-11 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx: Rework threading model.
+ (workq): New class for concurrent work-queue.
+ (semaphore): Removed class, now unused.
+ (scan_source_file_path): Rework into ...
+ (scan_source_file): New function.
+ (thread_main_scan_source_file_path): Nuke.
+ (scan_source_archive_path): Rework into ...
+ (scan_archive_file): New function.
+ (thread_main_scanner): New function for scanner threads.
+ (thread_main_fts_source_paths): New function for traversal thread.
+ (scan_source_paths): ... doing this.
+ (thread_groom): Tweak metrics for consistency.
+ (main): Start 1 traversal and N scanner threads if needed.
+
+2019-01-02 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod.cxx (default_connect_timeout): Removed.
+ (default_transfer_timeout): Removed.
+ (default_timeout): New. Default to 90 seconds.
+ (debuginfod_query_server): Parse server_timeout_envvar as one number.
+ Set as CURLOPT_LOW_SPEED_TIME, with CURL_OPT_LOW_SPEED_LIMITE as 100K.
+
+2020-01-09 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-client.c (add_extra_headers): New function,
+ based on mjw's draft.
+ (debuginfod_query_server): Call it.
+
+2019-12-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (*_rpm_*): Rename to *_archive_* throughout.
+ (scan_archives): New read-mostly global to identify archive
+ file extensions and corresponding extractor commands.
+ (parse_opt): Handle new -U flag.
+
+2019-12-19 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-client.c (default_progressfn): New function.
+ (debuginfod_begin): Use it if $DEBUGINFOD_PROGRESS set.
+ (server_timeout): Bump to 30 seconds.
+ (debuginfod_query_server): Call progressfn -after- rather than
+ before curl ops, to make it likely that a successful transfer
+ results in final a=b call. Tweak cleanup sequence.
+ * debuginfod.h: Document $DEBUGINFOD_PROGRESS name.
+
+2019-12-09 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_query_server): Check
+ server_urls_envvar early.
+
+2019-12-03 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod-client.c (debuginfod_query_server): Use separate
+ local variables for CURLcode curl_res and CURLMcode curlm_res.
+
2019-11-26 Mark Wielaard <mark@klomp.org>
* Makefile.am (BUILD_STATIC): Add needed libraries for libdw and
diff --git a/debuginfod/Makefile.am b/debuginfod/Makefile.am
index 52ead30a..3adb2755 100644
--- a/debuginfod/Makefile.am
+++ b/debuginfod/Makefile.am
@@ -34,7 +34,6 @@ AM_CPPFLAGS += -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
-I$(srcdir)/../libdw -I$(srcdir)/../libdwelf \
$(libmicrohttpd_CFLAGS) $(libcurl_CFLAGS) $(sqlite3_CFLAGS) \
$(libarchive_CFLAGS)
-VERSION = 1
# Disable eu- prefixing for artifacts (binaries & man pages) in this
# directory, since they do not conflict with binutils tools.
@@ -45,7 +44,11 @@ if BUILD_STATIC
libasm = ../libasm/libasm.a
libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl -lpthread
libelf = ../libelf/libelf.a -lz
+if DUMMY_LIBDEBUGINFOD
+libdebuginfod = ./libdebuginfod.a
+else
libdebuginfod = ./libdebuginfod.a $(libcurl_LIBS)
+endif
else
libasm = ../libasm/libasm.so
libdw = ../libdw/libdw.so
@@ -57,47 +60,72 @@ libeu = ../lib/libeu.a
AM_LDFLAGS = -Wl,-rpath-link,../libelf:../libdw:.
-bin_PROGRAMS = debuginfod debuginfod-find
+bin_PROGRAMS =
+if DEBUGINFOD
+bin_PROGRAMS += debuginfod
+endif
+
+if LIBDEBUGINFOD
+bin_PROGRAMS += debuginfod-find
+endif
+
debuginfod_SOURCES = debuginfod.cxx
-debuginfod_LDADD = $(libdw) $(libelf) $(libeu) $(libdebuginfod) $(libmicrohttpd_LIBS) $(libcurl_LIBS) $(sqlite3_LIBS) $(libarchive_LIBS) -lpthread -ldl
+debuginfod_LDADD = $(libdw) $(libelf) $(libeu) $(libdebuginfod) $(argp_LDADD) $(fts_LIBS) $(libmicrohttpd_LIBS) $(sqlite3_LIBS) $(libarchive_LIBS) -lpthread -ldl
debuginfod_find_SOURCES = debuginfod-find.c
-debuginfod_find_LDADD = $(libeu) $(libdebuginfod)
+debuginfod_find_LDADD = $(libdw) $(libelf) $(libeu) $(libdebuginfod) $(argp_LDADD) $(fts_LIBS)
+if LIBDEBUGINFOD
noinst_LIBRARIES = libdebuginfod.a
noinst_LIBRARIES += libdebuginfod_pic.a
+endif
libdebuginfod_a_SOURCES = debuginfod-client.c
libdebuginfod_pic_a_SOURCES = debuginfod-client.c
am_libdebuginfod_pic_a_OBJECTS = $(libdebuginfod_a_SOURCES:.c=.os)
+if DUMMY_LIBDEBUGINFOD
+AM_CPPFLAGS += -Wno-unused-parameter
+endif
+
+if LIBDEBUGINFOD
pkginclude_HEADERS = debuginfod.h
+endif
+if LIBDEBUGINFOD
libdebuginfod_so_LIBS = libdebuginfod_pic.a
-libdebuginfod_so_LDLIBS = $(libcurl_LIBS)
-libdebuginfod.so$(EXEEXT): $(srcdir)/libdebuginfod.map $(libdebuginfod_so_LIBS)
+if DUMMY_LIBDEBUGINFOD
+libdebuginfod_so_LDLIBS =
+else
+libdebuginfod_so_LDLIBS = $(libcurl_LIBS) $(fts_LIBS)
+endif
+$(LIBDEBUGINFOD_SONAME): $(srcdir)/libdebuginfod.map $(libdebuginfod_so_LIBS)
$(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \
- -Wl,--soname,$@.$(VERSION) \
+ -Wl,--soname,$(LIBDEBUGINFOD_SONAME) \
-Wl,--version-script,$<,--no-undefined \
-Wl,--whole-archive $(libdebuginfod_so_LIBS) -Wl,--no-whole-archive \
$(libdebuginfod_so_LDLIBS)
@$(textrel_check)
- $(AM_V_at)ln -fs $@ $@.$(VERSION)
+
+libdebuginfod.so: $(LIBDEBUGINFOD_SONAME)
+ ln -fs $< $@
install: install-am libdebuginfod.so
$(mkinstalldirs) $(DESTDIR)$(libdir)
- $(INSTALL_PROGRAM) libdebuginfod.so $(DESTDIR)$(libdir)/libdebuginfod-$(PACKAGE_VERSION).so
- ln -fs libdebuginfod-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libdebuginfod.so.$(VERSION)
- ln -fs libdebuginfod.so.$(VERSION) $(DESTDIR)$(libdir)/libdebuginfod.so
+ $(INSTALL_PROGRAM) $(LIBDEBUGINFOD_SONAME) \
+ $(DESTDIR)$(libdir)/libdebuginfod-$(PACKAGE_VERSION).so
+ ln -fs libdebuginfod-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/$(LIBDEBUGINFOD_SONAME)
+ ln -fs libdebuginfod-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libdebuginfod.so
uninstall: uninstall-am
rm -f $(DESTDIR)$(libdir)/libdebuginfod-$(PACKAGE_VERSION).so
- rm -f $(DESTDIR)$(libdir)/libdebuginfod.so.$(VERSION)
+ rm -f $(DESTDIR)$(libdir)/$(LIBDEBUGINFOD_SONAME)
rm -f $(DESTDIR)$(libdir)/libdebuginfod.so
rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils
+endif
EXTRA_DIST = libdebuginfod.map
-MOSTLYCLEANFILES = $(am_libdebuginfod_pic_a_OBJECTS) libdebuginfod.so.$(VERSION)
+MOSTLYCLEANFILES = $(am_libdebuginfod_pic_a_OBJECTS) $(LIBDEBUGINFOD_SONAME)
CLEANFILES += $(am_libdebuginfod_pic_a_OBJECTS) libdebuginfod.so
# automake std-options override: arrange to pass LD_LIBRARY_PATH
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index 6e62b86c..de26af5b 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -1,5 +1,5 @@
/* Retrieve ELF / DWARF / source files from the debuginfod.
- Copyright (C) 2019 Red Hat, Inc.
+ Copyright (C) 2019-2020 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -40,15 +40,40 @@
#include "config.h"
#include "debuginfod.h"
+#include "system.h"
+#include <errno.h>
+#include <stdlib.h>
+
+/* We might be building a bootstrap dummy library, which is really simple. */
+#ifdef DUMMY_LIBDEBUGINFOD
+
+debuginfod_client *debuginfod_begin (void) { errno = ENOSYS; return NULL; }
+int debuginfod_find_debuginfo (debuginfod_client *c, const unsigned char *b,
+ int s, char **p) { return -ENOSYS; }
+int debuginfod_find_executable (debuginfod_client *c, const unsigned char *b,
+ int s, char **p) { return -ENOSYS; }
+int debuginfod_find_source (debuginfod_client *c, const unsigned char *b,
+ int s, const char *f, char **p) { return -ENOSYS; }
+void debuginfod_set_progressfn(debuginfod_client *c,
+ debuginfod_progressfn_t fn) { }
+void debuginfod_set_verbose_fd(debuginfod_client *c, int fd) { }
+void debuginfod_set_user_data (debuginfod_client *c, void *d) { }
+void* debuginfod_get_user_data (debuginfod_client *c) { return NULL; }
+const char* debuginfod_get_url (debuginfod_client *c) { return NULL; }
+int debuginfod_add_http_header (debuginfod_client *c,
+ const char *h) { return -ENOSYS; }
+void debuginfod_end (debuginfod_client *c) { }
+
+#else /* DUMMY_LIBDEBUGINFOD */
+
#include <assert.h>
#include <dirent.h>
#include <stdio.h>
-#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
-#include <errno.h>
#include <fcntl.h>
#include <fts.h>
+#include <regex.h>
#include <string.h>
#include <stdbool.h>
#include <linux/limits.h>
@@ -57,6 +82,7 @@
#include <sys/syscall.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/utsname.h>
#include <curl/curl.h>
/* If fts.h is included before config.h, its indirect inclusions may not
@@ -76,6 +102,23 @@ struct debuginfod_client
/* Progress/interrupt callback function. */
debuginfod_progressfn_t progressfn;
+ /* Stores user data. */
+ void* user_data;
+
+ /* Stores current/last url, if any. */
+ char* url;
+
+ /* Accumulates outgoing http header names/values. */
+ int user_agent_set_p; /* affects add_default_headers */
+ struct curl_slist *headers;
+
+ /* Flags the default_progressfn having printed something that
+ debuginfod_end needs to terminate. */
+ int default_progressfn_printed_p;
+
+ /* File descriptor to output any verbose messages if > 0. */
+ int verbose_fd;
+
/* Can contain all other context, like cache_path, server_urls,
timeout or other info gotten from environment variables, the
handle data, etc. So those don't have to be reparsed and
@@ -96,18 +139,18 @@ static const time_t cache_default_max_unused_age_s = 604800; /* 1 week */
/* Location of the cache of files downloaded from debuginfods.
The default parent directory is $HOME, or '/' if $HOME doesn't exist. */
static const char *cache_default_name = ".debuginfod_client_cache";
+static const char *cache_xdg_name = "debuginfod_client";
static const char *cache_path_envvar = DEBUGINFOD_CACHE_PATH_ENV_VAR;
-/* URLs of debuginfods, separated by url_delim.
- This env var must be set for debuginfod-client to run. */
+/* URLs of debuginfods, separated by url_delim. */
static const char *server_urls_envvar = DEBUGINFOD_URLS_ENV_VAR;
static const char *url_delim = " ";
static const char url_delim_char = ' ';
-/* Timeout for debuginfods, in seconds.
- This env var must be set for debuginfod-client to run. */
+/* Timeout for debuginfods, in seconds (to get at least 100K). */
static const char *server_timeout_envvar = DEBUGINFOD_TIMEOUT_ENV_VAR;
-static int server_timeout = 5;
+static const long default_timeout = 90;
+
/* Data associated with a particular CURL easy handle. Passed to
the write callback. */
@@ -119,9 +162,15 @@ struct handle_data
/* URL queried by this handle. */
char url[PATH_MAX];
+ /* error buffer for this handle. */
+ char errbuf[CURL_ERROR_SIZE];
+
/* This handle. */
CURL *handle;
+ /* The client object whom we're serving. */
+ debuginfod_client *client;
+
/* Pointer to handle that should write to fd. Initially points to NULL,
then points to the first handle that begins writing the target file
to the cache. Used to ensure that a file is not downloaded from
@@ -138,7 +187,17 @@ debuginfod_write_callback (char *ptr, size_t size, size_t nmemb, void *data)
/* Indicate to other handles that they can abort their transfer. */
if (*d->target_handle == NULL)
- *d->target_handle = d->handle;
+ {
+ *d->target_handle = d->handle;
+ /* update the client object */
+ const char *url = NULL;
+ (void) curl_easy_getinfo (d->handle, CURLINFO_EFFECTIVE_URL, &url);
+ if (url)
+ {
+ free (d->client->url);
+ d->client->url = strdup(url); /* ok if fails */
+ }
+ }
/* If this handle isn't the target handle, abort transfer. */
if (*d->target_handle != d->handle)
@@ -160,13 +219,13 @@ debuginfod_init_cache (char *cache_path, char *interval_path, char *maxage_path)
return 0;
/* Create the cache and config files as necessary. */
- if (stat(cache_path, &st) != 0 && mkdir(cache_path, 0777) < 0)
+ if (stat(cache_path, &st) != 0 && mkdir(cache_path, ACCESSPERMS) < 0)
return -errno;
int fd = -1;
/* init cleaning interval config file. */
- fd = open(interval_path, O_CREAT | O_RDWR, 0666);
+ fd = open(interval_path, O_CREAT | O_RDWR, DEFFILEMODE);
if (fd < 0)
return -errno;
@@ -175,7 +234,7 @@ debuginfod_init_cache (char *cache_path, char *interval_path, char *maxage_path)
/* init max age config file. */
if (stat(maxage_path, &st) != 0
- && (fd = open(maxage_path, O_CREAT | O_RDWR, 0666)) < 0)
+ && (fd = open(maxage_path, O_CREAT | O_RDWR, DEFFILEMODE)) < 0)
return -errno;
if (dprintf(fd, "%ld", cache_default_max_unused_age_s) < 0)
@@ -214,9 +273,14 @@ debuginfod_clean_cache(debuginfod_client *c,
/* Check timestamp of interval file to see whether cleaning is necessary. */
time_t clean_interval;
interval_file = fopen(interval_path, "r");
- if (fscanf(interval_file, "%ld", &clean_interval) != 1)
+ if (interval_file)
+ {
+ if (fscanf(interval_file, "%ld", &clean_interval) != 1)
+ clean_interval = cache_clean_default_interval_s;
+ fclose(interval_file);
+ }
+ else
clean_interval = cache_clean_default_interval_s;
- fclose(interval_file);
if (time(NULL) - st.st_mtime < clean_interval)
/* Interval has not passed, skip cleaning. */
@@ -240,10 +304,19 @@ debuginfod_clean_cache(debuginfod_client *c,
if (fts == NULL)
return -errno;
+ regex_t re;
+ const char * pattern = ".*/[a-f0-9]+/(debuginfo|executable|source.*)$";
+ if (regcomp (&re, pattern, REG_EXTENDED | REG_NOSUB) != 0)
+ return -ENOMEM;
+
FTSENT *f;
long files = 0;
while ((f = fts_read(fts)) != NULL)
{
+ /* ignore any files that do not match the pattern. */
+ if (regexec (&re, f->fts_path, 0, NULL, 0) != 0)
+ continue;
+
files++;
if (c->progressfn) /* inform/check progress callback */
if ((c->progressfn) (c, files, 0))
@@ -267,7 +340,8 @@ debuginfod_clean_cache(debuginfod_client *c,
;
}
}
- fts_close(fts);
+ fts_close (fts);
+ regfree (&re);
/* Update timestamp representing when the cache was last cleaned. */
utime (interval_path, NULL);
@@ -278,6 +352,136 @@ debuginfod_clean_cache(debuginfod_client *c,
#define MAX_BUILD_ID_BYTES 64
+static void
+add_default_headers(debuginfod_client *client)
+{
+ if (client->user_agent_set_p)
+ return;
+
+ /* Compute a User-Agent: string to send. The more accurately this
+ describes this host, the likelier that the debuginfod servers
+ might be able to locate debuginfo for us. */
+
+ char* utspart = NULL;
+ struct utsname uts;
+ int rc = 0;
+ rc = uname (&uts);
+ if (rc == 0)
+ rc = asprintf(& utspart, "%s/%s", uts.sysname, uts.machine);
+ if (rc < 0)
+ utspart = NULL;
+
+ FILE *f = fopen ("/etc/os-release", "r");
+ if (f == NULL)
+ f = fopen ("/usr/lib/os-release", "r");
+ char *id = NULL;
+ char *version = NULL;
+ if (f != NULL)
+ {
+ while (id == NULL || version == NULL)
+ {
+ char buf[128];
+ char *s = &buf[0];
+ if (fgets (s, sizeof(buf), f) == NULL)
+ break;
+
+ int len = strlen (s);
+ if (len < 3)
+ continue;
+ if (s[len - 1] == '\n')
+ {
+ s[len - 1] = '\0';
+ len--;
+ }
+
+ char *v = strchr (s, '=');
+ if (v == NULL || strlen (v) < 2)
+ continue;
+
+ /* Split var and value. */
+ *v = '\0';
+ v++;
+
+ /* Remove optional quotes around value string. */
+ if (*v == '"' || *v == '\'')
+ {
+ v++;
+ s[len - 1] = '\0';
+ }
+ if (strcmp (s, "ID") == 0)
+ id = strdup (v);
+ if (strcmp (s, "VERSION_ID") == 0)
+ version = strdup (v);
+ }
+ fclose (f);
+ }
+
+ char *ua = NULL;
+ rc = asprintf(& ua, "User-Agent: %s/%s,%s,%s/%s",
+ PACKAGE_NAME, PACKAGE_VERSION,
+ utspart ?: "",
+ id ?: "",
+ version ?: "");
+ if (rc < 0)
+ ua = NULL;
+
+ if (ua)
+ (void) debuginfod_add_http_header (client, ua);
+
+ free (ua);
+ free (id);
+ free (version);
+ free (utspart);
+}
+
+
+#define xalloc_str(p, fmt, args...) \
+ do \
+ { \
+ if (asprintf (&p, fmt, args) < 0) \
+ { \
+ p = NULL; \
+ rc = -ENOMEM; \
+ goto out; \
+ } \
+ } while (0)
+
+
+/* Offer a basic form of progress tracing */
+static int
+default_progressfn (debuginfod_client *c, long a, long b)
+{
+ const char* url = debuginfod_get_url (c);
+ int len = 0;
+
+ /* We prefer to print the host part of the URL to keep the
+ message short. */
+ if (url != NULL)
+ {
+ const char* buildid = strstr(url, "buildid/");
+ if (buildid != NULL)
+ len = (buildid - url);
+ else
+ len = strlen(url);
+ }
+
+ if (b == 0 || url==NULL) /* early stage */
+ dprintf(STDERR_FILENO,
+ "\rDownloading %c", "-/|\\"[a % 4]);
+ else if (b < 0) /* download in progress but unknown total length */
+ dprintf(STDERR_FILENO,
+ "\rDownloading from %.*s %ld",
+ len, url, a);
+ else /* download in progress, and known total length */
+ dprintf(STDERR_FILENO,
+ "\rDownloading from %.*s %ld/%ld",
+ len, url, a, b);
+ c->default_progressfn_printed_p = 1;
+
+ return 0;
+}
+
+
/* Query each of the server URLs found in $DEBUGINFOD_URLS for the file
with the specified build-id, type (debuginfo, executable or source)
and filename. filename may be NULL. If found, return a file
@@ -291,22 +495,61 @@ debuginfod_query_server (debuginfod_client *c,
const char *filename,
char **path)
{
- char *urls_envvar;
char *server_urls;
- char cache_path[PATH_MAX];
- char maxage_path[PATH_MAX*3]; /* These *3 multipliers are to shut up gcc -Wformat-truncation */
- char interval_path[PATH_MAX*4];
- char target_cache_dir[PATH_MAX*2];
- char target_cache_path[PATH_MAX*4];
- char target_cache_tmppath[PATH_MAX*5];
- char suffix[PATH_MAX*2];
+ char *urls_envvar;
+ char *cache_path = NULL;
+ char *maxage_path = NULL;
+ char *interval_path = NULL;
+ char *target_cache_dir = NULL;
+ char *target_cache_path = NULL;
+ char *target_cache_tmppath = NULL;
+ char suffix[PATH_MAX + 1]; /* +1 for zero terminator. */
char build_id_bytes[MAX_BUILD_ID_BYTES * 2 + 1];
+ int vfd = c->verbose_fd;
+ int rc;
+
+ if (vfd >= 0)
+ {
+ dprintf (vfd, "debuginfod_find_%s ", type);
+ if (build_id_len == 0) /* expect clean hexadecimal */
+ dprintf (vfd, "%s", (const char *) build_id);
+ else
+ for (int i = 0; i < build_id_len; i++)
+ dprintf (vfd, "%02x", build_id[i]);
+ if (filename != NULL)
+ dprintf (vfd, " %s\n", filename);
+ dprintf (vfd, "\n");
+ }
+
+ /* Is there any server we can query? If not, don't do any work,
+ just return with ENOSYS. Don't even access the cache. */
+ urls_envvar = getenv(server_urls_envvar);
+ if (vfd >= 0)
+ dprintf (vfd, "server urls \"%s\"\n",
+ urls_envvar != NULL ? urls_envvar : "");
+ if (urls_envvar == NULL || urls_envvar[0] == '\0')
+ {
+ rc = -ENOSYS;
+ goto out;
+ }
+
+ /* Clear the obsolete URL from a previous _find operation. */
+ free (c->url);
+ c->url = NULL;
+
+ add_default_headers(c);
/* Copy lowercase hex representation of build_id into buf. */
+ if (vfd >= 0)
+ dprintf (vfd, "checking build-id\n");
if ((build_id_len >= MAX_BUILD_ID_BYTES) ||
(build_id_len == 0 &&
- sizeof(build_id_bytes) > MAX_BUILD_ID_BYTES*2 + 1))
- return -EINVAL;
+ strlen ((const char *) build_id) > MAX_BUILD_ID_BYTES*2))
+ {
+ rc = -EINVAL;
+ goto out;
+ }
+
if (build_id_len == 0) /* expect clean hexadecimal */
strcpy (build_id_bytes, (const char *) build_id);
else
@@ -315,12 +558,17 @@ debuginfod_query_server (debuginfod_client *c,
if (filename != NULL)
{
+ if (vfd >= 0)
+ dprintf (vfd, "checking filename\n");
if (filename[0] != '/') // must start with /
- return -EINVAL;
+ {
+ rc = -EINVAL;
+ goto out;
+ }
/* copy the filename to suffix, s,/,#,g */
unsigned q = 0;
- for (unsigned fi=0; q < PATH_MAX-1; fi++)
+ for (unsigned fi=0; q < PATH_MAX-2; fi++) /* -2, escape is 2 chars. */
switch (filename[fi])
{
case '\0':
@@ -346,34 +594,85 @@ debuginfod_query_server (debuginfod_client *c,
else
suffix[0] = '\0';
+ if (suffix[0] != '\0' && vfd >= 0)
+ dprintf (vfd, "suffix %s\n", suffix);
+
/* set paths needed to perform the query
example format
- cache_path: $HOME/.debuginfod_cache
- target_cache_dir: $HOME/.debuginfod_cache/0123abcd
- target_cache_path: $HOME/.debuginfod_cache/0123abcd/debuginfo
- target_cache_path: $HOME/.debuginfod_cache/0123abcd/source#PATH#TO#SOURCE ?
+ cache_path: $HOME/.cache
+ target_cache_dir: $HOME/.cache/0123abcd
+ target_cache_path: $HOME/.cache/0123abcd/debuginfo
+ target_cache_path: $HOME/.cache/0123abcd/source#PATH#TO#SOURCE ?
+
+ $XDG_CACHE_HOME takes priority over $HOME/.cache.
+ $DEBUGINFOD_CACHE_PATH takes priority over $HOME/.cache and $XDG_CACHE_HOME.
*/
- if (getenv(cache_path_envvar))
- strcpy(cache_path, getenv(cache_path_envvar));
+ /* Determine location of the cache. The path specified by the debuginfod
+ cache environment variable takes priority. */
+ char *cache_var = getenv(cache_path_envvar);
+ if (cache_var != NULL && strlen (cache_var) > 0)
+ xalloc_str (cache_path, "%s", cache_var);
else
{
- if (getenv("HOME"))
- sprintf(cache_path, "%s/%s", getenv("HOME"), cache_default_name);
- else
- sprintf(cache_path, "/%s", cache_default_name);
+ /* If a cache already exists in $HOME ('/' if $HOME isn't set), then use
+ that. Otherwise use the XDG cache directory naming format. */
+ xalloc_str (cache_path, "%s/%s", getenv ("HOME") ?: "/", cache_default_name);
+
+ struct stat st;
+ if (stat (cache_path, &st) < 0)
+ {
+ char cachedir[PATH_MAX];
+ char *xdg = getenv ("XDG_CACHE_HOME");
+
+ if (xdg != NULL && strlen (xdg) > 0)
+ snprintf (cachedir, PATH_MAX, "%s", xdg);
+ else
+ snprintf (cachedir, PATH_MAX, "%s/.cache", getenv ("HOME") ?: "/");
+
+ /* Create XDG cache directory if it doesn't exist. */
+ if (stat (cachedir, &st) == 0)
+ {
+ if (! S_ISDIR (st.st_mode))
+ {
+ rc = -EEXIST;
+ goto out;
+ }
+ }
+ else
+ {
+ rc = mkdir (cachedir, 0700);
+
+ /* Also check for EEXIST and S_ISDIR in case another client just
+ happened to create the cache. */
+ if (rc < 0
+ && (errno != EEXIST
+ || stat (cachedir, &st) != 0
+ || ! S_ISDIR (st.st_mode)))
+ {
+ rc = -errno;
+ goto out;
+ }
+ }
+
+ free (cache_path);
+ xalloc_str (cache_path, "%s/%s", cachedir, cache_xdg_name);
+ }
}
- /* avoid using snprintf here due to compiler warning. */
- snprintf(target_cache_dir, sizeof(target_cache_dir), "%s/%s", cache_path, build_id_bytes);
- snprintf(target_cache_path, sizeof(target_cache_path), "%s/%s%s", target_cache_dir, type, suffix);
- snprintf(target_cache_tmppath, sizeof(target_cache_tmppath), "%s.XXXXXX", target_cache_path);
+ xalloc_str (target_cache_dir, "%s/%s", cache_path, build_id_bytes);
+ xalloc_str (target_cache_path, "%s/%s%s", target_cache_dir, type, suffix);
+ xalloc_str (target_cache_tmppath, "%s.XXXXXX", target_cache_path);
/* XXX combine these */
- snprintf(interval_path, sizeof(interval_path), "%s/%s", cache_path, cache_clean_interval_filename);
- snprintf(maxage_path, sizeof(maxage_path), "%s/%s", cache_path, cache_max_unused_age_filename);
- int rc = debuginfod_init_cache(cache_path, interval_path, maxage_path);
+ xalloc_str (interval_path, "%s/%s", cache_path, cache_clean_interval_filename);
+ xalloc_str (maxage_path, "%s/%s", cache_path, cache_max_unused_age_filename);
+
+ if (vfd >= 0)
+ dprintf (vfd, "checking cache dir %s\n", cache_path);
+
+ rc = debuginfod_init_cache(cache_path, interval_path, maxage_path);
if (rc != 0)
goto out;
rc = debuginfod_clean_cache(c, cache_path, interval_path, maxage_path);
@@ -387,19 +686,17 @@ debuginfod_query_server (debuginfod_client *c,
/* Success!!!! */
if (path != NULL)
*path = strdup(target_cache_path);
- return fd;
- }
-
-
- urls_envvar = getenv(server_urls_envvar);
- if (urls_envvar == NULL || urls_envvar[0] == '\0')
- {
- rc = -ENOSYS;
+ rc = fd;
goto out;
}
- if (getenv(server_timeout_envvar))
- server_timeout = atoi (getenv(server_timeout_envvar));
+ long timeout = default_timeout;
+ const char* timeout_envvar = getenv(server_timeout_envvar);
+ if (timeout_envvar != NULL)
+ timeout = atoi (timeout_envvar);
+
+ if (vfd >= 0)
+ dprintf (vfd, "using timeout %ld\n", timeout);
/* make a copy of the envvar so it can be safely modified. */
server_urls = strdup(urls_envvar);
@@ -435,35 +732,46 @@ debuginfod_query_server (debuginfod_client *c,
&& (i == 0 || server_urls[i - 1] == url_delim_char))
num_urls++;
+ CURLM *curlm = curl_multi_init();
+ if (curlm == NULL)
+ {
+ rc = -ENETUNREACH;
+ goto out0;
+ }
+
/* Tracks which handle should write to fd. Set to the first
handle that is ready to write the target file to the cache. */
CURL *target_handle = NULL;
struct handle_data *data = malloc(sizeof(struct handle_data) * num_urls);
+ if (data == NULL)
+ {
+ rc = -ENOMEM;
+ goto out0;
+ }
- /* Initalize handle_data with default values. */
+ /* thereafter, goto out1 on error. */
+
+ /* Initialize handle_data with default values. */
for (int i = 0; i < num_urls; i++)
{
data[i].handle = NULL;
data[i].fd = -1;
+ data[i].errbuf[0] = '\0';
}
- CURLM *curlm = curl_multi_init();
- if (curlm == NULL)
- {
- rc = -ENETUNREACH;
- goto out0;
- }
- /* thereafter, goto out1 on error. */
-
char *strtok_saveptr;
char *server_url = strtok_r(server_urls, url_delim, &strtok_saveptr);
/* Initialize each handle. */
for (int i = 0; i < num_urls && server_url != NULL; i++)
{
+ if (vfd >= 0)
+ dprintf (vfd, "init server %d %s\n", i, server_url);
+
data[i].fd = fd;
data[i].target_handle = &target_handle;
data[i].handle = curl_easy_init();
+ data[i].client = c;
if (data[i].handle == NULL)
{
@@ -486,38 +794,95 @@ debuginfod_query_server (debuginfod_client *c,
snprintf(data[i].url, PATH_MAX, "%s%s/%s/%s", server_url,
slashbuildid, build_id_bytes, type);
+ if (vfd >= 0)
+ dprintf (vfd, "url %d %s\n", i, data[i].url);
+
curl_easy_setopt(data[i].handle, CURLOPT_URL, data[i].url);
+ if (vfd >= 0)
+ curl_easy_setopt(data[i].handle, CURLOPT_ERRORBUFFER, data[i].errbuf);
curl_easy_setopt(data[i].handle,
CURLOPT_WRITEFUNCTION,
debuginfod_write_callback);
curl_easy_setopt(data[i].handle, CURLOPT_WRITEDATA, (void*)&data[i]);
- curl_easy_setopt(data[i].handle, CURLOPT_TIMEOUT, (long) server_timeout);
+ if (timeout > 0)
+ {
+ /* Make sure there is at least some progress,
+ try to get at least 100K per timeout seconds. */
+ curl_easy_setopt (data[i].handle, CURLOPT_LOW_SPEED_TIME,
+ timeout);
+ curl_easy_setopt (data[i].handle, CURLOPT_LOW_SPEED_LIMIT,
+ 100 * 1024L);
+ }
curl_easy_setopt(data[i].handle, CURLOPT_FILETIME, (long) 1);
curl_easy_setopt(data[i].handle, CURLOPT_FOLLOWLOCATION, (long) 1);
curl_easy_setopt(data[i].handle, CURLOPT_FAILONERROR, (long) 1);
curl_easy_setopt(data[i].handle, CURLOPT_NOSIGNAL, (long) 1);
+#if LIBCURL_VERSION_NUM >= 0x072a00 /* 7.42.0 */
+ curl_easy_setopt(data[i].handle, CURLOPT_PATH_AS_IS, (long) 1);
+#else
+ /* On old curl; no big deal, canonicalization here is almost the
+ same, except perhaps for ? # type decorations at the tail. */
+#endif
curl_easy_setopt(data[i].handle, CURLOPT_AUTOREFERER, (long) 1);
curl_easy_setopt(data[i].handle, CURLOPT_ACCEPT_ENCODING, "");
- curl_easy_setopt(data[i].handle, CURLOPT_USERAGENT, (void*) PACKAGE_STRING);
+ curl_easy_setopt(data[i].handle, CURLOPT_HTTPHEADER, c->headers);
curl_multi_add_handle(curlm, data[i].handle);
server_url = strtok_r(NULL, url_delim, &strtok_saveptr);
}
/* Query servers in parallel. */
+ if (vfd >= 0)
+ dprintf (vfd, "query %d urls in parallel\n", num_urls);
int still_running;
long loops = 0;
+ int committed_to = -1;
+ bool verbose_reported = false;
do
{
- CURLMcode curl_res;
+ /* Wait 1 second, the minimum DEBUGINFOD_TIMEOUT. */
+ curl_multi_wait(curlm, NULL, 0, 1000, NULL);
+
+ /* If the target file has been found, abort the other queries. */
+ if (target_handle != NULL)
+ {
+ for (int i = 0; i < num_urls; i++)
+ if (data[i].handle != target_handle)
+ curl_multi_remove_handle(curlm, data[i].handle);
+ else
+ committed_to = i;
+ }
+
+ if (vfd >= 0 && !verbose_reported && committed_to >= 0)
+ {
+ bool pnl = (c->default_progressfn_printed_p && vfd == STDERR_FILENO);
+ dprintf (vfd, "%scommitted to url %d\n", pnl ? "\n" : "",
+ committed_to);
+ if (pnl)
+ c->default_progressfn_printed_p = 0;
+ verbose_reported = true;
+ }
+
+ CURLMcode curlm_res = curl_multi_perform(curlm, &still_running);
+ if (curlm_res != CURLM_OK)
+ {
+ switch (curlm_res)
+ {
+ case CURLM_CALL_MULTI_PERFORM: continue;
+ case CURLM_OUT_OF_MEMORY: rc = -ENOMEM; break;
+ default: rc = -ENETUNREACH; break;
+ }
+ goto out1;
+ }
if (c->progressfn) /* inform/check progress callback */
{
loops ++;
long pa = loops; /* default params for progress callback */
- long pb = 0;
+ long pb = 0; /* transfer_timeout tempting, but loops != elapsed-time */
if (target_handle) /* we've committed to a server; report its download progress */
{
+ CURLcode curl_res;
#ifdef CURLINFO_SIZE_DOWNLOAD_T
curl_off_t dl;
curl_res = curl_easy_getinfo(target_handle,
@@ -534,6 +899,8 @@ debuginfod_query_server (debuginfod_client *c,
pa = (dl > LONG_MAX ? LONG_MAX : (long)dl);
#endif
+ /* NB: If going through deflate-compressing proxies, this
+ number is likely to be unavailable, so -1 may show. */
#ifdef CURLINFO_CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
curl_off_t cl;
curl_res = curl_easy_getinfo(target_handle,
@@ -554,27 +921,6 @@ debuginfod_query_server (debuginfod_client *c,
if ((*c->progressfn) (c, pa, pb))
break;
}
-
- /* Wait 1 second, the minimum DEBUGINFOD_TIMEOUT. */
- curl_multi_wait(curlm, NULL, 0, 1000, NULL);
-
- /* If the target file has been found, abort the other queries. */
- if (target_handle != NULL)
- for (int i = 0; i < num_urls; i++)
- if (data[i].handle != target_handle)
- curl_multi_remove_handle(curlm, data[i].handle);
-
- curl_res = curl_multi_perform(curlm, &still_running);
- if (curl_res != CURLM_OK)
- {
- switch (curl_res)
- {
- case CURLM_CALL_MULTI_PERFORM: continue;
- case CURLM_OUT_OF_MEMORY: rc = -ENOMEM; break;
- default: rc = -ENETUNREACH; break;
- }
- goto out1;
- }
} while (still_running);
/* Check whether a query was successful. If so, assign its handle
@@ -589,14 +935,32 @@ debuginfod_query_server (debuginfod_client *c,
msg = curl_multi_info_read(curlm, &num_msg);
if (msg != NULL && msg->msg == CURLMSG_DONE)
{
+ if (vfd >= 0)
+ {
+ bool pnl = (c->default_progressfn_printed_p
+ && vfd == STDERR_FILENO);
+ dprintf (vfd, "%sserver response %s\n", pnl ? "\n" : "",
+ curl_easy_strerror (msg->data.result));
+ if (pnl)
+ c->default_progressfn_printed_p = 0;
+ for (int i = 0; i < num_urls; i++)
+ if (msg->easy_handle == data[i].handle)
+ {
+ if (strlen (data[i].errbuf) > 0)
+ dprintf (vfd, "url %d %s\n", i, data[i].errbuf);
+ break;
+ }
+ }
+
if (msg->data.result != CURLE_OK)
{
- /* Unsucessful query, determine error code. */
+ /* Unsuccessful query, determine error code. */
switch (msg->data.result)
{
case CURLE_COULDNT_RESOLVE_HOST: rc = -EHOSTUNREACH; break; // no NXDOMAIN
case CURLE_URL_MALFORMAT: rc = -EINVAL; break;
case CURLE_COULDNT_CONNECT: rc = -ECONNREFUSED; break;
+ case CURLE_PEER_FAILED_VERIFICATION: rc = -ECONNREFUSED; break;
case CURLE_REMOTE_ACCESS_DENIED: rc = -EACCES; break;
case CURLE_WRITE_ERROR: rc = -EIO; break;
case CURLE_OUT_OF_MEMORY: rc = -ENOMEM; break;
@@ -610,20 +974,59 @@ debuginfod_query_server (debuginfod_client *c,
else
{
/* Query completed without an error. Confirm that the
- response code is 200 and set verified_handle. */
- long resp_code = 500;
- CURLcode curl_res;
+ response code is 200 when using HTTP/HTTPS and 0 when
+ using file:// and set verified_handle. */
- curl_res = curl_easy_getinfo(target_handle,
- CURLINFO_RESPONSE_CODE,
- &resp_code);
-
- if (curl_res == CURLE_OK
- && resp_code == 200
- && msg->easy_handle != NULL)
+ if (msg->easy_handle != NULL)
{
- verified_handle = msg->easy_handle;
- break;
+ char *effective_url = NULL;
+ long resp_code = 500;
+ CURLcode ok1 = curl_easy_getinfo (target_handle,
+ CURLINFO_EFFECTIVE_URL,
+ &effective_url);
+ CURLcode ok2 = curl_easy_getinfo (target_handle,
+ CURLINFO_RESPONSE_CODE,
+ &resp_code);
+ if(ok1 == CURLE_OK && ok2 == CURLE_OK && effective_url)
+ {
+ if (strncasecmp (effective_url, "HTTP", 4) == 0)
+ if (resp_code == 200)
+ {
+ verified_handle = msg->easy_handle;
+ break;
+ }
+ if (strncasecmp (effective_url, "FILE", 4) == 0)
+ if (resp_code == 0)
+ {
+ verified_handle = msg->easy_handle;
+ break;
+ }
+ }
+ /* - libcurl since 7.52.0 version start to support
+ CURLINFO_SCHEME;
+ - before 7.61.0, effective_url would give us a
+ url with upper case SCHEME added in the front;
+ - effective_url between 7.61 and 7.69 can be lack
+ of scheme if the original url doesn't include one;
+ - since version 7.69 effective_url will be provide
+ a scheme in lower case. */
+ #if LIBCURL_VERSION_NUM >= 0x073d00 /* 7.61.0 */
+ #if LIBCURL_VERSION_NUM <= 0x074500 /* 7.69.0 */
+ char *scheme = NULL;
+ CURLcode ok3 = curl_easy_getinfo (target_handle,
+ CURLINFO_SCHEME,
+ &scheme);
+ if(ok3 == CURLE_OK && scheme)
+ {
+ if (strncmp (scheme, "HTTP", 4) == 0)
+ if (resp_code == 200)
+ {
+ verified_handle = msg->easy_handle;
+ break;
+ }
+ }
+ #endif
+ #endif
}
}
}
@@ -632,6 +1035,14 @@ debuginfod_query_server (debuginfod_client *c,
if (verified_handle == NULL)
goto out1;
+ if (vfd >= 0)
+ {
+ bool pnl = c->default_progressfn_printed_p && vfd == STDERR_FILENO;
+ dprintf (vfd, "%sgot file from server\n", pnl ? "\n" : "");
+ if (pnl)
+ c->default_progressfn_printed_p = 0;
+ }
+
/* we've got one!!!! */
time_t mtime;
CURLcode curl_res = curl_easy_getinfo(verified_handle, CURLINFO_FILETIME, (void*) &mtime);
@@ -659,12 +1070,14 @@ debuginfod_query_server (debuginfod_client *c,
curl_multi_cleanup (curlm);
free (data);
free (server_urls);
+
/* don't close fd - we're returning it */
/* don't unlink the tmppath; it's already been renamed. */
if (path != NULL)
*path = strdup(target_cache_path);
- return fd;
+ rc = fd;
+ goto out;
/* error exits */
out1:
@@ -673,32 +1086,87 @@ debuginfod_query_server (debuginfod_client *c,
curl_multi_cleanup(curlm);
unlink (target_cache_tmppath);
+ close (fd); /* before the rmdir, otherwise it'll fail */
(void) rmdir (target_cache_dir); /* nop if not empty */
free(data);
- close (fd);
out0:
free (server_urls);
+/* general purpose exit */
out:
+ /* Conclude the last \r status line */
+ /* Another possibility is to use the ANSI CSI n K EL "Erase in Line"
+ code. That way, the previously printed messages would be erased,
+ and without a newline. */
+ if (c->default_progressfn_printed_p)
+ dprintf(STDERR_FILENO, "\n");
+
+ if (vfd >= 0)
+ {
+ if (rc < 0)
+ dprintf (vfd, "not found %s (err=%d)\n", strerror (-rc), rc);
+ else
+ dprintf (vfd, "found %s (fd=%d)\n", target_cache_path, rc);
+ }
+
+ free (cache_path);
+ free (maxage_path);
+ free (interval_path);
+ free (target_cache_dir);
+ free (target_cache_path);
+ free (target_cache_tmppath);
return rc;
}
+
+
/* See debuginfod.h */
debuginfod_client *
debuginfod_begin (void)
{
debuginfod_client *client;
size_t size = sizeof (struct debuginfod_client);
- client = (debuginfod_client *) malloc (size);
+ client = (debuginfod_client *) calloc (1, size);
if (client != NULL)
- client->progressfn = NULL;
+ {
+ if (getenv(DEBUGINFOD_PROGRESS_ENV_VAR))
+ client->progressfn = default_progressfn;
+ if (getenv(DEBUGINFOD_VERBOSE_ENV_VAR))
+ client->verbose_fd = STDERR_FILENO;
+ else
+ client->verbose_fd = -1;
+ }
return client;
}
void
+debuginfod_set_user_data(debuginfod_client *client,
+ void *data)
+{
+ client->user_data = data;
+}
+
+void *
+debuginfod_get_user_data(debuginfod_client *client)
+{
+ return client->user_data;
+}
+
+const char *
+debuginfod_get_url(debuginfod_client *client)
+{
+ return client->url;
+}
+
+void
debuginfod_end (debuginfod_client *client)
{
+ if (client == NULL)
+ return;
+
+ curl_slist_free_all (client->headers);
+ free (client->url);
free (client);
}
@@ -732,6 +1200,33 @@ int debuginfod_find_source(debuginfod_client *client,
}
+/* Add an outgoing HTTP header. */
+int debuginfod_add_http_header (debuginfod_client *client, const char* header)
+{
+ /* Sanity check header value is of the form Header: Value.
+ It should contain exactly one colon that isn't the first or
+ last character. */
+ char *colon = strchr (header, ':');
+ if (colon == NULL
+ || colon == header
+ || *(colon + 1) == '\0'
+ || strchr (colon + 1, ':') != NULL)
+ return -EINVAL;
+
+ struct curl_slist *temp = curl_slist_append (client->headers, header);
+ if (temp == NULL)
+ return -ENOMEM;
+
+ /* Track if User-Agent: is being set. If so, signal not to add the
+ default one. */
+ if (strncmp (header, "User-Agent:", 11) == 0)
+ client->user_agent_set_p = 1;
+
+ client->headers = temp;
+ return 0;
+}
+
+
void
debuginfod_set_progressfn(debuginfod_client *client,
debuginfod_progressfn_t fn)
@@ -739,6 +1234,12 @@ debuginfod_set_progressfn(debuginfod_client *client,
client->progressfn = fn;
}
+void
+debuginfod_set_verbose_fd(debuginfod_client *client, int fd)
+{
+ client->verbose_fd = fd;
+}
+
/* NB: these are thread-unsafe. */
__attribute__((constructor)) attribute_hidden void libdebuginfod_ctor(void)
@@ -752,3 +1253,5 @@ __attribute__((destructor)) attribute_hidden void libdebuginfod_dtor(void)
/* ... so don't do this: */
/* curl_global_cleanup(); */
}
+
+#endif /* DUMMY_LIBDEBUGINFOD */
diff --git a/debuginfod/debuginfod-find.c b/debuginfod/debuginfod-find.c
index 8bd3a3db..3e8ab203 100644
--- a/debuginfod/debuginfod-find.c
+++ b/debuginfod/debuginfod-find.c
@@ -1,6 +1,6 @@
/* Command-line frontend for retrieving ELF / DWARF / source files
from the debuginfod.
- Copyright (C) 2019 Red Hat, Inc.
+ Copyright (C) 2019-2020 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -13,9 +13,9 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
#include "config.h"
#include "printversion.h"
@@ -24,7 +24,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <argp.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <libdwelf.h>
/* Name and version of program. */
@@ -39,8 +44,12 @@ static const char doc[] = N_("Request debuginfo-related content "
/* Strings for arguments in help texts. */
static const char args_doc[] = N_("debuginfo BUILDID\n"
+ "debuginfo PATH\n"
"executable BUILDID\n"
- "source BUILDID /FILENAME");
+ "executable PATH\n"
+ "source BUILDID /FILENAME\n"
+ "source PATH /FILENAME\n");
+
/* Definitions of arguments for argp functions. */
static const struct argp_option options[] =
@@ -51,11 +60,33 @@ static const struct argp_option options[] =
/* debuginfod connection handle. */
static debuginfod_client *client;
+static int verbose;
int progressfn(debuginfod_client *c __attribute__((__unused__)),
long a, long b)
{
- fprintf (stderr, "Progress %ld / %ld\n", a, b);
+ static bool first = true;
+ static struct timespec last;
+ struct timespec now;
+ uint64_t delta;
+ if (!first)
+ {
+ clock_gettime (CLOCK_MONOTONIC, &now);
+ delta = ((now.tv_sec - last.tv_sec) * 1000000
+ + (now.tv_nsec - last.tv_nsec) / 1000);
+ }
+ else
+ {
+ first = false;
+ delta = 250000;
+ }
+
+ /* Show progress the first time and then at most 5 times a second. */
+ if (delta > 200000)
+ {
+ fprintf (stderr, "Progress %ld / %ld\n", a, b);
+ clock_gettime (CLOCK_MONOTONIC, &last);
+ }
return 0;
}
@@ -66,7 +97,10 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state)
(void) state;
switch (key)
{
- case 'v': debuginfod_set_progressfn (client, & progressfn); break;
+ case 'v': verbose++;
+ debuginfod_set_progressfn (client, & progressfn);
+ debuginfod_set_verbose_fd (client, STDERR_FILENO);
+ break;
default: return ARGP_ERR_UNKNOWN;
}
return 0;
@@ -84,6 +118,8 @@ static struct argp argp =
int
main(int argc, char** argv)
{
+ elf_version (EV_CURRENT);
+
client = debuginfod_begin ();
if (client == NULL)
{
@@ -91,6 +127,9 @@ main(int argc, char** argv)
return 1;
}
+ /* Exercise user data pointer, to support testing only. */
+ debuginfod_set_user_data (client, (void *)"Progress");
+
int remaining;
(void) argp_parse (&argp, argc, argv, ARGP_IN_ORDER|ARGP_NO_ARGS, &remaining, NULL);
@@ -100,29 +139,73 @@ main(int argc, char** argv)
return 1;
}
- int rc;
+ /* If we were passed an ELF file name in the BUILDID slot, look in there. */
+ unsigned char* build_id = (unsigned char*) argv[remaining+1];
+ int build_id_len = 0; /* assume text */
+
+ int any_non_hex = 0;
+ int i;
+ for (i = 0; build_id[i] != '\0'; i++)
+ if ((build_id[i] >= '0' && build_id[i] <= '9') ||
+ (build_id[i] >= 'a' && build_id[i] <= 'f'))
+ ;
+ else
+ any_non_hex = 1;
+
+ int fd = -1;
+ Elf* elf = NULL;
+ if (any_non_hex) /* raw build-id */
+ {
+ fd = open ((char*) build_id, O_RDONLY);
+ if (fd < 0)
+ fprintf (stderr, "Cannot open %s: %s\n", build_id, strerror(errno));
+ }
+ if (fd >= 0)
+ {
+ elf = dwelf_elf_begin (fd);
+ if (elf == NULL)
+ fprintf (stderr, "Cannot open as ELF file %s: %s\n", build_id,
+ elf_errmsg (-1));
+ }
+ if (elf != NULL)
+ {
+ const void *extracted_build_id;
+ ssize_t s = dwelf_elf_gnu_build_id(elf, &extracted_build_id);
+ if (s > 0)
+ {
+ /* Success: replace the build_id pointer/len with the binary blob
+ that elfutils is keeping for us. It'll remain valid until elf_end(). */
+ build_id = (unsigned char*) extracted_build_id;
+ build_id_len = s;
+ }
+ else
+ fprintf (stderr, "Cannot extract build-id from %s: %s\n", build_id, elf_errmsg(-1));
+ }
+
char *cache_name;
+ int rc = 0;
/* Check whether FILETYPE is valid and call the appropriate
debuginfod_find_* function. If FILETYPE is "source"
then ensure a FILENAME was also supplied as an argument. */
if (strcmp(argv[remaining], "debuginfo") == 0)
rc = debuginfod_find_debuginfo(client,
- (unsigned char *)argv[remaining+1], 0,
+ build_id, build_id_len,
&cache_name);
else if (strcmp(argv[remaining], "executable") == 0)
rc = debuginfod_find_executable(client,
- (unsigned char *)argv[remaining+1], 0,
+ build_id, build_id_len,
&cache_name);
else if (strcmp(argv[remaining], "source") == 0)
{
- if (remaining+2 == argc || argv[3][0] != '/')
+ if (remaining+2 == argc || argv[remaining+2][0] != '/')
{
fprintf(stderr, "If FILETYPE is \"source\" then absolute /FILENAME must be given\n");
return 1;
}
- rc = debuginfod_find_source(client, (unsigned char *)argv[remaining+1],
- 0, argv[remaining+2], &cache_name);
+ rc = debuginfod_find_source(client,
+ build_id, build_id_len,
+ argv[remaining+2], &cache_name);
}
else
{
@@ -130,6 +213,19 @@ main(int argc, char** argv)
return 1;
}
+ if (verbose)
+ {
+ const char* url = debuginfod_get_url (client);
+ if (url != NULL)
+ fprintf(stderr, "Downloaded from %s\n", url);
+ }
+
+ debuginfod_end (client);
+ if (elf)
+ elf_end(elf);
+ if (fd >= 0)
+ close (fd);
+
if (rc < 0)
{
fprintf(stderr, "Server query failed: %s\n", strerror(-rc));
@@ -137,9 +233,7 @@ main(int argc, char** argv)
}
printf("%s\n", cache_name);
-
free (cache_name);
- debuginfod_end (client);
return 0;
}
diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
index aa7ffcf6..b34eacc2 100644
--- a/debuginfod/debuginfod.cxx
+++ b/debuginfod/debuginfod.cxx
@@ -1,5 +1,5 @@
/* Debuginfo-over-http server.
- Copyright (C) 2019 Red Hat, Inc.
+ Copyright (C) 2019-2021 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -46,12 +46,13 @@ extern "C" {
#include <unistd.h>
#include <stdlib.h>
#include <error.h>
-// #include <libintl.h> // not until it supports C++ << better
+#include <libintl.h>
#include <locale.h>
#include <pthread.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/time.h>
+#include <sys/vfs.h>
#include <unistd.h>
#include <fcntl.h>
#include <netdb.h>
@@ -79,6 +80,7 @@ extern "C" {
#include <ostream>
#include <sstream>
#include <mutex>
+#include <deque>
#include <condition_variable>
#include <thread>
// #include <regex> // on rhel7 gcc 4.8, not competent
@@ -90,6 +92,14 @@ using namespace std;
#include <libdwelf.h>
#include <microhttpd.h>
+
+#if MHD_VERSION >= 0x00097002
+// libmicrohttpd 0.9.71 broke API
+#define MHD_RESULT enum MHD_Result
+#else
+#define MHD_RESULT int
+#endif
+
#include <curl/curl.h>
#include <archive.h>
#include <archive_entry.h>
@@ -106,7 +116,16 @@ using namespace std;
#endif
-// Roll this identifier for every sqlite schema incompatiblity.
+inline bool
+string_endswith(const string& haystack, const string& needle)
+{
+ return (haystack.size() >= needle.size() &&
+ equal(haystack.end()-needle.size(), haystack.end(),
+ needle.begin()));
+}
+
+
+// Roll this identifier for every sqlite schema incompatibility.
#define BUILDIDS "buildids9"
#if SQLITE_VERSION_NUMBER >= 3008000
@@ -231,9 +250,9 @@ static const char DEBUGINFOD_SQLITE_DDL[] =
"create view if not exists " BUILDIDS "_stats as\n"
" select 'file d/e' as label,count(*) as quantity from " BUILDIDS "_f_de\n"
"union all select 'file s',count(*) from " BUILDIDS "_f_s\n"
- "union all select 'rpm d/e',count(*) from " BUILDIDS "_r_de\n"
- "union all select 'rpm sref',count(*) from " BUILDIDS "_r_sref\n"
- "union all select 'rpm sdef',count(*) from " BUILDIDS "_r_sdef\n"
+ "union all select 'archive d/e',count(*) from " BUILDIDS "_r_de\n"
+ "union all select 'archive sref',count(*) from " BUILDIDS "_r_sref\n"
+ "union all select 'archive sdef',count(*) from " BUILDIDS "_r_sdef\n"
"union all select 'buildids',count(*) from " BUILDIDS "_buildids\n"
"union all select 'filenames',count(*) from " BUILDIDS "_files\n"
"union all select 'files scanned (#)',count(*) from " BUILDIDS "_file_mtime_scanned\n"
@@ -322,9 +341,11 @@ ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
static const struct argp_option options[] =
{
{ NULL, 0, NULL, 0, "Scanners:", 1 },
- { "scan-file-dir", 'F', NULL, 0, "Enable ELF/DWARF file scanning threads.", 0 },
- { "scan-rpm-dir", 'R', NULL, 0, "Enable RPM scanning threads.", 0 },
- // "source-oci-imageregistry" ...
+ { "scan-file-dir", 'F', NULL, 0, "Enable ELF/DWARF file scanning.", 0 },
+ { "scan-rpm-dir", 'R', NULL, 0, "Enable RPM scanning.", 0 },
+ { "scan-deb-dir", 'U', NULL, 0, "Enable DEB scanning.", 0 },
+ { "scan-archive", 'Z', "EXT=CMD", 0, "Enable arbitrary archive scanning.", 0 },
+ // "source-oci-imageregistry" ...
{ NULL, 0, NULL, 0, "Options:", 2 },
{ "logical", 'L', NULL, 0, "Follow symlinks, default=ignore.", 0 },
@@ -338,7 +359,14 @@ static const struct argp_option options[] =
{ "database", 'd', "FILE", 0, "Path to sqlite database.", 0 },
{ "ddl", 'D', "SQL", 0, "Apply extra sqlite ddl/pragma to connection.", 0 },
{ "verbose", 'v', NULL, 0, "Increase verbosity.", 0 },
-
+#define ARGP_KEY_FDCACHE_FDS 0x1001
+ { "fdcache-fds", ARGP_KEY_FDCACHE_FDS, "NUM", 0, "Maximum number of archive files to keep in fdcache.", 0 },
+#define ARGP_KEY_FDCACHE_MBS 0x1002
+ { "fdcache-mbs", ARGP_KEY_FDCACHE_MBS, "MB", 0, "Maximum total size of archive file fdcache.", 0 },
+#define ARGP_KEY_FDCACHE_PREFETCH 0x1003
+ { "fdcache-prefetch", ARGP_KEY_FDCACHE_PREFETCH, "NUM", 0, "Number of archive files to prefetch into fdcache.", 0 },
+#define ARGP_KEY_FDCACHE_MINTMP 0x1004
+ { "fdcache-mintmp", ARGP_KEY_FDCACHE_MINTMP, "NUM", 0, "Minimum free space% on tmpdir.", 0 },
{ NULL, 0, NULL, 0, NULL, 0 }
};
@@ -359,34 +387,79 @@ static struct argp argp =
static string db_path;
-static sqlite3 *db;
+static sqlite3 *db; // single connection, serialized across all our threads!
+static sqlite3 *dbq; // webapi query-servicing readonly connection, serialized ditto!
static unsigned verbose;
static volatile sig_atomic_t interrupted = 0;
+static volatile sig_atomic_t forced_rescan_count = 0;
static volatile sig_atomic_t sigusr1 = 0;
+static volatile sig_atomic_t forced_groom_count = 0;
static volatile sig_atomic_t sigusr2 = 0;
static unsigned http_port = 8002;
static unsigned rescan_s = 300;
static unsigned groom_s = 86400;
-static unsigned maxigroom = false;
+static bool maxigroom = false;
static unsigned concurrency = std::thread::hardware_concurrency() ?: 1;
static set<string> source_paths;
static bool scan_files = false;
-static bool scan_rpms = false;
+static map<string,string> scan_archives;
static vector<string> extra_ddl;
static regex_t file_include_regex;
static regex_t file_exclude_regex;
static bool traverse_logical;
+static long fdcache_fds;
+static long fdcache_mbs;
+static long fdcache_prefetch;
+static long fdcache_mintmp;
+static string tmpdir;
-static void set_metric(const string& key, int64_t value);
+static void set_metric(const string& key, double value);
// static void inc_metric(const string& key);
static void set_metric(const string& metric,
const string& lname, const string& lvalue,
- int64_t value);
+ double value);
static void inc_metric(const string& metric,
const string& lname, const string& lvalue);
static void add_metric(const string& metric,
const string& lname, const string& lvalue,
- int64_t value);
+ double value);
+// static void add_metric(const string& metric, double value);
+
+class tmp_inc_metric { // a RAII style wrapper for exception-safe scoped increment & decrement
+ string m, n, v;
+public:
+ tmp_inc_metric(const string& mname, const string& lname, const string& lvalue):
+ m(mname), n(lname), v(lvalue)
+ {
+ add_metric (m, n, v, 1);
+ }
+ ~tmp_inc_metric()
+ {
+ add_metric (m, n, v, -1);
+ }
+};
+
+class tmp_ms_metric { // a RAII style wrapper for exception-safe scoped timing
+ string m, n, v;
+ struct timespec ts_start;
+public:
+ tmp_ms_metric(const string& mname, const string& lname, const string& lvalue):
+ m(mname), n(lname), v(lvalue)
+ {
+ clock_gettime (CLOCK_MONOTONIC, & ts_start);
+ }
+ ~tmp_ms_metric()
+ {
+ struct timespec ts_end;
+ clock_gettime (CLOCK_MONOTONIC, & ts_end);
+ double deltas = (ts_end.tv_sec - ts_start.tv_sec)
+ + (ts_end.tv_nsec - ts_start.tv_nsec)/1.e9;
+
+ add_metric (m + "_milliseconds_sum", n, v, (deltas*1000.0));
+ inc_metric (m + "_milliseconds_count", n, v);
+ }
+};
+
/* Handle program arguments. */
static error_t
@@ -399,10 +472,37 @@ parse_opt (int key, char *arg,
case 'v': verbose ++; break;
case 'd': db_path = string(arg); break;
case 'p': http_port = (unsigned) atoi(arg);
- if (http_port > 65535) argp_failure(state, 1, EINVAL, "port number");
+ if (http_port == 0 || http_port > 65535)
+ argp_failure(state, 1, EINVAL, "port number");
break;
case 'F': scan_files = true; break;
- case 'R': scan_rpms = true; break;
+ case 'R':
+ scan_archives[".rpm"]="cat"; // libarchive groks rpm natively
+ break;
+ case 'U':
+ if (access("/usr/bin/dpkg-deb", X_OK) == 0)
+ {
+ scan_archives[".deb"]="dpkg-deb --fsys-tarfile";
+ scan_archives[".ddeb"]="dpkg-deb --fsys-tarfile";
+ }
+ else
+ {
+ scan_archives[".deb"]="(bsdtar -O -x -f - data.tar.xz)<";
+ scan_archives[".ddeb"]="(bsdtar -O -x -f - data.tar.xz)<";
+ }
+ // .udeb too?
+ break;
+ case 'Z':
+ {
+ char* extension = strchr(arg, '=');
+ if (arg[0] == '\0')
+ argp_failure(state, 1, EINVAL, "missing EXT");
+ else if (extension)
+ scan_archives[string(arg, (extension-arg))]=string(extension+1);
+ else
+ scan_archives[string(arg)]=string("cat");
+ }
+ break;
case 'L':
traverse_logical = true;
break;
@@ -425,13 +525,25 @@ parse_opt (int key, char *arg,
regfree (&file_include_regex);
rc = regcomp (&file_include_regex, arg, REG_EXTENDED|REG_NOSUB);
if (rc != 0)
- argp_failure(state, 1, EINVAL, "regular expession");
+ argp_failure(state, 1, EINVAL, "regular expression");
break;
case 'X':
regfree (&file_exclude_regex);
rc = regcomp (&file_exclude_regex, arg, REG_EXTENDED|REG_NOSUB);
if (rc != 0)
- argp_failure(state, 1, EINVAL, "regular expession");
+ argp_failure(state, 1, EINVAL, "regular expression");
+ break;
+ case ARGP_KEY_FDCACHE_FDS:
+ fdcache_fds = atol (arg);
+ break;
+ case ARGP_KEY_FDCACHE_MBS:
+ fdcache_mbs = atol (arg);
+ break;
+ case ARGP_KEY_FDCACHE_PREFETCH:
+ fdcache_prefetch = atol (arg);
+ break;
+ case ARGP_KEY_FDCACHE_MINTMP:
+ fdcache_mintmp = atol (arg);
break;
case ARGP_KEY_ARG:
source_paths.insert(string(arg));
@@ -460,12 +572,12 @@ struct reportable_exception
void report(ostream& o) const; // defined under obatched() class below
- int mhd_send_response(MHD_Connection* c) const {
+ MHD_RESULT mhd_send_response(MHD_Connection* c) const {
MHD_Response* r = MHD_create_response_from_buffer (message.size(),
(void*) message.c_str(),
MHD_RESPMEM_MUST_COPY);
MHD_add_response_header (r, "Content-Type", "text/plain");
- int rc = MHD_queue_response (c, code, r);
+ MHD_RESULT rc = MHD_queue_response (c, code, r);
MHD_destroy_response (r);
return rc;
}
@@ -475,67 +587,130 @@ struct reportable_exception
struct sqlite_exception: public reportable_exception
{
sqlite_exception(int rc, const string& msg):
- reportable_exception(string("sqlite3 error: ") + msg + ": " + string(sqlite3_errstr(rc) ?: "?")) {}
+ reportable_exception(string("sqlite3 error: ") + msg + ": " + string(sqlite3_errstr(rc) ?: "?")) {
+ inc_metric("error_count","sqlite3",sqlite3_errstr(rc));
+ }
};
struct libc_exception: public reportable_exception
{
libc_exception(int rc, const string& msg):
- reportable_exception(string("libc error: ") + msg + ": " + string(strerror(rc) ?: "?")) {}
+ reportable_exception(string("libc error: ") + msg + ": " + string(strerror(rc) ?: "?")) {
+ inc_metric("error_count","libc",strerror(rc));
+ }
};
struct archive_exception: public reportable_exception
{
archive_exception(const string& msg):
- reportable_exception(string("libarchive error: ") + msg) {}
+ reportable_exception(string("libarchive error: ") + msg) {
+ inc_metric("error_count","libarchive",msg);
+ }
archive_exception(struct archive* a, const string& msg):
- reportable_exception(string("libarchive error: ") + msg + ": " + string(archive_error_string(a) ?: "?")) {}
+ reportable_exception(string("libarchive error: ") + msg + ": " + string(archive_error_string(a) ?: "?")) {
+ inc_metric("error_count","libarchive",msg + ": " + string(archive_error_string(a) ?: "?"));
+ }
};
struct elfutils_exception: public reportable_exception
{
elfutils_exception(int rc, const string& msg):
- reportable_exception(string("elfutils error: ") + msg + ": " + string(elf_errmsg(rc) ?: "?")) {}
+ reportable_exception(string("elfutils error: ") + msg + ": " + string(elf_errmsg(rc) ?: "?")) {
+ inc_metric("error_count","elfutils",elf_errmsg(rc));
+ }
};
////////////////////////////////////////////////////////////////////////
-// a c++ counting-semaphore class ... since we're c++11 not c++20
-
-class semaphore
+template <typename Payload>
+class workq
{
+ set<Payload> q; // eliminate duplicates
+ mutex mtx;
+ condition_variable cv;
+ bool dead;
+ unsigned idlers;
+
public:
- semaphore (unsigned c=1): count(c) {}
- inline void notify () {
+ workq() { dead = false; idlers = 0; }
+ ~workq() {}
+
+ void push_back(const Payload& p)
+ {
unique_lock<mutex> lock(mtx);
- count++;
- cv.notify_one();
+ q.insert (p);
+ set_metric("thread_work_pending","role","scan", q.size());
+ cv.notify_all();
}
- inline void wait() {
+
+ // kill this workqueue, wake up all idlers / scanners
+ void nuke() {
unique_lock<mutex> lock(mtx);
- while (count == 0)
+ // optional: q.clear();
+ dead = true;
+ cv.notify_all();
+ }
+
+ // clear the workqueue, when scanning is interrupted with USR2
+ void clear() {
+ unique_lock<mutex> lock(mtx);
+ q.clear();
+ set_metric("thread_work_pending","role","scan", q.size());
+ cv.notify_all(); // maybe wake up waiting idlers
+ }
+
+ // block this scanner thread until there is work to do and no active
+ bool wait_front (Payload& p)
+ {
+ unique_lock<mutex> lock(mtx);
+ while (!dead && (q.size() == 0 || idlers > 0))
cv.wait(lock);
- count--;
+ if (dead)
+ return false;
+ else
+ {
+ p = * q.begin();
+ q.erase (q.begin());
+ set_metric("thread_work_pending","role","scan", q.size());
+ if (q.size() == 0)
+ cv.notify_all(); // maybe wake up waiting idlers
+ return true;
+ }
}
-private:
- mutex mtx;
- condition_variable cv;
- unsigned count;
-};
+ // block this idler thread until there is no work to do
+ void wait_idle ()
+ {
+ unique_lock<mutex> lock(mtx);
+ cv.notify_all(); // maybe wake up waiting scanners
+ while (!dead && (q.size() != 0))
+ cv.wait(lock);
+ idlers ++;
+ }
-class semaphore_borrower
-{
-public:
- semaphore_borrower(semaphore* s): sem(s) { sem->wait(); }
- ~semaphore_borrower() { sem->notify(); }
-private:
- semaphore* sem;
+ void done_idle ()
+ {
+ unique_lock<mutex> lock(mtx);
+ idlers --;
+ cv.notify_all(); // maybe wake up waiting scanners, but probably not (shutting down)
+ }
};
+typedef struct stat stat_t;
+typedef pair<string,stat_t> scan_payload;
+inline bool operator< (const scan_payload& a, const scan_payload& b)
+{
+ return a.first < b.first; // don't bother compare the stat fields
+}
+static workq<scan_payload> scanq; // just a single one
+// producer & idler: thread_main_fts_source_paths()
+// consumer: thread_main_scanner()
+// idler: thread_main_groom()
+
+
////////////////////////////////////////////////////////////////////////
@@ -610,6 +785,7 @@ private:
public:
sqlite_ps (sqlite3* d, const string& n, const string& s): db(d), nickname(n), sql(s) {
+ // tmp_ms_metric tick("sqlite3","prep",nickname);
if (verbose > 4)
obatched(clog) << nickname << " prep " << sql << endl;
int rc = sqlite3_prepare_v2 (db, sql.c_str(), -1 /* to \0 */, & this->pp, NULL);
@@ -619,6 +795,7 @@ public:
sqlite_ps& reset()
{
+ tmp_ms_metric tick("sqlite3","reset",nickname);
sqlite3_reset(this->pp);
return *this;
}
@@ -655,6 +832,7 @@ public:
void step_ok_done() {
+ tmp_ms_metric tick("sqlite3","step_done",nickname);
int rc = sqlite3_step (this->pp);
if (verbose > 4)
obatched(clog) << nickname << " step-ok-done(" << sqlite3_errstr(rc) << ") " << sql << endl;
@@ -665,14 +843,13 @@ public:
int step() {
+ tmp_ms_metric tick("sqlite3","step",nickname);
int rc = sqlite3_step (this->pp);
if (verbose > 4)
obatched(clog) << nickname << " step(" << sqlite3_errstr(rc) << ") " << sql << endl;
return rc;
}
-
-
~sqlite_ps () { sqlite3_finalize (this->pp); }
operator sqlite3_stmt* () { return this->pp; }
};
@@ -706,7 +883,17 @@ private:
////////////////////////////////////////////////////////////////////////
-
+static string
+header_censor(const string& str)
+{
+ string y;
+ for (auto&& x : str)
+ {
+ if (isalnum(x) || x == '/' || x == '.' || x == ',' || x == '_' || x == ':')
+ y += x;
+ }
+ return y;
+}
static string
@@ -735,13 +922,21 @@ conninfo (struct MHD_Connection * conn)
hostname[0] = servname[0] = '\0';
}
- return string(hostname) + string(":") + string(servname);
+ // extract headers relevant to administration
+ const char* user_agent = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "User-Agent") ?: "";
+ const char* x_forwarded_for = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "X-Forwarded-For") ?: "";
+ // NB: these are untrustworthy, beware if machine-processing log files
+
+ return string(hostname) + string(":") + string(servname) +
+ string(" UA:") + header_censor(string(user_agent)) +
+ string(" XFF:") + header_censor(string(x_forwarded_for));
}
////////////////////////////////////////////////////////////////////////
+
static void
add_mhd_last_modified (struct MHD_Response *resp, time_t mtime)
{
@@ -760,18 +955,15 @@ add_mhd_last_modified (struct MHD_Response *resp, time_t mtime)
static struct MHD_Response*
-handle_buildid_f_match (int64_t b_mtime,
+handle_buildid_f_match (bool internal_req_t,
+ int64_t b_mtime,
const string& b_source0,
int *result_fd)
{
+ (void) internal_req_t; // ignored
int fd = open(b_source0.c_str(), O_RDONLY);
if (fd < 0)
- {
- if (verbose)
- obatched(clog) << "cannot open " << b_source0 << endl;
- // if still missing, a periodic groom pass will delete this buildid record
- return 0;
- }
+ throw libc_exception (errno, string("open ") + b_source0);
// NB: use manual close(2) in error case instead of defer_dtor, because
// in the normal case, we want to hand the fd over to libmicrohttpd for
@@ -781,10 +973,8 @@ handle_buildid_f_match (int64_t b_mtime,
int rc = fstat(fd, &s);
if (rc < 0)
{
- if (verbose)
- clog << "cannot fstat " << b_source0 << endl;
close(fd);
- return 0;
+ throw libc_exception (errno, string("fstat ") + b_source0);
}
if ((int64_t) s.st_mtime != b_mtime)
@@ -833,8 +1023,329 @@ shell_escape(const string& str)
}
+// PR25548: Perform POSIX / RFC3986 style path canonicalization on the input string.
+//
+// Namely:
+// // -> /
+// /foo/../ -> /
+// /./ -> /
+//
+// This mapping is done on dwarf-side source path names, which may
+// include these constructs, so we can deal with debuginfod clients
+// that accidentally canonicalize the paths.
+//
+// realpath(3) is close but not quite right, because it also resolves
+// symbolic links. Symlinks at the debuginfod server have nothing to
+// do with the build-time symlinks, thus they must not be considered.
+//
+// see also curl Curl_dedotdotify() aka RFC3986, which we mostly follow here
+// see also libc __realpath()
+// see also llvm llvm::sys::path::remove_dots()
+static string
+canon_pathname (const string& input)
+{
+ string i = input; // 5.2.4 (1)
+ string o;
+
+ while (i.size() != 0)
+ {
+ // 5.2.4 (2) A
+ if (i.substr(0,3) == "../")
+ i = i.substr(3);
+ else if(i.substr(0,2) == "./")
+ i = i.substr(2);
+
+ // 5.2.4 (2) B
+ else if (i.substr(0,3) == "/./")
+ i = i.substr(2);
+ else if (i == "/.")
+ i = ""; // no need to handle "/." complete-path-segment case; we're dealing with file names
+
+ // 5.2.4 (2) C
+ else if (i.substr(0,4) == "/../") {
+ i = i.substr(3);
+ string::size_type sl = o.rfind("/");
+ if (sl != string::npos)
+ o = o.substr(0, sl);
+ else
+ o = "";
+ } else if (i == "/..")
+ i = ""; // no need to handle "/.." complete-path-segment case; we're dealing with file names
+
+ // 5.2.4 (2) D
+ // no need to handle these cases; we're dealing with file names
+ else if (i == ".")
+ i = "";
+ else if (i == "..")
+ i = "";
+
+ // POSIX special: map // to /
+ else if (i.substr(0,2) == "//")
+ i = i.substr(1);
+
+ // 5.2.4 (2) E
+ else {
+ string::size_type next_slash = i.find("/", (i[0]=='/' ? 1 : 0)); // skip first slash
+ o += i.substr(0, next_slash);
+ if (next_slash == string::npos)
+ i = "";
+ else
+ i = i.substr(next_slash);
+ }
+ }
+
+ return o;
+}
+
+
+// Estimate available free space for a given filesystem via statfs(2).
+// Return true if the free fraction is known to be smaller than the
+// given minimum percentage. Also update a related metric.
+bool statfs_free_enough_p(const string& path, const string& label, long minfree = 0)
+{
+ struct statfs sfs;
+ int rc = statfs(path.c_str(), &sfs);
+ if (rc == 0)
+ {
+ double s = (double) sfs.f_bavail / (double) sfs.f_blocks;
+ set_metric("filesys_free_ratio","purpose",label, s);
+ return ((s * 100.0) < minfree);
+ }
+ return false;
+}
+
+
+
+// A map-like class that owns a cache of file descriptors (indexed by
+// file / content names).
+//
+// If only it could use fd's instead of file names ... but we can't
+// dup(2) to create independent descriptors for the same unlinked
+// files, so would have to use some goofy linux /proc/self/fd/%d
+// hack such as the following
+
+#if 0
+int superdup(int fd)
+{
+#ifdef __linux__
+ char *fdpath = NULL;
+ int rc = asprintf(& fdpath, "/proc/self/fd/%d", fd);
+ int newfd;
+ if (rc >= 0)
+ newfd = open(fdpath, O_RDONLY);
+ else
+ newfd = -1;
+ free (fdpath);
+ return newfd;
+#else
+ return -1;
+#endif
+}
+#endif
+
+class libarchive_fdcache
+{
+private:
+ mutex fdcache_lock;
+
+ struct fdcache_entry
+ {
+ string archive;
+ string entry;
+ string fd;
+ double fd_size_mb; // slightly rounded up megabytes
+ };
+ deque<fdcache_entry> lru; // @head: most recently used
+ long max_fds;
+ long max_mbs;
+
+public:
+ void set_metrics()
+ {
+ double total_mb = 0.0;
+ for (auto i = lru.begin(); i < lru.end(); i++)
+ total_mb += i->fd_size_mb;
+ set_metric("fdcache_bytes", (int64_t)(total_mb*1024.0*1024.0));
+ set_metric("fdcache_count", lru.size());
+ }
+
+ void intern(const string& a, const string& b, string fd, off_t sz, bool front_p)
+ {
+ {
+ unique_lock<mutex> lock(fdcache_lock);
+ for (auto i = lru.begin(); i < lru.end(); i++) // nuke preexisting copy
+ {
+ if (i->archive == a && i->entry == b)
+ {
+ unlink (i->fd.c_str());
+ lru.erase(i);
+ inc_metric("fdcache_op_count","op","dequeue");
+ break; // must not continue iterating
+ }
+ }
+ double mb = (sz+65535)/1048576.0; // round up to 64K block
+ fdcache_entry n = { a, b, fd, mb };
+ if (front_p)
+ {
+ inc_metric("fdcache_op_count","op","enqueue_front");
+ lru.push_front(n);
+ }
+ else
+ {
+ inc_metric("fdcache_op_count","op","enqueue_back");
+ lru.push_back(n);
+ }
+ if (verbose > 3)
+ obatched(clog) << "fdcache interned a=" << a << " b=" << b
+ << " fd=" << fd << " mb=" << mb << " front=" << front_p << endl;
+ }
+ set_metrics();
+
+ // NB: we age the cache at lookup time too
+ if (statfs_free_enough_p(tmpdir, "tmpdir", fdcache_mintmp))
+ {
+ inc_metric("fdcache_op_count","op","emerg-flush");
+ obatched(clog) << "fdcache emergency flush for filling tmpdir" << endl;
+ this->limit(0, 0); // emergency flush
+ }
+ else if (front_p)
+ this->limit(max_fds, max_mbs); // age cache if required
+ }
+
+ int lookup(const string& a, const string& b)
+ {
+ int fd = -1;
+ {
+ unique_lock<mutex> lock(fdcache_lock);
+ for (auto i = lru.begin(); i < lru.end(); i++)
+ {
+ if (i->archive == a && i->entry == b)
+ { // found it; move it to head of lru
+ fdcache_entry n = *i;
+ lru.erase(i); // invalidates i, so no more iteration!
+ lru.push_front(n);
+ inc_metric("fdcache_op_count","op","requeue_front");
+ fd = open(n.fd.c_str(), O_RDONLY); // NB: no problem if dup() fails; looks like cache miss
+ break;
+ }
+ }
+ }
+
+ if (statfs_free_enough_p(tmpdir, "tmpdir", fdcache_mintmp))
+ {
+ inc_metric("fdcache_op_count","op","emerg-flush");
+ obatched(clog) << "fdcache emergency flush for filling tmpdir";
+ this->limit(0, 0); // emergency flush
+ }
+ else if (fd >= 0)
+ this->limit(max_fds, max_mbs); // age cache if required
+
+ return fd;
+ }
+
+ int probe(const string& a, const string& b) // just a cache residency check - don't modify LRU state, don't open
+ {
+ unique_lock<mutex> lock(fdcache_lock);
+ for (auto i = lru.begin(); i < lru.end(); i++)
+ {
+ if (i->archive == a && i->entry == b)
+ {
+ inc_metric("fdcache_op_count","op","probe_hit");
+ return true;
+ }
+ }
+ inc_metric("fdcache_op_count","op","probe_miss");
+ return false;
+ }
+
+ void clear(const string& a, const string& b)
+ {
+ unique_lock<mutex> lock(fdcache_lock);
+ for (auto i = lru.begin(); i < lru.end(); i++)
+ {
+ if (i->archive == a && i->entry == b)
+ { // found it; move it to head of lru
+ fdcache_entry n = *i;
+ lru.erase(i); // invalidates i, so no more iteration!
+ inc_metric("fdcache_op_count","op","clear");
+ unlink (n.fd.c_str());
+ set_metrics();
+ return;
+ }
+ }
+ }
+
+
+ void limit(long maxfds, long maxmbs, bool metrics_p = true)
+ {
+ if (verbose > 3 && (this->max_fds != maxfds || this->max_mbs != maxmbs))
+ obatched(clog) << "fdcache limited to maxfds=" << maxfds << " maxmbs=" << maxmbs << endl;
+
+ unique_lock<mutex> lock(fdcache_lock);
+ this->max_fds = maxfds;
+ this->max_mbs = maxmbs;
+
+ long total_fd = 0;
+ double total_mb = 0.0;
+ for (auto i = lru.begin(); i < lru.end(); i++)
+ {
+ // accumulate totals from most recently used one going backward
+ total_fd ++;
+ total_mb += i->fd_size_mb;
+ if (total_fd > max_fds || total_mb > max_mbs)
+ {
+ // found the cut here point!
+
+ for (auto j = i; j < lru.end(); j++) // close all the fds from here on in
+ {
+ if (verbose > 3)
+ obatched(clog) << "fdcache evicted a=" << j->archive << " b=" << j->entry
+ << " fd=" << j->fd << " mb=" << j->fd_size_mb << endl;
+ if (metrics_p)
+ inc_metric("fdcache_op_count","op","evict");
+ unlink (j->fd.c_str());
+ }
+
+ lru.erase(i, lru.end()); // erase the nodes generally
+ break;
+ }
+ }
+ if (metrics_p) set_metrics();
+ }
+
+
+ ~libarchive_fdcache()
+ {
+ // unlink any fdcache entries in $TMPDIR
+ // don't update metrics; those globals may be already destroyed
+ limit(0, 0, false);
+ }
+};
+static libarchive_fdcache fdcache;
+
+
+// For security/portability reasons, many distro-package archives have
+// a "./" in front of path names; others have nothing, others have
+// "/". Canonicalize them all to a single leading "/", with the
+// assumption that this matches the dwarf-derived file names too.
+string canonicalized_archive_entry_pathname(struct archive_entry *e)
+{
+ string fn = archive_entry_pathname(e);
+ if (fn.size() == 0)
+ return fn;
+ if (fn[0] == '/')
+ return fn;
+ if (fn[0] == '.')
+ return fn.substr(1);
+ else
+ return string("/")+fn;
+}
+
+
+
static struct MHD_Response*
-handle_buildid_r_match (int64_t b_mtime,
+handle_buildid_r_match (bool internal_req_p,
+ int64_t b_mtime,
const string& b_source0,
const string& b_source1,
int *result_fd)
@@ -851,11 +1362,69 @@ handle_buildid_r_match (int64_t b_mtime,
return 0;
}
- string popen_cmd = string("rpm2cpio " + shell_escape(b_source0));
- FILE* fp = popen (popen_cmd.c_str(), "r"); // "e" O_CLOEXEC?
- if (fp == NULL)
- throw libc_exception (errno, string("popen ") + popen_cmd);
- defer_dtor<FILE*,int> fp_closer (fp, pclose);
+ // check for a match in the fdcache first
+ int fd = fdcache.lookup(b_source0, b_source1);
+ while (fd >= 0) // got one!; NB: this is really an if() with a possible branch out to the end
+ {
+ rc = fstat(fd, &fs);
+ if (rc < 0) // disappeared?
+ {
+ if (verbose)
+ obatched(clog) << "cannot fstat fdcache " << b_source0 << endl;
+ close(fd);
+ fdcache.clear(b_source0, b_source1);
+ break; // branch out of if "loop", to try new libarchive fetch attempt
+ }
+
+ struct MHD_Response* r = MHD_create_response_from_fd (fs.st_size, fd);
+ if (r == 0)
+ {
+ if (verbose)
+ obatched(clog) << "cannot create fd-response for " << b_source0 << endl;
+ close(fd);
+ break; // branch out of if "loop", to try new libarchive fetch attempt
+ }
+
+ inc_metric ("http_responses_total","result","archive fdcache");
+
+ MHD_add_response_header (r, "Content-Type", "application/octet-stream");
+ add_mhd_last_modified (r, fs.st_mtime);
+ if (verbose > 1)
+ obatched(clog) << "serving fdcache archive " << b_source0 << " file " << b_source1 << endl;
+ /* libmicrohttpd will close it. */
+ if (result_fd)
+ *result_fd = fd;
+ return r;
+ // NB: see, we never go around the 'loop' more than once
+ }
+
+ // no match ... grumble, must process the archive
+ string archive_decoder = "/dev/null";
+ string archive_extension = "";
+ for (auto&& arch : scan_archives)
+ if (string_endswith(b_source0, arch.first))
+ {
+ archive_extension = arch.first;
+ archive_decoder = arch.second;
+ }
+ FILE* fp;
+ defer_dtor<FILE*,int>::dtor_fn dfn;
+ if (archive_decoder != "cat")
+ {
+ string popen_cmd = archive_decoder + " " + shell_escape(b_source0);
+ fp = popen (popen_cmd.c_str(), "r"); // "e" O_CLOEXEC?
+ dfn = pclose;
+ if (fp == NULL)
+ throw libc_exception (errno, string("popen ") + popen_cmd);
+ }
+ else
+ {
+ fp = fopen (b_source0.c_str(), "r");
+ dfn = fclose;
+ if (fp == NULL)
+ throw libc_exception (errno, string("fopen ") + b_source0);
+ }
+ defer_dtor<FILE*,int> fp_closer (fp, dfn);
struct archive *a;
a = archive_read_new();
@@ -863,19 +1432,31 @@ handle_buildid_r_match (int64_t b_mtime,
throw archive_exception("cannot create archive reader");
defer_dtor<struct archive*,int> archive_closer (a, archive_read_free);
- rc = archive_read_support_format_cpio(a);
+ rc = archive_read_support_format_all(a);
if (rc != ARCHIVE_OK)
- throw archive_exception(a, "cannot select cpio format");
+ throw archive_exception(a, "cannot select all format");
rc = archive_read_support_filter_all(a);
if (rc != ARCHIVE_OK)
throw archive_exception(a, "cannot select all filters");
rc = archive_read_open_FILE (a, fp);
if (rc != ARCHIVE_OK)
- throw archive_exception(a, "cannot open archive from rpm2cpio pipe");
-
- while(1) // parse cpio archive entries
+ throw archive_exception(a, "cannot open archive from pipe");
+
+ // archive traversal is in three stages, no, four stages:
+ // 1) skip entries whose names do not match the requested one
+ // 2) extract the matching entry name (set r = result)
+ // 3) extract some number of prefetched entries (just into fdcache)
+ // 4) abort any further processing
+ struct MHD_Response* r = 0; // will set in stage 2
+ unsigned prefetch_count =
+ internal_req_p ? 0 : fdcache_prefetch; // will decrement in stage 3
+
+ while(r == 0 || prefetch_count > 0) // stage 1, 2, or 3
{
+ if (interrupted)
+ break;
+
struct archive_entry *e;
rc = archive_read_next_header (a, &e);
if (rc != ARCHIVE_OK)
@@ -884,64 +1465,108 @@ handle_buildid_r_match (int64_t b_mtime,
if (! S_ISREG(archive_entry_mode (e))) // skip non-files completely
continue;
- string fn = archive_entry_pathname (e);
- if (fn != string(".")+b_source1)
+ string fn = canonicalized_archive_entry_pathname (e);
+ if ((r == 0) && (fn != b_source1)) // stage 1
+ continue;
+
+ if (fdcache.probe (b_source0, fn)) // skip if already interned
continue;
// extract this file to a temporary file
- char tmppath[PATH_MAX] = "/tmp/debuginfod.XXXXXX"; // XXX: $TMP_DIR etc.
- int fd = mkstemp (tmppath);
+ char* tmppath = NULL;
+ rc = asprintf (&tmppath, "%s/debuginfod.XXXXXX", tmpdir.c_str());
+ if (rc < 0)
+ throw libc_exception (ENOMEM, "cannot allocate tmppath");
+ defer_dtor<void*,void> tmmpath_freer (tmppath, free);
+ fd = mkstemp (tmppath);
if (fd < 0)
throw libc_exception (errno, "cannot create temporary file");
- unlink (tmppath); // unlink now so OS will release the file as soon as we close the fd
+ // NB: don't unlink (tmppath), as fdcache will take charge of it.
+ // NB: this can take many uninterruptible seconds for a huge file
rc = archive_read_data_into_fd (a, fd);
- if (rc != ARCHIVE_OK)
+ if (rc != ARCHIVE_OK) // e.g. ENOSPC!
{
close (fd);
+ unlink (tmppath);
throw archive_exception(a, "cannot extract file");
}
- inc_metric ("http_responses_total","result","rpm");
- struct MHD_Response* r = MHD_create_response_from_fd (archive_entry_size(e), fd);
+ // Set the mtime so the fdcache file mtimes, even prefetched ones,
+ // propagate to future webapi clients.
+ struct timeval tvs[2];
+ tvs[0].tv_sec = tvs[1].tv_sec = archive_entry_mtime(e);
+ tvs[0].tv_usec = tvs[1].tv_usec = 0;
+ (void) futimes (fd, tvs); /* best effort */
+
+ if (r != 0) // stage 3
+ {
+ // NB: now we know we have a complete reusable file; make fdcache
+ // responsible for unlinking it later.
+ fdcache.intern(b_source0, fn,
+ tmppath, archive_entry_size(e),
+ false); // prefetched ones go to back of lru
+ prefetch_count --;
+ close (fd); // we're not saving this fd to make a mhd-response from!
+ continue;
+ }
+
+ // NB: now we know we have a complete reusable file; make fdcache
+ // responsible for unlinking it later.
+ fdcache.intern(b_source0, b_source1,
+ tmppath, archive_entry_size(e),
+ true); // requested ones go to the front of lru
+
+ inc_metric ("http_responses_total","result",archive_extension + " archive");
+ r = MHD_create_response_from_fd (archive_entry_size(e), fd);
if (r == 0)
{
if (verbose)
obatched(clog) << "cannot create fd-response for " << b_source0 << endl;
close(fd);
- break; // assume no chance of better luck around another iteration
+ break; // assume no chance of better luck around another iteration; no other copies of same file
}
else
{
MHD_add_response_header (r, "Content-Type", "application/octet-stream");
add_mhd_last_modified (r, archive_entry_mtime(e));
if (verbose > 1)
- obatched(clog) << "serving rpm " << b_source0 << " file " << b_source1 << endl;
+ obatched(clog) << "serving archive " << b_source0 << " file " << b_source1 << endl;
/* libmicrohttpd will close it. */
if (result_fd)
*result_fd = fd;
- return r;
+ continue;
}
}
// XXX: rpm/file not found: delete this R entry?
- return 0;
+ return r;
}
static struct MHD_Response*
-handle_buildid_match (int64_t b_mtime,
+handle_buildid_match (bool internal_req_p,
+ int64_t b_mtime,
const string& b_stype,
const string& b_source0,
const string& b_source1,
int *result_fd)
{
- if (b_stype == "F")
- return handle_buildid_f_match(b_mtime, b_source0, result_fd);
- else if (b_stype == "R")
- return handle_buildid_r_match(b_mtime, b_source0, b_source1, result_fd);
- else
- return 0;
+ try
+ {
+ if (b_stype == "F")
+ return handle_buildid_f_match(internal_req_p, b_mtime, b_source0, result_fd);
+ else if (b_stype == "R")
+ return handle_buildid_r_match(internal_req_p, b_mtime, b_source0, b_source1, result_fd);
+ }
+ catch (const reportable_exception &e)
+ {
+ e.report(clog);
+ // Report but swallow libc etc. errors here; let the caller
+ // iterate to other matches of the content.
+ }
+
+ return 0;
}
@@ -955,11 +1580,12 @@ debuginfod_find_progress (debuginfod_client *, long a, long b)
}
-static struct MHD_Response* handle_buildid (const string& buildid /* unsafe */,
- const string& artifacttype /* unsafe */,
- const string& suffix /* unsafe */,
- int *result_fd
- )
+static struct MHD_Response*
+handle_buildid (MHD_Connection* conn,
+ const string& buildid /* unsafe */,
+ const string& artifacttype /* unsafe */,
+ const string& suffix /* unsafe */,
+ int *result_fd)
{
// validate artifacttype
string atype_code;
@@ -981,11 +1607,15 @@ static struct MHD_Response* handle_buildid (const string& buildid /* unsafe */,
obatched(clog) << "searching for buildid=" << buildid << " artifacttype=" << artifacttype
<< " suffix=" << suffix << endl;
+ // If invoked from the scanner threads, use the scanners' read-write
+ // connection. Otherwise use the web query threads' read-only connection.
+ sqlite3 *thisdb = (conn == 0) ? db : dbq;
+
sqlite_ps *pp = 0;
if (atype_code == "D")
{
- pp = new sqlite_ps (db, "mhd-query-d",
+ pp = new sqlite_ps (thisdb, "mhd-query-d",
"select mtime, sourcetype, source0, source1 from " BUILDIDS "_query_d where buildid = ? "
"order by mtime desc");
pp->reset();
@@ -993,7 +1623,7 @@ static struct MHD_Response* handle_buildid (const string& buildid /* unsafe */,
}
else if (atype_code == "E")
{
- pp = new sqlite_ps (db, "mhd-query-e",
+ pp = new sqlite_ps (thisdb, "mhd-query-e",
"select mtime, sourcetype, source0, source1 from " BUILDIDS "_query_e where buildid = ? "
"order by mtime desc");
pp->reset();
@@ -1001,12 +1631,19 @@ static struct MHD_Response* handle_buildid (const string& buildid /* unsafe */,
}
else if (atype_code == "S")
{
- pp = new sqlite_ps (db, "mhd-query-s",
- "select mtime, sourcetype, source0, source1 from " BUILDIDS "_query_s where buildid = ? and artifactsrc = ? "
+ // PR25548
+ // Incoming source queries may come in with either dwarf-level OR canonicalized paths.
+ // We let the query pass with either one.
+
+ pp = new sqlite_ps (thisdb, "mhd-query-s",
+ "select mtime, sourcetype, source0, source1 from " BUILDIDS "_query_s where buildid = ? and artifactsrc in (?,?) "
"order by sharedprefix(source0,source0ref) desc, mtime desc");
pp->reset();
pp->bind(1, buildid);
+ // NB: we don't store the non-canonicalized path names any more, but old databases
+ // might have them (and no canon ones), so we keep searching for both.
pp->bind(2, suffix);
+ pp->bind(3, canon_pathname(suffix));
}
unique_ptr<sqlite_ps> ps_closer(pp); // release pp if exception or return
@@ -1029,10 +1666,12 @@ static struct MHD_Response* handle_buildid (const string& buildid /* unsafe */,
// Try accessing the located match.
// XXX: in case of multiple matches, attempt them in parallel?
- auto r = handle_buildid_match (b_mtime, b_stype, b_source0, b_source1, result_fd);
+ auto r = handle_buildid_match (conn ? false : true,
+ b_mtime, b_stype, b_source0, b_source1, result_fd);
if (r)
return r;
}
+ pp->reset();
// We couldn't find it in the database. Last ditch effort
// is to defer to other debuginfo servers.
@@ -1043,6 +1682,35 @@ static struct MHD_Response* handle_buildid (const string& buildid /* unsafe */,
{
debuginfod_set_progressfn (client, & debuginfod_find_progress);
+ if (conn)
+ {
+ // Transcribe incoming User-Agent:
+ string ua = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "User-Agent") ?: "";
+ string ua_complete = string("User-Agent: ") + ua;
+ debuginfod_add_http_header (client, ua_complete.c_str());
+
+ // Compute larger XFF:, for avoiding info loss during
+ // federation, and for future cyclicity detection.
+ string xff = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "X-Forwarded-For") ?: "";
+ if (xff != "")
+ xff += string(", "); // comma separated list
+
+ // Compute the client's numeric IP address only - so can't merge with conninfo()
+ const union MHD_ConnectionInfo *u = MHD_get_connection_info (conn,
+ MHD_CONNECTION_INFO_CLIENT_ADDRESS);
+ struct sockaddr *so = u ? u->client_addr : 0;
+ char hostname[256] = ""; // RFC1035
+ if (so && so->sa_family == AF_INET)
+ (void) getnameinfo (so, sizeof (struct sockaddr_in), hostname, sizeof (hostname), NULL, 0,
+ NI_NUMERICHOST);
+ else if (so && so->sa_family == AF_INET6)
+ (void) getnameinfo (so, sizeof (struct sockaddr_in6), hostname, sizeof (hostname), NULL, 0,
+ NI_NUMERICHOST);
+
+ string xff_complete = string("X-Forwarded-For: ")+xff+string(hostname);
+ debuginfod_add_http_header (client, xff_complete.c_str());
+ }
+
if (artifacttype == "debuginfo")
fd = debuginfod_find_debuginfo (client,
(const unsigned char*) buildid.c_str(),
@@ -1081,8 +1749,16 @@ static struct MHD_Response* handle_buildid (const string& buildid /* unsafe */,
}
close (fd);
}
- else if (fd != -ENOSYS) // no DEBUGINFOD_URLS configured
- throw libc_exception(-fd, "upstream debuginfod query failed");
+ else
+ switch(fd)
+ {
+ case -ENOSYS:
+ break;
+ case -ENOENT:
+ break;
+ default: // some more tricky error
+ throw libc_exception(-fd, "upstream debuginfod query failed");
+ }
throw reportable_exception(MHD_HTTP_NOT_FOUND, "not found");
}
@@ -1090,9 +1766,11 @@ static struct MHD_Response* handle_buildid (const string& buildid /* unsafe */,
////////////////////////////////////////////////////////////////////////
-static map<string,int64_t> metrics; // arbitrary data for /metrics query
+static map<string,double> metrics; // arbitrary data for /metrics query
// NB: store int64_t since all our metrics are integers; prometheus accepts double
static mutex metrics_lock;
+// NB: these objects get released during the process exit via global dtors
+// do not call them from within other global dtors
// utility function for assembling prometheus-compatible
// name="escaped-value" strings
@@ -1117,7 +1795,7 @@ metric_label(const string& name, const string& value)
// add prometheus-format metric name + label tuple (if any) + value
static void
-set_metric(const string& metric, int64_t value)
+set_metric(const string& metric, double value)
{
unique_lock<mutex> lock(metrics_lock);
metrics[metric] = value;
@@ -1133,7 +1811,7 @@ inc_metric(const string& metric)
static void
set_metric(const string& metric,
const string& lname, const string& lvalue,
- int64_t value)
+ double value)
{
string key = (metric + "{" + metric_label(lname, lvalue) + "}");
unique_lock<mutex> lock(metrics_lock);
@@ -1151,30 +1829,57 @@ inc_metric(const string& metric,
static void
add_metric(const string& metric,
const string& lname, const string& lvalue,
- int64_t value)
+ double value)
{
string key = (metric + "{" + metric_label(lname, lvalue) + "}");
unique_lock<mutex> lock(metrics_lock);
metrics[key] += value;
}
+#if 0
+static void
+add_metric(const string& metric,
+ double value)
+{
+ unique_lock<mutex> lock(metrics_lock);
+ metrics[metric] += value;
+}
+#endif
// and more for higher arity labels if needed
static struct MHD_Response*
-handle_metrics ()
+handle_metrics (off_t* size)
{
stringstream o;
{
unique_lock<mutex> lock(metrics_lock);
for (auto&& i : metrics)
- o << i.first << " " << i.second << endl;
+ o << i.first
+ << " "
+ << std::setprecision(std::numeric_limits<double>::digits10 + 1)
+ << i.second
+ << endl;
}
const string& os = o.str();
MHD_Response* r = MHD_create_response_from_buffer (os.size(),
(void*) os.c_str(),
MHD_RESPMEM_MUST_COPY);
+ *size = os.size();
+ MHD_add_response_header (r, "Content-Type", "text/plain");
+ return r;
+}
+
+static struct MHD_Response*
+handle_root (off_t* size)
+{
+ static string version = "debuginfod (" + string (PACKAGE_NAME) + ") "
+ + string (PACKAGE_VERSION);
+ MHD_Response* r = MHD_create_response_from_buffer (version.size (),
+ (void *) version.c_str (),
+ MHD_RESPMEM_PERSISTENT);
+ *size = version.size ();
MHD_add_response_header (r, "Content-Type", "text/plain");
return r;
}
@@ -1184,7 +1889,7 @@ handle_metrics ()
/* libmicrohttpd callback */
-static int
+static MHD_RESULT
handler_cb (void * /*cls*/,
struct MHD_Connection *connection,
const char *url,
@@ -1197,8 +1902,15 @@ handler_cb (void * /*cls*/,
struct MHD_Response *r = NULL;
string url_copy = url;
- if (verbose)
- obatched(clog) << conninfo(connection) << " " << method << " " << url << endl;
+#if MHD_VERSION >= 0x00097002
+ enum MHD_Result rc;
+#else
+ int rc = MHD_NO; // mhd
+#endif
+ int http_code = 500;
+ off_t http_size = -1;
+ struct timespec ts_start, ts_end;
+ clock_gettime (CLOCK_MONOTONIC, &ts_start);
try
{
@@ -1211,6 +1923,7 @@ handler_cb (void * /*cls*/,
if (slash1 != string::npos && url1 == "/buildid")
{
+ tmp_inc_metric m ("thread_busy", "role", "http-buildid");
size_t slash2 = url_copy.find('/', slash1+1);
if (slash2 == string::npos)
throw reportable_exception("/buildid/ webapi error, need buildid");
@@ -1231,29 +1944,67 @@ handler_cb (void * /*cls*/,
}
inc_metric("http_requests_total", "type", artifacttype);
- r = handle_buildid(buildid, artifacttype, suffix, 0); // NB: don't care about result-fd
+ // get the resulting fd so we can report its size
+ int fd;
+ r = handle_buildid(connection, buildid, artifacttype, suffix, &fd);
+ if (r)
+ {
+ struct stat fs;
+ if (fstat(fd, &fs) == 0)
+ http_size = fs.st_size;
+ // libmicrohttpd will close (fd);
+ }
}
else if (url1 == "/metrics")
{
+ tmp_inc_metric m ("thread_busy", "role", "http-metrics");
inc_metric("http_requests_total", "type", "metrics");
- r = handle_metrics();
+ r = handle_metrics(& http_size);
+ }
+ else if (url1 == "/")
+ {
+ inc_metric("http_requests_total", "type", "/");
+ r = handle_root(& http_size);
}
else
- throw reportable_exception("webapi error, unrecognized /operation");
+ throw reportable_exception("webapi error, unrecognized '" + url1 + "'");
if (r == 0)
throw reportable_exception("internal error, missing response");
- int rc = MHD_queue_response (connection, MHD_HTTP_OK, r);
+ rc = MHD_queue_response (connection, MHD_HTTP_OK, r);
+ http_code = MHD_HTTP_OK;
MHD_destroy_response (r);
- return rc;
}
catch (const reportable_exception& e)
{
inc_metric("http_responses_total","result","error");
e.report(clog);
- return e.mhd_send_response (connection);
+ http_code = e.code;
+ http_size = e.message.size();
+ rc = e.mhd_send_response (connection);
}
+
+ clock_gettime (CLOCK_MONOTONIC, &ts_end);
+ double deltas = (ts_end.tv_sec - ts_start.tv_sec) + (ts_end.tv_nsec - ts_start.tv_nsec)/1.e9;
+ obatched(clog) << conninfo(connection)
+ << ' ' << method << ' ' << url
+ << ' ' << http_code << ' ' << http_size
+ << ' ' << (int)(deltas*1000) << "ms"
+ << endl;
+
+ // related prometheus metrics
+ string http_code_str = to_string(http_code);
+ if (http_size >= 0)
+ add_metric("http_responses_transfer_bytes_sum","code",http_code_str,
+ http_size);
+ inc_metric("http_responses_transfer_bytes_count","code",http_code_str);
+
+ add_metric("http_responses_duration_milliseconds_sum","code",http_code_str,
+ deltas*1000); // prometheus prefers _seconds and floating point
+ inc_metric("http_responses_duration_milliseconds_count","code",http_code_str);
+
+ return rc;
}
@@ -1300,7 +2051,7 @@ dwarf_extract_source_paths (Elf *elf, set<string>& debug_sourcefiles)
struct MHD_Response *r = 0;
try
{
- r = handle_buildid (buildid, "debuginfo", "", &alt_fd);
+ r = handle_buildid (0, buildid, "debuginfo", "", &alt_fd);
}
catch (const reportable_exception& e)
{
@@ -1399,7 +2150,8 @@ dwarf_extract_source_paths (Elf *elf, set<string>& debug_sourcefiles)
waldo = (string (comp_dir) + string("/") + string (hat));
else
{
- obatched(clog) << "skipping hat=" << hat << " due to empty comp_dir" << endl;
+ if (verbose > 3)
+ obatched(clog) << "skipping hat=" << hat << " due to empty comp_dir" << endl;
continue;
}
@@ -1544,334 +2296,210 @@ elf_classify (int fd, bool &executable_p, bool &debuginfo_p, string &buildid, se
}
-static semaphore* scan_concurrency_sem = 0; // used to implement -c load limiting
-
-
static void
-scan_source_file_path (const string& dir)
+scan_source_file (const string& rps, const stat_t& st,
+ sqlite_ps& ps_upsert_buildids,
+ sqlite_ps& ps_upsert_files,
+ sqlite_ps& ps_upsert_de,
+ sqlite_ps& ps_upsert_s,
+ sqlite_ps& ps_query,
+ sqlite_ps& ps_scan_done,
+ unsigned& fts_cached,
+ unsigned& fts_executable,
+ unsigned& fts_debuginfo,
+ unsigned& fts_sourcefiles)
{
- obatched(clog) << "fts/file traversing " << dir << endl;
+ /* See if we know of it already. */
+ int rc = ps_query
+ .reset()
+ .bind(1, rps)
+ .bind(2, st.st_mtime)
+ .step();
+ ps_query.reset();
+ if (rc == SQLITE_ROW) // i.e., a result, as opposed to DONE (no results)
+ // no need to recheck a file/version we already know
+ // specifically, no need to elf-begin a file we already determined is non-elf
+ // (so is stored with buildid=NULL)
+ {
+ fts_cached++;
+ return;
+ }
- struct timeval tv_start, tv_end;
- gettimeofday (&tv_start, NULL);
+ bool executable_p = false, debuginfo_p = false; // E and/or D
+ string buildid;
+ set<string> sourcefiles;
- sqlite_ps ps_upsert_buildids (db, "file-buildids-intern", "insert or ignore into " BUILDIDS "_buildids VALUES (NULL, ?);");
- sqlite_ps ps_upsert_files (db, "file-files-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, ?);");
- sqlite_ps ps_upsert_de (db, "file-de-upsert",
- "insert or ignore into " BUILDIDS "_f_de "
- "(buildid, debuginfo_p, executable_p, file, mtime) "
- "values ((select id from " BUILDIDS "_buildids where hex = ?),"
- " ?,?,"
- " (select id from " BUILDIDS "_files where name = ?), ?);");
- sqlite_ps ps_upsert_s (db, "file-s-upsert",
- "insert or ignore into " BUILDIDS "_f_s "
- "(buildid, artifactsrc, file, mtime) "
- "values ((select id from " BUILDIDS "_buildids where hex = ?),"
- " (select id from " BUILDIDS "_files where name = ?),"
- " (select id from " BUILDIDS "_files where name = ?),"
- " ?);");
- sqlite_ps ps_query (db, "file-negativehit-find",
- "select 1 from " BUILDIDS "_file_mtime_scanned where sourcetype = 'F' and file = (select id from " BUILDIDS "_files where name = ?) and mtime = ?;");
- sqlite_ps ps_scan_done (db, "file-scanned",
- "insert or ignore into " BUILDIDS "_file_mtime_scanned (sourcetype, file, mtime, size)"
- "values ('F', (select id from " BUILDIDS "_files where name = ?), ?, ?);");
+ int fd = open (rps.c_str(), O_RDONLY);
+ try
+ {
+ if (fd >= 0)
+ elf_classify (fd, executable_p, debuginfo_p, buildid, sourcefiles);
+ else
+ throw libc_exception(errno, string("open ") + rps);
+ add_metric ("scanned_bytes_total","source","file",
+ st.st_size);
+ inc_metric ("scanned_files_total","source","file");
+ }
+ // NB: we catch exceptions here too, so that we can
+ // cache the corrupt-elf case (!executable_p &&
+ // !debuginfo_p) just below, just as if we had an
+ // EPERM error from open(2).
+ catch (const reportable_exception& e)
+ {
+ e.report(clog);
+ }
+ if (fd >= 0)
+ close (fd);
- char * const dirs[] = { (char*) dir.c_str(), NULL };
+ // register this file name in the interning table
+ ps_upsert_files
+ .reset()
+ .bind(1, rps)
+ .step_ok_done();
- unsigned fts_scanned=0, fts_regex=0, fts_cached=0, fts_debuginfo=0, fts_executable=0, fts_sourcefiles=0;
+ if (buildid == "")
+ {
+ // no point storing an elf file without buildid
+ executable_p = false;
+ debuginfo_p = false;
+ }
+ else
+ {
+ // register this build-id in the interning table
+ ps_upsert_buildids
+ .reset()
+ .bind(1, buildid)
+ .step_ok_done();
+ }
- FTS *fts = fts_open (dirs,
- (traverse_logical ? FTS_LOGICAL : FTS_PHYSICAL|FTS_XDEV)
- | FTS_NOCHDIR /* multithreaded */,
- NULL);
- if (fts == NULL)
+ if (executable_p)
+ fts_executable ++;
+ if (debuginfo_p)
+ fts_debuginfo ++;
+ if (executable_p || debuginfo_p)
{
- obatched(cerr) << "cannot fts_open " << dir << endl;
- return;
+ ps_upsert_de
+ .reset()
+ .bind(1, buildid)
+ .bind(2, debuginfo_p ? 1 : 0)
+ .bind(3, executable_p ? 1 : 0)
+ .bind(4, rps)
+ .bind(5, st.st_mtime)
+ .step_ok_done();
}
+ if (executable_p)
+ inc_metric("found_executable_total","source","files");
+ if (debuginfo_p)
+ inc_metric("found_debuginfo_total","source","files");
- FTSENT *f;
- while ((f = fts_read (fts)) != NULL)
+ if (sourcefiles.size() && buildid != "")
{
- semaphore_borrower handle_one_file (scan_concurrency_sem);
+ fts_sourcefiles += sourcefiles.size();
- fts_scanned ++;
- if (interrupted)
- break;
+ for (auto&& dwarfsrc : sourcefiles)
+ {
+ char *srp = realpath(dwarfsrc.c_str(), NULL);
+ if (srp == NULL) // also if DWZ unresolved dwarfsrc=""
+ continue; // unresolvable files are not a serious problem
+ // throw libc_exception(errno, "fts/file realpath " + srcpath);
+ string srps = string(srp);
+ free (srp);
+
+ struct stat sfs;
+ rc = stat(srps.c_str(), &sfs);
+ if (rc != 0)
+ continue;
- if (verbose > 2)
- obatched(clog) << "fts/file traversing " << f->fts_path << endl;
+ if (verbose > 2)
+ obatched(clog) << "recorded buildid=" << buildid << " file=" << srps
+ << " mtime=" << sfs.st_mtime
+ << " as source " << dwarfsrc << endl;
- try
- {
- /* Found a file. Convert it to an absolute path, so
- the buildid database does not have relative path
- names that are unresolvable from a subsequent run
- in a different cwd. */
- char *rp = realpath(f->fts_path, NULL);
- if (rp == NULL)
- continue; // ignore dangling symlink or such
- string rps = string(rp);
- free (rp);
+ ps_upsert_files
+ .reset()
+ .bind(1, srps)
+ .step_ok_done();
- bool ri = !regexec (&file_include_regex, rps.c_str(), 0, 0, 0);
- bool rx = !regexec (&file_exclude_regex, rps.c_str(), 0, 0, 0);
- if (!ri || rx)
+ // PR25548: store canonicalized dwarfsrc path
+ string dwarfsrc_canon = canon_pathname (dwarfsrc);
+ if (dwarfsrc_canon != dwarfsrc)
{
if (verbose > 3)
- obatched(clog) << "fts/file skipped by regex " << (!ri ? "I" : "") << (rx ? "X" : "") << endl;
- fts_regex ++;
- continue;
+ obatched(clog) << "canonicalized src=" << dwarfsrc << " alias=" << dwarfsrc_canon << endl;
}
- switch (f->fts_info)
- {
- case FTS_D:
- break;
-
- case FTS_DP:
- break;
-
- case FTS_F:
- {
- /* See if we know of it already. */
- int rc = ps_query
- .reset()
- .bind(1, rps)
- .bind(2, f->fts_statp->st_mtime)
- .step();
- ps_query.reset();
- if (rc == SQLITE_ROW) // i.e., a result, as opposed to DONE (no results)
- // no need to recheck a file/version we already know
- // specifically, no need to elf-begin a file we already determined is non-elf
- // (so is stored with buildid=NULL)
- {
- fts_cached ++;
- continue;
- }
-
- bool executable_p = false, debuginfo_p = false; // E and/or D
- string buildid;
- set<string> sourcefiles;
-
- int fd = open (rps.c_str(), O_RDONLY);
- try
- {
- if (fd >= 0)
- elf_classify (fd, executable_p, debuginfo_p, buildid, sourcefiles);
- else
- throw libc_exception(errno, string("open ") + rps);
- inc_metric ("scanned_total","source","file");
- }
-
- // NB: we catch exceptions here too, so that we can
- // cache the corrupt-elf case (!executable_p &&
- // !debuginfo_p) just below, just as if we had an
- // EPERM error from open(2).
-
- catch (const reportable_exception& e)
- {
- e.report(clog);
- }
-
- if (fd >= 0)
- close (fd);
-
- // register this file name in the interning table
- ps_upsert_files
- .reset()
- .bind(1, rps)
- .step_ok_done();
-
- if (buildid == "")
- {
- // no point storing an elf file without buildid
- executable_p = false;
- debuginfo_p = false;
- }
- else
- {
- // register this build-id in the interning table
- ps_upsert_buildids
- .reset()
- .bind(1, buildid)
- .step_ok_done();
- }
-
- if (executable_p)
- fts_executable ++;
- if (debuginfo_p)
- fts_debuginfo ++;
- if (executable_p || debuginfo_p)
- {
- ps_upsert_de
- .reset()
- .bind(1, buildid)
- .bind(2, debuginfo_p ? 1 : 0)
- .bind(3, executable_p ? 1 : 0)
- .bind(4, rps)
- .bind(5, f->fts_statp->st_mtime)
- .step_ok_done();
- }
- if (executable_p)
- inc_metric("found_executable_total","source","files");
- if (debuginfo_p)
- inc_metric("found_debuginfo_total","source","files");
-
- if (sourcefiles.size() && buildid != "")
- {
- fts_sourcefiles += sourcefiles.size();
-
- for (auto&& dwarfsrc : sourcefiles)
- {
- char *srp = realpath(dwarfsrc.c_str(), NULL);
- if (srp == NULL) // also if DWZ unresolved dwarfsrc=""
- continue; // unresolvable files are not a serious problem
- // throw libc_exception(errno, "fts/file realpath " + srcpath);
- string srps = string(srp);
- free (srp);
-
- struct stat sfs;
- rc = stat(srps.c_str(), &sfs);
- if (rc != 0)
- continue;
-
- if (verbose > 2)
- obatched(clog) << "recorded buildid=" << buildid << " file=" << srps
- << " mtime=" << sfs.st_mtime
- << " as source " << dwarfsrc << endl;
-
- ps_upsert_files
- .reset()
- .bind(1, srps)
- .step_ok_done();
-
- // register the dwarfsrc name in the interning table too
- ps_upsert_files
- .reset()
- .bind(1, dwarfsrc)
- .step_ok_done();
-
- ps_upsert_s
- .reset()
- .bind(1, buildid)
- .bind(2, dwarfsrc)
- .bind(3, srps)
- .bind(4, sfs.st_mtime)
- .step_ok_done();
-
- inc_metric("found_sourcerefs_total","source","files");
- }
- }
-
- ps_scan_done
- .reset()
- .bind(1, rps)
- .bind(2, f->fts_statp->st_mtime)
- .bind(3, f->fts_statp->st_size)
- .step_ok_done();
-
- if (verbose > 2)
- obatched(clog) << "recorded buildid=" << buildid << " file=" << rps
- << " mtime=" << f->fts_statp->st_mtime << " atype="
- << (executable_p ? "E" : "")
- << (debuginfo_p ? "D" : "") << endl;
- }
- break;
-
- case FTS_ERR:
- case FTS_NS:
- throw libc_exception(f->fts_errno, string("fts/file traversal ") + string(f->fts_path));
-
- default:
- case FTS_SL: /* ignore symlinks; seen in non-L mode only */
- break;
- }
-
- if ((verbose && f->fts_info == FTS_DP) ||
- (verbose > 1 && f->fts_info == FTS_F))
- obatched(clog) << "fts/file traversing " << rps << ", scanned=" << fts_scanned
- << ", regex-skipped=" << fts_regex
- << ", cached=" << fts_cached << ", debuginfo=" << fts_debuginfo
- << ", executable=" << fts_executable << ", source=" << fts_sourcefiles << endl;
- }
- catch (const reportable_exception& e)
- {
- e.report(clog);
- }
- }
- fts_close (fts);
-
- gettimeofday (&tv_end, NULL);
- double deltas = (tv_end.tv_sec - tv_start.tv_sec) + (tv_end.tv_usec - tv_start.tv_usec)*0.000001;
-
- obatched(clog) << "fts/file traversed " << dir << " in " << deltas << "s, scanned=" << fts_scanned
- << ", regex-skipped=" << fts_regex
- << ", cached=" << fts_cached << ", debuginfo=" << fts_debuginfo
- << ", executable=" << fts_executable << ", source=" << fts_sourcefiles << endl;
-}
-
+ ps_upsert_files
+ .reset()
+ .bind(1, dwarfsrc_canon)
+ .step_ok_done();
-static void*
-thread_main_scan_source_file_path (void* arg)
-{
- string dir = string((const char*) arg);
+ ps_upsert_s
+ .reset()
+ .bind(1, buildid)
+ .bind(2, dwarfsrc_canon)
+ .bind(3, srps)
+ .bind(4, sfs.st_mtime)
+ .step_ok_done();
- unsigned rescan_timer = 0;
- sig_atomic_t forced_rescan_count = 0;
- set_metric("thread_timer_max", "file", dir, rescan_s);
- set_metric("thread_tid", "file", dir, tid());
- while (! interrupted)
- {
- set_metric("thread_timer", "file", dir, rescan_timer);
- set_metric("thread_forced_total", "file", dir, forced_rescan_count);
- if (rescan_s && rescan_timer > rescan_s)
- rescan_timer = 0;
- if (sigusr1 != forced_rescan_count)
- {
- forced_rescan_count = sigusr1;
- rescan_timer = 0;
+ inc_metric("found_sourcerefs_total","source","files");
}
- if (rescan_timer == 0)
- try
- {
- set_metric("thread_working", "file", dir, time(NULL));
- inc_metric("thread_work_total", "file", dir);
- scan_source_file_path (dir);
- set_metric("thread_working", "file", dir, 0);
- }
- catch (const sqlite_exception& e)
- {
- obatched(cerr) << e.message << endl;
- }
- sleep (1);
- rescan_timer ++;
}
- return 0;
+ ps_scan_done
+ .reset()
+ .bind(1, rps)
+ .bind(2, st.st_mtime)
+ .bind(3, st.st_size)
+ .step_ok_done();
+
+ if (verbose > 2)
+ obatched(clog) << "recorded buildid=" << buildid << " file=" << rps
+ << " mtime=" << st.st_mtime << " atype="
+ << (executable_p ? "E" : "")
+ << (debuginfo_p ? "D" : "") << endl;
}
-////////////////////////////////////////////////////////////////////////
-
-// Analyze given *.rpm file of given age; record buildids / exec/debuginfo-ness of its
+// Analyze given archive file of given age; record buildids / exec/debuginfo-ness of its
// constituent files with given upsert statements.
static void
-rpm_classify (const string& rps, sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_upsert_files,
- sqlite_ps& ps_upsert_de, sqlite_ps& ps_upsert_sref, sqlite_ps& ps_upsert_sdef,
- time_t mtime,
- unsigned& fts_executable, unsigned& fts_debuginfo, unsigned& fts_sref, unsigned& fts_sdef,
- bool& fts_sref_complete_p)
+archive_classify (const string& rps, string& archive_extension,
+ sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_upsert_files,
+ sqlite_ps& ps_upsert_de, sqlite_ps& ps_upsert_sref, sqlite_ps& ps_upsert_sdef,
+ time_t mtime,
+ unsigned& fts_executable, unsigned& fts_debuginfo, unsigned& fts_sref, unsigned& fts_sdef,
+ bool& fts_sref_complete_p)
{
- string popen_cmd = string("rpm2cpio " + shell_escape(rps));
- FILE* fp = popen (popen_cmd.c_str(), "r"); // "e" O_CLOEXEC?
- if (fp == NULL)
- throw libc_exception (errno, string("popen ") + popen_cmd);
- defer_dtor<FILE*,int> fp_closer (fp, pclose);
+ string archive_decoder = "/dev/null";
+ for (auto&& arch : scan_archives)
+ if (string_endswith(rps, arch.first))
+ {
+ archive_extension = arch.first;
+ archive_decoder = arch.second;
+ }
+
+ FILE* fp;
+ defer_dtor<FILE*,int>::dtor_fn dfn;
+ if (archive_decoder != "cat")
+ {
+ string popen_cmd = archive_decoder + " " + shell_escape(rps);
+ fp = popen (popen_cmd.c_str(), "r"); // "e" O_CLOEXEC?
+ dfn = pclose;
+ if (fp == NULL)
+ throw libc_exception (errno, string("popen ") + popen_cmd);
+ }
+ else
+ {
+ fp = fopen (rps.c_str(), "r");
+ dfn = fclose;
+ if (fp == NULL)
+ throw libc_exception (errno, string("fopen ") + rps);
+ }
+ defer_dtor<FILE*,int> fp_closer (fp, dfn);
struct archive *a;
a = archive_read_new();
@@ -1879,23 +2507,26 @@ rpm_classify (const string& rps, sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_up
throw archive_exception("cannot create archive reader");
defer_dtor<struct archive*,int> archive_closer (a, archive_read_free);
- int rc = archive_read_support_format_cpio(a);
+ int rc = archive_read_support_format_all(a);
if (rc != ARCHIVE_OK)
- throw archive_exception(a, "cannot select cpio format");
+ throw archive_exception(a, "cannot select all formats");
rc = archive_read_support_filter_all(a);
if (rc != ARCHIVE_OK)
throw archive_exception(a, "cannot select all filters");
rc = archive_read_open_FILE (a, fp);
if (rc != ARCHIVE_OK)
- throw archive_exception(a, "cannot open archive from rpm2cpio pipe");
+ throw archive_exception(a, "cannot open archive from pipe");
if (verbose > 3)
- obatched(clog) << "rpm2cpio|libarchive scanning " << rps << endl;
+ obatched(clog) << "libarchive scanning " << rps << endl;
- while(1) // parse cpio archive entries
+ while(1) // parse archive entries
{
- try
+ if (interrupted)
+ break;
+
+ try
{
struct archive_entry *e;
rc = archive_read_next_header (a, &e);
@@ -1905,17 +2536,14 @@ rpm_classify (const string& rps, sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_up
if (! S_ISREG(archive_entry_mode (e))) // skip non-files completely
continue;
- string fn = archive_entry_pathname (e);
- if (fn.size() > 1 && fn[0] == '.')
- fn = fn.substr(1); // trim off the leading '.'
+ string fn = canonicalized_archive_entry_pathname (e);
if (verbose > 3)
- obatched(clog) << "rpm2cpio|libarchive checking " << fn << endl;
+ obatched(clog) << "libarchive checking " << fn << endl;
// extract this file to a temporary file
- const char *tmpdir_env = getenv ("TMPDIR") ?: "/tmp";
char* tmppath = NULL;
- rc = asprintf (&tmppath, "%s/debuginfod.XXXXXX", tmpdir_env);
+ rc = asprintf (&tmppath, "%s/debuginfod.XXXXXX", tmpdir.c_str());
if (rc < 0)
throw libc_exception (ENOMEM, "cannot allocate tmppath");
defer_dtor<void*,void> tmmpath_freer (tmppath, free);
@@ -1967,15 +2595,24 @@ rpm_classify (const string& rps, sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_up
continue;
}
+ // PR25548: store canonicalized source path
+ const string& dwarfsrc = s;
+ string dwarfsrc_canon = canon_pathname (dwarfsrc);
+ if (dwarfsrc_canon != dwarfsrc)
+ {
+ if (verbose > 3)
+ obatched(clog) << "canonicalized src=" << dwarfsrc << " alias=" << dwarfsrc_canon << endl;
+ }
+
ps_upsert_files
.reset()
- .bind(1, s)
+ .bind(1, dwarfsrc_canon)
.step_ok_done();
ps_upsert_sref
.reset()
.bind(1, buildid)
- .bind(2, s)
+ .bind(2, dwarfsrc_canon)
.step_ok_done();
fts_sref ++;
@@ -2027,64 +2664,274 @@ rpm_classify (const string& rps, sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_up
-// scan for *.rpm files
+// scan for archive files such as .rpm
static void
-scan_source_rpm_path (const string& dir)
+scan_archive_file (const string& rps, const stat_t& st,
+ sqlite_ps& ps_upsert_buildids,
+ sqlite_ps& ps_upsert_files,
+ sqlite_ps& ps_upsert_de,
+ sqlite_ps& ps_upsert_sref,
+ sqlite_ps& ps_upsert_sdef,
+ sqlite_ps& ps_query,
+ sqlite_ps& ps_scan_done,
+ unsigned& fts_cached,
+ unsigned& fts_executable,
+ unsigned& fts_debuginfo,
+ unsigned& fts_sref,
+ unsigned& fts_sdef)
+{
+ /* See if we know of it already. */
+ int rc = ps_query
+ .reset()
+ .bind(1, rps)
+ .bind(2, st.st_mtime)
+ .step();
+ ps_query.reset();
+ if (rc == SQLITE_ROW) // i.e., a result, as opposed to DONE (no results)
+ // no need to recheck a file/version we already know
+ // specifically, no need to parse this archive again, since we already have
+ // it as a D or E or S record,
+ // (so is stored with buildid=NULL)
+ {
+ fts_cached ++;
+ return;
+ }
+
+ // intern the archive file name
+ ps_upsert_files
+ .reset()
+ .bind(1, rps)
+ .step_ok_done();
+
+ // extract the archive contents
+ unsigned my_fts_executable = 0, my_fts_debuginfo = 0, my_fts_sref = 0, my_fts_sdef = 0;
+ bool my_fts_sref_complete_p = true;
+ try
+ {
+ string archive_extension;
+ archive_classify (rps, archive_extension,
+ ps_upsert_buildids, ps_upsert_files,
+ ps_upsert_de, ps_upsert_sref, ps_upsert_sdef, // dalt
+ st.st_mtime,
+ my_fts_executable, my_fts_debuginfo, my_fts_sref, my_fts_sdef,
+ my_fts_sref_complete_p);
+ add_metric ("scanned_bytes_total","source",archive_extension + " archive",
+ st.st_size);
+ inc_metric ("scanned_files_total","source",archive_extension + " archive");
+ add_metric("found_debuginfo_total","source",archive_extension + " archive",
+ my_fts_debuginfo);
+ add_metric("found_executable_total","source",archive_extension + " archive",
+ my_fts_executable);
+ add_metric("found_sourcerefs_total","source",archive_extension + " archive",
+ my_fts_sref);
+ }
+ catch (const reportable_exception& e)
+ {
+ e.report(clog);
+ }
+
+ if (verbose > 2)
+ obatched(clog) << "scanned archive=" << rps
+ << " mtime=" << st.st_mtime
+ << " executables=" << my_fts_executable
+ << " debuginfos=" << my_fts_debuginfo
+ << " srefs=" << my_fts_sref
+ << " sdefs=" << my_fts_sdef
+ << endl;
+
+ fts_executable += my_fts_executable;
+ fts_debuginfo += my_fts_debuginfo;
+ fts_sref += my_fts_sref;
+ fts_sdef += my_fts_sdef;
+
+ if (my_fts_sref_complete_p) // leave incomplete?
+ ps_scan_done
+ .reset()
+ .bind(1, rps)
+ .bind(2, st.st_mtime)
+ .bind(3, st.st_size)
+ .step_ok_done();
+}
+
+
+
+////////////////////////////////////////////////////////////////////////
+
+
+
+// The thread that consumes file names off of the scanq. We hold
+// the persistent sqlite_ps's at this level and delegate file/archive
+// scanning to other functions.
+static void*
+thread_main_scanner (void* arg)
{
- obatched(clog) << "fts/rpm traversing " << dir << endl;
+ (void) arg;
- sqlite_ps ps_upsert_buildids (db, "rpm-buildid-intern", "insert or ignore into " BUILDIDS "_buildids VALUES (NULL, ?);");
- sqlite_ps ps_upsert_files (db, "rpm-file-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, ?);");
- sqlite_ps ps_upsert_de (db, "rpm-de-insert",
+ // all the prepared statements fit to use, the _f_ set:
+ sqlite_ps ps_f_upsert_buildids (db, "file-buildids-intern", "insert or ignore into " BUILDIDS "_buildids VALUES (NULL, ?);");
+ sqlite_ps ps_f_upsert_files (db, "file-files-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, ?);");
+ sqlite_ps ps_f_upsert_de (db, "file-de-upsert",
+ "insert or ignore into " BUILDIDS "_f_de "
+ "(buildid, debuginfo_p, executable_p, file, mtime) "
+ "values ((select id from " BUILDIDS "_buildids where hex = ?),"
+ " ?,?,"
+ " (select id from " BUILDIDS "_files where name = ?), ?);");
+ sqlite_ps ps_f_upsert_s (db, "file-s-upsert",
+ "insert or ignore into " BUILDIDS "_f_s "
+ "(buildid, artifactsrc, file, mtime) "
+ "values ((select id from " BUILDIDS "_buildids where hex = ?),"
+ " (select id from " BUILDIDS "_files where name = ?),"
+ " (select id from " BUILDIDS "_files where name = ?),"
+ " ?);");
+ sqlite_ps ps_f_query (db, "file-negativehit-find",
+ "select 1 from " BUILDIDS "_file_mtime_scanned where sourcetype = 'F' "
+ "and file = (select id from " BUILDIDS "_files where name = ?) and mtime = ?;");
+ sqlite_ps ps_f_scan_done (db, "file-scanned",
+ "insert or ignore into " BUILDIDS "_file_mtime_scanned (sourcetype, file, mtime, size)"
+ "values ('F', (select id from " BUILDIDS "_files where name = ?), ?, ?);");
+
+ // and now for the _r_ set
+ sqlite_ps ps_r_upsert_buildids (db, "rpm-buildid-intern", "insert or ignore into " BUILDIDS "_buildids VALUES (NULL, ?);");
+ sqlite_ps ps_r_upsert_files (db, "rpm-file-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, ?);");
+ sqlite_ps ps_r_upsert_de (db, "rpm-de-insert",
"insert or ignore into " BUILDIDS "_r_de (buildid, debuginfo_p, executable_p, file, mtime, content) values ("
"(select id from " BUILDIDS "_buildids where hex = ?), ?, ?, "
"(select id from " BUILDIDS "_files where name = ?), ?, "
"(select id from " BUILDIDS "_files where name = ?));");
- sqlite_ps ps_upsert_sref (db, "rpm-sref-insert",
+ sqlite_ps ps_r_upsert_sref (db, "rpm-sref-insert",
"insert or ignore into " BUILDIDS "_r_sref (buildid, artifactsrc) values ("
"(select id from " BUILDIDS "_buildids where hex = ?), "
"(select id from " BUILDIDS "_files where name = ?));");
- sqlite_ps ps_upsert_sdef (db, "rpm-sdef-insert",
+ sqlite_ps ps_r_upsert_sdef (db, "rpm-sdef-insert",
"insert or ignore into " BUILDIDS "_r_sdef (file, mtime, content) values ("
"(select id from " BUILDIDS "_files where name = ?), ?,"
"(select id from " BUILDIDS "_files where name = ?));");
- sqlite_ps ps_query (db, "rpm-negativehit-query",
+ sqlite_ps ps_r_query (db, "rpm-negativehit-query",
"select 1 from " BUILDIDS "_file_mtime_scanned where "
"sourcetype = 'R' and file = (select id from " BUILDIDS "_files where name = ?) and mtime = ?;");
- sqlite_ps ps_scan_done (db, "rpm-scanned",
+ sqlite_ps ps_r_scan_done (db, "rpm-scanned",
"insert or ignore into " BUILDIDS "_file_mtime_scanned (sourcetype, file, mtime, size)"
"values ('R', (select id from " BUILDIDS "_files where name = ?), ?, ?);");
- char * const dirs[] = { (char*) dir.c_str(), NULL };
- struct timeval tv_start, tv_end;
- gettimeofday (&tv_start, NULL);
- unsigned fts_scanned=0, fts_regex=0, fts_cached=0, fts_debuginfo=0;
- unsigned fts_executable=0, fts_rpm = 0, fts_sref=0, fts_sdef=0;
+ unsigned fts_cached = 0, fts_executable = 0, fts_debuginfo = 0, fts_sourcefiles = 0;
+ unsigned fts_sref = 0, fts_sdef = 0;
- FTS *fts = fts_open (dirs,
- (traverse_logical ? FTS_LOGICAL : FTS_PHYSICAL|FTS_XDEV)
- | FTS_NOCHDIR /* multithreaded */,
- NULL);
- if (fts == NULL)
+ add_metric("thread_count", "role", "scan", 1);
+ add_metric("thread_busy", "role", "scan", 1);
+ while (! interrupted)
{
- obatched(cerr) << "cannot fts_open " << dir << endl;
- return;
+ scan_payload p;
+
+ add_metric("thread_busy", "role", "scan", -1);
+ bool gotone = scanq.wait_front(p);
+ add_metric("thread_busy", "role", "scan", 1);
+
+ if (! gotone) continue; // go back to waiting
+
+ try
+ {
+ bool scan_archive = false;
+ for (auto&& arch : scan_archives)
+ if (string_endswith(p.first, arch.first))
+ scan_archive = true;
+
+ if (scan_archive)
+ scan_archive_file (p.first, p.second,
+ ps_r_upsert_buildids,
+ ps_r_upsert_files,
+ ps_r_upsert_de,
+ ps_r_upsert_sref,
+ ps_r_upsert_sdef,
+ ps_r_query,
+ ps_r_scan_done,
+ fts_cached,
+ fts_executable,
+ fts_debuginfo,
+ fts_sref,
+ fts_sdef);
+
+ if (scan_files) // NB: maybe "else if" ?
+ scan_source_file (p.first, p.second,
+ ps_f_upsert_buildids,
+ ps_f_upsert_files,
+ ps_f_upsert_de,
+ ps_f_upsert_s,
+ ps_f_query,
+ ps_f_scan_done,
+ fts_cached, fts_executable, fts_debuginfo, fts_sourcefiles);
+ }
+ catch (const reportable_exception& e)
+ {
+ e.report(cerr);
+ }
+
+ if (fts_cached || fts_executable || fts_debuginfo || fts_sourcefiles || fts_sref || fts_sdef)
+ {} // NB: not just if a successful scan - we might have encountered -ENOSPC & failed
+ (void) statfs_free_enough_p(db_path, "database"); // report sqlite filesystem size
+ (void) statfs_free_enough_p(tmpdir, "tmpdir"); // this too, in case of fdcache/tmpfile usage
+
+ // finished a scanning step -- not a "loop", because we just
+ // consume the traversal loop's work, whenever
+ inc_metric("thread_work_total","role","scan");
}
+
+ add_metric("thread_busy", "role", "scan", -1);
+ return 0;
+}
+
+
+
+// The thread that traverses all the source_paths and enqueues all the
+// matching files into the file/archive scan queue.
+static void
+scan_source_paths()
+{
+ // NB: fedora 31 glibc/fts(3) crashes inside fts_read() on empty
+ // path list.
+ if (source_paths.empty())
+ return;
+
+ // Turn the source_paths into an fts(3)-compatible char**. Since
+ // source_paths[] does not change after argv processing, the
+ // c_str()'s are safe to keep around awile.
+ vector<const char *> sps;
+ for (auto&& sp: source_paths)
+ sps.push_back(sp.c_str());
+ sps.push_back(NULL);
+
+ FTS *fts = fts_open ((char * const *)sps.data(),
+ (traverse_logical ? FTS_LOGICAL : FTS_PHYSICAL|FTS_XDEV)
+ | FTS_NOCHDIR /* multithreaded */,
+ NULL);
+ if (fts == NULL)
+ throw libc_exception(errno, "cannot fts_open");
+ defer_dtor<FTS*,int> fts_cleanup (fts, fts_close);
+
+ struct timespec ts_start, ts_end;
+ clock_gettime (CLOCK_MONOTONIC, &ts_start);
+ unsigned fts_scanned = 0, fts_regex = 0;
+
FTSENT *f;
while ((f = fts_read (fts)) != NULL)
- {
- semaphore_borrower handle_one_file (scan_concurrency_sem);
+ {
+ if (interrupted) break;
- fts_scanned ++;
- if (interrupted)
+ if (sigusr2 != forced_groom_count) // stop early if groom triggered
+ {
+ scanq.clear(); // clear previously issued work for scanner threads
break;
+ }
- if (verbose > 2)
- obatched(clog) << "fts/rpm traversing " << f->fts_path << endl;
+ fts_scanned ++;
- try
+ if (verbose > 2)
+ obatched(clog) << "fts traversing " << f->fts_path << endl;
+
+ switch (f->fts_info)
+ {
+ case FTS_F:
{
/* Found a file. Convert it to an absolute path, so
the buildid database does not have relative path
@@ -2101,176 +2948,104 @@ scan_source_rpm_path (const string& dir)
if (!ri || rx)
{
if (verbose > 3)
- obatched(clog) << "fts/rpm skipped by regex " << (!ri ? "I" : "") << (rx ? "X" : "") << endl;
+ obatched(clog) << "fts skipped by regex "
+ << (!ri ? "I" : "") << (rx ? "X" : "") << endl;
fts_regex ++;
- continue;
+ if (!ri)
+ inc_metric("traversed_total","type","file-skipped-I");
+ if (rx)
+ inc_metric("traversed_total","type","file-skipped-X");
}
-
- switch (f->fts_info)
+ else
{
- case FTS_D:
- break;
-
- case FTS_DP:
- break;
-
- case FTS_F:
- {
- // heuristic: reject if file name does not end with ".rpm"
- // (alternative: try opening with librpm etc., caching)
- string suffix = ".rpm";
- if (rps.size() < suffix.size() ||
- rps.substr(rps.size()-suffix.size()) != suffix)
- continue;
- fts_rpm ++;
-
- /* See if we know of it already. */
- int rc = ps_query
- .reset()
- .bind(1, rps)
- .bind(2, f->fts_statp->st_mtime)
- .step();
- ps_query.reset();
- if (rc == SQLITE_ROW) // i.e., a result, as opposed to DONE (no results)
- // no need to recheck a file/version we already know
- // specifically, no need to parse this rpm again, since we already have
- // it as a D or E or S record,
- // (so is stored with buildid=NULL)
- {
- fts_cached ++;
- continue;
- }
-
- // intern the rpm file name
- ps_upsert_files
- .reset()
- .bind(1, rps)
- .step_ok_done();
-
- // extract the rpm contents via popen("rpm2cpio") | libarchive | loop-of-elf_classify()
- unsigned my_fts_executable = 0, my_fts_debuginfo = 0, my_fts_sref = 0, my_fts_sdef = 0;
- bool my_fts_sref_complete_p = true;
- try
- {
- rpm_classify (rps,
- ps_upsert_buildids, ps_upsert_files,
- ps_upsert_de, ps_upsert_sref, ps_upsert_sdef, // dalt
- f->fts_statp->st_mtime,
- my_fts_executable, my_fts_debuginfo, my_fts_sref, my_fts_sdef,
- my_fts_sref_complete_p);
- inc_metric ("scanned_total","source","rpm");
- add_metric("found_debuginfo_total","source","rpm",
- my_fts_debuginfo);
- add_metric("found_executable_total","source","rpm",
- my_fts_executable);
- add_metric("found_sourcerefs_total","source","rpm",
- my_fts_sref);
- }
- catch (const reportable_exception& e)
- {
- e.report(clog);
- }
-
- if (verbose > 2)
- obatched(clog) << "scanned rpm=" << rps
- << " mtime=" << f->fts_statp->st_mtime
- << " executables=" << my_fts_executable
- << " debuginfos=" << my_fts_debuginfo
- << " srefs=" << my_fts_sref
- << " sdefs=" << my_fts_sdef
- << endl;
-
- fts_executable += my_fts_executable;
- fts_debuginfo += my_fts_debuginfo;
- fts_sref += my_fts_sref;
- fts_sdef += my_fts_sdef;
-
- if (my_fts_sref_complete_p) // leave incomplete?
- ps_scan_done
- .reset()
- .bind(1, rps)
- .bind(2, f->fts_statp->st_mtime)
- .bind(3, f->fts_statp->st_size)
- .step_ok_done();
- }
- break;
-
- case FTS_ERR:
- case FTS_NS:
- throw libc_exception(f->fts_errno, string("fts/rpm traversal ") + string(f->fts_path));
-
- default:
- case FTS_SL: /* ignore symlinks; seen in non-L mode only */
- break;
+ scanq.push_back (make_pair(rps, *f->fts_statp));
+ inc_metric("traversed_total","type","file");
}
-
- if ((verbose && f->fts_info == FTS_DP) ||
- (verbose > 1 && f->fts_info == FTS_F))
- obatched(clog) << "fts/rpm traversing " << rps << ", scanned=" << fts_scanned
- << ", regex-skipped=" << fts_regex
- << ", rpm=" << fts_rpm << ", cached=" << fts_cached << ", debuginfo=" << fts_debuginfo
- << ", executable=" << fts_executable
- << ", sourcerefs=" << fts_sref << ", sourcedefs=" << fts_sdef << endl;
}
- catch (const reportable_exception& e)
+ break;
+
+ case FTS_ERR:
+ case FTS_NS:
+ // report on some types of errors because they may reflect fixable misconfiguration
{
- e.report(clog);
+ auto x = libc_exception(f->fts_errno, string("fts traversal ") + string(f->fts_path));
+ x.report(cerr);
}
- }
- fts_close (fts);
+ inc_metric("traversed_total","type","error");
+ break;
- gettimeofday (&tv_end, NULL);
- double deltas = (tv_end.tv_sec - tv_start.tv_sec) + (tv_end.tv_usec - tv_start.tv_usec)*0.000001;
+ case FTS_SL: // ignore, but count because debuginfod -L would traverse these
+ inc_metric("traversed_total","type","symlink");
+ break;
- obatched(clog) << "fts/rpm traversed " << dir << " in " << deltas << "s, scanned=" << fts_scanned
- << ", regex-skipped=" << fts_regex
- << ", rpm=" << fts_rpm << ", cached=" << fts_cached << ", debuginfo=" << fts_debuginfo
- << ", executable=" << fts_executable
- << ", sourcerefs=" << fts_sref << ", sourcedefs=" << fts_sdef << endl;
-}
+ case FTS_D: // ignore
+ inc_metric("traversed_total","type","directory");
+ break;
+ default: // ignore
+ inc_metric("traversed_total","type","other");
+ break;
+ }
+ }
+ clock_gettime (CLOCK_MONOTONIC, &ts_end);
+ double deltas = (ts_end.tv_sec - ts_start.tv_sec) + (ts_end.tv_nsec - ts_start.tv_nsec)/1.e9;
+
+ obatched(clog) << "fts traversed source paths in " << deltas << "s, scanned=" << fts_scanned
+ << ", regex-skipped=" << fts_regex << endl;
+}
static void*
-thread_main_scan_source_rpm_path (void* arg)
+thread_main_fts_source_paths (void* arg)
{
- string dir = string((const char*) arg);
+ (void) arg; // ignore; we operate on global data
+
+ set_metric("thread_tid", "role","traverse", tid());
+ add_metric("thread_count", "role", "traverse", 1);
+
+ time_t last_rescan = 0;
- unsigned rescan_timer = 0;
- sig_atomic_t forced_rescan_count = 0;
- set_metric("thread_timer_max", "rpm", dir, rescan_s);
- set_metric("thread_tid", "rpm", dir, tid());
while (! interrupted)
{
- set_metric("thread_timer", "rpm", dir, rescan_timer);
- set_metric("thread_forced_total", "rpm", dir, forced_rescan_count);
- if (rescan_s && rescan_timer > rescan_s)
- rescan_timer = 0;
+ sleep (1);
+ scanq.wait_idle(); // don't start a new traversal while scanners haven't finished the job
+ scanq.done_idle(); // release the hounds
+ if (interrupted) break;
+
+ time_t now = time(NULL);
+ bool rescan_now = false;
+ if (last_rescan == 0) // at least one initial rescan is documented even for -t0
+ rescan_now = true;
+ if (rescan_s > 0 && (long)now > (long)(last_rescan + rescan_s))
+ rescan_now = true;
if (sigusr1 != forced_rescan_count)
{
forced_rescan_count = sigusr1;
- rescan_timer = 0;
+ rescan_now = true;
+ }
+ if (rescan_now)
+ {
+ set_metric("thread_busy", "role","traverse", 1);
+ try
+ {
+ scan_source_paths();
+ }
+ catch (const reportable_exception& e)
+ {
+ e.report(cerr);
+ }
+ last_rescan = time(NULL); // NB: now was before scanning
+ // finished a traversal loop
+ inc_metric("thread_work_total", "role","traverse");
+ set_metric("thread_busy", "role","traverse", 0);
}
- if (rescan_timer == 0)
- try
- {
- set_metric("thread_working", "rpm", dir, time(NULL));
- inc_metric("thread_work_total", "rpm", dir);
- scan_source_rpm_path (dir);
- set_metric("thread_working", "rpm", dir, 0);
- }
- catch (const sqlite_exception& e)
- {
- obatched(cerr) << e.message << endl;
- }
- sleep (1);
- rescan_timer ++;
}
return 0;
}
+
////////////////////////////////////////////////////////////////////////
static void
@@ -2282,7 +3057,11 @@ database_stats_report()
obatched(clog) << "database record counts:" << endl;
while (1)
{
- int rc = sqlite3_step (ps_query);
+ if (interrupted) break;
+ if (sigusr1 != forced_rescan_count) // stop early if scan triggered
+ break;
+
+ int rc = ps_query.step();
if (rc == SQLITE_DONE) break;
if (rc != SQLITE_ROW)
throw sqlite_exception(rc, "step");
@@ -2305,8 +3084,10 @@ void groom()
{
obatched(clog) << "grooming database" << endl;
- struct timeval tv_start, tv_end;
- gettimeofday (&tv_start, NULL);
+ struct timespec ts_start, ts_end;
+ clock_gettime (CLOCK_MONOTONIC, &ts_start);
+
+ database_stats_report();
// scan for files that have disappeared
sqlite_ps files (db, "check old files", "select s.mtime, s.file, f.name from "
@@ -2319,6 +3100,8 @@ void groom()
files.reset();
while(1)
{
+ if (interrupted) break;
+
int rc = files.step();
if (rc != SQLITE_ROW)
break;
@@ -2335,7 +3118,13 @@ void groom()
files_del_f_de.reset().bind(1,fileid).bind(2,mtime).step_ok_done();
files_del_r_de.reset().bind(1,fileid).bind(2,mtime).step_ok_done();
files_del_scan.reset().bind(1,fileid).bind(2,mtime).step_ok_done();
+ inc_metric("groomed_total", "decision", "stale");
}
+ else
+ inc_metric("groomed_total", "decision", "fresh");
+
+ if (sigusr1 != forced_rescan_count) // stop early if scan triggered
+ break;
}
files.reset();
@@ -2347,6 +3136,8 @@ void groom()
"and not exists (select 1 from " BUILDIDS "_r_de d where " BUILDIDS "_buildids.id = d.buildid)");
buildids_del.reset().step_ok_done();
+ if (interrupted) return;
+
// NB: "vacuum" is too heavy for even daily runs: it rewrites the entire db, so is done as maxigroom -G
sqlite_ps g1 (db, "incremental vacuum", "pragma incremental_vacuum");
g1.reset().step_ok_done();
@@ -2357,10 +3148,16 @@ void groom()
database_stats_report();
+ (void) statfs_free_enough_p(db_path, "database"); // report sqlite filesystem size
+
sqlite3_db_release_memory(db); // shrink the process if possible
+ sqlite3_db_release_memory(dbq); // ... for both connections
+
+ fdcache.limit(0,0); // release the fdcache contents
+ fdcache.limit(fdcache_fds,fdcache_mbs); // restore status quo parameters
- gettimeofday (&tv_end, NULL);
- double deltas = (tv_end.tv_sec - tv_start.tv_sec) + (tv_end.tv_usec - tv_start.tv_usec)*0.000001;
+ clock_gettime (CLOCK_MONOTONIC, &ts_end);
+ double deltas = (ts_end.tv_sec - ts_start.tv_sec) + (ts_end.tv_nsec - ts_start.tv_nsec)/1.e9;
obatched(clog) << "groomed database in " << deltas << "s" << endl;
}
@@ -2369,35 +3166,46 @@ void groom()
static void*
thread_main_groom (void* /*arg*/)
{
- unsigned groom_timer = 0;
- sig_atomic_t forced_groom_count = 0;
- set_metric("thread_timer_max", "role", "groom", groom_s);
set_metric("thread_tid", "role", "groom", tid());
- while (! interrupted)
+ add_metric("thread_count", "role", "groom", 1);
+
+ time_t last_groom = 0;
+
+ while (1)
{
- set_metric("thread_timer", "role", "groom", groom_timer);
- set_metric("thread_forced_total", "role", "groom", forced_groom_count);
- if (groom_s && groom_timer > groom_s)
- groom_timer = 0;
+ sleep (1);
+ scanq.wait_idle(); // PR25394: block scanners during grooming!
+ if (interrupted) break;
+
+ time_t now = time(NULL);
+ bool groom_now = false;
+ if (last_groom == 0) // at least one initial groom is documented even for -g0
+ groom_now = true;
+ if (groom_s > 0 && (long)now > (long)(last_groom + groom_s))
+ groom_now = true;
if (sigusr2 != forced_groom_count)
{
forced_groom_count = sigusr2;
- groom_timer = 0;
+ groom_now = true;
}
- if (groom_timer == 0)
- try
- {
- set_metric("thread_working", "role", "groom", time(NULL));
- inc_metric("thread_work_total", "role", "groom");
- groom ();
- set_metric("thread_working", "role", "groom", 0);
- }
- catch (const sqlite_exception& e)
- {
- obatched(cerr) << e.message << endl;
- }
- sleep (1);
- groom_timer ++;
+ if (groom_now)
+ {
+ set_metric("thread_busy", "role", "groom", 1);
+ try
+ {
+ groom ();
+ }
+ catch (const sqlite_exception& e)
+ {
+ obatched(cerr) << e.message << endl;
+ }
+ last_groom = time(NULL); // NB: now was before grooming
+ // finished a grooming loop
+ inc_metric("thread_work_total", "role", "groom");
+ set_metric("thread_busy", "role", "groom", 0);
+ }
+
+ scanq.done_idle();
}
return 0;
@@ -2414,6 +3222,8 @@ signal_handler (int /* sig */)
if (db)
sqlite3_interrupt (db);
+ if (dbq)
+ sqlite3_interrupt (dbq);
// NB: don't do anything else in here
}
@@ -2473,6 +3283,8 @@ main (int argc, char *argv[])
/* Tell the library which version we are expecting. */
elf_version (EV_CURRENT);
+ tmpdir = string(getenv("TMPDIR") ?: "/tmp");
+
/* Set computed default values. */
db_path = string(getenv("HOME") ?: "/") + string("/.debuginfod.sqlite"); /* XDG? */
int rc = regcomp (& file_include_regex, ".*", REG_EXTENDED|REG_NOSUB); // match everything
@@ -2482,6 +3294,17 @@ main (int argc, char *argv[])
if (rc != 0)
error (EXIT_FAILURE, 0, "regcomp failure: %d", rc);
+ // default parameters for fdcache are computed from system stats
+ struct statfs sfs;
+ rc = statfs(tmpdir.c_str(), &sfs);
+ if (rc < 0)
+ fdcache_mbs = 1024; // 1 gigabyte
+ else
+ fdcache_mbs = sfs.f_bavail * sfs.f_bsize / 1024 / 1024 / 4; // 25% of free space
+ fdcache_mintmp = 25; // emergency flush at 25% remaining (75% full)
+ fdcache_prefetch = 64; // guesstimate storage is this much less costly than re-decompression
+ fdcache_fds = (concurrency + fdcache_prefetch) * 2;
+
/* Parse and process arguments. */
int remaining;
argp_program_version_hook = print_version; // this works
@@ -2490,8 +3313,10 @@ main (int argc, char *argv[])
error (EXIT_FAILURE, 0,
"unexpected argument: %s", argv[remaining]);
- if (!scan_rpms && !scan_files && source_paths.size()>0)
- obatched(clog) << "warning: without -F and/or -R, ignoring PATHs" << endl;
+ if (scan_archives.size()==0 && !scan_files && source_paths.size()>0)
+ obatched(clog) << "warning: without -F -R -U -Z, ignoring PATHs" << endl;
+
+ fdcache.limit(fdcache_fds, fdcache_mbs);
(void) signal (SIGPIPE, SIG_IGN); // microhttpd can generate it incidentally, ignore
(void) signal (SIGINT, signal_handler); // ^C
@@ -2500,11 +3325,10 @@ main (int argc, char *argv[])
(void) signal (SIGUSR1, sigusr1_handler); // end-user
(void) signal (SIGUSR2, sigusr2_handler); // end-user
- // do this before any threads start
- scan_concurrency_sem = new semaphore(concurrency);
-
/* Get database ready. */
rc = sqlite3_open_v2 (db_path.c_str(), &db, (SQLITE_OPEN_READWRITE
+ |SQLITE_OPEN_URI
+ |SQLITE_OPEN_PRIVATECACHE
|SQLITE_OPEN_CREATE
|SQLITE_OPEN_FULLMUTEX), /* thread-safe */
NULL);
@@ -2520,15 +3344,30 @@ main (int argc, char *argv[])
"cannot open %s, consider deleting database: %s", db_path.c_str(), sqlite3_errmsg(db));
}
+ // open the readonly query variant
+ // NB: PRIVATECACHE allows web queries to operate in parallel with
+ // much other grooming/scanning operation.
+ rc = sqlite3_open_v2 (db_path.c_str(), &dbq, (SQLITE_OPEN_READONLY
+ |SQLITE_OPEN_URI
+ |SQLITE_OPEN_PRIVATECACHE
+ |SQLITE_OPEN_FULLMUTEX), /* thread-safe */
+ NULL);
+ if (rc)
+ {
+ error (EXIT_FAILURE, 0,
+ "cannot open %s, consider deleting database: %s", db_path.c_str(), sqlite3_errmsg(dbq));
+ }
+
+
obatched(clog) << "opened database " << db_path << endl;
obatched(clog) << "sqlite version " << sqlite3_version << endl;
// add special string-prefix-similarity function used in rpm sref/sdef resolution
- rc = sqlite3_create_function(db, "sharedprefix", 2, SQLITE_UTF8, NULL,
+ rc = sqlite3_create_function(dbq, "sharedprefix", 2, SQLITE_UTF8, NULL,
& sqlite3_sharedprefix_fn, NULL, NULL);
if (rc != SQLITE_OK)
error (EXIT_FAILURE, 0,
- "cannot create sharedprefix( function: %s", sqlite3_errmsg(db));
+ "cannot create sharedprefix function: %s", sqlite3_errmsg(dbq));
if (verbose > 3)
obatched(clog) << "ddl: " << DEBUGINFOD_SQLITE_DDL << endl;
@@ -2568,7 +3407,9 @@ main (int argc, char *argv[])
if (d4 == NULL && d6 == NULL) // neither ipv4 nor ipv6? boo
{
sqlite3 *database = db;
- db = 0; // for signal_handler not to freak
+ sqlite3 *databaseq = dbq;
+ db = dbq = 0; // for signal_handler not to freak
+ sqlite3_close (databaseq);
sqlite3_close (database);
error (EXIT_FAILURE, 0, "cannot start http server at port %d", http_port);
}
@@ -2611,64 +3452,69 @@ main (int argc, char *argv[])
if (maxigroom)
obatched(clog) << "maxigroomed database" << endl;
-
obatched(clog) << "search concurrency " << concurrency << endl;
obatched(clog) << "rescan time " << rescan_s << endl;
+ obatched(clog) << "fdcache fds " << fdcache_fds << endl;
+ obatched(clog) << "fdcache mbs " << fdcache_mbs << endl;
+ obatched(clog) << "fdcache prefetch " << fdcache_prefetch << endl;
+ obatched(clog) << "fdcache tmpdir " << tmpdir << endl;
+ obatched(clog) << "fdcache tmpdir min% " << fdcache_mintmp << endl;
obatched(clog) << "groom time " << groom_s << endl;
+ if (scan_archives.size()>0)
+ {
+ obatched ob(clog);
+ auto& o = ob << "scanning archive types ";
+ for (auto&& arch : scan_archives)
+ o << arch.first << "(" << arch.second << ") ";
+ o << endl;
+ }
const char* du = getenv(DEBUGINFOD_URLS_ENV_VAR);
if (du && du[0] != '\0') // set to non-empty string?
obatched(clog) << "upstream debuginfod servers: " << du << endl;
- vector<pthread_t> source_file_scanner_threads;
- vector<pthread_t> source_rpm_scanner_threads;
- pthread_t groom_thread;
+ vector<pthread_t> all_threads;
- rc = pthread_create (& groom_thread, NULL, thread_main_groom, NULL);
- if (rc < 0)
- error (0, 0, "warning: cannot spawn thread (%d) to groom database\n", rc);
-
- if (scan_files) for (auto&& it : source_paths)
- {
- pthread_t pt;
- rc = pthread_create (& pt, NULL, thread_main_scan_source_file_path, (void*) it.c_str());
- if (rc < 0)
- error (0, 0, "warning: cannot spawn thread (%d) to scan source files %s\n", rc, it.c_str());
- else
- source_file_scanner_threads.push_back(pt);
- }
+ pthread_t pt;
+ rc = pthread_create (& pt, NULL, thread_main_groom, NULL);
+ if (rc)
+ error (EXIT_FAILURE, rc, "cannot spawn thread to groom database\n");
+ else
+ all_threads.push_back(pt);
- if (scan_rpms) for (auto&& it : source_paths)
+ if (scan_files || scan_archives.size() > 0)
{
- pthread_t pt;
- rc = pthread_create (& pt, NULL, thread_main_scan_source_rpm_path, (void*) it.c_str());
- if (rc < 0)
- error (0, 0, "warning: cannot spawn thread (%d) to scan source rpms %s\n", rc, it.c_str());
- else
- source_rpm_scanner_threads.push_back(pt);
+ rc = pthread_create (& pt, NULL, thread_main_fts_source_paths, NULL);
+ if (rc)
+ error (EXIT_FAILURE, rc, "cannot spawn thread to traverse source paths\n");
+ all_threads.push_back(pt);
+ for (unsigned i=0; i<concurrency; i++)
+ {
+ rc = pthread_create (& pt, NULL, thread_main_scanner, NULL);
+ if (rc)
+ error (EXIT_FAILURE, rc, "cannot spawn thread to scan source files / archives\n");
+ all_threads.push_back(pt);
+ }
}
/* Trivial main loop! */
set_metric("ready", 1);
while (! interrupted)
pause ();
+ scanq.nuke(); // wake up any remaining scanq-related threads, let them die
set_metric("ready", 0);
if (verbose)
obatched(clog) << "stopping" << endl;
- /* Join any source scanning threads. */
- for (auto&& it : source_file_scanner_threads)
+ /* Join all our threads. */
+ for (auto&& it : all_threads)
pthread_join (it, NULL);
- for (auto&& it : source_rpm_scanner_threads)
- pthread_join (it, NULL);
- pthread_join (groom_thread, NULL);
-
+
/* Stop all the web service threads. */
if (d4) MHD_stop_daemon (d4);
if (d6) MHD_stop_daemon (d6);
/* With all threads known dead, we can clean up the global resources. */
- delete scan_concurrency_sem;
rc = sqlite3_exec (db, DEBUGINFOD_SQLITE_CLEANUP_DDL, NULL, NULL, NULL);
if (rc != SQLITE_OK)
{
@@ -2681,7 +3527,9 @@ main (int argc, char *argv[])
(void) regfree (& file_exclude_regex);
sqlite3 *database = db;
- db = 0; // for signal_handler not to freak
+ sqlite3 *databaseq = dbq;
+ db = dbq = 0; // for signal_handler not to freak
+ (void) sqlite3_close (databaseq);
(void) sqlite3_close (database);
return 0;
diff --git a/debuginfod/debuginfod.h b/debuginfod/debuginfod.h.in
index 6b1b1cc3..559ea947 100644
--- a/debuginfod/debuginfod.h
+++ b/debuginfod/debuginfod.h.in
@@ -1,5 +1,5 @@
/* External declarations for the libdebuginfod client library.
- Copyright (C) 2019 Red Hat, Inc.
+ Copyright (C) 2019-2020 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -33,6 +33,11 @@
#define DEBUGINFOD_URLS_ENV_VAR "DEBUGINFOD_URLS"
#define DEBUGINFOD_CACHE_PATH_ENV_VAR "DEBUGINFOD_CACHE_PATH"
#define DEBUGINFOD_TIMEOUT_ENV_VAR "DEBUGINFOD_TIMEOUT"
+#define DEBUGINFOD_PROGRESS_ENV_VAR "DEBUGINFOD_PROGRESS"
+#define DEBUGINFOD_VERBOSE_ENV_VAR "DEBUGINFOD_VERBOSE"
+
+/* The libdebuginfod soname. */
+#define DEBUGINFOD_SONAME "@LIBDEBUGINFOD_SONAME@"
/* Handle for debuginfod-client connection. */
typedef struct debuginfod_client debuginfod_client;
@@ -47,13 +52,13 @@ debuginfod_client *debuginfod_begin (void);
/* Query the urls contained in $DEBUGINFOD_URLS for a file with
the specified type and build id. If build_id_len == 0, the
build_id is supplied as a lowercase hexadecimal string; otherwise
- it is a binary blob of given legnth.
+ it is a binary blob of given length.
If successful, return a file descriptor to the target, otherwise
return a posix error code. If successful, set *path to a
strdup'd copy of the name of the same file in the cache.
Caller must free() it later. */
-
+
int debuginfod_find_debuginfo (debuginfod_client *client,
const unsigned char *build_id,
int build_id_len,
@@ -74,6 +79,20 @@ typedef int (*debuginfod_progressfn_t)(debuginfod_client *c, long a, long b);
void debuginfod_set_progressfn(debuginfod_client *c,
debuginfod_progressfn_t fn);
+void debuginfod_set_verbose_fd(debuginfod_client *c, int fd);
+
+/* Set the user parameter. */
+void debuginfod_set_user_data (debuginfod_client *client, void *value);
+
+/* Get the user parameter. */
+void* debuginfod_get_user_data (debuginfod_client *client);
+
+/* Get the current or last active URL, if known. */
+const char* debuginfod_get_url (debuginfod_client *client);
+
+/* Add an outgoing HTTP request "Header: Value". Copies string. */
+int debuginfod_add_http_header (debuginfod_client *client, const char* header);
+
/* Release debuginfod client connection context handle. */
void debuginfod_end (debuginfod_client *client);
diff --git a/debuginfod/libdebuginfod.map b/debuginfod/libdebuginfod.map
index 0d26f93e..7d2f5882 100644
--- a/debuginfod/libdebuginfod.map
+++ b/debuginfod/libdebuginfod.map
@@ -8,3 +8,13 @@ ELFUTILS_0.178 {
debuginfod_find_source;
debuginfod_set_progressfn;
} ELFUTILS_0;
+ELFUTILS_0.179 {
+ global:
+ debuginfod_set_user_data;
+ debuginfod_get_user_data;
+ debuginfod_get_url;
+ debuginfod_add_http_header;
+} ELFUTILS_0.178;
+ELFUTILS_0.183 {
+ debuginfod_set_verbose_fd;
+} ELFUTILS_0.179;
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 00a61ac3..5cd4fe15 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,133 @@
+2021-02-04 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.8: Mention new --fdcache-mintmp option.
+
+2020-12-11 Dmitry V. Levin <ldv@altlinux.org>
+
+ * debuginfod.8: Fix spelling typos.
+ * debuginfod_find_debuginfo.3: Likewise.
+ * elfutils.sgml: Likewise.
+ * readelf.1: Likewise.
+
+2020-12-06 Dmitry V. Levin <ldv@altlinux.org>
+
+ * debuginfod_find_debuginfo.3: Document DEBUGINFOD_SONAME macro.
+
+2020-11-11 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod_find_debuginfo.3: Document debuginfod_set_verbose_fd
+ and DEBUGINFOD_VERBOSE.
+ * debuginfod_set_verbose_fd.3: New redirect to
+ debuginfod_find_debuginfo.3
+
+2020-10-29 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26775
+ * debuginfod.8: Document that SIGUSR1 interrupts the groom
+ cycle, and SIGUSR2 interrupts rescan.
+
+2020-10-25 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod_find_debuginfo.3 (ECONNREFUSED): Document that this
+ is also returned for a bad HTTPS server certificate.
+
+2020-10-07 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-find.1: Add missing .br for SYNOPSIS section.
+
+2020-06-19 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am: Guard all client manpages with LIBDEBUGINFOD.
+
+2020-03-29 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod_find_debuginfo.3 (HTTP HEADER): Document the expected
+ header format and purpose.
+
+2020-03-28 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.8: Document valid --port=NUM range, excludes 0.
+
+2020-03-27 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-find.1: Document /path/-based buildid passing.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod_add_http_header.3: New function, documented ...
+ * debuginfod_find_debuginfo.3: ... here.
+ * Makefile.am (notrans_dist_*_man3): Add it.
+
+2020-03-26 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.8 (-R): Note zstd compression complications
+ and workaround.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-find.1, debuginfod_find_debuginfo.3: Document
+ source path canonicalization.
+
+2020-03-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod_get_url.3: New function, documented ...
+ * debuginfod_find_debuginfo.3: ... here.
+ * Makefile.am (notrans_dist_*_man3): Add it.
+
+2020-03-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod_get_user.3, _set_user.3: New functions, documented ...
+ * debuginfod_find_debuginfo.3: ... here.
+ * Makefile.am (notrans_dist_*_man3): List all debuginfod .3 functions.
+
+2020-02-25 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.8: Note that -R works just like -Z.rpm .
+
+2020-02-25 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.8: Document new --fdcache-prefetch option.
+
+2020-02-05 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.8: Document new -Z flag and tweak other bits.
+
+2020-01-10 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod_find_debuginfo.3 (DEBUGINFOD_PROGRESS): Mention progress
+ output goes to stderr.
+
+2020-01-11 Frank Ch. Eigler <fche@redhat.com
+
+ * debuginfod.8: Document --fdcache-fds and --fdcache-mbs opts.
+
+2020-01-11 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.8: Rework sections dealing with traversal/scanning,
+ explaining new threading model.
+
+2020-01-02 Mark Wielaard <mark@klomp.org>
+
+ * debuginfod.8 (DEBUGINFOD_TIMEOUT): Document as seconds to
+ provide 100K, default 90.
+ * debuginfod-find.1 (DEBUGINFOD_TIMEOUT): Likewise.
+ * debuginfod_find_debuginfo.3 (DEBUGINFOD_TIMEOUT): Likewise.
+
+2019-12-22 Frank Ch. Eigler <fche@redhat.com
+
+ * debuginfod.8: Add -U (DEB) flag, generalize RPM to "archive".
+
+2019-12-04 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-find.1: Bump default timeout to 30.
+ * debuginfod_find_debuginfo.3: Ditto.
+ Document $DEBUGINFOD_PROGRESS.
+
+2019-11-26 Frank Ch. Eigler <fche@redhat.com>
+ Aaron Merey <amerey@redhat.com>
+
+ * debuginfod.8, find-debuginfo.1, debuginfod_*.3: New files.
+
2019-09-02 Mark Wielaard <mark@klomp.org>
* readelf.1 (symbols): Add optional section name.
diff --git a/doc/Makefile.am b/doc/Makefile.am
index b5db01ff..ef66fb88 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,7 +1,7 @@
## Process this file with automake to create Makefile.in
## Configure input file for elfutils.
##
-## Copyright (C) 1996-2001, 2002, 2005, 2019 Red Hat, Inc.
+## Copyright (C) 1996-2001, 2002, 2005, 2019-2020 Red Hat, Inc.
## This file is part of elfutils.
##
## This file is free software; you can redistribute it and/or modify
@@ -24,7 +24,18 @@ notrans_dist_man1_MANS=
if DEBUGINFOD
notrans_dist_man8_MANS += debuginfod.8
-notrans_dist_man3_MANS += debuginfod_find_debuginfo.3 debuginfod_find_source.3 debuginfod_find_executable.3 debuginfod_set_progressfn.3
-notrans_dist_man1_MANS += debuginfod-find.1
endif
+if LIBDEBUGINFOD
+notrans_dist_man3_MANS += debuginfod_add_http_header.3
+notrans_dist_man3_MANS += debuginfod_begin.3
+notrans_dist_man3_MANS += debuginfod_end.3
+notrans_dist_man3_MANS += debuginfod_find_debuginfo.3
+notrans_dist_man3_MANS += debuginfod_find_executable.3
+notrans_dist_man3_MANS += debuginfod_find_source.3
+notrans_dist_man3_MANS += debuginfod_get_user_data.3
+notrans_dist_man3_MANS += debuginfod_get_url.3
+notrans_dist_man3_MANS += debuginfod_set_progressfn.3
+notrans_dist_man3_MANS += debuginfod_set_user_data.3
+notrans_dist_man1_MANS += debuginfod-find.1
+endif
diff --git a/doc/debuginfod-find.1 b/doc/debuginfod-find.1
index a759ecba..12d4ec2d 100644
--- a/doc/debuginfod-find.1
+++ b/doc/debuginfod-find.1
@@ -19,10 +19,16 @@ debuginfod-find \- request debuginfo-related data
.SH SYNOPSIS
.B debuginfod-find [\fIOPTION\fP]... debuginfo \fIBUILDID\fP
-
+.br
+.B debuginfod-find [\fIOPTION\fP]... debuginfo \fIPATH\fP
+.br
.B debuginfod-find [\fIOPTION\fP]... executable \fIBUILDID\fP
-
+.br
+.B debuginfod-find [\fIOPTION\fP]... executable \fIPATH\fP
+.br
.B debuginfod-find [\fIOPTION\fP]... source \fIBUILDID\fP \fI/FILENAME\fP
+.br
+.B debuginfod-find [\fIOPTION\fP]... source \fIPATH\fP \fI/FILENAME\fP
.SH DESCRIPTION
\fBdebuginfod-find\fP queries one or more \fBdebuginfod\fP servers for
@@ -52,6 +58,14 @@ Then the hexadecimal BUILDID is simply:
8713b9c3fb8a720137a4a08b325905c7aaf8429d
.ESAMPLE
+In place of the hexadecimal \fIBUILDID\fP, debuginfod-find also
+accepts a path name to to an ELF binary, from which it extracts the
+buildid. In this case, ensure the file name has some character other
+than \fB[0-9a-f]\fP. Files ambiguously named files like
+"\fBdeadbeef\fP" can be passed with a \fB./deadbeef\fP extra path
+component.
+
+
.SS debuginfo \fIBUILDID\fP
If the given buildid is known to a server, this request will result
@@ -78,10 +92,11 @@ is made up of multiple CUs. Therefore, to disambiguate, debuginfod
expects source queries to prefix relative path names with the CU
compilation-directory, followed by a mandatory "/".
-Note: the user should not elide \fB../\fP or \fB/./\fP or extraneous
-\fB///\fP sorts of path components in the directory names, because if
-this is how those names appear in the DWARF files, that is what
-debuginfod needs to see too.
+Note: the caller may or may not elide \fB../\fP or \fB/./\fP or extraneous
+\fB///\fP sorts of path components in the directory names. debuginfod
+accepts both forms. Specifically, debuginfod canonicalizes path names
+according to RFC3986 section 5.2.4 (Remove Dot Segments), plus reducing
+any \fB//\fP to \fB/\fP in the path.
For example:
.TS
@@ -120,8 +135,9 @@ debuginfod instances. Alternate URL prefixes are separated by space.
.TP 21
.B DEBUGINFOD_TIMEOUT
This environment variable governs the timeout for each debuginfod HTTP
-connection. A server that fails to respond within this many seconds
-is skipped. The default is 5.
+connection. A server that fails to provide at least 100K of data
+within this many seconds is skipped. The default is 90 seconds. (Zero
+or negative means "no timeout".)
.TP 21
.B DEBUGINFOD_CACHE_PATH
diff --git a/doc/debuginfod.8 b/doc/debuginfod.8
index 210550e8..c33a4b6b 100644
--- a/doc/debuginfod.8
+++ b/doc/debuginfod.8
@@ -24,7 +24,7 @@ debuginfod \- debuginfo-related http file-server daemon
.SH DESCRIPTION
\fBdebuginfod\fP serves debuginfo-related artifacts over HTTP. It
periodically scans a set of directories for ELF/DWARF files and their
-associated source code, as well as RPM files containing the above, to
+associated source code, as well as archive files containing the above, to
build an index by their buildid. This index is used when remote
clients use the HTTP webapi, to fetch these files by the same buildid.
@@ -34,17 +34,23 @@ debuginfod servers, it queries them for the same information, just as
\fBdebuginfod-find\fP would. If successful, it locally caches then
relays the file content to the original requester.
-If the \fB\-F\fP option is given, each listed PATH creates a thread to
-scan for matching ELF/DWARF/source files under the given physical
-directory. Source files are matched with DWARF files based on the
-AT_comp_dir (compilation directory) attributes inside it. Duplicate
-directories are ignored. You may use a file name for a PATH, but
-source code indexing may be incomplete; prefer using a directory that
-contains the binaries. Caution: source files listed in the DWARF may
-be a path \fIanywhere\fP in the file system, and debuginfod will
-readily serve their content on demand. (Imagine a doctored DWARF file
-that lists \fI/etc/passwd\fP as a source file.) If this is a concern,
-audit your binaries with tools such as:
+Indexing the given PATHs proceeds using multiple threads. One thread
+periodically traverses all the given PATHs logically or physically
+(see the \fB\-L\fP option). Duplicate PATHs are ignored. You may use
+a file name for a PATH, but source code indexing may be incomplete;
+prefer using a directory that contains the binaries. The traversal
+thread enumerates all matching files (see the \fB\-I\fP and \fB\-X\fP
+options) into a work queue. A collection of scanner threads (see the
+\fB\-c\fP option) wait at the work queue to analyze files in parallel.
+
+If the \fB\-F\fP option is given, each file is scanned as an ELF/DWARF
+file. Source files are matched with DWARF files based on the
+AT_comp_dir (compilation directory) attributes inside it. Caution:
+source files listed in the DWARF may be a path \fIanywhere\fP in the
+file system, and debuginfod will readily serve their content on
+demand. (Imagine a doctored DWARF file that lists \fI/etc/passwd\fP
+as a source file.) If this is a concern, audit your binaries with
+tools such as:
.SAMPLE
% eu-readelf -wline BINARY | sed -n '/^Directory.table/,/^File.name.table/p'
@@ -55,33 +61,55 @@ or even use debuginfod itself:
^C
.ESAMPLE
-If the \fB\-R\fP option is given each listed PATH creates a thread to
-scan for ELF/DWARF/source files contained in matching RPMs under the
-given physical directory. Duplicate directories are ignored. You may
-use a file name for a PATH, but source code indexing may be
-incomplete; prefer using a directory that contains normal RPMs
-alongside debuginfo/debugsource RPMs. Because of complications such
-as DWZ-compressed debuginfo, may require \fItwo\fP scan passes to
-identify all source code. Source files for RPMs are only served
-from other RPMs, so the caution for \-F does not apply.
+If any of the \fB\-R\fP, \fB-U\fP, or \fB-Z\fP options is given, each
+file is scanned as an archive file that may contain ELF/DWARF/source
+files. Archive files are recognized by extension. If \-R is given,
+".rpm" files are scanned; if \-D is given, ".deb" and ".ddeb" files
+are scanned; if \-Z is given, the listed extensions are scanned.
+Because of complications such as DWZ-compressed debuginfo, may require
+\fItwo\fP traversal passes to identify all source code. Source files
+for RPMs are only served from other RPMs, so the caution for \-F does
+not apply. Note that due to Debian/Ubuntu packaging policies &
+mechanisms, debuginfod cannot resolve source files for DEB/DDEB at
+all.
-If no PATH is listed, or neither \-F nor \-R option is given, then
-\fBdebuginfod\fP will simply serve content that it scanned into its
-index in previous runs: the data is cumulative.
-
-File names must match extended regular expressions given by the \-I
-option and not the \-X option (if any) in order to be considered.
+If no PATH is listed, or none of the scanning options is given, then
+\fBdebuginfod\fP will simply serve content that it accumulated into
+its index in all previous runs, and federate to any upstream
+debuginfod servers.
.SH OPTIONS
.TP
.B "\-F"
-Activate ELF/DWARF file scanning threads. The default is off.
+Activate ELF/DWARF file scanning. The default is off.
+
+.TP
+.B "\-Z EXT" "\-Z EXT=CMD"
+Activate an additional pattern in archive scanning. Files with name
+extension EXT (include the dot) will be processed. If CMD is given,
+it is invoked with the file name added to its argument list, and
+should produce a common archive on its standard output. Otherwise,
+the file is read as if CMD were "cat". Since debuginfod internally
+uses \fBlibarchive\fP to read archive files, it can accept a wide
+range of archive formats and compression modes. The default is no
+additional patterns. This option may be repeated.
.TP
.B "\-R"
-Activate RPM file scanning threads. The default is off.
+Activate RPM patterns in archive scanning. The default is off.
+Equivalent to \fB\%\-Z\~.rpm=cat\fP, since libarchive can natively
+process RPM archives. If your version of libarchive is much older
+than 2020, be aware that some distributions have switched to an
+incompatible zstd compression for their payload. You may experiment
+with \fB\%\-Z\ .rpm='(rpm2cpio|zstdcat)<'\fP instead of \fB\-R\fP.
+
+.TP
+.B "\-U"
+Activate DEB/DDEB patterns in archive scanning. The default is off.
+Equivalent to \fB\%\-Z\ .deb='dpkg-deb\ \-\-fsys\-tarfile\fP'
+\fB\%\-Z\ .ddeb='dpkg-deb\ \-\-fsys\-tarfile'\fP.
.TP
.B "\-d FILE" "\-\-database=FILE"
@@ -89,9 +117,9 @@ Set the path of the sqlite database used to store the index. This
file is disposable in the sense that a later rescan will repopulate
data. It will contain absolute file path names, so it may not be
portable across machines. It may be frequently read/written, so it
-should be on a fast filesytem. It should not be shared across
+should be on a fast filesystem. It should not be shared across
machines or users, to maximize sqlite locking performance. The
-default database file is $HOME/.debuginfod.sqlite.
+default database file is \%$HOME/.debuginfod.sqlite.
.TP
.B "\-D SQL" "\-\-ddl=SQL"
@@ -102,9 +130,10 @@ repeated. The default is nothing extra.
.TP
.B "\-p NUM" "\-\-port=NUM"
-Set the TCP port number on which debuginfod should listen, to service
-HTTP requests. Both IPv4 and IPV6 sockets are opened, if possible.
-The webapi is documented below. The default port number is 8002.
+Set the TCP port number (0 < NUM < 65536) on which debuginfod should
+listen, to service HTTP requests. Both IPv4 and IPV6 sockets are
+opened, if possible. The webapi is documented below. The default
+port number is 8002.
.TP
.B "\-I REGEX" "\-\-include=REGEX" "\-X REGEX" "\-\-exclude=REGEX"
@@ -114,18 +143,20 @@ extended REs, thus may include alternation. They are evaluated
against the full path of each file, based on its \fBrealpath(3)\fP
canonicalization. By default, all files are included and none are
excluded. A file that matches both include and exclude REGEX is
-excluded. (The \fIcontents\fP of RPM files are not subject to
-inclusion or exclusion filtering: they are all processed.)
+excluded. (The \fIcontents\fP of archive files are not subject to
+inclusion or exclusion filtering: they are all processed.) Only the
+last of each type of regular expression given is used.
.TP
.B "\-t SECONDS" "\-\-rescan\-time=SECONDS"
-Set the rescan time for the file and RPM directories. This is the
-amount of time the scanning threads will wait after finishing a scan,
+Set the rescan time for the file and archive directories. This is the
+amount of time the traversal thread will wait after finishing a scan,
before doing it again. A rescan for unchanged files is fast (because
the index also stores the file mtimes). A time of zero is acceptable,
and means that only one initial scan should performed. The default
rescan time is 300 seconds. Receiving a SIGUSR1 signal triggers a new
-scan, independent of the rescan time (including if it was zero).
+scan, independent of the rescan time (including if it was zero),
+interrupting a groom pass (if any).
.TP
.B "\-g SECONDS" "\-\-groom\-time=SECONDS"
@@ -137,14 +168,15 @@ it can deindex obsolete files. See also the \fIDATA MANAGEMENT\fP
section. The default groom time is 86400 seconds (1 day). A time of
zero is acceptable, and means that only one initial groom should be
performed. Receiving a SIGUSR2 signal triggers a new grooming pass,
-independent of the groom time (including if it was zero).
+independent of the groom time (including if it was zero), interrupting
+a rescan pass (if any)..
.TP
.B "\-G"
Run an extraordinary maximal-grooming pass at debuginfod startup.
This pass can take considerable time, because it tries to remove any
-debuginfo-unrelated content from the RPM-related parts of the index.
-It should not be run if any recent RPM-related indexing operations
+debuginfo-unrelated content from the archive-related parts of the index.
+It should not be run if any recent archive-related indexing operations
were aborted early. It can take considerable space, because it
finishes up with an sqlite "vacuum" operation, which repacks the
database file by triplicating it temporarily. The default is not to
@@ -152,11 +184,11 @@ do maximal-grooming. See also the \fIDATA MANAGEMENT\fP section.
.TP
.B "\-c NUM" "\-\-concurrency=NUM"
-Set the concurrency limit for all the scanning threads. While many
-threads may be spawned to cover all the given PATHs, only NUM may
-concurrently do CPU-intensive operations like parsing an ELF file
-or an RPM. The default is the number of processors on the system;
-the minimum is 1.
+Set the concurrency limit for the scanning queue threads, which work
+together to process archives & files located by the traversal thread.
+This important for controlling CPU-intensive operations like parsing
+an ELF file and especially decompressing archives. The default is the
+number of processors on the system; the minimum is 1.
.TP
.B "\-L"
@@ -168,6 +200,30 @@ loops in the symbolic directory tree might lead to \fIinfinite
traversal\fP.
.TP
+.B "\-\-fdcache\-fds=NUM" "\-\-fdcache\-mbs=MB" "\-\-fdcache\-prefetch=NUM2"
+Configure limits on a cache that keeps recently extracted files from
+archives. Up to NUM requested files and up to a total of MB megabytes
+will be kept extracted, in order to avoid having to decompress their
+archives over and over again. In addition, up to NUM2 other files
+from an archive may be prefetched into the cache before they are even
+requested. The default NUM, NUM2, and MB values depend on the
+concurrency of the system, and on the available disk space on the
+$TMPDIR or \fB/tmp\fP filesystem. This is because that is where the
+most recently used extracted files are kept. Grooming cleans this
+cache.
+
+.TP
+.B "\-\-fdcache\-mintmp=NUM"
+Configure a disk space threshold for emergency flushing of the cache.
+The filesystem holding the cache is checked periodically. If the
+available space falls below the given percentage, the cache is
+flushed, and the fdcache will stay disabled until the next groom
+cycle. This mechanism, along a few associated /metrics on the webapi,
+are intended to give an operator notice about storage scarcity - which
+can translate to RAM scarcity if the disk happens to be on a RAM
+virtual disk. The default threshold is 25%.
+
+.TP
.B "\-v"
Increase verbosity of logging to the standard error file descriptor.
May be repeated to increase details. The default verbosity is 0.
@@ -226,10 +282,11 @@ is made up of multiple CUs. Therefore, to disambiguate, debuginfod
expects source queries to prefix relative path names with the CU
compilation-directory, followed by a mandatory "/".
-Note: contrary to RFC 3986, the client should not elide \fB../\fP or
-\fB/./\fP or extraneous \fB///\fP sorts of path components in the
-directory names, because if this is how those names appear in the
-DWARF files, that is what debuginfod needs to see too.
+Note: the caller may or may not elide \fB../\fP or \fB/./\fP or extraneous
+\fB///\fP sorts of path components in the directory names. debuginfod
+accepts both forms. Specifically, debuginfod canonicalizes path names
+according to RFC3986 section 5.2.4 (Remove Dot Segments), plus reducing
+any \fB//\fP to \fB/\fP in the path.
For example:
.TS
@@ -257,10 +314,10 @@ many files. This section offers some advice about the implications.
As a general explanation for size, consider that debuginfod indexes
ELF/DWARF files, it stores their names and referenced source file
-names, and buildids will be stored. When indexing RPMs, it stores
-every file name \fIof or in\fP an RPM, every buildid, plus every
-source file name referenced from a DWARF file. (Indexing RPMs takes
-more space because the source files often reside in separate
+names, and buildids will be stored. When indexing archives, it stores
+every file name \fIof or in\fP an archive, every buildid, plus every
+source file name referenced from a DWARF file. (Indexing archives
+takes more space because the source files often reside in separate
subpackages that may not be indexed at the same pass, so extra
metadata has to be kept.)
@@ -283,14 +340,14 @@ This means that the sqlite files grow fast during initial indexing,
slowly during index rescans, and periodically shrink during grooming.
There is also an optional one-shot \fImaximal grooming\fP pass is
available. It removes information debuginfo-unrelated data from the
-RPM content index such as file names found in RPMs ("rpm sdef"
-records) that are not referred to as source files from any binaries
-find in RPMs ("rpm sref" records). This can save considerable disk
-space. However, it is slow and temporarily requires up to twice the
-database size as free space. Worse: it may result in missing
-source-code info if the RPM traversals were interrupted, so the not
-all source file references were known. Use it rarely to polish a
-complete index.
+archive content index such as file names found in archives ("archive
+sdef" records) that are not referred to as source files from any
+binaries find in archives ("archive sref" records). This can save
+considerable disk space. However, it is slow and temporarily requires
+up to twice the database size as free space. Worse: it may result in
+missing source-code info if the archive traversals were interrupted,
+so that not all source file references were known. Use it rarely to
+polish a complete index.
You should ensure that ample disk space remains available. (The flood
of error messages on -ENOSPC is ugly and nagging. But, like for most
@@ -317,7 +374,7 @@ happens, new versions of debuginfod will issue SQL statements to
\fIdrop\fP all prior schema & data, and start over. So, disk space
will not be wasted for retaining a no-longer-useable dataset.
-In summary, if your system can bear a 0.5%-3% index-to-RPM-dataset
+In summary, if your system can bear a 0.5%-3% index-to-archive-dataset
size ratio, and slow growth afterwards, you should not need to
worry about disk space. If a system crash corrupts the database,
or you want to force debuginfod to reset and start over, simply
@@ -347,25 +404,34 @@ enabled.
.SH "ENVIRONMENT VARIABLES"
-.TP 21
+.TP
+.B TMPDIR
+This environment variable points to a file system to be used for
+temporary files. The default is /tmp.
+
+.TP
.B DEBUGINFOD_URLS
This environment variable contains a list of URL prefixes for trusted
debuginfod instances. Alternate URL prefixes are separated by space.
Avoid referential loops that cause a server to contact itself, directly
or indirectly - the results would be hilarious.
-.TP 21
+.TP
.B DEBUGINFOD_TIMEOUT
This environment variable governs the timeout for each debuginfod HTTP
-connection. A server that fails to respond within this many seconds
-is skipped. The default is 5.
+connection. A server that fails to provide at least 100K of data
+within this many seconds is skipped. The default is 90 seconds. (Zero
+or negative means "no timeout".)
+
-.TP 21
+.TP
.B DEBUGINFOD_CACHE_PATH
This environment variable governs the location of the cache where
downloaded files are kept. It is cleaned periodically as this
-program is reexecuted. The default is $HOME/.debuginfod_client_cache.
-.\" XXX describe cache eviction policy
+program is reexecuted. If XDG_CACHE_HOME is set then
+$XDG_CACHE_HOME/debuginfod_client is the default location, otherwise
+$HOME/.cache/debuginfod_client is used. For more information regarding
+the client cache see \fIdebuginfod_find_debuginfo(3)\fP.
.SH FILES
.LP
@@ -376,8 +442,10 @@ Default database file.
.PD
.TP 20
-.B $HOME/.debuginfod_client_cache
+.B $XDG_CACHE_HOME/debuginfod_client
Default cache directory for content from upstream debuginfods.
+If XDG_CACHE_HOME is not set then \fB$HOME/.cache/debuginfod_client\fP
+is used.
.PD
diff --git a/doc/debuginfod_add_http_header.3 b/doc/debuginfod_add_http_header.3
new file mode 100644
index 00000000..16279936
--- /dev/null
+++ b/doc/debuginfod_add_http_header.3
@@ -0,0 +1 @@
+.so man3/debuginfod_find_debuginfo.3
diff --git a/doc/debuginfod_find_debuginfo.3 b/doc/debuginfod_find_debuginfo.3
index be8eed09..cfddb542 100644
--- a/doc/debuginfod_find_debuginfo.3
+++ b/doc/debuginfod_find_debuginfo.3
@@ -21,9 +21,15 @@ debuginfod_find_debuginfo \- request debuginfo from debuginfod
.nf
.B #include <elfutils/debuginfod.h>
.PP
+Link with \fB-ldebuginfod\fP.
+
+CONNECTION HANDLE
+
.BI "debuginfod_client *debuginfod_begin(void);"
.BI "void debuginfod_end(debuginfod_client *" client ");"
+LOOKUP FUNCTIONS
+
.BI "int debuginfod_find_debuginfo(debuginfod_client *" client ","
.BI " const unsigned char *" build_id ","
.BI " int " build_id_len ","
@@ -38,12 +44,20 @@ debuginfod_find_debuginfo \- request debuginfo from debuginfod
.BI " const char *" filename ","
.BI " char ** " path ");"
-.BI "typedef int (*debuginfo_progressfn_t)(debuginfod_client *" client ","
-.BI " long a, long b);"
-.BI "void debuginfod_set_progressfn(debuginfod_client *" client ","
-.BI " debuginfo_progressfn_t " progressfn ");"
+OPTIONAL FUNCTIONS
-Link with \fB-ldebuginfod\fP.
+.BI "typedef int (*debuginfod_progressfn_t)(debuginfod_client *" client ","
+.BI " long a, long b);"
+.BI "void debuginfod_set_progressfn(debuginfod_client *" client ","
+.BI " debuginfod_progressfn_t " progressfn ");"
+.BI "void debuginfod_set_verbose_fd(debuginfod_client *" client ","
+.BI " int " fd ");"
+.BI "void debuginfod_set_user_data(debuginfod_client *" client ","
+.BI " void *" data ");"
+.BI "void* debuginfod_get_user_data(debuginfod_client *" client ");"
+.BI "const char* debuginfod_get_url(debuginfod_client *" client ");"
+.BI "int debuginfod_add_http_header(debuginfod_client *" client ","
+.BI " const char* " header ");"
.SH DESCRIPTION
@@ -68,7 +82,7 @@ be 0. Otherwise \fIbuild_id_len\fP should be the number of bytes in
the binary blob.
.BR debuginfod_find_source ()
-also requries a \fIfilename\fP in order to specify a particular
+also requires a \fIfilename\fP in order to specify a particular
source file. \fIfilename\fP should be an absolute path that includes
the compilation directory of the CU associated with the source file.
Relative path names commonly appear in the DWARF file's source directory,
@@ -77,10 +91,11 @@ paths, and yet an executable is made up of multiple CUs. Therefore, to
disambiguate, debuginfod expects source queries to prefix relative path
names with the CU compilation-directory, followed by a mandatory "/".
-Note: the caller should not elide \fB../\fP or \fB/./\fP or extraneous
-\fB///\fP sorts of path components in the directory names, because if
-this is how those names appear in the DWARF files, that is what
-debuginfod needs to see too.
+Note: the caller may or may not elide \fB../\fP or \fB/./\fP or extraneous
+\fB///\fP sorts of path components in the directory names. debuginfod
+accepts both forms. Specifically, debuginfod canonicalizes path names
+according to RFC3986 section 5.2.4 (Remove Dot Segments), plus reducing
+any \fB//\fP to \fB/\fP in the path.
If \fIpath\fP is not NULL and the query is successful, \fIpath\fP is set
to the path of the file in the cache. The caller must \fBfree\fP() this value.
@@ -102,7 +117,12 @@ to the client cache and a file descriptor to that file is returned.
The caller needs to \fBclose\fP() this descriptor. Otherwise, a
negative error code is returned.
-.SH "PROGRESS CALLBACK"
+.SH "OPTIONAL FUNCTIONS"
+
+A small number of optional functions are available to tune or query
+the operation of the debuginfod client.
+
+.SS "PROGRESS CALLBACK"
As the \fBdebuginfod_find_*\fP() functions may block for seconds or
longer, a progress callback function is called periodically, if
@@ -125,6 +145,56 @@ continue the work, or any other value to stop work as soon as
possible. Consequently, the \fBdebuginfod_find_*\fP() function will
likely return with an error, but might still succeed.
+.SS "VERBOSE OUTPUT"
+
+The \fBdebuginfod_find_*\fP() functions may use several techniques
+to retrieve the requested files, through the cache or through one
+or multiple servers or file URLs. To show how a query is handled the
+.BR debuginfod_set_verbose_fd ()
+can be used to set a particular file descriptor on which verbose
+output is given about the query steps and eventual errors encountered.
+
+.SS "USER DATA POINTER"
+
+A single \fIvoid *\fP pointer associated with the connection handle
+may be set any time via
+.BR \%debuginfod_set_user_data () ,
+and retrieved via
+.BR \%debuginfod_get_user_data () .
+The value is undefined if unset.
+
+.SS "URL"
+
+The URL of the current or most recent outgoing download, if known,
+may be retrieved via
+.BR \%debuginfod_get_url ()
+from the progressfn callback, or afterwards. It may be NULL.
+The resulting string is owned by the library, and must not be modified
+or freed. The caller should copy it if it is needed beyond the release
+of the client object.
+
+.SS "HTTP HEADER"
+
+Before a lookup function is initiated, a client application may
+add HTTP request headers to future downloads.
+.BR \%debuginfod_add_http_header ()
+may be called with strings of the form
+.BR \%"Header:\~value" .
+These strings are copied by the library. A zero return value
+indicates success, but out-of-memory conditions may result in
+a non-zero \fI-ENOMEM\fP. If the string is in the wrong form
+\fI-EINVAL\fP will be returned.
+
+Note that the current debuginfod-client library implementation uses
+libcurl, but you shouldn't rely on that fact. Don't use this function
+for replacing any standard headers, except for the User-Agent mentioned
+below. The only supported usage of this function is for adding an
+optional header which might or might not be passed through to the
+server for logging purposes only.
+
+By default, the library adds a descriptive \fIUser-Agent:\fP
+header to outgoing requests. If the client application adds
+a header with the same name, this default is suppressed.
.SH "CACHE"
If the query is successful, the \fBdebuginfod_find_*\fP() functions save
@@ -139,6 +209,21 @@ removed from the cache during cleaning. These files should contain only an
ASCII decimal integer representing the interval or max unused age in seconds.
The default is one day and one week, respectively. Values of zero mean "immediately".
+.SH "MACROS"
+
+.SS "DEBUGINFOD_SONAME"
+
+Defined to the string that could be passed to
+.BR dlopen (3)
+if the library is loaded at runtime, for example
+
+.PP
+.in +4n
+.EX
+void *debuginfod_so = dlopen(DEBUGINFOD_SONAME, RTLD_LAZY);
+.EE
+.in
+
.SH "SECURITY"
.BR debuginfod_find_debuginfo (),
.BR debuginfod_find_executable (),
@@ -164,14 +249,32 @@ debuginfod instances. Alternate URL prefixes are separated by space.
.TP 21
.B DEBUGINFOD_TIMEOUT
This environment variable governs the timeout for each debuginfod HTTP
-connection. A server that fails to respond within this many seconds
-is skipped. The default is 5.
+connection. A server that fails to provide at least 100K of data
+within this many seconds is skipped. The default is 90 seconds. (Zero
+or negative means "no timeout".)
+
+.TP 21
+.B DEBUGINFOD_PROGRESS
+This environment variable governs the default progress function. If
+set, and if a progressfn is not explicitly set, then the library will
+configure a default progressfn. This function will append a simple
+progress message periodically to stderr. The default is no progress
+function output.
+
+.TP 21
+.B DEBUGINFOD_VERBOSE
+This environment variable governs the default file descriptor for
+verbose output. If set, and if a verbose fd is not explicitly set,
+then the verbose output will be produced on STDERR_FILENO.
.TP 21
.B DEBUGINFOD_CACHE_PATH
This environment variable governs the location of the cache where
downloaded files are kept. It is cleaned periodically as this
-program is reexecuted. The default is $HOME/.debuginfod_client_cache.
+program is reexecuted. If XDG_CACHE_HOME is set then
+$XDG_CACHE_HOME/debuginfod_client is the default location, otherwise
+$HOME/.cache/debuginfod_client is used.
+
.SH "ERRORS"
The following list is not comprehensive. Error codes may also
@@ -183,11 +286,12 @@ Denied access to resource located at the URL.
.TP
.BR ECONNREFUSED
-Unable to connect to remote host.
+Unable to connect to remote host. Also returned when an HTTPS connection
+couldn't be verified (bad certificate).
.TP
.BR ECONNRESET
-Unable to either send or recieve network data.
+Unable to either send or receive network data.
.TP
.BR EHOSTUNREACH
@@ -235,7 +339,8 @@ the timeout duration. See debuginfod(8) for more information.
.PD .1v
.TP 20
.B $HOME/.debuginfod_client_cache
-Default cache directory.
+Default cache directory. If XDG_CACHE_HOME is not set then
+\fB$HOME/.cache/debuginfod_client\fP is used.
.PD
.SH "SEE ALSO"
diff --git a/doc/debuginfod_get_url.3 b/doc/debuginfod_get_url.3
new file mode 100644
index 00000000..16279936
--- /dev/null
+++ b/doc/debuginfod_get_url.3
@@ -0,0 +1 @@
+.so man3/debuginfod_find_debuginfo.3
diff --git a/doc/debuginfod_get_user_data.3 b/doc/debuginfod_get_user_data.3
new file mode 100644
index 00000000..16279936
--- /dev/null
+++ b/doc/debuginfod_get_user_data.3
@@ -0,0 +1 @@
+.so man3/debuginfod_find_debuginfo.3
diff --git a/doc/debuginfod_set_user_data.3 b/doc/debuginfod_set_user_data.3
new file mode 100644
index 00000000..16279936
--- /dev/null
+++ b/doc/debuginfod_set_user_data.3
@@ -0,0 +1 @@
+.so man3/debuginfod_find_debuginfo.3
diff --git a/doc/elfutils.sgml b/doc/elfutils.sgml
index d7fea40d..e8a483a2 100644
--- a/doc/elfutils.sgml
+++ b/doc/elfutils.sgml
@@ -429,7 +429,7 @@
<title><filename>libelf</filename> Internals</title>
<simpara>Since the binary format handling tools need constant
- attention since there are always new machines and varients
+ attention since there are always new machines and variants
therefore coming out it is important to have the implementation
well documented. Only this way extensions can be made in the
right places and the mistakes of the past avoided.</simpara>
diff --git a/doc/readelf.1 b/doc/readelf.1
index 33263819..6a843f66 100644
--- a/doc/readelf.1
+++ b/doc/readelf.1
@@ -261,10 +261,10 @@ of the symbol tables.
Displays the entries in symbol table section of the file, if it has one.
If a symbol has version information associated with it then this is
displayed as well. The version string is displayed as a suffix to the
-symbol name, preceeded by an @ character. For example
+symbol name, preceded by an @ character. For example
\&\fBfoo@VER_1\fR. If the version is the default version to be used
when resolving unversioned references to the symbol then it is
-displayed as a suffix preceeded by two @ characters. For example
+displayed as a suffix preceded by two @ characters. For example
\&\fBfoo@@VER_2\fR.
.IP "\fB\-\-dyn-syms\fR" 4
.IX Item "--dyn-syms"
diff --git a/lib/Android.bp b/lib/Android.bp
new file mode 100644
index 00000000..86ad65eb
--- /dev/null
+++ b/lib/Android.bp
@@ -0,0 +1,10 @@
+package {
+ default_applicable_licenses: ["external_elfutils_license"],
+}
+
+cc_library_host_static {
+ name: "libeu",
+ defaults: ["elfutils_defaults"],
+ srcs: ["*.c"],
+ exclude_srcs: ["dynamicsizehash*.c"],
+}
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 51c79841..371e2133 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,27 @@
+2021-02-05 Mark Wielaard <mark@klomp.org>
+
+ * printversion.c (print_version): Update copyright year.
+
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * color.c (parse_opt): Replace gettext(...) and
+ dgettext("elfutils, ...) with _(...).
+ * printversion.c (print_version): Replace gettext(...) with _(...).
+ * system.h (sgettext): Likewise.
+
+ * eu-config.h (_): New macro.
+ * xmalloc.c (_): Remove.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+
+ * system.h (ACCESSPERMS): Define macro if it doesn't exist.
+ (ALLPERMS): Likewise.
+ (DEFFILEMODE): Likewise.
+
+2020-06-11 Mark Wielaaard <mark@klomp.org>
+
+ * printversion.c (print_version): Update copyright year.
+
2019-08-25 Srđan Milaković <sm108@rice.edu>
* dynamicsizehash_concurrent.{c,h}: New files.
diff --git a/lib/color.c b/lib/color.c
index 2cb41eba..454cb7ca 100644
--- a/lib/color.c
+++ b/lib/color.c
@@ -126,7 +126,7 @@ parse_opt (int key, char *arg,
}
if (i == nvalues)
{
- error (0, 0, dgettext ("elfutils", "\
+ error (0, 0, _("\
%s: invalid argument '%s' for '--color'\n\
valid arguments are:\n\
- 'always', 'yes', 'force'\n\
@@ -191,7 +191,7 @@ valid arguments are:\n\
if (asprintf (known[i].varp, "\e[%.*sm",
(int) (env - val), val) < 0)
error (EXIT_FAILURE, errno,
- gettext ("cannot allocate memory"));
+ _("cannot allocate memory"));
break;
}
}
diff --git a/lib/eu-config.h b/lib/eu-config.h
index 84b22d7c..f0e3d07a 100644
--- a/lib/eu-config.h
+++ b/lib/eu-config.h
@@ -52,8 +52,9 @@
# define rwlock_unlock(lock) ((void) (lock))
#endif /* USE_LOCKS */
-/* gettext helper macro. */
+/* gettext helper macros. */
#define N_(Str) Str
+#define _(Str) dgettext ("elfutils", Str)
/* Compiler-specific definitions. */
#define strong_alias(name, aliasname) \
diff --git a/lib/printversion.c b/lib/printversion.c
index 17832f40..adf127d6 100644
--- a/lib/printversion.c
+++ b/lib/printversion.c
@@ -37,9 +37,9 @@ void
print_version (FILE *stream, struct argp_state *state)
{
fprintf (stream, "%s (%s) %s\n", state->name, PACKAGE_NAME, PACKAGE_VERSION);
- fprintf (stream, gettext ("\
+ fprintf (stream, _("\
Copyright (C) %s The elfutils developers <%s>.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2018", PACKAGE_URL);
+"), "2021", PACKAGE_URL);
}
diff --git a/lib/system.h b/lib/system.h
index 292082bd..1c478e1c 100644
--- a/lib/system.h
+++ b/lib/system.h
@@ -71,7 +71,7 @@
/* A special gettext function we use if the strings are too short. */
#define sgettext(Str) \
- ({ const char *__res = strrchr (gettext (Str), '|'); \
+ ({ const char *__res = strrchr (_(Str), '|'); \
__res ? __res + 1 : Str; })
#define gettext_noop(Str) Str
@@ -85,6 +85,18 @@
__res; })
#endif
+#ifndef ACCESSPERMS
+#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
+#endif
+
+#ifndef ALLPERMS
+#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */
+#endif
+
+#ifndef DEFFILEMODE
+#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666 */
+#endif
+
static inline ssize_t __attribute__ ((unused))
pwrite_retry (int fd, const void *buf, size_t len, off_t off)
{
diff --git a/lib/xmalloc.c b/lib/xmalloc.c
index 0424afc8..7c094985 100644
--- a/lib/xmalloc.c
+++ b/lib/xmalloc.c
@@ -36,10 +36,6 @@
#include <sys/types.h>
#include "system.h"
-#ifndef _
-# define _(str) gettext (str)
-#endif
-
/* Allocate N bytes of memory dynamically, with error checking. */
void *
diff --git a/libasm/ChangeLog b/libasm/ChangeLog
index a1abac88..98ac3315 100644
--- a/libasm/ChangeLog
+++ b/libasm/ChangeLog
@@ -1,3 +1,48 @@
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * libasmP.h (_): Remove.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * asm_begin.c (prepare_binary_output): Fix spelling typo in comment.
+ * asm_end.c (binary_end): Likewise.
+
+2020-12-11 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (GCC_INCLUDE): Remove.
+
+2020-12-09 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (noinst_PROGRAMS): Rename to noinst_DATA.
+ (libasm_so_SOURCES): Remove.
+ (CLEANFILES): Add libasm.so.
+
+2020-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (libasm.so$(EXEEXT)): Drop $(EXEEXT) suffix.
+
+2020-10-29 Mark Wielaard <mark@klomp.org>
+
+ * asm_align.c (__libasm_ensure_section_space): Use calloc, not
+ malloc to allocate extra space.
+
+2020-07-19 Mark Wielaard <mark@klomp.org>
+
+ * libasmP.h: Include libebl.h after libasm.h.
+
+2020-07-05 Mark Wielaard <mark@klomp.org>
+
+ * libasm.h: Include gelf.h.
+
+2020-04-25 Mark Wielaard <mark@klomp.org>
+
+ * asm_end.c (text_end): Call fflush instead of fclose.
+
+2020-01-08 Mark Wielaard <mark@klomp.org>
+
+ * libasm.h: Don't include libebl.h. Define an opaque Ebl handle.
+ * libasmP.h: Do include libebl.h.
+
2019-08-28 Mark Wielaard <mark@klomp.org>
* Makefile.am (libasm_so_DEPS): Replace libebl.a with libebl_pic.a.
diff --git a/libasm/Makefile.am b/libasm/Makefile.am
index b2bff929..c2b54811 100644
--- a/libasm/Makefile.am
+++ b/libasm/Makefile.am
@@ -30,12 +30,11 @@
include $(top_srcdir)/config/eu.am
AM_CPPFLAGS += -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl -I$(top_srcdir)/libdw -I$(top_srcdir)/libdwelf
-GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
VERSION = 1
lib_LIBRARIES = libasm.a
noinst_LIBRARIES = libasm_pic.a
-noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)
+noinst_DATA = $(noinst_LIBRARIES:_pic.a=.so)
pkginclude_HEADERS = libasm.h
libasm_a_SOURCES = asm_begin.c asm_abort.c asm_end.c asm_error.c \
@@ -62,8 +61,7 @@ libasm_so_LDLIBS += -lpthread
endif
libasm_so_LIBS = libasm_pic.a
-libasm_so_SOURCES =
-libasm.so$(EXEEXT): $(srcdir)/libasm.map $(libasm_so_LIBS) $(libasm_so_DEPS)
+libasm.so: $(srcdir)/libasm.map $(libasm_so_LIBS) $(libasm_so_DEPS)
$(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \
-Wl,--soname,$@.$(VERSION) \
-Wl,--version-script,$<,--no-undefined \
@@ -87,4 +85,4 @@ uninstall: uninstall-am
noinst_HEADERS = libasmP.h symbolhash.h
EXTRA_DIST = libasm.map
-CLEANFILES += $(am_libasm_pic_a_OBJECTS) libasm.so.$(VERSION)
+CLEANFILES += $(am_libasm_pic_a_OBJECTS) libasm.so libasm.so.$(VERSION)
diff --git a/libasm/asm_align.c b/libasm/asm_align.c
index e59a070e..c8c671b2 100644
--- a/libasm/asm_align.c
+++ b/libasm/asm_align.c
@@ -143,7 +143,7 @@ __libasm_ensure_section_space (AsmScn_t *asmscn, size_t len)
/* This is the first block. */
size = MAX (2 * len, 960);
- asmscn->content = (struct AsmData *) malloc (sizeof (struct AsmData)
+ asmscn->content = (struct AsmData *) calloc (1, sizeof (struct AsmData)
+ size);
if (asmscn->content == NULL)
return -1;
@@ -160,7 +160,7 @@ __libasm_ensure_section_space (AsmScn_t *asmscn, size_t len)
size = MAX (2 *len, MIN (32768, 2 * asmscn->offset));
- newp = (struct AsmData *) malloc (sizeof (struct AsmData) + size);
+ newp = (struct AsmData *) calloc (1, sizeof (struct AsmData) + size);
if (newp == NULL)
return -1;
diff --git a/libasm/asm_begin.c b/libasm/asm_begin.c
index 6248786c..1df2d4ea 100644
--- a/libasm/asm_begin.c
+++ b/libasm/asm_begin.c
@@ -98,7 +98,7 @@ prepare_binary_output (AsmCtx_t *result, Ebl *ebl)
/* Set the ELF version. */
ehdr->e_version = EV_CURRENT;
- /* Use the machine, class, and endianess values from the Ebl descriptor. */
+ /* Use the machine, class, and endianness values from the Ebl descriptor. */
ehdr->e_machine = ebl_get_elfmachine (ebl);
ehdr->e_ident[EI_CLASS] = class;
ehdr->e_ident[EI_DATA] = ebl_get_elfdata (ebl);
diff --git a/libasm/asm_end.c b/libasm/asm_end.c
index 99e95017..077d2aa5 100644
--- a/libasm/asm_end.c
+++ b/libasm/asm_end.c
@@ -47,7 +47,7 @@
static int
text_end (AsmCtx_t *ctx __attribute__ ((unused)))
{
- if (fclose (ctx->out.file) != 0)
+ if (fflush (ctx->out.file) != 0)
{
__libasm_seterrno (ASM_E_IOERROR);
return -1;
@@ -257,7 +257,7 @@ binary_end (AsmCtx_t *ctx)
xndxdata->d_off = 0;
}
- /* Store the real section index in the extended setion
+ /* Store the real section index in the extended section
index table. */
assert ((size_t) ptr < ctx->nsymbol_tab + 1);
xshndx[ptr] = ndx;
diff --git a/libasm/libasm.h b/libasm/libasm.h
index 5c612243..b67b77dc 100644
--- a/libasm/libasm.h
+++ b/libasm/libasm.h
@@ -31,8 +31,9 @@
#include <stdbool.h>
#include <stdint.h>
+#include <gelf.h>
-#include <libebl.h>
+typedef struct ebl Ebl;
/* Opaque type for the assembler context descriptor. */
diff --git a/libasm/libasmP.h b/libasm/libasmP.h
index 54460cf9..8b72f32b 100644
--- a/libasm/libasmP.h
+++ b/libasm/libasmP.h
@@ -32,12 +32,10 @@
#include <stdio.h>
#include <libasm.h>
+#include "libebl.h"
#include "libdwelf.h"
-/* gettext helper macros. */
-#define _(Str) dgettext ("elfutils", Str)
-
/* Known error codes. */
enum
diff --git a/libcpu/.gitignore b/libcpu/.gitignore
new file mode 100644
index 00000000..9390e5b9
--- /dev/null
+++ b/libcpu/.gitignore
@@ -0,0 +1,5 @@
+/*.mnemonics
+/*_dis.h
+/*_gendis
+/*_lex.c
+/*_parse.[ch]
diff --git a/libcpu/Android.bp b/libcpu/Android.bp
new file mode 100644
index 00000000..4b26cdf4
--- /dev/null
+++ b/libcpu/Android.bp
@@ -0,0 +1,78 @@
+package {
+ default_applicable_licenses: ["external_elfutils_license"],
+}
+
+genrule {
+ name: "i386_mnemonics",
+ srcs: [
+ "defs/i386",
+ ],
+ out: ["i386.mnemonics"],
+ cmd: "M4=$(location m4) $(location android_mnemonic_preprocess.sh) i386 $(in) $(out)",
+ tool_files: [
+ "android_mnemonic_preprocess.sh",
+ ],
+ tools : [
+ "m4",
+ ]
+}
+
+genrule {
+ name: "x86_64_mnemonics",
+ srcs : [
+ "defs/i386",
+ ],
+ out : ["x86_64.mnemonics"],
+ cmd : "M4=$(location m4) $(location android_mnemonic_preprocess.sh) x86_64 $(in) $(out)",
+ tool_files : [
+ "android_mnemonic_preprocess.sh",
+ ],
+ tools : [
+ "m4",
+ ]
+}
+
+cc_binary_host {
+ name: "i386_gendis",
+ defaults: ["elfutils_defaults"],
+ srcs: [
+ "i386_parse.y",
+ "i386_lex.l",
+ "i386_gendis.c",
+ ],
+ yacc: {
+ flags: ["-pi386_",]
+ },
+ lex: {
+ flags: ["-Pi386_",]
+ },
+ static_libs: [
+ "libeu",
+ ],
+}
+
+genrule {
+ name: "i386_dis",
+ srcs: [
+ "defs/i386",
+ ],
+ out: ["i386_dis.h"],
+ cmd: "$(location m4) -Di386 -DDISASSEMBLER $(in) > i386_defs && $(location i386_gendis) i386_defs > $(out)",
+ tools: [
+ "i386_gendis",
+ "m4",
+ ],
+}
+
+genrule {
+ name: "x86_64_dis",
+ srcs: [
+ "defs/i386",
+ ],
+ out: ["x86_64_dis.h"],
+ cmd: "$(location m4) -Dx86_64 -DDISASSEMBLER $(in) > x86_64_defs && $(location i386_gendis) x86_64_defs > $(out)",
+ tools: [
+ "i386_gendis",
+ "m4",
+ ],
+}
diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog
index 52567be8..7cca9419 100644
--- a/libcpu/ChangeLog
+++ b/libcpu/ChangeLog
@@ -1,3 +1,34 @@
+2020-12-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * .gitignore: New file.
+
+2020-12-16 Érico Nogueira <ericonr@disroot.org>
+
+ * Makefile.am (i386_gendis_LDADD): Add obstack_LIBS.
+
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * i386_lex.l (invalid_char): Replace gettext(...) with _(...).
+ * i386_parse.y (yyerror): Likewise.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * bpf_disasm.c (bswap_bpf_insn): Fix spelling typo in comment.
+ * i386_disasm.c (i386_disasm): Likewise.
+
+2020-05-09 Mark Wielaard <mark@klomp.org>
+
+ * i386_parse.y (new_bitfield): Call free newp on error.
+
+2020-04-16 Mark Wielaard <mark@klomp.org>
+
+ * i386_disasm.c (i386_disasm): Replace assert with goto invalid_op
+ for bad prefix.
+
+2019-12-11 Omar Sandoval <osandov@fb.com>
+
+ * Makefile.am (i386_lex_CFLAGS): Add -Wno-implicit-fallthrough.
+
2019-10-17 Mark Wielaard <mark@klomp.org>
* i386_data.h (FCT_sel): Check for param_start + 2 >= end instead
diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am
index 03c71ea3..43844ecf 100644
--- a/libcpu/Makefile.am
+++ b/libcpu/Makefile.am
@@ -81,11 +81,12 @@ i386_lex_no_Werror = yes
libeu = ../lib/libeu.a
-i386_lex_CFLAGS = -Wno-unused-label -Wno-unused-function -Wno-sign-compare
+i386_lex_CFLAGS = -Wno-unused-label -Wno-unused-function -Wno-sign-compare \
+ -Wno-implicit-fallthrough
i386_parse.o: i386_parse.c i386.mnemonics
i386_parse_CFLAGS = -DNMNES="`wc -l < i386.mnemonics`"
i386_lex.o: i386_parse.h
-i386_gendis_LDADD = $(libeu) -lm
+i386_gendis_LDADD = $(libeu) -lm $(obstack_LIBS)
i386_parse.h: i386_parse.c ;
diff --git a/libcpu/android_mnemonic_preprocess.sh b/libcpu/android_mnemonic_preprocess.sh
new file mode 100755
index 00000000..2b052495
--- /dev/null
+++ b/libcpu/android_mnemonic_preprocess.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+arch="$1"
+defs="$2"
+out="$3"
+
+$M4 "-D${arch}" -DDISASSEMBLER "$defs" \
+ | sed "1,/^%%/d;/^#/d;/^[[:space:]]*$/d;s/[^:]*:\([^[:space:]]*\).*/MNE(\\1)/;s/{[^}]*}//g;/INVALID/d" \
+ | sort -u \
+> "$out"
diff --git a/libcpu/bpf_disasm.c b/libcpu/bpf_disasm.c
index 3d92d014..62643c81 100644
--- a/libcpu/bpf_disasm.c
+++ b/libcpu/bpf_disasm.c
@@ -74,7 +74,7 @@ static void
bswap_bpf_insn (struct bpf_insn *p)
{
/* Note that the dst_reg and src_reg fields are 4-bit bitfields.
- That means these two nibbles are (typically) layed out in the
+ That means these two nibbles are (typically) laid out in the
opposite order between big- and little-endian hosts. This is
not required by any standard, but does happen to be true for
at least ppc, s390, arm and mips as big-endian hosts. */
diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
index 4422ffa2..fd7340cc 100644
--- a/libcpu/i386_disasm.c
+++ b/libcpu/i386_disasm.c
@@ -407,7 +407,8 @@ i386_disasm (Ebl *ebl __attribute__((unused)),
++curr;
- assert (last_prefix_bit != 0);
+ if (last_prefix_bit == 0)
+ goto invalid_op;
correct_prefix = last_prefix_bit;
}
@@ -445,8 +446,8 @@ i386_disasm (Ebl *ebl __attribute__((unused)),
the input data. */
goto do_ret;
- assert (correct_prefix == 0
- || (prefixes & correct_prefix) != 0);
+ if (correct_prefix != 0 && (prefixes & correct_prefix) == 0)
+ goto invalid_op;
prefixes ^= correct_prefix;
if (0)
@@ -473,7 +474,8 @@ i386_disasm (Ebl *ebl __attribute__((unused)),
if (data == end)
{
- assert (prefixes != 0);
+ if (prefixes == 0)
+ goto invalid_op;
goto print_prefix;
}
@@ -586,7 +588,7 @@ i386_disasm (Ebl *ebl __attribute__((unused)),
}
/* We have a match. First determine how many bytes are
- needed for the adressing mode. */
+ needed for the addressing mode. */
param_start = codep;
if (instrtab[cnt].modrm)
{
@@ -1125,6 +1127,7 @@ i386_disasm (Ebl *ebl __attribute__((unused)),
}
/* Invalid (or at least unhandled) opcode. */
+ invalid_op:
if (prefixes != 0)
goto print_prefix;
/* Make sure we get past the unrecognized opcode if we haven't yet. */
diff --git a/libcpu/i386_lex.l b/libcpu/i386_lex.l
index a4705aa9..b6ec0f87 100644
--- a/libcpu/i386_lex.l
+++ b/libcpu/i386_lex.l
@@ -119,8 +119,8 @@ static void
invalid_char (int ch)
{
error (0, 0, (isascii (ch)
- ? gettext ("invalid character '%c' at line %d; ignored")
- : gettext ("invalid character '\\%o' at line %d; ignored")),
+ ? _("invalid character '%c' at line %d; ignored")
+ : _("invalid character '\\%o' at line %d; ignored")),
ch, yylineno);
}
diff --git a/libcpu/i386_parse.y b/libcpu/i386_parse.y
index 910d5458..9a92c2e0 100644
--- a/libcpu/i386_parse.y
+++ b/libcpu/i386_parse.y
@@ -551,8 +551,8 @@ argcomp: kBITFIELD
static void
yyerror (const char *s)
{
- error (0, 0, gettext ("while reading i386 CPU description: %s at line %d"),
- gettext (s), i386_lineno);
+ error (0, 0, _("while reading i386 CPU description: %s at line %d"),
+ _(s), i386_lineno);
}
@@ -579,6 +579,7 @@ new_bitfield (char *name, unsigned long int num)
error (0, 0, "%d: duplicated definition of bitfield '%s'",
i386_lineno, name);
free (name);
+ free (newp);
return;
}
diff --git a/libdw/.gitignore b/libdw/.gitignore
new file mode 100644
index 00000000..d5fe053f
--- /dev/null
+++ b/libdw/.gitignore
@@ -0,0 +1 @@
+/known-dwarf.h
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 59f33f9e..b8038f00 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,111 @@
+2020-12-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * .gitignore: New file.
+
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * libdwP.h (_): Remove.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * dwarf.h: Fix spelling typo in comment.
+ * dwarf_begin_elf.c (dwarf_begin_elf): Likewise.
+ * dwarf_getlocation.c (attr_ok, __libdw_intern_expression): Likewise.
+ * dwarf_getsrclines.c (read_srclines): Likewise.
+ * libdw.h: Fix spelling typos in comments.
+ * libdwP.h: Likewise.
+
+2020-12-09 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (noinst_PROGRAMS): Rename to noinst_DATA.
+ (libdw_so_SOURCES): Remove.
+ (MOSTLYCLEANFILES): Add libdw.so.
+
+2020-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (libdw.so$(EXEEXT)): Drop $(EXEEXT) suffix.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+
+ * Makefile.am (libdw_so_LDLIBS): Add fts_LIBS.
+
+2020-10-28 Tom Tromey <tom@tromey.com>
+
+ PR26773
+ * dwarf_getlocation.c (store_implicit_value): Use
+ __libdw_get_uleb128_unchecked.
+ * memory-access.h (get_sleb128_step): Assume unsigned type for
+ 'var'.
+ (__libdw_get_sleb128, __libdw_get_sleb128_unchecked): Work in
+ unsigned type. Handle final byte.
+
+2020-10-19 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_frame_register.c (dwarf_frame_register): Declare ops_mem
+ as array of (at least) 3 elements.
+ * libdw.h (dwarf_frame_register): Add extra explanation of ops_mem
+ argument.
+
+2020-10-23 Tom Tromey <tom@tromey.com>
+
+ * memory-access.h (read_3ubyte_unaligned_inc): Call
+ read_3ubyte_unaligned.
+
+2020-09-03 Mark Wielaard <mark@klomp.org>
+
+ * dwarf.h: Add DW_CFA_AARCH64_negate_ra_state.
+ * cfi.h (struct Dwarf_CFI_s): Add e_machine field.
+ * cfi.c (execute_cfi): Recognize, but ignore
+ DW_CFA_AARCH64_negate_ra_state on aarch64.
+ * dwarf_getcfi.c (dwarf_getcfi): Set cfi e_machine.
+ * dwarf_getcfi_elf.c (allocate_cfi): Take ehdr as argument and set
+ cfi e_machine.
+ (getcfi_gnu_eh_frame): Pass ehdr to allocate_cfi.
+ (getcfi_scn_eh_frame): Likewise.
+
+2020-09-03 Mark Wielaard <mark@klomp.org>
+
+ * libdw.map (ELFUTILS_0.126): Remove local wildcard.
+ (ELFUTILS_0.127): Likewise.
+ (ELFUTILS_0.130): Likewise.
+ (ELFUTILS_0.136): Likewise.
+ (ELFUTILS_0.138): Likewise.
+
+2020-08-25 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_getlocation.c (check_constant_offset): Rename to...
+ (is_constant_offset): .. this.
+
+2020-06-28 Mark Wielaard <mark@klomp.org>
+
+ * linux-kernel-modules.c (intuit_kernel_bounds): Check read_address
+ returns an increasing address when searching for end.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * cfi.c (execute_cfi): Add missing FALLTHROUGH.
+
+2020-05-08 Mark Wielaard <mark@klomp.org>
+
+ * libdw_visit_scopes.c (walk_children): Don't recurse into imported
+ DW_TAG_compile_units.
+
+2020-05-08 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_decl_file.c (dwarf_decl_file): Use attr CU instead of DIE
+ CU to resolve file name.
+ * dwarf_ranges.c(dwarf_ranges): Document which CU we use when.
+ * libdw.h (dwarf_attr_integrate): Extend documentation.
+
+2020-04-25 Mark Wielaard <mark@klomp.org>
+
+ * libdw_alloc.c (__libdw_alloc_tail): Call Dwarf oom_handler()
+ when malloc fails.
+
+2020-04-17 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_begin_elf.c (check_section): Handle .gnu.debuglto_ prefix.
+
2019-10-28 Aaron Merey <amerey@redhat.com>
* Makefile.am (libdw_so_LDLIBS): Add -ldl for libdebuginfod.so dlopen.
@@ -89,7 +197,7 @@
2019-02-02 Mark Wielaard <mark@klomp.org>
* dwarf_nextcu.c (__libdw_next_unit): Define bytes_end.
- Check there are enough bytes to read extended lenght, version
+ Check there are enough bytes to read extended length, version
and unit.
2019-01-20 Mark Wielaard <mark@klomp.org>
diff --git a/libdw/Makefile.am b/libdw/Makefile.am
index 33b5838d..6b7834af 100644
--- a/libdw/Makefile.am
+++ b/libdw/Makefile.am
@@ -36,7 +36,7 @@ VERSION = 1
lib_LIBRARIES = libdw.a
noinst_LIBRARIES = libdw_pic.a
-noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)
+noinst_DATA = $(noinst_LIBRARIES:_pic.a=.so)
include_HEADERS = dwarf.h
pkginclude_HEADERS = libdw.h known-dwarf.h
@@ -109,9 +109,8 @@ libdw_so_LIBS = ../libebl/libebl_pic.a ../backends/libebl_backends_pic.a \
../libcpu/libcpu_pic.a libdw_pic.a ../libdwelf/libdwelf_pic.a \
../libdwfl/libdwfl_pic.a
libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so
-libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) -pthread
-libdw_so_SOURCES =
-libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
+libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LIBS) $(obstack_LIBS) $(zip_LIBS) -pthread
+libdw.so: $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
$(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \
-Wl,--soname,$@.$(VERSION),--enable-new-dtags \
-Wl,--version-script,$<,--no-undefined \
@@ -152,4 +151,4 @@ noinst_HEADERS = libdwP.h memory-access.h dwarf_abbrev_hash.h \
EXTRA_DIST = libdw.map
-MOSTLYCLEANFILES = $(am_libdw_pic_a_OBJECTS) libdw.so.$(VERSION)
+MOSTLYCLEANFILES = $(am_libdw_pic_a_OBJECTS) libdw.so libdw.so.$(VERSION)
diff --git a/libdw/cfi.c b/libdw/cfi.c
index 341e055b..a73fb03f 100644
--- a/libdw/cfi.c
+++ b/libdw/cfi.c
@@ -229,6 +229,7 @@ execute_cfi (Dwarf_CFI *cache,
case DW_CFA_offset_extended:
get_uleb128 (operand, program, end);
cfi_assert (program < end);
+ FALLTHROUGH;
case DW_CFA_offset + 0 ... DW_CFA_offset + CFI_PRIMARY_MAX:
get_uleb128 (offset, program, end);
offset *= cie->data_alignment_factor;
@@ -349,24 +350,35 @@ execute_cfi (Dwarf_CFI *cache,
case DW_CFA_nop:
continue;
- case DW_CFA_GNU_window_save:
- /* This is magic shorthand used only by SPARC. It's equivalent
- to a bunch of DW_CFA_register and DW_CFA_offset operations. */
- if (unlikely (! enough_registers (31, &fs, &result)))
- goto out;
- for (regno = 8; regno < 16; ++regno)
+ case DW_CFA_GNU_window_save: /* DW_CFA_AARCH64_negate_ra_state */
+ if (cache->e_machine == EM_AARCH64)
{
- /* Find each %oN in %iN. */
- fs->regs[regno].rule = reg_register;
- fs->regs[regno].value = regno + 16;
+ /* Toggles the return address state, indicating whether
+ the return address is encrypted or not on
+ aarch64. XXX not handled yet. */
}
- unsigned int address_size = (cache->e_ident[EI_CLASS] == ELFCLASS32
- ? 4 : 8);
- for (; regno < 32; ++regno)
+ else
{
- /* Find %l0..%l7 and %i0..%i7 in a block at the CFA. */
- fs->regs[regno].rule = reg_offset;
- fs->regs[regno].value = (regno - 16) * address_size;
+ /* This is magic shorthand used only by SPARC. It's
+ equivalent to a bunch of DW_CFA_register and
+ DW_CFA_offset operations. */
+ if (unlikely (! enough_registers (31, &fs, &result)))
+ goto out;
+ for (regno = 8; regno < 16; ++regno)
+ {
+ /* Find each %oN in %iN. */
+ fs->regs[regno].rule = reg_register;
+ fs->regs[regno].value = regno + 16;
+ }
+ unsigned int address_size;
+ address_size = (cache->e_ident[EI_CLASS] == ELFCLASS32
+ ? 4 : 8);
+ for (; regno < 32; ++regno)
+ {
+ /* Find %l0..%l7 and %i0..%i7 in a block at the CFA. */
+ fs->regs[regno].rule = reg_offset;
+ fs->regs[regno].value = (regno - 16) * address_size;
+ }
}
continue;
diff --git a/libdw/cfi.h b/libdw/cfi.h
index 1ebf2dc3..1b0d712f 100644
--- a/libdw/cfi.h
+++ b/libdw/cfi.h
@@ -108,6 +108,8 @@ struct Dwarf_CFI_s
size_t search_table_entries;
uint8_t search_table_encoding;
+ uint16_t e_machine;
+
/* True if the file has a byte order different from the host. */
bool other_byte_order;
diff --git a/libdw/dwarf.h b/libdw/dwarf.h
index 71ca2baa..19a4be96 100644
--- a/libdw/dwarf.h
+++ b/libdw/dwarf.h
@@ -966,6 +966,7 @@ enum
DW_CFA_low_user = 0x1c,
DW_CFA_MIPS_advance_loc8 = 0x1d,
DW_CFA_GNU_window_save = 0x2d,
+ DW_CFA_AARCH64_negate_ra_state = 0x2d,
DW_CFA_GNU_args_size = 0x2e,
DW_CFA_GNU_negative_offset_extended = 0x2f,
DW_CFA_high_user = 0x3f
@@ -1013,7 +1014,7 @@ enum
/* Section 7.2.2 of the DWARF3 specification defines a range of escape
codes that can appear in the length field of certain DWARF structures.
- These defines enumerate the minium and maximum values of this range.
+ These defines enumerate the minimum and maximum values of this range.
Currently only the maximum value is used (to indicate that 64-bit
values are going to be used in the dwarf data that accompanies the
structure). The other values are reserved.
diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
index 85343088..757ac4fa 100644
--- a/libdw/dwarf_begin_elf.c
+++ b/libdw/dwarf_begin_elf.c
@@ -137,6 +137,10 @@ check_section (Dwarf *result, size_t shstrndx, Elf_Scn *scn, bool inscngrp)
gnu_compressed = true;
break;
}
+ else if (scnlen > 14 /* .gnu.debuglto_ prefix. */
+ && strncmp (scnname, ".gnu.debuglto_", 14) == 0
+ && strcmp (&scnname[14], dwarf_scnnames[cnt]) == 0)
+ break;
}
if (cnt >= ndwarf_scnnames)
@@ -453,7 +457,7 @@ dwarf_begin_elf (Elf *elf, Dwarf_Cmd cmd, Elf_Scn *scngrp)
}
/* If the caller provides a section group we get the DWARF
- sections only from this setion group. Otherwise we search
+ sections only from this section group. Otherwise we search
for the first section with the required name. Further
sections with the name are ignored. The DWARF specification
does not really say this is allowed. */
diff --git a/libdw/dwarf_decl_file.c b/libdw/dwarf_decl_file.c
index 5657132f..d4aa0a18 100644
--- a/libdw/dwarf_decl_file.c
+++ b/libdw/dwarf_decl_file.c
@@ -55,7 +55,7 @@ dwarf_decl_file (Dwarf_Die *die)
}
/* Get the array of source files for the CU. */
- struct Dwarf_CU *cu = die->cu;
+ struct Dwarf_CU *cu = attr_mem.cu;
if (cu->lines == NULL)
{
Dwarf_Lines *lines;
diff --git a/libdw/dwarf_frame_register.c b/libdw/dwarf_frame_register.c
index d0159fb8..bcf3fa03 100644
--- a/libdw/dwarf_frame_register.c
+++ b/libdw/dwarf_frame_register.c
@@ -34,7 +34,7 @@
#include <dwarf.h>
int
-dwarf_frame_register (Dwarf_Frame *fs, int regno, Dwarf_Op *ops_mem,
+dwarf_frame_register (Dwarf_Frame *fs, int regno, Dwarf_Op ops_mem[3],
Dwarf_Op **ops, size_t *nops)
{
/* Maybe there was a previous error. */
diff --git a/libdw/dwarf_getcfi.c b/libdw/dwarf_getcfi.c
index 51932cd9..afa8a460 100644
--- a/libdw/dwarf_getcfi.c
+++ b/libdw/dwarf_getcfi.c
@@ -57,6 +57,11 @@ dwarf_getcfi (Dwarf *dbg)
cfi->datarel = 0;
cfi->e_ident = (unsigned char *) elf_getident (dbg->elf, NULL);
+
+ GElf_Ehdr ehdr;
+ gelf_getehdr (dbg->elf, &ehdr);
+ cfi->e_machine = ehdr.e_machine;
+
cfi->other_byte_order = dbg->other_byte_order;
cfi->default_same_value = false;
diff --git a/libdw/dwarf_getcfi_elf.c b/libdw/dwarf_getcfi_elf.c
index adcaea03..c0e3cadd 100644
--- a/libdw/dwarf_getcfi_elf.c
+++ b/libdw/dwarf_getcfi_elf.c
@@ -41,7 +41,7 @@
static Dwarf_CFI *
-allocate_cfi (Elf *elf, GElf_Addr vaddr)
+allocate_cfi (Elf *elf, const GElf_Ehdr *ehdr, GElf_Addr vaddr)
{
Dwarf_CFI *cfi = calloc (1, sizeof *cfi);
if (cfi == NULL)
@@ -58,6 +58,8 @@ allocate_cfi (Elf *elf, GElf_Addr vaddr)
return NULL;
}
+ cfi->e_machine = ehdr->e_machine;
+
if ((BYTE_ORDER == LITTLE_ENDIAN && cfi->e_ident[EI_DATA] == ELFDATA2MSB)
|| (BYTE_ORDER == BIG_ENDIAN && cfi->e_ident[EI_DATA] == ELFDATA2LSB))
cfi->other_byte_order = true;
@@ -172,7 +174,7 @@ getcfi_gnu_eh_frame (Elf *elf, const GElf_Ehdr *ehdr, const GElf_Phdr *phdr)
__libdw_seterrno (DWARF_E_INVALID_ELF); /* XXX might be read error */
return NULL;
}
- Dwarf_CFI *cfi = allocate_cfi (elf, eh_frame_ptr);
+ Dwarf_CFI *cfi = allocate_cfi (elf, ehdr, eh_frame_ptr);
if (cfi != NULL)
{
cfi->data = (Elf_Data_Scn *) data;
@@ -222,7 +224,7 @@ getcfi_scn_eh_frame (Elf *elf, const GElf_Ehdr *ehdr,
__libdw_seterrno (DWARF_E_INVALID_ELF);
return NULL;
}
- Dwarf_CFI *cfi = allocate_cfi (elf, shdr->sh_addr);
+ Dwarf_CFI *cfi = allocate_cfi (elf, ehdr, shdr->sh_addr);
if (cfi != NULL)
{
cfi->data = (Elf_Data_Scn *) data;
diff --git a/libdw/dwarf_getlocation.c b/libdw/dwarf_getlocation.c
index 6fb3ff3d..4e582db2 100644
--- a/libdw/dwarf_getlocation.c
+++ b/libdw/dwarf_getlocation.c
@@ -50,7 +50,7 @@ attr_ok (Dwarf_Attribute *attr)
/* Otherwise must be one of the attributes listed below. Older
DWARF versions might have encoded the exprloc as block, and we
- cannot easily distinquish attributes in the loclist class because
+ cannot easily distinguish attributes in the loclist class because
the same forms are used for different classes. */
switch (attr->code)
{
@@ -130,9 +130,8 @@ store_implicit_value (Dwarf *dbg, void **cache, Dwarf_Op *op)
struct loc_block_s *block = libdw_alloc (dbg, struct loc_block_s,
sizeof (struct loc_block_s), 1);
const unsigned char *data = (const unsigned char *) (uintptr_t) op->number2;
- uint64_t len = __libdw_get_uleb128 (&data, data + len_leb128 (Dwarf_Word));
- if (unlikely (len != op->number))
- return -1;
+ /* Skip the block length. */
+ __libdw_get_uleb128_unchecked (&data);
block->addr = op;
block->data = (unsigned char *) data;
block->length = op->number;
@@ -161,11 +160,14 @@ dwarf_getlocation_implicit_value (Dwarf_Attribute *attr, const Dwarf_Op *op,
return 0;
}
-/* DW_AT_data_member_location can be a constant as well as a loclistptr.
- Only data[48] indicate a loclistptr. */
+/* If the given attribute is DW_AT_data_member_location and it has constant
+ form then create a fake location using DW_OP_plus_uconst and the offset
+ value. On success returns zero and fills in llbuf (when not NULL) and
+ sets listlen to 1. Returns 1 when this isn't a DW_AT_data_member_location
+ offset. Returns -1 and sets dwarf_errno on failure (bad DWARF data). */
static int
-check_constant_offset (Dwarf_Attribute *attr,
- Dwarf_Op **llbuf, size_t *listlen)
+is_constant_offset (Dwarf_Attribute *attr,
+ Dwarf_Op **llbuf, size_t *listlen)
{
if (attr->code != DW_AT_data_member_location)
return 1;
@@ -386,7 +388,7 @@ __libdw_intern_expression (Dwarf *dbg, bool other_byte_order,
invalid:
__libdw_seterrno (DWARF_E_INVALID_DWARF);
returnmem:
- /* Free any dynamicly allocated loclists, if any. */
+ /* Free any dynamically allocated loclists, if any. */
while (n > MAX_STACK_LOCS)
{
struct loclist *loc = loclist;
@@ -665,9 +667,9 @@ dwarf_getlocation (Dwarf_Attribute *attr, Dwarf_Op **llbuf, size_t *listlen)
if (! attr_ok (attr))
return -1;
- int result = check_constant_offset (attr, llbuf, listlen);
+ int result = is_constant_offset (attr, llbuf, listlen);
if (result != 1)
- return result;
+ return result; /* Either success 0, or -1 to indicate error. */
/* If it has a block form, it's a single location expression.
Except for DW_FORM_data16, which is a 128bit constant. */
@@ -898,7 +900,8 @@ dwarf_getlocation_addr (Dwarf_Attribute *attr, Dwarf_Addr address,
}
}
- int result = check_constant_offset (attr, llbufs, listlens);
+ /* If is_constant_offset is successful, we are done with 1 result. */
+ int result = is_constant_offset (attr, llbufs, listlens);
if (result != 1)
return result ?: 1;
@@ -979,7 +982,7 @@ dwarf_getlocations (Dwarf_Attribute *attr, ptrdiff_t offset, Dwarf_Addr *basep,
}
}
- int result = check_constant_offset (attr, expr, exprlen);
+ int result = is_constant_offset (attr, expr, exprlen);
if (result != 1)
{
if (result == 0)
@@ -989,7 +992,7 @@ dwarf_getlocations (Dwarf_Attribute *attr, ptrdiff_t offset, Dwarf_Addr *basep,
*endp = -1;
return 1;
}
- return result;
+ return result; /* Something bad, dwarf_errno has been set. */
}
/* We must be looking at a true loclistptr, fetch the initial
diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c
index 75ec9c79..d6a581ad 100644
--- a/libdw/dwarf_getsrclines.c
+++ b/libdw/dwarf_getsrclines.c
@@ -757,7 +757,7 @@ read_srclines (Dwarf *dbg,
case DW_LNE_set_address:
/* The value is an address. The size is defined as
- apporiate for the target machine. We use the
+ appropriate for the target machine. We use the
address size field from the CU header. */
state.op_index = 0;
if (unlikely (lineendp - linep < (uint8_t) address_size))
diff --git a/libdw/dwarf_ranges.c b/libdw/dwarf_ranges.c
index f67d8a5a..520f9ffe 100644
--- a/libdw/dwarf_ranges.c
+++ b/libdw/dwarf_ranges.c
@@ -506,6 +506,11 @@ dwarf_ranges (Dwarf_Die *die, ptrdiff_t offset, Dwarf_Addr *basep,
Dwarf_Attribute attr_mem;
Dwarf_Attribute *attr = INTUSE(dwarf_attr) (die, DW_AT_ranges,
&attr_mem);
+ /* Note that above we use dwarf_attr, not dwarf_attr_integrate.
+ The only case where the ranges can come from another DIE
+ attribute are the split CU case. In that case we also have a
+ different CU to check against. But that is already set up
+ above using __libdw_find_split_unit. */
if (attr == NULL
&& is_cudie (die)
&& die->cu->unit_type == DW_UT_split_compile)
diff --git a/libdw/known-dwarf.h b/libdw/known-dwarf.h
deleted file mode 100644
index 364d7ca3..00000000
--- a/libdw/known-dwarf.h
+++ /dev/null
@@ -1,633 +0,0 @@
-/* Generated by config/known-dwarf.awk from libdw/dwarf.h contents. */
-
-#define DWARF_ALL_KNOWN_DW_ACCESS \
- DWARF_ONE_KNOWN_DW_ACCESS (private, DW_ACCESS_private) \
- DWARF_ONE_KNOWN_DW_ACCESS (protected, DW_ACCESS_protected) \
- DWARF_ONE_KNOWN_DW_ACCESS (public, DW_ACCESS_public) \
- /* End of DW_ACCESS_*. */
-
-#define DWARF_ALL_KNOWN_DW_AT \
- DWARF_ONE_KNOWN_DW_AT (GNU_all_call_sites, DW_AT_GNU_all_call_sites) \
- DWARF_ONE_KNOWN_DW_AT (GNU_all_source_call_sites, DW_AT_GNU_all_source_call_sites) \
- DWARF_ONE_KNOWN_DW_AT (GNU_all_tail_call_sites, DW_AT_GNU_all_tail_call_sites) \
- DWARF_ONE_KNOWN_DW_AT (GNU_call_site_data_value, DW_AT_GNU_call_site_data_value) \
- DWARF_ONE_KNOWN_DW_AT (GNU_call_site_target, DW_AT_GNU_call_site_target) \
- DWARF_ONE_KNOWN_DW_AT (GNU_call_site_target_clobbered, DW_AT_GNU_call_site_target_clobbered) \
- DWARF_ONE_KNOWN_DW_AT (GNU_call_site_value, DW_AT_GNU_call_site_value) \
- DWARF_ONE_KNOWN_DW_AT (GNU_deleted, DW_AT_GNU_deleted) \
- DWARF_ONE_KNOWN_DW_AT (GNU_exclusive_locks_required, DW_AT_GNU_exclusive_locks_required) \
- DWARF_ONE_KNOWN_DW_AT (GNU_guarded, DW_AT_GNU_guarded) \
- DWARF_ONE_KNOWN_DW_AT (GNU_guarded_by, DW_AT_GNU_guarded_by) \
- DWARF_ONE_KNOWN_DW_AT (GNU_locks_excluded, DW_AT_GNU_locks_excluded) \
- DWARF_ONE_KNOWN_DW_AT (GNU_macros, DW_AT_GNU_macros) \
- DWARF_ONE_KNOWN_DW_AT (GNU_odr_signature, DW_AT_GNU_odr_signature) \
- DWARF_ONE_KNOWN_DW_AT (GNU_pt_guarded, DW_AT_GNU_pt_guarded) \
- DWARF_ONE_KNOWN_DW_AT (GNU_pt_guarded_by, DW_AT_GNU_pt_guarded_by) \
- DWARF_ONE_KNOWN_DW_AT (GNU_shared_locks_required, DW_AT_GNU_shared_locks_required) \
- DWARF_ONE_KNOWN_DW_AT (GNU_tail_call, DW_AT_GNU_tail_call) \
- DWARF_ONE_KNOWN_DW_AT (GNU_template_name, DW_AT_GNU_template_name) \
- DWARF_ONE_KNOWN_DW_AT (GNU_vector, DW_AT_GNU_vector) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_abstract_name, DW_AT_MIPS_abstract_name) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_allocatable_dopetype, DW_AT_MIPS_allocatable_dopetype) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_assumed_shape_dopetype, DW_AT_MIPS_assumed_shape_dopetype) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_assumed_size, DW_AT_MIPS_assumed_size) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_clone_origin, DW_AT_MIPS_clone_origin) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_epilog_begin, DW_AT_MIPS_epilog_begin) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_fde, DW_AT_MIPS_fde) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_has_inlines, DW_AT_MIPS_has_inlines) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_linkage_name, DW_AT_MIPS_linkage_name) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_loop_begin, DW_AT_MIPS_loop_begin) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_loop_unroll_factor, DW_AT_MIPS_loop_unroll_factor) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_ptr_dopetype, DW_AT_MIPS_ptr_dopetype) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_software_pipeline_depth, DW_AT_MIPS_software_pipeline_depth) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_stride, DW_AT_MIPS_stride) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_stride_byte, DW_AT_MIPS_stride_byte) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_stride_elem, DW_AT_MIPS_stride_elem) \
- DWARF_ONE_KNOWN_DW_AT (MIPS_tail_loop_begin, DW_AT_MIPS_tail_loop_begin) \
- DWARF_ONE_KNOWN_DW_AT (abstract_origin, DW_AT_abstract_origin) \
- DWARF_ONE_KNOWN_DW_AT (accessibility, DW_AT_accessibility) \
- DWARF_ONE_KNOWN_DW_AT (address_class, DW_AT_address_class) \
- DWARF_ONE_KNOWN_DW_AT (allocated, DW_AT_allocated) \
- DWARF_ONE_KNOWN_DW_AT (artificial, DW_AT_artificial) \
- DWARF_ONE_KNOWN_DW_AT (associated, DW_AT_associated) \
- DWARF_ONE_KNOWN_DW_AT (base_types, DW_AT_base_types) \
- DWARF_ONE_KNOWN_DW_AT (binary_scale, DW_AT_binary_scale) \
- DWARF_ONE_KNOWN_DW_AT (bit_offset, DW_AT_bit_offset) \
- DWARF_ONE_KNOWN_DW_AT (bit_size, DW_AT_bit_size) \
- DWARF_ONE_KNOWN_DW_AT (bit_stride, DW_AT_bit_stride) \
- DWARF_ONE_KNOWN_DW_AT (body_begin, DW_AT_body_begin) \
- DWARF_ONE_KNOWN_DW_AT (body_end, DW_AT_body_end) \
- DWARF_ONE_KNOWN_DW_AT (byte_size, DW_AT_byte_size) \
- DWARF_ONE_KNOWN_DW_AT (byte_stride, DW_AT_byte_stride) \
- DWARF_ONE_KNOWN_DW_AT (call_column, DW_AT_call_column) \
- DWARF_ONE_KNOWN_DW_AT (call_file, DW_AT_call_file) \
- DWARF_ONE_KNOWN_DW_AT (call_line, DW_AT_call_line) \
- DWARF_ONE_KNOWN_DW_AT (calling_convention, DW_AT_calling_convention) \
- DWARF_ONE_KNOWN_DW_AT (common_reference, DW_AT_common_reference) \
- DWARF_ONE_KNOWN_DW_AT (comp_dir, DW_AT_comp_dir) \
- DWARF_ONE_KNOWN_DW_AT (const_expr, DW_AT_const_expr) \
- DWARF_ONE_KNOWN_DW_AT (const_value, DW_AT_const_value) \
- DWARF_ONE_KNOWN_DW_AT (containing_type, DW_AT_containing_type) \
- DWARF_ONE_KNOWN_DW_AT (count, DW_AT_count) \
- DWARF_ONE_KNOWN_DW_AT (data_bit_offset, DW_AT_data_bit_offset) \
- DWARF_ONE_KNOWN_DW_AT (data_location, DW_AT_data_location) \
- DWARF_ONE_KNOWN_DW_AT (data_member_location, DW_AT_data_member_location) \
- DWARF_ONE_KNOWN_DW_AT (decimal_scale, DW_AT_decimal_scale) \
- DWARF_ONE_KNOWN_DW_AT (decimal_sign, DW_AT_decimal_sign) \
- DWARF_ONE_KNOWN_DW_AT (decl_column, DW_AT_decl_column) \
- DWARF_ONE_KNOWN_DW_AT (decl_file, DW_AT_decl_file) \
- DWARF_ONE_KNOWN_DW_AT (decl_line, DW_AT_decl_line) \
- DWARF_ONE_KNOWN_DW_AT (declaration, DW_AT_declaration) \
- DWARF_ONE_KNOWN_DW_AT (default_value, DW_AT_default_value) \
- DWARF_ONE_KNOWN_DW_AT (description, DW_AT_description) \
- DWARF_ONE_KNOWN_DW_AT (digit_count, DW_AT_digit_count) \
- DWARF_ONE_KNOWN_DW_AT (discr, DW_AT_discr) \
- DWARF_ONE_KNOWN_DW_AT (discr_list, DW_AT_discr_list) \
- DWARF_ONE_KNOWN_DW_AT (discr_value, DW_AT_discr_value) \
- DWARF_ONE_KNOWN_DW_AT (element_list, DW_AT_element_list) \
- DWARF_ONE_KNOWN_DW_AT (elemental, DW_AT_elemental) \
- DWARF_ONE_KNOWN_DW_AT (encoding, DW_AT_encoding) \
- DWARF_ONE_KNOWN_DW_AT (endianity, DW_AT_endianity) \
- DWARF_ONE_KNOWN_DW_AT (entry_pc, DW_AT_entry_pc) \
- DWARF_ONE_KNOWN_DW_AT (enum_class, DW_AT_enum_class) \
- DWARF_ONE_KNOWN_DW_AT (explicit, DW_AT_explicit) \
- DWARF_ONE_KNOWN_DW_AT (extension, DW_AT_extension) \
- DWARF_ONE_KNOWN_DW_AT (external, DW_AT_external) \
- DWARF_ONE_KNOWN_DW_AT (frame_base, DW_AT_frame_base) \
- DWARF_ONE_KNOWN_DW_AT (friend, DW_AT_friend) \
- DWARF_ONE_KNOWN_DW_AT (high_pc, DW_AT_high_pc) \
- DWARF_ONE_KNOWN_DW_AT (identifier_case, DW_AT_identifier_case) \
- DWARF_ONE_KNOWN_DW_AT (import, DW_AT_import) \
- DWARF_ONE_KNOWN_DW_AT (inline, DW_AT_inline) \
- DWARF_ONE_KNOWN_DW_AT (is_optional, DW_AT_is_optional) \
- DWARF_ONE_KNOWN_DW_AT (language, DW_AT_language) \
- DWARF_ONE_KNOWN_DW_AT (linkage_name, DW_AT_linkage_name) \
- DWARF_ONE_KNOWN_DW_AT (location, DW_AT_location) \
- DWARF_ONE_KNOWN_DW_AT (low_pc, DW_AT_low_pc) \
- DWARF_ONE_KNOWN_DW_AT (lower_bound, DW_AT_lower_bound) \
- DWARF_ONE_KNOWN_DW_AT (mac_info, DW_AT_mac_info) \
- DWARF_ONE_KNOWN_DW_AT (macro_info, DW_AT_macro_info) \
- DWARF_ONE_KNOWN_DW_AT (main_subprogram, DW_AT_main_subprogram) \
- DWARF_ONE_KNOWN_DW_AT (member, DW_AT_member) \
- DWARF_ONE_KNOWN_DW_AT (mutable, DW_AT_mutable) \
- DWARF_ONE_KNOWN_DW_AT (name, DW_AT_name) \
- DWARF_ONE_KNOWN_DW_AT (namelist_item, DW_AT_namelist_item) \
- DWARF_ONE_KNOWN_DW_AT (noreturn, DW_AT_noreturn) \
- DWARF_ONE_KNOWN_DW_AT (object_pointer, DW_AT_object_pointer) \
- DWARF_ONE_KNOWN_DW_AT (ordering, DW_AT_ordering) \
- DWARF_ONE_KNOWN_DW_AT (picture_string, DW_AT_picture_string) \
- DWARF_ONE_KNOWN_DW_AT (priority, DW_AT_priority) \
- DWARF_ONE_KNOWN_DW_AT (producer, DW_AT_producer) \
- DWARF_ONE_KNOWN_DW_AT (prototyped, DW_AT_prototyped) \
- DWARF_ONE_KNOWN_DW_AT (pure, DW_AT_pure) \
- DWARF_ONE_KNOWN_DW_AT (ranges, DW_AT_ranges) \
- DWARF_ONE_KNOWN_DW_AT (recursive, DW_AT_recursive) \
- DWARF_ONE_KNOWN_DW_AT (return_addr, DW_AT_return_addr) \
- DWARF_ONE_KNOWN_DW_AT (segment, DW_AT_segment) \
- DWARF_ONE_KNOWN_DW_AT (sf_names, DW_AT_sf_names) \
- DWARF_ONE_KNOWN_DW_AT (sibling, DW_AT_sibling) \
- DWARF_ONE_KNOWN_DW_AT (signature, DW_AT_signature) \
- DWARF_ONE_KNOWN_DW_AT (small, DW_AT_small) \
- DWARF_ONE_KNOWN_DW_AT (specification, DW_AT_specification) \
- DWARF_ONE_KNOWN_DW_AT (src_coords, DW_AT_src_coords) \
- DWARF_ONE_KNOWN_DW_AT (src_info, DW_AT_src_info) \
- DWARF_ONE_KNOWN_DW_AT (start_scope, DW_AT_start_scope) \
- DWARF_ONE_KNOWN_DW_AT (static_link, DW_AT_static_link) \
- DWARF_ONE_KNOWN_DW_AT (stmt_list, DW_AT_stmt_list) \
- DWARF_ONE_KNOWN_DW_AT (string_length, DW_AT_string_length) \
- DWARF_ONE_KNOWN_DW_AT (subscr_data, DW_AT_subscr_data) \
- DWARF_ONE_KNOWN_DW_AT (threads_scaled, DW_AT_threads_scaled) \
- DWARF_ONE_KNOWN_DW_AT (trampoline, DW_AT_trampoline) \
- DWARF_ONE_KNOWN_DW_AT (type, DW_AT_type) \
- DWARF_ONE_KNOWN_DW_AT (upper_bound, DW_AT_upper_bound) \
- DWARF_ONE_KNOWN_DW_AT (use_UTF8, DW_AT_use_UTF8) \
- DWARF_ONE_KNOWN_DW_AT (use_location, DW_AT_use_location) \
- DWARF_ONE_KNOWN_DW_AT (variable_parameter, DW_AT_variable_parameter) \
- DWARF_ONE_KNOWN_DW_AT (virtuality, DW_AT_virtuality) \
- DWARF_ONE_KNOWN_DW_AT (visibility, DW_AT_visibility) \
- DWARF_ONE_KNOWN_DW_AT (vtable_elem_location, DW_AT_vtable_elem_location) \
- /* End of DW_AT_*. */
-
-#define DWARF_ALL_KNOWN_DW_ATE \
- DWARF_ONE_KNOWN_DW_ATE (UTF, DW_ATE_UTF) \
- DWARF_ONE_KNOWN_DW_ATE (address, DW_ATE_address) \
- DWARF_ONE_KNOWN_DW_ATE (boolean, DW_ATE_boolean) \
- DWARF_ONE_KNOWN_DW_ATE (complex_float, DW_ATE_complex_float) \
- DWARF_ONE_KNOWN_DW_ATE (decimal_float, DW_ATE_decimal_float) \
- DWARF_ONE_KNOWN_DW_ATE (edited, DW_ATE_edited) \
- DWARF_ONE_KNOWN_DW_ATE (float, DW_ATE_float) \
- DWARF_ONE_KNOWN_DW_ATE (imaginary_float, DW_ATE_imaginary_float) \
- DWARF_ONE_KNOWN_DW_ATE (numeric_string, DW_ATE_numeric_string) \
- DWARF_ONE_KNOWN_DW_ATE (packed_decimal, DW_ATE_packed_decimal) \
- DWARF_ONE_KNOWN_DW_ATE (signed, DW_ATE_signed) \
- DWARF_ONE_KNOWN_DW_ATE (signed_char, DW_ATE_signed_char) \
- DWARF_ONE_KNOWN_DW_ATE (signed_fixed, DW_ATE_signed_fixed) \
- DWARF_ONE_KNOWN_DW_ATE (unsigned, DW_ATE_unsigned) \
- DWARF_ONE_KNOWN_DW_ATE (unsigned_char, DW_ATE_unsigned_char) \
- DWARF_ONE_KNOWN_DW_ATE (unsigned_fixed, DW_ATE_unsigned_fixed) \
- DWARF_ONE_KNOWN_DW_ATE (void, DW_ATE_void) \
- /* End of DW_ATE_*. */
-
-#define DWARF_ALL_KNOWN_DW_CC \
- DWARF_ONE_KNOWN_DW_CC (nocall, DW_CC_nocall) \
- DWARF_ONE_KNOWN_DW_CC (normal, DW_CC_normal) \
- DWARF_ONE_KNOWN_DW_CC (program, DW_CC_program) \
- /* End of DW_CC_*. */
-
-#define DWARF_ALL_KNOWN_DW_CFA \
- DWARF_ONE_KNOWN_DW_CFA (GNU_args_size, DW_CFA_GNU_args_size) \
- DWARF_ONE_KNOWN_DW_CFA (GNU_negative_offset_extended, DW_CFA_GNU_negative_offset_extended) \
- DWARF_ONE_KNOWN_DW_CFA (GNU_window_save, DW_CFA_GNU_window_save) \
- DWARF_ONE_KNOWN_DW_CFA (MIPS_advance_loc8, DW_CFA_MIPS_advance_loc8) \
- DWARF_ONE_KNOWN_DW_CFA (advance_loc, DW_CFA_advance_loc) \
- DWARF_ONE_KNOWN_DW_CFA (advance_loc1, DW_CFA_advance_loc1) \
- DWARF_ONE_KNOWN_DW_CFA (advance_loc2, DW_CFA_advance_loc2) \
- DWARF_ONE_KNOWN_DW_CFA (advance_loc4, DW_CFA_advance_loc4) \
- DWARF_ONE_KNOWN_DW_CFA (def_cfa, DW_CFA_def_cfa) \
- DWARF_ONE_KNOWN_DW_CFA (def_cfa_expression, DW_CFA_def_cfa_expression) \
- DWARF_ONE_KNOWN_DW_CFA (def_cfa_offset, DW_CFA_def_cfa_offset) \
- DWARF_ONE_KNOWN_DW_CFA (def_cfa_offset_sf, DW_CFA_def_cfa_offset_sf) \
- DWARF_ONE_KNOWN_DW_CFA (def_cfa_register, DW_CFA_def_cfa_register) \
- DWARF_ONE_KNOWN_DW_CFA (def_cfa_sf, DW_CFA_def_cfa_sf) \
- DWARF_ONE_KNOWN_DW_CFA (expression, DW_CFA_expression) \
- DWARF_ONE_KNOWN_DW_CFA (extended, DW_CFA_extended) \
- DWARF_ONE_KNOWN_DW_CFA (nop, DW_CFA_nop) \
- DWARF_ONE_KNOWN_DW_CFA (offset, DW_CFA_offset) \
- DWARF_ONE_KNOWN_DW_CFA (offset_extended, DW_CFA_offset_extended) \
- DWARF_ONE_KNOWN_DW_CFA (offset_extended_sf, DW_CFA_offset_extended_sf) \
- DWARF_ONE_KNOWN_DW_CFA (register, DW_CFA_register) \
- DWARF_ONE_KNOWN_DW_CFA (remember_state, DW_CFA_remember_state) \
- DWARF_ONE_KNOWN_DW_CFA (restore, DW_CFA_restore) \
- DWARF_ONE_KNOWN_DW_CFA (restore_extended, DW_CFA_restore_extended) \
- DWARF_ONE_KNOWN_DW_CFA (restore_state, DW_CFA_restore_state) \
- DWARF_ONE_KNOWN_DW_CFA (same_value, DW_CFA_same_value) \
- DWARF_ONE_KNOWN_DW_CFA (set_loc, DW_CFA_set_loc) \
- DWARF_ONE_KNOWN_DW_CFA (undefined, DW_CFA_undefined) \
- DWARF_ONE_KNOWN_DW_CFA (val_expression, DW_CFA_val_expression) \
- DWARF_ONE_KNOWN_DW_CFA (val_offset, DW_CFA_val_offset) \
- DWARF_ONE_KNOWN_DW_CFA (val_offset_sf, DW_CFA_val_offset_sf) \
- /* End of DW_CFA_*. */
-
-#define DWARF_ALL_KNOWN_DW_CHILDREN \
- DWARF_ONE_KNOWN_DW_CHILDREN (no, DW_CHILDREN_no) \
- DWARF_ONE_KNOWN_DW_CHILDREN (yes, DW_CHILDREN_yes) \
- /* End of DW_CHILDREN_*. */
-
-#define DWARF_ALL_KNOWN_DW_CIE_ID \
- DWARF_ONE_KNOWN_DW_CIE_ID (32, DW_CIE_ID_32) \
- DWARF_ONE_KNOWN_DW_CIE_ID (64, DW_CIE_ID_64) \
- /* End of DW_CIE_ID_*. */
-
-#define DWARF_ALL_KNOWN_DW_DS \
- DWARF_ONE_KNOWN_DW_DS (leading_overpunch, DW_DS_leading_overpunch) \
- DWARF_ONE_KNOWN_DW_DS (leading_separate, DW_DS_leading_separate) \
- DWARF_ONE_KNOWN_DW_DS (trailing_overpunch, DW_DS_trailing_overpunch) \
- DWARF_ONE_KNOWN_DW_DS (trailing_separate, DW_DS_trailing_separate) \
- DWARF_ONE_KNOWN_DW_DS (unsigned, DW_DS_unsigned) \
- /* End of DW_DS_*. */
-
-#define DWARF_ALL_KNOWN_DW_DSC \
- DWARF_ONE_KNOWN_DW_DSC (label, DW_DSC_label) \
- DWARF_ONE_KNOWN_DW_DSC (range, DW_DSC_range) \
- /* End of DW_DSC_*. */
-
-#define DWARF_ALL_KNOWN_DW_EH_PE \
- DWARF_ONE_KNOWN_DW_EH_PE (absptr, DW_EH_PE_absptr) \
- DWARF_ONE_KNOWN_DW_EH_PE (aligned, DW_EH_PE_aligned) \
- DWARF_ONE_KNOWN_DW_EH_PE (datarel, DW_EH_PE_datarel) \
- DWARF_ONE_KNOWN_DW_EH_PE (funcrel, DW_EH_PE_funcrel) \
- DWARF_ONE_KNOWN_DW_EH_PE (indirect, DW_EH_PE_indirect) \
- DWARF_ONE_KNOWN_DW_EH_PE (omit, DW_EH_PE_omit) \
- DWARF_ONE_KNOWN_DW_EH_PE (pcrel, DW_EH_PE_pcrel) \
- DWARF_ONE_KNOWN_DW_EH_PE (sdata2, DW_EH_PE_sdata2) \
- DWARF_ONE_KNOWN_DW_EH_PE (sdata4, DW_EH_PE_sdata4) \
- DWARF_ONE_KNOWN_DW_EH_PE (sdata8, DW_EH_PE_sdata8) \
- DWARF_ONE_KNOWN_DW_EH_PE (signed, DW_EH_PE_signed) \
- DWARF_ONE_KNOWN_DW_EH_PE (sleb128, DW_EH_PE_sleb128) \
- DWARF_ONE_KNOWN_DW_EH_PE (textrel, DW_EH_PE_textrel) \
- DWARF_ONE_KNOWN_DW_EH_PE (udata2, DW_EH_PE_udata2) \
- DWARF_ONE_KNOWN_DW_EH_PE (udata4, DW_EH_PE_udata4) \
- DWARF_ONE_KNOWN_DW_EH_PE (udata8, DW_EH_PE_udata8) \
- DWARF_ONE_KNOWN_DW_EH_PE (uleb128, DW_EH_PE_uleb128) \
- /* End of DW_EH_PE_*. */
-
-#define DWARF_ALL_KNOWN_DW_END \
- DWARF_ONE_KNOWN_DW_END (big, DW_END_big) \
- DWARF_ONE_KNOWN_DW_END (default, DW_END_default) \
- DWARF_ONE_KNOWN_DW_END (little, DW_END_little) \
- /* End of DW_END_*. */
-
-#define DWARF_ALL_KNOWN_DW_FORM \
- DWARF_ONE_KNOWN_DW_FORM (GNU_ref_alt, DW_FORM_GNU_ref_alt) \
- DWARF_ONE_KNOWN_DW_FORM (GNU_strp_alt, DW_FORM_GNU_strp_alt) \
- DWARF_ONE_KNOWN_DW_FORM (addr, DW_FORM_addr) \
- DWARF_ONE_KNOWN_DW_FORM (block, DW_FORM_block) \
- DWARF_ONE_KNOWN_DW_FORM (block1, DW_FORM_block1) \
- DWARF_ONE_KNOWN_DW_FORM (block2, DW_FORM_block2) \
- DWARF_ONE_KNOWN_DW_FORM (block4, DW_FORM_block4) \
- DWARF_ONE_KNOWN_DW_FORM (data1, DW_FORM_data1) \
- DWARF_ONE_KNOWN_DW_FORM (data2, DW_FORM_data2) \
- DWARF_ONE_KNOWN_DW_FORM (data4, DW_FORM_data4) \
- DWARF_ONE_KNOWN_DW_FORM (data8, DW_FORM_data8) \
- DWARF_ONE_KNOWN_DW_FORM (exprloc, DW_FORM_exprloc) \
- DWARF_ONE_KNOWN_DW_FORM (flag, DW_FORM_flag) \
- DWARF_ONE_KNOWN_DW_FORM (flag_present, DW_FORM_flag_present) \
- DWARF_ONE_KNOWN_DW_FORM (indirect, DW_FORM_indirect) \
- DWARF_ONE_KNOWN_DW_FORM (ref1, DW_FORM_ref1) \
- DWARF_ONE_KNOWN_DW_FORM (ref2, DW_FORM_ref2) \
- DWARF_ONE_KNOWN_DW_FORM (ref4, DW_FORM_ref4) \
- DWARF_ONE_KNOWN_DW_FORM (ref8, DW_FORM_ref8) \
- DWARF_ONE_KNOWN_DW_FORM (ref_addr, DW_FORM_ref_addr) \
- DWARF_ONE_KNOWN_DW_FORM (ref_sig8, DW_FORM_ref_sig8) \
- DWARF_ONE_KNOWN_DW_FORM (ref_udata, DW_FORM_ref_udata) \
- DWARF_ONE_KNOWN_DW_FORM (sdata, DW_FORM_sdata) \
- DWARF_ONE_KNOWN_DW_FORM (sec_offset, DW_FORM_sec_offset) \
- DWARF_ONE_KNOWN_DW_FORM (string, DW_FORM_string) \
- DWARF_ONE_KNOWN_DW_FORM (strp, DW_FORM_strp) \
- DWARF_ONE_KNOWN_DW_FORM (udata, DW_FORM_udata) \
- /* End of DW_FORM_*. */
-
-#define DWARF_ALL_KNOWN_DW_ID \
- DWARF_ONE_KNOWN_DW_ID (case_insensitive, DW_ID_case_insensitive) \
- DWARF_ONE_KNOWN_DW_ID (case_sensitive, DW_ID_case_sensitive) \
- DWARF_ONE_KNOWN_DW_ID (down_case, DW_ID_down_case) \
- DWARF_ONE_KNOWN_DW_ID (up_case, DW_ID_up_case) \
- /* End of DW_ID_*. */
-
-#define DWARF_ALL_KNOWN_DW_INL \
- DWARF_ONE_KNOWN_DW_INL (declared_inlined, DW_INL_declared_inlined) \
- DWARF_ONE_KNOWN_DW_INL (declared_not_inlined, DW_INL_declared_not_inlined) \
- DWARF_ONE_KNOWN_DW_INL (inlined, DW_INL_inlined) \
- DWARF_ONE_KNOWN_DW_INL (not_inlined, DW_INL_not_inlined) \
- /* End of DW_INL_*. */
-
-#define DWARF_ALL_KNOWN_DW_LANG \
- DWARF_ONE_KNOWN_DW_LANG (Ada83, DW_LANG_Ada83) \
- DWARF_ONE_KNOWN_DW_LANG (Ada95, DW_LANG_Ada95) \
- DWARF_ONE_KNOWN_DW_LANG (C, DW_LANG_C) \
- DWARF_ONE_KNOWN_DW_LANG (C11, DW_LANG_C11) \
- DWARF_ONE_KNOWN_DW_LANG (C89, DW_LANG_C89) \
- DWARF_ONE_KNOWN_DW_LANG (C99, DW_LANG_C99) \
- DWARF_ONE_KNOWN_DW_LANG (C_plus_plus, DW_LANG_C_plus_plus) \
- DWARF_ONE_KNOWN_DW_LANG (C_plus_plus_11, DW_LANG_C_plus_plus_11) \
- DWARF_ONE_KNOWN_DW_LANG (C_plus_plus_14, DW_LANG_C_plus_plus_14) \
- DWARF_ONE_KNOWN_DW_LANG (Cobol74, DW_LANG_Cobol74) \
- DWARF_ONE_KNOWN_DW_LANG (Cobol85, DW_LANG_Cobol85) \
- DWARF_ONE_KNOWN_DW_LANG (D, DW_LANG_D) \
- DWARF_ONE_KNOWN_DW_LANG (Fortran03, DW_LANG_Fortran03) \
- DWARF_ONE_KNOWN_DW_LANG (Fortran08, DW_LANG_Fortran08) \
- DWARF_ONE_KNOWN_DW_LANG (Fortran77, DW_LANG_Fortran77) \
- DWARF_ONE_KNOWN_DW_LANG (Fortran90, DW_LANG_Fortran90) \
- DWARF_ONE_KNOWN_DW_LANG (Fortran95, DW_LANG_Fortran95) \
- DWARF_ONE_KNOWN_DW_LANG (Go, DW_LANG_Go) \
- DWARF_ONE_KNOWN_DW_LANG (Haskell, DW_LANG_Haskell) \
- DWARF_ONE_KNOWN_DW_LANG (Java, DW_LANG_Java) \
- DWARF_ONE_KNOWN_DW_LANG (Mips_Assembler, DW_LANG_Mips_Assembler) \
- DWARF_ONE_KNOWN_DW_LANG (Modula2, DW_LANG_Modula2) \
- DWARF_ONE_KNOWN_DW_LANG (ObjC, DW_LANG_ObjC) \
- DWARF_ONE_KNOWN_DW_LANG (ObjC_plus_plus, DW_LANG_ObjC_plus_plus) \
- DWARF_ONE_KNOWN_DW_LANG (PL1, DW_LANG_PL1) \
- DWARF_ONE_KNOWN_DW_LANG (Pascal83, DW_LANG_Pascal83) \
- DWARF_ONE_KNOWN_DW_LANG (Python, DW_LANG_Python) \
- DWARF_ONE_KNOWN_DW_LANG (UPC, DW_LANG_UPC) \
- /* End of DW_LANG_*. */
-
-#define DWARF_ALL_KNOWN_DW_LNE \
- DWARF_ONE_KNOWN_DW_LNE (define_file, DW_LNE_define_file) \
- DWARF_ONE_KNOWN_DW_LNE (end_sequence, DW_LNE_end_sequence) \
- DWARF_ONE_KNOWN_DW_LNE (set_address, DW_LNE_set_address) \
- DWARF_ONE_KNOWN_DW_LNE (set_discriminator, DW_LNE_set_discriminator) \
- /* End of DW_LNE_*. */
-
-#define DWARF_ALL_KNOWN_DW_LNS \
- DWARF_ONE_KNOWN_DW_LNS (advance_line, DW_LNS_advance_line) \
- DWARF_ONE_KNOWN_DW_LNS (advance_pc, DW_LNS_advance_pc) \
- DWARF_ONE_KNOWN_DW_LNS (const_add_pc, DW_LNS_const_add_pc) \
- DWARF_ONE_KNOWN_DW_LNS (copy, DW_LNS_copy) \
- DWARF_ONE_KNOWN_DW_LNS (fixed_advance_pc, DW_LNS_fixed_advance_pc) \
- DWARF_ONE_KNOWN_DW_LNS (negate_stmt, DW_LNS_negate_stmt) \
- DWARF_ONE_KNOWN_DW_LNS (set_basic_block, DW_LNS_set_basic_block) \
- DWARF_ONE_KNOWN_DW_LNS (set_column, DW_LNS_set_column) \
- DWARF_ONE_KNOWN_DW_LNS (set_epilogue_begin, DW_LNS_set_epilogue_begin) \
- DWARF_ONE_KNOWN_DW_LNS (set_file, DW_LNS_set_file) \
- DWARF_ONE_KNOWN_DW_LNS (set_isa, DW_LNS_set_isa) \
- DWARF_ONE_KNOWN_DW_LNS (set_prologue_end, DW_LNS_set_prologue_end) \
- /* End of DW_LNS_*. */
-
-#define DWARF_ALL_KNOWN_DW_MACINFO \
- DWARF_ONE_KNOWN_DW_MACINFO (define, DW_MACINFO_define) \
- DWARF_ONE_KNOWN_DW_MACINFO (end_file, DW_MACINFO_end_file) \
- DWARF_ONE_KNOWN_DW_MACINFO (start_file, DW_MACINFO_start_file) \
- DWARF_ONE_KNOWN_DW_MACINFO (undef, DW_MACINFO_undef) \
- DWARF_ONE_KNOWN_DW_MACINFO (vendor_ext, DW_MACINFO_vendor_ext) \
- /* End of DW_MACINFO_*. */
-
-#define DWARF_ALL_KNOWN_DW_MACRO_GNU \
- DWARF_ONE_KNOWN_DW_MACRO_GNU (define, DW_MACRO_GNU_define) \
- DWARF_ONE_KNOWN_DW_MACRO_GNU (define_indirect, DW_MACRO_GNU_define_indirect) \
- DWARF_ONE_KNOWN_DW_MACRO_GNU (end_file, DW_MACRO_GNU_end_file) \
- DWARF_ONE_KNOWN_DW_MACRO_GNU (start_file, DW_MACRO_GNU_start_file) \
- DWARF_ONE_KNOWN_DW_MACRO_GNU (transparent_include, DW_MACRO_GNU_transparent_include) \
- DWARF_ONE_KNOWN_DW_MACRO_GNU (undef, DW_MACRO_GNU_undef) \
- DWARF_ONE_KNOWN_DW_MACRO_GNU (undef_indirect, DW_MACRO_GNU_undef_indirect) \
- /* End of DW_MACRO_GNU_*. */
-
-#define DWARF_ALL_KNOWN_DW_OP \
- DWARF_ONE_KNOWN_DW_OP (GNU_const_type, DW_OP_GNU_const_type) \
- DWARF_ONE_KNOWN_DW_OP (GNU_convert, DW_OP_GNU_convert) \
- DWARF_ONE_KNOWN_DW_OP (GNU_deref_type, DW_OP_GNU_deref_type) \
- DWARF_ONE_KNOWN_DW_OP (GNU_encoded_addr, DW_OP_GNU_encoded_addr) \
- DWARF_ONE_KNOWN_DW_OP (GNU_entry_value, DW_OP_GNU_entry_value) \
- DWARF_ONE_KNOWN_DW_OP (GNU_implicit_pointer, DW_OP_GNU_implicit_pointer) \
- DWARF_ONE_KNOWN_DW_OP (GNU_parameter_ref, DW_OP_GNU_parameter_ref) \
- DWARF_ONE_KNOWN_DW_OP (GNU_push_tls_address, DW_OP_GNU_push_tls_address) \
- DWARF_ONE_KNOWN_DW_OP (GNU_regval_type, DW_OP_GNU_regval_type) \
- DWARF_ONE_KNOWN_DW_OP (GNU_reinterpret, DW_OP_GNU_reinterpret) \
- DWARF_ONE_KNOWN_DW_OP (GNU_uninit, DW_OP_GNU_uninit) \
- DWARF_ONE_KNOWN_DW_OP (abs, DW_OP_abs) \
- DWARF_ONE_KNOWN_DW_OP (addr, DW_OP_addr) \
- DWARF_ONE_KNOWN_DW_OP (and, DW_OP_and) \
- DWARF_ONE_KNOWN_DW_OP (bit_piece, DW_OP_bit_piece) \
- DWARF_ONE_KNOWN_DW_OP (bra, DW_OP_bra) \
- DWARF_ONE_KNOWN_DW_OP (breg0, DW_OP_breg0) \
- DWARF_ONE_KNOWN_DW_OP (breg1, DW_OP_breg1) \
- DWARF_ONE_KNOWN_DW_OP (breg10, DW_OP_breg10) \
- DWARF_ONE_KNOWN_DW_OP (breg11, DW_OP_breg11) \
- DWARF_ONE_KNOWN_DW_OP (breg12, DW_OP_breg12) \
- DWARF_ONE_KNOWN_DW_OP (breg13, DW_OP_breg13) \
- DWARF_ONE_KNOWN_DW_OP (breg14, DW_OP_breg14) \
- DWARF_ONE_KNOWN_DW_OP (breg15, DW_OP_breg15) \
- DWARF_ONE_KNOWN_DW_OP (breg16, DW_OP_breg16) \
- DWARF_ONE_KNOWN_DW_OP (breg17, DW_OP_breg17) \
- DWARF_ONE_KNOWN_DW_OP (breg18, DW_OP_breg18) \
- DWARF_ONE_KNOWN_DW_OP (breg19, DW_OP_breg19) \
- DWARF_ONE_KNOWN_DW_OP (breg2, DW_OP_breg2) \
- DWARF_ONE_KNOWN_DW_OP (breg20, DW_OP_breg20) \
- DWARF_ONE_KNOWN_DW_OP (breg21, DW_OP_breg21) \
- DWARF_ONE_KNOWN_DW_OP (breg22, DW_OP_breg22) \
- DWARF_ONE_KNOWN_DW_OP (breg23, DW_OP_breg23) \
- DWARF_ONE_KNOWN_DW_OP (breg24, DW_OP_breg24) \
- DWARF_ONE_KNOWN_DW_OP (breg25, DW_OP_breg25) \
- DWARF_ONE_KNOWN_DW_OP (breg26, DW_OP_breg26) \
- DWARF_ONE_KNOWN_DW_OP (breg27, DW_OP_breg27) \
- DWARF_ONE_KNOWN_DW_OP (breg28, DW_OP_breg28) \
- DWARF_ONE_KNOWN_DW_OP (breg29, DW_OP_breg29) \
- DWARF_ONE_KNOWN_DW_OP (breg3, DW_OP_breg3) \
- DWARF_ONE_KNOWN_DW_OP (breg30, DW_OP_breg30) \
- DWARF_ONE_KNOWN_DW_OP (breg31, DW_OP_breg31) \
- DWARF_ONE_KNOWN_DW_OP (breg4, DW_OP_breg4) \
- DWARF_ONE_KNOWN_DW_OP (breg5, DW_OP_breg5) \
- DWARF_ONE_KNOWN_DW_OP (breg6, DW_OP_breg6) \
- DWARF_ONE_KNOWN_DW_OP (breg7, DW_OP_breg7) \
- DWARF_ONE_KNOWN_DW_OP (breg8, DW_OP_breg8) \
- DWARF_ONE_KNOWN_DW_OP (breg9, DW_OP_breg9) \
- DWARF_ONE_KNOWN_DW_OP (bregx, DW_OP_bregx) \
- DWARF_ONE_KNOWN_DW_OP (call2, DW_OP_call2) \
- DWARF_ONE_KNOWN_DW_OP (call4, DW_OP_call4) \
- DWARF_ONE_KNOWN_DW_OP (call_frame_cfa, DW_OP_call_frame_cfa) \
- DWARF_ONE_KNOWN_DW_OP (call_ref, DW_OP_call_ref) \
- DWARF_ONE_KNOWN_DW_OP (const1s, DW_OP_const1s) \
- DWARF_ONE_KNOWN_DW_OP (const1u, DW_OP_const1u) \
- DWARF_ONE_KNOWN_DW_OP (const2s, DW_OP_const2s) \
- DWARF_ONE_KNOWN_DW_OP (const2u, DW_OP_const2u) \
- DWARF_ONE_KNOWN_DW_OP (const4s, DW_OP_const4s) \
- DWARF_ONE_KNOWN_DW_OP (const4u, DW_OP_const4u) \
- DWARF_ONE_KNOWN_DW_OP (const8s, DW_OP_const8s) \
- DWARF_ONE_KNOWN_DW_OP (const8u, DW_OP_const8u) \
- DWARF_ONE_KNOWN_DW_OP (consts, DW_OP_consts) \
- DWARF_ONE_KNOWN_DW_OP (constu, DW_OP_constu) \
- DWARF_ONE_KNOWN_DW_OP (deref, DW_OP_deref) \
- DWARF_ONE_KNOWN_DW_OP (deref_size, DW_OP_deref_size) \
- DWARF_ONE_KNOWN_DW_OP (div, DW_OP_div) \
- DWARF_ONE_KNOWN_DW_OP (drop, DW_OP_drop) \
- DWARF_ONE_KNOWN_DW_OP (dup, DW_OP_dup) \
- DWARF_ONE_KNOWN_DW_OP (eq, DW_OP_eq) \
- DWARF_ONE_KNOWN_DW_OP (fbreg, DW_OP_fbreg) \
- DWARF_ONE_KNOWN_DW_OP (form_tls_address, DW_OP_form_tls_address) \
- DWARF_ONE_KNOWN_DW_OP (ge, DW_OP_ge) \
- DWARF_ONE_KNOWN_DW_OP (gt, DW_OP_gt) \
- DWARF_ONE_KNOWN_DW_OP (implicit_value, DW_OP_implicit_value) \
- DWARF_ONE_KNOWN_DW_OP (le, DW_OP_le) \
- DWARF_ONE_KNOWN_DW_OP (lit0, DW_OP_lit0) \
- DWARF_ONE_KNOWN_DW_OP (lit1, DW_OP_lit1) \
- DWARF_ONE_KNOWN_DW_OP (lit10, DW_OP_lit10) \
- DWARF_ONE_KNOWN_DW_OP (lit11, DW_OP_lit11) \
- DWARF_ONE_KNOWN_DW_OP (lit12, DW_OP_lit12) \
- DWARF_ONE_KNOWN_DW_OP (lit13, DW_OP_lit13) \
- DWARF_ONE_KNOWN_DW_OP (lit14, DW_OP_lit14) \
- DWARF_ONE_KNOWN_DW_OP (lit15, DW_OP_lit15) \
- DWARF_ONE_KNOWN_DW_OP (lit16, DW_OP_lit16) \
- DWARF_ONE_KNOWN_DW_OP (lit17, DW_OP_lit17) \
- DWARF_ONE_KNOWN_DW_OP (lit18, DW_OP_lit18) \
- DWARF_ONE_KNOWN_DW_OP (lit19, DW_OP_lit19) \
- DWARF_ONE_KNOWN_DW_OP (lit2, DW_OP_lit2) \
- DWARF_ONE_KNOWN_DW_OP (lit20, DW_OP_lit20) \
- DWARF_ONE_KNOWN_DW_OP (lit21, DW_OP_lit21) \
- DWARF_ONE_KNOWN_DW_OP (lit22, DW_OP_lit22) \
- DWARF_ONE_KNOWN_DW_OP (lit23, DW_OP_lit23) \
- DWARF_ONE_KNOWN_DW_OP (lit24, DW_OP_lit24) \
- DWARF_ONE_KNOWN_DW_OP (lit25, DW_OP_lit25) \
- DWARF_ONE_KNOWN_DW_OP (lit26, DW_OP_lit26) \
- DWARF_ONE_KNOWN_DW_OP (lit27, DW_OP_lit27) \
- DWARF_ONE_KNOWN_DW_OP (lit28, DW_OP_lit28) \
- DWARF_ONE_KNOWN_DW_OP (lit29, DW_OP_lit29) \
- DWARF_ONE_KNOWN_DW_OP (lit3, DW_OP_lit3) \
- DWARF_ONE_KNOWN_DW_OP (lit30, DW_OP_lit30) \
- DWARF_ONE_KNOWN_DW_OP (lit31, DW_OP_lit31) \
- DWARF_ONE_KNOWN_DW_OP (lit4, DW_OP_lit4) \
- DWARF_ONE_KNOWN_DW_OP (lit5, DW_OP_lit5) \
- DWARF_ONE_KNOWN_DW_OP (lit6, DW_OP_lit6) \
- DWARF_ONE_KNOWN_DW_OP (lit7, DW_OP_lit7) \
- DWARF_ONE_KNOWN_DW_OP (lit8, DW_OP_lit8) \
- DWARF_ONE_KNOWN_DW_OP (lit9, DW_OP_lit9) \
- DWARF_ONE_KNOWN_DW_OP (lt, DW_OP_lt) \
- DWARF_ONE_KNOWN_DW_OP (minus, DW_OP_minus) \
- DWARF_ONE_KNOWN_DW_OP (mod, DW_OP_mod) \
- DWARF_ONE_KNOWN_DW_OP (mul, DW_OP_mul) \
- DWARF_ONE_KNOWN_DW_OP (ne, DW_OP_ne) \
- DWARF_ONE_KNOWN_DW_OP (neg, DW_OP_neg) \
- DWARF_ONE_KNOWN_DW_OP (nop, DW_OP_nop) \
- DWARF_ONE_KNOWN_DW_OP (not, DW_OP_not) \
- DWARF_ONE_KNOWN_DW_OP (or, DW_OP_or) \
- DWARF_ONE_KNOWN_DW_OP (over, DW_OP_over) \
- DWARF_ONE_KNOWN_DW_OP (pick, DW_OP_pick) \
- DWARF_ONE_KNOWN_DW_OP (piece, DW_OP_piece) \
- DWARF_ONE_KNOWN_DW_OP (plus, DW_OP_plus) \
- DWARF_ONE_KNOWN_DW_OP (plus_uconst, DW_OP_plus_uconst) \
- DWARF_ONE_KNOWN_DW_OP (push_object_address, DW_OP_push_object_address) \
- DWARF_ONE_KNOWN_DW_OP (reg0, DW_OP_reg0) \
- DWARF_ONE_KNOWN_DW_OP (reg1, DW_OP_reg1) \
- DWARF_ONE_KNOWN_DW_OP (reg10, DW_OP_reg10) \
- DWARF_ONE_KNOWN_DW_OP (reg11, DW_OP_reg11) \
- DWARF_ONE_KNOWN_DW_OP (reg12, DW_OP_reg12) \
- DWARF_ONE_KNOWN_DW_OP (reg13, DW_OP_reg13) \
- DWARF_ONE_KNOWN_DW_OP (reg14, DW_OP_reg14) \
- DWARF_ONE_KNOWN_DW_OP (reg15, DW_OP_reg15) \
- DWARF_ONE_KNOWN_DW_OP (reg16, DW_OP_reg16) \
- DWARF_ONE_KNOWN_DW_OP (reg17, DW_OP_reg17) \
- DWARF_ONE_KNOWN_DW_OP (reg18, DW_OP_reg18) \
- DWARF_ONE_KNOWN_DW_OP (reg19, DW_OP_reg19) \
- DWARF_ONE_KNOWN_DW_OP (reg2, DW_OP_reg2) \
- DWARF_ONE_KNOWN_DW_OP (reg20, DW_OP_reg20) \
- DWARF_ONE_KNOWN_DW_OP (reg21, DW_OP_reg21) \
- DWARF_ONE_KNOWN_DW_OP (reg22, DW_OP_reg22) \
- DWARF_ONE_KNOWN_DW_OP (reg23, DW_OP_reg23) \
- DWARF_ONE_KNOWN_DW_OP (reg24, DW_OP_reg24) \
- DWARF_ONE_KNOWN_DW_OP (reg25, DW_OP_reg25) \
- DWARF_ONE_KNOWN_DW_OP (reg26, DW_OP_reg26) \
- DWARF_ONE_KNOWN_DW_OP (reg27, DW_OP_reg27) \
- DWARF_ONE_KNOWN_DW_OP (reg28, DW_OP_reg28) \
- DWARF_ONE_KNOWN_DW_OP (reg29, DW_OP_reg29) \
- DWARF_ONE_KNOWN_DW_OP (reg3, DW_OP_reg3) \
- DWARF_ONE_KNOWN_DW_OP (reg30, DW_OP_reg30) \
- DWARF_ONE_KNOWN_DW_OP (reg31, DW_OP_reg31) \
- DWARF_ONE_KNOWN_DW_OP (reg4, DW_OP_reg4) \
- DWARF_ONE_KNOWN_DW_OP (reg5, DW_OP_reg5) \
- DWARF_ONE_KNOWN_DW_OP (reg6, DW_OP_reg6) \
- DWARF_ONE_KNOWN_DW_OP (reg7, DW_OP_reg7) \
- DWARF_ONE_KNOWN_DW_OP (reg8, DW_OP_reg8) \
- DWARF_ONE_KNOWN_DW_OP (reg9, DW_OP_reg9) \
- DWARF_ONE_KNOWN_DW_OP (regx, DW_OP_regx) \
- DWARF_ONE_KNOWN_DW_OP (rot, DW_OP_rot) \
- DWARF_ONE_KNOWN_DW_OP (shl, DW_OP_shl) \
- DWARF_ONE_KNOWN_DW_OP (shr, DW_OP_shr) \
- DWARF_ONE_KNOWN_DW_OP (shra, DW_OP_shra) \
- DWARF_ONE_KNOWN_DW_OP (skip, DW_OP_skip) \
- DWARF_ONE_KNOWN_DW_OP (stack_value, DW_OP_stack_value) \
- DWARF_ONE_KNOWN_DW_OP (swap, DW_OP_swap) \
- DWARF_ONE_KNOWN_DW_OP (xderef, DW_OP_xderef) \
- DWARF_ONE_KNOWN_DW_OP (xderef_size, DW_OP_xderef_size) \
- DWARF_ONE_KNOWN_DW_OP (xor, DW_OP_xor) \
- /* End of DW_OP_*. */
-
-#define DWARF_ALL_KNOWN_DW_ORD \
- DWARF_ONE_KNOWN_DW_ORD (col_major, DW_ORD_col_major) \
- DWARF_ONE_KNOWN_DW_ORD (row_major, DW_ORD_row_major) \
- /* End of DW_ORD_*. */
-
-#define DWARF_ALL_KNOWN_DW_TAG \
- DWARF_ONE_KNOWN_DW_TAG (GNU_BINCL, DW_TAG_GNU_BINCL) \
- DWARF_ONE_KNOWN_DW_TAG (GNU_EINCL, DW_TAG_GNU_EINCL) \
- DWARF_ONE_KNOWN_DW_TAG (GNU_call_site, DW_TAG_GNU_call_site) \
- DWARF_ONE_KNOWN_DW_TAG (GNU_call_site_parameter, DW_TAG_GNU_call_site_parameter) \
- DWARF_ONE_KNOWN_DW_TAG (GNU_formal_parameter_pack, DW_TAG_GNU_formal_parameter_pack) \
- DWARF_ONE_KNOWN_DW_TAG (GNU_template_parameter_pack, DW_TAG_GNU_template_parameter_pack) \
- DWARF_ONE_KNOWN_DW_TAG (GNU_template_template_param, DW_TAG_GNU_template_template_param) \
- DWARF_ONE_KNOWN_DW_TAG (MIPS_loop, DW_TAG_MIPS_loop) \
- DWARF_ONE_KNOWN_DW_TAG (access_declaration, DW_TAG_access_declaration) \
- DWARF_ONE_KNOWN_DW_TAG (array_type, DW_TAG_array_type) \
- DWARF_ONE_KNOWN_DW_TAG (atomic_type, DW_TAG_atomic_type) \
- DWARF_ONE_KNOWN_DW_TAG (base_type, DW_TAG_base_type) \
- DWARF_ONE_KNOWN_DW_TAG (catch_block, DW_TAG_catch_block) \
- DWARF_ONE_KNOWN_DW_TAG (class_template, DW_TAG_class_template) \
- DWARF_ONE_KNOWN_DW_TAG (class_type, DW_TAG_class_type) \
- DWARF_ONE_KNOWN_DW_TAG (common_block, DW_TAG_common_block) \
- DWARF_ONE_KNOWN_DW_TAG (common_inclusion, DW_TAG_common_inclusion) \
- DWARF_ONE_KNOWN_DW_TAG (compile_unit, DW_TAG_compile_unit) \
- DWARF_ONE_KNOWN_DW_TAG (condition, DW_TAG_condition) \
- DWARF_ONE_KNOWN_DW_TAG (const_type, DW_TAG_const_type) \
- DWARF_ONE_KNOWN_DW_TAG (constant, DW_TAG_constant) \
- DWARF_ONE_KNOWN_DW_TAG (dwarf_procedure, DW_TAG_dwarf_procedure) \
- DWARF_ONE_KNOWN_DW_TAG (entry_point, DW_TAG_entry_point) \
- DWARF_ONE_KNOWN_DW_TAG (enumeration_type, DW_TAG_enumeration_type) \
- DWARF_ONE_KNOWN_DW_TAG (enumerator, DW_TAG_enumerator) \
- DWARF_ONE_KNOWN_DW_TAG (file_type, DW_TAG_file_type) \
- DWARF_ONE_KNOWN_DW_TAG (formal_parameter, DW_TAG_formal_parameter) \
- DWARF_ONE_KNOWN_DW_TAG (format_label, DW_TAG_format_label) \
- DWARF_ONE_KNOWN_DW_TAG (friend, DW_TAG_friend) \
- DWARF_ONE_KNOWN_DW_TAG (function_template, DW_TAG_function_template) \
- DWARF_ONE_KNOWN_DW_TAG (imported_declaration, DW_TAG_imported_declaration) \
- DWARF_ONE_KNOWN_DW_TAG (imported_module, DW_TAG_imported_module) \
- DWARF_ONE_KNOWN_DW_TAG (imported_unit, DW_TAG_imported_unit) \
- DWARF_ONE_KNOWN_DW_TAG (inheritance, DW_TAG_inheritance) \
- DWARF_ONE_KNOWN_DW_TAG (inlined_subroutine, DW_TAG_inlined_subroutine) \
- DWARF_ONE_KNOWN_DW_TAG (interface_type, DW_TAG_interface_type) \
- DWARF_ONE_KNOWN_DW_TAG (label, DW_TAG_label) \
- DWARF_ONE_KNOWN_DW_TAG (lexical_block, DW_TAG_lexical_block) \
- DWARF_ONE_KNOWN_DW_TAG (member, DW_TAG_member) \
- DWARF_ONE_KNOWN_DW_TAG (module, DW_TAG_module) \
- DWARF_ONE_KNOWN_DW_TAG (namelist, DW_TAG_namelist) \
- DWARF_ONE_KNOWN_DW_TAG (namelist_item, DW_TAG_namelist_item) \
- DWARF_ONE_KNOWN_DW_TAG (namespace, DW_TAG_namespace) \
- DWARF_ONE_KNOWN_DW_TAG (packed_type, DW_TAG_packed_type) \
- DWARF_ONE_KNOWN_DW_TAG (partial_unit, DW_TAG_partial_unit) \
- DWARF_ONE_KNOWN_DW_TAG (pointer_type, DW_TAG_pointer_type) \
- DWARF_ONE_KNOWN_DW_TAG (ptr_to_member_type, DW_TAG_ptr_to_member_type) \
- DWARF_ONE_KNOWN_DW_TAG (reference_type, DW_TAG_reference_type) \
- DWARF_ONE_KNOWN_DW_TAG (restrict_type, DW_TAG_restrict_type) \
- DWARF_ONE_KNOWN_DW_TAG (rvalue_reference_type, DW_TAG_rvalue_reference_type) \
- DWARF_ONE_KNOWN_DW_TAG (set_type, DW_TAG_set_type) \
- DWARF_ONE_KNOWN_DW_TAG (shared_type, DW_TAG_shared_type) \
- DWARF_ONE_KNOWN_DW_TAG (string_type, DW_TAG_string_type) \
- DWARF_ONE_KNOWN_DW_TAG (structure_type, DW_TAG_structure_type) \
- DWARF_ONE_KNOWN_DW_TAG (subprogram, DW_TAG_subprogram) \
- DWARF_ONE_KNOWN_DW_TAG (subrange_type, DW_TAG_subrange_type) \
- DWARF_ONE_KNOWN_DW_TAG (subroutine_type, DW_TAG_subroutine_type) \
- DWARF_ONE_KNOWN_DW_TAG (template_alias, DW_TAG_template_alias) \
- DWARF_ONE_KNOWN_DW_TAG (template_type_parameter, DW_TAG_template_type_parameter) \
- DWARF_ONE_KNOWN_DW_TAG (template_value_parameter, DW_TAG_template_value_parameter) \
- DWARF_ONE_KNOWN_DW_TAG (thrown_type, DW_TAG_thrown_type) \
- DWARF_ONE_KNOWN_DW_TAG (try_block, DW_TAG_try_block) \
- DWARF_ONE_KNOWN_DW_TAG (type_unit, DW_TAG_type_unit) \
- DWARF_ONE_KNOWN_DW_TAG (typedef, DW_TAG_typedef) \
- DWARF_ONE_KNOWN_DW_TAG (union_type, DW_TAG_union_type) \
- DWARF_ONE_KNOWN_DW_TAG (unspecified_parameters, DW_TAG_unspecified_parameters) \
- DWARF_ONE_KNOWN_DW_TAG (unspecified_type, DW_TAG_unspecified_type) \
- DWARF_ONE_KNOWN_DW_TAG (variable, DW_TAG_variable) \
- DWARF_ONE_KNOWN_DW_TAG (variant, DW_TAG_variant) \
- DWARF_ONE_KNOWN_DW_TAG (variant_part, DW_TAG_variant_part) \
- DWARF_ONE_KNOWN_DW_TAG (volatile_type, DW_TAG_volatile_type) \
- DWARF_ONE_KNOWN_DW_TAG (with_stmt, DW_TAG_with_stmt) \
- /* End of DW_TAG_*. */
-
-#define DWARF_ALL_KNOWN_DW_VIRTUALITY \
- DWARF_ONE_KNOWN_DW_VIRTUALITY (none, DW_VIRTUALITY_none) \
- DWARF_ONE_KNOWN_DW_VIRTUALITY (pure_virtual, DW_VIRTUALITY_pure_virtual) \
- DWARF_ONE_KNOWN_DW_VIRTUALITY (virtual, DW_VIRTUALITY_virtual) \
- /* End of DW_VIRTUALITY_*. */
-
-#define DWARF_ALL_KNOWN_DW_VIS \
- DWARF_ONE_KNOWN_DW_VIS (exported, DW_VIS_exported) \
- DWARF_ONE_KNOWN_DW_VIS (local, DW_VIS_local) \
- DWARF_ONE_KNOWN_DW_VIS (qualified, DW_VIS_qualified) \
- /* End of DW_VIS_*. */
diff --git a/libdw/libdw.h b/libdw/libdw.h
index e20961be..77174d28 100644
--- a/libdw/libdw.h
+++ b/libdw/libdw.h
@@ -243,7 +243,7 @@ extern Dwarf *dwarf_begin_elf (Elf *elf, Dwarf_Cmd cmd, Elf_Scn *scngrp);
/* Retrieve ELF descriptor used for DWARF access. */
extern Elf *dwarf_getelf (Dwarf *dwarf);
-/* Retieve DWARF descriptor used for a Dwarf_Die or Dwarf_Attribute.
+/* Retrieve DWARF descriptor used for a Dwarf_Die or Dwarf_Attribute.
A Dwarf_Die or a Dwarf_Attribute is associated with a particular
Dwarf_CU handle. This function returns the DWARF descriptor for
that Dwarf_CU. */
@@ -429,7 +429,7 @@ extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result)
given DIE) that isn't a type alias or qualifier type. Returns 1
when RESULT contains a type alias or qualifier Dwarf_Die that
couldn't be peeled further (it doesn't have a DW_TAG_type
- attribute). Returns -1 when an error occured.
+ attribute). Returns -1 when an error occurred.
The current DWARF specification defines one type alias tag
(DW_TAG_typedef) and seven modifier/qualifier type tags
@@ -474,7 +474,14 @@ extern Dwarf_Attribute *dwarf_attr (Dwarf_Die *die, unsigned int search_name,
extern int dwarf_hasattr (Dwarf_Die *die, unsigned int search_name);
/* These are the same as dwarf_attr and dwarf_hasattr, respectively,
- but they resolve an indirect attribute through DW_AT_abstract_origin. */
+ but they resolve an indirect attribute through
+ DW_AT_abstract_origin, DW_AT_specification or, if the DIE is a
+ top-level split CU, the skeleton DIE. Note that the attribute
+ might come from a DIE in a different CU (possibly from a different
+ Dwarf file). In that case all attribute information needs to be
+ resolved through the CU associated with the returned
+ Dwarf_Attribute. The dwarf_form functions already do this
+ automatically. */
extern Dwarf_Attribute *dwarf_attr_integrate (Dwarf_Die *die,
unsigned int search_name,
Dwarf_Attribute *result)
@@ -689,13 +696,13 @@ extern int dwarf_linediscriminator (Dwarf_Line *line, unsigned int *discp)
/* Find line information for address. The returned string is NULL when
- an error occured, or the file path. The file path is either absolute
+ an error occurred, or the file path. The file path is either absolute
or relative to the compilation directory. See dwarf_decl_file. */
extern const char *dwarf_linesrc (Dwarf_Line *line,
Dwarf_Word *mtime, Dwarf_Word *length);
/* Return file information. The returned string is NULL when
- an error occured, or the file path. The file path is either absolute
+ an error occurred, or the file path. The file path is either absolute
or relative to the compilation directory. See dwarf_decl_file. */
extern const char *dwarf_filesrc (Dwarf_Files *file, size_t idx,
Dwarf_Word *mtime, Dwarf_Word *length);
@@ -893,7 +900,7 @@ extern ptrdiff_t dwarf_getfuncs (Dwarf_Die *cudie,
directory can be retrieved through:
dwarf_formstring (dwarf_attr (dwarf_diecu (decl, &cudie, NULL, NULL),
DW_AT_comp_dir, &attr));
- Returns NULL if no decl_file could be found or an error occured. */
+ Returns NULL if no decl_file could be found or an error occurred. */
extern const char *dwarf_decl_file (Dwarf_Die *decl);
/* Get line number of beginning of given declaration. */
@@ -1054,9 +1061,11 @@ extern int dwarf_frame_cfa (Dwarf_Frame *frame, Dwarf_Op **ops, size_t *nops)
caller's REGNO is "same_value", i.e. this frame did not change it;
ask the caller frame where to find it.
- For common simple expressions *OPS is OPS_MEM. For arbitrary DWARF
- expressions in the CFI, *OPS is an internal pointer that can be used as
- long as the Dwarf_CFI used to create FRAME remains alive. */
+ For common simple expressions *OPS is OPS_MEM (which is a caller
+ owned array for at least 3 Dwarf_Ops). For arbitrary DWARF
+ expressions in the CFI, *OPS is an internal pointer that can be
+ used as long as the Dwarf_CFI used to create FRAME remains
+ alive. */
extern int dwarf_frame_register (Dwarf_Frame *frame, int regno,
Dwarf_Op ops_mem[3],
Dwarf_Op **ops, size_t *nops)
diff --git a/libdw/libdw.map b/libdw/libdw.map
index decac05c..8ab0a2a0 100644
--- a/libdw/libdw.map
+++ b/libdw/libdw.map
@@ -149,8 +149,6 @@ ELFUTILS_0.126 {
global:
dwarf_getelf;
- local:
- *;
} ELFUTILS_0.122;
ELFUTILS_0.127 {
@@ -161,8 +159,6 @@ ELFUTILS_0.127 {
dwfl_report_begin_add;
dwfl_module_address_section;
- local:
- *;
} ELFUTILS_0.126;
ELFUTILS_0.130 {
@@ -172,8 +168,6 @@ ELFUTILS_0.130 {
dwfl_module_build_id;
dwfl_module_report_build_id;
- local:
- *;
} ELFUTILS_0.127;
ELFUTILS_0.136 {
@@ -181,8 +175,6 @@ ELFUTILS_0.136 {
dwfl_addrsegment;
dwfl_report_segment;
- local:
- *;
} ELFUTILS_0.130;
ELFUTILS_0.138 {
@@ -190,8 +182,6 @@ ELFUTILS_0.138 {
# Replaced ELFUTILS_0.130 version, which has bug-compatibility wrapper.
dwfl_module_build_id;
- local:
- *;
} ELFUTILS_0.136;
ELFUTILS_0.142 {
diff --git a/libdw/libdwP.h b/libdw/libdwP.h
index 36c2acd9..7174ea93 100644
--- a/libdw/libdwP.h
+++ b/libdw/libdwP.h
@@ -38,10 +38,6 @@
#include "atomics.h"
-/* gettext helper macros. */
-#define _(Str) dgettext ("elfutils", Str)
-
-
/* Known location expressions already decoded. */
struct loc_s
{
@@ -68,7 +64,7 @@ struct files_lines_s
Dwarf_Lines *lines;
};
-/* Valid indeces for the section data. */
+/* Valid indices for the section data. */
enum
{
IDX_debug_info = 0,
@@ -438,7 +434,7 @@ __libdw_first_die_from_cu_start (Dwarf_Off cu_start,
Both signature and type offset are optional.
Note same 4/8 offset size trick as above.
- We explicitly ignore unknow unit types (see asserts above). */
+ We explicitly ignore unknown unit types (see asserts above). */
off += 3 * offset_size - 4 + 4;
if (unit_type == DW_UT_skeleton || unit_type == DW_UT_split_compile
|| unit_type == DW_UT_type || unit_type == DW_UT_split_type)
diff --git a/libdw/libdw_alloc.c b/libdw/libdw_alloc.c
index e0281a3d..b3e53343 100644
--- a/libdw/libdw_alloc.c
+++ b/libdw/libdw_alloc.c
@@ -87,6 +87,11 @@ __libdw_alloc_tail (Dwarf *dbg)
if (result == NULL)
{
result = malloc (dbg->mem_default_size);
+ if (result == NULL)
+ {
+ pthread_rwlock_unlock (&dbg->mem_rwl);
+ dbg->oom_handler();
+ }
result->size = dbg->mem_default_size
- offsetof (struct libdw_memblock, mem);
result->remaining = result->size;
diff --git a/libdw/libdw_visit_scopes.c b/libdw/libdw_visit_scopes.c
index eb892e10..7dfa5f6b 100644
--- a/libdw/libdw_visit_scopes.c
+++ b/libdw/libdw_visit_scopes.c
@@ -125,8 +125,12 @@ walk_children (struct walk_children_state *state)
Dwarf_Attribute *attr = INTUSE(dwarf_attr) (&state->child.die,
DW_AT_import,
&attr_mem);
+ /* Some gcc -flto versions imported other top-level compile units,
+ skip those. */
if (INTUSE(dwarf_formref_die) (attr, &state->child.die) != NULL
- && INTUSE(dwarf_child) (&state->child.die, &state->child.die) == 0)
+ && INTUSE(dwarf_tag) (&state->child.die) != DW_TAG_compile_unit
+ && (INTUSE(dwarf_child) (&state->child.die, &state->child.die)
+ == 0))
{
/* Checks the given DIE hasn't been imported yet
to prevent cycles. */
diff --git a/libdw/memory-access.h b/libdw/memory-access.h
index a39ad6d2..8b2386ee 100644
--- a/libdw/memory-access.h
+++ b/libdw/memory-access.h
@@ -113,19 +113,22 @@ __libdw_get_uleb128_unchecked (const unsigned char **addrp)
#define get_sleb128_step(var, addr, nth) \
do { \
unsigned char __b = *(addr)++; \
+ (var) |= (typeof (var)) (__b & 0x7f) << ((nth) * 7); \
if (likely ((__b & 0x80) == 0)) \
{ \
- struct { signed int i:7; } __s = { .i = __b }; \
- (var) |= (typeof (var)) __s.i * ((typeof (var)) 1 << ((nth) * 7)); \
+ if ((__b & 0x40) != 0) \
+ (var) |= - ((typeof (var)) 1 << (((nth) + 1) * 7)); \
return (var); \
} \
- (var) |= (typeof (var)) (__b & 0x7f) << ((nth) * 7); \
} while (0)
static inline int64_t
__libdw_get_sleb128 (const unsigned char **addrp, const unsigned char *end)
{
- int64_t acc = 0;
+ /* Do the work in an unsigned type, but use implementation-defined
+ behavior to cast to signed on return. This avoids some undefined
+ behavior when shifting. */
+ uint64_t acc = 0;
/* Unroll the first step to help the compiler optimize
for the common single-byte case. */
@@ -134,6 +137,20 @@ __libdw_get_sleb128 (const unsigned char **addrp, const unsigned char *end)
const size_t max = __libdw_max_len_sleb128 (*addrp - 1, end);
for (size_t i = 1; i < max; ++i)
get_sleb128_step (acc, *addrp, i);
+ if (*addrp == end)
+ return INT64_MAX;
+
+ /* There might be one extra byte. */
+ unsigned char b = **addrp;
+ ++*addrp;
+ if (likely ((b & 0x80) == 0))
+ {
+ /* We only need the low bit of the final byte, and as it is the
+ sign bit, we don't need to do anything else here. */
+ acc |= ((typeof (acc)) b) << 7 * max;
+ return acc;
+ }
+
/* Other implementations set VALUE to INT_MAX in this
case. So we better do this as well. */
return INT64_MAX;
@@ -142,7 +159,10 @@ __libdw_get_sleb128 (const unsigned char **addrp, const unsigned char *end)
static inline int64_t
__libdw_get_sleb128_unchecked (const unsigned char **addrp)
{
- int64_t acc = 0;
+ /* Do the work in an unsigned type, but use implementation-defined
+ behavior to cast to signed on return. This avoids some undefined
+ behavior when shifting. */
+ uint64_t acc = 0;
/* Unroll the first step to help the compiler optimize
for the common single-byte case. */
@@ -152,6 +172,18 @@ __libdw_get_sleb128_unchecked (const unsigned char **addrp)
const size_t max = len_leb128 (int64_t) - 1;
for (size_t i = 1; i < max; ++i)
get_sleb128_step (acc, *addrp, i);
+
+ /* There might be one extra byte. */
+ unsigned char b = **addrp;
+ ++*addrp;
+ if (likely ((b & 0x80) == 0))
+ {
+ /* We only need the low bit of the final byte, and as it is the
+ sign bit, we don't need to do anything else here. */
+ acc |= ((typeof (acc)) b) << 7 * max;
+ return acc;
+ }
+
/* Other implementations set VALUE to INT_MAX in this
case. So we better do this as well. */
return INT64_MAX;
@@ -363,7 +395,7 @@ read_3ubyte_unaligned (Dwarf *dbg, const unsigned char *p)
#define read_3ubyte_unaligned_inc(Dbg, Addr) \
- ({ uint32_t t_ = read_2ubyte_unaligned (Dbg, Addr); \
+ ({ uint32_t t_ = read_3ubyte_unaligned (Dbg, Addr); \
Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 3); \
t_; })
diff --git a/libdwelf/ChangeLog b/libdwelf/ChangeLog
index 5b48ed8f..a0ff9f4f 100644
--- a/libdwelf/ChangeLog
+++ b/libdwelf/ChangeLog
@@ -1,3 +1,16 @@
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * libdwelf.h: Fix spelling typos in comments.
+ * dwelf_strtab.c (newstring): Likewise.
+
+ * dwelf_elf_e_machine_string.c (dwelf_elf_e_machine_string): Fix
+ spelling typos in returned strings.
+
+2020-06-04 Mark Wielaard <mark@klomp.org>
+
+ * dwelf_elf_e_machine_string.c (dwelf_elf_e_machine_string):
+ Rename EM_ARC_COMPACT2 to EM_ARCV2.
+
2019-08-12 Mark Wielaard <mark@klomp.org>
* libdwelf.h (dwelf_elf_begin): Update documentation.
diff --git a/libdwelf/dwelf_elf_e_machine_string.c b/libdwelf/dwelf_elf_e_machine_string.c
index de07b01e..387648e2 100644
--- a/libdwelf/dwelf_elf_e_machine_string.c
+++ b/libdwelf/dwelf_elf_e_machine_string.c
@@ -117,7 +117,7 @@ dwelf_elf_e_machine_string (int machine)
case EM_PCP:
return "Siemens PCP";
case EM_NCPU:
- return "Sony nCPU embeded RISC";
+ return "Sony nCPU embedded RISC";
case EM_NDR1:
return "Denso NDR1 microprocessor";
case EM_STARCORE:
@@ -289,11 +289,11 @@ dwelf_elf_e_machine_string (int machine)
case EM_STXP7X:
return "STMicroelectronics STxP7x";
case EM_NDS32:
- return "Andes Technology compact code size embeded RISC";
+ return "Andes Technology compact code size embedded RISC";
case EM_ECOG1X:
return "Cyan Technology eCOG1X";
case EM_MAXQ30:
- return "Dallas Semicondutor MAXQ30";
+ return "Dallas Semiconductor MAXQ30";
case EM_XIMO16:
return "New Japan Radio (NJR) 16-bit DSP";
case EM_MANIK:
@@ -340,8 +340,8 @@ dwelf_elf_e_machine_string (int machine)
return "KIPO-KAIST Core-A 1st gen";
case EM_COREA_2ND:
return "KIPO-KAIST Core-A 2nd gen";
- case EM_ARC_COMPACT2:
- return "Synopsys ARCompact V2";
+ case EM_ARCV2:
+ return "Synopsys ARCv2 ISA";
case EM_OPEN8:
return "Open8 RISC";
case EM_RL78:
diff --git a/libdwelf/dwelf_strtab.c b/libdwelf/dwelf_strtab.c
index 01e091c8..c6ae7cdf 100644
--- a/libdwelf/dwelf_strtab.c
+++ b/libdwelf/dwelf_strtab.c
@@ -183,7 +183,7 @@ newstring (Dwelf_Strtab *st, const char *str, size_t len)
/* XXX This function should definitely be rewritten to use a balancing
- tree algorith (AVL, red-black trees). For now a simple, correct
+ tree algorithm (AVL, red-black trees). For now a simple, correct
implementation is enough. */
static Dwelf_Strent **
searchstring (Dwelf_Strent **sep, Dwelf_Strent *newstr)
diff --git a/libdwelf/libdwelf.h b/libdwelf/libdwelf.h
index dbb8f08c..263ca60e 100644
--- a/libdwelf/libdwelf.h
+++ b/libdwelf/libdwelf.h
@@ -44,7 +44,7 @@ extern "C" {
/* Returns the name and the CRC32 of the separate debug file from the
.gnu_debuglink section if found in the ELF. Return NULL if the ELF
file didn't have a .gnu_debuglink section, had malformed data in the
- section or some other error occured. */
+ section or some other error occurred. */
extern const char *dwelf_elf_gnu_debuglink (Elf *elf, GElf_Word *crc);
/* Returns the name and build ID from the .gnu_debugaltlink section if
@@ -69,7 +69,7 @@ extern ssize_t dwelf_elf_gnu_build_id (Elf *elf, const void **build_idp);
section. The section name should start with .zdebug (but this
isn't checked by this function). If the section isn't compressed
(the section data doesn't start with ZLIB) -1 is returned. If an
- error occured -1 is returned and elf_errno is set. */
+ error occurred -1 is returned and elf_errno is set. */
extern ssize_t dwelf_scn_gnu_compressed_size (Elf_Scn *scn);
/* ELF/DWARF string table handling. */
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index b8222189..d107e78f 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,234 @@
+2021-02-01 Érico Nogueira <ericonr@disroot.org>
+
+ * dwfl_error.c (strerror_r): Only use the GNU version when available.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * elf-from-memory.c (elf_from_remote_memory): Add for loop over
+ switch. inline handle_segment call, set vaddr, offset and filesz
+ directly based on class.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * elf-from-memory.c (elf_from_remote_memory): Use if instead of
+ switch on class. Set new vaddr, memsz, offset and filesz
+ variables. Inline handle_segment function check and set loadbase,
+ found_base, segments_end and segments_end_mem directly.
+
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * argp-std.c (_): Remove.
+ * libdwflP.h (_): Likewise.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * libdwfl.h: Fix spelling typos in comments.
+ * dwfl_module_getdwarf.c (open_elf, find_symtab): Likewise.
+ * dwfl_report_elf.c (__libdwfl_elf_address_range): Likewise.
+ * linux-pid-attach.c (read_cached_memory): Likewise.
+
+2020-12-07 Timm Bäder <tbaeder@redhat.com>
+
+ * link_map.c (report_r_debug): Pull read_addrs() function into
+ file scope.
+
+2020-12-07 Timm Bäder <tbaeder@redhat.com>
+
+ * link_map.c (report_r_debug): Pull release_buffer() function into
+ file scope. Add memory_closure struct.
+
+2020-12-08 Dmitry V. Levin <ldv@altlinux.org>
+
+ * debuginfod-client.c (__libdwfl_debuginfod_init): Replace
+ "libdebuginfod-" VERSION ".so" with DEBUGINFOD_SONAME in dlopen call.
+ Do not fall back to dlopen of "libdebuginfod.so".
+
+2020-12-01 Timm Bäder <tbaeder@redhat.com>
+
+ * link_map.c (dwfl_link_map_report): Removed consider_phdr function
+ and inline code.
+
+2020-11-28 Mark Wielaard <mark@klomp.org>
+
+ * dwfl_segment_report_module.c (dwfl_segment_report_module):
+ Use GElf_Addr to calculate note_vaddr instead of size_t.
+
+2020-11-26 Timm Bäder <tbaeder@redhat.com>
+
+ * dwfl_segment_report_module.c (dwfl_segment_report_module):
+ Remove consider_notes function. Inline code for type == PT_NOTE.
+
+2020-11-26 Timm Bäder <tbaeder@redhat.com>
+
+ * dwfl_segment_report_module.c (read_portion): New static function.
+ (dwfl_segment_report_module): Remove read_portion function.
+ Call static function with read_state, start and segment.
+
+2020-11-26 Timm Bäder <tbaeder@redhat.com>
+
+ * dwfl_segment_report_module.c (struct read_state): New.
+ (finish_portion): New static function.
+ (dwfl_segment_report_module): Introduce read_state. Remove
+ finish_portion function. Call static function with read_state.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (dwfl_segment_report_module): Remove
+ consider_phdr, do checks inline.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (dwfl_segment_report_module): Remove
+ consider_dyn, do checks inline.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (dwfl_segment_report_module): Do one
+ loop check for d32/d64 arrays.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (dwfl_segment_report_module): Remove
+ read_phdr, do check and call memory_callback directly.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (dwfl_segment_report_module): Do one
+ loop check for p32/p64 arrays.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (dwfl_segment_report_module): Remove
+ final_read, call memory_callback directly.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (struct elf_build_id): New.
+ (dwfl_segment_report_module): Pass build_id as struct.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (dwfl_segment_report_module): Remove
+ release_buffer, call memory_callback directly.
+
+2020-11-23 Timm Bäder <tbaeder@redhat.com>
+
+ * segment_report_module.c (dwfl_segment_report_module): Remove
+ segment_read, call memory_callback directly.
+
+2020-11-19 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * linux-pid-attach.c (pid_memory_read): Shift the upper 4 bytes
+ down on big endian 64 bit targets.
+
+2020-11-12 Timm Bäder <tbaeder@redhat.com>
+
+ * dwfl_segment_report_module.c (dwfl_segment_report_module): Remove
+ finish function, replace with goto out.
+
+2020-11-12 Timm Bäder <tbaeder@redhat.com>
+
+ * dwfl_segment_report_module.c (dwfl_segment_report_module): Declare
+ p32 and p64 as pointers instead of arrays.
+
+2020-09-18 Mark Wielaard <mark@klomp.org>
+
+ * zstd.c: New file.
+ * libdwflP.h: Add DWFL_E_ZSTD and __libdw_unzstd.
+ * Makefile.am (libdwfl_a_SOURCES): add zstd.c if ZSTD.
+ * gzip.c: Add defines and includes for ZSTD.
+ (zlib_fail): Don't define for ZSTD.
+ (unzip): Change pread_retry failure from zlib_fail to fail.
+ Add ZSTD support.
+ * open.c (decompress): Also try __libdw_unzstd.
+ * linux-kernel-modules.c (check_suffix): Also TRY ".ko.zst".
+
+2020-08-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (libdwfl_a_SOURCES): Conditionalize
+ debuginfod-client.c on LIBDEBUGINFOD.
+ * dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Conditionalize
+ __libdwfl_debuginfod_find_executable invocation on
+ ENABLE_LIBDEBUGINFOD.
+ * dwfl_end.c (dwfl_end): Conditionalize __libdwfl_debuginfod_end
+ invocation on ENABLE_LIBDEBUGINFOD.
+ * find-debuginfo.c (dwfl_standard_find_debuginfo): Conditionalize
+ __libdwfl_debuginfod_find_debuginfo invocation on
+ ENABLE_LIBDEBUGINFOD.
+ * libdwflP.h: Guard debuginfod.h include with ENABLE_LIBDEBUGINFOD.
+ (struct Dwfl): Guard debuginfod field with ENABLE_LIBDEBUGINFOD.
+ (__libdwfl_debuginfod_find_executable,
+ __libdwfl_debuginfod_find_debuginfo, __libdwfl_debuginfod_end):
+ Guard declarations with ENABLE_LIBDEBUGINFOD.
+
+2020-07-05 Mark Wielaard <mark@klomp.org>
+
+ * argp-std.c (parse_opt): Don't assert, but call fail when
+ dwfl_report_end fails.
+ * dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Don't
+ assert, but goto bad_id when snprintf fails.
+ * frame_unwind.c (__libdwfl_frame_unwind): Don't assert, but
+ return when dwfl_frame_pc fails.
+ * linux-core-attach.c (core_set_initial_registers): Don't assert,
+ but return false when gelf_getnote fails or the core note is not
+ as expected.
+ * linux-pid-attach.c (dwfl_linux_proc_attach): Don't assert, but
+ goto fail when snprintf fails.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * frame_unwind.c (handle_cfi): Flag an error if
+ return_address_register is invalid.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * linux-kernel-modules.c (try_kernel_name): Don't try other
+ compressed kernels if we already found an compressed image.
+
+2020-05-09 Mark Wielaard <mark@klomp.org>
+
+ * find-debuginfo.c (dwfl_standard_find_debuginfo): Return failure
+ when mod is NULL.
+
+2020-05-08 Mark Wielaard <mark@klomp.org>
+
+ * libdwfl/core-file.c (dwfl_core_file_report): Keep track of
+ new bool cleanup_user_core and cleanup dwfl->user_core in error
+ case.
+
+2020-04-30 Mark Wielaard <mark@klomp.org>
+
+ * find-debuginfo.c (dwfl_standard_find_debuginfo): When mod->dw
+ is already set then try fetching debugaltlink.
+
+2020-04-25 Mark Wielaard <mark@klomp.org>
+
+ * gzip.c (open_stream): Return DWFL_E_NOMEM instead of calling
+ zlib_fail.
+
+2020-04-16 Mark Wielaard <mark@klomp.org>
+
+ * find-debuginfo.c (dwfl_standard_find_debuginfo): Initialize bits
+ to NULL.
+
+2020-01-24 Mark Wielaard <mark@klomp.org>
+
+ * linux-kernel-modules.c (find_kernel_elf): Check release isn't NULL.
+ (report_kernel): Check release and *release aren't NULL.
+ (report_kernel_archive): Likewise.
+
+2019-12-11 Omar Sandoval <osandov@fb.com>
+
+ * libdwflP.h (Dwfl_Module): Remove coalescing state.
+ Rename lookup_tail_ndx to next_segndx.
+ * segment.c (dwfl_report_segment): Remove coalescing logic.
+ * libdwfl.h (dwfl_report_segment): Document that IDENT is ignored.
+
+2019-12-05 Mark Wielaard <mark@klomp.org>
+
+ * linux-kernel-modules.c (find_kernel_elf): Also try to find
+ vmlinux image.
+
2019-10-28 Aaron Merey <amerey@redhat.com>
* dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Call debuginfod
@@ -614,7 +845,7 @@
* link_map.c (check32): Use read_4ubyte_unaligned_noncvt to read
type and value.
(read_addrs): Use read_(4|8)ubyte_unaligned_noncvt or to read
- adresses.
+ addresses.
2015-05-30 Mark Wielaard <mjw@redhat.com>
@@ -1536,7 +1767,7 @@
2013-01-23 Mark Wielaard <mjw@redhat.com>
- * dwfl_module_getdwarf.c (find_aux_sym): Don't substract one
+ * dwfl_module_getdwarf.c (find_aux_sym): Don't subtract one
from aux_syments by default.
(find_symtab): Also succeed when only aux_symdata is found.
When no symtab is found always try to load auxiliary table.
@@ -1544,7 +1775,7 @@
tables have symbols.
* dwfl_module_getsym.c (dwfl_module_getsym): Only skip auxiliary
zero entry when both tables have symbols.
- * dwfl_module_addrsym.c (dwfl_module_addrsym): Only substract
+ * dwfl_module_addrsym.c (dwfl_module_addrsym): Only subtract
one from first_global when both tables have symbols.
2013-01-16 Mark Wielaard <mjw@redhat.com>
diff --git a/libdwfl/Makefile.am b/libdwfl/Makefile.am
index 47bd62a5..a0013e41 100644
--- a/libdwfl/Makefile.am
+++ b/libdwfl/Makefile.am
@@ -70,7 +70,7 @@ libdwfl_a_SOURCES = dwfl_begin.c dwfl_end.c dwfl_error.c dwfl_version.c \
link_map.c core-file.c open.c image-header.c \
dwfl_frame.c frame_unwind.c dwfl_frame_pc.c \
linux-pid-attach.c linux-core-attach.c dwfl_frame_regs.c \
- gzip.c debuginfod-client.c
+ gzip.c
if BZLIB
libdwfl_a_SOURCES += bzip2.c
@@ -78,6 +78,12 @@ endif
if LZMA
libdwfl_a_SOURCES += lzma.c
endif
+if ZSTD
+libdwfl_a_SOURCES += zstd.c
+endif
+if LIBDEBUGINFOD
+libdwfl_a_SOURCES += debuginfod-client.c
+endif
libdwfl = $(libdw)
libdw = ../libdw/libdw.so
diff --git a/libdwfl/argp-std.c b/libdwfl/argp-std.c
index 8ee91587..01ec18e2 100644
--- a/libdwfl/argp-std.c
+++ b/libdwfl/argp-std.c
@@ -38,9 +38,6 @@
#include <fcntl.h>
#include <unistd.h>
-/* gettext helper macros. */
-#define _(Str) dgettext ("elfutils", Str)
-
#define OPT_DEBUGINFO 0x100
#define OPT_COREFILE 0x101
@@ -342,7 +339,8 @@ parse_opt (int key, char *arg, struct argp_state *state)
argp_parse. */
int result = INTUSE(dwfl_report_end) (dwfl, NULL, NULL);
- assert (result == 0);
+ if (result != 0)
+ return fail (dwfl, -1, arg, state);
/* Update the input all along, so a parent parser can see it.
As we free OPT the update below will be no longer active. */
diff --git a/libdwfl/core-file.c b/libdwfl/core-file.c
index 01109f4b..a0ccc9b3 100644
--- a/libdwfl/core-file.c
+++ b/libdwfl/core-file.c
@@ -450,6 +450,7 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable)
return -1;
}
+ bool cleanup_user_core = false;
if (dwfl->user_core != NULL)
free (dwfl->user_core->executable_for_core);
if (executable == NULL)
@@ -461,6 +462,7 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable)
{
if (dwfl->user_core == NULL)
{
+ cleanup_user_core = true;
dwfl->user_core = calloc (1, sizeof (struct Dwfl_User_Core));
if (dwfl->user_core == NULL)
{
@@ -472,6 +474,11 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable)
dwfl->user_core->executable_for_core = strdup (executable);
if (dwfl->user_core->executable_for_core == NULL)
{
+ if (cleanup_user_core)
+ {
+ free (dwfl->user_core);
+ dwfl->user_core = NULL;
+ }
__libdwfl_seterrno (DWFL_E_NOMEM);
return -1;
}
@@ -481,7 +488,15 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable)
GElf_Phdr notes_phdr;
int ndx = dwfl_report_core_segments (dwfl, elf, phnum, &notes_phdr);
if (unlikely (ndx <= 0))
- return ndx;
+ {
+ if (cleanup_user_core)
+ {
+ free (dwfl->user_core->executable_for_core);
+ free (dwfl->user_core);
+ dwfl->user_core = NULL;
+ }
+ return ndx;
+ }
/* Next, we should follow the chain from DT_DEBUG. */
diff --git a/libdwfl/debuginfod-client.c b/libdwfl/debuginfod-client.c
index ee604ad9..99b66b6e 100644
--- a/libdwfl/debuginfod-client.c
+++ b/libdwfl/debuginfod-client.c
@@ -101,10 +101,7 @@ __libdwfl_debuginfod_end (debuginfod_client *c)
void __attribute__ ((constructor))
__libdwfl_debuginfod_init (void)
{
- void *debuginfod_so = dlopen("libdebuginfod-" VERSION ".so", RTLD_LAZY);
-
- if (debuginfod_so == NULL)
- debuginfod_so = dlopen("libdebuginfod.so", RTLD_LAZY);
+ void *debuginfod_so = dlopen(DEBUGINFOD_SONAME, RTLD_LAZY);
if (debuginfod_so != NULL)
{
diff --git a/libdwfl/dwfl_build_id_find_elf.c b/libdwfl/dwfl_build_id_find_elf.c
index 4e56143f..7b604d47 100644
--- a/libdwfl/dwfl_build_id_find_elf.c
+++ b/libdwfl/dwfl_build_id_find_elf.c
@@ -48,6 +48,7 @@ __libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, char **file_name,
#define MAX_BUILD_ID_BYTES 64
if (id_len < MIN_BUILD_ID_BYTES || id_len > MAX_BUILD_ID_BYTES)
{
+ bad_id:
__libdwfl_seterrno (DWFL_E_WRONG_ID_ELF);
return -1;
}
@@ -59,12 +60,14 @@ __libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, char **file_name,
strcpy (id_name, "/.build-id/");
int n = snprintf (&id_name[sizeof "/.build-id/" - 1],
4, "%02" PRIx8 "/", (uint8_t) id[0]);
- assert (n == 3);
+ if (n != 3)
+ goto bad_id;;
for (size_t i = 1; i < id_len; ++i)
{
n = snprintf (&id_name[sizeof "/.build-id/" - 1 + 3 + (i - 1) * 2],
3, "%02" PRIx8, (uint8_t) id[i]);
- assert (n == 2);
+ if (n != 2)
+ goto bad_id;
}
if (debug)
strcpy (&id_name[sizeof "/.build-id/" - 1 + 3 + (id_len - 1) * 2],
@@ -189,12 +192,14 @@ dwfl_build_id_find_elf (Dwfl_Module *mod,
}
else
{
+#ifdef ENABLE_LIBDEBUGINFOD
/* If all else fails and a build-id is available, query the
debuginfo-server if enabled. */
if (fd < 0 && mod->build_id_len > 0)
fd = __libdwfl_debuginfod_find_executable (mod->dwfl,
mod->build_id_bits,
mod->build_id_len);
+#endif
}
if (fd < 0 && errno == 0 && mod->build_id_len > 0)
diff --git a/libdwfl/dwfl_end.c b/libdwfl/dwfl_end.c
index 4f6c722a..b1840191 100644
--- a/libdwfl/dwfl_end.c
+++ b/libdwfl/dwfl_end.c
@@ -39,7 +39,9 @@ dwfl_end (Dwfl *dwfl)
if (dwfl == NULL)
return;
+#ifdef ENABLE_LIBDEBUGINFOD
__libdwfl_debuginfod_end (dwfl->debuginfod);
+#endif
if (dwfl->process)
__libdwfl_process_free (dwfl->process);
diff --git a/libdwfl/dwfl_error.c b/libdwfl/dwfl_error.c
index 7bcf61cc..a5c683a9 100644
--- a/libdwfl/dwfl_error.c
+++ b/libdwfl/dwfl_error.c
@@ -137,6 +137,21 @@ __libdwfl_seterrno (Dwfl_Error error)
}
+static const char *
+errnomsg(int error)
+{
+ /* Won't be changed by strerror_r, but not const so compiler doesn't throw warning */
+ static char unknown[] = "unknown error";
+
+#ifdef STRERROR_R_CHAR_P
+ return strerror_r (error, unknown, 0);
+#else
+ /* To store the error message from strerror_r in a thread-safe manner */
+ static __thread char msg[128];
+ return strerror_r (error, msg, sizeof (msg)) ? unknown : msg;
+#endif
+}
+
const char *
dwfl_errmsg (int error)
{
@@ -154,7 +169,7 @@ dwfl_errmsg (int error)
switch (error &~ 0xffff)
{
case OTHER_ERROR (ERRNO):
- return strerror_r (error & 0xffff, "bad", 0);
+ return errnomsg (error & 0xffff);
case OTHER_ERROR (LIBELF):
return elf_errmsg (error & 0xffff);
case OTHER_ERROR (LIBDW):
diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
index 56e61054..2f3dd0dd 100644
--- a/libdwfl/dwfl_module_getdwarf.c
+++ b/libdwfl/dwfl_module_getdwarf.c
@@ -145,7 +145,7 @@ open_elf (Dwfl_Module *mod, struct dwfl_file *file)
}
}
- /* We only want to set the module e_type explictly once, derived from
+ /* We only want to set the module e_type explicitly once, derived from
the main ELF file. (It might be changed for the kernel, because
that is special - see below.) open_elf is always called first for
the main ELF file, because both find_dw and find_symtab call
@@ -1141,7 +1141,7 @@ find_symtab (Dwfl_Module *mod)
/* Cache the data; MOD->syments and MOD->first_global were set
above. If any of the sections is compressed, uncompress it
- first. Only the string data setion could theoretically be
+ first. Only the string data section could theoretically be
compressed GNU style (as .zdebug_str). Everything else only ELF
gabi style (SHF_COMPRESSED). */
diff --git a/libdwfl/dwfl_report_elf.c b/libdwfl/dwfl_report_elf.c
index 3fc9384a..9da86698 100644
--- a/libdwfl/dwfl_report_elf.c
+++ b/libdwfl/dwfl_report_elf.c
@@ -85,7 +85,7 @@ __libdwfl_elf_address_range (Elf *elf, GElf_Addr base, bool add_p_vaddr,
const GElf_Addr next = (end + align - 1) & -align;
if (shdr->sh_addr == 0
/* Once we've started doing layout we have to do it all,
- unless we just layed out the first section at 0 when
+ unless we just laid out the first section at 0 when
it already was at 0. */
|| (bias == 0 && end > start && end != next))
{
diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c
index 430e13d5..ee9cfa2e 100644
--- a/libdwfl/dwfl_segment_report_module.c
+++ b/libdwfl/dwfl_segment_report_module.c
@@ -54,6 +54,21 @@
# define MY_ELFDATA ELFDATA2MSB
#endif
+struct elf_build_id
+{
+ void *memory;
+ size_t len;
+ GElf_Addr vaddr;
+};
+
+struct read_state
+{
+ Dwfl *dwfl;
+ Dwfl_Memory_Callback *memory_callback;
+ void *memory_callback_arg;
+ void **buffer;
+ size_t *buffer_available;
+};
/* Return user segment index closest to ADDR but not above it.
If NEXT, return the closest to ADDR but not below it. */
@@ -206,16 +221,16 @@ handle_file_note (GElf_Addr module_start, GElf_Addr module_end,
static bool
invalid_elf (Elf *elf, bool disk_file_has_build_id,
- const void *build_id, size_t build_id_len)
+ struct elf_build_id *build_id)
{
- if (! disk_file_has_build_id && build_id_len > 0)
+ if (! disk_file_has_build_id && build_id->len > 0)
{
/* Module found in segments with build-id is more reliable
than a module found via DT_DEBUG on disk without any
build-id. */
return true;
}
- if (disk_file_has_build_id && build_id_len > 0)
+ if (disk_file_has_build_id && build_id->len > 0)
{
const void *elf_build_id;
ssize_t elf_build_id_len;
@@ -224,14 +239,55 @@ invalid_elf (Elf *elf, bool disk_file_has_build_id,
elf_build_id_len = INTUSE(dwelf_elf_gnu_build_id) (elf, &elf_build_id);
if (elf_build_id_len > 0)
{
- if (build_id_len != (size_t) elf_build_id_len
- || memcmp (build_id, elf_build_id, build_id_len) != 0)
+ if (build_id->len != (size_t) elf_build_id_len
+ || memcmp (build_id->memory, elf_build_id, build_id->len) != 0)
return true;
}
}
return false;
}
+static void
+finish_portion (struct read_state *read_state,
+ void **data, size_t *data_size)
+{
+ if (*data_size != 0 && *data != NULL)
+ (*read_state->memory_callback) (read_state->dwfl, -1, data, data_size,
+ 0, 0, read_state->memory_callback_arg);
+}
+
+static inline bool
+read_portion (struct read_state *read_state,
+ void **data, size_t *data_size,
+ GElf_Addr start, size_t segment,
+ GElf_Addr vaddr, size_t filesz)
+{
+ /* Check whether we will have to read the segment data, or if it
+ can be returned from the existing buffer. */
+ if (filesz > *read_state->buffer_available
+ || vaddr - start > *read_state->buffer_available - filesz
+ /* If we're in string mode, then don't consider the buffer we have
+ sufficient unless it contains the terminator of the string. */
+ || (filesz == 0 && memchr (vaddr - start + *read_state->buffer, '\0',
+ (*read_state->buffer_available
+ - (vaddr - start))) == NULL))
+ {
+ *data = NULL;
+ *data_size = filesz;
+ return !(*read_state->memory_callback) (read_state->dwfl,
+ addr_segndx (read_state->dwfl,
+ segment, vaddr,
+ false),
+ data, data_size, vaddr, filesz,
+ read_state->memory_callback_arg);
+ }
+
+ /* We already have this whole note segment from our initial read. */
+ *data = vaddr - start + (*read_state->buffer);
+ *data_size = 0;
+ return false;
+}
+
int
dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
Dwfl_Memory_Callback *memory_callback,
@@ -242,6 +298,7 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
const struct r_debug_info *r_debug_info)
{
size_t segment = ndx;
+ struct read_state read_state;
if (segment >= dwfl->lookup_elts)
segment = dwfl->lookup_elts - 1;
@@ -257,20 +314,6 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
GElf_Addr start = dwfl->lookup_addr[segment];
- inline bool segment_read (int segndx,
- void **buffer, size_t *buffer_available,
- GElf_Addr addr, size_t minread)
- {
- return ! (*memory_callback) (dwfl, segndx, buffer, buffer_available,
- addr, minread, memory_callback_arg);
- }
-
- inline void release_buffer (void **buffer, size_t *buffer_available)
- {
- if (*buffer != NULL)
- (void) segment_read (-1, buffer, buffer_available, 0, 0);
- }
-
/* First read in the file header and check its sanity. */
void *buffer = NULL;
@@ -278,55 +321,20 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
Elf *elf = NULL;
int fd = -1;
+ read_state.dwfl = dwfl;
+ read_state.memory_callback = memory_callback;
+ read_state.memory_callback_arg = memory_callback_arg;
+ read_state.buffer = &buffer;
+ read_state.buffer_available = &buffer_available;
+
/* We might have to reserve some memory for the phdrs. Set to NULL
here so we can always safely free it. */
void *phdrsp = NULL;
- inline int finish (void)
- {
- free (phdrsp);
- release_buffer (&buffer, &buffer_available);
- if (elf != NULL)
- elf_end (elf);
- if (fd != -1)
- close (fd);
- return ndx;
- }
-
- if (segment_read (ndx, &buffer, &buffer_available,
- start, sizeof (Elf64_Ehdr))
+ if (! (*memory_callback) (dwfl, ndx, &buffer, &buffer_available,
+ start, sizeof (Elf64_Ehdr), memory_callback_arg)
|| memcmp (buffer, ELFMAG, SELFMAG) != 0)
- return finish ();
-
- inline bool read_portion (void **data, size_t *data_size,
- GElf_Addr vaddr, size_t filesz)
- {
- /* Check whether we will have to read the segment data, or if it
- can be returned from the existing buffer. */
- if (filesz > buffer_available
- || vaddr - start > buffer_available - filesz
- /* If we're in string mode, then don't consider the buffer we have
- sufficient unless it contains the terminator of the string. */
- || (filesz == 0 && memchr (vaddr - start + buffer, '\0',
- buffer_available - (vaddr - start)) == NULL))
- {
- *data = NULL;
- *data_size = filesz;
- return segment_read (addr_segndx (dwfl, segment, vaddr, false),
- data, data_size, vaddr, filesz);
- }
-
- /* We already have this whole note segment from our initial read. */
- *data = vaddr - start + buffer;
- *data_size = 0;
- return false;
- }
-
- inline void finish_portion (void **data, size_t *data_size)
- {
- if (*data_size != 0)
- release_buffer (data, data_size);
- }
+ goto out;
/* Extract the information we need from the file header. */
const unsigned char *e_ident;
@@ -363,17 +371,17 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
case ELFCLASS32:
xlatefrom.d_size = sizeof (Elf32_Ehdr);
if (elf32_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
- return finish ();
+ goto out;
e_type = ehdr.e32.e_type;
phoff = ehdr.e32.e_phoff;
phnum = ehdr.e32.e_phnum;
phentsize = ehdr.e32.e_phentsize;
if (phentsize != sizeof (Elf32_Phdr))
- return finish ();
+ goto out;
/* NOTE if the number of sections is > 0xff00 then e_shnum
is zero and the actual number would come from the section
zero sh_size field. We ignore this here because getting shdrs
- is just a nice bonus (see below in consider_phdr PT_LOAD
+ is just a nice bonus (see below in the type == PT_LOAD case
where we trim the last segment). */
shdrs_end = ehdr.e32.e_shoff + ehdr.e32.e_shnum * ehdr.e32.e_shentsize;
break;
@@ -381,19 +389,19 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
case ELFCLASS64:
xlatefrom.d_size = sizeof (Elf64_Ehdr);
if (elf64_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
- return finish ();
+ goto out;
e_type = ehdr.e64.e_type;
phoff = ehdr.e64.e_phoff;
phnum = ehdr.e64.e_phnum;
phentsize = ehdr.e64.e_phentsize;
if (phentsize != sizeof (Elf64_Phdr))
- return finish ();
+ goto out;
/* See the NOTE above for shdrs_end and ehdr.e32.e_shnum. */
shdrs_end = ehdr.e64.e_shoff + ehdr.e64.e_shnum * ehdr.e64.e_shentsize;
break;
default:
- return finish ();
+ goto out;
}
/* The file header tells where to find the program headers.
@@ -401,16 +409,17 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
Without them, we don't have a module to report. */
if (phnum == 0)
- return finish ();
+ goto out;
xlatefrom.d_type = xlateto.d_type = ELF_T_PHDR;
xlatefrom.d_size = phnum * phentsize;
void *ph_buffer = NULL;
size_t ph_buffer_size = 0;
- if (read_portion (&ph_buffer, &ph_buffer_size,
+ if (read_portion (&read_state, &ph_buffer, &ph_buffer_size,
+ start, segment,
start + phoff, xlatefrom.d_size))
- return finish ();
+ goto out;
/* ph_buffer_size will be zero if we got everything from the initial
buffer, otherwise it will be the size of the new buffer that
@@ -423,11 +432,11 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
bool class32 = ei_class == ELFCLASS32;
size_t phdr_size = class32 ? sizeof (Elf32_Phdr) : sizeof (Elf64_Phdr);
if (unlikely (phnum > SIZE_MAX / phdr_size))
- return finish ();
+ goto out;
const size_t phdrsp_bytes = phnum * phdr_size;
phdrsp = malloc (phdrsp_bytes);
if (unlikely (phdrsp == NULL))
- return finish ();
+ goto out;
xlateto.d_buf = phdrsp;
xlateto.d_size = phdrsp_bytes;
@@ -452,193 +461,189 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
GElf_Xword dyn_filesz = 0;
/* Collect the build ID bits here. */
- void *build_id = NULL;
- size_t build_id_len = 0;
- GElf_Addr build_id_vaddr = 0;
-
- /* Consider a PT_NOTE we've found in the image. */
- inline void consider_notes (GElf_Addr vaddr, GElf_Xword filesz,
- GElf_Xword align)
- {
- /* If we have already seen a build ID, we don't care any more. */
- if (build_id != NULL || filesz == 0)
- return;
-
- void *data;
- size_t data_size;
- if (read_portion (&data, &data_size, vaddr, filesz))
- return;
-
- /* data_size will be zero if we got everything from the initial
- buffer, otherwise it will be the size of the new buffer that
- could be read. */
- if (data_size != 0)
- filesz = data_size;
-
- assert (sizeof (Elf32_Nhdr) == sizeof (Elf64_Nhdr));
-
- void *notes;
- if (ei_data == MY_ELFDATA)
- notes = data;
- else
- {
- notes = malloc (filesz);
- if (unlikely (notes == NULL))
- return;
- xlatefrom.d_type = xlateto.d_type = (align == 8
- ? ELF_T_NHDR8 : ELF_T_NHDR);
- xlatefrom.d_buf = (void *) data;
- xlatefrom.d_size = filesz;
- xlateto.d_buf = notes;
- xlateto.d_size = filesz;
- if (elf32_xlatetom (&xlateto, &xlatefrom,
- ehdr.e32.e_ident[EI_DATA]) == NULL)
- goto done;
- }
-
- const GElf_Nhdr *nh = notes;
- size_t len = 0;
- while (filesz > len + sizeof (*nh))
- {
- const void *note_name;
- const void *note_desc;
-
- len += sizeof (*nh);
- note_name = notes + len;
-
- len += nh->n_namesz;
- len = align == 8 ? NOTE_ALIGN8 (len) : NOTE_ALIGN4 (len);
- note_desc = notes + len;
-
- if (unlikely (filesz < len + nh->n_descsz))
- break;
-
- if (nh->n_type == NT_GNU_BUILD_ID
- && nh->n_descsz > 0
- && nh->n_namesz == sizeof "GNU"
- && !memcmp (note_name, "GNU", sizeof "GNU"))
- {
- build_id_vaddr = note_desc - (const void *) notes + vaddr;
- build_id_len = nh->n_descsz;
- build_id = malloc (nh->n_descsz);
- if (likely (build_id != NULL))
- memcpy (build_id, note_desc, build_id_len);
- break;
- }
-
- len += nh->n_descsz;
- len = align == 8 ? NOTE_ALIGN8 (len) : NOTE_ALIGN4 (len);
- nh = (void *) notes + len;
- }
-
- done:
- if (notes != data)
- free (notes);
- finish_portion (&data, &data_size);
- }
-
- /* Consider each of the program headers we've read from the image. */
- inline void consider_phdr (GElf_Word type,
- GElf_Addr vaddr, GElf_Xword memsz,
- GElf_Off offset, GElf_Xword filesz,
- GElf_Xword align)
- {
- switch (type)
- {
- case PT_DYNAMIC:
- dyn_vaddr = vaddr;
- dyn_filesz = filesz;
- break;
-
- case PT_NOTE:
- /* We calculate from the p_offset of the note segment,
- because we don't yet know the bias for its p_vaddr. */
- consider_notes (start + offset, filesz, align);
- break;
-
- case PT_LOAD:
- align = dwfl->segment_align > 1 ? dwfl->segment_align : align ?: 1;
-
- GElf_Addr vaddr_end = (vaddr + memsz + align - 1) & -align;
- GElf_Addr filesz_vaddr = filesz < memsz ? vaddr + filesz : vaddr_end;
- GElf_Off filesz_offset = filesz_vaddr - vaddr + offset;
-
- if (file_trimmed_end < offset + filesz)
- {
- file_trimmed_end = offset + filesz;
-
- /* Trim the last segment so we don't bother with zeros
- in the last page that are off the end of the file.
- However, if the extra bit in that page includes the
- section headers, keep them. */
- if (shdrs_end <= filesz_offset && shdrs_end > file_trimmed_end)
- {
- filesz += shdrs_end - file_trimmed_end;
- file_trimmed_end = shdrs_end;
- }
- }
-
- total_filesz += filesz;
-
- if (file_end < filesz_offset)
- {
- file_end = filesz_offset;
- if (filesz_vaddr - start == filesz_offset)
- contiguous = file_end;
- }
-
- if (!found_bias && (offset & -align) == 0
- && likely (filesz_offset >= phoff + phnum * phentsize))
- {
- bias = start - vaddr;
- found_bias = true;
- }
-
- if ((vaddr & -align) < module_start)
- {
- module_start = vaddr & -align;
- module_address_sync = vaddr + memsz;
- }
-
- if (module_end < vaddr_end)
- module_end = vaddr_end;
- break;
- }
- }
-
- Elf32_Phdr (*p32)[phnum] = phdrsp;
- Elf64_Phdr (*p64)[phnum] = phdrsp;
- if (ei_class == ELFCLASS32)
+ struct elf_build_id build_id;
+ build_id.memory = NULL;
+ build_id.len = 0;
+ build_id.vaddr =0;
+
+ Elf32_Phdr *p32 = phdrsp;
+ Elf64_Phdr *p64 = phdrsp;
+ if ((ei_class == ELFCLASS32
+ && elf32_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
+ || (ei_class == ELFCLASS64
+ && elf64_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL))
{
- if (elf32_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
- found_bias = false; /* Trigger error check. */
- else
- for (uint_fast16_t i = 0; i < phnum; ++i)
- consider_phdr ((*p32)[i].p_type,
- (*p32)[i].p_vaddr, (*p32)[i].p_memsz,
- (*p32)[i].p_offset, (*p32)[i].p_filesz,
- (*p32)[i].p_align);
+ found_bias = false; /* Trigger error check */
}
else
{
- if (elf64_xlatetom (&xlateto, &xlatefrom, ei_data) == NULL)
- found_bias = false; /* Trigger error check. */
- else
- for (uint_fast16_t i = 0; i < phnum; ++i)
- consider_phdr ((*p64)[i].p_type,
- (*p64)[i].p_vaddr, (*p64)[i].p_memsz,
- (*p64)[i].p_offset, (*p64)[i].p_filesz,
- (*p64)[i].p_align);
+ /* Consider each of the program headers we've read from the image. */
+ for (uint_fast16_t i = 0; i < phnum; ++i)
+ {
+ bool is32 = (ei_class == ELFCLASS32);
+ GElf_Word type = is32 ? p32[i].p_type : p64[i].p_type;
+ GElf_Addr vaddr = is32 ? p32[i].p_vaddr : p64[i].p_vaddr;
+ GElf_Xword memsz = is32 ? p32[i].p_memsz : p64[i].p_memsz;
+ GElf_Off offset = is32 ? p32[i].p_offset : p64[i].p_offset;
+ GElf_Xword filesz = is32 ? p32[i].p_filesz : p64[i].p_filesz;
+ GElf_Xword align = is32 ? p32[i].p_align : p64[i].p_align;
+
+ if (type == PT_DYNAMIC)
+ {
+ dyn_vaddr = vaddr;
+ dyn_filesz = filesz;
+ }
+ else if (type == PT_NOTE)
+ {
+ /* If we have already seen a build ID, we don't care any more. */
+ if (build_id.memory != NULL || filesz == 0)
+ continue; /* Next header */
+
+ /* We calculate from the p_offset of the note segment,
+ because we don't yet know the bias for its p_vaddr. */
+ const GElf_Addr note_vaddr = start + offset;
+ void *data;
+ size_t data_size;
+ if (read_portion (&read_state, &data, &data_size,
+ start, segment, note_vaddr, filesz))
+ continue; /* Next header */
+
+ /* data_size will be zero if we got everything from the initial
+ buffer, otherwise it will be the size of the new buffer that
+ could be read. */
+ if (data_size != 0)
+ filesz = data_size;
+
+ assert (sizeof (Elf32_Nhdr) == sizeof (Elf64_Nhdr));
+
+ void *notes;
+ if (ei_data == MY_ELFDATA)
+ notes = data;
+ else
+ {
+ const unsigned int xencoding = ehdr.e32.e_ident[EI_DATA];
+
+ notes = malloc (filesz);
+ if (unlikely (notes == NULL))
+ continue; /* Next header */
+ xlatefrom.d_type = xlateto.d_type = (align == 8
+ ? ELF_T_NHDR8
+ : ELF_T_NHDR);
+ xlatefrom.d_buf = (void *) data;
+ xlatefrom.d_size = filesz;
+ xlateto.d_buf = notes;
+ xlateto.d_size = filesz;
+ if (elf32_xlatetom (&xlateto, &xlatefrom, xencoding) == NULL)
+ {
+ free (notes);
+ finish_portion (&read_state, &data, &data_size);
+ continue;
+ }
+ }
+
+ const GElf_Nhdr *nh = notes;
+ size_t len = 0;
+ while (filesz > len + sizeof (*nh))
+ {
+ const void *note_name;
+ const void *note_desc;
+
+ len += sizeof (*nh);
+ note_name = notes + len;
+
+ len += nh->n_namesz;
+ len = align == 8 ? NOTE_ALIGN8 (len) : NOTE_ALIGN4 (len);
+ note_desc = notes + len;
+
+ if (unlikely (filesz < len + nh->n_descsz))
+ break;
+
+ if (nh->n_type == NT_GNU_BUILD_ID
+ && nh->n_descsz > 0
+ && nh->n_namesz == sizeof "GNU"
+ && !memcmp (note_name, "GNU", sizeof "GNU"))
+ {
+ build_id.vaddr = (note_desc
+ - (const void *) notes
+ + note_vaddr);
+ build_id.len = nh->n_descsz;
+ build_id.memory = malloc (build_id.len);
+ if (likely (build_id.memory != NULL))
+ memcpy (build_id.memory, note_desc, build_id.len);
+ break;
+ }
+
+ len += nh->n_descsz;
+ len = align == 8 ? NOTE_ALIGN8 (len) : NOTE_ALIGN4 (len);
+ nh = (void *) notes + len;
+ }
+
+ if (notes != data)
+ free (notes);
+ finish_portion (&read_state, &data, &data_size);
+ }
+ else if (type == PT_LOAD)
+ {
+ align = (dwfl->segment_align > 1
+ ? dwfl->segment_align : (align ?: 1));
+
+ GElf_Addr vaddr_end = (vaddr + memsz + align - 1) & -align;
+ GElf_Addr filesz_vaddr = (filesz < memsz
+ ? vaddr + filesz : vaddr_end);
+ GElf_Off filesz_offset = filesz_vaddr - vaddr + offset;
+
+ if (file_trimmed_end < offset + filesz)
+ {
+ file_trimmed_end = offset + filesz;
+
+ /* Trim the last segment so we don't bother with zeros
+ in the last page that are off the end of the file.
+ However, if the extra bit in that page includes the
+ section headers, keep them. */
+ if (shdrs_end <= filesz_offset
+ && shdrs_end > file_trimmed_end)
+ {
+ filesz += shdrs_end - file_trimmed_end;
+ file_trimmed_end = shdrs_end;
+ }
+ }
+
+ total_filesz += filesz;
+
+ if (file_end < filesz_offset)
+ {
+ file_end = filesz_offset;
+ if (filesz_vaddr - start == filesz_offset)
+ contiguous = file_end;
+ }
+
+ if (!found_bias && (offset & -align) == 0
+ && likely (filesz_offset >= phoff + phnum * phentsize))
+ {
+ bias = start - vaddr;
+ found_bias = true;
+ }
+
+ if ((vaddr & -align) < module_start)
+ {
+ module_start = vaddr & -align;
+ module_address_sync = vaddr + memsz;
+ }
+
+ if (module_end < vaddr_end)
+ module_end = vaddr_end;
+ }
+ }
}
- finish_portion (&ph_buffer, &ph_buffer_size);
+ finish_portion (&read_state, &ph_buffer, &ph_buffer_size);
/* We must have seen the segment covering offset 0, or else the ELF
header we read at START was not produced by these program headers. */
if (unlikely (!found_bias))
{
- free (build_id);
- return finish ();
+ free (build_id.memory);
+ goto out;
}
/* Now we know enough to report a module for sure: its bounds. */
@@ -692,7 +697,7 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
{
if (module->elf != NULL
&& invalid_elf (module->elf, module->disk_file_has_build_id,
- build_id, build_id_len))
+ &build_id))
{
elf_end (module->elf);
close (module->fd);
@@ -708,8 +713,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
}
if (skip_this_module)
{
- free (build_id);
- return finish ();
+ free (build_id.memory);
+ goto out;
}
}
@@ -727,7 +732,7 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
Dwfl_Error error = __libdw_open_file (&fd, &elf, true, false);
if (error == DWFL_E_NOERROR)
invalid = invalid_elf (elf, true /* disk_file_has_build_id */,
- build_id, build_id_len);
+ &build_id);
}
if (invalid)
{
@@ -755,39 +760,13 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
GElf_Addr dynstr_vaddr = 0;
GElf_Xword dynstrsz = 0;
bool execlike = false;
- inline bool consider_dyn (GElf_Sxword tag, GElf_Xword val)
- {
- switch (tag)
- {
- default:
- return false;
-
- case DT_DEBUG:
- execlike = true;
- break;
-
- case DT_SONAME:
- soname_stroff = val;
- break;
-
- case DT_STRTAB:
- dynstr_vaddr = val;
- break;
-
- case DT_STRSZ:
- dynstrsz = val;
- break;
- }
-
- return soname_stroff != 0 && dynstr_vaddr != 0 && dynstrsz != 0;
- }
-
const size_t dyn_entsize = (ei_class == ELFCLASS32
? sizeof (Elf32_Dyn) : sizeof (Elf64_Dyn));
void *dyn_data = NULL;
size_t dyn_data_size = 0;
if (dyn_filesz != 0 && dyn_filesz % dyn_entsize == 0
- && ! read_portion (&dyn_data, &dyn_data_size, dyn_vaddr, dyn_filesz))
+ && ! read_portion (&read_state, &dyn_data, &dyn_data_size,
+ start, segment, dyn_vaddr, dyn_filesz))
{
/* dyn_data_size will be zero if we got everything from the initial
buffer, otherwise it will be the size of the new buffer that
@@ -796,10 +775,10 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
dyn_filesz = dyn_data_size;
void *dyns = malloc (dyn_filesz);
- Elf32_Dyn (*d32)[dyn_filesz / sizeof (Elf32_Dyn)] = dyns;
- Elf64_Dyn (*d64)[dyn_filesz / sizeof (Elf64_Dyn)] = dyns;
+ Elf32_Dyn *d32 = dyns;
+ Elf64_Dyn *d64 = dyns;
if (unlikely (dyns == NULL))
- return finish ();
+ goto out;
xlatefrom.d_type = xlateto.d_type = ELF_T_DYN;
xlatefrom.d_buf = (void *) dyn_data;
@@ -807,23 +786,36 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
xlateto.d_buf = dyns;
xlateto.d_size = dyn_filesz;
- if (ei_class == ELFCLASS32)
- {
- if (elf32_xlatetom (&xlateto, &xlatefrom, ei_data) != NULL)
- for (size_t i = 0; i < dyn_filesz / sizeof (Elf32_Dyn); ++i)
- if (consider_dyn ((*d32)[i].d_tag, (*d32)[i].d_un.d_val))
- break;
- }
- else
- {
- if (elf64_xlatetom (&xlateto, &xlatefrom, ei_data) != NULL)
- for (size_t i = 0; i < dyn_filesz / sizeof (Elf64_Dyn); ++i)
- if (consider_dyn ((*d64)[i].d_tag, (*d64)[i].d_un.d_val))
- break;
- }
+ bool is32 = (ei_class == ELFCLASS32);
+ if ((is32 && elf32_xlatetom (&xlateto, &xlatefrom, ei_data) != NULL)
+ || (!is32 && elf64_xlatetom (&xlateto, &xlatefrom, ei_data) != NULL))
+ {
+ size_t n = (is32
+ ? (dyn_filesz / sizeof (Elf32_Dyn))
+ : (dyn_filesz / sizeof (Elf64_Dyn)));
+ for (size_t i = 0; i < n; ++i)
+ {
+ GElf_Sxword tag = is32 ? d32[i].d_tag : d64[i].d_tag;
+ GElf_Xword val = is32 ? d32[i].d_un.d_val : d64[i].d_un.d_val;
+
+ if (tag == DT_DEBUG)
+ execlike = true;
+ else if (tag == DT_SONAME)
+ soname_stroff = val;
+ else if (tag == DT_STRTAB)
+ dynstr_vaddr = val;
+ else if (tag == DT_STRSZ)
+ dynstrsz = val;
+ else
+ continue;
+
+ if (soname_stroff != 0 && dynstr_vaddr != 0 && dynstrsz != 0)
+ break;
+ }
+ }
free (dyns);
}
- finish_portion (&dyn_data, &dyn_data_size);
+ finish_portion (&read_state, &dyn_data, &dyn_data_size);
/* We'll use the name passed in or a stupid default if not DT_SONAME. */
if (name == NULL)
@@ -855,7 +847,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
/* Try to get the DT_SONAME string. */
if (soname_stroff != 0 && soname_stroff + 1 < dynstrsz
- && ! read_portion (&soname, &soname_size,
+ && ! read_portion (&read_state, &soname, &soname_size,
+ start, segment,
dynstr_vaddr + soname_stroff, 0))
name = soname;
}
@@ -871,11 +864,11 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
if (mod != NULL && (execlike || ehdr.e32.e_type == ET_EXEC))
mod->is_executable = true;
- if (likely (mod != NULL) && build_id != NULL
+ if (likely (mod != NULL) && build_id.memory != NULL
&& unlikely (INTUSE(dwfl_module_report_build_id) (mod,
- build_id,
- build_id_len,
- build_id_vaddr)))
+ build_id.memory,
+ build_id.len,
+ build_id.vaddr)))
{
mod->gc = true;
mod = NULL;
@@ -883,13 +876,13 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
/* At this point we do not need BUILD_ID or NAME any more.
They have been copied. */
- free (build_id);
- finish_portion (&soname, &soname_size);
+ free (build_id.memory);
+ finish_portion (&read_state, &soname, &soname_size);
if (unlikely (mod == NULL))
{
ndx = -1;
- return finish ();
+ goto out;
}
/* We have reported the module. Now let the caller decide whether we
@@ -913,36 +906,31 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
void *contents = calloc (1, file_trimmed_end);
if (unlikely (contents == NULL))
- return finish ();
-
- inline void final_read (size_t offset, GElf_Addr vaddr, size_t size)
- {
- void *into = contents + offset;
- size_t read_size = size;
- (void) segment_read (addr_segndx (dwfl, segment, vaddr, false),
- &into, &read_size, vaddr, size);
- }
+ goto out;
if (contiguous < file_trimmed_end)
{
/* We can't use the memory image verbatim as the file image.
So we'll be reading into a local image of the virtual file. */
-
- inline void read_phdr (GElf_Word type, GElf_Addr vaddr,
- GElf_Off offset, GElf_Xword filesz)
- {
- if (type == PT_LOAD)
- final_read (offset, vaddr + bias, filesz);
- }
-
- if (ei_class == ELFCLASS32)
- for (uint_fast16_t i = 0; i < phnum; ++i)
- read_phdr ((*p32)[i].p_type, (*p32)[i].p_vaddr,
- (*p32)[i].p_offset, (*p32)[i].p_filesz);
- else
- for (uint_fast16_t i = 0; i < phnum; ++i)
- read_phdr ((*p64)[i].p_type, (*p64)[i].p_vaddr,
- (*p64)[i].p_offset, (*p64)[i].p_filesz);
+ for (uint_fast16_t i = 0; i < phnum; ++i)
+ {
+ bool is32 = (ei_class == ELFCLASS32);
+ GElf_Word type = is32 ? p32[i].p_type : p64[i].p_type;
+
+ if (type != PT_LOAD)
+ continue;
+
+ GElf_Addr vaddr = is32 ? p32[i].p_vaddr : p64[i].p_vaddr;
+ GElf_Off offset = is32 ? p32[i].p_offset : p64[i].p_offset;
+ GElf_Xword filesz = is32 ? p32[i].p_filesz : p64[i].p_filesz;
+
+ void *into = contents + offset;
+ size_t read_size = filesz;
+ (*memory_callback) (dwfl, addr_segndx (dwfl, segment,
+ vaddr + bias, false),
+ &into, &read_size, vaddr + bias, read_size,
+ memory_callback_arg);
+ }
}
else
{
@@ -953,7 +941,15 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
memcpy (contents, buffer, have);
if (have < file_trimmed_end)
- final_read (have, start + have, file_trimmed_end - have);
+ {
+ void *into = contents + have;
+ size_t read_size = file_trimmed_end - have;
+ (*memory_callback) (dwfl,
+ addr_segndx (dwfl, segment,
+ start + have, false),
+ &into, &read_size, start + have,
+ read_size, memory_callback_arg);
+ }
}
elf = elf_memory (contents, file_trimmed_end);
@@ -975,5 +971,15 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
mod->main_bias = bias;
}
- return finish ();
+out:
+ free (phdrsp);
+ if (buffer != NULL)
+ (*memory_callback) (dwfl, -1, &buffer, &buffer_available, 0, 0,
+ memory_callback_arg);
+
+ if (elf != NULL)
+ elf_end (elf);
+ if (fd != -1)
+ close (fd);
+ return ndx;
}
diff --git a/libdwfl/elf-from-memory.c b/libdwfl/elf-from-memory.c
index c54c1b99..a0ef0014 100644
--- a/libdwfl/elf-from-memory.c
+++ b/libdwfl/elf-from-memory.c
@@ -223,61 +223,48 @@ elf_from_remote_memory (GElf_Addr ehdr_vma,
bool found_base = false;
Elf32_Phdr (*p32)[phnum] = phdrsp;
Elf64_Phdr (*p64)[phnum] = phdrsp;
- switch (ehdr.e32.e_ident[EI_CLASS])
+
+ if (class32)
{
- /* Sanity checks segments and calculates segment_end,
- segments_end, segments_end_mem and loadbase (if not
- found_base yet). Returns true if sanity checking failed,
- false otherwise. */
- inline bool handle_segment (GElf_Addr vaddr, GElf_Off offset,
- GElf_Xword filesz, GElf_Xword memsz)
- {
- /* Sanity check the segment load aligns with the pagesize. */
- if (((vaddr - offset) & (pagesize - 1)) != 0)
- return true;
+ if (! elf32_xlatetom (&xlateto, &xlatefrom, ehdr.e32.e_ident[EI_DATA]))
+ goto libelf_error;
+ }
+ else
+ {
+ if (! elf64_xlatetom (&xlateto, &xlatefrom, ehdr.e64.e_ident[EI_DATA]))
+ goto libelf_error;
+ }
- GElf_Off segment_end = ((offset + filesz + pagesize - 1)
- & -pagesize);
+ for (uint_fast16_t i = 0; i < phnum; ++i)
+ {
+ GElf_Word type = class32 ? (*p32)[i].p_type : (*p64)[i].p_type;
- if (segment_end > (GElf_Off) contents_size)
- contents_size = segment_end;
+ if (type != PT_LOAD)
+ continue;
- if (!found_base && (offset & -pagesize) == 0)
- {
- loadbase = ehdr_vma - (vaddr & -pagesize);
- found_base = true;
- }
+ GElf_Addr vaddr = class32 ? (*p32)[i].p_vaddr : (*p64)[i].p_vaddr;
+ GElf_Xword memsz = class32 ? (*p32)[i].p_memsz : (*p64)[i].p_memsz;
+ GElf_Off offset = class32 ? (*p32)[i].p_offset : (*p64)[i].p_offset;
+ GElf_Xword filesz = class32 ? (*p32)[i].p_filesz : (*p64)[i].p_filesz;
- segments_end = offset + filesz;
- segments_end_mem = offset + memsz;
- return false;
- }
+ /* Sanity check the segment load aligns with the pagesize. */
+ if (((vaddr - offset) & (pagesize - 1)) != 0)
+ goto bad_elf;
- case ELFCLASS32:
- if (elf32_xlatetom (&xlateto, &xlatefrom,
- ehdr.e32.e_ident[EI_DATA]) == NULL)
- goto libelf_error;
- for (uint_fast16_t i = 0; i < phnum; ++i)
- if ((*p32)[i].p_type == PT_LOAD)
- if (handle_segment ((*p32)[i].p_vaddr, (*p32)[i].p_offset,
- (*p32)[i].p_filesz, (*p32)[i].p_memsz))
- goto bad_elf;
- break;
+ GElf_Off segment_end = ((offset + filesz + pagesize - 1)
+ & -pagesize);
- case ELFCLASS64:
- if (elf64_xlatetom (&xlateto, &xlatefrom,
- ehdr.e64.e_ident[EI_DATA]) == NULL)
- goto libelf_error;
- for (uint_fast16_t i = 0; i < phnum; ++i)
- if ((*p64)[i].p_type == PT_LOAD)
- if (handle_segment ((*p64)[i].p_vaddr, (*p64)[i].p_offset,
- (*p64)[i].p_filesz, (*p64)[i].p_memsz))
- goto bad_elf;
- break;
+ if (segment_end > (GElf_Off) contents_size)
+ contents_size = segment_end;
- default:
- abort ();
- break;
+ if (!found_base && (offset & -pagesize) == 0)
+ {
+ loadbase = ehdr_vma - (vaddr & -pagesize);
+ found_base = true;
+ }
+
+ segments_end = offset + filesz;
+ segments_end_mem = offset + memsz;
}
/* Trim the last segment so we don't bother with zeros in the last page
@@ -305,80 +292,65 @@ elf_from_remote_memory (GElf_Addr ehdr_vma,
goto no_memory;
}
- switch (ehdr.e32.e_ident[EI_CLASS])
+ for (uint_fast16_t i = 0; i < phnum; ++i)
{
- /* Reads the given segment. Returns true if reading fails,
- false otherwise. */
- inline bool handle_segment (GElf_Addr vaddr, GElf_Off offset,
- GElf_Xword filesz)
- {
- GElf_Off start = offset & -pagesize;
- GElf_Off end = (offset + filesz + pagesize - 1) & -pagesize;
- if (end > (GElf_Off) contents_size)
- end = contents_size;
- nread = (*read_memory) (arg, buffer + start,
- (loadbase + vaddr) & -pagesize,
- end - start, end - start);
- return nread <= 0;
- }
+ GElf_Word type = class32 ? (*p32)[i].p_type : (*p64)[i].p_type;
+
+ if (type != PT_LOAD)
+ continue;
+
+ GElf_Addr vaddr = class32 ? (*p32)[i].p_vaddr : (*p64)[i].p_vaddr;
+ GElf_Off offset = class32 ? (*p32)[i].p_offset : (*p64)[i].p_offset;
+ GElf_Xword filesz = class32 ? (*p32)[i].p_filesz : (*p64)[i].p_filesz;
+
+ GElf_Off start = offset & -pagesize;
+ GElf_Off end = (offset + filesz + pagesize - 1) & -pagesize;
+ if (end > (GElf_Off) contents_size)
+ end = contents_size;
+ nread = (*read_memory) (arg, buffer + start,
+ (loadbase + vaddr) & -pagesize,
+ end - start, end - start);
+ if (nread <= 0)
+ goto read_error;
+ }
- case ELFCLASS32:
- for (uint_fast16_t i = 0; i < phnum; ++i)
- if ((*p32)[i].p_type == PT_LOAD)
- if (handle_segment ((*p32)[i].p_vaddr, (*p32)[i].p_offset,
- (*p32)[i].p_filesz))
- goto read_error;
-
- /* If the segments visible in memory didn't include the section
- headers, then clear them from the file header. */
- if (contents_size < shdrs_end)
- {
- ehdr.e32.e_shoff = 0;
- ehdr.e32.e_shnum = 0;
- ehdr.e32.e_shstrndx = 0;
- }
+ /* If the segments visible in memory didn't include the section
+ headers, then clear them from the file header. */
+ if (contents_size < shdrs_end)
+ {
+ if (class32)
+ {
+ ehdr.e32.e_shoff = 0;
+ ehdr.e32.e_shnum = 0;
+ ehdr.e32.e_shstrndx = 0;
+ }
+ else
+ {
+ ehdr.e64.e_shoff = 0;
+ ehdr.e64.e_shnum = 0;
+ ehdr.e64.e_shstrndx = 0;
+ }
+ }
- /* This will normally have been in the first PT_LOAD segment. But it
- conceivably could be missing, and we might have just changed it. */
- xlatefrom.d_type = xlateto.d_type = ELF_T_EHDR;
+ /* This will normally have been in the first PT_LOAD segment. But it
+ conceivably could be missing, and we might have just changed it. */
+ xlatefrom.d_type = xlateto.d_type = ELF_T_EHDR;
+ xlateto.d_buf = buffer;
+ if (class32)
+ {
xlatefrom.d_size = xlateto.d_size = sizeof ehdr.e32;
xlatefrom.d_buf = &ehdr.e32;
- xlateto.d_buf = buffer;
if (elf32_xlatetof (&xlateto, &xlatefrom,
- ehdr.e32.e_ident[EI_DATA]) == NULL)
- goto libelf_error;
- break;
-
- case ELFCLASS64:
- for (uint_fast16_t i = 0; i < phnum; ++i)
- if ((*p64)[i].p_type == PT_LOAD)
- if (handle_segment ((*p64)[i].p_vaddr, (*p64)[i].p_offset,
- (*p64)[i].p_filesz))
- goto read_error;
-
- /* If the segments visible in memory didn't include the section
- headers, then clear them from the file header. */
- if (contents_size < shdrs_end)
- {
- ehdr.e64.e_shoff = 0;
- ehdr.e64.e_shnum = 0;
- ehdr.e64.e_shstrndx = 0;
- }
-
- /* This will normally have been in the first PT_LOAD segment. But it
- conceivably could be missing, and we might have just changed it. */
- xlatefrom.d_type = xlateto.d_type = ELF_T_EHDR;
+ ehdr.e32.e_ident[EI_DATA]) == NULL)
+ goto libelf_error;
+ }
+ else
+ {
xlatefrom.d_size = xlateto.d_size = sizeof ehdr.e64;
xlatefrom.d_buf = &ehdr.e64;
- xlateto.d_buf = buffer;
if (elf64_xlatetof (&xlateto, &xlatefrom,
- ehdr.e64.e_ident[EI_DATA]) == NULL)
- goto libelf_error;
- break;
-
- default:
- abort ();
- break;
+ ehdr.e64.e_ident[EI_DATA]) == NULL)
+ goto libelf_error;
}
free (phdrsp);
diff --git a/libdwfl/find-debuginfo.c b/libdwfl/find-debuginfo.c
index 40857645..449df5a1 100644
--- a/libdwfl/find-debuginfo.c
+++ b/libdwfl/find-debuginfo.c
@@ -355,9 +355,12 @@ dwfl_standard_find_debuginfo (Dwfl_Module *mod,
GElf_Word debuglink_crc,
char **debuginfo_file_name)
{
+ if (mod == NULL)
+ return -1;
+
/* First try by build ID if we have one. If that succeeds or fails
other than just by finding nothing, that's all we do. */
- const unsigned char *bits;
+ const unsigned char *bits = NULL;
GElf_Addr vaddr;
int bits_len;
if ((bits_len = INTUSE(dwfl_module_build_id) (mod, &bits, &vaddr)) > 0)
@@ -398,8 +401,29 @@ dwfl_standard_find_debuginfo (Dwfl_Module *mod,
free (canon);
}
- if (fd < 0 && bits_len > 0)
- fd = __libdwfl_debuginfod_find_debuginfo (mod->dwfl, bits, bits_len);
+#ifdef ENABLE_LIBDEBUGINFOD
+ /* Still nothing? Try if we can use the debuginfod client.
+ But note that we might be looking for the alt file.
+ We use the same trick as dwfl_build_id_find_debuginfo.
+ If the debug file (dw) is already set, then we must be
+ looking for the altfile. But we cannot use the actual
+ file/path name given as hint. We'll have to lookup the
+ alt file "build-id". Because the debuginfod client only
+ handles build-ids. */
+ if (fd < 0)
+ {
+ if (mod->dw != NULL)
+ {
+ const char *altname;
+ bits_len = INTUSE(dwelf_dwarf_gnu_debugaltlink) (mod->dw, &altname,
+ (const void **)
+ &bits);
+ }
+
+ if (bits_len > 0)
+ fd = __libdwfl_debuginfod_find_debuginfo (mod->dwfl, bits, bits_len);
+ }
+#endif
return fd;
}
diff --git a/libdwfl/frame_unwind.c b/libdwfl/frame_unwind.c
index d7dfa5a9..9ac33833 100644
--- a/libdwfl/frame_unwind.c
+++ b/libdwfl/frame_unwind.c
@@ -562,7 +562,11 @@ handle_cfi (Dwfl_Frame *state, Dwarf_Addr pc, Dwarf_CFI *cfi, Dwarf_Addr bias)
/* The return register is special for setting the unwound->pc_state. */
unsigned ra = frame->fde->cie->return_address_register;
bool ra_set = false;
- ebl_dwarf_to_regno (ebl, &ra);
+ if (! ebl_dwarf_to_regno (ebl, &ra))
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_REGISTER);
+ return;
+ }
for (unsigned regno = 0; regno < nregs; regno++)
{
@@ -719,7 +723,8 @@ __libdwfl_frame_unwind (Dwfl_Frame *state)
which would deadlock us. */
Dwarf_Addr pc;
bool ok = INTUSE(dwfl_frame_pc) (state, &pc, NULL);
- assert (ok);
+ if (!ok)
+ return;
/* Check whether this is the initial frame or a signal frame.
Then we need to unwind from the original, unadjusted PC. */
if (! state->initial_frame && ! state->signal_frame)
diff --git a/libdwfl/gzip.c b/libdwfl/gzip.c
index 043d0b6e..ba8ecfba 100644
--- a/libdwfl/gzip.c
+++ b/libdwfl/gzip.c
@@ -48,6 +48,12 @@
# define inflateInit(z) lzma_auto_decoder (z, 1 << 30, 0)
# define do_inflate(z) lzma_code (z, LZMA_RUN)
# define inflateEnd(z) lzma_end (z)
+#elif defined ZSTD
+# define USE_INFLATE 1
+# include <zstd.h>
+# define unzip __libdw_unzstd
+# define DWFL_E_ZLIB DWFL_E_ZSTD
+# define MAGIC "\x28\xb5\x2f\xfd"
#elif defined BZLIB
# define USE_INFLATE 1
# include <bzlib.h>
@@ -119,6 +125,7 @@ fail (struct unzip_state *state, Dwfl_Error failure)
return failure;
}
+#ifndef ZSTD
static inline Dwfl_Error
zlib_fail (struct unzip_state *state, int result)
{
@@ -132,6 +139,7 @@ zlib_fail (struct unzip_state *state, int result)
return fail (state, DWFL_E_ZLIB);
}
}
+#endif
#if !USE_INFLATE
static Dwfl_Error
@@ -153,7 +161,7 @@ open_stream (int fd, off_t start_offset, struct unzip_state *state)
if (unlikely (state->zf == NULL))
{
close (d);
- return zlib_fail (state, Z (MEM_ERROR));
+ return DWFL_E_NOMEM;
}
/* From here on, zlib will close D. */
@@ -197,7 +205,7 @@ unzip (int fd, off_t start_offset,
ssize_t n = pread_retry (fd, state.input_buffer, READ_SIZE, start_offset);
if (unlikely (n < 0))
- return zlib_fail (&state, Z (ERRNO));
+ return fail (&state, DWFL_E_ERRNO);
state.input_pos = n;
mapped = state.input_buffer;
@@ -223,7 +231,74 @@ unzip (int fd, off_t start_offset,
/* Not a compressed file. */
return DWFL_E_BADELF;
-#if USE_INFLATE
+#ifdef ZSTD
+ /* special case for libzstd since it is slightly different from the
+ API provided by bzlib and liblzma. */
+
+ void *next_in = mapped;
+ size_t avail_in = state.mapped_size;
+ void *next_out = NULL;
+ size_t avail_out = 0;
+ size_t total_out = 0;
+
+ size_t result;
+ ZSTD_DCtx *dctx = ZSTD_createDCtx();
+ if (dctx == NULL)
+ return fail (&state, DWFL_E_NOMEM);
+
+ do
+ {
+ if (avail_in == 0 && state.input_buffer != NULL)
+ {
+ ssize_t n = pread_retry (fd, state.input_buffer, READ_SIZE,
+ start_offset + state.input_pos);
+ if (unlikely (n < 0))
+ {
+ ZSTD_freeDCtx (dctx);
+ return fail (&state, DWFL_E_ERRNO);
+ }
+ next_in = state.input_buffer;
+ avail_in = n;
+ state.input_pos += n;
+ }
+ if (avail_out == 0)
+ {
+ ptrdiff_t pos = (void *) next_out - state.buffer;
+ if (!bigger_buffer (&state, avail_in))
+ {
+ ZSTD_freeDCtx (dctx);
+ return fail (&state, DWFL_E_NOMEM);
+ }
+ next_out = state.buffer + pos;
+ avail_out = state.size - pos;
+ }
+
+ ZSTD_inBuffer input = { next_in, avail_in, 0 };
+ ZSTD_outBuffer output = { next_out, avail_out, 0 };
+ result = ZSTD_decompressStream (dctx, &output, &input);
+
+ if (! ZSTD_isError (result))
+ {
+ total_out += output.pos;
+ next_out += output.pos;
+ avail_out -= output.pos;
+ next_in += input.pos;
+ avail_in -= input.pos;
+ }
+
+ if (result == 0)
+ break;
+ }
+ while (avail_in > 0 && ! ZSTD_isError (result));
+
+ ZSTD_freeDCtx (dctx);
+
+ if (ZSTD_isError (result))
+ return fail (&state, DWFL_E_ZSTD);
+
+ smaller_buffer (&state, total_out);
+
+#elif USE_INFLATE
/* This style actually only works with bzlib and liblzma.
The stupid zlib interface has nothing to grok the
diff --git a/libdwfl/libdwfl.h b/libdwfl/libdwfl.h
index a0c1d357..f98f1d52 100644
--- a/libdwfl/libdwfl.h
+++ b/libdwfl/libdwfl.h
@@ -42,7 +42,7 @@ typedef struct Dwfl_Module Dwfl_Module;
typedef struct Dwfl_Line Dwfl_Line;
/* This holds information common for all the frames of one backtrace for
- a partical thread/task/TID. Several threads belong to one Dwfl. */
+ a particular thread/task/TID. Several threads belong to one Dwfl. */
typedef struct Dwfl_Thread Dwfl_Thread;
/* This holds everything we know about the state of the frame at a particular
@@ -111,7 +111,7 @@ extern void dwfl_report_begin (Dwfl *dwfl);
/* Report that segment NDX begins at PHDR->p_vaddr + BIAS.
If NDX is < 0, the value succeeding the last call's NDX
- is used instead (zero on the first call).
+ is used instead (zero on the first call). IDENT is ignored.
If nonzero, the smallest PHDR->p_align value seen sets the
effective page size for the address space DWFL describes.
@@ -120,21 +120,9 @@ extern void dwfl_report_begin (Dwfl *dwfl);
Returns -1 for errors, or NDX (or its assigned replacement) on success.
- When NDX is the value succeeding the last call's NDX (or is implicitly
- so as above), IDENT is nonnull and matches the value in the last call,
- and the PHDR and BIAS values reflect a segment that would be contiguous,
- in both memory and file, with the last segment reported, then this
- segment may be coalesced internally with preceding segments. When given
- an address inside this segment, dwfl_addrsegment may return the NDX of a
- preceding contiguous segment. To prevent coalesced segments, always
- pass a null pointer for IDENT.
-
- The values passed are not stored (except to track coalescence).
- The only information that can be extracted from DWFL later is the
- mapping of an address to a segment index that starts at or below
- it. Reporting segments at all is optional. Its only benefit to
- the caller is to offer this quick lookup via dwfl_addrsegment,
- or use other segment-based calls. */
+ Reporting segments at all is optional. Its only benefit to the caller is to
+ offer this quick lookup via dwfl_addrsegment, or use other segment-based
+ calls. */
extern int dwfl_report_segment (Dwfl *dwfl, int ndx,
const GElf_Phdr *phdr, GElf_Addr bias,
const void *ident);
@@ -483,7 +471,7 @@ extern const char *dwfl_module_addrname (Dwfl_Module *mod, GElf_Addr address);
/* Find the symbol associated with ADDRESS. Return its name or NULL
when nothing was found. If the architecture uses function
- descriptors, and symbol st_value points to one, ADDRESS wil be
+ descriptors, and symbol st_value points to one, ADDRESS will be
matched against either the adjusted st_value or the associated
function entry value as described in dwfl_module_getsym_info. If
OFFSET is not NULL it will be filled in with the difference from
@@ -568,7 +556,7 @@ extern Dwarf_Die *dwfl_module_nextcu (Dwfl_Module *mod,
extern Dwfl_Module *dwfl_cumodule (Dwarf_Die *cudie);
-/* Cache the source line information fo the CU and return the
+/* Cache the source line information for the CU and return the
number of Dwfl_Line entries it has. */
extern int dwfl_getsrclines (Dwarf_Die *cudie, size_t *nlines);
@@ -801,7 +789,7 @@ int dwfl_getthread_frames (Dwfl *dwfl, pid_t tid,
/* Return *PC (program counter) for thread-specific frame STATE.
Set *ISACTIVATION according to DWARF frame "activation" definition.
- Typically you need to substract 1 from *PC if *ACTIVATION is false to safely
+ Typically you need to subtract 1 from *PC if *ACTIVATION is false to safely
find function of the caller. ACTIVATION may be NULL. PC must not be NULL.
Function returns false if it failed to find *PC. */
bool dwfl_frame_pc (Dwfl_Frame *state, Dwarf_Addr *pc, bool *isactivation)
diff --git a/libdwfl/libdwflP.h b/libdwfl/libdwflP.h
index f631f946..4344e356 100644
--- a/libdwfl/libdwflP.h
+++ b/libdwfl/libdwflP.h
@@ -40,13 +40,13 @@
#include "../libdw/libdwP.h" /* We need its INTDECLs. */
#include "../libdwelf/libdwelfP.h"
+
+#ifdef ENABLE_LIBDEBUGINFOD
#include "../debuginfod/debuginfod.h"
+#endif
typedef struct Dwfl_Process Dwfl_Process;
-/* gettext helper macros. */
-#define _(Str) dgettext ("elfutils", Str)
-
#define DWFL_ERRORS \
DWFL_ERROR (NOERROR, N_("no error")) \
DWFL_ERROR (UNKNOWN_ERROR, N_("unknown error")) \
@@ -58,6 +58,7 @@ typedef struct Dwfl_Process Dwfl_Process;
DWFL_ERROR (ZLIB, N_("gzip decompression failed")) \
DWFL_ERROR (BZLIB, N_("bzip2 decompression failed")) \
DWFL_ERROR (LZMA, N_("LZMA decompression failed")) \
+ DWFL_ERROR (ZSTD, N_("zstd decompression failed")) \
DWFL_ERROR (UNKNOWN_MACHINE, N_("no support library found for machine")) \
DWFL_ERROR (NOREL, N_("Callbacks missing for ET_REL file")) \
DWFL_ERROR (BADRELTYPE, N_("Unsupported relocation type")) \
@@ -115,8 +116,9 @@ struct Dwfl_User_Core
struct Dwfl
{
const Dwfl_Callbacks *callbacks;
+#ifdef ENABLE_LIBDEBUGINFOD
debuginfod_client *debuginfod;
-
+#endif
Dwfl_Module *modulelist; /* List in order used by full traversals. */
Dwfl_Process *process;
@@ -132,12 +134,7 @@ struct Dwfl
GElf_Addr *lookup_addr; /* Start address of segment. */
Dwfl_Module **lookup_module; /* Module associated with segment, or null. */
int *lookup_segndx; /* User segment index, or -1. */
-
- /* Cache from last dwfl_report_segment call. */
- const void *lookup_tail_ident;
- GElf_Off lookup_tail_vaddr;
- GElf_Off lookup_tail_offset;
- int lookup_tail_ndx;
+ int next_segndx;
struct Dwfl_User_Core *user_core;
};
@@ -613,6 +610,10 @@ extern Dwfl_Error __libdw_unlzma (int fd, off_t start_offset,
void *mapped, size_t mapped_size,
void **whole, size_t *whole_size)
internal_function;
+extern Dwfl_Error __libdw_unzstd (int fd, off_t start_offset,
+ void *mapped, size_t mapped_size,
+ void **whole, size_t *whole_size)
+ internal_function;
/* Skip the image header before a file image: updates *START_OFFSET. */
extern Dwfl_Error __libdw_image_header (int fd, off_t *start_offset,
@@ -636,6 +637,7 @@ extern Dwfl_Error __libdw_open_elf (int fd, Elf **elfp) internal_function;
extern bool __libdwfl_dynamic_vaddr_get (Elf *elf, GElf_Addr *vaddrp)
internal_function;
+#ifdef ENABLE_LIBDEBUGINFOD
/* Internal interface to libdebuginfod (if installed). */
int
__libdwfl_debuginfod_find_executable (Dwfl *dwfl,
@@ -647,6 +649,7 @@ __libdwfl_debuginfod_find_debuginfo (Dwfl *dwfl,
size_t build_id_len);
void
__libdwfl_debuginfod_end (debuginfod_client *c);
+#endif
/* These are working nicely for --core, but are not ready to be
diff --git a/libdwfl/link_map.c b/libdwfl/link_map.c
index 29307c74..0d8d1c17 100644
--- a/libdwfl/link_map.c
+++ b/libdwfl/link_map.c
@@ -225,6 +225,75 @@ addrsize (uint_fast8_t elfclass)
return elfclass * 4;
}
+struct memory_closure
+{
+ Dwfl *dwfl;
+ Dwfl_Memory_Callback *callback;
+ void *arg;
+};
+
+static inline int
+release_buffer (struct memory_closure *closure,
+ void **buffer, size_t *buffer_available, int result)
+{
+ if (*buffer != NULL)
+ (*closure->callback) (closure->dwfl, -1, buffer, buffer_available, 0, 0,
+ closure->arg);
+
+ return result;
+}
+
+static inline bool
+read_addrs (struct memory_closure *closure,
+ uint_fast8_t elfclass, uint_fast8_t elfdata,
+ void **buffer, size_t *buffer_available,
+ GElf_Addr vaddr, GElf_Addr *read_vaddr,
+ size_t n, GElf_Addr *addrs /* [4] */)
+{
+ size_t nb = n * addrsize (elfclass); /* Address words -> bytes to read. */
+ Dwfl *dwfl = closure->dwfl;
+
+ /* Read a new buffer if the old one doesn't cover these words. */
+ if (buffer == NULL
+ || vaddr < *read_vaddr
+ || vaddr - (*read_vaddr) + nb > *buffer_available)
+ {
+ release_buffer (closure, buffer, buffer_available, 0);
+
+ *read_vaddr = vaddr;
+ int segndx = INTUSE(dwfl_addrsegment) (dwfl, vaddr, NULL);
+ if (unlikely (segndx < 0)
+ || unlikely (! (*closure->callback) (dwfl, segndx,
+ buffer, buffer_available,
+ vaddr, nb, closure->arg)))
+ return true;
+ }
+
+ Elf32_Addr (*a32)[n] = vaddr - (*read_vaddr) + (*buffer);
+ Elf64_Addr (*a64)[n] = (void *) a32;
+
+ if (elfclass == ELFCLASS32)
+ {
+ if (elfdata == ELFDATA2MSB)
+ for (size_t i = 0; i < n; ++i)
+ addrs[i] = BE32 (read_4ubyte_unaligned_noncvt (&(*a32)[i]));
+ else
+ for (size_t i = 0; i < n; ++i)
+ addrs[i] = LE32 (read_4ubyte_unaligned_noncvt (&(*a32)[i]));
+ }
+ else
+ {
+ if (elfdata == ELFDATA2MSB)
+ for (size_t i = 0; i < n; ++i)
+ addrs[i] = BE64 (read_8ubyte_unaligned_noncvt (&(*a64)[i]));
+ else
+ for (size_t i = 0; i < n; ++i)
+ addrs[i] = LE64 (read_8ubyte_unaligned_noncvt (&(*a64)[i]));
+ }
+
+ return false;
+}
+
/* Report a module for each struct link_map in the linked list at r_map
in the struct r_debug at R_DEBUG_VADDR. For r_debug_info description
see dwfl_link_map_report in libdwflP.h. If R_DEBUG_INFO is not NULL then no
@@ -249,62 +318,13 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
void *buffer = NULL;
size_t buffer_available = 0;
- inline int release_buffer (int result)
- {
- if (buffer != NULL)
- (void) (*memory_callback) (dwfl, -1, &buffer, &buffer_available, 0, 0,
- memory_callback_arg);
- return result;
- }
-
GElf_Addr addrs[4];
- inline bool read_addrs (GElf_Addr vaddr, size_t n)
- {
- size_t nb = n * addrsize (elfclass); /* Address words -> bytes to read. */
-
- /* Read a new buffer if the old one doesn't cover these words. */
- if (buffer == NULL
- || vaddr < read_vaddr
- || vaddr - read_vaddr + nb > buffer_available)
- {
- release_buffer (0);
-
- read_vaddr = vaddr;
- int segndx = INTUSE(dwfl_addrsegment) (dwfl, vaddr, NULL);
- if (unlikely (segndx < 0)
- || unlikely (! (*memory_callback) (dwfl, segndx,
- &buffer, &buffer_available,
- vaddr, nb, memory_callback_arg)))
- return true;
- }
-
- Elf32_Addr (*a32)[n] = vaddr - read_vaddr + buffer;
- Elf64_Addr (*a64)[n] = (void *) a32;
-
- if (elfclass == ELFCLASS32)
- {
- if (elfdata == ELFDATA2MSB)
- for (size_t i = 0; i < n; ++i)
- addrs[i] = BE32 (read_4ubyte_unaligned_noncvt (&(*a32)[i]));
- else
- for (size_t i = 0; i < n; ++i)
- addrs[i] = LE32 (read_4ubyte_unaligned_noncvt (&(*a32)[i]));
- }
- else
- {
- if (elfdata == ELFDATA2MSB)
- for (size_t i = 0; i < n; ++i)
- addrs[i] = BE64 (read_8ubyte_unaligned_noncvt (&(*a64)[i]));
- else
- for (size_t i = 0; i < n; ++i)
- addrs[i] = LE64 (read_8ubyte_unaligned_noncvt (&(*a64)[i]));
- }
-
- return false;
- }
-
- if (unlikely (read_addrs (read_vaddr, 1)))
- return release_buffer (-1);
+ struct memory_closure memory_closure = { dwfl, memory_callback,
+ memory_callback_arg };
+ if (unlikely (read_addrs (&memory_closure, elfclass, elfdata,
+ &buffer, &buffer_available, read_vaddr, &read_vaddr,
+ 1, addrs)))
+ return release_buffer (&memory_closure, &buffer, &buffer_available, -1);
GElf_Addr next = addrs[0];
@@ -318,8 +338,10 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
size_t iterations = 0;
while (next != 0 && ++iterations < dwfl->lookup_elts)
{
- if (read_addrs (next, 4))
- return release_buffer (-1);
+ if (read_addrs (&memory_closure, elfclass, elfdata,
+ &buffer, &buffer_available, next, &read_vaddr,
+ 4, addrs))
+ return release_buffer (&memory_closure, &buffer, &buffer_available, -1);
/* Unused: l_addr is the difference between the address in memory
and the ELF file when the core was created. We need to
@@ -345,7 +367,7 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
name = l_name - read_vaddr + buffer;
else
{
- release_buffer (0);
+ release_buffer (&memory_closure, &buffer, &buffer_available, 0);
read_vaddr = l_name;
int segndx = INTUSE(dwfl_addrsegment) (dwfl, l_name, NULL);
if (likely (segndx >= 0)
@@ -372,7 +394,8 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
r_debug_info_module = malloc (sizeof (*r_debug_info_module)
+ strlen (name1) + 1);
if (unlikely (r_debug_info_module == NULL))
- return release_buffer (result);
+ release_buffer (&memory_closure, &buffer,
+ &buffer_available, result);
r_debug_info_module->fd = -1;
r_debug_info_module->elf = NULL;
r_debug_info_module->l_ld = l_ld;
@@ -413,7 +436,8 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
GElf_Addr build_id_vaddr = (build_id_elfaddr
- elf_dynamic_vaddr + l_ld);
- release_buffer (0);
+ release_buffer (&memory_closure, &buffer,
+ &buffer_available, 0);
int segndx = INTUSE(dwfl_addrsegment) (dwfl,
build_id_vaddr,
NULL);
@@ -432,7 +456,9 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
/* File has valid build-id which does not match
the one in memory. */
valid = false;
- release_buffer (0);
+ release_buffer (&memory_closure, &buffer,
+ &buffer_available, 0);
+
}
}
@@ -498,7 +524,7 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
}
}
- return release_buffer (result);
+ return release_buffer (&memory_closure, &buffer, &buffer_available, result);
}
static GElf_Addr
@@ -758,31 +784,6 @@ dwfl_link_map_report (Dwfl *dwfl, const void *auxv, size_t auxv_size,
GElf_Xword dyn_filesz = 0;
GElf_Addr dyn_bias = (GElf_Addr) -1;
- inline bool consider_phdr (GElf_Word type,
- GElf_Addr vaddr, GElf_Xword filesz)
- {
- switch (type)
- {
- case PT_PHDR:
- if (dyn_bias == (GElf_Addr) -1
- /* Do a sanity check on the putative address. */
- && ((vaddr & (dwfl->segment_align - 1))
- == (phdr & (dwfl->segment_align - 1))))
- {
- dyn_bias = phdr - vaddr;
- return dyn_vaddr != 0;
- }
- break;
-
- case PT_DYNAMIC:
- dyn_vaddr = vaddr;
- dyn_filesz = filesz;
- return dyn_bias != (GElf_Addr) -1;
- }
-
- return false;
- }
-
if (phdr != 0 && phnum != 0)
{
Dwfl_Module *phdr_mod;
@@ -895,22 +896,39 @@ dwfl_link_map_report (Dwfl *dwfl, const void *auxv, size_t auxv_size,
? elf32_xlatetom : elf64_xlatetom)
(&out, &in, elfdata) != NULL))
{
- /* We are looking for PT_DYNAMIC. */
- if (elfclass == ELFCLASS32)
+ bool is32 = (elfclass == ELFCLASS32);
+ for (size_t i = 0; i < phnum; ++i)
{
- for (size_t i = 0; i < phnum; ++i)
- if (consider_phdr ((*p32)[i].p_type,
- (*p32)[i].p_vaddr,
- (*p32)[i].p_filesz))
- break;
- }
- else
- {
- for (size_t i = 0; i < phnum; ++i)
- if (consider_phdr ((*p64)[i].p_type,
- (*p64)[i].p_vaddr,
- (*p64)[i].p_filesz))
- break;
+ GElf_Word type = (is32
+ ? (*p32)[i].p_type
+ : (*p64)[i].p_type);
+ GElf_Addr vaddr = (is32
+ ? (*p32)[i].p_vaddr
+ : (*p64)[i].p_vaddr);
+ GElf_Xword filesz = (is32
+ ? (*p32)[i].p_filesz
+ : (*p64)[i].p_filesz);
+
+ if (type == PT_PHDR)
+ {
+ if (dyn_bias == (GElf_Addr) -1
+ /* Do a sanity check on the putative address. */
+ && ((vaddr & (dwfl->segment_align - 1))
+ == (phdr & (dwfl->segment_align - 1))))
+ {
+ dyn_bias = phdr - vaddr;
+ if (dyn_vaddr != 0)
+ break;
+ }
+
+ }
+ else if (type == PT_DYNAMIC)
+ {
+ dyn_vaddr = vaddr;
+ dyn_filesz = filesz;
+ if (dyn_bias != (GElf_Addr) -1)
+ break;
+ }
}
}
diff --git a/libdwfl/linux-core-attach.c b/libdwfl/linux-core-attach.c
index c0f1b0d0..f68062f0 100644
--- a/libdwfl/linux-core-attach.c
+++ b/libdwfl/linux-core-attach.c
@@ -181,7 +181,8 @@ core_set_initial_registers (Dwfl_Thread *thread, void *thread_arg_voidp)
size_t getnote_err = gelf_getnote (note_data, offset, &nhdr, &name_offset,
&desc_offset);
/* __libdwfl_attach_state_for_core already verified the note is there. */
- assert (getnote_err != 0);
+ if (getnote_err == 0)
+ return false;
/* Do not check NAME for now, help broken Linux kernels. */
const char *name = (nhdr.n_namesz == 0
? "" : note_data->d_buf + name_offset);
@@ -195,8 +196,8 @@ core_set_initial_registers (Dwfl_Thread *thread, void *thread_arg_voidp)
&regs_offset, &nregloc, &reglocs,
&nitems, &items);
/* __libdwfl_attach_state_for_core already verified the note is there. */
- assert (core_note_err != 0);
- assert (nhdr.n_type == NT_PRSTATUS);
+ if (core_note_err == 0 || nhdr.n_type != NT_PRSTATUS)
+ return false;
const Ebl_Core_Item *item;
for (item = items; item < items + nitems; item++)
if (strcmp (item->name, "pid") == 0)
diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
index d46ab5aa..6edb27f2 100644
--- a/libdwfl/linux-kernel-modules.c
+++ b/libdwfl/linux-kernel-modules.c
@@ -128,7 +128,7 @@ try_kernel_name (Dwfl *dwfl, char **fname, bool try_debug)
if (fd < 0)
for (size_t i = 0;
- i < sizeof vmlinux_suffixes / sizeof vmlinux_suffixes[0];
+ i < sizeof vmlinux_suffixes / sizeof vmlinux_suffixes[0] && fd < 0;
++i)
{
char *zname;
@@ -174,9 +174,12 @@ kernel_release (void)
static int
find_kernel_elf (Dwfl *dwfl, const char *release, char **fname)
{
- if ((release[0] == '/'
- ? asprintf (fname, "%s/vmlinux", release)
- : asprintf (fname, "/boot/vmlinux-%s", release)) < 0)
+ /* First try to find an uncompressed vmlinux image. Possibly
+ including debuginfo. */
+ if (release == NULL
+ || ((release[0] == '/'
+ ? asprintf (fname, "%s/vmlinux", release)
+ : asprintf (fname, "/boot/vmlinux-%s", release)) < 0))
return -1;
int fd = try_kernel_name (dwfl, fname, true);
@@ -188,6 +191,27 @@ find_kernel_elf (Dwfl *dwfl, const char *release, char **fname)
fd = try_kernel_name (dwfl, fname, true);
}
+ /* There might be a compressed vmlinuz image. Probably without
+ debuginfo, but try to find it under the debug path also, just in
+ case. */
+ if (fd < 0)
+ {
+ free (*fname);
+ if ((release[0] == '/'
+ ? asprintf (fname, "%s/vmlinuz", release)
+ : asprintf (fname, "/boot/vmlinuz-%s", release)) < 0)
+ return -1;
+
+ fd = try_kernel_name (dwfl, fname, true);
+ if (fd < 0 && release[0] != '/')
+ {
+ free (*fname);
+ if (asprintf (fname, MODULEDIRFMT "/vmlinuz", release) < 0)
+ return -1;
+ fd = try_kernel_name (dwfl, fname, true);
+ }
+ }
+
return fd;
}
@@ -218,6 +242,9 @@ report_kernel (Dwfl *dwfl, const char **release,
if (unlikely (result != 0))
return result;
+ if (release == NULL || *release == NULL)
+ return EINVAL;
+
char *fname;
int fd = find_kernel_elf (dwfl, *release, &fname);
@@ -273,6 +300,9 @@ report_kernel_archive (Dwfl *dwfl, const char **release,
if (unlikely (result != 0))
return result;
+ if (release == NULL || *release == NULL)
+ return EINVAL;
+
char *archive;
int res = (((*release)[0] == '/')
? asprintf (&archive, "%s/debug.a", *release)
@@ -327,6 +357,9 @@ check_suffix (const FTSENT *f, size_t namelen)
#if USE_LZMA
TRY (".ko.xz");
#endif
+#if USE_ZSTD
+ TRY (".ko.zst");
+#endif
return 0;
@@ -508,10 +541,14 @@ intuit_kernel_bounds (Dwarf_Addr *start, Dwarf_Addr *end, Dwarf_Addr *notes)
if (result == 0)
{
+ Dwarf_Addr addr;
*end = *start;
- while (read_address (&state, end))
- if (*notes == 0 && !strcmp (state.p, "__start_notes\n"))
- *notes = *end;
+ while (read_address (&state, &addr) && addr >= *end)
+ {
+ *end = addr;
+ if (*notes == 0 && !strcmp (state.p, "__start_notes\n"))
+ *notes = *end;
+ }
Dwarf_Addr round_kernel = sysconf (_SC_PAGESIZE);
*start &= -(Dwarf_Addr) round_kernel;
diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c
index f19e9b49..fdf5c9b1 100644
--- a/libdwfl/linux-pid-attach.c
+++ b/libdwfl/linux-pid-attach.c
@@ -124,7 +124,7 @@ read_cached_memory (struct __libdwfl_pid_arg *pid_arg,
Dwarf_Addr addr, Dwarf_Word *result)
{
/* Let the ptrace fallback deal with the corner case of the address
- possibly crossing a page boundery. */
+ possibly crossing a page boundary. */
if ((addr & ((Dwarf_Addr)__LIBDWFL_REMOTE_MEM_CACHE_SIZE - 1))
> (Dwarf_Addr)__LIBDWFL_REMOTE_MEM_CACHE_SIZE - sizeof (unsigned long))
return false;
@@ -193,14 +193,22 @@ pid_memory_read (Dwfl *dwfl, Dwarf_Addr addr, Dwarf_Word *result, void *arg)
{
struct __libdwfl_pid_arg *pid_arg = arg;
pid_t tid = pid_arg->tid_attached;
+ Dwfl_Process *process = dwfl->process;
assert (tid > 0);
#ifdef HAVE_PROCESS_VM_READV
if (read_cached_memory (pid_arg, addr, result))
+ {
+#if SIZEOF_LONG == 8
+# if BYTE_ORDER == BIG_ENDIAN
+ if (ebl_get_elfclass (process->ebl) == ELFCLASS32)
+ *result >>= 32;
+# endif
+#endif
return true;
+ }
#endif
- Dwfl_Process *process = dwfl->process;
if (ebl_get_elfclass (process->ebl) == ELFCLASS64)
{
#if SIZEOF_LONG == 8
@@ -422,7 +430,11 @@ dwfl_linux_proc_attach (Dwfl *dwfl, pid_t pid, bool assume_ptrace_stopped)
char name[64];
int i = snprintf (name, sizeof (name), "/proc/%ld/task", (long) pid);
- assert (i > 0 && i < (ssize_t) sizeof (name) - 1);
+ if (i <= 0 || i >= (ssize_t) sizeof (name) - 1)
+ {
+ errno = -ENOMEM;
+ goto fail;
+ }
DIR *dir = opendir (name);
if (dir == NULL)
{
diff --git a/libdwfl/open.c b/libdwfl/open.c
index 35fc5283..77bd2bd9 100644
--- a/libdwfl/open.c
+++ b/libdwfl/open.c
@@ -44,6 +44,10 @@
# define __libdw_unlzma(...) DWFL_E_BADELF
#endif
+#if !USE_ZSTD
+# define __libdw_unzstd(...) DWFL_E_BADELF
+#endif
+
/* Consumes and replaces *ELF only on success. */
static Dwfl_Error
decompress (int fd __attribute__ ((unused)), Elf **elf)
@@ -64,6 +68,8 @@ decompress (int fd __attribute__ ((unused)), Elf **elf)
error = __libdw_bunzip2 (fd, offset, mapped, mapped_size, &buffer, &size);
if (error == DWFL_E_BADELF)
error = __libdw_unlzma (fd, offset, mapped, mapped_size, &buffer, &size);
+ if (error == DWFL_E_BADELF)
+ error = __libdw_unzstd (fd, offset, mapped, mapped_size, &buffer, &size);
if (error == DWFL_E_NOERROR)
{
diff --git a/libdwfl/segment.c b/libdwfl/segment.c
index d9599a7f..f6a3e84e 100644
--- a/libdwfl/segment.c
+++ b/libdwfl/segment.c
@@ -287,11 +287,15 @@ int
dwfl_report_segment (Dwfl *dwfl, int ndx, const GElf_Phdr *phdr, GElf_Addr bias,
const void *ident)
{
+ /* This was previously used for coalescing segments, but it was buggy since
+ day one. We don't use it anymore. */
+ (void)ident;
+
if (dwfl == NULL)
return -1;
if (ndx < 0)
- ndx = dwfl->lookup_tail_ndx;
+ ndx = dwfl->next_segndx;
if (phdr->p_align > 1 && (dwfl->segment_align <= 1 ||
phdr->p_align < dwfl->segment_align))
@@ -307,30 +311,19 @@ dwfl_report_segment (Dwfl *dwfl, int ndx, const GElf_Phdr *phdr, GElf_Addr bias,
GElf_Addr end = __libdwfl_segment_end (dwfl,
bias + phdr->p_vaddr + phdr->p_memsz);
- /* Coalesce into the last one if contiguous and matching. */
- if (ndx != dwfl->lookup_tail_ndx
- || ident == NULL
- || ident != dwfl->lookup_tail_ident
- || start != dwfl->lookup_tail_vaddr
- || phdr->p_offset != dwfl->lookup_tail_offset)
- {
- /* Normally just appending keeps us sorted. */
+ /* Normally just appending keeps us sorted. */
- size_t i = dwfl->lookup_elts;
- while (i > 0 && unlikely (start < dwfl->lookup_addr[i - 1]))
- --i;
+ size_t i = dwfl->lookup_elts;
+ while (i > 0 && unlikely (start < dwfl->lookup_addr[i - 1]))
+ --i;
- if (unlikely (insert (dwfl, i, start, end, ndx)))
- {
- __libdwfl_seterrno (DWFL_E_NOMEM);
- return -1;
- }
+ if (unlikely (insert (dwfl, i, start, end, ndx)))
+ {
+ __libdwfl_seterrno (DWFL_E_NOMEM);
+ return -1;
}
- dwfl->lookup_tail_ident = ident;
- dwfl->lookup_tail_vaddr = end;
- dwfl->lookup_tail_offset = end - bias - phdr->p_vaddr + phdr->p_offset;
- dwfl->lookup_tail_ndx = ndx + 1;
+ dwfl->next_segndx = ndx + 1;
return ndx;
}
diff --git a/libdwfl/zstd.c b/libdwfl/zstd.c
new file mode 100644
index 00000000..dc4d5238
--- /dev/null
+++ b/libdwfl/zstd.c
@@ -0,0 +1,4 @@
+/* libzstd is pretty close to zlib and bzlib. */
+
+#define ZSTD
+#include "gzip.c"
diff --git a/libebl/ChangeLog b/libebl/ChangeLog
index 4da7eeeb..33208f0d 100644
--- a/libebl/ChangeLog
+++ b/libebl/ChangeLog
@@ -1,3 +1,68 @@
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * libeblP.h (_): Remove.
+
+2020-12-15 Dmitry V. Levin <ldv@altlinux.org>
+
+ * eblbackendname.c (ebl_backend_name): Replace gettext(...) with _(...).
+ * eblcorenotetypename.c (ebl_core_note_type_name): Likewise.
+ * ebldynamictagname.c (ebl_dynamic_tag_name): Likewise.
+ * eblobjnote.c (ebl_object_note): Likewise.
+ * eblobjnotetypename.c (ebl_object_note_type_name): Likewise.
+ * eblosabiname.c (ebl_osabi_name): Likewise.
+ * eblsectionname.c (ebl_section_name): Likewise.
+ * eblsectiontypename.c (ebl_section_type_name): Likewise.
+ * eblsegmenttypename.c (ebl_segment_type_name): Likewise.
+ * eblsymbolbindingname.c (ebl_symbol_binding_name): Likewise.
+ * eblsymboltypename.c (ebl_symbol_type_name): Likewise.
+
+2020-10-19 Mark Wielaard <mark@klomp.org>
+
+ * eblopenbackend.c (tilegx_init): Removed.
+ (machines): Set init to NULL for tilegx.
+
+2020-10-19 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (libebl_a_SOURCES): Remove ebl_syscall_abi.c.
+ * ebl-hooks.h (syscall_abi): Remove.
+ * ebl_syscall_abi.c: Delete.
+ * eblopenbackend.c (default_syscall_abi): Remove.
+ (fill_defaults): Remove syscall_abi assignment.
+ * libebl.h (ebl_syscall_abi): Remove.
+
+2020-09-03 Mark Wielaard <mark@klomp.org>
+
+ * eblobjnote.c (ebl_object_note): For EM_AARCH64 handle BTI and PAC
+ in GNU_PROPERTY_AARCH64_FEATURE_1_AND.
+
+2020-07-19 Mark Wielaard <mark@klomp.org>
+
+ * libebl.h: Only typedef Ebl if _LIBASM_H is undefined.
+
+2020-06-10 Mark Wielaard <mark@klomp.org>
+
+ * eblopenbackend.c (i386_init, sh_init, x86_64_init, ia64_init,
+ alpha_init, arm_init, aarch64_init, sparc_init, ppc_init,
+ ppc64_init, s390_init, tilegx_init, m68k_init, bpf_init,
+ riscv_init, csky_init): Adjust signature.
+ (openbackend): Call init without sizeof(Ebl).
+ * libeblP.h (ebl_bhinit_t): Adjust signature.
+
+2020-06-04 Mark Wielaard <mark@klomp.org>
+
+ * eblsegmenttypename.c (ebl_segment_type_name): Remove
+ PT_GNU_PROPERTY define.
+
+2020-04-17 Mark Wielaard <mark@klomp.org>
+
+ * eblopenbackend.c (default_debugscn_p): Handle .gnu.debuglto_
+ prefix.
+
+2020-02-08 Mark Wielaard <mark@klomp.org>
+
+ * eblsegmenttypename.c (ebl_segment_type_name): Handle
+ PT_GNU_PROPERTY.
+
2019-08-29 Mark Wielaard <mark@klomp.org>
* Makefile.am (noinst_LIBRARIES): Add libebl.a.
@@ -1049,7 +1114,7 @@
2005-05-11 Ulrich Drepper <drepper@redhat.com>
* eblcorenote.c: Handle new AT_* values and files with different
- endianess.
+ endianness.
* Makefile.am (x86_64_SRCS): Add x86_64_corenote.c.
* x86-64_corenote.c: New file.
* x86_64_init.c: Hook in x86_64_corenote.
diff --git a/libebl/Makefile.am b/libebl/Makefile.am
index d0d475b8..d84e7ee2 100644
--- a/libebl/Makefile.am
+++ b/libebl/Makefile.am
@@ -51,7 +51,7 @@ libebl_a_SOURCES = eblopenbackend.c eblclosebackend.c eblreloctypename.c \
eblbsspltp.c eblretval.c eblreginfo.c eblnonerelocp.c \
eblrelativerelocp.c eblsysvhashentrysize.c eblauxvinfo.c \
eblcheckobjattr.c ebl_check_special_section.c \
- ebl_syscall_abi.c eblabicfi.c eblstother.c eblinitreg.c \
+ eblabicfi.c eblstother.c eblinitreg.c \
ebldwarftoregno.c eblnormalizepc.c eblunwind.c \
eblresolvesym.c eblcheckreloctargettype.c \
ebl_data_marker_symbol.c
diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h
index 1e7960b8..1214bb84 100644
--- a/libebl/ebl-hooks.h
+++ b/libebl/ebl-hooks.h
@@ -142,10 +142,6 @@ ssize_t EBLHOOK(register_info) (Ebl *ebl,
const char **prefix, const char **setname,
int *bits, int *type);
-/* Return system call ABI registers. */
-int EBLHOOK(syscall_abi) (Ebl *ebl, int *sp, int *pc,
- int *callno, int args[6]);
-
/* Disassembler function. */
int EBLHOOK(disasm) (Ebl *ebl, const uint8_t **startp, const uint8_t *end,
GElf_Addr addr, const char *fmt, DisasmOutputCB_t outcb,
diff --git a/libebl/ebl_syscall_abi.c b/libebl/ebl_syscall_abi.c
deleted file mode 100644
index a25369d2..00000000
--- a/libebl/ebl_syscall_abi.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Return system call ABI mapped to DWARF register numbers.
- Copyright (C) 2008 Red Hat, Inc.
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
- it under the terms of either
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at
- your option) any later version
-
- or
-
- * the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at
- your option) any later version
-
- or both in parallel, as here.
-
- elfutils is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received copies of the GNU General Public License and
- the GNU Lesser General Public License along with this program. If
- not, see <http://www.gnu.org/licenses/>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <libeblP.h>
-
-
-int
-ebl_syscall_abi (Ebl *ebl, int *sp, int *pc, int *callno, int *args)
-{
- return ebl != NULL ? ebl->syscall_abi (ebl, sp, pc, callno, args) : -1;
-}
diff --git a/libebl/eblbackendname.c b/libebl/eblbackendname.c
index a2b2df69..e52b1e84 100644
--- a/libebl/eblbackendname.c
+++ b/libebl/eblbackendname.c
@@ -38,5 +38,5 @@
const char *
ebl_backend_name (Ebl *ebl)
{
- return ebl != NULL ? ebl->emulation : gettext ("No backend");
+ return ebl != NULL ? ebl->emulation : _("No backend");
}
diff --git a/libebl/eblcorenotetypename.c b/libebl/eblcorenotetypename.c
index d3a56fa9..0e790d06 100644
--- a/libebl/eblcorenotetypename.c
+++ b/libebl/eblcorenotetypename.c
@@ -97,7 +97,7 @@ ebl_core_note_type_name (Ebl *ebl, uint32_t type, char *buf, size_t len)
#undef KNOWNSTYPE
default:
- snprintf (buf, len, "%s: %" PRIu32, gettext ("<unknown>"), type);
+ snprintf (buf, len, "%s: %" PRIu32, _("<unknown>"), type);
res = buf;
}
diff --git a/libebl/ebldynamictagname.c b/libebl/ebldynamictagname.c
index 5622fc31..3f8d8ee4 100644
--- a/libebl/ebldynamictagname.c
+++ b/libebl/ebldynamictagname.c
@@ -100,7 +100,7 @@ ebl_dynamic_tag_name (Ebl *ebl, int64_t tag, char *buf, size_t len)
res = "FILTER";
else
{
- snprintf (buf, len, gettext ("<unknown>: %#" PRIx64), tag);
+ snprintf (buf, len, _("<unknown>: %#" PRIx64), tag);
res = buf;
diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c
index f7ac915c..36efe275 100644
--- a/libebl/eblobjnote.c
+++ b/libebl/eblobjnote.c
@@ -55,7 +55,7 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type,
{
if (type != 3)
{
- printf (gettext ("unknown SDT version %u\n"), type);
+ printf (_("unknown SDT version %u\n"), type);
return;
}
@@ -73,7 +73,7 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type,
if (descsz < addrs_size + 3)
{
invalid_sdt:
- printf (gettext ("invalid SDT probe descriptor\n"));
+ printf (_("invalid SDT probe descriptor\n"));
return;
}
@@ -123,17 +123,17 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type,
sem = addrs.a64[2];
}
- printf (gettext (" PC: "));
+ printf (_(" PC: "));
printf ("%#" PRIx64 ",", pc);
- printf (gettext (" Base: "));
+ printf (_(" Base: "));
printf ("%#" PRIx64 ",", base);
- printf (gettext (" Semaphore: "));
+ printf (_(" Semaphore: "));
printf ("%#" PRIx64 "\n", sem);
- printf (gettext (" Provider: "));
+ printf (_(" Provider: "));
printf ("%s,", provider);
- printf (gettext (" Name: "));
+ printf (_(" Name: "));
printf ("%s,", pname);
- printf (gettext (" Args: "));
+ printf (_(" Args: "));
printf ("'%s'\n", args);
return;
}
@@ -297,7 +297,7 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type,
case NT_GNU_BUILD_ID:
if (strcmp (name, "GNU") == 0 && descsz > 0)
{
- printf (gettext (" Build ID: "));
+ printf (_(" Build ID: "));
uint_fast32_t i;
for (i = 0; i < descsz - 1; ++i)
printf ("%02" PRIx8, (uint8_t) desc[i]);
@@ -308,7 +308,7 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type,
case NT_GNU_GOLD_VERSION:
if (strcmp (name, "GNU") == 0 && descsz > 0)
/* A non-null terminated version string. */
- printf (gettext (" Linker version: %.*s\n"),
+ printf (_(" Linker version: %.*s\n"),
(int) descsz, desc);
break;
@@ -476,6 +476,73 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type,
}
}
}
+ else if (prop.pr_type >= GNU_PROPERTY_LOPROC
+ && prop.pr_type <= GNU_PROPERTY_HIPROC
+ && ehdr.e_machine == EM_AARCH64)
+ {
+ printf ("AARCH64 ");
+ if (prop.pr_type == GNU_PROPERTY_AARCH64_FEATURE_1_AND)
+ {
+ printf ("FEATURE_1_AND: ");
+
+ if (prop.pr_datasz == 4)
+ {
+ GElf_Word data;
+ in.d_type = ELF_T_WORD;
+ out.d_type = ELF_T_WORD;
+ in.d_size = 4;
+ out.d_size = 4;
+ in.d_buf = (void *) desc;
+ out.d_buf = (void *) &data;
+
+ if (gelf_xlatetom (ebl->elf, &out, &in,
+ elfident[EI_DATA]) == NULL)
+ {
+ printf ("%s\n", elf_errmsg (-1));
+ return;
+ }
+ printf ("%08" PRIx32 " ", data);
+
+ if ((data & GNU_PROPERTY_AARCH64_FEATURE_1_BTI)
+ != 0)
+ {
+ printf ("BTI");
+ data &= ~GNU_PROPERTY_AARCH64_FEATURE_1_BTI;
+ if (data != 0)
+ printf (" ");
+ }
+
+ if ((data & GNU_PROPERTY_AARCH64_FEATURE_1_PAC)
+ != 0)
+ {
+ printf ("PAC");
+ data &= ~GNU_PROPERTY_AARCH64_FEATURE_1_PAC;
+ if (data != 0)
+ printf (" ");
+ }
+
+ if (data != 0)
+ printf ("UNKNOWN");
+ }
+ else
+ printf ("<bad datasz: %" PRId32 ">",
+ prop.pr_datasz);
+
+ printf ("\n");
+ }
+ else
+ {
+ printf ("%#" PRIx32, prop.pr_type);
+ if (prop.pr_datasz > 0)
+ {
+ printf (" data: ");
+ size_t i;
+ for (i = 0; i < prop.pr_datasz - 1; i++)
+ printf ("%02" PRIx8 " ", (uint8_t) desc[i]);
+ printf ("%02" PRIx8 "\n", (uint8_t) desc[i]);
+ }
+ }
+ }
else
{
if (prop.pr_type >= GNU_PROPERTY_LOPROC
@@ -568,7 +635,7 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type,
break;
}
- printf (gettext (" OS: %s, ABI: "), os);
+ printf (_(" OS: %s, ABI: "), os);
for (size_t cnt = 1; cnt < descsz / 4; ++cnt)
{
if (cnt > 1)
diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c
index 6b803cef..9daddcda 100644
--- a/libebl/eblobjnotetypename.c
+++ b/libebl/eblobjnotetypename.c
@@ -74,7 +74,7 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type,
return goknowntypes[type];
else
{
- snprintf (buf, len, "%s: %" PRIu32, gettext ("<unknown>"), type);
+ snprintf (buf, len, "%s: %" PRIu32, _("<unknown>"), type);
return buf;
}
}
@@ -106,7 +106,7 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type,
if (descsz == 0 && type == NT_VERSION)
return "VERSION";
- snprintf (buf, len, "%s: %" PRIu32, gettext ("<unknown>"), type);
+ snprintf (buf, len, "%s: %" PRIu32, _("<unknown>"), type);
return buf;
}
@@ -127,7 +127,7 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type,
res = knowntypes[type];
else
{
- snprintf (buf, len, "%s: %" PRIu32, gettext ("<unknown>"), type);
+ snprintf (buf, len, "%s: %" PRIu32, _("<unknown>"), type);
res = buf;
}
diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
index 210b47e8..a8af1658 100644
--- a/libebl/eblopenbackend.c
+++ b/libebl/eblopenbackend.c
@@ -41,22 +41,21 @@
#include <system.h>
#include <libeblP.h>
-const char *i386_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *sh_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *x86_64_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *ia64_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *alpha_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *arm_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *aarch64_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *sparc_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *ppc_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *ppc64_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *s390_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *tilegx_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *m68k_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *bpf_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *riscv_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *csky_init (Elf *, GElf_Half, Ebl *, size_t);
+Ebl *i386_init (Elf *, GElf_Half, Ebl *);
+Ebl *sh_init (Elf *, GElf_Half, Ebl *);
+Ebl *x86_64_init (Elf *, GElf_Half, Ebl *);
+Ebl *ia64_init (Elf *, GElf_Half, Ebl *);
+Ebl *alpha_init (Elf *, GElf_Half, Ebl *);
+Ebl *arm_init (Elf *, GElf_Half, Ebl *);
+Ebl *aarch64_init (Elf *, GElf_Half, Ebl *);
+Ebl *sparc_init (Elf *, GElf_Half, Ebl *);
+Ebl *ppc_init (Elf *, GElf_Half, Ebl *);
+Ebl *ppc64_init (Elf *, GElf_Half, Ebl *);
+Ebl *s390_init (Elf *, GElf_Half, Ebl *);
+Ebl *m68k_init (Elf *, GElf_Half, Ebl *);
+Ebl *bpf_init (Elf *, GElf_Half, Ebl *);
+Ebl *riscv_init (Elf *, GElf_Half, Ebl *);
+Ebl *csky_init (Elf *, GElf_Half, Ebl *);
/* This table should contain the complete list of architectures as far
as the ELF specification is concerned. */
@@ -79,7 +78,6 @@ static const struct
{ x86_64_init, "elf_x86_64", "x86_64", 6, EM_X86_64, ELFCLASS64, ELFDATA2LSB },
{ ppc_init, "elf_ppc", "ppc", 3, EM_PPC, ELFCLASS32, ELFDATA2MSB },
{ ppc64_init, "elf_ppc64", "ppc64", 5, EM_PPC64, ELFCLASS64, ELFDATA2MSB },
- { tilegx_init, "elf_tilegx", "tilegx", 6, EM_TILEGX, ELFCLASS64, ELFDATA2LSB },
// XXX class and machine fields need to be filled in for all archs.
{ sh_init, "elf_sh", "sh", 2, EM_SH, 0, 0 },
{ arm_init, "ebl_arm", "arm", 3, EM_ARM, 0, 0 },
@@ -88,6 +86,7 @@ static const struct
{ sparc_init, "elf_sparcv8plus", "sparc", 5, EM_SPARC32PLUS, 0, 0 },
{ s390_init, "ebl_s390", "s390", 4, EM_S390, 0, 0 },
+ { NULL, "elf_tilegx", "tilegx", 6, EM_TILEGX, ELFCLASS64, ELFDATA2LSB },
{ NULL, "elf_m32", "m32", 3, EM_M32, 0, 0 },
{ m68k_init, "elf_m68k", "m68k", 4, EM_68K, ELFCLASS32, ELFDATA2MSB },
{ NULL, "elf_m88k", "m88k", 4, EM_88K, 0, 0 },
@@ -214,8 +213,6 @@ static ssize_t default_register_info (Ebl *ebl,
const char **prefix,
const char **setname,
int *bits, int *type);
-static int default_syscall_abi (Ebl *ebl, int *sp, int *pc,
- int *callno, int args[6]);
static bool default_check_object_attribute (Ebl *ebl, const char *vendor,
int tag, uint64_t value,
const char **tag_name,
@@ -259,7 +256,6 @@ fill_defaults (Ebl *result)
result->bss_plt_p = default_bss_plt_p;
result->return_value_location = default_return_value_location;
result->register_info = default_register_info;
- result->syscall_abi = default_syscall_abi;
result->check_object_attribute = default_check_object_attribute;
result->check_reloc_target_type = default_check_reloc_target_type;
result->disasm = NULL;
@@ -330,7 +326,7 @@ openbackend (Elf *elf, const char *emulation, GElf_Half machine)
}
if (machines[cnt].init &&
- machines[cnt].init (elf, machine, result, sizeof(Ebl)))
+ machines[cnt].init (elf, machine, result))
{
result->elf = elf;
/* A few entries are mandatory. */
@@ -621,7 +617,9 @@ default_debugscn_p (const char *name)
for (size_t cnt = 0; cnt < ndwarf_scn_names; ++cnt)
if (strcmp (name, dwarf_scn_names[cnt]) == 0
|| (strncmp (name, ".zdebug", strlen (".zdebug")) == 0
- && strcmp (&name[2], &dwarf_scn_names[cnt][1]) == 0))
+ && strcmp (&name[2], &dwarf_scn_names[cnt][1]) == 0)
+ || (strncmp (name, ".gnu.debuglto_", strlen (".gnu.debuglto_")) == 0
+ && strcmp (&name[14], dwarf_scn_names[cnt]) == 0))
return true;
return false;
@@ -688,20 +686,6 @@ default_register_info (Ebl *ebl __attribute__ ((unused)),
return snprintf (name, namelen, "reg%d", regno);
}
-static int
-default_syscall_abi (Ebl *ebl __attribute__ ((unused)),
- int *sp, int *pc, int *callno, int args[6])
-{
- *sp = *pc = *callno = -1;
- args[0] = -1;
- args[1] = -1;
- args[2] = -1;
- args[3] = -1;
- args[4] = -1;
- args[5] = -1;
- return -1;
-}
-
static bool
default_check_object_attribute (Ebl *ebl __attribute__ ((unused)),
const char *vendor __attribute__ ((unused)),
diff --git a/libebl/eblosabiname.c b/libebl/eblosabiname.c
index b60f2af4..48b3c051 100644
--- a/libebl/eblosabiname.c
+++ b/libebl/eblosabiname.c
@@ -67,10 +67,10 @@ ebl_osabi_name (Ebl *ebl, int osabi, char *buf, size_t len)
else if (osabi == ELFOSABI_ARM)
res = "Arm";
else if (osabi == ELFOSABI_STANDALONE)
- res = gettext ("Stand alone");
+ res = _("Stand alone");
else
{
- snprintf (buf, len, "%s: %d", gettext ("<unknown>"), osabi);
+ snprintf (buf, len, "%s: %d", _("<unknown>"), osabi);
res = buf;
}
diff --git a/libebl/eblsectionname.c b/libebl/eblsectionname.c
index 21c537ff..825ad2f8 100644
--- a/libebl/eblsectionname.c
+++ b/libebl/eblsectionname.c
@@ -80,7 +80,7 @@ ebl_section_name (Ebl *ebl, int section, int xsection, char *buf, size_t len,
else if (section >= SHN_LORESERVE && section <= SHN_HIRESERVE)
snprintf (buf, len, "LORESERVE+%x", section - SHN_LORESERVE);
else
- snprintf (buf, len, "%s: %d", gettext ("<unknown>"), section);
+ snprintf (buf, len, "%s: %d", _("<unknown>"), section);
res = buf;
}
diff --git a/libebl/eblsectiontypename.c b/libebl/eblsectiontypename.c
index 5dc1ec6d..2008b95a 100644
--- a/libebl/eblsectiontypename.c
+++ b/libebl/eblsectiontypename.c
@@ -112,7 +112,7 @@ ebl_section_type_name (Ebl *ebl, int section, char *buf, size_t len)
&& (unsigned int) section <= SHT_HIUSER)
snprintf (buf, len, "SHT_LOUSER+%x", section - SHT_LOUSER);
else
- snprintf (buf, len, "%s: %d", gettext ("<unknown>"), section);
+ snprintf (buf, len, "%s: %d", _("<unknown>"), section);
res = buf;
break;
diff --git a/libebl/eblsegmenttypename.c b/libebl/eblsegmenttypename.c
index 14eda76e..99779214 100644
--- a/libebl/eblsegmenttypename.c
+++ b/libebl/eblsegmenttypename.c
@@ -65,6 +65,8 @@ ebl_segment_type_name (Ebl *ebl, int segment, char *buf, size_t len)
res = "GNU_STACK";
else if (segment == PT_GNU_RELRO)
res = "GNU_RELRO";
+ else if (segment == PT_GNU_PROPERTY)
+ res = "GNU_PROPERTY";
else if (segment == PT_SUNWBSS)
res = "SUNWBSS";
else if (segment == PT_SUNWSTACK)
@@ -76,7 +78,7 @@ ebl_segment_type_name (Ebl *ebl, int segment, char *buf, size_t len)
else if (segment >= PT_LOPROC && segment <= PT_HIPROC)
snprintf (buf, len, "LOPROC+%d", segment - PT_LOPROC);
else
- snprintf (buf, len, "%s: %d", gettext ("<unknown>"), segment);
+ snprintf (buf, len, "%s: %d", _("<unknown>"), segment);
res = buf;
}
diff --git a/libebl/eblsymbolbindingname.c b/libebl/eblsymbolbindingname.c
index 75565fe8..ebd8c2e3 100644
--- a/libebl/eblsymbolbindingname.c
+++ b/libebl/eblsymbolbindingname.c
@@ -65,7 +65,7 @@ ebl_symbol_binding_name (Ebl *ebl, int binding, char *buf, size_t len)
else if (binding >= STB_LOOS && binding <= STB_HIOS)
snprintf (buf, len, "LOOS+%d", binding - STB_LOOS);
else
- snprintf (buf, len, gettext ("<unknown>: %d"), binding);
+ snprintf (buf, len, _("<unknown>: %d"), binding);
res = buf;
}
diff --git a/libebl/eblsymboltypename.c b/libebl/eblsymboltypename.c
index 53b145a8..0ff1722a 100644
--- a/libebl/eblsymboltypename.c
+++ b/libebl/eblsymboltypename.c
@@ -71,7 +71,7 @@ ebl_symbol_type_name (Ebl *ebl, int symbol, char *buf, size_t len)
else if (symbol >= STT_LOOS && symbol <= STT_HIOS)
snprintf (buf, len, "LOOS+%d", symbol - STT_LOOS);
else
- snprintf (buf, len, gettext ("<unknown>: %d"), symbol);
+ snprintf (buf, len, _("<unknown>: %d"), symbol);
res = buf;
}
diff --git a/libebl/libebl.h b/libebl/libebl.h
index 06a14c45..731001d3 100644
--- a/libebl/libebl.h
+++ b/libebl/libebl.h
@@ -45,8 +45,10 @@
#include "elf-knowledge.h"
-/* Opaque type for the handle. */
+/* Opaque type for the handle. libasm.h defined the same thing. */
+#ifndef _LIBASM_H
typedef struct ebl Ebl;
+#endif
#ifdef __cplusplus
@@ -239,14 +241,6 @@ extern ssize_t ebl_register_info (Ebl *ebl,
const char **prefix, const char **setname,
int *bits, int *type);
-/* Fill in the DWARF register numbers for the registers used in system calls.
- The SP and PC are what kernel reports call the user stack pointer and PC.
- The CALLNO and ARGS are the system call number and incoming arguments.
- Each of these is filled with the DWARF register number corresponding,
- or -1 if there is none. Returns zero when the information is available. */
-extern int ebl_syscall_abi (Ebl *ebl, int *sp, int *pc,
- int *callno, int args[6]);
-
/* Supply the ABI-specified state of DWARF CFI before CIE initial programs.
The DWARF 3.0 spec says that the default initial states of all registers
diff --git a/libebl/libeblP.h b/libebl/libeblP.h
index fd0fcc98..fa1c2c9f 100644
--- a/libebl/libeblP.h
+++ b/libebl/libeblP.h
@@ -80,13 +80,10 @@ struct ebl
};
-/* Type of the initialization functions in the backend modules. */
-typedef const char *(*ebl_bhinit_t) (Elf *, GElf_Half, Ebl *, size_t);
-
-
-/* gettext helper macros. */
-#undef _
-#define _(Str) dgettext ("elfutils", Str)
+/* Type of the initialization functions in the backend modules.
+ The init function returns the given Ebl * or NULL if it couldn't
+ initialize for the given Elf or machine. */
+typedef Ebl *(*ebl_bhinit_t) (Elf *, GElf_Half, Ebl *);
/* LEB128 constant helper macros. */
diff --git a/libelf/Android.bp b/libelf/Android.bp
deleted file mode 100644
index 1c7e6472..00000000
--- a/libelf/Android.bp
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright (C) 2013 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-cc_library {
- name: "libelf",
- host_supported: true,
- vendor_available: true,
-
- srcs: [
- "elf32_checksum.c",
- "elf32_fsize.c",
- "elf32_getchdr.c",
- "elf32_getehdr.c",
- "elf32_getphdr.c",
- "elf32_getshdr.c",
- "elf32_newehdr.c",
- "elf32_newphdr.c",
- "elf32_offscn.c",
- "elf32_updatefile.c",
- "elf32_updatenull.c",
- "elf32_xlatetof.c",
- "elf32_xlatetom.c",
- "elf64_checksum.c",
- "elf64_fsize.c",
- "elf64_getchdr.c",
- "elf64_getehdr.c",
- "elf64_getphdr.c",
- "elf64_getshdr.c",
- "elf64_newehdr.c",
- "elf64_newphdr.c",
- "elf64_offscn.c",
- "elf64_updatefile.c",
- "elf64_updatenull.c",
- "elf64_xlatetof.c",
- "elf64_xlatetom.c",
- "elf_begin.c",
- "elf_clone.c",
- "elf_cntl.c",
- "elf_compress.c",
- "elf_end.c",
- "elf_error.c",
- "elf_fill.c",
- "elf_flagdata.c",
- "elf_flagehdr.c",
- "elf_flagelf.c",
- "elf_flagphdr.c",
- "elf_flagscn.c",
- "elf_flagshdr.c",
- "elf_getarhdr.c",
- "elf_getaroff.c",
- "elf_getarsym.c",
- "elf_getbase.c",
- "elf_getdata.c",
- "elf_getdata_rawchunk.c",
- "elf_getident.c",
- "elf_getphdrnum.c",
- "elf_getscn.c",
- "elf_getshdrnum.c",
- "elf_getshdrstrndx.c",
- "elf_gnu_hash.c",
- "elf_hash.c",
- "elf_kind.c",
- "elf_memory.c",
- "elf_ndxscn.c",
- "elf_newdata.c",
- "elf_newscn.c",
- "elf_next.c",
- "elf_nextscn.c",
- "elf_rand.c",
- "elf_rawdata.c",
- "elf_rawfile.c",
- "elf_readall.c",
- "elf_scnshndx.c",
- "elf_strptr.c",
- "elf_update.c",
- "elf_version.c",
- "gelf_checksum.c",
- "gelf_fsize.c",
- "gelf_getauxv.c",
- "gelf_getchdr.c",
- "gelf_getclass.c",
- "gelf_getdyn.c",
- "gelf_getehdr.c",
- "gelf_getlib.c",
- "gelf_getmove.c",
- "gelf_getnote.c",
- "gelf_getphdr.c",
- "gelf_getrela.c",
- "gelf_getrel.c",
- "gelf_getshdr.c",
- "gelf_getsym.c",
- "gelf_getsyminfo.c",
- "gelf_getsymshndx.c",
- "gelf_getverdaux.c",
- "gelf_getverdef.c",
- "gelf_getvernaux.c",
- "gelf_getverneed.c",
- "gelf_getversym.c",
- "gelf_newehdr.c",
- "gelf_newphdr.c",
- "gelf_offscn.c",
- "gelf_update_auxv.c",
- "gelf_update_dyn.c",
- "gelf_update_ehdr.c",
- "gelf_update_lib.c",
- "gelf_update_move.c",
- "gelf_update_phdr.c",
- "gelf_update_rela.c",
- "gelf_update_rel.c",
- "gelf_update_shdr.c",
- "gelf_update_sym.c",
- "gelf_update_syminfo.c",
- "gelf_update_symshndx.c",
- "gelf_update_verdaux.c",
- "gelf_update_verdef.c",
- "gelf_update_vernaux.c",
- "gelf_update_verneed.c",
- "gelf_update_versym.c",
- "gelf_xlate.c",
- "gelf_xlatetof.c",
- "gelf_xlatetom.c",
- "libelf_crc32.c",
- "libelf_next_prime.c",
- "nlist.c",
- ],
-
- cflags: [
- "-DHAVE_CONFIG_H",
- "-std=gnu99",
- "-D_GNU_SOURCE",
- "-Werror",
- // to suppress the "pointer of type ‘void *’ used in arithmetic" warning
- "-Wno-pointer-arith",
- ],
-
- static_libs: ["libz"],
-
- header_libs: ["elfutils_headers"],
-
- export_header_lib_headers: ["elfutils_headers"],
- export_include_dirs: ["."],
-
- target: {
- darwin: {
- enabled: false,
- },
- android: {
- cflags: [
- "-D_FILE_OFFSET_BITS=64",
- "-include AndroidFixup.h",
- ],
- shared: {
- enabled: false,
- },
- },
- },
-
- visibility: [
- "//device/google/contexthub/util/nanoapp_postprocess",
- "//external/igt-gpu-tools",
- "//external/mesa3d",
- ],
-}
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index dde6c81d..a1fd414c 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,103 @@
+2020-12-12 Mark Wielaard <mark@klomp.org>
+
+ * elf.h: Update from glibc.
+
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * libelfP.h (_): Remove.
+
+2020-12-15 Mark Wielaard <mark@klomp.org>
+
+ * elf_begin.c (get_shnum): Make sure the full Ehdr is available.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * common.h: Fix spelling typo in comment.
+ * gelf.h: Likewise.
+ * libelf.h: Likewise.
+ * libelfP.h: Likewise.
+ * elf32_checksum.c (elfw2): Likewise.
+ * elf_begin.c (dup_elf, write_file): Likewise.
+ * elf_compress.c (__libelf_compress): Likewise.
+ * elf_compress_gnu.c (elf_compress_gnu): Likewise.
+
+2020-12-11 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (GCC_INCLUDE): Remove.
+
+2020-12-09 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (noinst_PROGRAMS): Rename to noinst_DATA.
+ (libelf_so_SOURCES): Remove.
+ (CLEANFILES): Add libelf.so.
+
+2020-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (libelf.so$(EXEEXT)): Drop $(EXEEXT) suffix.
+
+2020-11-06 Mark Wielaard <mark@klomp.org>
+
+ * elf-knowledge.h (SH_ENTSIZE_HASH): Update comment.
+
+2020-11-01 Mark Wielaard <mark@klomp.org>
+
+ * elf_strptr.c (elf_strptr): Check shdr is not NULL.
+
+2020-11-01 Mark Wielaard <mark@klomp.org>
+
+ * elf_getphdrnum.c (__elf_getphdrnum_rdlock): Set *dst to zero on
+ error.
+
+2020-11-01 Mark Wielaard <mark@klomp.org>
+
+ * libelfP.h (__libelf_data_type): Take an GElf_Ehdr instead of an
+ Elf handle.
+ * elf_getdata.c (__libelf_data_type): Likewise. And check ehdr
+ directly instead of fetching a new one.
+ (__libelf_set_rawdata_wrlock): Fetch Ehdr, report an error when that
+ fails, otherwise call __libelf_data_type.
+
+2020-10-28 Mark Wielaard <mark@klomp.org>
+
+ * elf.h: Update from glibc.
+
+2020-08-28 Mark Wielaard <mark@klomp.org>
+
+ * elf.h: Update from glibc.
+
+2020-08-19 Mark Wielaard <mark@klomp.org>
+
+ * elf32_updatenull.c (updatenull_wrlock): Fixup the sh_addralign
+ of an SHF_COMPRESSED section if necessary.
+
+2020-06-04 Mark Wielaard <mark@klomp.org>
+
+ * elf.h: Update from glibc.
+
+2020-05-08 Mark Wielaard <mark@klomp.org>
+
+ * elf_strptr.c (elf_strptr): Check shdr is not NULL.
+
+2020-05-08 Mark Wielaard <mark@klomp.org>
+
+ * elf_getdata.c (__libelf_set_rawdata_wrlock): Check
+ __gelf_getehdr_rdlock return value.
+
+2020-04-25 Mark Wielaard <mark@klomp.org>
+
+ * elf_compress.c (__libelf_compress): Remove free (out_buf).
+
+2020-03-18 Omar Sandoval <osandov@fb.com>
+
+ * elf_getphdrnum.c (__elf_getphdrnum_rdlock): Call
+ __elf{32,64}_getshdr_rdlock if the shdr is not cached.
+
+2019-03-20 Matthias Maennich <maennich@google.com>
+
+ * elf_compress.c (__libelf_compress): Always call deflate_cleanup
+ in failure path. Call deflateEnd only once.
+ (__libelf_decompress): Call inflateEnd only once.
+
2019-06-18 Mark Wielaard <mark@klomp.org>
* common.h (allocate_elf): Use int64_t instead of off_t for offset.
diff --git a/libelf/Makefile.am b/libelf/Makefile.am
index d5d63f73..560ed45f 100644
--- a/libelf/Makefile.am
+++ b/libelf/Makefile.am
@@ -31,12 +31,12 @@ include $(top_srcdir)/config/eu.am
if BUILD_STATIC
AM_CFLAGS += $(fpic_CFLAGS)
endif
-GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
+
VERSION = 1
lib_LIBRARIES = libelf.a
noinst_LIBRARIES = libelf_pic.a
-noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)
+noinst_DATA = $(noinst_LIBRARIES:_pic.a=.so)
include_HEADERS = libelf.h gelf.h nlist.h
noinst_HEADERS = abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \
@@ -112,8 +112,7 @@ libelf_so_LDLIBS += -lpthread
endif
libelf_so_LIBS = libelf_pic.a
-libelf_so_SOURCES =
-libelf.so$(EXEEXT): $(srcdir)/libelf.map $(libelf_so_LIBS) $(libelf_so_DEPS)
+libelf.so: $(srcdir)/libelf.map $(libelf_so_LIBS) $(libelf_so_DEPS)
$(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \
-Wl,--soname,$@.$(VERSION) \
-Wl,--version-script,$<,--no-undefined \
@@ -135,4 +134,4 @@ uninstall: uninstall-am
EXTRA_DIST = libelf.map
-CLEANFILES += $(am_libelf_pic_a_OBJECTS) libelf.so.$(VERSION)
+CLEANFILES += $(am_libelf_pic_a_OBJECTS) libelf.so libelf.so.$(VERSION)
diff --git a/libelf/common.h b/libelf/common.h
index b0175f60..e41c717d 100644
--- a/libelf/common.h
+++ b/libelf/common.h
@@ -133,7 +133,7 @@ libelf_release_all (Elf *elf)
}
-/* Macro to convert endianess in place. It determines the function it
+/* Macro to convert endianness in place. It determines the function it
has to use itself. */
#define CONVERT(Var) \
(Var) = (sizeof (Var) == 1 \
diff --git a/libelf/elf-knowledge.h b/libelf/elf-knowledge.h
index 9d3be0ff..6e005fa5 100644
--- a/libelf/elf-knowledge.h
+++ b/libelf/elf-knowledge.h
@@ -69,9 +69,9 @@
Several years later the ABI for the 64-bit S390s was developed.
Many things were copied from the IA-64 ABI (which uses the correct
- 32-bit entry size) but what do these people do? They use 64-bit
- entries. It is really shocking to see what kind of morons are out
- there. And even worse: they are allowed to design ABIs. */
+ 32-bit entry size) but it does get the SHT_HASH entry size wrong by
+ using a 64-bit entry size. So now we need this macro to special
+ case both the alpha and s390x ABIs. */
#define SH_ENTSIZE_HASH(Ehdr) \
((Ehdr)->e_machine == EM_ALPHA \
|| ((Ehdr)->e_machine == EM_S390 \
diff --git a/libelf/elf.h b/libelf/elf.h
index 01648bdb..8e3e618f 100644
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -1,5 +1,5 @@
/* This file defines standard ELF types, structures, and macros.
- Copyright (C) 1995-2019 Free Software Foundation, Inc.
+ Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,15 +14,11 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
+ <https://www.gnu.org/licenses/>. */
#ifndef _ELF_H
#define _ELF_H 1
-#include <features.h>
-
-__BEGIN_DECLS
-
/* Standard ELF types. */
#include <stdint.h>
@@ -322,7 +318,7 @@ typedef struct
/* reserved 184 */
#define EM_AVR32 185 /* Amtel 32-bit microprocessor */
#define EM_STM8 186 /* STMicroelectronics STM8 */
-#define EM_TILE64 187 /* Tileta TILE64 */
+#define EM_TILE64 187 /* Tilera TILE64 */
#define EM_TILEPRO 188 /* Tilera TILEPro */
#define EM_MICROBLAZE 189 /* Xilinx MicroBlaze */
#define EM_CUDA 190 /* NVIDIA CUDA */
@@ -330,7 +326,7 @@ typedef struct
#define EM_CLOUDSHIELD 192 /* CloudShield */
#define EM_COREA_1ST 193 /* KIPO-KAIST Core-A 1st gen. */
#define EM_COREA_2ND 194 /* KIPO-KAIST Core-A 2nd gen. */
-#define EM_ARC_COMPACT2 195 /* Synopsys ARCompact V2 */
+#define EM_ARCV2 195 /* Synopsys ARCv2 ISA. */
#define EM_OPEN8 196 /* Open8 RISC */
#define EM_RL78 197 /* Renesas RL78 */
#define EM_VIDEOCORE5 198 /* Broadcom VideoCore V */
@@ -445,7 +441,7 @@ typedef struct
#define SHT_FINI_ARRAY 15 /* Array of destructors */
#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */
#define SHT_GROUP 17 /* Section group */
-#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */
+#define SHT_SYMTAB_SHNDX 18 /* Extended section indices */
#define SHT_NUM 19 /* Number of defined types. */
#define SHT_LOOS 0x60000000 /* Start OS-specific. */
#define SHT_GNU_ATTRIBUTES 0x6ffffff5 /* Object attributes. */
@@ -482,6 +478,7 @@ typedef struct
#define SHF_COMPRESSED (1 << 11) /* Section with compressed data. */
#define SHF_MASKOS 0x0ff00000 /* OS-specific. */
#define SHF_MASKPROC 0xf0000000 /* Processor-specific */
+#define SHF_GNU_RETAIN (1 << 21) /* Not to be GCed by linker. */
#define SHF_ORDERED (1 << 30) /* Special ordering requirement
(Solaris). */
#define SHF_EXCLUDE (1U << 31) /* Section is excluded unless
@@ -721,6 +718,7 @@ typedef struct
#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
+#define PT_GNU_PROPERTY 0x6474e553 /* GNU property */
#define PT_LOSUNW 0x6ffffffa
#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
@@ -809,9 +807,16 @@ typedef struct
#define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */
#define NT_ARM_SVE 0x405 /* ARM Scalable Vector Extension
registers */
+#define NT_ARM_PAC_MASK 0x406 /* ARM pointer authentication
+ code masks. */
+#define NT_ARM_PACA_KEYS 0x407 /* ARM pointer authentication
+ address keys. */
+#define NT_ARM_PACG_KEYS 0x408 /* ARM pointer authentication
+ generic key. */
#define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note. */
#define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers. */
#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode. */
+#define NT_MIPS_MSA 0x802 /* MIPS SIMD registers. */
/* Legal values for the note segment descriptor types for object files. */
@@ -987,6 +992,9 @@ typedef struct
#define DF_1_SINGLETON 0x02000000 /* Singleton symbols are used. */
#define DF_1_STUB 0x04000000
#define DF_1_PIE 0x08000000
+#define DF_1_KMOD 0x10000000
+#define DF_1_WEAKFILTER 0x20000000
+#define DF_1_NOCOMMON 0x40000000
/* Flags for the feature selection in DT_FEATURE_1. */
#define DTF_1_PARINIT 0x00000001
@@ -1039,7 +1047,7 @@ typedef struct
#define VER_NDX_LORESERVE 0xff00 /* Beginning of reserved entries. */
#define VER_NDX_ELIMINATE 0xff01 /* Symbol is to be eliminated. */
-/* Auxialiary version information. */
+/* Auxiliary version information. */
typedef struct
{
@@ -1308,6 +1316,12 @@ typedef struct
/* Application-specific semantics, hi */
#define GNU_PROPERTY_HIUSER 0xffffffff
+/* AArch64 specific GNU properties. */
+#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
+
+#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)
+#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC (1U << 1)
+
/* The x86 instruction sets indicated by the corresponding bits are
used in program. Their support in the hardware is optional. */
#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000
@@ -1705,6 +1719,7 @@ typedef struct
#define SHT_MIPS_EH_REGION 0x70000027
#define SHT_MIPS_XLATE_OLD 0x70000028
#define SHT_MIPS_PDR_EXCEPTION 0x70000029
+#define SHT_MIPS_XHASH 0x7000002b
/* Legal values for sh_flags field of Elf32_Shdr. */
@@ -1952,7 +1967,9 @@ typedef struct
in a PIE as it stores a relative offset from the address of the tag
rather than an absolute address. */
#define DT_MIPS_RLD_MAP_REL 0x70000035
-#define DT_MIPS_NUM 0x36
+/* GNU-style hash table with xlat. */
+#define DT_MIPS_XHASH 0x70000036
+#define DT_MIPS_NUM 0x37
/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */
@@ -2123,9 +2140,9 @@ enum
#define EFA_PARISC_1_1 0x0210 /* PA-RISC 1.1 big-endian. */
#define EFA_PARISC_2_0 0x0214 /* PA-RISC 2.0 big-endian. */
-/* Additional section indeces. */
+/* Additional section indices. */
-#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tenatively declared
+#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tentatively declared
symbols in ANSI C. */
#define SHN_PARISC_HUGE_COMMON 0xff01 /* Common blocks in huge model. */
@@ -2854,6 +2871,15 @@ enum
#define R_AARCH64_TLSDESC 1031 /* TLS Descriptor. */
#define R_AARCH64_IRELATIVE 1032 /* STT_GNU_IFUNC relocation. */
+/* AArch64 specific values for the Dyn d_tag field. */
+#define DT_AARCH64_BTI_PLT (DT_LOPROC + 1)
+#define DT_AARCH64_PAC_PLT (DT_LOPROC + 3)
+#define DT_AARCH64_VARIANT_PCS (DT_LOPROC + 5)
+#define DT_AARCH64_NUM 6
+
+/* AArch64 specific values for the st_other field. */
+#define STO_AARCH64_VARIANT_PCS 0x80
+
/* ARM relocs. */
#define R_ARM_NONE 0 /* No reloc */
@@ -3926,8 +3952,9 @@ enum
#define R_RISCV_SET16 55
#define R_RISCV_SET32 56
#define R_RISCV_32_PCREL 57
+#define R_RISCV_IRELATIVE 58
-#define R_RISCV_NUM 58
+#define R_RISCV_NUM 59
/* BPF specific declarations. */
@@ -3944,7 +3971,7 @@ enum
#define R_METAG_RELBRANCH 4
#define R_METAG_GETSETOFF 5
-/* Backward compatability */
+/* Backward compatibility */
#define R_METAG_REG32OP1 6
#define R_METAG_REG32OP2 7
#define R_METAG_REG32OP3 8
@@ -4007,6 +4034,72 @@ enum
#define R_NDS32_TLS_TPOFF 102
#define R_NDS32_TLS_DESC 119
-__END_DECLS
+/* ARCompact/ARCv2 specific relocs. */
+#define R_ARC_NONE 0x0
+#define R_ARC_8 0x1
+#define R_ARC_16 0x2
+#define R_ARC_24 0x3
+#define R_ARC_32 0x4
+#define R_ARC_B26 0x5
+#define R_ARC_B22_PCREL 0x6
+#define R_ARC_H30 0x7
+#define R_ARC_N8 0x8
+#define R_ARC_N16 0x9
+#define R_ARC_N24 0xA
+#define R_ARC_N32 0xB
+#define R_ARC_SDA 0xC
+#define R_ARC_SECTOFF 0xD
+#define R_ARC_S21H_PCREL 0xE
+#define R_ARC_S21W_PCREL 0xF
+#define R_ARC_S25H_PCREL 0x10
+#define R_ARC_S25W_PCREL 0x11
+#define R_ARC_SDA32 0x12
+#define R_ARC_SDA_LDST 0x13
+#define R_ARC_SDA_LDST1 0x14
+#define R_ARC_SDA_LDST2 0x15
+#define R_ARC_SDA16_LD 0x16
+#define R_ARC_SDA16_LD1 0x17
+#define R_ARC_SDA16_LD2 0x18
+#define R_ARC_S13_PCREL 0x19
+#define R_ARC_W 0x1A
+#define R_ARC_32_ME 0x1B
+#define R_ARC_N32_ME 0x1C
+#define R_ARC_SECTOFF_ME 0x1D
+#define R_ARC_SDA32_ME 0x1E
+#define R_ARC_W_ME 0x1F
+#define R_ARC_H30_ME 0x20
+#define R_ARC_SECTOFF_U8 0x21
+#define R_ARC_SECTOFF_S9 0x22
+#define R_AC_SECTOFF_U8 0x23
+#define R_AC_SECTOFF_U8_1 0x24
+#define R_AC_SECTOFF_U8_2 0x25
+#define R_AC_SECTOFF_S9 0x26
+#define R_AC_SECTOFF_S9_1 0x27
+#define R_AC_SECTOFF_S9_2 0x28
+#define R_ARC_SECTOFF_ME_1 0x29
+#define R_ARC_SECTOFF_ME_2 0x2A
+#define R_ARC_SECTOFF_1 0x2B
+#define R_ARC_SECTOFF_2 0x2C
+#define R_ARC_PC32 0x32
+#define R_ARC_GOTPC32 0x33
+#define R_ARC_PLT32 0x34
+#define R_ARC_COPY 0x35
+#define R_ARC_GLOB_DAT 0x36
+#define R_ARC_JUMP_SLOT 0x37
+#define R_ARC_RELATIVE 0x38
+#define R_ARC_GOTOFF 0x39
+#define R_ARC_GOTPC 0x3A
+#define R_ARC_GOT32 0x3B
+
+#define R_ARC_TLS_DTPMOD 0x42
+#define R_ARC_TLS_DTPOFF 0x43
+#define R_ARC_TLS_TPOFF 0x44
+#define R_ARC_TLS_GD_GOT 0x45
+#define R_ARC_TLS_GD_LD 0x46
+#define R_ARC_TLS_GD_CALL 0x47
+#define R_ARC_TLS_IE_GOT 0x48
+#define R_ARC_TLS_DTPOFF_S9 0x4a
+#define R_ARC_TLS_LE_S9 0x4a
+#define R_ARC_TLS_LE_32 0x4b
#endif /* elf.h */
diff --git a/libelf/elf32_checksum.c b/libelf/elf32_checksum.c
index f9dfccb2..c5f27bbe 100644
--- a/libelf/elf32_checksum.c
+++ b/libelf/elf32_checksum.c
@@ -115,7 +115,7 @@ elfw2(LIBELFBITS,checksum) (Elf *elf)
/* To compute the checksum we need to get to the data. For
repeatable results we must use the external format. The data
- we get with 'elf'getdata' might be changed for endianess
+ we get with 'elf'getdata' might be changed for endianness
reasons. Therefore we use 'elf_rawdata' if possible. But
this function can fail if the data was constructed by the
program. In this case we have to use 'elf_getdata' and
diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c
index 5f3cdbf6..d0d4d1eb 100644
--- a/libelf/elf32_updatenull.c
+++ b/libelf/elf32_updatenull.c
@@ -267,6 +267,18 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum)
update_if_changed (shdr->sh_entsize, sh_entsize,
scn->shdr_flags);
+ /* Likewise for the alignment of a compressed section.
+ For a SHF_COMPRESSED section set the correct
+ sh_addralign value, which must match the d_align of
+ the data (see __libelf_set_rawdata in elf_getdata.c). */
+ if ((shdr->sh_flags & SHF_COMPRESSED) != 0)
+ {
+ sh_align = __libelf_type_align (ELFW(ELFCLASS,LIBELFBITS),
+ ELF_T_CHDR);
+ update_if_changed (shdr->sh_addralign, sh_align,
+ scn->shdr_flags);
+ }
+
if (scn->data_read == 0
&& __libelf_set_rawdata_wrlock (scn) != 0)
/* Something went wrong. The error value is already set. */
diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c
index 8107a103..32648c15 100644
--- a/libelf/elf_begin.c
+++ b/libelf/elf_begin.c
@@ -88,6 +88,13 @@ get_shnum (void *map_address, unsigned char *e_ident, int fildes,
} ehdr_mem;
bool is32 = e_ident[EI_CLASS] == ELFCLASS32;
+ if ((is32 && maxsize < sizeof (Elf32_Ehdr))
+ || (!is32 && maxsize < sizeof (Elf64_Ehdr)))
+ {
+ __libelf_seterrno (ELF_E_INVALID_ELF);
+ return (size_t) -1l;
+ }
+
/* Make the ELF header available. */
if (e_ident[EI_DATA] == MY_ELFDATA
&& (ALLOW_UNALIGNED
@@ -1040,7 +1047,7 @@ dup_elf (int fildes, Elf_Cmd cmd, Elf *ref)
}
/* This is an archive. We must create a descriptor for the archive
- member the internal pointer of the archive file desriptor is
+ member the internal pointer of the archive file descriptor is
pointing to. First read the header of the next member if this
has not happened already. */
if (ref->state.ar.elf_ar_hdr.ar_name == NULL
@@ -1064,7 +1071,7 @@ dup_elf (int fildes, Elf_Cmd cmd, Elf *ref)
}
-/* Return desriptor for empty file ready for writing. */
+/* Return descriptor for empty file ready for writing. */
static struct Elf *
write_file (int fd, Elf_Cmd cmd)
{
diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c
index 244467b5..df0144e8 100644
--- a/libelf/elf_compress.c
+++ b/libelf/elf_compress.c
@@ -113,9 +113,8 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data,
int zrc = deflateInit (&z, Z_BEST_COMPRESSION);
if (zrc != Z_OK)
{
- free (out_buf);
__libelf_seterrno (ELF_E_COMPRESS_ERROR);
- return NULL;
+ return deflate_cleanup(NULL, NULL);
}
Elf_Data cdata;
@@ -125,7 +124,7 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data,
int flush = Z_NO_FLUSH;
do
{
- /* Convert to raw if different endianess. */
+ /* Convert to raw if different endianness. */
cdata = *data;
bool convert = ei_data != MY_ELFDATA && data->d_size > 0;
if (convert)
@@ -197,13 +196,13 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data,
}
while (flush != Z_FINISH); /* More data blocks. */
- zrc = deflateEnd (&z);
- if (zrc != Z_OK)
+ if (zrc != Z_STREAM_END)
{
__libelf_seterrno (ELF_E_COMPRESS_ERROR);
return deflate_cleanup (NULL, NULL);
}
+ deflateEnd (&z);
*new_size = used;
return out_buf;
}
@@ -251,16 +250,15 @@ __libelf_decompress (void *buf_in, size_t size_in, size_t size_out)
}
zrc = inflateReset (&z);
}
- if (likely (zrc == Z_OK))
- zrc = inflateEnd (&z);
if (unlikely (zrc != Z_OK) || unlikely (z.avail_out != 0))
{
free (buf_out);
+ buf_out = NULL;
__libelf_seterrno (ELF_E_DECOMPRESS_ERROR);
- return NULL;
}
+ inflateEnd(&z);
return buf_out;
}
@@ -524,7 +522,7 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags)
__libelf_reset_rawdata (scn, scn->zdata_base,
scn->zdata_size, scn->zdata_align,
- __libelf_data_type (elf, sh_type,
+ __libelf_data_type (&ehdr, sh_type,
scn->zdata_align));
return 1;
diff --git a/libelf/elf_compress_gnu.c b/libelf/elf_compress_gnu.c
index 1ecd6a08..3d2977e7 100644
--- a/libelf/elf_compress_gnu.c
+++ b/libelf/elf_compress_gnu.c
@@ -143,7 +143,7 @@ elf_compress_gnu (Elf_Scn *scn, int inflate, unsigned int flags)
}
else if (inflate == 0)
{
- /* In theory the user could have constucted a compressed section
+ /* In theory the user could have constructed a compressed section
by hand. And in practice they do. For example when copying
a section from one file to another using elf_newdata. So we
have to use elf_getdata (not elf_rawdata). */
@@ -197,7 +197,8 @@ elf_compress_gnu (Elf_Scn *scn, int inflate, unsigned int flags)
}
__libelf_reset_rawdata (scn, buf_out, size, sh_addralign,
- __libelf_data_type (elf, sh_type, sh_addralign));
+ __libelf_data_type (&ehdr, sh_type,
+ sh_addralign));
scn->zdata_base = buf_out;
diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c
index 40fe1694..6ed44504 100644
--- a/libelf/elf_getdata.c
+++ b/libelf/elf_getdata.c
@@ -113,14 +113,12 @@ const uint_fast8_t __libelf_type_aligns[ELFCLASSNUM - 1][ELF_T_NUM] =
Elf_Type
internal_function
-__libelf_data_type (Elf *elf, int sh_type, GElf_Xword align)
+__libelf_data_type (GElf_Ehdr *ehdr, int sh_type, GElf_Xword align)
{
/* Some broken ELF ABI for 64-bit machines use the wrong hash table
entry size. See elf-knowledge.h for more information. */
- if (sh_type == SHT_HASH && elf->class == ELFCLASS64)
+ if (sh_type == SHT_HASH && ehdr->e_ident[EI_CLASS] == ELFCLASS64)
{
- GElf_Ehdr ehdr_mem;
- GElf_Ehdr *ehdr = __gelf_getehdr_rdlock (elf, &ehdr_mem);
return (SH_ENTSIZE_HASH (ehdr) == 4 ? ELF_T_WORD : ELF_T_XWORD);
}
else
@@ -271,6 +269,8 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn)
{
GElf_Ehdr ehdr_mem;
GElf_Ehdr *ehdr = __gelf_getehdr_rdlock (elf, &ehdr_mem);
+ if (unlikely (ehdr == NULL))
+ return 1;
entsize = SH_ENTSIZE_HASH (ehdr);
}
else
@@ -363,7 +363,13 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn)
if ((flags & SHF_COMPRESSED) != 0)
scn->rawdata.d.d_type = ELF_T_CHDR;
else
- scn->rawdata.d.d_type = __libelf_data_type (elf, type, align);
+ {
+ GElf_Ehdr ehdr_mem;
+ GElf_Ehdr *ehdr = __gelf_getehdr_rdlock (elf, &ehdr_mem);
+ if (unlikely (ehdr == NULL))
+ return 1;
+ scn->rawdata.d.d_type = __libelf_data_type (ehdr, type, align);
+ }
scn->rawdata.d.d_off = 0;
/* Make sure the alignment makes sense. d_align should be aligned both
diff --git a/libelf/elf_getphdrnum.c b/libelf/elf_getphdrnum.c
index f91cba98..60ebec58 100644
--- a/libelf/elf_getphdrnum.c
+++ b/libelf/elf_getphdrnum.c
@@ -44,6 +44,7 @@ __elf_getphdrnum_rdlock (Elf *elf, size_t *dst)
if (unlikely (elf->state.elf64.ehdr == NULL))
{
/* Maybe no ELF header was created yet. */
+ *dst = 0;
__libelf_seterrno (ELF_E_WRONG_ORDER_EHDR);
return -1;
}
@@ -63,15 +64,23 @@ __elf_getphdrnum_rdlock (Elf *elf, size_t *dst)
if (elf->class == ELFCLASS32)
{
- if (likely (scns->cnt > 0
- && elf->state.elf32.scns.data[0].shdr.e32 != NULL))
- *dst = scns->data[0].shdr.e32->sh_info;
+ if (likely (scns->cnt > 0))
+ {
+ Elf_Scn *scn = &elf->state.elf32.scns.data[0];
+ Elf32_Shdr *shdr = scn->shdr.e32 ?: __elf32_getshdr_rdlock (scn);
+ if (shdr)
+ *dst = shdr->sh_info;
+ }
}
else
{
- if (likely (scns->cnt > 0
- && elf->state.elf64.scns.data[0].shdr.e64 != NULL))
- *dst = scns->data[0].shdr.e64->sh_info;
+ if (likely (scns->cnt > 0))
+ {
+ Elf_Scn *scn = &elf->state.elf64.scns.data[0];
+ Elf64_Shdr *shdr = scn->shdr.e64 ?: __elf64_getshdr_rdlock (scn);
+ if (shdr)
+ *dst = shdr->sh_info;
+ }
}
}
diff --git a/libelf/elf_strptr.c b/libelf/elf_strptr.c
index e72a3a36..76f2caf1 100644
--- a/libelf/elf_strptr.c
+++ b/libelf/elf_strptr.c
@@ -119,7 +119,7 @@ elf_strptr (Elf *elf, size_t idx, size_t offset)
if (elf->class == ELFCLASS32)
{
Elf32_Shdr *shdr = strscn->shdr.e32 ?: __elf32_getshdr_rdlock (strscn);
- if (unlikely (shdr->sh_type != SHT_STRTAB))
+ if (unlikely (shdr == NULL || shdr->sh_type != SHT_STRTAB))
{
/* This is no string section. */
__libelf_seterrno (ELF_E_INVALID_SECTION);
@@ -145,7 +145,7 @@ elf_strptr (Elf *elf, size_t idx, size_t offset)
else
{
Elf64_Shdr *shdr = strscn->shdr.e64 ?: __elf64_getshdr_rdlock (strscn);
- if (unlikely (shdr->sh_type != SHT_STRTAB))
+ if (unlikely (shdr == NULL || shdr->sh_type != SHT_STRTAB))
{
/* This is no string section. */
__libelf_seterrno (ELF_E_INVALID_SECTION);
diff --git a/libelf/gelf.h b/libelf/gelf.h
index 06198803..7a3c87aa 100644
--- a/libelf/gelf.h
+++ b/libelf/gelf.h
@@ -95,7 +95,7 @@ typedef Elf64_Dyn GElf_Dyn;
/* Version definition sections. */
typedef Elf64_Verdef GElf_Verdef;
-/* Auxialiary version information. */
+/* Auxiliary version information. */
typedef Elf64_Verdaux GElf_Verdaux;
/* Version dependency section. */
diff --git a/libelf/libelf.h b/libelf/libelf.h
index 1ff11c95..a139e733 100644
--- a/libelf/libelf.h
+++ b/libelf/libelf.h
@@ -376,7 +376,7 @@ extern Elf64_Chdr *elf64_getchdr (Elf_Scn *__scn);
It is always an error to call these functions on SHT_NOBITS
sections or if the section has the SHF_ALLOC flag set.
elf_compress_gnu will not check whether the section name starts
- with ".debug" or .zdebug". It is the responsibilty of the caller
+ with ".debug" or .zdebug". It is the responsibility of the caller
to make sure the deprecated GNU compression method is only called
on correctly named sections (and to change the name of the section
when using elf_compress_gnu).
diff --git a/libelf/libelfP.h b/libelf/libelfP.h
index b55d5c48..fc1aebec 100644
--- a/libelf/libelfP.h
+++ b/libelf/libelfP.h
@@ -39,9 +39,6 @@
#include <stdio.h>
#include <string.h>
-/* gettext helper macros. */
-#define _(Str) dgettext ("elfutils", Str)
-
/* Helper Macros to write 32 bit and 64 bit functions. */
#define __elfw2_(Bits, Name) __elf##Bits##_##Name
@@ -148,7 +145,7 @@ enum
};
-/* The visible `Elf_Data' type is not sufficent for some operations due
+/* The visible `Elf_Data' type is not sufficient for some operations due
to a misdesigned interface. Extend it for internal purposes. */
typedef struct
{
@@ -436,10 +433,11 @@ extern const uint_fast8_t __libelf_type_aligns[ELFCLASSNUM - 1][ELF_T_NUM]
# define __libelf_type_align(class, type) \
(__libelf_type_aligns[class - 1][type] ?: 1)
-/* Given an Elf handle and a section type returns the Elf_Data d_type.
+/* Given an GElf_Ehdr handle and a section type returns the Elf_Data d_type.
Should not be called when SHF_COMPRESSED is set, the d_type should
be ELF_T_BYTE. */
-extern Elf_Type __libelf_data_type (Elf *elf, int sh_type, GElf_Xword align)
+extern Elf_Type __libelf_data_type (GElf_Ehdr *ehdr,
+ int sh_type, GElf_Xword align)
internal_function;
diff --git a/m4/.gitignore b/m4/.gitignore
new file mode 100644
index 00000000..9ed35690
--- /dev/null
+++ b/m4/.gitignore
@@ -0,0 +1,5 @@
+/*.m4
+!/ax_check_compile_flag.m4
+!/ax_cxx_compile_stdcxx.m4
+!/biarch.m4
+!/zip.m4
diff --git a/m4/ChangeLog b/m4/ChangeLog
index 8ab0ff39..32832693 100644
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,9 @@
+2020-12-15 Dmitry V. Levin <ldv@altlinux.org>
+
+ * .gitignore: New file.
+
+ * Makefile.am: Remove.
+
2019-10-28 Aaron Merey <amerey@redhat.com>
* ax_check_compile_flag.m4, ax_cxx_compile_stdcxx.m4: New files.
diff --git a/m4/Makefile.am b/m4/Makefile.am
deleted file mode 100644
index ae7a5657..00000000
--- a/m4/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-## Process this file with automake to produce Makefile.in -*-Makefile-*-
-##
-## Copyright (C) 2000-2009 Red Hat, Inc.
-## This file is part of elfutils.
-##
-## This file is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 3 of the License, or
-## (at your option) any later version.
-##
-## elfutils is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program. If not, see <http://www.gnu.org/licenses/>.
-##
-
-##m4-files-begin
-EXTRA_DIST = codeset.m4 gettext.m4 iconv.m4 lcmessage.m4 progtest.m4 zip.m4 ax_check_compile_flag.m4 ax_cxx_compile_stdcxx.m4
diff --git a/m4/codeset.m4 b/m4/codeset.m4
deleted file mode 100644
index 59535ebc..00000000
--- a/m4/codeset.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# codeset.m4 serial AM1 (gettext-0.10.40)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_LANGINFO_CODESET],
-[
- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
- [AC_TRY_LINK([#include <langinfo.h>],
- [char* cs = nl_langinfo(CODESET);],
- am_cv_langinfo_codeset=yes,
- am_cv_langinfo_codeset=no)
- ])
- if test $am_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
- [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
- fi
-])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
deleted file mode 100644
index 8d1f0665..00000000
--- a/m4/gettext.m4
+++ /dev/null
@@ -1,401 +0,0 @@
-# gettext.m4 serial 66 (gettext-0.18.2)
-dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
-
-dnl Macro to add for using GNU gettext.
-
-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-dnl default (if it is not specified or empty) is 'no-libtool'.
-dnl INTLSYMBOL should be 'external' for packages with no intl directory,
-dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
-dnl If INTLSYMBOL is 'use-libtool', then a libtool library
-dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
-dnl depending on --{enable,disable}-{shared,static} and on the presence of
-dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-dnl $(top_builddir)/intl/libintl.a will be created.
-dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
-dnl implementations (in libc or libintl) without the ngettext() function
-dnl will be ignored. If NEEDSYMBOL is specified and is
-dnl 'need-formatstring-macros', then GNU gettext implementations that don't
-dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
-dnl INTLDIR is used to find the intl libraries. If empty,
-dnl the value '$(top_builddir)/intl/' is used.
-dnl
-dnl The result of the configuration is one of three cases:
-dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
-dnl and used.
-dnl Catalog format: GNU --> install in $(datadir)
-dnl Catalog extension: .mo after installation, .gmo in source tree
-dnl 2) GNU gettext has been found in the system's C library.
-dnl Catalog format: GNU --> install in $(datadir)
-dnl Catalog extension: .mo after installation, .gmo in source tree
-dnl 3) No internationalization, always use English msgid.
-dnl Catalog format: none
-dnl Catalog extension: none
-dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
-dnl The use of .gmo is historical (it was needed to avoid overwriting the
-dnl GNU format catalogs when building on a platform with an X/Open gettext),
-dnl but we keep it in order not to force irrelevant filename changes on the
-dnl maintainers.
-dnl
-AC_DEFUN([AM_GNU_GETTEXT],
-[
- dnl Argument checking.
- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
- [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
- ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
- [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
- [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
-])])])])
- define([gt_included_intl],
- ifelse([$1], [external],
- ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
- [yes]))
- define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
- gt_NEEDS_INIT
- AM_GNU_GETTEXT_NEED([$2])
-
- AC_REQUIRE([AM_PO_SUBDIRS])dnl
- ifelse(gt_included_intl, yes, [
- AC_REQUIRE([AM_INTL_SUBDIR])dnl
- ])
-
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Sometimes libintl requires libiconv, so first search for libiconv.
- dnl Ideally we would do this search only after the
- dnl if test "$USE_NLS" = "yes"; then
- dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
- dnl the configure script would need to contain the same shell code
- dnl again, outside any 'if'. There are two solutions:
- dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
- dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
- dnl documented, we avoid it.
- ifelse(gt_included_intl, yes, , [
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
- ])
-
- dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
- gt_INTL_MACOSX
-
- dnl Set USE_NLS.
- AC_REQUIRE([AM_NLS])
-
- ifelse(gt_included_intl, yes, [
- BUILD_INCLUDED_LIBINTL=no
- USE_INCLUDED_LIBINTL=no
- ])
- LIBINTL=
- LTLIBINTL=
- POSUB=
-
- dnl Add a version number to the cache macros.
- case " $gt_needs " in
- *" need-formatstring-macros "*) gt_api_version=3 ;;
- *" need-ngettext "*) gt_api_version=2 ;;
- *) gt_api_version=1 ;;
- esac
- gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
- gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- gt_use_preinstalled_gnugettext=no
- ifelse(gt_included_intl, yes, [
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH([included-gettext],
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- ])
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If GNU gettext is available we use this. Else we have
- dnl to fall back to GNU NLS library.
-
- if test $gt_api_version -ge 3; then
- gt_revision_test_code='
-#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-'
- else
- gt_revision_test_code=
- fi
- if test $gt_api_version -ge 2; then
- gt_expression_test_code=' + * ngettext ("", "", 0)'
- else
- gt_expression_test_code=
- fi
-
- AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;
- ]],
- [[
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
- ]])],
- [eval "$gt_func_gnugettext_libc=yes"],
- [eval "$gt_func_gnugettext_libc=no"])])
-
- if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
- dnl Sometimes libintl requires libiconv, so first search for libiconv.
- ifelse(gt_included_intl, yes, , [
- AM_ICONV_LINK
- ])
- dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
- dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
- dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
- dnl even if libiconv doesn't exist.
- AC_LIB_LINKFLAGS_BODY([intl])
- AC_CACHE_CHECK([for GNU gettext in libintl],
- [$gt_func_gnugettext_libintl],
- [gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $INCINTL"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBINTL"
- dnl Now see whether libintl exists and does not depend on libiconv.
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);
- ]],
- [[
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
- ]])],
- [eval "$gt_func_gnugettext_libintl=yes"],
- [eval "$gt_func_gnugettext_libintl=no"])
- dnl Now see whether libintl exists and depends on libiconv.
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
- LIBS="$LIBS $LIBICONV"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);
- ]],
- [[
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
- ]])],
- [LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- eval "$gt_func_gnugettext_libintl=yes"
- ])
- fi
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"])
- fi
-
- dnl If an already present or preinstalled GNU gettext() is found,
- dnl use it. But if this macro is used in GNU gettext, and GNU
- dnl gettext is already preinstalled in libintl, we update this
- dnl libintl. (Cf. the install rule in intl/Makefile.in.)
- if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
- || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
- && test "$PACKAGE" != gettext-runtime \
- && test "$PACKAGE" != gettext-tools; }; then
- gt_use_preinstalled_gnugettext=yes
- else
- dnl Reset the values set by searching for libintl.
- LIBINTL=
- LTLIBINTL=
- INCINTL=
- fi
-
- ifelse(gt_included_intl, yes, [
- if test "$gt_use_preinstalled_gnugettext" != "yes"; then
- dnl GNU gettext is not found in the C library.
- dnl Fall back on included GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- BUILD_INCLUDED_LIBINTL=yes
- USE_INCLUDED_LIBINTL=yes
- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
- fi
-
- CATOBJEXT=
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions to use GNU gettext tools.
- CATOBJEXT=.gmo
- fi
- ])
-
- if test -n "$INTL_MACOSX_LIBS"; then
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Some extra flags are needed during linking.
- LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
- LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
- fi
- fi
-
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- AC_DEFINE([ENABLE_NLS], [1],
- [Define to 1 if translation of program messages to the user's native language
- is requested.])
- else
- USE_NLS=no
- fi
- fi
-
- AC_MSG_CHECKING([whether to use NLS])
- AC_MSG_RESULT([$USE_NLS])
- if test "$USE_NLS" = "yes"; then
- AC_MSG_CHECKING([where the gettext function comes from])
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
- gt_source="external libintl"
- else
- gt_source="libc"
- fi
- else
- gt_source="included intl directory"
- fi
- AC_MSG_RESULT([$gt_source])
- fi
-
- if test "$USE_NLS" = "yes"; then
-
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
- AC_MSG_CHECKING([how to link with libintl])
- AC_MSG_RESULT([$LIBINTL])
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
- fi
-
- dnl For backward compatibility. Some packages may be using this.
- AC_DEFINE([HAVE_GETTEXT], [1],
- [Define if the GNU gettext() function is already present or preinstalled.])
- AC_DEFINE([HAVE_DCGETTEXT], [1],
- [Define if the GNU dcgettext() function is already present or preinstalled.])
- fi
-
- dnl We need to process the po/ directory.
- POSUB=po
- fi
-
- ifelse(gt_included_intl, yes, [
- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
- dnl to 'yes' because some of the testsuite requires it.
- if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
- BUILD_INCLUDED_LIBINTL=yes
- fi
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST([BUILD_INCLUDED_LIBINTL])
- AC_SUBST([USE_INCLUDED_LIBINTL])
- AC_SUBST([CATOBJEXT])
-
- dnl For backward compatibility. Some configure.ins may be using this.
- nls_cv_header_intl=
- nls_cv_header_libgt=
-
- dnl For backward compatibility. Some Makefiles may be using this.
- DATADIRNAME=share
- AC_SUBST([DATADIRNAME])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INSTOBJEXT=.mo
- AC_SUBST([INSTOBJEXT])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- GENCAT=gencat
- AC_SUBST([GENCAT])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INTLOBJS=
- if test "$USE_INCLUDED_LIBINTL" = yes; then
- INTLOBJS="\$(GETTOBJS)"
- fi
- AC_SUBST([INTLOBJS])
-
- dnl Enable libtool support if the surrounding package wishes it.
- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
- ])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INTLLIBS="$LIBINTL"
- AC_SUBST([INTLLIBS])
-
- dnl Make all documented variables known to autoconf.
- AC_SUBST([LIBINTL])
- AC_SUBST([LTLIBINTL])
- AC_SUBST([POSUB])
-])
-
-
-dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
-m4_define([gt_NEEDS_INIT],
-[
- m4_divert_text([DEFAULTS], [gt_needs=])
- m4_define([gt_NEEDS_INIT], [])
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
-AC_DEFUN([AM_GNU_GETTEXT_NEED],
-[
- m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
-AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
deleted file mode 100644
index a5036465..00000000
--- a/m4/iconv.m4
+++ /dev/null
@@ -1,268 +0,0 @@
-# iconv.m4 serial 18 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2007-2013 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
-[
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([iconv])
-])
-
-AC_DEFUN([AM_ICONV_LINK],
-[
- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
- dnl those with the standalone portable GNU libiconv installed).
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-
- dnl Add $INCICONV to CPPFLAGS before performing the following checks,
- dnl because if the user has installed libiconv and not disabled its use
- dnl via --without-libiconv-prefix, he wants to use it. The first
- dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
- am_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-
- AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <stdlib.h>
-#include <iconv.h>
- ]],
- [[iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);]])],
- [am_cv_func_iconv=yes])
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <stdlib.h>
-#include <iconv.h>
- ]],
- [[iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);]])],
- [am_cv_lib_iconv=yes]
- [am_cv_func_iconv=yes])
- LIBS="$am_save_LIBS"
- fi
- ])
- if test "$am_cv_func_iconv" = yes; then
- AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
- dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
- dnl Solaris 10.
- am_save_LIBS="$LIBS"
- if test $am_cv_lib_iconv = yes; then
- LIBS="$LIBS $LIBICONV"
- fi
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
-#include <iconv.h>
-#include <string.h>
-int main ()
-{
- int result = 0;
- /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
- returns. */
- {
- iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
- if (cd_utf8_to_88591 != (iconv_t)(-1))
- {
- static const char input[] = "\342\202\254"; /* EURO SIGN */
- char buf[10];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_utf8_to_88591,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res == 0)
- result |= 1;
- iconv_close (cd_utf8_to_88591);
- }
- }
- /* Test against Solaris 10 bug: Failures are not distinguishable from
- successful returns. */
- {
- iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
- if (cd_ascii_to_88591 != (iconv_t)(-1))
- {
- static const char input[] = "\263";
- char buf[10];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_ascii_to_88591,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res == 0)
- result |= 2;
- iconv_close (cd_ascii_to_88591);
- }
- }
- /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
- {
- iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
- if (cd_88591_to_utf8 != (iconv_t)(-1))
- {
- static const char input[] = "\304";
- static char buf[2] = { (char)0xDE, (char)0xAD };
- const char *inptr = input;
- size_t inbytesleft = 1;
- char *outptr = buf;
- size_t outbytesleft = 1;
- size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
- result |= 4;
- iconv_close (cd_88591_to_utf8);
- }
- }
-#if 0 /* This bug could be worked around by the caller. */
- /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
- {
- iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
- if (cd_88591_to_utf8 != (iconv_t)(-1))
- {
- static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
- char buf[50];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if ((int)res > 0)
- result |= 8;
- iconv_close (cd_88591_to_utf8);
- }
- }
-#endif
- /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
- provided. */
- if (/* Try standardized names. */
- iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
- /* Try IRIX, OSF/1 names. */
- && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
- /* Try AIX names. */
- && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- result |= 16;
- return result;
-}]])],
- [am_cv_func_iconv_works=yes],
- [am_cv_func_iconv_works=no],
- [
-changequote(,)dnl
- case "$host_os" in
- aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
- *) am_cv_func_iconv_works="guessing yes" ;;
- esac
-changequote([,])dnl
- ])
- LIBS="$am_save_LIBS"
- ])
- case "$am_cv_func_iconv_works" in
- *no) am_func_iconv=no am_cv_lib_iconv=no ;;
- *) am_func_iconv=yes ;;
- esac
- else
- am_func_iconv=no am_cv_lib_iconv=no
- fi
- if test "$am_func_iconv" = yes; then
- AC_DEFINE([HAVE_ICONV], [1],
- [Define if you have the iconv() function and it works.])
- fi
- if test "$am_cv_lib_iconv" = yes; then
- AC_MSG_CHECKING([how to link with libiconv])
- AC_MSG_RESULT([$LIBICONV])
- else
- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
- dnl either.
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
- AC_SUBST([LIBICONV])
- AC_SUBST([LTLIBICONV])
-])
-
-dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
-dnl avoid warnings like
-dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
-dnl This is tricky because of the way 'aclocal' is implemented:
-dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
-dnl Otherwise aclocal's initial scan pass would miss the macro definition.
-dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
-dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
-dnl warnings.
-m4_define([gl_iconv_AC_DEFUN],
- m4_version_prereq([2.64],
- [[AC_DEFUN_ONCE(
- [$1], [$2])]],
- [m4_ifdef([gl_00GNULIB],
- [[AC_DEFUN_ONCE(
- [$1], [$2])]],
- [[AC_DEFUN(
- [$1], [$2])]])]))
-gl_iconv_AC_DEFUN([AM_ICONV],
-[
- AM_ICONV_LINK
- if test "$am_cv_func_iconv" = yes; then
- AC_MSG_CHECKING([for iconv declaration])
- AC_CACHE_VAL([am_cv_proto_iconv], [
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
- ]],
- [[]])],
- [am_cv_proto_iconv_arg1=""],
- [am_cv_proto_iconv_arg1="const"])
- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- AC_MSG_RESULT([
- $am_cv_proto_iconv])
- AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
- [Define as const if the declaration of iconv() needs const.])
- dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
- m4_ifdef([gl_ICONV_H_DEFAULTS],
- [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
- if test -n "$am_cv_proto_iconv_arg1"; then
- ICONV_CONST="const"
- fi
- ])
- fi
-])
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
deleted file mode 100644
index ffbf915f..00000000
--- a/m4/lcmessage.m4
+++ /dev/null
@@ -1,32 +0,0 @@
-# lcmessage.m4 serial 2 (gettext-0.10.40)
-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-
-AC_DEFUN([AM_LC_MESSAGES],
- [if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your <locale.h> file defines LC_MESSAGES.])
- fi
- fi])
diff --git a/m4/nls.m4 b/m4/nls.m4
deleted file mode 100644
index 7967cc2f..00000000
--- a/m4/nls.m4
+++ /dev/null
@@ -1,31 +0,0 @@
-# nls.m4 serial 3 (gettext-0.15)
-dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-AC_PREREQ(2.50)
-
-AC_DEFUN([AM_NLS],
-[
- AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
- AC_SUBST(USE_NLS)
-])
diff --git a/m4/po.m4 b/m4/po.m4
deleted file mode 100644
index f3957234..00000000
--- a/m4/po.m4
+++ /dev/null
@@ -1,452 +0,0 @@
-# po.m4 serial 20 (gettext-0.18.2)
-dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-AC_PREREQ([2.60])
-
-dnl Checks for all prerequisites of the po subdirectory.
-AC_DEFUN([AM_PO_SUBDIRS],
-[
- AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AC_PROG_MKDIR_P])dnl
- AC_REQUIRE([AM_NLS])dnl
-
- dnl Release version of the gettext macros. This is used to ensure that
- dnl the gettext macros and po/Makefile.in.in are in sync.
- AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
-
- dnl Perform the following tests also if --disable-nls has been given,
- dnl because they are needed for "make dist" to work.
-
- dnl Search for GNU msgfmt in the PATH.
- dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
- dnl The second test excludes FreeBSD msgfmt.
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
- :)
- AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
-
- dnl Test whether it is GNU msgfmt >= 0.15.
-changequote(,)dnl
- case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
- *) MSGFMT_015=$MSGFMT ;;
- esac
-changequote([,])dnl
- AC_SUBST([MSGFMT_015])
-changequote(,)dnl
- case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
- *) GMSGFMT_015=$GMSGFMT ;;
- esac
-changequote([,])dnl
- AC_SUBST([GMSGFMT_015])
-
- dnl Search for GNU xgettext 0.12 or newer in the PATH.
- dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
- dnl The second test excludes FreeBSD xgettext.
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
- :)
- dnl Remove leftover from FreeBSD xgettext call.
- rm -f messages.po
-
- dnl Test whether it is GNU xgettext >= 0.15.
-changequote(,)dnl
- case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
- *) XGETTEXT_015=$XGETTEXT ;;
- esac
-changequote([,])dnl
- AC_SUBST([XGETTEXT_015])
-
- dnl Search for GNU msgmerge 0.11 or newer in the PATH.
- AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
- [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
-
- dnl Installation directories.
- dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
- dnl have to define it here, so that it can be used in po/Makefile.
- test -n "$localedir" || localedir='${datadir}/locale'
- AC_SUBST([localedir])
-
- dnl Support for AM_XGETTEXT_OPTION.
- test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
- AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
-
- AC_CONFIG_COMMANDS([po-directories], [[
- for ac_file in $CONFIG_FILES; do
- # Support "outfile[:infile[:infile...]]"
- case "$ac_file" in
- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- esac
- # PO directories have a Makefile.in generated from Makefile.in.in.
- case "$ac_file" in */Makefile.in)
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
- # Treat a directory as a PO directory if and only if it has a
- # POTFILES.in file. This allows packages to have multiple PO
- # directories under different names or in different locations.
- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
- rm -f "$ac_dir/POTFILES"
- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- gt_tab=`printf '\t'`
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
- POMAKEFILEDEPS="POTFILES.in"
- # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
- # on $ac_dir but don't depend on user-specified configuration
- # parameters.
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assignment from automake < 1.5.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # The set of available languages was given in configure.in.
- # Hide the ALL_LINGUAS assignment from automake < 1.5.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
- fi
- # Compute POFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
- # Compute UPDATEPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
- # Compute DUMMYPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
- # Compute GMOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- GMOFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- done
- fi
- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
- if test -f "$f"; then
- case "$f" in
- *.orig | *.bak | *~) ;;
- *) cat "$f" >> "$ac_dir/Makefile" ;;
- esac
- fi
- done
- fi
- ;;
- esac
- done]],
- [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
- # from automake < 1.5.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
- # Capture the value of LINGUAS because we need it to compute CATALOGS.
- LINGUAS="${LINGUAS-%UNSET%}"
- ])
-])
-
-dnl Postprocesses a Makefile in a directory containing PO files.
-AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
-[
- # When this code is run, in config.status, two variables have already been
- # set:
- # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
- # - LINGUAS is the value of the environment variable LINGUAS at configure
- # time.
-
-changequote(,)dnl
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- # Find a way to echo strings without interpreting backslash.
- if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
- gt_echo='echo'
- else
- if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
- gt_echo='printf %s\n'
- else
- echo_func () {
- cat <<EOT
-$*
-EOT
- }
- gt_echo='echo_func'
- fi
- fi
-
- # A sed script that extracts the value of VARIABLE from a Makefile.
- tab=`printf '\t'`
- sed_x_variable='
-# Test if the hold space is empty.
-x
-s/P/P/
-x
-ta
-# Yes it was empty. Look if we have the expected variable definition.
-/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{
- # Seen the first line of the variable definition.
- s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=//
- ba
-}
-bd
-:a
-# Here we are processing a line from the variable definition.
-# Remove comment, more precisely replace it with a space.
-s/#.*$/ /
-# See if the line ends in a backslash.
-tb
-:b
-s/\\$//
-# Print the line, without the trailing backslash.
-p
-tc
-# There was no trailing backslash. The end of the variable definition is
-# reached. Clear the hold space.
-s/^.*$//
-x
-bd
-:c
-# A trailing backslash means that the variable definition continues in the
-# next line. Put a nonempty string into the hold space to indicate this.
-s/^.*$/P/
-x
-:d
-'
-changequote([,])dnl
-
- # Set POTFILES to the value of the Makefile variable POTFILES.
- sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
- POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
- # Compute POTFILES_DEPS as
- # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
- POTFILES_DEPS=
- for file in $POTFILES; do
- POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
- done
- POMAKEFILEDEPS=""
-
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
- sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
- ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
- fi
- # Hide the ALL_LINGUAS assignment from automake < 1.5.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- # Compute POFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
- # Compute UPDATEPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
- # Compute DUMMYPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
- # Compute GMOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
- # Compute PROPERTIESFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
- # Compute CLASSFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
- # Compute QMFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
- # Compute MSGFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
- # Compute RESOURCESDLLFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- GMOFILES=
- PROPERTIESFILES=
- CLASSFILES=
- QMFILES=
- MSGFILES=
- RESOURCESDLLFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
- CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
- QMFILES="$QMFILES $srcdirpre$lang.qm"
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- JAVACATALOGS=
- QTCATALOGS=
- TCLCATALOGS=
- CSHARPCATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
- QTCATALOGS="$QTCATALOGS $lang.qm"
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
- done
- fi
-
- sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
- tab=`printf '\t'`
- if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
- # Add dependencies that cannot be formulated as a simple suffix rule.
- for lang in $ALL_LINGUAS; do
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- cat >> "$ac_file.tmp" <<EOF
-$frobbedlang.msg: $lang.po
-${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
-${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-EOF
- done
- fi
- if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
- # Add dependencies that cannot be formulated as a simple suffix rule.
- for lang in $ALL_LINGUAS; do
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- cat >> "$ac_file.tmp" <<EOF
-$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
-${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
-${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-EOF
- done
- fi
- if test -n "$POMAKEFILEDEPS"; then
- cat >> "$ac_file.tmp" <<EOF
-Makefile: $POMAKEFILEDEPS
-EOF
- fi
- mv "$ac_file.tmp" "$ac_file"
-])
-
-dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
-AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
-[
- XGETTEXT_EXTRA_OPTIONS=
-])
-
-dnl Registers an option to be passed to xgettext in the po subdirectory.
-AC_DEFUN([AM_XGETTEXT_OPTION],
-[
- AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
- XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
-])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
deleted file mode 100644
index a56365cd..00000000
--- a/m4/progtest.m4
+++ /dev/null
@@ -1,92 +0,0 @@
-# progtest.m4 serial 4 (gettext-0.14.2)
-dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-AC_PREREQ(2.50)
-
-# Search path for a program which passes the given test.
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN([AM_PATH_PROG_WITH_TEST],
-[
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- [[\\/]]* | ?:[[\\/]]*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
diff --git a/po/.gitignore b/po/.gitignore
new file mode 100644
index 00000000..67b1779e
--- /dev/null
+++ b/po/.gitignore
@@ -0,0 +1,18 @@
+/*.gmo
+/*.pot
+/Makefile.in.in
+/Makevars.template
+/POTFILES
+/Rules-quot
+/boldquot.sed
+/en@boldquot.header
+/en@boldquot.insert-header
+/en@boldquot.po
+/en@quot.header
+/en@quot.insert-header
+/en@quot.po
+/insert-header.sin
+/quot.sed
+/remove-potcdate.sed
+/remove-potcdate.sin
+/stamp-po
diff --git a/po/ChangeLog b/po/ChangeLog
index 884b1666..740ca87e 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,38 @@
+2021-02-05 Mark Wielaard <mark@klomp.org>
+
+ * *.po: Update for 0.183.
+
+2020-12-15 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makevars: Sync with Makevars.template.
+ * .gitignore: New file.
+
+ * fr.po: Remove empty translation file.
+ * it.po: Likewise.
+ * nl.po: Likewise.
+ * ru.po: Likewise.
+ * zh_CN.po: Likewise.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * *.po (msgid): Fix spelling typos.
+
+2020-10-31 Mark Wielaard <mark@klomp.org>
+
+ * *.po: Update for 0.182.
+
+2020-09-08 Mark Wielaard <mark@klomp.org>
+
+ * *.po: Update for 0.181.
+
+2020-06-11 Mark Wielaard <mark@klomp.org>
+
+ * *.po: Update for 0.180.
+
+2020-03-30 Mark Wielaard <mark@klomp.org>
+
+ * *.po: Update for 0.179.
+
2019-11-26 Mark Wielaard <mark@klomp.org>
* *.po: Update for 0.178.
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
deleted file mode 100644
index fce63a6e..00000000
--- a/po/Makefile.in.in
+++ /dev/null
@@ -1,453 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-#
-# Origin: gettext-0.18.2
-GETTEXT_MACRO_VERSION = 0.18
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-
-SHELL = /bin/sh
-@SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-datadir = @datadir@
-localedir = @localedir@
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-# We use $(mkdir_p).
-# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
-# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
-# @install_sh@ does not start with $(SHELL), so we add it.
-# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
-# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
-# versions, $(mkinstalldirs) and $(install_sh) are unused.
-mkinstalldirs = $(SHELL) @install_sh@ -d
-install_sh = $(SHELL) @install_sh@
-MKDIR_P = @MKDIR_P@
-mkdir_p = @mkdir_p@
-
-GMSGFMT_ = @GMSGFMT@
-GMSGFMT_no = @GMSGFMT@
-GMSGFMT_yes = @GMSGFMT_015@
-GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
-MSGFMT_ = @MSGFMT@
-MSGFMT_no = @MSGFMT@
-MSGFMT_yes = @MSGFMT_015@
-MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
-XGETTEXT_ = @XGETTEXT@
-XGETTEXT_no = @XGETTEXT@
-XGETTEXT_yes = @XGETTEXT_015@
-XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = @MSGMERGE@ --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-
-# Makevars gets inserted here. (Don't remove this line!)
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
-
-.po.mo:
- @echo "$(MSGFMT) -c -o $@ $<"; \
- $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
- @lang=`echo $* | sed -e 's,.*/,,'`; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
- cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
-
-.sin.sed:
- sed -e '/^#/d' $< > t-$@
- mv t-$@ $@
-
-
-all: all-@USE_NLS@
-
-all-yes: stamp-po
-all-no:
-
-# Ensure that the gettext macros and this Makefile.in.in are in sync.
-CHECK_MACRO_VERSION = \
- test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
- || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
- exit 1; \
- }
-
-# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
-# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
-# we don't want to bother translators with empty POT files). We assume that
-# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
-# In this case, stamp-po is a nop (i.e. a phony target).
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
- @$(CHECK_MACRO_VERSION)
- test ! -f $(srcdir)/$(DOMAIN).pot || \
- test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
- @test ! -f $(srcdir)/$(DOMAIN).pot || { \
- echo "touch stamp-po" && \
- echo timestamp > stamp-poT && \
- mv stamp-poT stamp-po; \
- }
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-# The determination of whether the package xyz is a GNU one is based on the
-# heuristic whether some file in the top level directory mentions "GNU xyz".
-# If GNU 'find' is available, we avoid grepping through monster files.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
- if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
- LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \
- else \
- LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
- fi; \
- } | grep -v 'libtool:' >/dev/null; then \
- package_gnu='GNU '; \
- else \
- package_gnu=''; \
- fi; \
- if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
- msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
- else \
- msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
- fi; \
- case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)' \
- --msgid-bugs-address="$$msgid_bugs_address" \
- ;; \
- *) \
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)' \
- --package-name="$${package_gnu}@PACKAGE@" \
- --package-version='@VERSION@' \
- --msgid-bugs-address="$$msgid_bugs_address" \
- ;; \
- esac
- test ! -f $(DOMAIN).po || { \
- if test -f $(srcdir)/$(DOMAIN).pot; then \
- sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
- sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
- if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
- else \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- else \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- }
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
- $(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
- @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
- if test -f "$(srcdir)/$${lang}.po"; then \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
- cd $(srcdir) \
- && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
- *) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
- esac; \
- }; \
- else \
- $(MAKE) $${lang}.po-create; \
- fi
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
- for file in $(DISTFILES.common) Makevars.template; do \
- $(INSTALL_DATA) $(srcdir)/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- for file in Makevars; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-install-data-no: all
-install-data-yes: all
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkdir_p) $(DESTDIR)$$dir; \
- if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
- $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
- echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
- fi; \
- done; \
- done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
- else \
- : ; \
- fi
-installdirs-data-no:
-installdirs-data-yes:
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkdir_p) $(DESTDIR)$$dir; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- fi; \
- done; \
- done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- for file in $(DISTFILES.common) Makevars.template; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-uninstall-data-no:
-uninstall-data-yes:
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- done; \
- done
-
-check: all
-
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
-
-mostlyclean:
- rm -f remove-potcdate.sed
- rm -f stamp-poT
- rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
- rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
- $(MAKE) update-po
- @$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: stamp-po $(DISTFILES)
- dists="$(DISTFILES)"; \
- if test "$(PACKAGE)" = "gettext-tools"; then \
- dists="$$dists Makevars.template"; \
- fi; \
- if test -f $(srcdir)/$(DOMAIN).pot; then \
- dists="$$dists $(DOMAIN).pot stamp-po"; \
- fi; \
- if test -f $(srcdir)/ChangeLog; then \
- dists="$$dists ChangeLog"; \
- fi; \
- for i in 0 1 2 3 4 5 6 7 8 9; do \
- if test -f $(srcdir)/ChangeLog.$$i; then \
- dists="$$dists ChangeLog.$$i"; \
- fi; \
- done; \
- if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
- for file in $$dists; do \
- if test -f $$file; then \
- cp -p $$file $(distdir) || exit 1; \
- else \
- cp -p $(srcdir)/$$file $(distdir) || exit 1; \
- fi; \
- done
-
-update-po: Makefile
- $(MAKE) $(DOMAIN).pot-update
- test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
- $(MAKE) update-gmo
-
-# General rule for creating PO files.
-
-.nop.po-create:
- @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
- echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
- exit 1
-
-# General rule for updating PO files.
-
-.nop.po-update:
- @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
- if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
- cd $(srcdir); \
- if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
- *) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
- esac; \
- }; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "msgmerge for $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
- @:
-
-# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
-# because execution permission bits may not work on the current file system.
-# Use @SHELL@, which is the shell determined by autoconf for the use by its
-# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
-Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
- cd $(top_builddir) \
- && @SHELL@ ./config.status $(subdir)/$@.in po-directories
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
index 0afcf4ea..086de588 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -41,3 +41,27 @@ MSGID_BUGS_ADDRESS = https://sourceware.org/bugzilla/
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
+
+# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
+# context. Possible values are "yes" and "no". Set this to yes if the
+# package uses functions taking also a message context, like pgettext(), or
+# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
+USE_MSGCTXT = no
+
+# These options get passed to msgmerge.
+# Useful options are in particular:
+# --previous to keep previous msgids of translated messages,
+# --quiet to reduce the verbosity.
+MSGMERGE_OPTIONS =
+
+# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
+# has changed. Possible values are "yes" and "no". Set this to no if
+# the POT file is checked in the repository and the version control
+# program ignores timestamps.
+PO_DEPENDS_ON_POT = yes
+
+# This tells whether or not to forcibly update $(DOMAIN).pot and
+# regenerate PO files on "make dist". Possible values are "yes" and
+# "no". Set this to no if the POT file and PO files are maintained
+# externally.
+DIST_DEPENDS_ON_UPDATE_PO = yes
diff --git a/po/Rules-quot b/po/Rules-quot
deleted file mode 100644
index 9c2a995e..00000000
--- a/po/Rules-quot
+++ /dev/null
@@ -1,47 +0,0 @@
-# Special Makefile rules for English message catalogs with quotation marks.
-
-DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
-
-.SUFFIXES: .insert-header .po-update-en
-
-en@quot.po-create:
- $(MAKE) en@quot.po-update
-en@boldquot.po-create:
- $(MAKE) en@boldquot.po-update
-
-en@quot.po-update: en@quot.po-update-en
-en@boldquot.po-update: en@boldquot.po-update-en
-
-.insert-header.po-update-en:
- @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
- if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- ll=`echo $$lang | sed -e 's/@.*//'`; \
- LC_ALL=C; export LC_ALL; \
- cd $(srcdir); \
- if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "creation of $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-en@quot.insert-header: insert-header.sin
- sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
-
-en@boldquot.insert-header: insert-header.sin
- sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
-
-mostlyclean: mostlyclean-quot
-mostlyclean-quot:
- rm -f *.insert-header
diff --git a/po/boldquot.sed b/po/boldquot.sed
deleted file mode 100644
index 4b937aa5..00000000
--- a/po/boldquot.sed
+++ /dev/null
@@ -1,10 +0,0 @@
-s/"\([^"]*\)"/“\1â€/g
-s/`\([^`']*\)'/‘\1’/g
-s/ '\([^`']*\)' / ‘\1’ /g
-s/ '\([^`']*\)'$/ ‘\1’/g
-s/^'\([^`']*\)' /‘\1’ /g
-s/“â€/""/g
-s/“/“/g
-s/â€/â€/g
-s/‘/‘/g
-s/’/’/g
diff --git a/po/de.po b/po/de.po
index a9b6897a..50904135 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: 2019-11-26 09:48+0100\n"
+"POT-Creation-Date: 2021-02-05 21:10+0100\n"
"PO-Revision-Date: 2009-06-29 15:15+0200\n"
"Last-Translator: Michael Münch <micm@fedoraproject.org>\n"
"Language-Team: German\n"
@@ -54,8 +54,8 @@ msgstr ""
"GARANTIE,\n"
"auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n"
-#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: lib/xmalloc.c:48 lib/xmalloc.c:61 lib/xmalloc.c:73 src/readelf.c:3453
+#: src/readelf.c:11501 src/unstrip.c:312 src/unstrip.c:2398 src/unstrip.c:2603
#, c-format
msgid "memory exhausted"
msgstr "Kein Speicher mehr verfügbar"
@@ -218,7 +218,7 @@ msgstr "Ungültige DWARF Version"
msgid "invalid directory index"
msgstr "ungültiger Verzeichnisindex"
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:72
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73
msgid "address out of range"
msgstr "Außerhalb des Adressbereiches"
@@ -249,7 +249,7 @@ msgstr "Ungültiger Zeilenindex"
msgid "invalid address range index"
msgstr "Ungültiger Adressbereichs Index"
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:73
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:74
msgid "no matching address range"
msgstr "Kein passender Adressbereich"
@@ -298,68 +298,68 @@ msgstr "unbekannter Typ"
msgid ".debug_addr section missing"
msgstr ".debug_line Sektion fehlt"
-#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2540
+#: libdwfl/argp-std.c:47 src/stack.c:643 src/unstrip.c:2544
msgid "Input selection options:"
msgstr "Eingabeauswahloptionen:"
-#: libdwfl/argp-std.c:51
+#: libdwfl/argp-std.c:48
msgid "Find addresses in FILE"
msgstr "Finde Adressen in FILE"
-#: libdwfl/argp-std.c:53
+#: libdwfl/argp-std.c:50
msgid "Find addresses from signatures found in COREFILE"
msgstr "Finde Adressen von Signatur aus COREFILE"
-#: libdwfl/argp-std.c:55
+#: libdwfl/argp-std.c:52
msgid "Find addresses in files mapped into process PID"
msgstr ""
-#: libdwfl/argp-std.c:57
+#: libdwfl/argp-std.c:54
msgid ""
"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
"format"
msgstr ""
-#: libdwfl/argp-std.c:59
+#: libdwfl/argp-std.c:56
msgid "Find addresses in the running kernel"
msgstr "Finde Adressen im laufenden Kernel"
-#: libdwfl/argp-std.c:61
+#: libdwfl/argp-std.c:58
msgid "Kernel with all modules"
msgstr "Kernel mit allen Modulen"
-#: libdwfl/argp-std.c:63 src/stack.c:645
+#: libdwfl/argp-std.c:60 src/stack.c:650
msgid "Search path for separate debuginfo files"
msgstr "Dateisuchpfad für separate Debug-Informationen"
-#: libdwfl/argp-std.c:164
+#: libdwfl/argp-std.c:161
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:237
+#: libdwfl/argp-std.c:234
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:241
+#: libdwfl/argp-std.c:238
msgid "cannot find kernel modules"
msgstr "Konnte Kernel Module nicht finden"
-#: libdwfl/argp-std.c:258
+#: libdwfl/argp-std.c:255
msgid "cannot find kernel or modules"
msgstr "Konnte Kernel oder Module nicht finden"
-#: libdwfl/argp-std.c:297
+#: libdwfl/argp-std.c:294
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "Konnte ELF Kerndatei %s nicht lesen"
-#: libdwfl/argp-std.c:320
+#: libdwfl/argp-std.c:317
#, fuzzy
msgid "Not enough memory"
msgstr "nicht genügend Speicher"
-#: libdwfl/argp-std.c:330
+#: libdwfl/argp-std.c:327
msgid "No modules recognized in core file"
msgstr "Keine Module in der Kerndatei gefunden"
@@ -392,136 +392,140 @@ msgid "LZMA decompression failed"
msgstr ""
#: libdwfl/libdwflP.h:61
-msgid "no support library found for machine"
+msgid "zstd decompression failed"
msgstr ""
#: libdwfl/libdwflP.h:62
-msgid "Callbacks missing for ET_REL file"
+msgid "no support library found for machine"
msgstr ""
#: libdwfl/libdwflP.h:63
-msgid "Unsupported relocation type"
+msgid "Callbacks missing for ET_REL file"
msgstr ""
#: libdwfl/libdwflP.h:64
+msgid "Unsupported relocation type"
+msgstr ""
+
+#: libdwfl/libdwflP.h:65
msgid "r_offset is bogus"
msgstr ""
-#: libdwfl/libdwflP.h:65 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:66 libelf/elf_error.c:115 libelf/elf_error.c:175
msgid "offset out of range"
msgstr "Offset ausserhalb des Bereichs"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:67
#, fuzzy
msgid "relocation refers to undefined symbol"
msgstr "Zeige Grösse der definierten Symbole"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:68
msgid "Callback returned failure"
msgstr ""
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:69
#, fuzzy
msgid "No DWARF information found"
msgstr "keine DWARF Information"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
msgid "No symbol table found"
msgstr ""
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
#, fuzzy
msgid "No ELF program headers"
msgstr "Programm-Köpfe anzeigen"
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
msgid "address range overlaps an existing module"
msgstr ""
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
msgid "image truncated"
msgstr ""
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:76
#, fuzzy
msgid "ELF file opened"
msgstr "keine ELF Datei"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:77
#, fuzzy
msgid "not a valid ELF file"
msgstr "Ungültige ELF Datei"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
#, fuzzy
msgid "cannot handle DWARF type description"
msgstr "konnte Elf-Deskriptor nicht erzeugen: %s"
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
msgid "ELF file does not match build ID"
msgstr ""
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
#, fuzzy
msgid "corrupt .gnu.prelink_undo section data"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
msgid "Internal error due to ebl"
msgstr ""
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
msgid "Missing data in core file"
msgstr ""
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
#, fuzzy
msgid "Invalid register"
msgstr "ungültiger Parameter"
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
msgid "Error reading process memory"
msgstr ""
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
msgid "Couldn't find architecture of any ELF"
msgstr ""
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
msgid "Error parsing /proc filesystem"
msgstr ""
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
#, fuzzy
msgid "Invalid DWARF"
msgstr "DWARF ungültig"
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
msgid "Unsupported DWARF"
msgstr ""
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
msgid "Unable to find more threads"
msgstr ""
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
msgid "Dwfl already has attached state"
msgstr ""
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
msgid "Dwfl has no attached state"
msgstr ""
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
msgid "Unwinding not supported for this architecture"
msgstr ""
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
#, fuzzy
msgid "Invalid argument"
msgstr "ungültiger Parameter"
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
#, fuzzy
msgid "Not an ET_CORE ELF file"
msgstr "Ungültige ELF Datei"
@@ -533,7 +537,7 @@ msgstr "Kein Backend"
#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
msgid "<unknown>"
msgstr "<Unbekannt>"
@@ -593,7 +597,7 @@ msgstr " Build ID: "
msgid " Linker version: %.*s\n"
msgstr ""
-#: libebl/eblobjnote.c:571
+#: libebl/eblobjnote.c:638
#, c-format
msgid " OS: %s, ABI: "
msgstr " OS: %s, ABI: "
@@ -627,7 +631,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:6166
+#: libelf/elf_error.c:87 src/readelf.c:6209
#, c-format
msgid "invalid encoding"
msgstr "ungültige Kodierung"
@@ -715,8 +719,8 @@ msgstr "data/scn Unterschied"
msgid "invalid section header"
msgstr "ungültiger Abschnitts-Header"
-#: libelf/elf_error.c:191 src/readelf.c:9914 src/readelf.c:10514
-#: src/readelf.c:10615 src/readelf.c:10797
+#: libelf/elf_error.c:191 src/readelf.c:10012 src/readelf.c:10612
+#: src/readelf.c:10713 src/readelf.c:10895
#, c-format
msgid "invalid data"
msgstr "Ungültige Daten"
@@ -873,12 +877,12 @@ msgstr "Abschnitt syntax benötigt genau ein Modul"
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr ""
-#: src/addr2line.c:632
+#: src/addr2line.c:652
#, c-format
msgid "cannot find symbol '%s'"
msgstr "Konnte Symbol '%s' nicht finden"
-#: src/addr2line.c:637
+#: src/addr2line.c:657
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr ""
@@ -1048,12 +1052,12 @@ msgstr ""
msgid "no entry %s in archive\n"
msgstr "Kein Eintrag %s in Archiv\n"
-#: src/ar.c:472 src/ar.c:923 src/ar.c:1127
+#: src/ar.c:472 src/ar.c:927 src/ar.c:1134
#, c-format
msgid "cannot create hash table"
msgstr "Konnte Hash-Tabelle nicht erstellen"
-#: src/ar.c:479 src/ar.c:930 src/ar.c:1136
+#: src/ar.c:479 src/ar.c:934 src/ar.c:1143
#, c-format
msgid "cannot insert into hash table"
msgstr "Konnte nicht in Hash-Tabelle einfügen"
@@ -1093,67 +1097,67 @@ msgstr "Konnte Bearbeitungszeit von %s nicht ändern"
msgid "cannot rename temporary file to %.*s"
msgstr "Konnte temporäre Datei nicht in %.*s umbenennen"
-#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222
+#: src/ar.c:764 src/ar.c:1019 src/ar.c:1423 src/ranlib.c:222
#, c-format
msgid "cannot create new file"
msgstr "neue Datei konnte nicht angelegt werden"
-#: src/ar.c:1218
+#: src/ar.c:1225
#, c-format
msgid "position member %s not found"
msgstr ""
-#: src/ar.c:1228
+#: src/ar.c:1235
#, c-format
msgid "%s: no entry %s in archive!\n"
msgstr "%s: Kein Eintrag %s in dem Archiv!\n"
-#: src/ar.c:1257 src/objdump.c:241
+#: src/ar.c:1264 src/objdump.c:241
#, c-format
msgid "cannot open %s"
msgstr "Konnte %s nicht öffnen"
-#: src/ar.c:1262
+#: src/ar.c:1269
#, c-format
msgid "cannot stat %s"
msgstr ""
-#: src/ar.c:1268
+#: src/ar.c:1275
#, c-format
msgid "%s is no regular file"
msgstr "%s ist keine reguläre Datei"
-#: src/ar.c:1281
+#: src/ar.c:1288
#, c-format
msgid "cannot get ELF descriptor for %s: %s\n"
msgstr ""
-#: src/ar.c:1301
+#: src/ar.c:1308
#, c-format
msgid "cannot read %s: %s"
msgstr "Konnte %s: %s nicht lesen"
-#: src/ar.c:1476
+#: src/ar.c:1483
#, fuzzy, c-format
msgid "cannot represent ar_date"
msgstr "konnte Abschnittsdaten nicht kopieren: %s"
-#: src/ar.c:1482
+#: src/ar.c:1489
#, fuzzy, c-format
msgid "cannot represent ar_uid"
msgstr "konnte Abschnittsdaten nicht kopieren: %s"
-#: src/ar.c:1488
+#: src/ar.c:1495
#, fuzzy, c-format
msgid "cannot represent ar_gid"
msgstr "konnte Abschnittsdaten nicht kopieren: %s"
-#: src/ar.c:1494
+#: src/ar.c:1501
#, fuzzy, c-format
msgid "cannot represent ar_mode"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/ar.c:1500
+#: src/ar.c:1507
#, fuzzy, c-format
msgid "cannot represent ar_size"
msgstr "Konnte %s nicht öffnen"
@@ -1166,7 +1170,7 @@ msgstr ""
msgid "Use actual uid, gid, and date in archive members."
msgstr ""
-#: src/arlib-argp.c:65
+#: src/arlib-argp.c:63
#, c-format
msgid "%s (default)"
msgstr ""
@@ -1374,8 +1378,8 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr ""
#: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
-#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2189 src/unstrip.c:2218
+#: src/size.c:272 src/strings.c:185 src/strip.c:1030 src/strip.c:1067
+#: src/unstrip.c:2194 src/unstrip.c:2223
#, c-format
msgid "cannot open '%s'"
msgstr "'%s' kann nicht geöffnet werden"
@@ -1405,7 +1409,7 @@ msgstr ""
msgid "cannot get relocation: %s"
msgstr ""
-#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:117
#, c-format
msgid "-o option specified twice"
msgstr ""
@@ -1518,7 +1522,7 @@ msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
msgid "No errors"
msgstr "Keine Fehler"
-#: src/elflint.c:219 src/readelf.c:575
+#: src/elflint.c:219 src/readelf.c:577
msgid "Missing file name.\n"
msgstr "Dateiname fehlt.\n"
@@ -1671,14 +1675,14 @@ msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
msgstr ""
-#: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651
-#: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095
-#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431
+#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
+#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
+#: src/elflint.c:3254 src/elflint.c:3444 src/elflint.c:4456
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr ""
-#: src/elflint.c:623 src/elflint.c:1658
+#: src/elflint.c:623 src/elflint.c:1662
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1697,157 +1701,167 @@ msgstr ""
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr ""
-#: src/elflint.c:667
+#: src/elflint.c:662
+#, c-format
+msgid ""
+"section [%2u] '%s': number of local entries in 'st_info' larger than table "
+"size\n"
+msgstr ""
+
+#: src/elflint.c:671
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr ""
-#: src/elflint.c:672 src/elflint.c:675 src/elflint.c:678 src/elflint.c:681
-#: src/elflint.c:684 src/elflint.c:687
+#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
+#: src/elflint.c:688 src/elflint.c:691
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr ""
-#: src/elflint.c:690
+#: src/elflint.c:694
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr ""
-#: src/elflint.c:700
+#: src/elflint.c:704
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr ""
-#: src/elflint.c:709
+#: src/elflint.c:713
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr ""
-#: src/elflint.c:724
+#: src/elflint.c:728
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
+"section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
"section index section\n"
msgstr ""
-#: src/elflint.c:730
+#: src/elflint.c:734
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
+"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
+"in st_shndx (%<PRIu32>)\n"
msgstr ""
#. || sym->st_shndx > SHN_HIRESERVE always false
-#: src/elflint.c:742
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
-msgstr ""
+#: src/elflint.c:746
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
+msgstr "ungültiger Abschnittsindex"
-#: src/elflint.c:750
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
-msgstr ""
+#: src/elflint.c:754
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:756
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
-msgstr ""
+#: src/elflint.c:760
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:761
+#: src/elflint.c:765
#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
-msgstr ""
-
-#: src/elflint.c:769
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
+msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
msgstr ""
#: src/elflint.c:773
#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
+msgid ""
+"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
+"files\n"
msgstr ""
#: src/elflint.c:777
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
+"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
msgstr ""
-#: src/elflint.c:828
+#: src/elflint.c:781
#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
+msgid ""
+"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
msgstr ""
-#: src/elflint.c:834 src/elflint.c:859 src/elflint.c:908
+#: src/elflint.c:832
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
+
+#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
+"section [%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:843
+#: src/elflint.c:847
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
+"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
+"have SHF_TLS flag set\n"
msgstr ""
-#: src/elflint.c:853 src/elflint.c:901
+#: src/elflint.c:857 src/elflint.c:905
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
+"section [%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:880
+#: src/elflint.c:884
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
+"entry\n"
msgstr ""
-#: src/elflint.c:886
+#: src/elflint.c:890
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but couldn't get TLS program "
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
"header entry\n"
msgstr ""
-#: src/elflint.c:894
+#: src/elflint.c:898
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
-"'%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
+"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:921
+#: src/elflint.c:925
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
+"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
"sh_info\n"
msgstr ""
-#: src/elflint.c:928
+#: src/elflint.c:932
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
+"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
+"described in sh_info\n"
msgstr ""
-#: src/elflint.c:935
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
-msgstr ""
+#: src/elflint.c:939
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:985
+#: src/elflint.c:989
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"[%2d]\n"
msgstr ""
-#: src/elflint.c:992
+#: src/elflint.c:996
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1857,1367 +1871,1372 @@ msgstr ""
#. This test is more strict than the psABIs which
#. usually allow the symbol to be in the middle of
#. the .got section, allowing negative offsets.
-#: src/elflint.c:1008
+#: src/elflint.c:1012
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"match %s section address %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:1015
+#: src/elflint.c:1019
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"match %s section size %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:1023
+#: src/elflint.c:1027
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"section\n"
msgstr ""
-#: src/elflint.c:1039
+#: src/elflint.c:1043
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"segment address %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:1046
+#: src/elflint.c:1050
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"segment size %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:1059
+#: src/elflint.c:1063
#, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
+"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
"default visibility\n"
msgstr ""
-#: src/elflint.c:1063
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
-msgstr ""
+#: src/elflint.c:1067
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:1101
+#: src/elflint.c:1105
#, fuzzy, c-format
msgid "section [%2d] '%s': cannot get section data.\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:1117
+#: src/elflint.c:1121
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr ""
-#: src/elflint.c:1128 src/elflint.c:1181
+#: src/elflint.c:1132 src/elflint.c:1185
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
-#: src/elflint.c:1153 src/elflint.c:1206
+#: src/elflint.c:1157 src/elflint.c:1210
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"DT_RELCOUNT\n"
msgstr ""
-#: src/elflint.c:1159 src/elflint.c:1212
+#: src/elflint.c:1163 src/elflint.c:1216
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"specified %d relative relocations\n"
msgstr ""
-#: src/elflint.c:1171
+#: src/elflint.c:1175
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr ""
-#: src/elflint.c:1254
+#: src/elflint.c:1258
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr ""
-#: src/elflint.c:1266
+#: src/elflint.c:1270
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr ""
-#: src/elflint.c:1274
+#: src/elflint.c:1278
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr ""
-#: src/elflint.c:1282
+#: src/elflint.c:1286
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': no relocations for merge-able string sections possible\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:1290
+#: src/elflint.c:1294
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
-#: src/elflint.c:1350
+#: src/elflint.c:1354
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
-#: src/elflint.c:1377
+#: src/elflint.c:1381
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr ""
-#: src/elflint.c:1385
+#: src/elflint.c:1389
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"type\n"
msgstr ""
-#: src/elflint.c:1393
+#: src/elflint.c:1397
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr ""
-#: src/elflint.c:1411
+#: src/elflint.c:1415
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"be used with %s\n"
msgstr ""
-#: src/elflint.c:1428
+#: src/elflint.c:1432
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr ""
-#: src/elflint.c:1443
+#: src/elflint.c:1447
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"%s\n"
msgstr ""
-#: src/elflint.c:1464
+#: src/elflint.c:1468
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"relocation flag not set\n"
msgstr ""
-#: src/elflint.c:1479
+#: src/elflint.c:1483
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
-#: src/elflint.c:1519 src/elflint.c:1570
+#: src/elflint.c:1523 src/elflint.c:1574
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr ""
-#: src/elflint.c:1646
+#: src/elflint.c:1650
#, c-format
msgid "more than one dynamic section present\n"
msgstr ""
-#: src/elflint.c:1664
+#: src/elflint.c:1668
#, c-format
msgid ""
"section [%2d]: referenced as string table for section [%2d] '%s' but section "
"link value is invalid\n"
msgstr ""
-#: src/elflint.c:1672
+#: src/elflint.c:1676
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
-#: src/elflint.c:1677 src/elflint.c:1966
+#: src/elflint.c:1681 src/elflint.c:1970
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr ""
-#: src/elflint.c:1687
+#: src/elflint.c:1691
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
-#: src/elflint.c:1695
+#: src/elflint.c:1699
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr ""
-#: src/elflint.c:1702
+#: src/elflint.c:1706
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr ""
-#: src/elflint.c:1713
+#: src/elflint.c:1717
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr ""
-#: src/elflint.c:1723
+#: src/elflint.c:1727
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr ""
-#: src/elflint.c:1741
+#: src/elflint.c:1745
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
msgstr ""
-#: src/elflint.c:1754
+#: src/elflint.c:1758
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"[%2d] '%s' referenced by sh_link\n"
msgstr ""
-#: src/elflint.c:1797
+#: src/elflint.c:1801
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
-#: src/elflint.c:1812
+#: src/elflint.c:1816
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:1832 src/elflint.c:1860
+#: src/elflint.c:1836 src/elflint.c:1864
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr ""
-#: src/elflint.c:1844
+#: src/elflint.c:1848
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr ""
-#: src/elflint.c:1853
+#: src/elflint.c:1857
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr ""
-#: src/elflint.c:1868 src/elflint.c:1875
+#: src/elflint.c:1872 src/elflint.c:1879
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr ""
-#: src/elflint.c:1885 src/elflint.c:1889
+#: src/elflint.c:1889 src/elflint.c:1893
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
-#: src/elflint.c:1895
+#: src/elflint.c:1899
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
-#: src/elflint.c:1906 src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918
+#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
-#: src/elflint.c:1930
+#: src/elflint.c:1934
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
msgstr ""
-#: src/elflint.c:1940
+#: src/elflint.c:1944
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
-#: src/elflint.c:1944
+#: src/elflint.c:1948
#, c-format
msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
msgstr ""
-#: src/elflint.c:1949
+#: src/elflint.c:1953
#, c-format
msgid "cannot get data for symbol section\n"
msgstr ""
-#: src/elflint.c:1952
+#: src/elflint.c:1956
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr ""
-#: src/elflint.c:1961
+#: src/elflint.c:1965
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
-#: src/elflint.c:1976
+#: src/elflint.c:1980
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"same symbol table\n"
msgstr ""
-#: src/elflint.c:1994
+#: src/elflint.c:1998
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr ""
-#: src/elflint.c:2006
+#: src/elflint.c:2010
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr ""
-#: src/elflint.c:2011
+#: src/elflint.c:2015
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
-#: src/elflint.c:2028 src/elflint.c:2085
+#: src/elflint.c:2032 src/elflint.c:2089
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
msgstr ""
-#: src/elflint.c:2042 src/elflint.c:2099
+#: src/elflint.c:2046 src/elflint.c:2103
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr ""
-#: src/elflint.c:2056 src/elflint.c:2113
+#: src/elflint.c:2060 src/elflint.c:2117
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2066
+#: src/elflint.c:2070
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2123
+#: src/elflint.c:2127
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
-#: src/elflint.c:2136
+#: src/elflint.c:2140
#, c-format
msgid "section [%2d] '%s': not enough data\n"
msgstr ""
-#: src/elflint.c:2148
+#: src/elflint.c:2152
#, c-format
msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
msgstr ""
-#: src/elflint.c:2164
+#: src/elflint.c:2168
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
"least %ld)\n"
msgstr ""
-#: src/elflint.c:2173
+#: src/elflint.c:2177
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
-#: src/elflint.c:2207
+#: src/elflint.c:2211
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
msgstr ""
-#: src/elflint.c:2228
+#: src/elflint.c:2232
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"undefined\n"
msgstr ""
-#: src/elflint.c:2241
+#: src/elflint.c:2245
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
msgstr ""
-#: src/elflint.c:2250
+#: src/elflint.c:2254
#, c-format
msgid ""
"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
msgstr ""
-#: src/elflint.c:2280
+#: src/elflint.c:2284
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2285
+#: src/elflint.c:2289
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2291
+#: src/elflint.c:2295
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
-#: src/elflint.c:2304
+#: src/elflint.c:2308
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
-#: src/elflint.c:2322
+#: src/elflint.c:2326
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2326
+#: src/elflint.c:2330
#, c-format
msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
msgstr ""
-#: src/elflint.c:2336
+#: src/elflint.c:2340
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr ""
-#: src/elflint.c:2341
+#: src/elflint.c:2345
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr ""
-#: src/elflint.c:2346
+#: src/elflint.c:2350
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"entries\n"
msgstr ""
-#: src/elflint.c:2395
+#: src/elflint.c:2399
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
-#: src/elflint.c:2419 src/elflint.c:2484 src/elflint.c:2519
+#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
#, c-format
msgid "hash section [%2zu] '%s' does not contain enough data\n"
msgstr ""
-#: src/elflint.c:2440
+#: src/elflint.c:2444
#, c-format
msgid "hash section [%2zu] '%s' has zero bit mask words\n"
msgstr ""
-#: src/elflint.c:2451 src/elflint.c:2495 src/elflint.c:2532
+#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
#, c-format
msgid "hash section [%2zu] '%s' uses too much data\n"
msgstr ""
-#: src/elflint.c:2466
+#: src/elflint.c:2470
#, c-format
msgid ""
"hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
"%<PRIu32>, nentries: %<PRIu32>\n"
msgstr ""
-#: src/elflint.c:2553
+#: src/elflint.c:2557
#, c-format
msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
msgstr ""
-#: src/elflint.c:2563 src/elflint.c:2567
+#: src/elflint.c:2567 src/elflint.c:2571
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr ""
-#: src/elflint.c:2574
+#: src/elflint.c:2578
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2586
+#: src/elflint.c:2590
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2602
+#: src/elflint.c:2606
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr ""
-#: src/elflint.c:2622
+#: src/elflint.c:2626
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
msgstr ""
-#: src/elflint.c:2633
+#: src/elflint.c:2637
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr ""
-#: src/elflint.c:2638
+#: src/elflint.c:2642
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
-#: src/elflint.c:2644
+#: src/elflint.c:2648
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr ""
-#: src/elflint.c:2649
+#: src/elflint.c:2653
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr ""
-#: src/elflint.c:2656
+#: src/elflint.c:2660
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr ""
-#: src/elflint.c:2660
+#: src/elflint.c:2664
#, c-format
msgid "section [%2d] '%s': cannot get symbol name for signature\n"
msgstr ""
-#: src/elflint.c:2665
+#: src/elflint.c:2669
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr ""
-#: src/elflint.c:2671
+#: src/elflint.c:2675
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr ""
-#: src/elflint.c:2677
+#: src/elflint.c:2681
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr ""
-#: src/elflint.c:2686
+#: src/elflint.c:2690
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
-#: src/elflint.c:2692
+#: src/elflint.c:2696
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr ""
-#: src/elflint.c:2700
+#: src/elflint.c:2704
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr ""
-#: src/elflint.c:2704
+#: src/elflint.c:2708
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr ""
-#: src/elflint.c:2715
+#: src/elflint.c:2719
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr ""
-#: src/elflint.c:2727
+#: src/elflint.c:2731
#, fuzzy, c-format
msgid "section [%2d] '%s': section index %zu out of range\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:2736
+#: src/elflint.c:2740
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
-#: src/elflint.c:2743
+#: src/elflint.c:2747
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:2749
+#: src/elflint.c:2753
#, c-format
msgid ""
"section [%2d] '%s': element %zu references section [%2d] '%s' without "
"SHF_GROUP flag set\n"
msgstr ""
-#: src/elflint.c:2756
+#: src/elflint.c:2760
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr ""
-#: src/elflint.c:2946
+#: src/elflint.c:2957
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2958
+#: src/elflint.c:2969
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:2974
+#: src/elflint.c:2985
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr ""
-#: src/elflint.c:2990
+#: src/elflint.c:3001
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
-#: src/elflint.c:2998
+#: src/elflint.c:3009
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr ""
-#: src/elflint.c:3012
+#: src/elflint.c:3023
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr ""
-#: src/elflint.c:3017
+#: src/elflint.c:3028
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
-#: src/elflint.c:3027
+#: src/elflint.c:3038
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
-#: src/elflint.c:3080
+#: src/elflint.c:3091
#, c-format
msgid "more than one version reference section present\n"
msgstr ""
-#: src/elflint.c:3088 src/elflint.c:3235
+#: src/elflint.c:3099 src/elflint.c:3246
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr ""
-#: src/elflint.c:3113 src/elflint.c:3289
+#: src/elflint.c:3124 src/elflint.c:3300
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr ""
-#: src/elflint.c:3120 src/elflint.c:3296
+#: src/elflint.c:3131 src/elflint.c:3307
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
-#: src/elflint.c:3130
+#: src/elflint.c:3141
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr ""
-#: src/elflint.c:3138
+#: src/elflint.c:3149
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr ""
-#: src/elflint.c:3150
+#: src/elflint.c:3161
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:3158
+#: src/elflint.c:3169
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"reference\n"
msgstr ""
-#: src/elflint.c:3167
+#: src/elflint.c:3178
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"%#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:3176
+#: src/elflint.c:3187
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"name '%s'\n"
msgstr ""
-#: src/elflint.c:3187
+#: src/elflint.c:3198
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
msgstr ""
-#: src/elflint.c:3204 src/elflint.c:3380
+#: src/elflint.c:3215 src/elflint.c:3391
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
-#: src/elflint.c:3212 src/elflint.c:3388
+#: src/elflint.c:3223 src/elflint.c:3399
#, c-format
msgid ""
"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
"there are more entries\n"
msgstr ""
-#: src/elflint.c:3227
+#: src/elflint.c:3238
#, c-format
msgid "more than one version definition section present\n"
msgstr ""
-#: src/elflint.c:3274
+#: src/elflint.c:3285
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr ""
-#: src/elflint.c:3278
+#: src/elflint.c:3289
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
-#: src/elflint.c:3284
+#: src/elflint.c:3295
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:3311
+#: src/elflint.c:3322
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr ""
-#: src/elflint.c:3318
+#: src/elflint.c:3329
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:3326
+#: src/elflint.c:3337
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr ""
-#: src/elflint.c:3346
+#: src/elflint.c:3357
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3363
+#: src/elflint.c:3374
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3396
+#: src/elflint.c:3407
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr ""
-#: src/elflint.c:3412
+#: src/elflint.c:3423
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr ""
-#: src/elflint.c:3425
+#: src/elflint.c:3436
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr ""
-#: src/elflint.c:3446
+#: src/elflint.c:3457
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr ""
-#: src/elflint.c:3462
+#: src/elflint.c:3473
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
-#: src/elflint.c:3471
+#: src/elflint.c:3482
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
-#: src/elflint.c:3483
+#: src/elflint.c:3494
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
-#: src/elflint.c:3500
+#: src/elflint.c:3511
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
msgstr ""
-#: src/elflint.c:3509
+#: src/elflint.c:3520
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr ""
-#: src/elflint.c:3518
+#: src/elflint.c:3529
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
msgstr ""
-#: src/elflint.c:3533
+#: src/elflint.c:3544
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
msgstr ""
#. Tag_File
-#: src/elflint.c:3544
+#: src/elflint.c:3555
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
msgstr ""
-#: src/elflint.c:3562
+#: src/elflint.c:3573
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
-#: src/elflint.c:3573
+#: src/elflint.c:3584
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr ""
-#: src/elflint.c:3586
+#: src/elflint.c:3597
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr ""
-#: src/elflint.c:3590
+#: src/elflint.c:3601
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:3600
+#: src/elflint.c:3611
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr ""
-#: src/elflint.c:3606
+#: src/elflint.c:3617
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
msgstr ""
-#: src/elflint.c:3695
+#: src/elflint.c:3714
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr ""
-#: src/elflint.c:3699
+#: src/elflint.c:3718
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr ""
-#: src/elflint.c:3701
+#: src/elflint.c:3720
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr ""
-#: src/elflint.c:3703
+#: src/elflint.c:3722
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr ""
-#: src/elflint.c:3705
+#: src/elflint.c:3724
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr ""
-#: src/elflint.c:3707
+#: src/elflint.c:3726
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr ""
-#: src/elflint.c:3709
+#: src/elflint.c:3728
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr ""
-#: src/elflint.c:3711
+#: src/elflint.c:3730
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr ""
-#: src/elflint.c:3714
+#: src/elflint.c:3733
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"value\n"
msgstr ""
-#: src/elflint.c:3718
+#: src/elflint.c:3737
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in shstrndx\n"
msgstr ""
-#: src/elflint.c:3722
+#: src/elflint.c:3741
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in phnum\n"
msgstr ""
-#: src/elflint.c:3740
+#: src/elflint.c:3759
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr ""
-#: src/elflint.c:3749
+#: src/elflint.c:3768
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr ""
-#: src/elflint.c:3776
+#: src/elflint.c:3795
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3794
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3812
+#: src/elflint.c:3830
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
msgstr ""
-#: src/elflint.c:3830
+#: src/elflint.c:3847
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr ""
-#: src/elflint.c:3836 src/elflint.c:3868
+#: src/elflint.c:3853 src/elflint.c:3885
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
msgstr ""
-#: src/elflint.c:3841 src/elflint.c:3873
+#: src/elflint.c:3858 src/elflint.c:3890
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"segments\n"
msgstr ""
-#: src/elflint.c:3849
+#: src/elflint.c:3866
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
msgstr ""
-#: src/elflint.c:3892
+#: src/elflint.c:3909
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr ""
-#: src/elflint.c:3897
+#: src/elflint.c:3914
#, c-format
msgid "cannot get section header\n"
msgstr ""
-#: src/elflint.c:3907
+#: src/elflint.c:3924
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr ""
-#: src/elflint.c:3922
+#: src/elflint.c:3944
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3929
+#: src/elflint.c:3954
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3937
+#: src/elflint.c:3962
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
-#: src/elflint.c:3947
+#: src/elflint.c:3972
#, fuzzy, c-format
msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:3952
+#: src/elflint.c:3977
#, fuzzy, c-format
msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/elflint.c:3958
+#: src/elflint.c:3983
#, c-format
msgid ""
"section [%2zu] '%s': compressed section with no compression header: %s\n"
msgstr ""
-#: src/elflint.c:3964
+#: src/elflint.c:3989
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
-#: src/elflint.c:3969
+#: src/elflint.c:3994
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
-#: src/elflint.c:3976
+#: src/elflint.c:4001
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr ""
-#: src/elflint.c:3981
+#: src/elflint.c:4006
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
-#: src/elflint.c:4000
+#: src/elflint.c:4025
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
-#: src/elflint.c:4009
+#: src/elflint.c:4034
#, c-format
msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
msgstr ""
-#: src/elflint.c:4016
+#: src/elflint.c:4041
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr ""
-#: src/elflint.c:4047
+#: src/elflint.c:4072
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"%d\n"
msgstr ""
-#: src/elflint.c:4057
+#: src/elflint.c:4082
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"program header entry %d\n"
msgstr ""
-#: src/elflint.c:4083
+#: src/elflint.c:4108
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"program header entry %d and file contents is non-zero\n"
msgstr ""
-#: src/elflint.c:4094
+#: src/elflint.c:4119
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"segment of program header entry %d\n"
msgstr ""
-#: src/elflint.c:4105
+#: src/elflint.c:4130
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr ""
-#: src/elflint.c:4115
+#: src/elflint.c:4140
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
-#: src/elflint.c:4125
+#: src/elflint.c:4150
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
msgstr ""
-#: src/elflint.c:4131
+#: src/elflint.c:4156
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"but type is not SHT_TYPE\n"
msgstr ""
-#: src/elflint.c:4139
+#: src/elflint.c:4164
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
msgstr ""
-#: src/elflint.c:4190
+#: src/elflint.c:4215
#, c-format
msgid "more than one version symbol table present\n"
msgstr ""
-#: src/elflint.c:4213
+#: src/elflint.c:4238
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr ""
-#: src/elflint.c:4224
+#: src/elflint.c:4249
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
-#: src/elflint.c:4230
+#: src/elflint.c:4255
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
-#: src/elflint.c:4241
+#: src/elflint.c:4266
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"exist\n"
msgstr ""
-#: src/elflint.c:4254
+#: src/elflint.c:4279
#, c-format
msgid "duplicate version index %d\n"
msgstr ""
-#: src/elflint.c:4268
+#: src/elflint.c:4293
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
-#: src/elflint.c:4317
+#: src/elflint.c:4342
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:4321
+#: src/elflint.c:4346
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
msgstr ""
-#: src/elflint.c:4370
+#: src/elflint.c:4395
#, c-format
msgid ""
"phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
"offset %zu\n"
msgstr ""
-#: src/elflint.c:4375
+#: src/elflint.c:4400
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
"'%s' at offset %zu\n"
msgstr ""
-#: src/elflint.c:4394
+#: src/elflint.c:4419
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4414
+#: src/elflint.c:4439
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr ""
-#: src/elflint.c:4417
+#: src/elflint.c:4442
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4438
+#: src/elflint.c:4463
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4445
+#: src/elflint.c:4470
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr ""
-#: src/elflint.c:4448
+#: src/elflint.c:4473
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4466
+#: src/elflint.c:4491
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
msgstr ""
-#: src/elflint.c:4481
+#: src/elflint.c:4506
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr ""
-#: src/elflint.c:4490
+#: src/elflint.c:4516
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:4501
+#: src/elflint.c:4527
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr ""
-#: src/elflint.c:4509
+#: src/elflint.c:4535
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr ""
-#: src/elflint.c:4516
+#: src/elflint.c:4542
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr ""
-#: src/elflint.c:4530
+#: src/elflint.c:4556
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4533
+#: src/elflint.c:4559
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4543
+#: src/elflint.c:4569
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr ""
-#: src/elflint.c:4564
+#: src/elflint.c:4590
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr ""
-#: src/elflint.c:4575
+#: src/elflint.c:4601
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
-#: src/elflint.c:4582
+#: src/elflint.c:4608
#, c-format
msgid ""
"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
msgstr ""
-#: src/elflint.c:4591 src/elflint.c:4614
+#: src/elflint.c:4617 src/elflint.c:4640
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr ""
-#: src/elflint.c:4620
+#: src/elflint.c:4646
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
-#: src/elflint.c:4647
+#: src/elflint.c:4673
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4650
+#: src/elflint.c:4676
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4663
+#: src/elflint.c:4689
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr ""
-#: src/elflint.c:4671
+#: src/elflint.c:4697
#, c-format
msgid "call frame search table must be allocated\n"
msgstr ""
-#: src/elflint.c:4674
+#: src/elflint.c:4700
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr ""
-#: src/elflint.c:4678
+#: src/elflint.c:4704
#, c-format
msgid "call frame search table must not be writable\n"
msgstr ""
-#: src/elflint.c:4681
+#: src/elflint.c:4707
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr ""
-#: src/elflint.c:4686
+#: src/elflint.c:4712
#, c-format
msgid "call frame search table must not be executable\n"
msgstr ""
-#: src/elflint.c:4689
+#: src/elflint.c:4715
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr ""
-#: src/elflint.c:4700
+#: src/elflint.c:4726
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr ""
-#: src/elflint.c:4707
+#: src/elflint.c:4733
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr ""
-#: src/elflint.c:4710
+#: src/elflint.c:4736
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"alignment\n"
msgstr ""
-#: src/elflint.c:4723
+#: src/elflint.c:4749
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"program header entry"
msgstr ""
-#: src/elflint.c:4757
+#: src/elflint.c:4783
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr ""
-#: src/elflint.c:4783
+#: src/elflint.c:4795
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "neue Datei konnte nicht angelegt werden"
+
+#: src/elflint.c:4816
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr ""
@@ -3393,7 +3412,7 @@ msgstr "Kennzeichne schwache Symbole"
msgid "Print size of defined symbols"
msgstr "Zeige Grösse der definierten Symbole"
-#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73
+#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:69
msgid "Output options:"
msgstr "Ausgabeoptionen:"
@@ -3429,12 +3448,12 @@ msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: INTERNER FEHLER %d (%s-%s): %s"
#: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308
-#: src/strip.c:2748
+#: src/strip.c:2763
#, c-format
msgid "while closing '%s'"
msgstr "beim Schliessen von '%s'"
-#: src/nm.c:403 src/objdump.c:280 src/strip.c:797
+#: src/nm.c:403 src/objdump.c:280 src/strip.c:818
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: Dateiformat nicht erkannt"
@@ -3474,13 +3493,13 @@ msgstr "%s%s%s: Dateiformat nicht erkannt"
msgid "cannot create search tree"
msgstr "Kann Suchbaum nicht erstellen"
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
-#: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
-#: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
-#: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
-#: src/strip.c:1038
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:637
+#: src/readelf.c:1451 src/readelf.c:1602 src/readelf.c:1803 src/readelf.c:2009
+#: src/readelf.c:2199 src/readelf.c:2377 src/readelf.c:2453 src/readelf.c:2711
+#: src/readelf.c:2787 src/readelf.c:2874 src/readelf.c:3472 src/readelf.c:3522
+#: src/readelf.c:3592 src/readelf.c:11328 src/readelf.c:12523
+#: src/readelf.c:12734 src/readelf.c:12803 src/size.c:398 src/size.c:470
+#: src/strip.c:1084
#, c-format
msgid "cannot get section header string table index"
msgstr ""
@@ -3507,28 +3526,28 @@ msgid ""
"\n"
msgstr ""
-#: src/nm.c:1216
+#: src/nm.c:1250
#, fuzzy, c-format
msgid "%s: entry size in section %zd `%s' is not what we expect"
msgstr "%s: entry size in section `%s' is not what we expect"
-#: src/nm.c:1221
+#: src/nm.c:1255
#, fuzzy, c-format
msgid "%s: size of section %zd `%s' is not multiple of entry size"
msgstr "%s: entry size in section `%s' is not what we expect"
-#: src/nm.c:1300
+#: src/nm.c:1334
#, fuzzy, c-format
msgid "%s: entries (%zd) in section %zd `%s' is too large"
msgstr "%s: entry size in section `%s' is not what we expect"
#. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: Ungültige Operation"
-#: src/nm.c:1584
+#: src/nm.c:1620
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: keine Symbole"
@@ -3563,7 +3582,7 @@ msgstr ""
msgid "Show information from FILEs (a.out by default)."
msgstr ""
-#: src/objdump.c:218 src/readelf.c:580
+#: src/objdump.c:218 src/readelf.c:582
msgid "No operation specified.\n"
msgstr "Keine Operation angegeben.\n"
@@ -3572,11 +3591,11 @@ msgstr "Keine Operation angegeben.\n"
msgid "while close `%s'"
msgstr ""
-#: src/objdump.c:363 src/readelf.c:2100 src/readelf.c:2292
+#: src/objdump.c:363 src/readelf.c:2104 src/readelf.c:2296
msgid "INVALID SYMBOL"
msgstr ""
-#: src/objdump.c:378 src/readelf.c:2134 src/readelf.c:2328
+#: src/objdump.c:378 src/readelf.c:2138 src/readelf.c:2332
msgid "INVALID SECTION"
msgstr ""
@@ -3602,6 +3621,11 @@ msgstr "Inhalt des Abschnitts %s:\n"
msgid "cannot disassemble"
msgstr "Disassemblieren nicht möglich"
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "neue Datei konnte nicht angelegt werden"
+
#. Short description of program.
#: src/ranlib.c:63
msgid "Generate an index to speed access to archives."
@@ -3771,369 +3795,369 @@ msgstr "ja"
msgid "no"
msgstr "nein"
-#: src/readelf.c:548
+#: src/readelf.c:550
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr ""
-#: src/readelf.c:619 src/readelf.c:730
+#: src/readelf.c:621 src/readelf.c:732
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "konnte Elf-Deskriptor nicht erzeugen: %s"
-#: src/readelf.c:626 src/readelf.c:953 src/strip.c:1133
+#: src/readelf.c:628 src/readelf.c:955 src/strip.c:1179
#, c-format
msgid "cannot determine number of sections: %s"
msgstr ""
-#: src/readelf.c:644 src/readelf.c:1263 src/readelf.c:1471
+#: src/readelf.c:646 src/readelf.c:1265 src/readelf.c:1475
#, c-format
msgid "cannot get section: %s"
msgstr ""
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
-#: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
-#: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
-#: src/unstrip.c:1658 src/unstrip.c:1809 src/unstrip.c:1952 src/unstrip.c:2051
+#: src/readelf.c:655 src/readelf.c:1272 src/readelf.c:1483 src/readelf.c:12754
+#: src/unstrip.c:397 src/unstrip.c:428 src/unstrip.c:487 src/unstrip.c:608
+#: src/unstrip.c:629 src/unstrip.c:669 src/unstrip.c:885 src/unstrip.c:1216
+#: src/unstrip.c:1343 src/unstrip.c:1367 src/unstrip.c:1423 src/unstrip.c:1487
+#: src/unstrip.c:1662 src/unstrip.c:1813 src/unstrip.c:1956 src/unstrip.c:2055
#, c-format
msgid "cannot get section header: %s"
msgstr ""
-#: src/readelf.c:661
+#: src/readelf.c:663
#, fuzzy, c-format
msgid "cannot get section name"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:670 src/readelf.c:6576 src/readelf.c:10502 src/readelf.c:10604
-#: src/readelf.c:10782
+#: src/readelf.c:672 src/readelf.c:6628 src/readelf.c:10600 src/readelf.c:10702
+#: src/readelf.c:10880
#, c-format
msgid "cannot get %s content: %s"
msgstr ""
-#: src/readelf.c:686
+#: src/readelf.c:688
#, fuzzy, c-format
msgid "cannot create temp file '%s'"
msgstr "neue Datei konnte nicht angelegt werden"
-#: src/readelf.c:695
+#: src/readelf.c:697
#, fuzzy, c-format
msgid "cannot write section data"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:701 src/readelf.c:718 src/readelf.c:747
+#: src/readelf.c:703 src/readelf.c:720 src/readelf.c:749
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr ""
-#: src/readelf.c:708
+#: src/readelf.c:710
#, fuzzy, c-format
msgid "error while rewinding file descriptor"
msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
-#: src/readelf.c:742
+#: src/readelf.c:744
#, c-format
msgid "'%s' is not an archive, cannot print archive index"
msgstr ""
-#: src/readelf.c:846
+#: src/readelf.c:848
#, c-format
msgid "cannot stat input file"
msgstr ""
-#: src/readelf.c:848
+#: src/readelf.c:850
#, c-format
msgid "input file is empty"
msgstr ""
-#: src/readelf.c:850
+#: src/readelf.c:852
#, c-format
msgid "failed reading '%s': %s"
msgstr "Konnte '%s' nicht lesen: %s"
-#: src/readelf.c:879
+#: src/readelf.c:881
#, fuzzy, c-format
msgid "No such section '%s' in '%s'"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:938
+#: src/readelf.c:940
#, c-format
msgid "cannot read ELF header: %s"
msgstr ""
-#: src/readelf.c:946
+#: src/readelf.c:948
#, c-format
msgid "cannot create EBL handle"
msgstr ""
-#: src/readelf.c:959
+#: src/readelf.c:961
#, fuzzy, c-format
msgid "cannot determine number of program headers: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/readelf.c:991
+#: src/readelf.c:993
#, fuzzy, c-format
msgid "cannot read ELF: %s"
msgstr "Konnte %s: %s nicht lesen"
-#: src/readelf.c:1052
+#: src/readelf.c:1054
msgid "NONE (None)"
msgstr ""
-#: src/readelf.c:1053
+#: src/readelf.c:1055
msgid "REL (Relocatable file)"
msgstr ""
-#: src/readelf.c:1054
+#: src/readelf.c:1056
msgid "EXEC (Executable file)"
msgstr ""
-#: src/readelf.c:1055
+#: src/readelf.c:1057
msgid "DYN (Shared object file)"
msgstr ""
-#: src/readelf.c:1056
+#: src/readelf.c:1058
msgid "CORE (Core file)"
msgstr ""
-#: src/readelf.c:1061
+#: src/readelf.c:1063
#, c-format
msgid "OS Specific: (%x)\n"
msgstr ""
#. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1063
+#: src/readelf.c:1065
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr ""
-#: src/readelf.c:1073
+#: src/readelf.c:1075
msgid ""
"ELF Header:\n"
" Magic: "
msgstr ""
-#: src/readelf.c:1077
+#: src/readelf.c:1079
#, c-format
msgid ""
"\n"
" Class: %s\n"
msgstr ""
-#: src/readelf.c:1082
+#: src/readelf.c:1084
#, fuzzy, c-format
msgid " Data: %s\n"
msgstr " Daten: %s\n"
-#: src/readelf.c:1088
+#: src/readelf.c:1090
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr ""
-#: src/readelf.c:1090 src/readelf.c:1112
+#: src/readelf.c:1092 src/readelf.c:1114
msgid "(current)"
msgstr "(aktuell)"
-#: src/readelf.c:1094
+#: src/readelf.c:1096
#, c-format
msgid " OS/ABI: %s\n"
msgstr ""
-#: src/readelf.c:1097
+#: src/readelf.c:1099
#, c-format
msgid " ABI Version: %hhd\n"
msgstr ""
-#: src/readelf.c:1100
+#: src/readelf.c:1102
msgid " Type: "
msgstr " Typ: "
-#: src/readelf.c:1105
+#: src/readelf.c:1107
#, c-format
msgid " Machine: %s\n"
msgstr ""
-#: src/readelf.c:1107
+#: src/readelf.c:1109
#, fuzzy, c-format
msgid " Machine: <unknown>: 0x%x\n"
msgstr " Daten: %s\n"
-#: src/readelf.c:1110
+#: src/readelf.c:1112
#, c-format
msgid " Version: %d %s\n"
msgstr ""
-#: src/readelf.c:1114
+#: src/readelf.c:1116
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:1117
+#: src/readelf.c:1119
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr ""
-#: src/readelf.c:1118 src/readelf.c:1121
+#: src/readelf.c:1120 src/readelf.c:1123
msgid "(bytes into file)"
msgstr ""
-#: src/readelf.c:1120
+#: src/readelf.c:1122
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr ""
-#: src/readelf.c:1123
+#: src/readelf.c:1125
#, c-format
msgid " Flags: %s\n"
msgstr ""
-#: src/readelf.c:1126
+#: src/readelf.c:1128
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:1127 src/readelf.c:1130 src/readelf.c:1147
+#: src/readelf.c:1129 src/readelf.c:1132 src/readelf.c:1149
msgid "(bytes)"
msgstr "(Bytes)"
-#: src/readelf.c:1129
+#: src/readelf.c:1131
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:1132
+#: src/readelf.c:1134
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr ""
-#: src/readelf.c:1139
+#: src/readelf.c:1141
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr ""
-#: src/readelf.c:1142 src/readelf.c:1159 src/readelf.c:1173
+#: src/readelf.c:1144 src/readelf.c:1161 src/readelf.c:1175
msgid " ([0] not available)"
msgstr ""
-#: src/readelf.c:1146
+#: src/readelf.c:1148
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:1149
+#: src/readelf.c:1151
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr ""
-#: src/readelf.c:1156
+#: src/readelf.c:1158
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr ""
#. We managed to get the zeroth section.
-#: src/readelf.c:1169
+#: src/readelf.c:1171
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr ""
-#: src/readelf.c:1177
+#: src/readelf.c:1179
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
"\n"
msgstr ""
-#: src/readelf.c:1181
+#: src/readelf.c:1183
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
"\n"
msgstr ""
-#: src/readelf.c:1228 src/readelf.c:1436
+#: src/readelf.c:1230 src/readelf.c:1440
#, fuzzy, c-format
msgid "cannot get number of sections: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/readelf.c:1231
+#: src/readelf.c:1233
#, fuzzy, c-format
msgid ""
"There are %zd section headers, starting at offset %#<PRIx64>:\n"
"\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:1240
+#: src/readelf.c:1242
#, fuzzy, c-format
msgid "cannot get section header string table index: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:1243
+#: src/readelf.c:1245
msgid "Section Headers:"
msgstr ""
-#: src/readelf.c:1246
+#: src/readelf.c:1248
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
msgstr ""
-#: src/readelf.c:1248
+#: src/readelf.c:1250
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
msgstr ""
-#: src/readelf.c:1253
+#: src/readelf.c:1255
msgid " [Compression Size Al]"
msgstr ""
-#: src/readelf.c:1255
+#: src/readelf.c:1257
msgid " [Compression Size Al]"
msgstr ""
-#: src/readelf.c:1331
+#: src/readelf.c:1335
#, c-format
msgid "bad compression header for section %zd: %s"
msgstr ""
-#: src/readelf.c:1342
+#: src/readelf.c:1346
#, c-format
msgid "bad gnu compressed size for section %zd: %s"
msgstr ""
-#: src/readelf.c:1360
+#: src/readelf.c:1364
msgid "Program Headers:"
msgstr "Programm-Köpfe:"
-#: src/readelf.c:1362
+#: src/readelf.c:1366
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
-#: src/readelf.c:1365
+#: src/readelf.c:1369
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
msgstr ""
-#: src/readelf.c:1422
+#: src/readelf.c:1426
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr ""
-#: src/readelf.c:1449
+#: src/readelf.c:1453
msgid ""
"\n"
" Section to Segment mapping:\n"
" Segment Sections..."
msgstr ""
-#: src/readelf.c:1460 src/unstrip.c:2110 src/unstrip.c:2152 src/unstrip.c:2159
+#: src/readelf.c:1464 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
#, c-format
msgid "cannot get program header: %s"
msgstr ""
-#: src/readelf.c:1606
+#: src/readelf.c:1610
#, c-format
msgid ""
"\n"
@@ -4144,7 +4168,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1611
+#: src/readelf.c:1615
#, c-format
msgid ""
"\n"
@@ -4155,31 +4179,31 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1619
+#: src/readelf.c:1623
msgid "<INVALID SYMBOL>"
msgstr ""
-#: src/readelf.c:1633
+#: src/readelf.c:1637
msgid "<INVALID SECTION>"
msgstr ""
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1660 src/readelf.c:2387 src/readelf.c:3488 src/readelf.c:12625
+#: src/readelf.c:12632 src/readelf.c:12676 src/readelf.c:12683
msgid "Couldn't uncompress section"
msgstr ""
-#: src/readelf.c:1661 src/readelf.c:2388 src/readelf.c:3489
+#: src/readelf.c:1665 src/readelf.c:2392 src/readelf.c:3493
#, fuzzy, c-format
msgid "cannot get section [%zd] header: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:1809 src/readelf.c:2459 src/readelf.c:2717 src/readelf.c:2793
+#: src/readelf.c:3097 src/readelf.c:3171 src/readelf.c:5401
#, fuzzy, c-format
msgid "invalid sh_link value in section %zu"
msgstr "ungültige .debug_line Sektion"
-#: src/readelf.c:1808
+#: src/readelf.c:1812
#, c-format
msgid ""
"\n"
@@ -4192,43 +4216,43 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1818
+#: src/readelf.c:1822
msgid " Type Value\n"
msgstr ""
-#: src/readelf.c:1842
+#: src/readelf.c:1846
#, c-format
msgid "Shared library: [%s]\n"
msgstr ""
-#: src/readelf.c:1847
+#: src/readelf.c:1851
#, c-format
msgid "Library soname: [%s]\n"
msgstr ""
-#: src/readelf.c:1852
+#: src/readelf.c:1856
#, c-format
msgid "Library rpath: [%s]\n"
msgstr ""
-#: src/readelf.c:1857
+#: src/readelf.c:1861
#, c-format
msgid "Library runpath: [%s]\n"
msgstr ""
-#: src/readelf.c:1877
+#: src/readelf.c:1881
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr ""
-#: src/readelf.c:1990 src/readelf.c:2180
+#: src/readelf.c:1994 src/readelf.c:2184
#, c-format
msgid ""
"\n"
"Invalid symbol table at offset %#0<PRIx64>\n"
msgstr ""
-#: src/readelf.c:2008 src/readelf.c:2198
+#: src/readelf.c:2012 src/readelf.c:2202
#, c-format
msgid ""
"\n"
@@ -4247,7 +4271,7 @@ msgstr[1] ""
#. The .rela.dyn section does not refer to a specific section but
#. instead of section index zero. Do not try to print a section
#. name.
-#: src/readelf.c:2023 src/readelf.c:2213
+#: src/readelf.c:2027 src/readelf.c:2217
#, c-format
msgid ""
"\n"
@@ -4258,29 +4282,29 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2033
+#: src/readelf.c:2037
msgid " Offset Type Value Name\n"
msgstr ""
-#: src/readelf.c:2035
+#: src/readelf.c:2039
msgid " Offset Type Value Name\n"
msgstr ""
-#: src/readelf.c:2088 src/readelf.c:2099 src/readelf.c:2112 src/readelf.c:2133
-#: src/readelf.c:2145 src/readelf.c:2279 src/readelf.c:2291 src/readelf.c:2305
-#: src/readelf.c:2327 src/readelf.c:2340
+#: src/readelf.c:2092 src/readelf.c:2103 src/readelf.c:2116 src/readelf.c:2137
+#: src/readelf.c:2149 src/readelf.c:2283 src/readelf.c:2295 src/readelf.c:2309
+#: src/readelf.c:2331 src/readelf.c:2344
msgid "<INVALID RELOC>"
msgstr ""
-#: src/readelf.c:2223
+#: src/readelf.c:2227
msgid " Offset Type Value Addend Name\n"
msgstr ""
-#: src/readelf.c:2225
+#: src/readelf.c:2229
msgid " Offset Type Value Addend Name\n"
msgstr ""
-#: src/readelf.c:2463
+#: src/readelf.c:2467
#, c-format
msgid ""
"\n"
@@ -4291,40 +4315,40 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2468
+#: src/readelf.c:2472
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2476
+#: src/readelf.c:2480
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: src/readelf.c:2478
+#: src/readelf.c:2482
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: src/readelf.c:2498
+#: src/readelf.c:2502
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr ""
-#: src/readelf.c:2586
+#: src/readelf.c:2590
#, c-format
msgid "bad dynamic symbol"
msgstr ""
-#: src/readelf.c:2668
+#: src/readelf.c:2672
msgid "none"
msgstr "keine"
-#: src/readelf.c:2685
+#: src/readelf.c:2689
msgid "| <unknown>"
msgstr "| <unbekannt>"
-#: src/readelf.c:2716
+#: src/readelf.c:2720
#, c-format
msgid ""
"\n"
@@ -4337,17 +4361,17 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2737
+#: src/readelf.c:2741
#, fuzzy, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Version: %hu Datei: %s Cnt: %hu\n"
-#: src/readelf.c:2750
+#: src/readelf.c:2754
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Name: %s Flags: %s Version: %hu\n"
-#: src/readelf.c:2793
+#: src/readelf.c:2797
#, c-format
msgid ""
"\n"
@@ -4360,18 +4384,18 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2821
+#: src/readelf.c:2825
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr ""
-#: src/readelf.c:2836
+#: src/readelf.c:2840
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr ""
#. Print the header.
-#: src/readelf.c:3097
+#: src/readelf.c:3101
#, c-format
msgid ""
"\n"
@@ -4384,15 +4408,15 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:3125
+#: src/readelf.c:3129
msgid " 0 *local* "
msgstr " 0 *lokal* "
-#: src/readelf.c:3130
+#: src/readelf.c:3134
msgid " 1 *global* "
msgstr " 1 *global* "
-#: src/readelf.c:3172
+#: src/readelf.c:3176
#, c-format
msgid ""
"\n"
@@ -4407,66 +4431,66 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:3194
+#: src/readelf.c:3198
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr ""
-#: src/readelf.c:3196
+#: src/readelf.c:3200
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:3203
+#: src/readelf.c:3207
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:3216
+#: src/readelf.c:3220
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
"\t\t\t unsuccessful lookup: %f\n"
msgstr ""
-#: src/readelf.c:3234 src/readelf.c:3298 src/readelf.c:3364
+#: src/readelf.c:3238 src/readelf.c:3302 src/readelf.c:3368
#, c-format
msgid "cannot get data for section %d: %s"
msgstr ""
-#: src/readelf.c:3242
+#: src/readelf.c:3246
#, fuzzy, c-format
msgid "invalid data in sysv.hash section %d"
msgstr "ungültige .debug_line Sektion"
-#: src/readelf.c:3271
+#: src/readelf.c:3275
#, fuzzy, c-format
msgid "invalid chain in sysv.hash section %d"
msgstr "ungültige .debug_line Sektion"
-#: src/readelf.c:3306
+#: src/readelf.c:3310
#, fuzzy, c-format
msgid "invalid data in sysv.hash64 section %d"
msgstr "ungültige .debug_line Sektion"
-#: src/readelf.c:3337
+#: src/readelf.c:3341
#, fuzzy, c-format
msgid "invalid chain in sysv.hash64 section %d"
msgstr "ungültige .debug_line Sektion"
-#: src/readelf.c:3373
+#: src/readelf.c:3377
#, fuzzy, c-format
msgid "invalid data in gnu.hash section %d"
msgstr "ungültige .debug_line Sektion"
-#: src/readelf.c:3440
+#: src/readelf.c:3444
#, c-format
msgid ""
" Symbol Bias: %u\n"
" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
msgstr ""
-#: src/readelf.c:3529
+#: src/readelf.c:3533
#, c-format
msgid ""
"\n"
@@ -4477,13 +4501,13 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:3543
+#: src/readelf.c:3547
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
msgstr ""
-#: src/readelf.c:3595
+#: src/readelf.c:3606
#, c-format
msgid ""
"\n"
@@ -4491,102 +4515,102 @@ msgid ""
"%#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:3612
+#: src/readelf.c:3623
msgid " Owner Size\n"
msgstr ""
-#: src/readelf.c:3641
+#: src/readelf.c:3647
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
#. Unknown subsection, print and skip.
-#: src/readelf.c:3680
+#: src/readelf.c:3686
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
#. Tag_File
-#: src/readelf.c:3685
+#: src/readelf.c:3691
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " File: %11<PRIu32>\n"
-#: src/readelf.c:3734
+#: src/readelf.c:3740
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3737
+#: src/readelf.c:3743
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3740
+#: src/readelf.c:3746
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3750
+#: src/readelf.c:3756
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3753
+#: src/readelf.c:3759
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3823
+#: src/readelf.c:3829
#, fuzzy, c-format
msgid "sprintf failure"
msgstr "mprotect fehlgeschlagen"
-#: src/readelf.c:4305
+#: src/readelf.c:4311
msgid "empty block"
msgstr ""
-#: src/readelf.c:4308
+#: src/readelf.c:4314
#, c-format
msgid "%zu byte block:"
msgstr ""
-#: src/readelf.c:4786
+#: src/readelf.c:4792
#, c-format
msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n"
msgstr ""
-#: src/readelf.c:4850
+#: src/readelf.c:4859
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr ""
-#: src/readelf.c:4857
+#: src/readelf.c:4866
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr ""
-#: src/readelf.c:4864
+#: src/readelf.c:4873
#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr ""
-#: src/readelf.c:4871
+#: src/readelf.c:4880
#, c-format
msgid "%s %#<PRIx64> used with different attribute %s and %s"
msgstr ""
-#: src/readelf.c:4968
+#: src/readelf.c:4980
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr ""
-#: src/readelf.c:4976
+#: src/readelf.c:4988
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr ""
-#: src/readelf.c:5054
+#: src/readelf.c:5091
#, c-format
msgid ""
"\n"
@@ -4594,79 +4618,79 @@ msgid ""
" [ Code]\n"
msgstr ""
-#: src/readelf.c:5062
+#: src/readelf.c:5099
#, c-format
msgid ""
"\n"
"Abbreviation section at offset %<PRIu64>:\n"
msgstr ""
-#: src/readelf.c:5075
+#: src/readelf.c:5112
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr ""
-#: src/readelf.c:5091
+#: src/readelf.c:5128
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr ""
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6586 src/readelf.c:8323 src/readelf.c:9009 src/readelf.c:9445
-#: src/readelf.c:9690 src/readelf.c:9856 src/readelf.c:10243
-#: src/readelf.c:10303
+#: src/readelf.c:5161 src/readelf.c:5470 src/readelf.c:5637 src/readelf.c:6022
+#: src/readelf.c:6638 src/readelf.c:8375 src/readelf.c:9064 src/readelf.c:9537
+#: src/readelf.c:9788 src/readelf.c:9954 src/readelf.c:10341
+#: src/readelf.c:10401
#, c-format
msgid ""
"\n"
"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:5137
+#: src/readelf.c:5174
#, fuzzy, c-format
msgid "cannot get .debug_addr section data: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9054
+#: src/readelf.c:5274 src/readelf.c:5298 src/readelf.c:5682 src/readelf.c:9109
#, fuzzy, c-format
msgid " Length: %8<PRIu64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9067
+#: src/readelf.c:5276 src/readelf.c:5313 src/readelf.c:5695 src/readelf.c:9122
#, fuzzy, c-format
msgid " DWARF version: %8<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9076
+#: src/readelf.c:5277 src/readelf.c:5322 src/readelf.c:5704 src/readelf.c:9131
#, fuzzy, c-format
msgid " Address size: %8<PRIu64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9086
+#: src/readelf.c:5279 src/readelf.c:5332 src/readelf.c:5714 src/readelf.c:9141
#, fuzzy, c-format
msgid " Segment size: %8<PRIu64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9071 src/readelf.c:10435
+#: src/readelf.c:5317 src/readelf.c:5699 src/readelf.c:9126 src/readelf.c:10533
#, fuzzy, c-format
msgid "Unknown version"
msgstr "unbekannte Version"
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9081
+#: src/readelf.c:5327 src/readelf.c:5540 src/readelf.c:5709 src/readelf.c:9136
#, fuzzy, c-format
msgid "unsupported address size"
msgstr "Kein Adress-Wert"
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9091
+#: src/readelf.c:5338 src/readelf.c:5551 src/readelf.c:5719 src/readelf.c:9146
#, c-format
msgid "unsupported segment size"
msgstr ""
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5391 src/readelf.c:5465
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr ""
-#: src/readelf.c:5369
+#: src/readelf.c:5406
#, c-format
msgid ""
"\n"
@@ -4677,241 +4701,239 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:5400
+#: src/readelf.c:5437
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:5402
+#: src/readelf.c:5439
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
-#: src/readelf.c:5446 src/readelf.c:8350
+#: src/readelf.c:5483 src/readelf.c:8402
#, c-format
msgid ""
"\n"
"Table at offset %zu:\n"
msgstr ""
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6610 src/readelf.c:8361
-#: src/readelf.c:9035
+#: src/readelf.c:5487 src/readelf.c:5663 src/readelf.c:6662 src/readelf.c:8413
+#: src/readelf.c:9090
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr ""
-#: src/readelf.c:5466
+#: src/readelf.c:5503
#, fuzzy, c-format
msgid ""
"\n"
" Length: %6<PRIu64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5478
+#: src/readelf.c:5515
#, fuzzy, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5482
+#: src/readelf.c:5519
#, c-format
msgid "unsupported aranges version"
msgstr ""
-#: src/readelf.c:5493
+#: src/readelf.c:5530
#, fuzzy, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5499
+#: src/readelf.c:5536
#, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr ""
-#: src/readelf.c:5510
+#: src/readelf.c:5547
#, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
"\n"
msgstr ""
-#: src/readelf.c:5565
+#: src/readelf.c:5602
#, c-format
msgid " %zu padding bytes\n"
msgstr ""
-#: src/readelf.c:5609
+#: src/readelf.c:5646
#, fuzzy, c-format
msgid "cannot get .debug_rnglists content: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/readelf.c:5632 src/readelf.c:9041
+#: src/readelf.c:5669 src/readelf.c:9096
#, fuzzy, c-format
msgid ""
"Table at Offset 0x%<PRIx64>:\n"
"\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5687 src/readelf.c:9096
+#: src/readelf.c:5724 src/readelf.c:9151
#, fuzzy, c-format
msgid " Offset entries: %8<PRIu64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5703 src/readelf.c:9112
+#: src/readelf.c:5740 src/readelf.c:9167
#, c-format
msgid " Unknown CU base: "
msgstr ""
-#: src/readelf.c:5705 src/readelf.c:9114
+#: src/readelf.c:5742 src/readelf.c:9169
#, c-format
msgid " CU [%6<PRIx64>] base: "
msgstr ""
-#: src/readelf.c:5711 src/readelf.c:9120
+#: src/readelf.c:5748 src/readelf.c:9175
#, c-format
msgid " Not associated with a CU.\n"
msgstr ""
-#: src/readelf.c:5722 src/readelf.c:9131
+#: src/readelf.c:5759 src/readelf.c:9186
#, c-format
msgid "too many offset entries for unit length"
msgstr ""
-#: src/readelf.c:5726 src/readelf.c:9135
+#: src/readelf.c:5763 src/readelf.c:9190
#, fuzzy, c-format
msgid " Offsets starting at 0x%<PRIx64>:\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5778
+#: src/readelf.c:5815
#, fuzzy, c-format
msgid "invalid range list data"
msgstr "Ungültige Daten"
-#: src/readelf.c:5963 src/readelf.c:9423
+#: src/readelf.c:6000 src/readelf.c:9515
#, c-format
msgid ""
" %zu padding bytes\n"
"\n"
msgstr ""
-#: src/readelf.c:5980
+#: src/readelf.c:6017
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr ""
-#: src/readelf.c:6016 src/readelf.c:9478
+#: src/readelf.c:6053 src/readelf.c:9570
#, c-format
msgid ""
"\n"
" Unknown CU base: "
msgstr ""
-#: src/readelf.c:6018 src/readelf.c:9480
+#: src/readelf.c:6055 src/readelf.c:9572
#, c-format
msgid ""
"\n"
" CU [%6<PRIx64>] base: "
msgstr ""
-#: src/readelf.c:6027 src/readelf.c:9506 src/readelf.c:9532
+#: src/readelf.c:6064 src/readelf.c:9598 src/readelf.c:9624
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:6048 src/readelf.c:9612
-#, c-format
-msgid ""
-" [%6tx] base address\n"
-" "
-msgstr ""
+#: src/readelf.c:6089 src/readelf.c:9708
+#, fuzzy
+msgid "base address"
+msgstr "Außerhalb des Adressbereiches"
-#: src/readelf.c:6056 src/readelf.c:9620
+#: src/readelf.c:6099 src/readelf.c:9718
#, fuzzy, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:6311
+#: src/readelf.c:6359
msgid " <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:6564
+#: src/readelf.c:6616
#, fuzzy, c-format
msgid "cannot get ELF: %s"
msgstr "ELF Kopf konnte nicht ausgelesen werden"
-#: src/readelf.c:6582
+#: src/readelf.c:6634
#, c-format
msgid ""
"\n"
"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:6632
+#: src/readelf.c:6684
#, c-format
msgid ""
"\n"
" [%6tx] Zero terminator\n"
msgstr ""
-#: src/readelf.c:6733 src/readelf.c:6887
+#: src/readelf.c:6785 src/readelf.c:6939
#, fuzzy, c-format
msgid "invalid augmentation length"
msgstr "ungültige Abschnittsausrichtung"
-#: src/readelf.c:6748
+#: src/readelf.c:6800
msgid "FDE address encoding: "
msgstr ""
-#: src/readelf.c:6754
+#: src/readelf.c:6806
msgid "LSDA pointer encoding: "
msgstr ""
-#: src/readelf.c:6864
+#: src/readelf.c:6916
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr ""
-#: src/readelf.c:6871
+#: src/readelf.c:6923
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr ""
-#: src/readelf.c:6908
+#: src/readelf.c:6960
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:6993
+#: src/readelf.c:7045
#, c-format
msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
msgstr ""
-#: src/readelf.c:7003
+#: src/readelf.c:7055
#, c-format
msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
msgstr ""
-#: src/readelf.c:7025
+#: src/readelf.c:7077
#, c-format
msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
msgstr ""
-#: src/readelf.c:7355
+#: src/readelf.c:7407
#, fuzzy, c-format
msgid "invalid file (%<PRId64>): %s"
msgstr "Ungültige Datei"
-#: src/readelf.c:7359
+#: src/readelf.c:7411
#, fuzzy, c-format
msgid "no srcfiles for CU [%<PRIx64>]"
msgstr "unbekannte Form %<PRIx64>"
-#: src/readelf.c:7363
+#: src/readelf.c:7415
#, fuzzy, c-format
msgid "couldn't get DWARF CU: %s"
msgstr "ELF Kopf konnte nicht ausgelesen werden"
-#: src/readelf.c:7676
+#: src/readelf.c:7728
#, c-format
msgid ""
"\n"
@@ -4919,12 +4941,12 @@ msgid ""
" [Offset]\n"
msgstr ""
-#: src/readelf.c:7726
+#: src/readelf.c:7778
#, fuzzy, c-format
msgid "cannot get next unit: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:7745
+#: src/readelf.c:7797
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -4933,7 +4955,7 @@ msgid ""
" Type signature: %#<PRIx64>, Type offset: %#<PRIx64> [%<PRIx64>]\n"
msgstr ""
-#: src/readelf.c:7757
+#: src/readelf.c:7809
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -4941,37 +4963,37 @@ msgid ""
"%<PRIu8>, Offset size: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:7767 src/readelf.c:7930
+#: src/readelf.c:7819 src/readelf.c:7982
#, c-format
msgid " Unit type: %s (%<PRIu8>)"
msgstr ""
-#: src/readelf.c:7794
+#: src/readelf.c:7846
#, c-format
msgid "unknown version (%d) or unit type (%d)"
msgstr ""
-#: src/readelf.c:7823
+#: src/readelf.c:7875
#, c-format
msgid "cannot get DIE offset: %s"
msgstr ""
-#: src/readelf.c:7832
+#: src/readelf.c:7884
#, fuzzy, c-format
msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/readelf.c:7870
+#: src/readelf.c:7922
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr ""
-#: src/readelf.c:7878
+#: src/readelf.c:7930
#, c-format
msgid "cannot get next DIE: %s"
msgstr ""
-#: src/readelf.c:7922
+#: src/readelf.c:7974
#, c-format
msgid ""
" Split compilation unit at offset %<PRIu64>:\n"
@@ -4979,7 +5001,7 @@ msgid ""
"%<PRIu8>, Offset size: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:7974
+#: src/readelf.c:8026
#, c-format
msgid ""
"\n"
@@ -4987,18 +5009,18 @@ msgid ""
"\n"
msgstr ""
-#: src/readelf.c:8306
+#: src/readelf.c:8358
#, fuzzy, c-format
msgid "unknown form: %s"
msgstr "unbekannte Form %<PRIx64>"
-#: src/readelf.c:8337
+#: src/readelf.c:8389
#, c-format
msgid "cannot get line data section data: %s"
msgstr ""
#. Print what we got so far.
-#: src/readelf.c:8439
+#: src/readelf.c:8491
#, c-format
msgid ""
"\n"
@@ -5017,171 +5039,177 @@ msgid ""
"Opcodes:\n"
msgstr ""
-#: src/readelf.c:8461
+#: src/readelf.c:8513
#, fuzzy, c-format
msgid "cannot handle .debug_line version: %u\n"
msgstr "ungültige .debug_line Sektion"
-#: src/readelf.c:8469
+#: src/readelf.c:8521
#, fuzzy, c-format
msgid "cannot handle address size: %u\n"
msgstr "Kein Adress-Wert"
-#: src/readelf.c:8477
+#: src/readelf.c:8529
#, c-format
msgid "cannot handle segment selector size: %u\n"
msgstr ""
-#: src/readelf.c:8487
+#: src/readelf.c:8539
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr ""
-#: src/readelf.c:8502
+#: src/readelf.c:8554
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:8513
+#: src/readelf.c:8565
msgid ""
"\n"
"Directory table:"
msgstr ""
-#: src/readelf.c:8519 src/readelf.c:8596
+#: src/readelf.c:8571 src/readelf.c:8648
#, fuzzy, c-format
msgid " ["
msgstr " %s: %s\n"
-#: src/readelf.c:8590
+#: src/readelf.c:8642
msgid ""
"\n"
"File name table:"
msgstr ""
-#: src/readelf.c:8651
+#: src/readelf.c:8703
msgid " Entry Dir Time Size Name"
msgstr ""
-#: src/readelf.c:8688
+#: src/readelf.c:8742
+msgid ""
+"\n"
+"No line number statements."
+msgstr ""
+
+#: src/readelf.c:8746
msgid ""
"\n"
"Line number statements:"
msgstr ""
-#: src/readelf.c:8711
+#: src/readelf.c:8766
#, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr ""
-#: src/readelf.c:8745
+#: src/readelf.c:8800
#, c-format
msgid " special opcode %u: address+%u = "
msgstr ""
-#: src/readelf.c:8749
+#: src/readelf.c:8804
#, c-format
msgid ", op_index = %u, line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:8752
+#: src/readelf.c:8807
#, c-format
msgid ", line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:8770
+#: src/readelf.c:8825
#, c-format
msgid " extended opcode %u: "
msgstr ""
-#: src/readelf.c:8775
+#: src/readelf.c:8830
msgid " end of sequence"
msgstr ""
-#: src/readelf.c:8793
+#: src/readelf.c:8848
#, fuzzy, c-format
msgid " set address to "
msgstr "Außerhalb des Adressbereiches"
-#: src/readelf.c:8821
+#: src/readelf.c:8876
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
-#: src/readelf.c:8835
+#: src/readelf.c:8890
#, c-format
msgid " set discriminator to %u\n"
msgstr ""
#. Unknown, ignore it.
-#: src/readelf.c:8840
+#: src/readelf.c:8895
#, fuzzy
msgid " unknown opcode"
msgstr "unbekannter Typ"
#. Takes no argument.
-#: src/readelf.c:8852
+#: src/readelf.c:8907
msgid " copy"
msgstr ""
-#: src/readelf.c:8863
+#: src/readelf.c:8918
#, c-format
msgid " advance address by %u to "
msgstr ""
-#: src/readelf.c:8867 src/readelf.c:8928
+#: src/readelf.c:8922 src/readelf.c:8983
#, c-format
msgid ", op_index to %u"
msgstr ""
-#: src/readelf.c:8879
+#: src/readelf.c:8934
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr ""
-#: src/readelf.c:8889
+#: src/readelf.c:8944
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr ""
-#: src/readelf.c:8900
+#: src/readelf.c:8955
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr ""
-#: src/readelf.c:8907
+#: src/readelf.c:8962
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr ""
#. Takes no argument.
-#: src/readelf.c:8913
+#: src/readelf.c:8968
msgid " set basic block flag"
msgstr ""
-#: src/readelf.c:8924
+#: src/readelf.c:8979
#, c-format
msgid " advance address by constant %u to "
msgstr ""
-#: src/readelf.c:8944
+#: src/readelf.c:8999
#, c-format
msgid " advance address by fixed value %u to \n"
msgstr ""
#. Takes no argument.
-#: src/readelf.c:8954
+#: src/readelf.c:9009
msgid " set prologue end flag"
msgstr ""
#. Takes no argument.
-#: src/readelf.c:8959
+#: src/readelf.c:9014
msgid " set epilogue begin flag"
msgstr ""
-#: src/readelf.c:8969
+#: src/readelf.c:9024
#, c-format
msgid " set isa to %u\n"
msgstr ""
@@ -5189,103 +5217,108 @@ 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:8978
+#: src/readelf.c:9033
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:9018
+#: src/readelf.c:9073
#, fuzzy, c-format
msgid "cannot get .debug_loclists content: %s"
msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s"
-#: src/readelf.c:9187
+#: src/readelf.c:9239
+#, c-format
+msgid " <INVALID DATA>\n"
+msgstr ""
+
+#: src/readelf.c:9279
#, fuzzy, c-format
msgid "invalid loclists data"
msgstr "Ungültige Daten"
-#: src/readelf.c:9440
+#: src/readelf.c:9532
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr ""
-#: src/readelf.c:9647 src/readelf.c:10691
+#: src/readelf.c:9745 src/readelf.c:10789
msgid " <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:9702 src/readelf.c:9865
+#: src/readelf.c:9800 src/readelf.c:9963
#, c-format
msgid "cannot get macro information section data: %s"
msgstr ""
-#: src/readelf.c:9782
+#: src/readelf.c:9880
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr ""
-#: src/readelf.c:9805
+#: src/readelf.c:9903
#, c-format
msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
msgstr ""
-#: src/readelf.c:9906
+#: src/readelf.c:10004
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:9918
+#: src/readelf.c:10016
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:9924 src/readelf.c:10811
+#: src/readelf.c:10022 src/readelf.c:10909
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:9931
+#: src/readelf.c:10029
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:9960
+#: src/readelf.c:10058
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:9968
+#: src/readelf.c:10066
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr ""
-#: src/readelf.c:9993
+#: src/readelf.c:10091
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr ""
-#: src/readelf.c:10000
+#: src/readelf.c:10098
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:10012
+#: src/readelf.c:10110
#, c-format
msgid " %<PRIu8> arguments:"
msgstr ""
-#: src/readelf.c:10027
+#: src/readelf.c:10125
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:10228
+#: src/readelf.c:10326
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
-#: src/readelf.c:10272
+#: src/readelf.c:10370
#, c-format
msgid ""
"\n"
@@ -5293,72 +5326,72 @@ msgid ""
" %*s String\n"
msgstr ""
-#: src/readelf.c:10287
+#: src/readelf.c:10385
#, c-format
msgid " *** error, missing string terminator\n"
msgstr ""
-#: src/readelf.c:10316
+#: src/readelf.c:10414
#, fuzzy, c-format
msgid "cannot get .debug_str_offsets section data: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:10415
+#: src/readelf.c:10513
#, fuzzy, c-format
msgid " Length: %8<PRIu64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10417
+#: src/readelf.c:10515
#, fuzzy, c-format
msgid " Offset size: %8<PRIu8>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10431
+#: src/readelf.c:10529
#, fuzzy, c-format
msgid " DWARF version: %8<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10440
+#: src/readelf.c:10538
#, fuzzy, c-format
msgid " Padding: %8<PRIx16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10494
+#: src/readelf.c:10592
#, c-format
msgid ""
"\n"
"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
msgstr ""
-#: src/readelf.c:10596
+#: src/readelf.c:10694
#, c-format
msgid ""
"\n"
"Exception handling table section [%2zu] '.gcc_except_table':\n"
msgstr ""
-#: src/readelf.c:10619
+#: src/readelf.c:10717
#, c-format
msgid " LPStart encoding: %#x "
msgstr ""
-#: src/readelf.c:10631
+#: src/readelf.c:10729
#, c-format
msgid " TType encoding: %#x "
msgstr ""
-#: src/readelf.c:10646
+#: src/readelf.c:10744
#, c-format
msgid " Call site encoding: %#x "
msgstr ""
-#: src/readelf.c:10659
+#: src/readelf.c:10757
msgid ""
"\n"
" Call site table:"
msgstr ""
-#: src/readelf.c:10673
+#: src/readelf.c:10771
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5367,142 +5400,142 @@ msgid ""
" Action: %u\n"
msgstr ""
-#: src/readelf.c:10746
+#: src/readelf.c:10844
#, c-format
msgid "invalid TType encoding"
msgstr ""
-#: src/readelf.c:10773
+#: src/readelf.c:10871
#, c-format
msgid ""
"\n"
"GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
msgstr ""
-#: src/readelf.c:10802
+#: src/readelf.c:10900
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10820
+#: src/readelf.c:10918
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:10827
+#: src/readelf.c:10925
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:10834
+#: src/readelf.c:10932
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:10841
+#: src/readelf.c:10939
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:10848
+#: src/readelf.c:10946
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:10862
+#: src/readelf.c:10960
#, c-format
msgid ""
"\n"
" CU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:10887
+#: src/readelf.c:10985
#, c-format
msgid ""
"\n"
" TU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:10916
+#: src/readelf.c:11014
#, c-format
msgid ""
"\n"
" Address list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:10948
+#: src/readelf.c:11046
#, c-format
msgid ""
"\n"
" Symbol table at offset %#<PRIx32> contains %zu slots:\n"
msgstr ""
-#: src/readelf.c:11086
+#: src/readelf.c:11184
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr ""
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11552 src/readelf.c:12179 src/readelf.c:12290
+#: src/readelf.c:12348
#, c-format
msgid "cannot convert core note data: %s"
msgstr ""
-#: src/readelf.c:11812
+#: src/readelf.c:11915
#, c-format
msgid ""
"\n"
"%*s... <repeats %u more times> ..."
msgstr ""
-#: src/readelf.c:12319
+#: src/readelf.c:12427
msgid " Owner Data size Type\n"
msgstr ""
-#: src/readelf.c:12348
+#: src/readelf.c:12456
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr ""
-#: src/readelf.c:12400
+#: src/readelf.c:12508
#, fuzzy, c-format
msgid "cannot get content of note: %s"
msgstr "Konnte Inhalt von %s: %s nicht lesen"
-#: src/readelf.c:12434
+#: src/readelf.c:12542
#, c-format
msgid ""
"\n"
"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:12457
+#: src/readelf.c:12565
#, c-format
msgid ""
"\n"
"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:12504
+#: src/readelf.c:12612
#, fuzzy, c-format
msgid ""
"\n"
"Section [%zu] '%s' has no data to dump.\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12639 src/readelf.c:12690
#, fuzzy, c-format
msgid "cannot get data for section [%zu] '%s': %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:12536
+#: src/readelf.c:12644
#, c-format
msgid ""
"\n"
"Hex dump of section [%zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:12541
+#: src/readelf.c:12649
#, c-format
msgid ""
"\n"
@@ -5510,21 +5543,21 @@ msgid ""
"%#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:12555
+#: src/readelf.c:12663
#, fuzzy, c-format
msgid ""
"\n"
"Section [%zu] '%s' has no strings to dump.\n"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/readelf.c:12587
+#: src/readelf.c:12695
#, c-format
msgid ""
"\n"
"String section [%zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:12592
+#: src/readelf.c:12700
#, c-format
msgid ""
"\n"
@@ -5532,45 +5565,45 @@ msgid ""
"offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:12641
+#: src/readelf.c:12749
#, c-format
msgid ""
"\n"
"section [%lu] does not exist"
msgstr ""
-#: src/readelf.c:12671
+#: src/readelf.c:12779
#, c-format
msgid ""
"\n"
"section '%s' does not exist"
msgstr ""
-#: src/readelf.c:12728
+#: src/readelf.c:12836
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr ""
-#: src/readelf.c:12731
+#: src/readelf.c:12839
#, c-format
msgid ""
"\n"
"Archive '%s' has no symbol index\n"
msgstr ""
-#: src/readelf.c:12735
+#: src/readelf.c:12843
#, c-format
msgid ""
"\n"
"Index of archive '%s' has %zu entries:\n"
msgstr ""
-#: src/readelf.c:12753
+#: src/readelf.c:12861
#, fuzzy, c-format
msgid "cannot extract member at offset %zu in '%s': %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/readelf.c:12758
+#: src/readelf.c:12866
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr ""
@@ -5633,7 +5666,7 @@ msgstr ""
msgid "%s: file format not recognized"
msgstr ""
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
#, c-format
msgid " (ex %s)"
msgstr ""
@@ -5643,123 +5676,123 @@ msgstr ""
msgid "cannot get section header"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/size.c:582
+#: src/size.c:585
msgid "(TOTALS)\n"
msgstr ""
-#: src/stack.c:482
+#: src/stack.c:487
#, c-format
msgid "-p PID should be a positive process id."
msgstr ""
-#: src/stack.c:488
+#: src/stack.c:493
#, fuzzy, c-format
msgid "Cannot open core file '%s'"
msgstr "Konnte Archiv '%s' nicht öffnen"
-#: src/stack.c:548
+#: src/stack.c:553
#, c-format
msgid "-n MAXFRAMES should be 0 or higher."
msgstr ""
-#: src/stack.c:560
+#: src/stack.c:565
#, c-format
msgid "-e EXEC needs a core given by --core."
msgstr ""
-#: src/stack.c:564
+#: src/stack.c:569
#, c-format
msgid "-1 needs a thread id given by -p."
msgstr ""
-#: src/stack.c:568
+#: src/stack.c:573
#, c-format
msgid "One of -p PID or --core COREFILE should be given."
msgstr ""
-#: src/stack.c:640
+#: src/stack.c:645
#, fuzzy
msgid "Show stack of process PID"
msgstr "Kann Suchbaum nicht erstellen"
-#: src/stack.c:642
+#: src/stack.c:647
msgid "Show stack found in COREFILE"
msgstr ""
-#: src/stack.c:643
+#: src/stack.c:648
msgid "(optional) EXECUTABLE that produced COREFILE"
msgstr ""
-#: src/stack.c:647
+#: src/stack.c:652
#, fuzzy
msgid "Output selection options:"
msgstr "Eingabeauswahloptionen:"
-#: src/stack.c:649
+#: src/stack.c:654
msgid "Additionally show frame activation"
msgstr ""
-#: src/stack.c:651
+#: src/stack.c:656
msgid "Additionally try to lookup DWARF debuginfo name for frame address"
msgstr ""
-#: src/stack.c:654
+#: src/stack.c:659
msgid ""
"Additionally show inlined function frames using DWARF debuginfo if available "
"(implies -d)"
msgstr ""
-#: src/stack.c:656
+#: src/stack.c:661
msgid "Additionally show module file information"
msgstr ""
-#: src/stack.c:658
+#: src/stack.c:663
msgid "Additionally show source file information"
msgstr ""
-#: src/stack.c:660
+#: src/stack.c:665
msgid ""
"Show all additional information (activation, debugname, inlines, module and "
"source)"
msgstr ""
-#: src/stack.c:662
+#: src/stack.c:667
msgid "Do not resolve address to function symbol name"
msgstr ""
-#: src/stack.c:664
+#: src/stack.c:669
msgid "Show raw function symbol names, do not try to demangle names"
msgstr ""
-#: src/stack.c:666
+#: src/stack.c:671
msgid "Show module build-id, load address and pc offset"
msgstr ""
-#: src/stack.c:668
+#: src/stack.c:673
msgid "Show the backtrace of only one thread"
msgstr ""
-#: src/stack.c:670
+#: src/stack.c:675
msgid "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)"
msgstr ""
-#: src/stack.c:672
+#: src/stack.c:677
msgid "Show module memory map with build-id, elf and debug files detected"
msgstr ""
-#: src/stack.c:680
+#: src/stack.c:685
msgid ""
"Print a stack for each thread in a process or core file.\n"
"\n"
"Program exits with return code 0 if all frames were shown without any "
"errors. If some frames were shown, but there were some non-fatal errors, "
"possibly causing an incomplete backtrace, the program exits with return code "
-"1. If no frames could be shown, or a fatal error occured the program exits "
+"1. If no frames could be shown, or a fatal error occurred the program exits "
"with return code 2. If the program was invoked with bad or missing "
"arguments it will exit with return code 64."
msgstr ""
-#: src/stack.c:755
+#: src/stack.c:760
#, c-format
msgid "Couldn't show any frames."
msgstr ""
@@ -5778,7 +5811,7 @@ msgstr ""
#: src/strings.c:69
msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
+"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
"{B,L} = 32-bit"
msgstr ""
@@ -5857,14 +5890,14 @@ msgstr ""
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)"
+"operation is not reversible, needs -f)"
msgstr ""
#: src/strip.c:87
msgid ""
"Similar to --reloc-debug-sections, but resolve all trivial relocations "
"between debug sections in place. No other stripping is performed (operation "
-"is not reversable, incompatible with -f, -g, --remove-comment and --remove-"
+"is not reversible, incompatible with -f, -g, --remove-comment and --remove-"
"section)"
msgstr ""
@@ -5921,22 +5954,22 @@ msgstr ""
msgid "cannot both keep and remove .comment section"
msgstr ""
-#: src/strip.c:574
+#: src/strip.c:481
#, fuzzy, c-format
msgid "bad relocation"
msgstr "Relocations anzeigen"
-#: src/strip.c:726 src/strip.c:750
+#: src/strip.c:747 src/strip.c:771
#, c-format
msgid "cannot stat input file '%s'"
msgstr ""
-#: src/strip.c:740
+#: src/strip.c:761
#, c-format
msgid "while opening '%s'"
msgstr ""
-#: src/strip.c:778
+#: src/strip.c:799
#, c-format
msgid "%s: cannot use -o or -f when stripping archive"
msgstr ""
@@ -5947,263 +5980,263 @@ msgstr ""
#. result = handle_ar (fd, elf, NULL, fname,
#. preserve_dates ? tv : NULL);
#.
-#: src/strip.c:790
+#: src/strip.c:811
#, fuzzy, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: Kein Eintrag %s in dem Archiv!\n"
-#: src/strip.c:1001
+#: src/strip.c:1047
#, c-format
msgid "cannot open EBL backend"
msgstr ""
-#: src/strip.c:1046
+#: src/strip.c:1092
#, fuzzy, c-format
msgid "cannot get number of phdrs"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/strip.c:1060 src/strip.c:1103
+#: src/strip.c:1106 src/strip.c:1149
#, fuzzy, c-format
msgid "cannot create new ehdr for file '%s': %s"
msgstr "neue Datei konnte nicht angelegt werden"
-#: src/strip.c:1070 src/strip.c:1113
+#: src/strip.c:1116 src/strip.c:1159
#, fuzzy, c-format
msgid "cannot create new phdr for file '%s': %s"
msgstr "neue Datei konnte nicht angelegt werden"
-#: src/strip.c:1194
+#: src/strip.c:1240
#, c-format
msgid "illformed file '%s'"
msgstr ""
-#: src/strip.c:1204
+#: src/strip.c:1250
#, fuzzy, c-format
msgid "Cannot remove allocated section '%s'"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/strip.c:1213
+#: src/strip.c:1259
#, fuzzy, c-format
msgid "Cannot both keep and remove section '%s'"
msgstr "Konnte Archiv '%s' nicht öffnen"
-#: src/strip.c:1573 src/strip.c:1688
+#: src/strip.c:1624 src/strip.c:1739
#, c-format
msgid "while generating output file: %s"
msgstr ""
-#: src/strip.c:1637
+#: src/strip.c:1688
#, fuzzy, c-format
msgid "%s: error while updating ELF header: %s"
msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
-#: src/strip.c:1646
+#: src/strip.c:1697
#, fuzzy, c-format
msgid "%s: error while getting shdrstrndx: %s"
msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
-#: src/strip.c:1654 src/strip.c:2535
+#: src/strip.c:1705 src/strip.c:2550
#, fuzzy, c-format
msgid "%s: error updating shdrstrndx: %s"
msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
-#: src/strip.c:1671
+#: src/strip.c:1722
#, c-format
msgid "while preparing output for '%s'"
msgstr ""
-#: src/strip.c:1733 src/strip.c:1796
+#: src/strip.c:1784 src/strip.c:1847
#, c-format
msgid "while create section header section: %s"
msgstr ""
-#: src/strip.c:1742
+#: src/strip.c:1793
#, c-format
msgid "cannot allocate section data: %s"
msgstr ""
-#: src/strip.c:1808
+#: src/strip.c:1859
#, c-format
msgid "while create section header string table: %s"
msgstr ""
-#: src/strip.c:1815
+#: src/strip.c:1866
#, c-format
msgid "no memory to create section header string table"
msgstr ""
-#: src/strip.c:2028
+#: src/strip.c:2079
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr ""
-#: src/strip.c:2451 src/strip.c:2559
+#: src/strip.c:2466 src/strip.c:2574
#, c-format
msgid "while writing '%s': %s"
msgstr ""
-#: src/strip.c:2462
+#: src/strip.c:2477
#, c-format
msgid "while creating '%s'"
msgstr ""
-#: src/strip.c:2485
+#: src/strip.c:2500
#, c-format
msgid "while computing checksum for debug information"
msgstr ""
-#: src/strip.c:2526
+#: src/strip.c:2541
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr ""
-#: src/strip.c:2544
+#: src/strip.c:2559
#, c-format
msgid "%s: error while reading the file: %s"
msgstr ""
-#: src/strip.c:2584 src/strip.c:2604
+#: src/strip.c:2599 src/strip.c:2619
#, fuzzy, c-format
msgid "while writing '%s'"
msgstr "beim Schliessen von '%s'"
-#: src/strip.c:2641 src/strip.c:2648
+#: src/strip.c:2656 src/strip.c:2663
#, c-format
msgid "error while finishing '%s': %s"
msgstr ""
-#: src/strip.c:2665 src/strip.c:2741
+#: src/strip.c:2680 src/strip.c:2756
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr ""
-#: src/unstrip.c:70
+#: src/unstrip.c:66
msgid "Match MODULE against file names, not module names"
msgstr ""
-#: src/unstrip.c:71
+#: src/unstrip.c:67
msgid "Silently skip unfindable files"
msgstr ""
-#: src/unstrip.c:74
+#: src/unstrip.c:70
msgid "Place output into FILE"
msgstr ""
-#: src/unstrip.c:76
+#: src/unstrip.c:72
msgid "Create multiple output files under DIRECTORY"
msgstr ""
-#: src/unstrip.c:77
+#: src/unstrip.c:73
msgid "Use module rather than file names"
msgstr ""
-#: src/unstrip.c:79
+#: src/unstrip.c:75
msgid "Create output for modules that have no separate debug information"
msgstr ""
-#: src/unstrip.c:82
+#: src/unstrip.c:78
msgid "Apply relocations to section contents in ET_REL files"
msgstr ""
-#: src/unstrip.c:84
+#: src/unstrip.c:80
msgid "Only list module and file names, build IDs"
msgstr ""
-#: src/unstrip.c:86
+#: src/unstrip.c:82
msgid "Force combining files even if some ELF headers don't seem to match"
msgstr ""
-#: src/unstrip.c:130
+#: src/unstrip.c:126
#, c-format
msgid "-d option specified twice"
msgstr "Option -d zweimal angegeben"
-#: src/unstrip.c:165
+#: src/unstrip.c:161
#, c-format
msgid "only one of -o or -d allowed"
msgstr "nur entweder -o oder -d erlaubt"
-#: src/unstrip.c:174
+#: src/unstrip.c:170
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr "-n kann nicht mit expliziten Dateien oder -o oder -d verwendet werden"
-#: src/unstrip.c:189
+#: src/unstrip.c:185
#, c-format
msgid "output directory '%s'"
msgstr "Ausgabeverzeichnis '%s'"
-#: src/unstrip.c:198
+#: src/unstrip.c:194
#, c-format
msgid "exactly two file arguments are required"
msgstr "genau zwei Datei-Argumente werden benötigt"
-#: src/unstrip.c:204
+#: src/unstrip.c:200
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr ""
-#: src/unstrip.c:217
+#: src/unstrip.c:213
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr ""
-#: src/unstrip.c:240
+#: src/unstrip.c:236
#, c-format
msgid "cannot create ELF header: %s"
msgstr ""
-#: src/unstrip.c:244
+#: src/unstrip.c:240
#, fuzzy, c-format
msgid "cannot get shdrstrndx:%s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:248 src/unstrip.c:2081
+#: src/unstrip.c:244 src/unstrip.c:2085
#, c-format
msgid "cannot get ELF header: %s"
msgstr ""
-#: src/unstrip.c:258
+#: src/unstrip.c:254
#, fuzzy, c-format
msgid "cannot get new zero section: %s"
msgstr "konnte Versionierungsabschnitt nicht erstellen: %s"
-#: src/unstrip.c:261
+#: src/unstrip.c:257
#, fuzzy, c-format
msgid "cannot update new zero section: %s"
msgstr "konnte Versionierungsabschnitt nicht erstellen: %s"
-#: src/unstrip.c:265
+#: src/unstrip.c:261
#, c-format
msgid "cannot copy ELF header: %s"
msgstr ""
-#: src/unstrip.c:269 src/unstrip.c:2099 src/unstrip.c:2142
+#: src/unstrip.c:265 src/unstrip.c:2103 src/unstrip.c:2146
#, fuzzy, c-format
msgid "cannot get number of program headers: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/unstrip.c:274 src/unstrip.c:2103
+#: src/unstrip.c:270 src/unstrip.c:2107
#, c-format
msgid "cannot create program headers: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/unstrip.c:280
+#: src/unstrip.c:276
#, c-format
msgid "cannot copy program header: %s"
msgstr "konnte Programm-Kopf nicht kopieren: %s"
-#: src/unstrip.c:290
+#: src/unstrip.c:286
#, c-format
msgid "cannot copy section header: %s"
msgstr ""
-#: src/unstrip.c:293 src/unstrip.c:1703
+#: src/unstrip.c:289 src/unstrip.c:1707
#, c-format
msgid "cannot get section data: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:295 src/unstrip.c:1705
+#: src/unstrip.c:291 src/unstrip.c:1709
#, c-format
msgid "cannot copy section data: %s"
msgstr "konnte Abschnittsdaten nicht kopieren: %s"
@@ -6213,260 +6246,260 @@ msgstr "konnte Abschnittsdaten nicht kopieren: %s"
msgid "cannot create directory '%s'"
msgstr "konnte Verzeichnis nicht erstellen: %s"
-#: src/unstrip.c:391 src/unstrip.c:651 src/unstrip.c:685 src/unstrip.c:853
-#: src/unstrip.c:1745
+#: src/unstrip.c:393 src/unstrip.c:655 src/unstrip.c:689 src/unstrip.c:857
+#: src/unstrip.c:1749
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s"
-#: src/unstrip.c:407 src/unstrip.c:654 src/unstrip.c:675 src/unstrip.c:688
-#: src/unstrip.c:1766 src/unstrip.c:1961 src/unstrip.c:1985
+#: src/unstrip.c:409 src/unstrip.c:658 src/unstrip.c:679 src/unstrip.c:692
+#: src/unstrip.c:1770 src/unstrip.c:1965 src/unstrip.c:1989
#, c-format
msgid "cannot update symbol table: %s"
msgstr "konnte Symboltabelle nicht aktualisieren: %s"
-#: src/unstrip.c:417
+#: src/unstrip.c:419
#, c-format
msgid "cannot update section header: %s"
msgstr ""
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:465 src/unstrip.c:479
#, c-format
msgid "cannot update relocation: %s"
msgstr ""
-#: src/unstrip.c:574
+#: src/unstrip.c:578
#, c-format
msgid "cannot get symbol version: %s"
msgstr ""
-#: src/unstrip.c:587
+#: src/unstrip.c:591
#, c-format
msgid "unexpected section type in [%zu] with sh_link to symtab"
msgstr ""
-#: src/unstrip.c:842
+#: src/unstrip.c:846
#, fuzzy, c-format
msgid "cannot get symbol section data: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:844
+#: src/unstrip.c:848
#, fuzzy, c-format
msgid "cannot get string section data: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:861
+#: src/unstrip.c:865
#, fuzzy, c-format
msgid "invalid string offset in symbol [%zu]"
msgstr "ungültiger Offset %zu für Symbol %s"
-#: src/unstrip.c:1019 src/unstrip.c:1423
+#: src/unstrip.c:1023 src/unstrip.c:1427
#, fuzzy, c-format
msgid "cannot read section [%zu] name: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:1034
+#: src/unstrip.c:1038
#, fuzzy, c-format
msgid "bad sh_link for group section: %s"
msgstr "ungültige .debug_line Sektion"
-#: src/unstrip.c:1040
+#: src/unstrip.c:1044
#, fuzzy, c-format
msgid "couldn't get shdr for group section: %s"
msgstr "konnte Versionierungsabschnitt nicht erstellen: %s"
-#: src/unstrip.c:1045
+#: src/unstrip.c:1049
#, fuzzy, c-format
msgid "bad data for group symbol section: %s"
msgstr "ungültige .debug_line Sektion"
-#: src/unstrip.c:1051
+#: src/unstrip.c:1055
#, fuzzy, c-format
msgid "couldn't get symbol for group section: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/unstrip.c:1056
+#: src/unstrip.c:1060
#, fuzzy, c-format
msgid "bad symbol name for group section: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/unstrip.c:1098 src/unstrip.c:1117 src/unstrip.c:1155
+#: src/unstrip.c:1102 src/unstrip.c:1121 src/unstrip.c:1159
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr ""
-#: src/unstrip.c:1135
+#: src/unstrip.c:1139
#, c-format
msgid "overflow with shnum = %zu in '%s' section"
msgstr ""
-#: src/unstrip.c:1146
+#: src/unstrip.c:1150
#, c-format
msgid "invalid contents in '%s' section"
msgstr ""
-#: src/unstrip.c:1202 src/unstrip.c:1549
+#: src/unstrip.c:1206 src/unstrip.c:1553
#, fuzzy, c-format
msgid "cannot find matching section for [%zu] '%s'"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:1327 src/unstrip.c:1343 src/unstrip.c:1629 src/unstrip.c:1920
+#: src/unstrip.c:1331 src/unstrip.c:1347 src/unstrip.c:1633 src/unstrip.c:1924
#, c-format
msgid "cannot add section name to string table: %s"
msgstr ""
-#: src/unstrip.c:1352
+#: src/unstrip.c:1356
#, c-format
msgid "cannot update section header string table data: %s"
msgstr ""
-#: src/unstrip.c:1381 src/unstrip.c:1385
+#: src/unstrip.c:1385 src/unstrip.c:1389
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
-#: src/unstrip.c:1389 src/unstrip.c:1393 src/unstrip.c:1644
+#: src/unstrip.c:1393 src/unstrip.c:1397 src/unstrip.c:1648
#, c-format
msgid "cannot get section count: %s"
msgstr ""
-#: src/unstrip.c:1396
+#: src/unstrip.c:1400
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
-#: src/unstrip.c:1400
+#: src/unstrip.c:1404
#, c-format
msgid "no sections in stripped file"
msgstr ""
-#: src/unstrip.c:1471 src/unstrip.c:1564
+#: src/unstrip.c:1475 src/unstrip.c:1568
#, c-format
msgid "cannot read section header string table: %s"
msgstr ""
-#: src/unstrip.c:1623
+#: src/unstrip.c:1627
#, c-format
msgid "cannot add new section: %s"
msgstr ""
-#: src/unstrip.c:1753
+#: src/unstrip.c:1757
#, fuzzy, c-format
msgid "symbol [%zu] has invalid section index"
msgstr "ungültiger Abschnittsindex"
-#: src/unstrip.c:1785
+#: src/unstrip.c:1789
#, fuzzy, c-format
msgid "group has invalid section index [%zd]"
msgstr "ungültiger Abschnittsindex"
-#: src/unstrip.c:2060
+#: src/unstrip.c:2064
#, fuzzy, c-format
msgid "cannot read section data: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:2089
+#: src/unstrip.c:2093
#, c-format
msgid "cannot update ELF header: %s"
msgstr ""
-#: src/unstrip.c:2113
+#: src/unstrip.c:2117
#, c-format
msgid "cannot update program header: %s"
msgstr "konnte Programm-Kopf nicht aktualisieren: %s"
-#: src/unstrip.c:2118 src/unstrip.c:2200
+#: src/unstrip.c:2122 src/unstrip.c:2205
#, c-format
msgid "cannot write output file: %s"
msgstr ""
-#: src/unstrip.c:2169
+#: src/unstrip.c:2173
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:2172
+#: src/unstrip.c:2176
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:2191 src/unstrip.c:2242 src/unstrip.c:2254 src/unstrip.c:2340
+#: src/unstrip.c:2196 src/unstrip.c:2247 src/unstrip.c:2259 src/unstrip.c:2345
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr ""
-#: src/unstrip.c:2233
+#: src/unstrip.c:2238
msgid "WARNING: "
msgstr ""
-#: src/unstrip.c:2235
+#: src/unstrip.c:2240
msgid ", use --force"
msgstr ""
-#: src/unstrip.c:2258
+#: src/unstrip.c:2263
msgid "ELF header identification (e_ident) different"
msgstr ""
-#: src/unstrip.c:2261
+#: src/unstrip.c:2266
msgid "ELF header type (e_type) different"
msgstr ""
-#: src/unstrip.c:2264
+#: src/unstrip.c:2269
msgid "ELF header machine type (e_machine) different"
msgstr ""
-#: src/unstrip.c:2267
+#: src/unstrip.c:2272
msgid "stripped program header (e_phnum) smaller than unstripped"
msgstr ""
-#: src/unstrip.c:2297
+#: src/unstrip.c:2302
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2301
+#: src/unstrip.c:2306
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2316
+#: src/unstrip.c:2321
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2320
+#: src/unstrip.c:2325
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2333
+#: src/unstrip.c:2338
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr ""
-#: src/unstrip.c:2364
+#: src/unstrip.c:2369
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2497
+#: src/unstrip.c:2501
#, c-format
msgid "no matching modules found"
msgstr "kein passendes Modul gefunden"
-#: src/unstrip.c:2506
+#: src/unstrip.c:2510
#, c-format
msgid "matched more than one module"
msgstr "mehr als ein passendes Modul"
-#: src/unstrip.c:2550
+#: src/unstrip.c:2554
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
msgstr ""
-#: src/unstrip.c:2551
+#: src/unstrip.c:2555
msgid ""
"Combine stripped files with separate symbols and debug information.\n"
"\n"
@@ -6498,11 +6531,11 @@ msgstr ""
msgid "Run executable"
msgstr ""
-#: tests/dwflmodtest.c:213
+#: tests/dwflmodtest.c:209
msgid "Additionally show function names"
msgstr ""
-#: tests/dwflmodtest.c:214
+#: tests/dwflmodtest.c:210
msgid "Show instances of inlined functions"
msgstr ""
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
deleted file mode 100644
index fedb6a06..00000000
--- a/po/en@boldquot.header
+++ /dev/null
@@ -1,25 +0,0 @@
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
-#
-# This catalog furthermore displays the text between the quotation marks in
-# bold face, assuming the VT100/XTerm escape sequences.
-#
diff --git a/po/en@quot.header b/po/en@quot.header
deleted file mode 100644
index a9647fc3..00000000
--- a/po/en@quot.header
+++ /dev/null
@@ -1,22 +0,0 @@
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
-#
diff --git a/po/es.po b/po/es.po
index 0d32a5de..bdfcc14b 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: 2019-11-26 09:48+0100\n"
+"POT-Creation-Date: 2021-02-05 21:10+0100\n"
"PO-Revision-Date: 2011-01-10 15:17-0300\n"
"Last-Translator: Claudio Rodrigo Pereyra Diaz <claudiorodrigo@pereyradiaz."
"com.ar>\n"
@@ -57,8 +57,8 @@ msgstr ""
"garantía, ni siquiera para SU COMERCIALIZACIÓN o PARA SER USADO CON UN FIN "
"DETERMINADO.\n"
-#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: lib/xmalloc.c:48 lib/xmalloc.c:61 lib/xmalloc.c:73 src/readelf.c:3453
+#: src/readelf.c:11501 src/unstrip.c:312 src/unstrip.c:2398 src/unstrip.c:2603
#, c-format
msgid "memory exhausted"
msgstr "memoria agotada"
@@ -221,7 +221,7 @@ msgstr "versión DWARF inválida"
msgid "invalid directory index"
msgstr "Ãndice de directorio inválido"
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:72
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73
msgid "address out of range"
msgstr "dirección fuera de rango"
@@ -252,7 +252,7 @@ msgstr "Ãndice de línea inválido"
msgid "invalid address range index"
msgstr "Ãndice de dirección de rango inválido"
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:73
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:74
msgid "no matching address range"
msgstr "dirección de rango no coincidente"
@@ -300,23 +300,23 @@ msgstr "código operativo desconocido "
msgid ".debug_addr section missing"
msgstr ".debug_ranges section faltante"
-#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2540
+#: libdwfl/argp-std.c:47 src/stack.c:643 src/unstrip.c:2544
msgid "Input selection options:"
msgstr "Opciones de selección de entrada:"
-#: libdwfl/argp-std.c:51
+#: libdwfl/argp-std.c:48
msgid "Find addresses in FILE"
msgstr "Hallar direcciones en FICHERO"
-#: libdwfl/argp-std.c:53
+#: libdwfl/argp-std.c:50
msgid "Find addresses from signatures found in COREFILE"
msgstr "Buscar direcciones desde firmas encontradas en COREFILE"
-#: libdwfl/argp-std.c:55
+#: libdwfl/argp-std.c:52
msgid "Find addresses in files mapped into process PID"
msgstr "Busca direcciones en archivos mapeados sobre procesos PID"
-#: libdwfl/argp-std.c:57
+#: libdwfl/argp-std.c:54
msgid ""
"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
"format"
@@ -324,46 +324,46 @@ msgstr ""
"Busca direcciones en archivos asignados como leídos desde FILE en formato "
"Linux /proc/PID/maps"
-#: libdwfl/argp-std.c:59
+#: libdwfl/argp-std.c:56
msgid "Find addresses in the running kernel"
msgstr "Busca direcciones en el kernel que está ejecutándose"
-#: libdwfl/argp-std.c:61
+#: libdwfl/argp-std.c:58
msgid "Kernel with all modules"
msgstr "Kernel con todos los módulos"
-#: libdwfl/argp-std.c:63 src/stack.c:645
+#: libdwfl/argp-std.c:60 src/stack.c:650
msgid "Search path for separate debuginfo files"
msgstr "Ruta de búsqueda para archivos debugingfo independientes"
-#: libdwfl/argp-std.c:164
+#: libdwfl/argp-std.c:161
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:237
+#: libdwfl/argp-std.c:234
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:241
+#: libdwfl/argp-std.c:238
msgid "cannot find kernel modules"
msgstr "no se pueden hallar módulos de kernel"
-#: libdwfl/argp-std.c:258
+#: libdwfl/argp-std.c:255
msgid "cannot find kernel or modules"
msgstr "imposible encontrar kernel o módulos"
-#: libdwfl/argp-std.c:297
+#: libdwfl/argp-std.c:294
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "No se puede leer archivo core ELF: %s"
-#: libdwfl/argp-std.c:320
+#: libdwfl/argp-std.c:317
#, fuzzy
msgid "Not enough memory"
msgstr "memoria agotada"
-#: libdwfl/argp-std.c:330
+#: libdwfl/argp-std.c:327
msgid "No modules recognized in core file"
msgstr "No hay módulos reconocidos en el archivo core"
@@ -396,130 +396,135 @@ msgid "LZMA decompression failed"
msgstr "falló la descompresión LZMA"
#: libdwfl/libdwflP.h:61
+#, fuzzy
+msgid "zstd decompression failed"
+msgstr "falló la descompresión gzip"
+
+#: libdwfl/libdwflP.h:62
msgid "no support library found for machine"
msgstr "no se ha encontrado una biblioteca de soporte para la máquina"
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:63
msgid "Callbacks missing for ET_REL file"
msgstr "No se encuentran rellamadas para el archivo ET_REL"
-#: libdwfl/libdwflP.h:63
+#: libdwfl/libdwflP.h:64
msgid "Unsupported relocation type"
msgstr "Tipo de reubicación no soportada"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:65
msgid "r_offset is bogus"
msgstr "r_offset se encuentra inutilizable"
-#: libdwfl/libdwflP.h:65 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:66 libelf/elf_error.c:115 libelf/elf_error.c:175
msgid "offset out of range"
msgstr "desplazamiento fuera de rango"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:67
msgid "relocation refers to undefined symbol"
msgstr "la reubicación hace referencia a un símbolo no definido"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:68
msgid "Callback returned failure"
msgstr "La rellamada devolvió un fallo"
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:69
msgid "No DWARF information found"
msgstr "No se ha encontrado una información DWARF"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
msgid "No symbol table found"
msgstr "No se ha encontrado una tabla simbólica"
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
msgid "No ELF program headers"
msgstr "No existen encabezados de programa ELF"
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
msgid "address range overlaps an existing module"
msgstr "el rango de dirección se superpone con un módulo existente"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
msgid "image truncated"
msgstr "imagen truncada"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:76
msgid "ELF file opened"
msgstr "Archivo ELF abierto"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:77
msgid "not a valid ELF file"
msgstr "no es un archivo ELF válido"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
msgid "cannot handle DWARF type description"
msgstr "no es posible manipular tipo de descripción DWARF"
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
msgid "ELF file does not match build ID"
msgstr "El archivo ELF no coincide con el ID construido"
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
#, fuzzy
msgid "corrupt .gnu.prelink_undo section data"
msgstr "no se puede leer sección '.gnu.prelink_undo': %s"
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
msgid "Internal error due to ebl"
msgstr ""
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
msgid "Missing data in core file"
msgstr ""
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
#, fuzzy
msgid "Invalid register"
msgstr "Parámetro inválido"
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
msgid "Error reading process memory"
msgstr ""
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
msgid "Couldn't find architecture of any ELF"
msgstr ""
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
msgid "Error parsing /proc filesystem"
msgstr ""
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
#, fuzzy
msgid "Invalid DWARF"
msgstr "DWARF inválido"
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
msgid "Unsupported DWARF"
msgstr ""
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
msgid "Unable to find more threads"
msgstr ""
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
msgid "Dwfl already has attached state"
msgstr ""
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
msgid "Dwfl has no attached state"
msgstr ""
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
msgid "Unwinding not supported for this architecture"
msgstr ""
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
#, fuzzy
msgid "Invalid argument"
msgstr "Parámetro inválido"
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
#, fuzzy
msgid "Not an ET_CORE ELF file"
msgstr "no es un archivo ELF válido"
@@ -531,7 +536,7 @@ msgstr "No hay segundo plano (Backend)"
#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
msgid "<unknown>"
msgstr "<desconocido>"
@@ -591,7 +596,7 @@ msgstr " Build ID: "
msgid " Linker version: %.*s\n"
msgstr " Versión del Enlazador: %.*s\n"
-#: libebl/eblobjnote.c:571
+#: libebl/eblobjnote.c:638
#, c-format
msgid " OS: %s, ABI: "
msgstr " OS: %s, ABI: "
@@ -625,7 +630,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:6166
+#: libelf/elf_error.c:87 src/readelf.c:6209
#, c-format
msgid "invalid encoding"
msgstr "codificación inválida"
@@ -711,8 +716,8 @@ msgstr "no coinciden los datos/scn"
msgid "invalid section header"
msgstr "encabezamiento de sección inválida"
-#: libelf/elf_error.c:191 src/readelf.c:9914 src/readelf.c:10514
-#: src/readelf.c:10615 src/readelf.c:10797
+#: libelf/elf_error.c:191 src/readelf.c:10012 src/readelf.c:10612
+#: src/readelf.c:10713 src/readelf.c:10895
#, c-format
msgid "invalid data"
msgstr "datos inválidos"
@@ -877,12 +882,12 @@ msgstr "Sintaxis de sección requiere exactamente un módulo"
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr "Compensación %#<PRIxMAX> se encuentra fuera de sección '%s'"
-#: src/addr2line.c:632
+#: src/addr2line.c:652
#, c-format
msgid "cannot find symbol '%s'"
msgstr "no se puede encontrar símbolo '%s'"
-#: src/addr2line.c:637
+#: src/addr2line.c:657
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr "compensación %#<PRIxMAX> se encuentra fuera de contenido de '%s'"
@@ -1051,12 +1056,12 @@ msgstr "no sepuede stat el archivo '%s'"
msgid "no entry %s in archive\n"
msgstr "no hay entrada %s en archivo\n"
-#: src/ar.c:472 src/ar.c:923 src/ar.c:1127
+#: src/ar.c:472 src/ar.c:927 src/ar.c:1134
#, c-format
msgid "cannot create hash table"
msgstr "Falló al crear la tabla de dispersión"
-#: src/ar.c:479 src/ar.c:930 src/ar.c:1136
+#: src/ar.c:479 src/ar.c:934 src/ar.c:1143
#, c-format
msgid "cannot insert into hash table"
msgstr "no sepuede insertar en tabla de dispersión"
@@ -1096,67 +1101,67 @@ msgstr "No puede cambiar tiempo de modificación de %s"
msgid "cannot rename temporary file to %.*s"
msgstr "no sepuede renombrar fichero temporal para %.*s"
-#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222
+#: src/ar.c:764 src/ar.c:1019 src/ar.c:1423 src/ranlib.c:222
#, c-format
msgid "cannot create new file"
msgstr "no sepuede crear fichero nuevo"
-#: src/ar.c:1218
+#: src/ar.c:1225
#, c-format
msgid "position member %s not found"
msgstr "no se encuentra miembro de posición %s "
-#: src/ar.c:1228
+#: src/ar.c:1235
#, c-format
msgid "%s: no entry %s in archive!\n"
msgstr "%s: ¡no hay entrada %s en archive!\n"
-#: src/ar.c:1257 src/objdump.c:241
+#: src/ar.c:1264 src/objdump.c:241
#, c-format
msgid "cannot open %s"
msgstr "no sepuede abrir %s"
-#: src/ar.c:1262
+#: src/ar.c:1269
#, c-format
msgid "cannot stat %s"
msgstr "no sepuede efectuar stat %s"
-#: src/ar.c:1268
+#: src/ar.c:1275
#, c-format
msgid "%s is no regular file"
msgstr " %s no es un fichero ordinario "
-#: src/ar.c:1281
+#: src/ar.c:1288
#, c-format
msgid "cannot get ELF descriptor for %s: %s\n"
msgstr "no sepuede obtener descriptor ELF para %s: %s\n"
-#: src/ar.c:1301
+#: src/ar.c:1308
#, c-format
msgid "cannot read %s: %s"
msgstr "no sepuede leer %s: %s"
-#: src/ar.c:1476
+#: src/ar.c:1483
#, fuzzy, c-format
msgid "cannot represent ar_date"
msgstr "no pueden copiar datos de sección: %s"
-#: src/ar.c:1482
+#: src/ar.c:1489
#, fuzzy, c-format
msgid "cannot represent ar_uid"
msgstr "no pueden copiar datos de sección: %s"
-#: src/ar.c:1488
+#: src/ar.c:1495
#, fuzzy, c-format
msgid "cannot represent ar_gid"
msgstr "no pueden copiar datos de sección: %s"
-#: src/ar.c:1494
+#: src/ar.c:1501
#, fuzzy, c-format
msgid "cannot represent ar_mode"
msgstr "no se puede obtener encabezamiento de sección\n"
-#: src/ar.c:1500
+#: src/ar.c:1507
#, fuzzy, c-format
msgid "cannot represent ar_size"
msgstr "no sepuede abrir %s"
@@ -1169,7 +1174,7 @@ msgstr ""
msgid "Use actual uid, gid, and date in archive members."
msgstr ""
-#: src/arlib-argp.c:65
+#: src/arlib-argp.c:63
#, c-format
msgid "%s (default)"
msgstr ""
@@ -1381,8 +1386,8 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr "Valor inválido '%s' para parámetro --gaps"
#: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
-#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2189 src/unstrip.c:2218
+#: src/size.c:272 src/strings.c:185 src/strip.c:1030 src/strip.c:1067
+#: src/unstrip.c:2194 src/unstrip.c:2223
#, c-format
msgid "cannot open '%s'"
msgstr "Imposible abrir '%s'"
@@ -1412,7 +1417,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:308 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:117
#, c-format
msgid "-o option specified twice"
msgstr "opción -o especificada dos veces"
@@ -1529,7 +1534,7 @@ msgstr "error al cerrar el descriptor ELF: %s\n"
msgid "No errors"
msgstr "No hay errores"
-#: src/elflint.c:219 src/readelf.c:575
+#: src/elflint.c:219 src/readelf.c:577
msgid "Missing file name.\n"
msgstr "Falta el nombre de archivo.\n"
@@ -1690,14 +1695,14 @@ msgstr ""
"sección [%2d] '%s': el grupo de sección [%2zu] '%s' no precede al miembro de "
"grupo\n"
-#: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651
-#: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095
-#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431
+#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
+#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
+#: src/elflint.c:3254 src/elflint.c:3444 src/elflint.c:4456
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "Sección [%2d] '%s': No se pueden obtener datos de sección\n"
-#: src/elflint.c:623 src/elflint.c:1658
+#: src/elflint.c:623 src/elflint.c:1662
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1721,174 +1726,186 @@ msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr ""
"sección [%2u] '%s': el tamaño de la entrada no coincide con ElfXX_Sym\n"
-#: src/elflint.c:667
+#: src/elflint.c:662
+#, fuzzy, c-format
+msgid ""
+"section [%2u] '%s': number of local entries in 'st_info' larger than table "
+"size\n"
+msgstr ""
+"Sección [%2d] '%s': no hay entradas de nota definidas para el tipo de "
+"archivo\n"
+
+#: src/elflint.c:671
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "Sección [%2d] '%s': no se puede obtener símbolo %d: %s\n"
-#: src/elflint.c:672 src/elflint.c:675 src/elflint.c:678 src/elflint.c:681
-#: src/elflint.c:684 src/elflint.c:687
+#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
+#: src/elflint.c:688 src/elflint.c:691
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "Sección [%2d] '%s': '%s' en la entrada zeroth no es cero\n"
-#: src/elflint.c:690
+#: src/elflint.c:694
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "sección [%2d] '%s': XINDEX en la entrada zeroth no es cero\n"
-#: src/elflint.c:700
+#: src/elflint.c:704
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "sección [%2d] '%s': no es posible obtener el símbolo %zu: %s\n"
-#: src/elflint.c:709
+#: src/elflint.c:713
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "sección [%2d] '%s': símbolo %zu: valor de nombre inválido\n"
-#: src/elflint.c:724
-#, c-format
+#: src/elflint.c:728
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
+"section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
"section index section\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: el índice de sección es demasiado extenso, "
"pero no la sección extendida de la sección de índice\n"
-#: src/elflint.c:730
-#, c-format
+#: src/elflint.c:734
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
+"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
+"in st_shndx (%<PRIu32>)\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: XINDEX es utilizado para índice que pueda "
"caber en st_shndx (%<PRIu32>)\n"
#. || sym->st_shndx > SHN_HIRESERVE always false
-#: src/elflint.c:742
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
+#: src/elflint.c:746
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
msgstr "sección [%2d] '%s': símbolo %zu: índice de sección inválido\n"
-#: src/elflint.c:750
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
+#: src/elflint.c:754
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
msgstr "sección [%2d] '%s': símbolo %zu: tipo desconocido\n"
-#: src/elflint.c:756
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
+#: src/elflint.c:760
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
msgstr "sección [%2d] '%s': símbolo %zu: asociación de símbolo desconocida\n"
-#: src/elflint.c:761
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
+#: src/elflint.c:765
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
msgstr "Sección [%2d] '%s': símbolo %zu: símbolo único no de tipo de objeto\n"
-#: src/elflint.c:769
-#, c-format
+#: src/elflint.c:773
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
+"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
+"files\n"
msgstr ""
"sección [%2d] '%s': símbolo %zu: COMMON solo es permitido en archivos "
"realojables\n"
-#: src/elflint.c:773
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
+#: src/elflint.c:777
+#, fuzzy, c-format
+msgid ""
+"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: símbolos locales COMMON no tienen sentido\n"
-#: src/elflint.c:777
-#, c-format
+#: src/elflint.c:781
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
+"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: función en sección COMMON no tiene sentido\n"
-#: src/elflint.c:828
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
+#: src/elflint.c:832
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
msgstr "sección [%2d] '%s': símbolo %zu: st_value fuera de límites\n"
-#: src/elflint.c:834 src/elflint.c:859 src/elflint.c:908
-#, c-format
+#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
+"section [%2d] '%s'\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu no se ajusta totalmente en la sección [%2d] "
"'%s'\n"
-#: src/elflint.c:843
-#, c-format
+#: src/elflint.c:847
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
+"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
+"have SHF_TLS flag set\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: sección de referencia [%2d] '%s' no tiene "
"establecida bandera SHF_TLS\n"
-#: src/elflint.c:853 src/elflint.c:901
-#, c-format
+#: src/elflint.c:857 src/elflint.c:905
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
+"section [%2d] '%s'\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: st_value fuera de límites de sección de "
"referencia [%2d] '%s'\n"
-#: src/elflint.c:880
-#, c-format
+#: src/elflint.c:884
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
+"entry\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: símbolo TLS, pero no hay entrada de "
"programa TLS\n"
-#: src/elflint.c:886
+#: src/elflint.c:890
#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but couldn't get TLS program "
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
"header entry\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: símbolo TLS, pero no hay entrada de "
"programa TLS\n"
-#: src/elflint.c:894
-#, c-format
+#: src/elflint.c:898
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
-"'%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
+"[%2d] '%s'\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: st_value falta sección de referencia [%2d] "
"'%s'\n"
-#: src/elflint.c:921
-#, c-format
+#: src/elflint.c:925
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
+"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
"sh_info\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: símbolo local fuera del rango descrito en "
"sh_info\n"
-#: src/elflint.c:928
-#, c-format
+#: src/elflint.c:932
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
+"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
+"described in sh_info\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: símbolo non-local fuera del rango descrito "
"en sh_info\n"
-#: src/elflint.c:935
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
+#: src/elflint.c:939
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
msgstr "Sección [%2d] '%s': símbolo %zu: símbolo de sección non-local\n"
-#: src/elflint.c:985
+#: src/elflint.c:989
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1897,7 +1914,7 @@ msgstr ""
"Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ se refiere a sección "
"errada [%2d]\n"
-#: src/elflint.c:992
+#: src/elflint.c:996
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1909,7 +1926,7 @@ msgstr ""
#. This test is more strict than the psABIs which
#. usually allow the symbol to be in the middle of
#. the .got section, allowing negative offsets.
-#: src/elflint.c:1008
+#: src/elflint.c:1012
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1918,7 +1935,7 @@ msgstr ""
"Sección [%2d] '%s': valor del símbolo _GLOBAL_OFFSET_TABLE_ %#<PRIx64> no "
"coincide con dirección de sección %s %#<PRIx64>\n"
-#: src/elflint.c:1015
+#: src/elflint.c:1019
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1927,7 +1944,7 @@ msgstr ""
"Sección [%2d] '%s': tamaño de símbolo _GLOBAL_OFFSET_TABLE_ %<PRIu64> no "
"coincide con tamaño de sección %s %<PRIu64>\n"
-#: src/elflint.c:1023
+#: src/elflint.c:1027
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1936,7 +1953,7 @@ msgstr ""
"Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ presente, pero no. sección "
"got\n"
-#: src/elflint.c:1039
+#: src/elflint.c:1043
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1945,7 +1962,7 @@ msgstr ""
"sección [%2d] '%s': Valor de símbolo _DYNAMIC_ %#<PRIx64> no coincide con la "
"dirección de segmento%#<PRIx64>\n"
-#: src/elflint.c:1046
+#: src/elflint.c:1050
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1954,38 +1971,38 @@ msgstr ""
"Sección [%2d] '%s': tamaño de símbolo _DYNAMIC %<PRIu64> no coincide con "
"tamaño de segmento %<PRIu64>\n"
-#: src/elflint.c:1059
-#, c-format
+#: src/elflint.c:1063
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
+"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
"default visibility\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: símbolo en tabla de símbolos dinámicos sin "
"visibilidad predeterminada\n"
-#: src/elflint.c:1063
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
+#: src/elflint.c:1067
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: bit desconocido establecido en st_other\n"
-#: src/elflint.c:1101
+#: src/elflint.c:1105
#, fuzzy, c-format
msgid "section [%2d] '%s': cannot get section data.\n"
msgstr "Sección [%2d] '%s': No se pueden obtener datos de sección\n"
-#: src/elflint.c:1117
+#: src/elflint.c:1121
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "Sección [%2d] '%s': DT_RELCOUNT utilizada para esta sección RELA\n"
-#: src/elflint.c:1128 src/elflint.c:1181
+#: src/elflint.c:1132 src/elflint.c:1185
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
"Sección [%2d] '%s': valor DT_RELCOUNT %d demasiado alto para esta sección\n"
-#: src/elflint.c:1153 src/elflint.c:1206
+#: src/elflint.c:1157 src/elflint.c:1210
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1994,7 +2011,7 @@ msgstr ""
"Sección [%2d] '%s': reubicaciones relativas después de que el %d de índice "
"haya sido especificado por DT_RELCOUNT\n"
-#: src/elflint.c:1159 src/elflint.c:1212
+#: src/elflint.c:1163 src/elflint.c:1216
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -2003,50 +2020,50 @@ msgstr ""
"Sección [%2d] '%s': reubicación no-relativa en %zu de índice; DT_RELCOUNT "
"especificado %d reubicaciones relativas\n"
-#: src/elflint.c:1171
+#: src/elflint.c:1175
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "sección [%2d] '%s': DT_RELACOUNT utilizado para esta sección REL\n"
-#: src/elflint.c:1254
+#: src/elflint.c:1258
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "Sección [%2d] '%s': índice de sección de destino inválido\n"
-#: src/elflint.c:1266
+#: src/elflint.c:1270
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "Sección [%2d] '%s': tipo de sección de destino inválido\n"
-#: src/elflint.c:1274
+#: src/elflint.c:1278
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "Sección [%2d] '%s': sh_info debe ser cero\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1286
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': no relocations for merge-able string sections possible\n"
msgstr ""
"Sección [%2d] '%s': no reubicaciones para secciones de fusión posibles\n"
-#: src/elflint.c:1290
+#: src/elflint.c:1294
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
"Sección [%2d] '%s': tamaño de entrada de sección no coincide con ElfXX_Rela\n"
-#: src/elflint.c:1350
+#: src/elflint.c:1354
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr "Reubicación de bandera pero no hay segmento de sólo lectura\n"
-#: src/elflint.c:1377
+#: src/elflint.c:1381
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "Sección [%2d] '%s': reubicación %zu: tipo inválido\n"
-#: src/elflint.c:1385
+#: src/elflint.c:1389
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -2055,12 +2072,12 @@ msgstr ""
"Sección [%2d] '%s': reubicación %zu: tipo de reubicación inválido para el "
"tipo de archivo\n"
-#: src/elflint.c:1393
+#: src/elflint.c:1397
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr "Sección [%2d] '%s': reubicación %zu: índice de símbolo inválido\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1415
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -2069,12 +2086,12 @@ msgstr ""
"Sección [%2d] '%s': reubicación %zu: sólo el símbolo '_GLOBAL_OFFSET_TABLE_' "
"puede utilizarse con %s\n"
-#: src/elflint.c:1428
+#: src/elflint.c:1432
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "Sección [%2d] '%s': reubicación %zu: compensación fuera de límites\n"
-#: src/elflint.c:1443
+#: src/elflint.c:1447
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -2083,7 +2100,7 @@ msgstr ""
"Sección [%2d] '%s': reubicación %zu: reubicación de copia con símbolo de "
"tipo %s\n"
-#: src/elflint.c:1464
+#: src/elflint.c:1468
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -2092,24 +2109,24 @@ msgstr ""
"Sección [%2d] '%s': reubicación %zu: sección de sólo-lectura modificada, "
"pero no se estableció bandera de reubicación\n"
-#: src/elflint.c:1479
+#: src/elflint.c:1483
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
"Sección [%2d] '%s': las reubicaciones se hacen con datos cargados y "
"descargados\n"
-#: src/elflint.c:1519 src/elflint.c:1570
+#: src/elflint.c:1523 src/elflint.c:1574
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr "Sección [%2d] '%s': no puede obtener reubicación %zu: %s\n"
-#: src/elflint.c:1646
+#: src/elflint.c:1650
#, c-format
msgid "more than one dynamic section present\n"
msgstr "más de una sección dinámica presente\n"
-#: src/elflint.c:1664
+#: src/elflint.c:1668
#, fuzzy, c-format
msgid ""
"section [%2d]: referenced as string table for section [%2d] '%s' but section "
@@ -2118,44 +2135,44 @@ msgstr ""
"sección [%2d] '%s': nombrado como una tabla de cadena para la sección [%2d] "
"'%s' pero el tipo no es SHT_STRTAB\n"
-#: src/elflint.c:1672
+#: src/elflint.c:1676
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
"Sección [%2d] '%s': tamaño de entrada de sección no coincide con ElfXX_Dyn\n"
-#: src/elflint.c:1677 src/elflint.c:1966
+#: src/elflint.c:1681 src/elflint.c:1970
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr "Sección [%2d] '%s': sh_info no es cero\n"
-#: src/elflint.c:1687
+#: src/elflint.c:1691
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
"Sección [%2d] '%s': no puede obtener entrada de sección dinámica %zu: %s\n"
-#: src/elflint.c:1695
+#: src/elflint.c:1699
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr "Sección [%2d] '%s': entradas non-DT_NULL siguen a la entrada DT_NULL\n"
-#: src/elflint.c:1702
+#: src/elflint.c:1706
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr "Sección [%2d] '%s': entrada %zu: etiqueta desconocida\n"
-#: src/elflint.c:1713
+#: src/elflint.c:1717
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr "Sección [%2d] '%s': entrada %zu: más de una entrada con etiqueta %s\n"
-#: src/elflint.c:1723
+#: src/elflint.c:1727
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr "Sección [%2d] '%s': entrada %zu: nivel 2 etiqueta %s utilizada\n"
-#: src/elflint.c:1741
+#: src/elflint.c:1745
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -2163,7 +2180,7 @@ msgstr ""
"Sección [%2d] '%s': entrada %zu: el valor DT_PLTREL debe ser DT_REL or "
"DT_RELA\n"
-#: src/elflint.c:1754
+#: src/elflint.c:1758
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -2172,14 +2189,14 @@ msgstr ""
"Sección [%2d] '%s': entrada %zu: puntero no coincide con dirección de "
"sección [%2d] '%s' al que hace referencia sh_link\n"
-#: src/elflint.c:1797
+#: src/elflint.c:1801
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
"Sección [%2d] '%s': entrada %zu: valor %s debe apuntar en segmento cargado\n"
-#: src/elflint.c:1812
+#: src/elflint.c:1816
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -2188,46 +2205,46 @@ msgstr ""
"sección [%2d] '%s': entrada %zu: valor %s debe ser compensación válida en "
"sección [%2d] '%s'\n"
-#: src/elflint.c:1832 src/elflint.c:1860
+#: src/elflint.c:1836 src/elflint.c:1864
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr "Sección [%2d] '%s': contiene entrada %s pero no %s\n"
-#: src/elflint.c:1844
+#: src/elflint.c:1848
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr "Sección [%2d] '%s': etiqueta obligatoria %s no está presente\n"
-#: src/elflint.c:1853
+#: src/elflint.c:1857
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr "Sección [%2d] '%s': no hay sección de dispersión presente\n"
-#: src/elflint.c:1868 src/elflint.c:1875
+#: src/elflint.c:1872 src/elflint.c:1879
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr "Sección [%2d] '%s': no todas las %s, %s, y %s están presentes\n"
-#: src/elflint.c:1885 src/elflint.c:1889
+#: src/elflint.c:1889 src/elflint.c:1893
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
"Sección [%2d] '%s': etiqueta %s faltante en DSO marcada durante el pre-"
"enlace\n"
-#: src/elflint.c:1895
+#: src/elflint.c:1899
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
"Sección [%2d] '%s': archivo no-DSO marcado como dependencia durante el pre-"
"enlace\n"
-#: src/elflint.c:1906 src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918
+#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr "Sección [%2d] '%s': etiqueta %s faltante en pre-enlace ejecutable\n"
-#: src/elflint.c:1930
+#: src/elflint.c:1934
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
@@ -2235,37 +2252,37 @@ msgstr ""
"Sección [%2d] '%s': sólo los archivos reubicables pueden tener índice de "
"sección extendido\n"
-#: src/elflint.c:1940
+#: src/elflint.c:1944
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
"Sección [%2d] '%s': índice de sección extendido no para tabla de símbolos\n"
-#: src/elflint.c:1944
+#: src/elflint.c:1948
#, fuzzy, c-format
msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
msgstr ""
"Sección [%2d] '%s': índice de sección extendido no para tabla de símbolos\n"
-#: src/elflint.c:1949
+#: src/elflint.c:1953
#, c-format
msgid "cannot get data for symbol section\n"
msgstr "no se puede obtener sección para símbolos\n"
-#: src/elflint.c:1952
+#: src/elflint.c:1956
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr "Sección [%2d] '%s': tamaño de entrada no coincide con Elf32_Word\n"
-#: src/elflint.c:1961
+#: src/elflint.c:1965
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
"Sección [%2d] '%s': tabla de índice extendida demasiado pequeña para tabla "
"de símbolos\n"
-#: src/elflint.c:1976
+#: src/elflint.c:1980
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -2274,24 +2291,24 @@ msgstr ""
"Sección [%2d] '%s': índice de sección extendida en sección [%2zu] '%s' se "
"refiere a la misma tabla de símbolos\n"
-#: src/elflint.c:1994
+#: src/elflint.c:1998
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr "símbolo 0 debe tener índice de sección extendida cero\n"
-#: src/elflint.c:2006
+#: src/elflint.c:2010
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr "no puede obtener datos para símbolo %zu\n"
-#: src/elflint.c:2011
+#: src/elflint.c:2015
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
"índice de sección extendida es %<PRIu32> pero índice de símbolo no es "
"XINDEX\n"
-#: src/elflint.c:2028 src/elflint.c:2085
+#: src/elflint.c:2032 src/elflint.c:2089
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
@@ -2299,42 +2316,42 @@ msgstr ""
"Sección [%2d] '%s': sección de tabla de dispersión es demasiado pequeña (es "
"%ld, se espera %ld)\n"
-#: src/elflint.c:2042 src/elflint.c:2099
+#: src/elflint.c:2046 src/elflint.c:2103
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr "Sección [%2d] '%s': índice de la cadena es demasiado grande\n"
-#: src/elflint.c:2056 src/elflint.c:2113
+#: src/elflint.c:2060 src/elflint.c:2117
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
"Sección [%2d] '%s': referencia de cubetas de dispersión %zu fuera de "
"límites\n"
-#: src/elflint.c:2066
+#: src/elflint.c:2070
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
"Sección [%2d] '%s': referencia de cadena de dispersión %zu fuera de límites\n"
-#: src/elflint.c:2123
+#: src/elflint.c:2127
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
"Sección [%2d] '%s': referencia de cadena de dispersión %<PRIu64> fuera de "
"límites\n"
-#: src/elflint.c:2136
+#: src/elflint.c:2140
#, fuzzy, c-format
msgid "section [%2d] '%s': not enough data\n"
msgstr "Sección [%2d] '%s': no puede obtener datos: %s\n"
-#: src/elflint.c:2148
+#: src/elflint.c:2152
#, fuzzy, c-format
msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
msgstr "Sección [%2d] '%s': tamaño de bitmask no es potencia de 2: %u\n"
-#: src/elflint.c:2164
+#: src/elflint.c:2168
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
@@ -2343,14 +2360,14 @@ msgstr ""
"Sección [%2d] '%s': sección de tabla de dispersión es demasiado pequeña (es "
"%ld, se espera al menos least%ld)\n"
-#: src/elflint.c:2173
+#: src/elflint.c:2177
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
"Sección [%2d] '%s': segundo cambio de función de dispersión demasiado "
"grande: %u\n"
-#: src/elflint.c:2207
+#: src/elflint.c:2211
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -2358,7 +2375,7 @@ msgstr ""
"Sección [%2d] '%s': cadena de dispersión para cubetas %zu inferior a "
"polarización de índice de símbolo\n"
-#: src/elflint.c:2228
+#: src/elflint.c:2232
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -2367,7 +2384,7 @@ msgstr ""
"Sección [%2d] '%s': el símbolo %u al que se hace referencia en cadena para "
"cubeta %zu es indefinido\n"
-#: src/elflint.c:2241
+#: src/elflint.c:2245
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -2375,7 +2392,7 @@ msgstr ""
"Sección [%2d] '%s': valor de dispersión para símbolo %u en cadena para "
"cubeta %zu está errado\n"
-#: src/elflint.c:2250
+#: src/elflint.c:2254
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
@@ -2383,13 +2400,13 @@ msgstr ""
"Sección [%2d] '%s': valor de dispersión para símbolo %u en cadena para "
"cubeta %zu está errado\n"
-#: src/elflint.c:2280
+#: src/elflint.c:2284
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
"Sección [%2d] '%s': cadena de dispersión para cubeta %zu fuera de limites\n"
-#: src/elflint.c:2285
+#: src/elflint.c:2289
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -2397,43 +2414,43 @@ msgstr ""
"Sección [%2d] '%s': referencia de símbolo en cadena para cubeta %zu fuera de "
"límites\n"
-#: src/elflint.c:2291
+#: src/elflint.c:2295
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
"Sección [%2d] '%s': bitmask no coincide con nombres en la tabla de "
"dispersión\n"
-#: src/elflint.c:2304
+#: src/elflint.c:2308
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
"Sección [%2d] '%s': archivos reubicables no pueden tener tablas de "
"dispersión\n"
-#: src/elflint.c:2322
+#: src/elflint.c:2326
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
"Sección [%2d] '%s': tabla de dispersión no para tabla de símbolos dinámicos\n"
-#: src/elflint.c:2326
+#: src/elflint.c:2330
#, fuzzy, c-format
msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
msgstr "Sección [%2d] '%s': índice de sección de destino inválido\n"
-#: src/elflint.c:2336
+#: src/elflint.c:2340
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr ""
"Sección [%2d] '%s': tamaño incorrecto de entrada de tabla de dispersión\n"
-#: src/elflint.c:2341
+#: src/elflint.c:2345
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr "Sección [%2d] '%s': no marcada para ser asignada\n"
-#: src/elflint.c:2346
+#: src/elflint.c:2350
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2442,46 +2459,46 @@ msgstr ""
"Sección [%2d] '%s': tabla de dispersión no tiene ni siquiera espacio para "
"entradas administrativas iniciales\n"
-#: src/elflint.c:2395
+#: src/elflint.c:2399
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
"sh_link en secciones de dispersión [%2zu] '%s' y [%2zu] '%s' no son "
"idénticas\n"
-#: src/elflint.c:2419 src/elflint.c:2484 src/elflint.c:2519
+#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
#, fuzzy, c-format
msgid "hash section [%2zu] '%s' does not contain enough data\n"
msgstr "sección [%2zu] '%s' no debe ser ejecutable\n"
-#: src/elflint.c:2440
+#: src/elflint.c:2444
#, fuzzy, c-format
msgid "hash section [%2zu] '%s' has zero bit mask words\n"
msgstr "Sección [%2d] '%s': grupo de sección sin palabra de banderas\n"
-#: src/elflint.c:2451 src/elflint.c:2495 src/elflint.c:2532
+#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
#, fuzzy, c-format
msgid "hash section [%2zu] '%s' uses too much data\n"
msgstr "sección [%2zu] '%s' debe ser asignada\n"
-#: src/elflint.c:2466
+#: src/elflint.c:2470
#, c-format
msgid ""
"hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
"%<PRIu32>, nentries: %<PRIu32>\n"
msgstr ""
-#: src/elflint.c:2553
+#: src/elflint.c:2557
#, fuzzy, c-format
msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
msgstr "Sección [%2zu]: nombre inválido\n"
-#: src/elflint.c:2563 src/elflint.c:2567
+#: src/elflint.c:2567 src/elflint.c:2571
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr "Sección [%2zu] '%s': referencia al índice de símbolo 0\n"
-#: src/elflint.c:2574
+#: src/elflint.c:2578
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2490,7 +2507,7 @@ msgstr ""
"Símbolo %d nombrado en nueva tabla de dispersión en [%2zu] '%s' pero no en "
"la tabla de dispersión anterior en [%2zu] '%s'\n"
-#: src/elflint.c:2586
+#: src/elflint.c:2590
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2499,12 +2516,12 @@ msgstr ""
"Símbolo %d nombrado en la tabla de dispersión anterior en [%2zu] '%s' pero "
"no en la nueva tabla de dispersión en [%2zu] '%s'\n"
-#: src/elflint.c:2602
+#: src/elflint.c:2606
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr "Sección [%2d] '%s': nonzero sh_%s para sección NULL\n"
-#: src/elflint.c:2622
+#: src/elflint.c:2626
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
@@ -2512,99 +2529,99 @@ msgstr ""
"Sección [%2d] '%s': grupos de sección sólo permitidos en archivos de objeto "
"reubicables\n"
-#: src/elflint.c:2633
+#: src/elflint.c:2637
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr "Sección [%2d] '%s': no puede obtener tabla de símbolos: %s\n"
-#: src/elflint.c:2638
+#: src/elflint.c:2642
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
"Sección [%2d] '%s': referencia de sección en sh_link no es una tabla de "
"símbolos\n"
-#: src/elflint.c:2644
+#: src/elflint.c:2648
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr "Sección [%2d] '%s': índice de símbolo inválido en sh_info\n"
-#: src/elflint.c:2649
+#: src/elflint.c:2653
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr "Sección [%2d] '%s': sh_flags no cero\n"
-#: src/elflint.c:2656
+#: src/elflint.c:2660
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr "Sección [%2d] '%s': no puede obtener símbolo para firma\n"
-#: src/elflint.c:2660
+#: src/elflint.c:2664
#, fuzzy, c-format
msgid "section [%2d] '%s': cannot get symbol name for signature\n"
msgstr "Sección [%2d] '%s': no puede obtener símbolo para firma\n"
-#: src/elflint.c:2665
+#: src/elflint.c:2669
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr ""
"sección [%2d] '%s': el símbolo de firma no puede ser una cadena vacía\n"
-#: src/elflint.c:2671
+#: src/elflint.c:2675
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr "Sección [%2d] '%s': sh_flags no establecida correctamente\n"
-#: src/elflint.c:2677
+#: src/elflint.c:2681
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr "Sección [%2d] '%s': no puede obtener datos: %s\n"
-#: src/elflint.c:2686
+#: src/elflint.c:2690
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
"Sección [%2d] '%s': tamaño de sección no es múltiplo de tamaño de "
"(Elf32_Word)\n"
-#: src/elflint.c:2692
+#: src/elflint.c:2696
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr "Sección [%2d] '%s': grupo de sección sin palabra de banderas\n"
-#: src/elflint.c:2700
+#: src/elflint.c:2704
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr "Sección [%2d] '%s': grupo de sección sin miembro\n"
-#: src/elflint.c:2704
+#: src/elflint.c:2708
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr "Sección [%2d] '%s': grupo de sección con sólo un miembro\n"
-#: src/elflint.c:2715
+#: src/elflint.c:2719
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr "Sección [%2d] '%s': banderas de grupo de sección desconocido\n"
-#: src/elflint.c:2727
+#: src/elflint.c:2731
#, fuzzy, c-format
msgid "section [%2d] '%s': section index %zu out of range\n"
msgstr "Sección [%2d] '%s': índice de sección %Zu fuera de rango\n"
-#: src/elflint.c:2736
+#: src/elflint.c:2740
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
"Sección [%2d] '%s': no se puede obtener encabezamiento de sección para "
"elemento %zu: %s\n"
-#: src/elflint.c:2743
+#: src/elflint.c:2747
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr "Sección [%2d] '%s': grupo de sección contiene otro grupo [%2d] '%s'\n"
-#: src/elflint.c:2749
+#: src/elflint.c:2753
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': element %zu references section [%2d] '%s' without "
@@ -2613,12 +2630,12 @@ msgstr ""
"Sección [%2d] '%s': elemento %Zu hace referencia a sección [%2d] '%s' sin "
"establecer bandera SHF_GROUP\n"
-#: src/elflint.c:2756
+#: src/elflint.c:2760
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr "Sección [%2d] '%s' está contenida en más de un grupo de sección\n"
-#: src/elflint.c:2946
+#: src/elflint.c:2957
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2627,7 +2644,7 @@ msgstr ""
"Sección [%2d] '%s' se refiere en sh_link a la sección [%2d] '%s' la cual no "
"es una tabla de símbolos dinámicos\n"
-#: src/elflint.c:2958
+#: src/elflint.c:2969
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2636,29 +2653,29 @@ msgstr ""
"Sección [%2d] '%s' tiene un número diferente de entradas a la de la tabla de "
"símbolos [%2d] '%s'\n"
-#: src/elflint.c:2974
+#: src/elflint.c:2985
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr ""
"Sección [%2d] '%s': el símbolo %d: no se pueden leer datos de versión\n"
-#: src/elflint.c:2990
+#: src/elflint.c:3001
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
"Sección [%2d] '%s': el símbolo %d: el símbolo local con alcance mundial\n"
-#: src/elflint.c:2998
+#: src/elflint.c:3009
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr "Sección [%2d] '%s': símbolo %d: símbolo local con versión\n"
-#: src/elflint.c:3012
+#: src/elflint.c:3023
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr "Sección [%2d] '%s': símbolo %d: índice de versión inválida %d\n"
-#: src/elflint.c:3017
+#: src/elflint.c:3028
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
@@ -2666,7 +2683,7 @@ msgstr ""
"Sección [%2d] '%s': símbolo %d: índice de versión %d es para versión "
"definida\n"
-#: src/elflint.c:3027
+#: src/elflint.c:3038
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
@@ -2674,46 +2691,46 @@ msgstr ""
"Sección [%2d] '%s': símbolo %d: índice de versión %d es para la versión "
"solicitada\n"
-#: src/elflint.c:3080
+#: src/elflint.c:3091
#, c-format
msgid "more than one version reference section present\n"
msgstr "Más de una sección de referencia de versión presente\n"
-#: src/elflint.c:3088 src/elflint.c:3235
+#: src/elflint.c:3099 src/elflint.c:3246
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr "Sección [%2d] '%s': sh_link no se enlaza a la tabla de cadenas\n"
-#: src/elflint.c:3113 src/elflint.c:3289
+#: src/elflint.c:3124 src/elflint.c:3300
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr "Sección [%2d] '%s': entrada %d tiene versión %d errada\n"
-#: src/elflint.c:3120 src/elflint.c:3296
+#: src/elflint.c:3131 src/elflint.c:3307
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
"Sección [%2d] '%s': entrada %d tiene compensación errada de datos "
"auxiliares\n"
-#: src/elflint.c:3130
+#: src/elflint.c:3141
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr "Sección [%2d] '%s': entrada %d tiene referencia de archivo inválida\n"
-#: src/elflint.c:3138
+#: src/elflint.c:3149
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr "Sección [%2d] '%s': %d hace referencia a dependencia desconocida\n"
-#: src/elflint.c:3150
+#: src/elflint.c:3161
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
"sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene bandera "
"desconocida\n"
-#: src/elflint.c:3158
+#: src/elflint.c:3169
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2722,7 +2739,7 @@ msgstr ""
"Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene referencia de "
"nombre inválida\n"
-#: src/elflint.c:3167
+#: src/elflint.c:3178
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2731,7 +2748,7 @@ msgstr ""
"Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene valor de "
"dispersión: %#x, esperado %#x\n"
-#: src/elflint.c:3176
+#: src/elflint.c:3187
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -2740,7 +2757,7 @@ msgstr ""
"sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene nombre duplicado "
"'%s'\n"
-#: src/elflint.c:3187
+#: src/elflint.c:3198
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
@@ -2748,14 +2765,14 @@ msgstr ""
"sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene próximo campo "
"errado\n"
-#: src/elflint.c:3204 src/elflint.c:3380
+#: src/elflint.c:3215 src/elflint.c:3391
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
"sección [%2d] '%s': entrada %d tiene compensación inválida para próxima "
"entrada\n"
-#: src/elflint.c:3212 src/elflint.c:3388
+#: src/elflint.c:3223 src/elflint.c:3399
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
@@ -2764,46 +2781,46 @@ msgstr ""
"sección [%2d] '%s': entrada %d tiene compensación inválida para próxima "
"entrada\n"
-#: src/elflint.c:3227
+#: src/elflint.c:3238
#, c-format
msgid "more than one version definition section present\n"
msgstr "más de una definición de versión presente de sección\n"
-#: src/elflint.c:3274
+#: src/elflint.c:3285
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr "Sección [%2d] '%s': más de una definición de BASE\n"
-#: src/elflint.c:3278
+#: src/elflint.c:3289
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
"Sección [%2d] '%s': definición de BASE debe tener índice VER_NDX_GLOBAL\n"
-#: src/elflint.c:3284
+#: src/elflint.c:3295
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr "Sección [%2d] '%s': entrada %d tiene bandera desconocida\n"
-#: src/elflint.c:3311
+#: src/elflint.c:3322
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr "Sección [%2d] '%s': entrada %d tiene referencia de nombre inválida\n"
-#: src/elflint.c:3318
+#: src/elflint.c:3329
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
"Sección [%2d] '%s': entrada %d tiene valor de dispersión errado: %#x, "
"esperado %#x\n"
-#: src/elflint.c:3326
+#: src/elflint.c:3337
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr ""
"Sección [%2d] '%s': entrada %d tiene nombre de versión duplicado '%s'\n"
-#: src/elflint.c:3346
+#: src/elflint.c:3357
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -2811,34 +2828,34 @@ msgstr ""
"Sección [%2d] '%s': entrada %d tiene referencia de nombre inválida en datos "
"auxiliares\n"
-#: src/elflint.c:3363
+#: src/elflint.c:3374
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
"Sección [%2d] '%s': entrada %d tiene próximo campo errado en datos "
"auxiliares\n"
-#: src/elflint.c:3396
+#: src/elflint.c:3407
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr "Sección [%2d] '%s': no hay definición de BASE\n"
-#: src/elflint.c:3412
+#: src/elflint.c:3423
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr "Sección [%2d] '%s': desconocida versión principal '%s'\n"
-#: src/elflint.c:3425
+#: src/elflint.c:3436
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr "Sección [%2d] '%s': sección de atributos de objeto vacío\n"
-#: src/elflint.c:3446
+#: src/elflint.c:3457
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr "Sección[%2d] '%s': formato de atributo no reconocido\n"
-#: src/elflint.c:3462
+#: src/elflint.c:3473
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
@@ -2846,21 +2863,21 @@ msgstr ""
"Sección[%2d] '%s': compensación %zu: campo de longitud cero en sección de "
"atributo\n"
-#: src/elflint.c:3471
+#: src/elflint.c:3482
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
"Sección[%2d] '%s': compensación %zu: longitud inválida en sección de "
"atributo\n"
-#: src/elflint.c:3483
+#: src/elflint.c:3494
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
"Sección[%2d] '%s': compensación %zu: cadena de nombre de proveedor sin "
"terminar\n"
-#: src/elflint.c:3500
+#: src/elflint.c:3511
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -2868,12 +2885,12 @@ msgstr ""
"Sección [%2d] '%s': compensación %zu: sin fin ULEB128 en etiqueta de sub-"
"sección de atributo\n"
-#: src/elflint.c:3509
+#: src/elflint.c:3520
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr "Sección [%2d] '%s': compensación %zu: sección de atributo truncado\n"
-#: src/elflint.c:3518
+#: src/elflint.c:3529
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
@@ -2881,7 +2898,7 @@ msgstr ""
"Sección [%2d] '%s': compensación %zu: campo de longitud cero length en sub-"
"sección de atributo\n"
-#: src/elflint.c:3533
+#: src/elflint.c:3544
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
@@ -2890,7 +2907,7 @@ msgstr ""
"atributo\n"
#. Tag_File
-#: src/elflint.c:3544
+#: src/elflint.c:3555
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -2898,26 +2915,26 @@ msgstr ""
"Sección[%2d] '%s': compensación %zu: sub-sección de atributo tiene etiqueta "
"inesperada %u\n"
-#: src/elflint.c:3562
+#: src/elflint.c:3573
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
"Sección[%2d] '%s': compensación %zu: sin fin ULEB128 en etiqueta de "
"atributo\n"
-#: src/elflint.c:3573
+#: src/elflint.c:3584
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr ""
"Sección [%2d] '%s': compensación %zu: cadena sin terminar en atributo\n"
-#: src/elflint.c:3586
+#: src/elflint.c:3597
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr ""
"Sección [%2d] '%s': compensación %zu: etiqueta de atributo no reconocida %u\n"
-#: src/elflint.c:3590
+#: src/elflint.c:3601
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
@@ -2925,12 +2942,12 @@ msgstr ""
"Sección [%2d] '%s': compensación %zu: no reconocido %s valor de atributo "
"%<PRIu64>\n"
-#: src/elflint.c:3600
+#: src/elflint.c:3611
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr "Sección [%2d] '%s': compensación %zu: proveedor '%s' desconocido\n"
-#: src/elflint.c:3606
+#: src/elflint.c:3617
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -2938,47 +2955,47 @@ msgstr ""
"Sección [%2d] '%s': compensación %zu: extra bytes después de la última "
"sección de atributo\n"
-#: src/elflint.c:3695
+#: src/elflint.c:3714
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr "no puede obtener encabezamiento de sección de sección zeroth\n"
-#: src/elflint.c:3699
+#: src/elflint.c:3718
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr "Sección zeroth tiene nombre nonzero\n"
-#: src/elflint.c:3701
+#: src/elflint.c:3720
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr "Sección zeroth tiene tipo nonzero\n"
-#: src/elflint.c:3703
+#: src/elflint.c:3722
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr "Sección zeroth tiene banderas nonzero\n"
-#: src/elflint.c:3705
+#: src/elflint.c:3724
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr "Sección zeroth tiene dirección nonzero\n"
-#: src/elflint.c:3707
+#: src/elflint.c:3726
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr "Sección zeroth tiene compensación nonzero\n"
-#: src/elflint.c:3709
+#: src/elflint.c:3728
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr "Sección zeroth tiene valor de alineación nonzero\n"
-#: src/elflint.c:3711
+#: src/elflint.c:3730
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr "Sección zeroth tiene valor de tamaño de entrada nonzero\n"
-#: src/elflint.c:3714
+#: src/elflint.c:3733
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -2987,7 +3004,7 @@ msgstr ""
"Sección zeroth tiene valor de tamaño nonzero mientras que el encabezamiento "
"ELF tiene valor shnum nonzero\n"
-#: src/elflint.c:3718
+#: src/elflint.c:3737
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
@@ -2996,7 +3013,7 @@ msgstr ""
"Sección zeroth tiene valor de enlace nonzero mientras que el encabezamiento "
"ELF no señala sobreflujo en shstrndx\n"
-#: src/elflint.c:3722
+#: src/elflint.c:3741
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
@@ -3005,27 +3022,27 @@ msgstr ""
"la sección zeroth tiene un valor de enlace distinto a cero mientras que el "
"encabezamiento ELF no señala desbordamiento en phnum\n"
-#: src/elflint.c:3740
+#: src/elflint.c:3759
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr "No se puede obtener encabezamiento para sección [%2zu] '%s': %s\n"
-#: src/elflint.c:3749
+#: src/elflint.c:3768
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr "Sección [%2zu]: nombre inválido\n"
-#: src/elflint.c:3776
+#: src/elflint.c:3795
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr "Sección [%2d] '%s' tiene tipo errado: %s esperado, es %s\n"
-#: src/elflint.c:3794
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr "Sección [%2zu] '%s' tiene banderas erradas: %s esperado, es %s\n"
-#: src/elflint.c:3812
+#: src/elflint.c:3830
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
@@ -3033,12 +3050,12 @@ msgstr ""
"Sección [%2zu] '%s' tiene banderas erradas: %s esperado y posiblemente %s, "
"es %s\n"
-#: src/elflint.c:3830
+#: src/elflint.c:3847
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr "Sección [%2zu] '%s' presente en archivo objeto\n"
-#: src/elflint.c:3836 src/elflint.c:3868
+#: src/elflint.c:3853 src/elflint.c:3885
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
@@ -3046,7 +3063,7 @@ msgstr ""
"Sección [%2zu] '%s' tiene bandera SHF_ALLOC establecida pero no es un "
"segmento cargable\n"
-#: src/elflint.c:3841 src/elflint.c:3873
+#: src/elflint.c:3858 src/elflint.c:3890
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -3055,7 +3072,7 @@ msgstr ""
"Sección [%2zu] '%s' no tiene bandera SHF_ALLOC establecida pero hay "
"segmentos cargables\n"
-#: src/elflint.c:3849
+#: src/elflint.c:3866
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -3063,22 +3080,22 @@ msgstr ""
"Sección [%2zu] '%s' es tabla de índice de sección de extensión en archivo no-"
"objeto\n"
-#: src/elflint.c:3892
+#: src/elflint.c:3909
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr "Sección [%2zu] '%s': tamaño no es múltiplo de tamaño de entrada\n"
-#: src/elflint.c:3897
+#: src/elflint.c:3914
#, c-format
msgid "cannot get section header\n"
msgstr "no se puede obtener encabezamiento de sección\n"
-#: src/elflint.c:3907
+#: src/elflint.c:3924
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr "sección [%2zu] '%s' tiene tipo %d incompatible \n"
-#: src/elflint.c:3922
+#: src/elflint.c:3944
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3086,76 +3103,76 @@ msgstr ""
"Sección [%2zu] '%s' contiene bandera(s) de procesador-específico inválidas "
"%#<PRIx64>\n"
-#: src/elflint.c:3929
+#: src/elflint.c:3954
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr "Sección [%2zu] '%s' contiene bandera(s) desconocidas %#<PRIx64>\n"
-#: src/elflint.c:3937
+#: src/elflint.c:3962
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
"Sección [%2zu] '%s': dirección de secciones de datos de hilo-local no cero\n"
-#: src/elflint.c:3947
+#: src/elflint.c:3972
#, fuzzy, c-format
msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
msgstr ""
"Sección [%2zu] '%s': dirección de secciones de datos de hilo-local no cero\n"
-#: src/elflint.c:3952
+#: src/elflint.c:3977
#, fuzzy, c-format
msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
msgstr "Sección [%2d] '%s': no hay sección de dispersión presente\n"
-#: src/elflint.c:3958
+#: src/elflint.c:3983
#, fuzzy, c-format
msgid ""
"section [%2zu] '%s': compressed section with no compression header: %s\n"
msgstr "Sección [%2d] '%s': grupo de sección con sólo un miembro\n"
-#: src/elflint.c:3964
+#: src/elflint.c:3989
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
"Sección [%2zu] '%s': referencia de sección inválida en valor de enlace\n"
-#: src/elflint.c:3969
+#: src/elflint.c:3994
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
"Sección [%2zu] '%s': referencia de sección inválida en valor de información\n"
-#: src/elflint.c:3976
+#: src/elflint.c:4001
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr ""
"Sección [%2zu] '%s': bandera de cadenas establecida sin bandera de fusión\n"
-#: src/elflint.c:3981
+#: src/elflint.c:4006
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
"Sección [%2zu] '%s': bandera de fusión establecida pero tamaño de entrada es "
"cero\n"
-#: src/elflint.c:4000
+#: src/elflint.c:4025
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
"Sección [%2zu] '%s' tiene un tipo %d inesperado para una sección ejecutable\n"
-#: src/elflint.c:4009
+#: src/elflint.c:4034
#, fuzzy, c-format
msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
msgstr "sección [%2zu] '%s' no debe tener permiso de escritura\n"
-#: src/elflint.c:4016
+#: src/elflint.c:4041
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr "Sección [%2zu] '%s' es tanto de ejecución como de escritura\n"
-#: src/elflint.c:4047
+#: src/elflint.c:4072
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3164,7 +3181,7 @@ msgstr ""
"Sección [%2zu] '%s' no contenida totalmente en segmento de entrada de "
"encabezamiento de programa %d\n"
-#: src/elflint.c:4057
+#: src/elflint.c:4082
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3173,7 +3190,7 @@ msgstr ""
"Sección [%2zu] '%s' no tiene tipo NOBITS pero es leída desde el archivo en "
"segmento de entrada de encabezamiento de programa %d\n"
-#: src/elflint.c:4083
+#: src/elflint.c:4108
#, fuzzy, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3182,7 +3199,7 @@ msgstr ""
"Sección [%2zu] '%s' no tiene tipo NOBITS pero es leída desde el archivo en "
"segmento de entrada de encabezamiento de programa %d\n"
-#: src/elflint.c:4094
+#: src/elflint.c:4119
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3191,18 +3208,18 @@ msgstr ""
"Sección [%2zu] '%s' no tiene tipo NOBITS pero no es leída desde el fichero "
"en segmento de entrada de encabezamiento de programa %d\n"
-#: src/elflint.c:4105
+#: src/elflint.c:4130
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr "Sección [%2zu] '%s' es ejecutable en segmento no ejecutable %d\n"
-#: src/elflint.c:4115
+#: src/elflint.c:4140
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
"Sección [%2zu] '%s' es de escritura en segmento que no es de escritura %d\n"
-#: src/elflint.c:4125
+#: src/elflint.c:4150
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3210,7 +3227,7 @@ msgstr ""
"Sección [%2zu] '%s': asignación de bandera establecida pero sección no en "
"ningún segmento cargado\n"
-#: src/elflint.c:4131
+#: src/elflint.c:4156
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3219,7 +3236,7 @@ msgstr ""
"Sección [%2zu] '%s': encabezamiento ELF dice esta es la tabla de cadena de "
"encabezamiento de sección, pero el tipo no es SHT_TYPE\n"
-#: src/elflint.c:4139
+#: src/elflint.c:4164
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3227,32 +3244,32 @@ msgstr ""
"sección [%2zu] '%s': ficheros reubicables no pueden tener tablas de símbolos "
"dinámicos\n"
-#: src/elflint.c:4190
+#: src/elflint.c:4215
#, c-format
msgid "more than one version symbol table present\n"
msgstr "Más de una tabla de símbolos presente\n"
-#: src/elflint.c:4213
+#: src/elflint.c:4238
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr ""
"Entrada de encabezamiento de programa INTERP pero no la sección .interp\n"
-#: src/elflint.c:4224
+#: src/elflint.c:4249
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
"segmento cargable [%u] es ejecutable pero no contiene secciones ejecutables\n"
-#: src/elflint.c:4230
+#: src/elflint.c:4255
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
"segmento cargable [%u] es de escritura pero contiene secciones protegidas "
"contra escritura\n"
-#: src/elflint.c:4241
+#: src/elflint.c:4266
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3261,26 +3278,26 @@ msgstr ""
"Sección no .gnu.versym presente, pero la sección .gnu.versym_d o la sección ."
"gnu.versym_r existen\n"
-#: src/elflint.c:4254
+#: src/elflint.c:4279
#, c-format
msgid "duplicate version index %d\n"
msgstr "Duplicar índice de versión %d\n"
-#: src/elflint.c:4268
+#: src/elflint.c:4293
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
"Sección .gnu.versym presente sin las secciones .gnu.versym_d o .gnu."
"versym_r\n"
-#: src/elflint.c:4317
+#: src/elflint.c:4342
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
"phdr[%d]: tipo de nota de fichero core desconocido %<PRIu32> en compensación "
"%<PRIu64>\n"
-#: src/elflint.c:4321
+#: src/elflint.c:4346
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3288,7 +3305,7 @@ msgstr ""
"Sección [%2d] '%s': tipo de nota de fichero core desconocido %<PRIu32> en "
"compensación %Zu\n"
-#: src/elflint.c:4370
+#: src/elflint.c:4395
#, fuzzy, c-format
msgid ""
"phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
@@ -3297,7 +3314,7 @@ msgstr ""
"phdr[%d]: tipo de nota de fichero objeto desconocido %<PRIu32> en "
"compensación %Zu\n"
-#: src/elflint.c:4375
+#: src/elflint.c:4400
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
@@ -3306,40 +3323,40 @@ msgstr ""
"Sección [%2d] '%s': tipo de nota de fichero objeto desconocido %<PRIu32> en "
"compensación %Zu\n"
-#: src/elflint.c:4394
+#: src/elflint.c:4419
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr "phdr[%d]: no hay entradas de nota definidas para el tipo de archivo\n"
-#: src/elflint.c:4414
+#: src/elflint.c:4439
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr "phdr[%d]: no puede obtener contenido de sección de nota: %s\n"
-#: src/elflint.c:4417
+#: src/elflint.c:4442
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr "phdr[%d]: extra %<PRIu64> bytes después de la última nota\n"
-#: src/elflint.c:4438
+#: src/elflint.c:4463
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
"Sección [%2d] '%s': no hay entradas de nota definidas para el tipo de "
"archivo\n"
-#: src/elflint.c:4445
+#: src/elflint.c:4470
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr ""
"Sección[%2d] '%s': no se puede obtener el contenido de sección de nota\n"
-#: src/elflint.c:4448
+#: src/elflint.c:4473
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr "Sección[%2d] '%s': extra %<PRIu64> bytes después de la última nota\n"
-#: src/elflint.c:4466
+#: src/elflint.c:4491
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
@@ -3347,145 +3364,145 @@ msgstr ""
"Sólo ejecutables, objetos compartidos y ficheros core pueden tener "
"encabezamientos de programas\n"
-#: src/elflint.c:4481
+#: src/elflint.c:4506
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr "no se puede obtener entrada de encabezamiento %d: %s\n"
-#: src/elflint.c:4490
+#: src/elflint.c:4516
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
"entrada de encabezamiento de programa %d: tipo %#<PRIx64> de entrada de "
"encabezamiento de programa desconocido\n"
-#: src/elflint.c:4501
+#: src/elflint.c:4527
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr "Más de una entrada INTERP en encabezamiento de programa\n"
-#: src/elflint.c:4509
+#: src/elflint.c:4535
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr "más de una entrada TLS en encabezamiento de programa\n"
-#: src/elflint.c:4516
+#: src/elflint.c:4542
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr "ejecutable estático no puede tener secciones dinámicas\n"
-#: src/elflint.c:4530
+#: src/elflint.c:4556
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
"Referencia de sección dinámica en encabezamiento de programa tiene "
"compensación errada\n"
-#: src/elflint.c:4533
+#: src/elflint.c:4559
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
"No coinciden tamaño de sección dinámica en programa y encabezamiento de "
"sección\n"
-#: src/elflint.c:4543
+#: src/elflint.c:4569
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr "Más de una entrada GNU_RELRO en encabezamiento de programa\n"
-#: src/elflint.c:4564
+#: src/elflint.c:4590
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr "Segmento cargable GNU_RELRO que se aplica no es de escritura\n"
-#: src/elflint.c:4575
+#: src/elflint.c:4601
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
"Banderas de segmento cargable [%u] no coinciden con banderas GNU_RELRO [%u]\n"
-#: src/elflint.c:4582
+#: src/elflint.c:4608
#, c-format
msgid ""
"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
msgstr ""
-#: src/elflint.c:4591 src/elflint.c:4614
+#: src/elflint.c:4617 src/elflint.c:4640
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr "Segmento %s no contenido en un segmento cargable\n"
-#: src/elflint.c:4620
+#: src/elflint.c:4646
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
"Compensación de encabezamiento de programa en encabezamiento ELF y entrada "
"PHDR no coinciden"
-#: src/elflint.c:4647
+#: src/elflint.c:4673
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
"Referencia de tabla de búsqueda de marco de llamada en encabezamiento de "
"programa tiene una compensación errada\n"
-#: src/elflint.c:4650
+#: src/elflint.c:4676
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
"Tamaño de tabla de búsqueda de marco de llamada no coincide con programa y "
"encabezamiento de sección\n"
-#: src/elflint.c:4663
+#: src/elflint.c:4689
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr "PT_GNU_EH_FRAME presente pero no la sección.eh_frame_hdr\n"
-#: src/elflint.c:4671
+#: src/elflint.c:4697
#, c-format
msgid "call frame search table must be allocated\n"
msgstr "tabla de búsqueda de marco de llamada debe ser asignada\n"
-#: src/elflint.c:4674
+#: src/elflint.c:4700
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr "sección [%2zu] '%s' debe ser asignada\n"
-#: src/elflint.c:4678
+#: src/elflint.c:4704
#, c-format
msgid "call frame search table must not be writable\n"
msgstr ""
"tabla de búsqueda de marco de llamada no debe tener permiso de escritura\n"
-#: src/elflint.c:4681
+#: src/elflint.c:4707
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr "sección [%2zu] '%s' no debe tener permiso de escritura\n"
-#: src/elflint.c:4686
+#: src/elflint.c:4712
#, c-format
msgid "call frame search table must not be executable\n"
msgstr "tabla de búsqueda de marco de llamada no debe ser ejecutable\n"
-#: src/elflint.c:4689
+#: src/elflint.c:4715
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr "sección [%2zu] '%s' no debe ser ejecutable\n"
-#: src/elflint.c:4700
+#: src/elflint.c:4726
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr ""
"entrada de encabezamiento de programa %d: tamaño de fichero mayor que el "
"tamaño de memoria\n"
-#: src/elflint.c:4707
+#: src/elflint.c:4733
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr ""
"entrada de encabezamiento de programa %d: alineamiento no es potencia de 2\n"
-#: src/elflint.c:4710
+#: src/elflint.c:4736
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
@@ -3494,7 +3511,7 @@ msgstr ""
"entrada de encabezamiento de programa %d: compensación de fichero y "
"dirección virtual no módulo de alineación\n"
-#: src/elflint.c:4723
+#: src/elflint.c:4749
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3503,12 +3520,17 @@ msgstr ""
"ejecutable/DSO con sección .eh_frame_hdr no tiene una entrada de "
"encabezamiento de programa PT_GNU_EH_FRAME"
-#: src/elflint.c:4757
+#: src/elflint.c:4783
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr "No se puede leer encabezamiento ELF: %s\n"
-#: src/elflint.c:4783
+#: src/elflint.c:4795
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "no sepuede crear fichero nuevo"
+
+#: src/elflint.c:4816
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr "Bandera de reubicación de texto establecida pero no necesaria\n"
@@ -3693,7 +3715,7 @@ msgstr "Marcar símbolos débiles"
msgid "Print size of defined symbols"
msgstr "Tamaño de impresión de símbolos definidos"
-#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73
+#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:69
msgid "Output options:"
msgstr "Opciones de salida:"
@@ -3729,12 +3751,12 @@ msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: ERROR INTERNO %d (%s-%s): %s"
#: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308
-#: src/strip.c:2748
+#: src/strip.c:2763
#, c-format
msgid "while closing '%s'"
msgstr "error al cerrar '%s'"
-#: src/nm.c:403 src/objdump.c:280 src/strip.c:797
+#: src/nm.c:403 src/objdump.c:280 src/strip.c:818
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: No se reconoce el formato del fichero"
@@ -3774,13 +3796,13 @@ msgstr "%s%s%s: no se reconoció el formato de fichero"
msgid "cannot create search tree"
msgstr "No se puede crear el árbol de búsqueda"
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
-#: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
-#: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
-#: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
-#: src/strip.c:1038
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:637
+#: src/readelf.c:1451 src/readelf.c:1602 src/readelf.c:1803 src/readelf.c:2009
+#: src/readelf.c:2199 src/readelf.c:2377 src/readelf.c:2453 src/readelf.c:2711
+#: src/readelf.c:2787 src/readelf.c:2874 src/readelf.c:3472 src/readelf.c:3522
+#: src/readelf.c:3592 src/readelf.c:11328 src/readelf.c:12523
+#: src/readelf.c:12734 src/readelf.c:12803 src/size.c:398 src/size.c:470
+#: src/strip.c:1084
#, c-format
msgid "cannot get section header string table index"
msgstr "no se puede obtener índice de cadena de encabezamiento de sección"
@@ -3809,30 +3831,30 @@ msgstr ""
"%*s%-*s %-*s Clase Tipo %-*s %*s Sección\n"
"\n"
-#: src/nm.c:1216
+#: src/nm.c:1250
#, fuzzy, c-format
msgid "%s: entry size in section %zd `%s' is not what we expect"
msgstr ""
"%s: el tamaño de la entrada en la sección `%s' no es el que esperábamos "
-#: src/nm.c:1221
+#: src/nm.c:1255
#, fuzzy, c-format
msgid "%s: size of section %zd `%s' is not multiple of entry size"
msgstr "%s: Tamaño de sección `%s' no es múltiplo de tamaño de entrada"
-#: src/nm.c:1300
+#: src/nm.c:1334
#, fuzzy, c-format
msgid "%s: entries (%zd) in section %zd `%s' is too large"
msgstr ""
"%s: el tamaño de la entrada en la sección `%s' no es el que esperábamos "
#. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: Operación inválida"
-#: src/nm.c:1584
+#: src/nm.c:1620
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: No hay símbolos"
@@ -3867,7 +3889,7 @@ msgstr "Sólo muestra información para NOMBRE de sección."
msgid "Show information from FILEs (a.out by default)."
msgstr "Muestra información de FICHEROS (a.out por defecto)."
-#: src/objdump.c:218 src/readelf.c:580
+#: src/objdump.c:218 src/readelf.c:582
msgid "No operation specified.\n"
msgstr "No se especificó una operación.\n"
@@ -3876,11 +3898,11 @@ msgstr "No se especificó una operación.\n"
msgid "while close `%s'"
msgstr "mientras cierra `%s'"
-#: src/objdump.c:363 src/readelf.c:2100 src/readelf.c:2292
+#: src/objdump.c:363 src/readelf.c:2104 src/readelf.c:2296
msgid "INVALID SYMBOL"
msgstr "SÃMBOLO INVÃLIDO"
-#: src/objdump.c:378 src/readelf.c:2134 src/readelf.c:2328
+#: src/objdump.c:378 src/readelf.c:2138 src/readelf.c:2332
msgid "INVALID SECTION"
msgstr "SECCIÓN INVÃLIDA"
@@ -3909,6 +3931,11 @@ msgstr "Contenido de la sección %s:\n"
msgid "cannot disassemble"
msgstr "No se puede desensamblar"
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "no sepuede crear fichero nuevo"
+
#. Short description of program.
#: src/ranlib.c:63
msgid "Generate an index to speed access to archives."
@@ -4082,143 +4109,143 @@ msgstr "sí"
msgid "no"
msgstr "no"
-#: src/readelf.c:548
+#: src/readelf.c:550
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "Sección de depuración DWARF desconocida `%s'.\n"
-#: src/readelf.c:619 src/readelf.c:730
+#: src/readelf.c:621 src/readelf.c:732
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "no se puede crear descriptor ELF: %s"
-#: src/readelf.c:626 src/readelf.c:953 src/strip.c:1133
+#: src/readelf.c:628 src/readelf.c:955 src/strip.c:1179
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "no se pudieron determinar el número de secciones: %s"
-#: src/readelf.c:644 src/readelf.c:1263 src/readelf.c:1471
+#: src/readelf.c:646 src/readelf.c:1265 src/readelf.c:1475
#, c-format
msgid "cannot get section: %s"
msgstr "No se puede encontrar la sección: %s"
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
-#: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
-#: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
-#: src/unstrip.c:1658 src/unstrip.c:1809 src/unstrip.c:1952 src/unstrip.c:2051
+#: src/readelf.c:655 src/readelf.c:1272 src/readelf.c:1483 src/readelf.c:12754
+#: src/unstrip.c:397 src/unstrip.c:428 src/unstrip.c:487 src/unstrip.c:608
+#: src/unstrip.c:629 src/unstrip.c:669 src/unstrip.c:885 src/unstrip.c:1216
+#: src/unstrip.c:1343 src/unstrip.c:1367 src/unstrip.c:1423 src/unstrip.c:1487
+#: src/unstrip.c:1662 src/unstrip.c:1813 src/unstrip.c:1956 src/unstrip.c:2055
#, c-format
msgid "cannot get section header: %s"
msgstr "No se puede obtener encabezamiento de sección: %s"
-#: src/readelf.c:661
+#: src/readelf.c:663
#, fuzzy, c-format
msgid "cannot get section name"
msgstr "no se puede obtener encabezamiento de sección\n"
-#: src/readelf.c:670 src/readelf.c:6576 src/readelf.c:10502 src/readelf.c:10604
-#: src/readelf.c:10782
+#: src/readelf.c:672 src/readelf.c:6628 src/readelf.c:10600 src/readelf.c:10702
+#: src/readelf.c:10880
#, c-format
msgid "cannot get %s content: %s"
msgstr "No se puede obtener el contenido %s: %s"
-#: src/readelf.c:686
+#: src/readelf.c:688
#, fuzzy, c-format
msgid "cannot create temp file '%s'"
msgstr "no se puede crear fichero nuevo '%s': %s"
-#: src/readelf.c:695
+#: src/readelf.c:697
#, fuzzy, c-format
msgid "cannot write section data"
msgstr "no se puede leer la sección de datos: %s"
-#: src/readelf.c:701 src/readelf.c:718 src/readelf.c:747
+#: src/readelf.c:703 src/readelf.c:720 src/readelf.c:749
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "error al cerrar el descriptor ELF: %s"
-#: src/readelf.c:708
+#: src/readelf.c:710
#, fuzzy, c-format
msgid "error while rewinding file descriptor"
msgstr "error al cerrar el descriptor ELF: %s"
-#: src/readelf.c:742
+#: src/readelf.c:744
#, c-format
msgid "'%s' is not an archive, cannot print archive index"
msgstr "'%s' no es un archivo, no se puede imprimir índice de archivo"
-#: src/readelf.c:846
+#: src/readelf.c:848
#, c-format
msgid "cannot stat input file"
msgstr "no sepudo stat archivo de entrada"
-#: src/readelf.c:848
+#: src/readelf.c:850
#, c-format
msgid "input file is empty"
msgstr "archivo de entrada vacío"
-#: src/readelf.c:850
+#: src/readelf.c:852
#, c-format
msgid "failed reading '%s': %s"
msgstr "Falló lectura de '%s': %s"
-#: src/readelf.c:879
+#: src/readelf.c:881
#, fuzzy, c-format
msgid "No such section '%s' in '%s'"
msgstr "No se puede obtener contenido de sección %zu en '%s': %s"
-#: src/readelf.c:938
+#: src/readelf.c:940
#, c-format
msgid "cannot read ELF header: %s"
msgstr "no se pudo leer encabezamiento ELF: %s"
-#: src/readelf.c:946
+#: src/readelf.c:948
#, c-format
msgid "cannot create EBL handle"
msgstr "no se puede crear EBL"
-#: src/readelf.c:959
+#: src/readelf.c:961
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
-#: src/readelf.c:991
+#: src/readelf.c:993
#, fuzzy, c-format
msgid "cannot read ELF: %s"
msgstr "no sepuede leer %s: %s"
-#: src/readelf.c:1052
+#: src/readelf.c:1054
msgid "NONE (None)"
msgstr "NONE (Ninguno)"
-#: src/readelf.c:1053
+#: src/readelf.c:1055
msgid "REL (Relocatable file)"
msgstr "REL (Fichero reubicable)"
-#: src/readelf.c:1054
+#: src/readelf.c:1056
msgid "EXEC (Executable file)"
msgstr "EXEC (Fichero ejecutable)"
-#: src/readelf.c:1055
+#: src/readelf.c:1057
msgid "DYN (Shared object file)"
msgstr "DYN (Fichero objeto compartido)"
-#: src/readelf.c:1056
+#: src/readelf.c:1058
msgid "CORE (Core file)"
msgstr "CORE (Fichero núcleo)"
-#: src/readelf.c:1061
+#: src/readelf.c:1063
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "OS Specific: (%x)\n"
#. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1063
+#: src/readelf.c:1065
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "Específico del procesador: (%x)\n"
-#: src/readelf.c:1073
+#: src/readelf.c:1075
msgid ""
"ELF Header:\n"
" Magic: "
@@ -4226,7 +4253,7 @@ msgstr ""
"Encabezamiento ELF:\n"
" Mágico: "
-#: src/readelf.c:1077
+#: src/readelf.c:1079
#, c-format
msgid ""
"\n"
@@ -4235,125 +4262,125 @@ msgstr ""
"\n"
" Clase: %s\n"
-#: src/readelf.c:1082
+#: src/readelf.c:1084
#, c-format
msgid " Data: %s\n"
msgstr " Datos: %s\n"
-#: src/readelf.c:1088
+#: src/readelf.c:1090
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " Versión ident: %hhd %s\n"
-#: src/readelf.c:1090 src/readelf.c:1112
+#: src/readelf.c:1092 src/readelf.c:1114
msgid "(current)"
msgstr "(actual)"
-#: src/readelf.c:1094
+#: src/readelf.c:1096
#, c-format
msgid " OS/ABI: %s\n"
msgstr " OS/ABI: %s\n"
-#: src/readelf.c:1097
+#: src/readelf.c:1099
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " Versión ABI: %hhd\n"
-#: src/readelf.c:1100
+#: src/readelf.c:1102
msgid " Type: "
msgstr " Tipo: "
-#: src/readelf.c:1105
+#: src/readelf.c:1107
#, c-format
msgid " Machine: %s\n"
msgstr " Máquina: %s\n"
-#: src/readelf.c:1107
+#: src/readelf.c:1109
#, fuzzy, c-format
msgid " Machine: <unknown>: 0x%x\n"
msgstr " Máquina: %s\n"
-#: src/readelf.c:1110
+#: src/readelf.c:1112
#, c-format
msgid " Version: %d %s\n"
msgstr " Versión: %d %s\n"
-#: src/readelf.c:1114
+#: src/readelf.c:1116
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " Dirección de punto de entrada: %#<PRIx64>\n"
-#: src/readelf.c:1117
+#: src/readelf.c:1119
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " Inicio de encabezamientos de programa: %<PRId64> %s\n"
-#: src/readelf.c:1118 src/readelf.c:1121
+#: src/readelf.c:1120 src/readelf.c:1123
msgid "(bytes into file)"
msgstr " (bytes en el archivo)"
-#: src/readelf.c:1120
+#: src/readelf.c:1122
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " Inicio de encabezamientos de sección: %<PRId64> %s\n"
-#: src/readelf.c:1123
+#: src/readelf.c:1125
#, c-format
msgid " Flags: %s\n"
msgstr " Indicadores: %s\n"
-#: src/readelf.c:1126
+#: src/readelf.c:1128
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " Tamaño de este encabezamiento: %<PRId16> %s\n"
-#: src/readelf.c:1127 src/readelf.c:1130 src/readelf.c:1147
+#: src/readelf.c:1129 src/readelf.c:1132 src/readelf.c:1149
msgid "(bytes)"
msgstr "(bytes)"
-#: src/readelf.c:1129
+#: src/readelf.c:1131
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr ""
" Tamaño de las entradas en encabezamiento del programa: %<PRId16> %s\n"
-#: src/readelf.c:1132
+#: src/readelf.c:1134
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " Cantidad de entradas de encabezados de programa: %<PRId16>"
-#: src/readelf.c:1139
+#: src/readelf.c:1141
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr " (%<PRIu32> in [0].sh_info)"
-#: src/readelf.c:1142 src/readelf.c:1159 src/readelf.c:1173
+#: src/readelf.c:1144 src/readelf.c:1161 src/readelf.c:1175
msgid " ([0] not available)"
msgstr " ([0] no disponible)"
-#: src/readelf.c:1146
+#: src/readelf.c:1148
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr ""
" Tamaño de las entradas en el encabezamiento de sección: %<PRId16> %s\n"
-#: src/readelf.c:1149
+#: src/readelf.c:1151
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " Cantidad de entradas en los encabezamientos de sección: %<PRId16>"
-#: src/readelf.c:1156
+#: src/readelf.c:1158
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " (%<PRIu32> en [0].sh_size)"
#. We managed to get the zeroth section.
-#: src/readelf.c:1169
+#: src/readelf.c:1171
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr " (%<PRIu32> en [0].sh_link)"
-#: src/readelf.c:1177
+#: src/readelf.c:1179
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
@@ -4362,19 +4389,19 @@ msgstr ""
" Ãndice de tabla de cadenas de sección de encabezamiento de : XINDEX%s\n"
"\n"
-#: src/readelf.c:1181
+#: src/readelf.c:1183
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
"\n"
msgstr " Ãndice de tabla de cadenas de sección de encabezamiento: %<PRId16>\n"
-#: src/readelf.c:1228 src/readelf.c:1436
+#: src/readelf.c:1230 src/readelf.c:1440
#, fuzzy, c-format
msgid "cannot get number of sections: %s"
msgstr "no se pudieron determinar el número de secciones: %s"
-#: src/readelf.c:1231
+#: src/readelf.c:1233
#, fuzzy, c-format
msgid ""
"There are %zd section headers, starting at offset %#<PRIx64>:\n"
@@ -4383,16 +4410,16 @@ msgstr ""
"Hay %d encabezamientos de sección, comenzando en compensación %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:1240
+#: src/readelf.c:1242
#, fuzzy, c-format
msgid "cannot get section header string table index: %s"
msgstr "no se puede obtener índice de cadena de encabezamiento de sección"
-#: src/readelf.c:1243
+#: src/readelf.c:1245
msgid "Section Headers:"
msgstr "encabezamientos de sección:"
-#: src/readelf.c:1246
+#: src/readelf.c:1248
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
@@ -4400,7 +4427,7 @@ msgstr ""
"[Nr] Nombre Tipo Dirección Off Tamaño Inf Al "
"Enlace banderas ES"
-#: src/readelf.c:1248
+#: src/readelf.c:1250
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
@@ -4408,36 +4435,36 @@ msgstr ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
-#: src/readelf.c:1253
+#: src/readelf.c:1255
msgid " [Compression Size Al]"
msgstr ""
-#: src/readelf.c:1255
+#: src/readelf.c:1257
msgid " [Compression Size Al]"
msgstr ""
-#: src/readelf.c:1331
+#: src/readelf.c:1335
#, fuzzy, c-format
msgid "bad compression header for section %zd: %s"
msgstr "No se puede obtener el encabezamiento de sección %zu: %s"
-#: src/readelf.c:1342
+#: src/readelf.c:1346
#, fuzzy, c-format
msgid "bad gnu compressed size for section %zd: %s"
msgstr "No se pueden obtener datos para la sección %d: %s"
-#: src/readelf.c:1360
+#: src/readelf.c:1364
msgid "Program Headers:"
msgstr "encabezamientos de programa:"
-#: src/readelf.c:1362
+#: src/readelf.c:1366
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" Tipo Compensación Dirección Virtual Dirección "
"Física Tamaño de Fichero Tamaño de Memoria Alineación de bandera"
-#: src/readelf.c:1365
+#: src/readelf.c:1369
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
@@ -4445,12 +4472,12 @@ msgstr ""
" Tipo Compensación Dirección Virtual Dirección "
"Física Tamaño de Fichero Tamaño de Memoria Alineación de bandera"
-#: src/readelf.c:1422
+#: src/readelf.c:1426
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[Solicitando intérprete de programa: %s]\n"
-#: src/readelf.c:1449
+#: src/readelf.c:1453
msgid ""
"\n"
" Section to Segment mapping:\n"
@@ -4460,12 +4487,12 @@ msgstr ""
" Sección para asignación de segmento:\n"
" Secciones de segmento..."
-#: src/readelf.c:1460 src/unstrip.c:2110 src/unstrip.c:2152 src/unstrip.c:2159
+#: src/readelf.c:1464 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
#, c-format
msgid "cannot get program header: %s"
msgstr "no se puede obtener memoria para encabezamiento del programa: %s"
-#: src/readelf.c:1606
+#: src/readelf.c:1610
#, c-format
msgid ""
"\n"
@@ -4480,7 +4507,7 @@ msgstr[1] ""
"\n"
"Grupo de sección COMDAT [%2zu] '%s' con firma '%s' contiene entradas %zu:\n"
-#: src/readelf.c:1611
+#: src/readelf.c:1615
#, c-format
msgid ""
"\n"
@@ -4495,31 +4522,31 @@ msgstr[1] ""
"\n"
"Grupo de sección [%2zu] '%s' con firma '%s' contiene entradas %zu:\n"
-#: src/readelf.c:1619
+#: src/readelf.c:1623
msgid "<INVALID SYMBOL>"
msgstr "<SÃMBOLO INVÃLIDO>"
-#: src/readelf.c:1633
+#: src/readelf.c:1637
msgid "<INVALID SECTION>"
msgstr "<SECCIÓN INVÃLIDA>"
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1660 src/readelf.c:2387 src/readelf.c:3488 src/readelf.c:12625
+#: src/readelf.c:12632 src/readelf.c:12676 src/readelf.c:12683
msgid "Couldn't uncompress section"
msgstr ""
-#: src/readelf.c:1661 src/readelf.c:2388 src/readelf.c:3489
+#: src/readelf.c:1665 src/readelf.c:2392 src/readelf.c:3493
#, fuzzy, c-format
msgid "cannot get section [%zd] header: %s"
msgstr "No se puede obtener encabezamiento de sección: %s"
-#: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:1809 src/readelf.c:2459 src/readelf.c:2717 src/readelf.c:2793
+#: src/readelf.c:3097 src/readelf.c:3171 src/readelf.c:5401
#, fuzzy, c-format
msgid "invalid sh_link value in section %zu"
msgstr ".debug_line section inválida"
-#: src/readelf.c:1808
+#: src/readelf.c:1812
#, c-format
msgid ""
"\n"
@@ -4540,36 +4567,36 @@ msgstr[1] ""
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'\n"
-#: src/readelf.c:1818
+#: src/readelf.c:1822
msgid " Type Value\n"
msgstr " Tipo Valor\n"
-#: src/readelf.c:1842
+#: src/readelf.c:1846
#, c-format
msgid "Shared library: [%s]\n"
msgstr "Biblioteca compartida: [%s]\n"
-#: src/readelf.c:1847
+#: src/readelf.c:1851
#, c-format
msgid "Library soname: [%s]\n"
msgstr "Nombre-so de la biblioteca: [%s]\n"
-#: src/readelf.c:1852
+#: src/readelf.c:1856
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "Rpath de la biblioteca: [%s]\n"
-#: src/readelf.c:1857
+#: src/readelf.c:1861
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "Ruta de ejecución de la biblioteca: [%s]\n"
-#: src/readelf.c:1877
+#: src/readelf.c:1881
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (bytes)\n"
-#: src/readelf.c:1990 src/readelf.c:2180
+#: src/readelf.c:1994 src/readelf.c:2184
#, c-format
msgid ""
"\n"
@@ -4578,7 +4605,7 @@ msgstr ""
"\n"
"Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
-#: src/readelf.c:2008 src/readelf.c:2198
+#: src/readelf.c:2012 src/readelf.c:2202
#, c-format
msgid ""
"\n"
@@ -4603,7 +4630,7 @@ msgstr[1] ""
#. The .rela.dyn section does not refer to a specific section but
#. instead of section index zero. Do not try to print a section
#. name.
-#: src/readelf.c:2023 src/readelf.c:2213
+#: src/readelf.c:2027 src/readelf.c:2217
#, c-format
msgid ""
"\n"
@@ -4620,29 +4647,29 @@ msgstr[1] ""
"Sección de reubicación [%2u] '%s' en compensación %#0<PRIx64> contiene "
"entradas %d:\n"
-#: src/readelf.c:2033
+#: src/readelf.c:2037
msgid " Offset Type Value Name\n"
msgstr " Compensación Tipo Valor Nombre\n"
-#: src/readelf.c:2035
+#: src/readelf.c:2039
msgid " Offset Type Value Name\n"
msgstr " Compensación Tipo Valor Nombre\n"
-#: src/readelf.c:2088 src/readelf.c:2099 src/readelf.c:2112 src/readelf.c:2133
-#: src/readelf.c:2145 src/readelf.c:2279 src/readelf.c:2291 src/readelf.c:2305
-#: src/readelf.c:2327 src/readelf.c:2340
+#: src/readelf.c:2092 src/readelf.c:2103 src/readelf.c:2116 src/readelf.c:2137
+#: src/readelf.c:2149 src/readelf.c:2283 src/readelf.c:2295 src/readelf.c:2309
+#: src/readelf.c:2331 src/readelf.c:2344
msgid "<INVALID RELOC>"
msgstr "<REUBIC INVÃLIDA>"
-#: src/readelf.c:2223
+#: src/readelf.c:2227
msgid " Offset Type Value Addend Name\n"
msgstr " Compensación Tipo Valor Nombre Adend\n"
-#: src/readelf.c:2225
+#: src/readelf.c:2229
msgid " Offset Type Value Addend Name\n"
msgstr " Compensación Tipo Valor Nombre Adend\n"
-#: src/readelf.c:2463
+#: src/readelf.c:2467
#, c-format
msgid ""
"\n"
@@ -4657,40 +4684,40 @@ msgstr[1] ""
"\n"
"La tabla de símbolos [%2u] '%s' contiene entradas %u:\n"
-#: src/readelf.c:2468
+#: src/readelf.c:2472
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] "símbolos locales %lu Tabla de cadena: [%2u] '%s'\n"
msgstr[1] " Símbolos locales %lu Tabla de cadenas: [%2u] '%s'\n"
-#: src/readelf.c:2476
+#: src/readelf.c:2480
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Núm: Valor Tamaño Tipo Unión Vis Nombre Ndx\n"
-#: src/readelf.c:2478
+#: src/readelf.c:2482
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Num: Valor Tamaño Tipo Unión Vis Nombre Ndx\n"
-#: src/readelf.c:2498
+#: src/readelf.c:2502
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2586
+#: src/readelf.c:2590
#, c-format
msgid "bad dynamic symbol"
msgstr "símbolo dinámico erróneo"
-#: src/readelf.c:2668
+#: src/readelf.c:2672
msgid "none"
msgstr "nada"
-#: src/readelf.c:2685
+#: src/readelf.c:2689
msgid "| <unknown>"
msgstr "| <desconocido>"
-#: src/readelf.c:2716
+#: src/readelf.c:2720
#, c-format
msgid ""
"\n"
@@ -4711,17 +4738,17 @@ msgstr[1] ""
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'\n"
-#: src/readelf.c:2737
+#: src/readelf.c:2741
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Versión: %hu Fichero: %s Conteo: %hu\n"
-#: src/readelf.c:2750
+#: src/readelf.c:2754
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Nombre: %s Banderas: %s Versión: %hu\n"
-#: src/readelf.c:2793
+#: src/readelf.c:2797
#, c-format
msgid ""
"\n"
@@ -4742,19 +4769,19 @@ msgstr[1] ""
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'\n"
-#: src/readelf.c:2821
+#: src/readelf.c:2825
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr ""
" %#06x: Versión: %hd Banderas: %s Ãndice: %hd Conteo: %hd Nombre: %s\n"
-#: src/readelf.c:2836
+#: src/readelf.c:2840
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: Principal %d: %s\n"
#. Print the header.
-#: src/readelf.c:3097
+#: src/readelf.c:3101
#, c-format
msgid ""
"\n"
@@ -4775,15 +4802,15 @@ msgstr[1] ""
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'"
-#: src/readelf.c:3125
+#: src/readelf.c:3129
msgid " 0 *local* "
msgstr " 0 *local* "
-#: src/readelf.c:3130
+#: src/readelf.c:3134
msgid " 1 *global* "
msgstr " 1 *global* "
-#: src/readelf.c:3172
+#: src/readelf.c:3176
#, c-format
msgid ""
"\n"
@@ -4808,22 +4835,22 @@ msgstr[1] ""
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'\n"
-#: src/readelf.c:3194
+#: src/readelf.c:3198
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " Longitud Número % of total Cobertura\n"
-#: src/readelf.c:3196
+#: src/readelf.c:3200
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:3203
+#: src/readelf.c:3207
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:3216
+#: src/readelf.c:3220
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
@@ -4832,37 +4859,37 @@ msgstr ""
" Número promedio de pruebas: búsqueda exitosa: %f\n"
" búsqueda sin éxito: %f\n"
-#: src/readelf.c:3234 src/readelf.c:3298 src/readelf.c:3364
+#: src/readelf.c:3238 src/readelf.c:3302 src/readelf.c:3368
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "No se pueden obtener datos para la sección %d: %s"
-#: src/readelf.c:3242
+#: src/readelf.c:3246
#, fuzzy, c-format
msgid "invalid data in sysv.hash section %d"
msgstr "Datos inválidos en sección [%zu] '%s'"
-#: src/readelf.c:3271
+#: src/readelf.c:3275
#, fuzzy, c-format
msgid "invalid chain in sysv.hash section %d"
msgstr "Datos inválidos en sección [%zu] '%s'"
-#: src/readelf.c:3306
+#: src/readelf.c:3310
#, fuzzy, c-format
msgid "invalid data in sysv.hash64 section %d"
msgstr "Datos inválidos en sección [%zu] '%s'"
-#: src/readelf.c:3337
+#: src/readelf.c:3341
#, fuzzy, c-format
msgid "invalid chain in sysv.hash64 section %d"
msgstr "Datos inválidos en sección [%zu] '%s'"
-#: src/readelf.c:3373
+#: src/readelf.c:3377
#, fuzzy, c-format
msgid "invalid data in gnu.hash section %d"
msgstr "Datos inválidos en sección [%zu] '%s'"
-#: src/readelf.c:3440
+#: src/readelf.c:3444
#, c-format
msgid ""
" Symbol Bias: %u\n"
@@ -4872,7 +4899,7 @@ msgstr ""
" Tamaño de Bitmask: %zu bytes %<PRIuFAST32>%% bits establecen segundo "
"cambio de dispersión: %u\n"
-#: src/readelf.c:3529
+#: src/readelf.c:3533
#, c-format
msgid ""
"\n"
@@ -4889,7 +4916,7 @@ msgstr[1] ""
"Sección de lista de biblioteca [%2zu] '%s' en compensación %#0<PRIx64> "
"contiene entradas %d:\n"
-#: src/readelf.c:3543
+#: src/readelf.c:3547
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
@@ -4897,7 +4924,7 @@ msgstr ""
" Biblioteca Marca de tiempo Indicadores "
"de versión de suma de verificación"
-#: src/readelf.c:3595
+#: src/readelf.c:3606
#, c-format
msgid ""
"\n"
@@ -4908,102 +4935,102 @@ msgstr ""
"Sección de atributos de objeto [%2zu] '%s' de %<PRIu64> bytes con "
"desplazamiento %#0<PRIx64>:\n"
-#: src/readelf.c:3612
+#: src/readelf.c:3623
msgid " Owner Size\n"
msgstr " Propietario Tamaño\n"
-#: src/readelf.c:3641
+#: src/readelf.c:3647
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
#. Unknown subsection, print and skip.
-#: src/readelf.c:3680
+#: src/readelf.c:3686
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
#. Tag_File
-#: src/readelf.c:3685
+#: src/readelf.c:3691
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " File: %11<PRIu32>\n"
-#: src/readelf.c:3734
+#: src/readelf.c:3740
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3737
+#: src/readelf.c:3743
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3740
+#: src/readelf.c:3746
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3750
+#: src/readelf.c:3756
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3753
+#: src/readelf.c:3759
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3823
+#: src/readelf.c:3829
#, fuzzy, c-format
msgid "sprintf failure"
msgstr "mprotect falló"
-#: src/readelf.c:4305
+#: src/readelf.c:4311
msgid "empty block"
msgstr "bloque vacío"
-#: src/readelf.c:4308
+#: src/readelf.c:4314
#, c-format
msgid "%zu byte block:"
msgstr "bloque de byte %zu:"
-#: src/readelf.c:4786
+#: src/readelf.c:4792
#, fuzzy, c-format
msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-#: src/readelf.c:4850
+#: src/readelf.c:4859
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
-#: src/readelf.c:4857
+#: src/readelf.c:4866
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> utilizado con offsetr de diferente tamaño"
-#: src/readelf.c:4864
+#: src/readelf.c:4873
#, fuzzy, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
-#: src/readelf.c:4871
+#: src/readelf.c:4880
#, fuzzy, c-format
msgid "%s %#<PRIx64> used with different attribute %s and %s"
msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
-#: src/readelf.c:4968
+#: src/readelf.c:4980
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <MATERIAL INUTIL SIN UTILIZAR EN EL RESTO DE LA SECCION>\n"
-#: src/readelf.c:4976
+#: src/readelf.c:4988
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <MATERIAL INUTIL NO UTILIZADO> ... %<PRIu64> bytes ...\n"
-#: src/readelf.c:5054
+#: src/readelf.c:5091
#, c-format
msgid ""
"\n"
@@ -5014,7 +5041,7 @@ msgstr ""
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" [ Código]\n"
-#: src/readelf.c:5062
+#: src/readelf.c:5099
#, c-format
msgid ""
"\n"
@@ -5023,20 +5050,20 @@ msgstr ""
"\n"
"Sección de abreviatura en compensación %<PRIu64>:\n"
-#: src/readelf.c:5075
+#: src/readelf.c:5112
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** error en lectura de abreviatura: %s\n"
-#: src/readelf.c:5091
+#: src/readelf.c:5128
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] compensación: %<PRId64>, hijos: %s, etiqueta: %s\n"
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6586 src/readelf.c:8323 src/readelf.c:9009 src/readelf.c:9445
-#: src/readelf.c:9690 src/readelf.c:9856 src/readelf.c:10243
-#: src/readelf.c:10303
+#: src/readelf.c:5161 src/readelf.c:5470 src/readelf.c:5637 src/readelf.c:6022
+#: src/readelf.c:6638 src/readelf.c:8375 src/readelf.c:9064 src/readelf.c:9537
+#: src/readelf.c:9788 src/readelf.c:9954 src/readelf.c:10341
+#: src/readelf.c:10401
#, c-format
msgid ""
"\n"
@@ -5045,52 +5072,52 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
-#: src/readelf.c:5137
+#: src/readelf.c:5174
#, fuzzy, c-format
msgid "cannot get .debug_addr section data: %s"
msgstr "no se pueden obtener datos de sección: %s"
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9054
+#: src/readelf.c:5274 src/readelf.c:5298 src/readelf.c:5682 src/readelf.c:9109
#, fuzzy, c-format
msgid " Length: %8<PRIu64>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9067
+#: src/readelf.c:5276 src/readelf.c:5313 src/readelf.c:5695 src/readelf.c:9122
#, fuzzy, c-format
msgid " DWARF version: %8<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9076
+#: src/readelf.c:5277 src/readelf.c:5322 src/readelf.c:5704 src/readelf.c:9131
#, fuzzy, c-format
msgid " Address size: %8<PRIu64>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9086
+#: src/readelf.c:5279 src/readelf.c:5332 src/readelf.c:5714 src/readelf.c:9141
#, fuzzy, c-format
msgid " Segment size: %8<PRIu64>\n"
msgstr " establecer archivo a %<PRIu64>\n"
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9071 src/readelf.c:10435
+#: src/readelf.c:5317 src/readelf.c:5699 src/readelf.c:9126 src/readelf.c:10533
#, fuzzy, c-format
msgid "Unknown version"
msgstr "versión desconocida"
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9081
+#: src/readelf.c:5327 src/readelf.c:5540 src/readelf.c:5709 src/readelf.c:9136
#, fuzzy, c-format
msgid "unsupported address size"
msgstr "no hay valor de dirección"
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9091
+#: src/readelf.c:5338 src/readelf.c:5551 src/readelf.c:5719 src/readelf.c:9146
#, c-format
msgid "unsupported segment size"
msgstr ""
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5391 src/readelf.c:5465
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "no se ha podido obtener contenido de .debug_aranges: %s"
-#: src/readelf.c:5369
+#: src/readelf.c:5406
#, c-format
msgid ""
"\n"
@@ -5105,12 +5132,12 @@ msgstr[1] ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entradas %zu:\n"
-#: src/readelf.c:5400
+#: src/readelf.c:5437
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:5402
+#: src/readelf.c:5439
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5118,7 +5145,7 @@ msgstr ""
" Inicio [%*zu]: %0#*<PRIx64>, longitud: %5<PRIu64>, compensación CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:5446 src/readelf.c:8350
+#: src/readelf.c:5483 src/readelf.c:8402
#, fuzzy, c-format
msgid ""
"\n"
@@ -5127,152 +5154,150 @@ msgstr ""
"\n"
"Tabla en compensación %Zu:\n"
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6610 src/readelf.c:8361
-#: src/readelf.c:9035
+#: src/readelf.c:5487 src/readelf.c:5663 src/readelf.c:6662 src/readelf.c:8413
+#: src/readelf.c:9090
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr "Datos inválidos en sección [%zu] '%s'"
-#: src/readelf.c:5466
+#: src/readelf.c:5503
#, fuzzy, c-format
msgid ""
"\n"
" Length: %6<PRIu64>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:5478
+#: src/readelf.c:5515
#, fuzzy, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5482
+#: src/readelf.c:5519
#, c-format
msgid "unsupported aranges version"
msgstr ""
-#: src/readelf.c:5493
+#: src/readelf.c:5530
#, fuzzy, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:5499
+#: src/readelf.c:5536
#, fuzzy, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:5510
+#: src/readelf.c:5547
#, fuzzy, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
"\n"
msgstr " establecer archivo a %<PRIu64>\n"
-#: src/readelf.c:5565
+#: src/readelf.c:5602
#, c-format
msgid " %zu padding bytes\n"
msgstr ""
-#: src/readelf.c:5609
+#: src/readelf.c:5646
#, fuzzy, c-format
msgid "cannot get .debug_rnglists content: %s"
msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
-#: src/readelf.c:5632 src/readelf.c:9041
+#: src/readelf.c:5669 src/readelf.c:9096
#, fuzzy, c-format
msgid ""
"Table at Offset 0x%<PRIx64>:\n"
"\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:5687 src/readelf.c:9096
+#: src/readelf.c:5724 src/readelf.c:9151
#, fuzzy, c-format
msgid " Offset entries: %8<PRIu64>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:5703 src/readelf.c:9112
+#: src/readelf.c:5740 src/readelf.c:9167
#, c-format
msgid " Unknown CU base: "
msgstr ""
-#: src/readelf.c:5705 src/readelf.c:9114
+#: src/readelf.c:5742 src/readelf.c:9169
#, c-format
msgid " CU [%6<PRIx64>] base: "
msgstr ""
-#: src/readelf.c:5711 src/readelf.c:9120
+#: src/readelf.c:5748 src/readelf.c:9175
#, c-format
msgid " Not associated with a CU.\n"
msgstr ""
-#: src/readelf.c:5722 src/readelf.c:9131
+#: src/readelf.c:5759 src/readelf.c:9186
#, c-format
msgid "too many offset entries for unit length"
msgstr ""
-#: src/readelf.c:5726 src/readelf.c:9135
+#: src/readelf.c:5763 src/readelf.c:9190
#, fuzzy, c-format
msgid " Offsets starting at 0x%<PRIx64>:\n"
msgstr " Propietario Tamaño\n"
-#: src/readelf.c:5778
+#: src/readelf.c:5815
#, fuzzy, c-format
msgid "invalid range list data"
msgstr "datos inválidos"
-#: src/readelf.c:5963 src/readelf.c:9423
+#: src/readelf.c:6000 src/readelf.c:9515
#, c-format
msgid ""
" %zu padding bytes\n"
"\n"
msgstr ""
-#: src/readelf.c:5980
+#: src/readelf.c:6017
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
-#: src/readelf.c:6016 src/readelf.c:9478
+#: src/readelf.c:6053 src/readelf.c:9570
#, c-format
msgid ""
"\n"
" Unknown CU base: "
msgstr ""
-#: src/readelf.c:6018 src/readelf.c:9480
+#: src/readelf.c:6055 src/readelf.c:9572
#, c-format
msgid ""
"\n"
" CU [%6<PRIx64>] base: "
msgstr ""
-#: src/readelf.c:6027 src/readelf.c:9506 src/readelf.c:9532
+#: src/readelf.c:6064 src/readelf.c:9598 src/readelf.c:9624
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <DATOS INVÃLIDOS>\n"
-#: src/readelf.c:6048 src/readelf.c:9612
-#, fuzzy, c-format
-msgid ""
-" [%6tx] base address\n"
-" "
-msgstr " [%6tx] (dirección base) %s\n"
+#: src/readelf.c:6089 src/readelf.c:9708
+#, fuzzy
+msgid "base address"
+msgstr "Establecer dirección a %s\n"
-#: src/readelf.c:6056 src/readelf.c:9620
+#: src/readelf.c:6099 src/readelf.c:9718
#, fuzzy, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] lista vacía\n"
-#: src/readelf.c:6311
+#: src/readelf.c:6359
#, fuzzy
msgid " <INVALID DATA>\n"
msgstr " <DATOS INVÃLIDOS>\n"
-#: src/readelf.c:6564
+#: src/readelf.c:6616
#, fuzzy, c-format
msgid "cannot get ELF: %s"
msgstr "no se puede leer encabezamiento ELF: %s"
-#: src/readelf.c:6582
+#: src/readelf.c:6634
#, c-format
msgid ""
"\n"
@@ -5282,7 +5307,7 @@ msgstr ""
"Sección de información de marco de llamada [%2zu] '%s' en compensación "
"%#<PRIx64>:\n"
-#: src/readelf.c:6632
+#: src/readelf.c:6684
#, c-format
msgid ""
"\n"
@@ -5291,65 +5316,65 @@ msgstr ""
"\n"
" [%6tx] Terminator cero\n"
-#: src/readelf.c:6733 src/readelf.c:6887
+#: src/readelf.c:6785 src/readelf.c:6939
#, c-format
msgid "invalid augmentation length"
msgstr "longitud de aumento inválida"
-#: src/readelf.c:6748
+#: src/readelf.c:6800
msgid "FDE address encoding: "
msgstr "Codificación de dirección FDE:"
-#: src/readelf.c:6754
+#: src/readelf.c:6806
msgid "LSDA pointer encoding: "
msgstr "Codificación de puntero LSDA:"
-#: src/readelf.c:6864
+#: src/readelf.c:6916
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:6871
+#: src/readelf.c:6923
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:6908
+#: src/readelf.c:6960
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr "Puntero %-26sLSDA: %#<PRIx64>\n"
-#: src/readelf.c:6993
+#: src/readelf.c:7045
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
msgstr "No se puede obtener código de atributo: %s"
-#: src/readelf.c:7003
+#: src/readelf.c:7055
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
msgstr "No se puede obtener forma de atributo: %s"
-#: src/readelf.c:7025
+#: src/readelf.c:7077
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
msgstr "No se puede obtener valor: %s"
-#: src/readelf.c:7355
+#: src/readelf.c:7407
#, fuzzy, c-format
msgid "invalid file (%<PRId64>): %s"
msgstr "Archivo inválido"
-#: src/readelf.c:7359
+#: src/readelf.c:7411
#, fuzzy, c-format
msgid "no srcfiles for CU [%<PRIx64>]"
msgstr " establecer archivo a %<PRIu64>\n"
-#: src/readelf.c:7363
+#: src/readelf.c:7415
#, fuzzy, c-format
msgid "couldn't get DWARF CU: %s"
msgstr "no se puede leer encabezamiento ELF: %s"
-#: src/readelf.c:7676
+#: src/readelf.c:7728
#, c-format
msgid ""
"\n"
@@ -5360,12 +5385,12 @@ msgstr ""
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" [Offset]\n"
-#: src/readelf.c:7726
+#: src/readelf.c:7778
#, fuzzy, c-format
msgid "cannot get next unit: %s"
msgstr "No se puede obtener próximo DIE: %s"
-#: src/readelf.c:7745
+#: src/readelf.c:7797
#, fuzzy, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -5378,7 +5403,7 @@ msgstr ""
"Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
" Tipo de firma: %#<PRIx64>, Tipo de compensación: %#<PRIx64>\n"
-#: src/readelf.c:7757
+#: src/readelf.c:7809
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -5389,39 +5414,39 @@ msgstr ""
" Versión: %<PRIu16>, Compensación de sección de abreviatura: %<PRIu64>, "
"Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
-#: src/readelf.c:7767 src/readelf.c:7930
+#: src/readelf.c:7819 src/readelf.c:7982
#, c-format
msgid " Unit type: %s (%<PRIu8>)"
msgstr ""
-#: src/readelf.c:7794
+#: src/readelf.c:7846
#, c-format
msgid "unknown version (%d) or unit type (%d)"
msgstr ""
-#: src/readelf.c:7823
+#: src/readelf.c:7875
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "no se puede obtener DIE en compensación: %s"
-#: src/readelf.c:7832
+#: src/readelf.c:7884
#, fuzzy, c-format
msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
msgstr ""
"no se ha podido obtener etiqueta de DIE en compensación%<PRIu64> en sección "
"'%s': %s"
-#: src/readelf.c:7870
+#: src/readelf.c:7922
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "No se puede obtener próximo DIE: %s\n"
-#: src/readelf.c:7878
+#: src/readelf.c:7930
#, c-format
msgid "cannot get next DIE: %s"
msgstr "No se puede obtener próximo DIE: %s"
-#: src/readelf.c:7922
+#: src/readelf.c:7974
#, fuzzy, c-format
msgid ""
" Split compilation unit at offset %<PRIu64>:\n"
@@ -5432,7 +5457,7 @@ msgstr ""
" Versión: %<PRIu16>, Compensación de sección de abreviatura: %<PRIu64>, "
"Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
-#: src/readelf.c:7974
+#: src/readelf.c:8026
#, fuzzy, c-format
msgid ""
"\n"
@@ -5442,18 +5467,18 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
-#: src/readelf.c:8306
+#: src/readelf.c:8358
#, fuzzy, c-format
msgid "unknown form: %s"
msgstr "Forma %<PRIx64> desconocida"
-#: src/readelf.c:8337
+#: src/readelf.c:8389
#, 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:8439
+#: src/readelf.c:8491
#, fuzzy, c-format
msgid ""
"\n"
@@ -5484,34 +5509,34 @@ msgstr ""
"\n"
"Códigos operativos:\n"
-#: src/readelf.c:8461
+#: src/readelf.c:8513
#, fuzzy, c-format
msgid "cannot handle .debug_line version: %u\n"
msgstr "no se puede obtener versión de símbolo: %s"
-#: src/readelf.c:8469
+#: src/readelf.c:8521
#, fuzzy, c-format
msgid "cannot handle address size: %u\n"
msgstr "no hay valor de dirección"
-#: src/readelf.c:8477
+#: src/readelf.c:8529
#, fuzzy, c-format
msgid "cannot handle segment selector size: %u\n"
msgstr "No se puede encontrar la sección: %s"
-#: src/readelf.c:8487
+#: src/readelf.c:8539
#, 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:8502
+#: src/readelf.c:8554
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] " [%*<PRIuFAST8>] argumento %hhu \n"
msgstr[1] " [%*<PRIuFAST8>] argumento %hhu\n"
-#: src/readelf.c:8513
+#: src/readelf.c:8565
msgid ""
"\n"
"Directory table:"
@@ -5519,12 +5544,12 @@ msgstr ""
"\n"
"Tabla de Directorio:"
-#: src/readelf.c:8519 src/readelf.c:8596
+#: src/readelf.c:8571 src/readelf.c:8648
#, fuzzy, c-format
msgid " ["
msgstr " %s: %s\n"
-#: src/readelf.c:8590
+#: src/readelf.c:8642
#, fuzzy
msgid ""
"\n"
@@ -5533,7 +5558,7 @@ msgstr ""
"\n"
" Tabla de sitio de llamada:"
-#: src/readelf.c:8651
+#: src/readelf.c:8703
#, fuzzy
msgid " Entry Dir Time Size Name"
msgstr ""
@@ -5541,7 +5566,16 @@ msgstr ""
"Tabla de nombre de archivo:\n"
" Directorio de entrada Tiempo Tamaño Nombre"
-#: src/readelf.c:8688
+#: src/readelf.c:8742
+#, fuzzy
+msgid ""
+"\n"
+"No line number statements."
+msgstr ""
+"\n"
+" Declaraciones de número de Línea:"
+
+#: src/readelf.c:8746
msgid ""
"\n"
"Line number statements:"
@@ -5549,121 +5583,121 @@ msgstr ""
"\n"
" Declaraciones de número de Línea:"
-#: src/readelf.c:8711
+#: src/readelf.c:8766
#, 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:8745
+#: src/readelf.c:8800
#, fuzzy, c-format
msgid " special opcode %u: address+%u = "
msgstr " opcode especial %u: dirección+%u = %s, línea%+d = %zu\n"
-#: src/readelf.c:8749
+#: src/readelf.c:8804
#, fuzzy, c-format
msgid ", op_index = %u, line%+d = %zu\n"
msgstr ""
" opcode especial %u: dirección+%u = %s, op_index = %u, línea%+d = %zu\n"
-#: src/readelf.c:8752
+#: src/readelf.c:8807
#, c-format
msgid ", line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:8770
+#: src/readelf.c:8825
#, c-format
msgid " extended opcode %u: "
msgstr " Código operativo extendido %u: "
-#: src/readelf.c:8775
+#: src/readelf.c:8830
#, fuzzy
msgid " end of sequence"
msgstr "Fin de secuencia"
-#: src/readelf.c:8793
+#: src/readelf.c:8848
#, fuzzy, c-format
msgid " set address to "
msgstr "Establecer dirección a %s\n"
-#: src/readelf.c:8821
+#: src/readelf.c:8876
#, fuzzy, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
"definir nuevo archivo: dir=%u, mtime=%<PRIu64>, longitud=%<PRIu64>, nombre="
"%s\n"
-#: src/readelf.c:8835
+#: src/readelf.c:8890
#, c-format
msgid " set discriminator to %u\n"
msgstr " establecer discriminador a %u\n"
#. Unknown, ignore it.
-#: src/readelf.c:8840
+#: src/readelf.c:8895
#, fuzzy
msgid " unknown opcode"
msgstr "código operativo desconocido "
#. Takes no argument.
-#: src/readelf.c:8852
+#: src/readelf.c:8907
msgid " copy"
msgstr "Copiar"
-#: src/readelf.c:8863
+#: src/readelf.c:8918
#, fuzzy, c-format
msgid " advance address by %u to "
msgstr "Dirección de avance por %u a %s\n"
-#: src/readelf.c:8867 src/readelf.c:8928
+#: src/readelf.c:8922 src/readelf.c:8983
#, c-format
msgid ", op_index to %u"
msgstr ""
-#: src/readelf.c:8879
+#: src/readelf.c:8934
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " línea de avance por la constante %d a %<PRId64>\n"
-#: src/readelf.c:8889
+#: src/readelf.c:8944
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " establecer archivo a %<PRIu64>\n"
-#: src/readelf.c:8900
+#: src/readelf.c:8955
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " Establecer columna a %<PRIu64>\n"
-#: src/readelf.c:8907
+#: src/readelf.c:8962
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr "Establecer '%s' a %<PRIuFAST8>\n"
#. Takes no argument.
-#: src/readelf.c:8913
+#: src/readelf.c:8968
msgid " set basic block flag"
msgstr "Establecer bandera de bloque básico"
-#: src/readelf.c:8924
+#: src/readelf.c:8979
#, fuzzy, c-format
msgid " advance address by constant %u to "
msgstr "Dirección de avance por constante %u a %s\n"
-#: src/readelf.c:8944
+#: src/readelf.c:8999
#, fuzzy, c-format
msgid " advance address by fixed value %u to \n"
msgstr "dirección de avance por valor corregido %u a %s\n"
#. Takes no argument.
-#: src/readelf.c:8954
+#: src/readelf.c:9009
msgid " set prologue end flag"
msgstr " Establecer bandera prologue_end"
#. Takes no argument.
-#: src/readelf.c:8959
+#: src/readelf.c:9014
msgid " set epilogue begin flag"
msgstr " Establecer bandera epilogue_begin"
-#: src/readelf.c:8969
+#: src/readelf.c:9024
#, c-format
msgid " set isa to %u\n"
msgstr " establecer isa para %u\n"
@@ -5671,105 +5705,110 @@ 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:8978
+#: src/readelf.c:9033
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] " opcódigo con parámetro %<PRIu8> desconocido:"
msgstr[1] " opcódigo con parámetros %<PRIu8> desconocido:"
-#: src/readelf.c:9018
+#: src/readelf.c:9073
#, fuzzy, c-format
msgid "cannot get .debug_loclists content: %s"
msgstr "no es posible obtener contenido de .debug_loc: %s"
-#: src/readelf.c:9187
+#: src/readelf.c:9239
+#, fuzzy, c-format
+msgid " <INVALID DATA>\n"
+msgstr " <DATOS INVÃLIDOS>\n"
+
+#: src/readelf.c:9279
#, fuzzy, c-format
msgid "invalid loclists data"
msgstr "datos inválidos"
-#: src/readelf.c:9440
+#: src/readelf.c:9532
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "no es posible obtener contenido de .debug_loc: %s"
-#: src/readelf.c:9647 src/readelf.c:10691
+#: src/readelf.c:9745 src/readelf.c:10789
msgid " <INVALID DATA>\n"
msgstr " <DATOS INVÃLIDOS>\n"
-#: src/readelf.c:9702 src/readelf.c:9865
+#: src/readelf.c:9800 src/readelf.c:9963
#, 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:9782
+#: src/readelf.c:9880
#, 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:9805
+#: src/readelf.c:9903
#, 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:9906
+#: src/readelf.c:10004
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " Propietario Tamaño\n"
-#: src/readelf.c:9918
+#: src/readelf.c:10016
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:9924 src/readelf.c:10811
+#: src/readelf.c:10022 src/readelf.c:10909
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:9931
+#: src/readelf.c:10029
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>"
msgstr " Dirección de punto de entrada: %#<PRIx64>\n"
-#: src/readelf.c:9960
+#: src/readelf.c:10058
#, fuzzy, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:9968
+#: src/readelf.c:10066
#, fuzzy, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:9993
+#: src/readelf.c:10091
#, fuzzy, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " opcódigo con parámetro %<PRIu8> desconocido:"
-#: src/readelf.c:10000
+#: src/readelf.c:10098
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:10012
+#: src/readelf.c:10110
#, fuzzy, c-format
msgid " %<PRIu8> arguments:"
msgstr " [%*<PRIuFAST8>] argumento %hhu \n"
-#: src/readelf.c:10027
+#: src/readelf.c:10125
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:10228
+#: src/readelf.c:10326
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
" Compensación [%5d] DIE: %6<PRId64>, Compensación CU DIE: %6<PRId64>, "
"nombre: %s\n"
-#: src/readelf.c:10272
+#: src/readelf.c:10370
#, c-format
msgid ""
"\n"
@@ -5780,37 +5819,37 @@ msgstr ""
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" %*s String\n"
-#: src/readelf.c:10287
+#: src/readelf.c:10385
#, fuzzy, c-format
msgid " *** error, missing string terminator\n"
msgstr " *** error en lectura de cadenas: %s\n"
-#: src/readelf.c:10316
+#: src/readelf.c:10414
#, fuzzy, c-format
msgid "cannot get .debug_str_offsets section data: %s"
msgstr "no se pueden obtener datos de sección: %s"
-#: src/readelf.c:10415
+#: src/readelf.c:10513
#, fuzzy, c-format
msgid " Length: %8<PRIu64>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:10417
+#: src/readelf.c:10515
#, fuzzy, c-format
msgid " Offset size: %8<PRIu8>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:10431
+#: src/readelf.c:10529
#, fuzzy, c-format
msgid " DWARF version: %8<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10440
+#: src/readelf.c:10538
#, fuzzy, c-format
msgid " Padding: %8<PRIx16>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:10494
+#: src/readelf.c:10592
#, c-format
msgid ""
"\n"
@@ -5819,7 +5858,7 @@ msgstr ""
"\n"
"Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:10596
+#: src/readelf.c:10694
#, c-format
msgid ""
"\n"
@@ -5828,22 +5867,22 @@ msgstr ""
"\n"
"Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:10619
+#: src/readelf.c:10717
#, c-format
msgid " LPStart encoding: %#x "
msgstr "Codificación LPStart: %#x "
-#: src/readelf.c:10631
+#: src/readelf.c:10729
#, c-format
msgid " TType encoding: %#x "
msgstr "Codificación TType: %#x "
-#: src/readelf.c:10646
+#: src/readelf.c:10744
#, c-format
msgid " Call site encoding: %#x "
msgstr "Codificación de sitio de llamada: %#x "
-#: src/readelf.c:10659
+#: src/readelf.c:10757
msgid ""
"\n"
" Call site table:"
@@ -5851,7 +5890,7 @@ msgstr ""
"\n"
" Tabla de sitio de llamada:"
-#: src/readelf.c:10673
+#: src/readelf.c:10771
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5864,12 +5903,12 @@ msgstr ""
" Landing pad: %#<PRIx64>\n"
" Action: %u\n"
-#: src/readelf.c:10746
+#: src/readelf.c:10844
#, c-format
msgid "invalid TType encoding"
msgstr "Codificación TType inválida"
-#: src/readelf.c:10773
+#: src/readelf.c:10871
#, fuzzy, c-format
msgid ""
"\n"
@@ -5878,37 +5917,37 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:10802
+#: src/readelf.c:10900
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10820
+#: src/readelf.c:10918
#, fuzzy, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:10827
+#: src/readelf.c:10925
#, fuzzy, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:10834
+#: src/readelf.c:10932
#, fuzzy, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:10841
+#: src/readelf.c:10939
#, fuzzy, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:10848
+#: src/readelf.c:10946
#, fuzzy, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:10862
+#: src/readelf.c:10960
#, fuzzy, c-format
msgid ""
"\n"
@@ -5917,7 +5956,7 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:10887
+#: src/readelf.c:10985
#, fuzzy, c-format
msgid ""
"\n"
@@ -5926,7 +5965,7 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:10916
+#: src/readelf.c:11014
#, fuzzy, c-format
msgid ""
"\n"
@@ -5935,7 +5974,7 @@ msgstr ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:10948
+#: src/readelf.c:11046
#, fuzzy, c-format
msgid ""
"\n"
@@ -5944,18 +5983,18 @@ msgstr ""
"\n"
"Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
-#: src/readelf.c:11086
+#: src/readelf.c:11184
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "no se puede depurar descriptor de contexto: %s"
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11552 src/readelf.c:12179 src/readelf.c:12290
+#: src/readelf.c:12348
#, c-format
msgid "cannot convert core note data: %s"
msgstr "no es posible convertir datos de la nota principal: %s"
-#: src/readelf.c:11812
+#: src/readelf.c:11915
#, c-format
msgid ""
"\n"
@@ -5964,21 +6003,21 @@ msgstr ""
"\n"
"%*s... <repeats %u more times> ..."
-#: src/readelf.c:12319
+#: src/readelf.c:12427
msgid " Owner Data size Type\n"
msgstr " Owner Data size Type\n"
-#: src/readelf.c:12348
+#: src/readelf.c:12456
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:12400
+#: src/readelf.c:12508
#, fuzzy, c-format
msgid "cannot get content of note: %s"
msgstr "no se puede obtener el contenido de sección de nota: %s"
-#: src/readelf.c:12434
+#: src/readelf.c:12542
#, c-format
msgid ""
"\n"
@@ -5987,7 +6026,7 @@ msgstr ""
"\n"
"Sección de nota [%2zu] '%s' de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
-#: src/readelf.c:12457
+#: src/readelf.c:12565
#, c-format
msgid ""
"\n"
@@ -5996,7 +6035,7 @@ msgstr ""
"\n"
"Segmento de nota de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
-#: src/readelf.c:12504
+#: src/readelf.c:12612
#, fuzzy, c-format
msgid ""
"\n"
@@ -6005,12 +6044,12 @@ msgstr ""
"\n"
"Sección [%Zu] '%s' no tiene datos para volcar.\n"
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12639 src/readelf.c:12690
#, 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:12536
+#: src/readelf.c:12644
#, fuzzy, c-format
msgid ""
"\n"
@@ -6020,7 +6059,7 @@ msgstr ""
"Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:12541
+#: src/readelf.c:12649
#, fuzzy, c-format
msgid ""
"\n"
@@ -6031,7 +6070,7 @@ msgstr ""
"Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:12555
+#: src/readelf.c:12663
#, fuzzy, c-format
msgid ""
"\n"
@@ -6040,7 +6079,7 @@ msgstr ""
"\n"
"Sección [%Zu] '%s' no tiene datos para volcar.\n"
-#: src/readelf.c:12587
+#: src/readelf.c:12695
#, fuzzy, c-format
msgid ""
"\n"
@@ -6050,7 +6089,7 @@ msgstr ""
"Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:12592
+#: src/readelf.c:12700
#, fuzzy, c-format
msgid ""
"\n"
@@ -6061,7 +6100,7 @@ msgstr ""
"Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:12641
+#: src/readelf.c:12749
#, c-format
msgid ""
"\n"
@@ -6070,7 +6109,7 @@ msgstr ""
"\n"
"sección [%lu] no existe"
-#: src/readelf.c:12671
+#: src/readelf.c:12779
#, c-format
msgid ""
"\n"
@@ -6079,12 +6118,12 @@ msgstr ""
"\n"
"sección '%s' no existe"
-#: src/readelf.c:12728
+#: src/readelf.c:12836
#, 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:12731
+#: src/readelf.c:12839
#, c-format
msgid ""
"\n"
@@ -6093,7 +6132,7 @@ msgstr ""
"\n"
"Archivo '%s' no tiene índice de símbolo\n"
-#: src/readelf.c:12735
+#: src/readelf.c:12843
#, fuzzy, c-format
msgid ""
"\n"
@@ -6102,12 +6141,12 @@ msgstr ""
"\n"
"Ãndice de archivo '%s' tiene %Zu entradas:\n"
-#: src/readelf.c:12753
+#: src/readelf.c:12861
#, 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:12758
+#: src/readelf.c:12866
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Miembro de archivo contiene '%s':\n"
@@ -6174,7 +6213,7 @@ msgstr "Radical inválido: %s"
msgid "%s: file format not recognized"
msgstr "%s: No se reconoce el formato del fichero"
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
#, c-format
msgid " (ex %s)"
msgstr " (ex %s)"
@@ -6184,124 +6223,124 @@ msgstr " (ex %s)"
msgid "cannot get section header"
msgstr "no se puede obtener encabezamiento de sección\n"
-#: src/size.c:582
+#: src/size.c:585
msgid "(TOTALS)\n"
msgstr "(TOTALES)\n"
-#: src/stack.c:482
+#: src/stack.c:487
#, c-format
msgid "-p PID should be a positive process id."
msgstr ""
-#: src/stack.c:488
+#: src/stack.c:493
#, fuzzy, c-format
msgid "Cannot open core file '%s'"
msgstr "Imposible abrir el archivo '%s'"
-#: src/stack.c:548
+#: src/stack.c:553
#, c-format
msgid "-n MAXFRAMES should be 0 or higher."
msgstr ""
-#: src/stack.c:560
+#: src/stack.c:565
#, c-format
msgid "-e EXEC needs a core given by --core."
msgstr ""
-#: src/stack.c:564
+#: src/stack.c:569
#, c-format
msgid "-1 needs a thread id given by -p."
msgstr ""
-#: src/stack.c:568
+#: src/stack.c:573
#, c-format
msgid "One of -p PID or --core COREFILE should be given."
msgstr ""
-#: src/stack.c:640
+#: src/stack.c:645
#, fuzzy
msgid "Show stack of process PID"
msgstr "No se puede crear el árbol de búsqueda"
-#: src/stack.c:642
+#: src/stack.c:647
msgid "Show stack found in COREFILE"
msgstr ""
-#: src/stack.c:643
+#: src/stack.c:648
msgid "(optional) EXECUTABLE that produced COREFILE"
msgstr ""
-#: src/stack.c:647
+#: src/stack.c:652
msgid "Output selection options:"
msgstr "Opciones de selección de salida:"
-#: src/stack.c:649
+#: src/stack.c:654
#, fuzzy
msgid "Additionally show frame activation"
msgstr "Selección de salida adicional:"
-#: src/stack.c:651
+#: src/stack.c:656
msgid "Additionally try to lookup DWARF debuginfo name for frame address"
msgstr ""
-#: src/stack.c:654
+#: src/stack.c:659
msgid ""
"Additionally show inlined function frames using DWARF debuginfo if available "
"(implies -d)"
msgstr ""
-#: src/stack.c:656
+#: src/stack.c:661
msgid "Additionally show module file information"
msgstr ""
-#: src/stack.c:658
+#: src/stack.c:663
#, fuzzy
msgid "Additionally show source file information"
msgstr "Selección de salida adicional:"
-#: src/stack.c:660
+#: src/stack.c:665
msgid ""
"Show all additional information (activation, debugname, inlines, module and "
"source)"
msgstr ""
-#: src/stack.c:662
+#: src/stack.c:667
msgid "Do not resolve address to function symbol name"
msgstr ""
-#: src/stack.c:664
+#: src/stack.c:669
msgid "Show raw function symbol names, do not try to demangle names"
msgstr ""
-#: src/stack.c:666
+#: src/stack.c:671
msgid "Show module build-id, load address and pc offset"
msgstr ""
-#: src/stack.c:668
+#: src/stack.c:673
msgid "Show the backtrace of only one thread"
msgstr ""
-#: src/stack.c:670
+#: src/stack.c:675
msgid "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)"
msgstr ""
-#: src/stack.c:672
+#: src/stack.c:677
msgid "Show module memory map with build-id, elf and debug files detected"
msgstr ""
-#: src/stack.c:680
+#: src/stack.c:685
msgid ""
"Print a stack for each thread in a process or core file.\n"
"\n"
"Program exits with return code 0 if all frames were shown without any "
"errors. If some frames were shown, but there were some non-fatal errors, "
"possibly causing an incomplete backtrace, the program exits with return code "
-"1. If no frames could be shown, or a fatal error occured the program exits "
+"1. If no frames could be shown, or a fatal error occurred the program exits "
"with return code 2. If the program was invoked with bad or missing "
"arguments it will exit with return code 64."
msgstr ""
-#: src/stack.c:755
+#: src/stack.c:760
#, c-format
msgid "Couldn't show any frames."
msgstr ""
@@ -6320,7 +6359,7 @@ msgstr "Sólo secuencias NUL-terminated de caracteres MIN-LEN o más se imprimen
#: src/strings.c:69
msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
+"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
"{B,L} = 32-bit"
msgstr ""
"Seleccionar tamaño de caracter y Endianess: s = 7-bit, S = 8-bit, {b,l} = 16-"
@@ -6401,14 +6440,14 @@ msgstr "Copiar marcas de tiempo modificadas/acceso a la salida"
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)"
+"operation is not reversible, needs -f)"
msgstr ""
#: src/strip.c:87
msgid ""
"Similar to --reloc-debug-sections, but resolve all trivial relocations "
"between debug sections in place. No other stripping is performed (operation "
-"is not reversable, incompatible with -f, -g, --remove-comment and --remove-"
+"is not reversible, incompatible with -f, -g, --remove-comment and --remove-"
"section)"
msgstr ""
@@ -6465,22 +6504,22 @@ msgstr "opción -F especificada dos veces"
msgid "cannot both keep and remove .comment section"
msgstr "Quitar sección de comentario"
-#: src/strip.c:574
+#: src/strip.c:481
#, fuzzy, c-format
msgid "bad relocation"
msgstr "Mostrar reubicaciones"
-#: src/strip.c:726 src/strip.c:750
+#: src/strip.c:747 src/strip.c:771
#, c-format
msgid "cannot stat input file '%s'"
msgstr "no sepuede stat fichero de entrada '%s'"
-#: src/strip.c:740
+#: src/strip.c:761
#, c-format
msgid "while opening '%s'"
msgstr "mientras se abría '%s'"
-#: src/strip.c:778
+#: src/strip.c:799
#, 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"
@@ -6491,265 +6530,265 @@ 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:790
+#: src/strip.c:811
#, 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:1001
+#: src/strip.c:1047
#, c-format
msgid "cannot open EBL backend"
msgstr "No se puede abrir el segundo plano EBL"
-#: src/strip.c:1046
+#: src/strip.c:1092
#, fuzzy, c-format
msgid "cannot get number of phdrs"
msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
-#: src/strip.c:1060 src/strip.c:1103
+#: src/strip.c:1106 src/strip.c:1149
#, fuzzy, c-format
msgid "cannot create new ehdr for file '%s': %s"
msgstr "no se puede crear fichero nuevo '%s': %s"
-#: src/strip.c:1070 src/strip.c:1113
+#: src/strip.c:1116 src/strip.c:1159
#, fuzzy, c-format
msgid "cannot create new phdr for file '%s': %s"
msgstr "no se puede crear fichero nuevo '%s': %s"
-#: src/strip.c:1194
+#: src/strip.c:1240
#, c-format
msgid "illformed file '%s'"
msgstr "Fichero illformed '%s'"
-#: src/strip.c:1204
+#: src/strip.c:1250
#, fuzzy, c-format
msgid "Cannot remove allocated section '%s'"
msgstr "No se puede asignar sección PLT: %s"
-#: src/strip.c:1213
+#: src/strip.c:1259
#, fuzzy, c-format
msgid "Cannot both keep and remove section '%s'"
msgstr "No se puede añadir nueva sección: %s"
-#: src/strip.c:1573 src/strip.c:1688
+#: src/strip.c:1624 src/strip.c:1739
#, c-format
msgid "while generating output file: %s"
msgstr "al generar fichero de salida: %s"
-#: src/strip.c:1637
+#: src/strip.c:1688
#, fuzzy, c-format
msgid "%s: error while updating ELF header: %s"
msgstr "%s: error al crear encabezamiento ELF: %s"
-#: src/strip.c:1646
+#: src/strip.c:1697
#, fuzzy, c-format
msgid "%s: error while getting shdrstrndx: %s"
msgstr "%s: error al crear encabezamiento ELF: %s"
-#: src/strip.c:1654 src/strip.c:2535
+#: src/strip.c:1705 src/strip.c:2550
#, fuzzy, c-format
msgid "%s: error updating shdrstrndx: %s"
msgstr "%s: error al crear encabezamiento ELF: %s"
-#: src/strip.c:1671
+#: src/strip.c:1722
#, c-format
msgid "while preparing output for '%s'"
msgstr "al preparar salida para '%s'"
-#: src/strip.c:1733 src/strip.c:1796
+#: src/strip.c:1784 src/strip.c:1847
#, c-format
msgid "while create section header section: %s"
msgstr "al crear sección de encabezamiento de sección: %s"
-#: src/strip.c:1742
+#: src/strip.c:1793
#, c-format
msgid "cannot allocate section data: %s"
msgstr "no se puede asignar espacio para los datos: %s"
-#: src/strip.c:1808
+#: src/strip.c:1859
#, 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:1815
+#: src/strip.c:1866
#, 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:2028
+#: src/strip.c:2079
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr ""
-#: src/strip.c:2451 src/strip.c:2559
+#: src/strip.c:2466 src/strip.c:2574
#, c-format
msgid "while writing '%s': %s"
msgstr "al escribir '%s': %s"
-#: src/strip.c:2462
+#: src/strip.c:2477
#, c-format
msgid "while creating '%s'"
msgstr "al crear '%s'"
-#: src/strip.c:2485
+#: src/strip.c:2500
#, 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:2526
+#: src/strip.c:2541
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: error al crear encabezamiento ELF: %s"
-#: src/strip.c:2544
+#: src/strip.c:2559
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: error al leer el fichero: %s"
-#: src/strip.c:2584 src/strip.c:2604
+#: src/strip.c:2599 src/strip.c:2619
#, c-format
msgid "while writing '%s'"
msgstr "al escribir '%s'"
-#: src/strip.c:2641 src/strip.c:2648
+#: src/strip.c:2656 src/strip.c:2663
#, c-format
msgid "error while finishing '%s': %s"
msgstr "Error al terminar '%s': %s"
-#: src/strip.c:2665 src/strip.c:2741
+#: src/strip.c:2680 src/strip.c:2756
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "no es posible establecer acceso y fecha de modificación de '%s'"
-#: src/unstrip.c:70
+#: src/unstrip.c:66
msgid "Match MODULE against file names, not module names"
msgstr "Coincidir MODULO con nombres de archivo, no con nombres de módulo"
-#: src/unstrip.c:71
+#: src/unstrip.c:67
msgid "Silently skip unfindable files"
msgstr "Omitir silenciosamente los archivos perdidos"
-#: src/unstrip.c:74
+#: src/unstrip.c:70
msgid "Place output into FILE"
msgstr "Colocar salida en FICHERO"
-#: src/unstrip.c:76
+#: src/unstrip.c:72
msgid "Create multiple output files under DIRECTORY"
msgstr "Crear archivos de salida múltiple bajo DIRECTORIO"
-#: src/unstrip.c:77
+#: src/unstrip.c:73
msgid "Use module rather than file names"
msgstr "Usar módulo en lugar de nombres de archivo"
-#: src/unstrip.c:79
+#: src/unstrip.c:75
msgid "Create output for modules that have no separate debug information"
msgstr ""
"Crear salida para módulos que no tienen información de depuración "
"independiente"
-#: src/unstrip.c:82
+#: src/unstrip.c:78
msgid "Apply relocations to section contents in ET_REL files"
msgstr "Aplicar reubicaciones a contenido de sección en archivos ET_REL"
-#: src/unstrip.c:84
+#: src/unstrip.c:80
msgid "Only list module and file names, build IDs"
msgstr "Solamente listar módulo y nombres de archivo, crear los ID"
-#: src/unstrip.c:86
+#: src/unstrip.c:82
msgid "Force combining files even if some ELF headers don't seem to match"
msgstr ""
-#: src/unstrip.c:130
+#: src/unstrip.c:126
#, c-format
msgid "-d option specified twice"
msgstr "opción -d especificada dos veces"
-#: src/unstrip.c:165
+#: src/unstrip.c:161
#, c-format
msgid "only one of -o or -d allowed"
msgstr "Sólo se permite usar -o ó -d "
-#: src/unstrip.c:174
+#: src/unstrip.c:170
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr "-n no puede utilizarse con archivos explícitos o con -o ó -d"
-#: src/unstrip.c:189
+#: src/unstrip.c:185
#, c-format
msgid "output directory '%s'"
msgstr "Directorio de salida '%s'"
-#: src/unstrip.c:198
+#: src/unstrip.c:194
#, c-format
msgid "exactly two file arguments are required"
msgstr "dos argumentos de archivos se requieren exactamente"
-#: src/unstrip.c:204
+#: src/unstrip.c:200
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr "No se permiten las opciones -m, -a, -R, ni -i con archivos explícitos"
-#: src/unstrip.c:217
+#: src/unstrip.c:213
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr "se requiere -o ó -d cuando se utilizan archivos implícitos"
-#: src/unstrip.c:240
+#: src/unstrip.c:236
#, c-format
msgid "cannot create ELF header: %s"
msgstr "no se puede crear el encabezamiento ELF: %s"
-#: src/unstrip.c:244
+#: src/unstrip.c:240
#, fuzzy, c-format
msgid "cannot get shdrstrndx:%s"
msgstr "No se puede encontrar la sección: %s"
-#: src/unstrip.c:248 src/unstrip.c:2081
+#: src/unstrip.c:244 src/unstrip.c:2085
#, c-format
msgid "cannot get ELF header: %s"
msgstr "no se puede leer encabezamiento ELF: %s"
-#: src/unstrip.c:258
+#: src/unstrip.c:254
#, fuzzy, c-format
msgid "cannot get new zero section: %s"
msgstr "No se puede encontrar la sección: %s"
-#: src/unstrip.c:261
+#: src/unstrip.c:257
#, fuzzy, c-format
msgid "cannot update new zero section: %s"
msgstr "no se puede actualizar reubicación: %s"
-#: src/unstrip.c:265
+#: src/unstrip.c:261
#, c-format
msgid "cannot copy ELF header: %s"
msgstr "no se puede copiar encabezamiento ELF: %s"
-#: src/unstrip.c:269 src/unstrip.c:2099 src/unstrip.c:2142
+#: src/unstrip.c:265 src/unstrip.c:2103 src/unstrip.c:2146
#, fuzzy, c-format
msgid "cannot get number of program headers: %s"
msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
-#: src/unstrip.c:274 src/unstrip.c:2103
+#: src/unstrip.c:270 src/unstrip.c:2107
#, c-format
msgid "cannot create program headers: %s"
msgstr "No pueden crear encabezamientos de programa: %s"
-#: src/unstrip.c:280
+#: src/unstrip.c:276
#, c-format
msgid "cannot copy program header: %s"
msgstr "no puede copiar encabezamiento de programa: %s"
-#: src/unstrip.c:290
+#: src/unstrip.c:286
#, c-format
msgid "cannot copy section header: %s"
msgstr "no se puede copiar encabezamiento de sección: %s"
-#: src/unstrip.c:293 src/unstrip.c:1703
+#: src/unstrip.c:289 src/unstrip.c:1707
#, c-format
msgid "cannot get section data: %s"
msgstr "no se pueden obtener datos de sección: %s"
-#: src/unstrip.c:295 src/unstrip.c:1705
+#: src/unstrip.c:291 src/unstrip.c:1709
#, c-format
msgid "cannot copy section data: %s"
msgstr "no pueden copiar datos de sección: %s"
@@ -6759,187 +6798,187 @@ msgstr "no pueden copiar datos de sección: %s"
msgid "cannot create directory '%s'"
msgstr "no se puede crear el directorio '%s'"
-#: src/unstrip.c:391 src/unstrip.c:651 src/unstrip.c:685 src/unstrip.c:853
-#: src/unstrip.c:1745
+#: src/unstrip.c:393 src/unstrip.c:655 src/unstrip.c:689 src/unstrip.c:857
+#: src/unstrip.c:1749
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "no se puede obtener entrada de tabla de símbolos: %s"
-#: src/unstrip.c:407 src/unstrip.c:654 src/unstrip.c:675 src/unstrip.c:688
-#: src/unstrip.c:1766 src/unstrip.c:1961 src/unstrip.c:1985
+#: src/unstrip.c:409 src/unstrip.c:658 src/unstrip.c:679 src/unstrip.c:692
+#: src/unstrip.c:1770 src/unstrip.c:1965 src/unstrip.c:1989
#, c-format
msgid "cannot update symbol table: %s"
msgstr "no se puede actualizar tabla de símbolos: %s"
-#: src/unstrip.c:417
+#: src/unstrip.c:419
#, c-format
msgid "cannot update section header: %s"
msgstr "no se puede actualizar encabezamiento de sección: %s"
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:465 src/unstrip.c:479
#, c-format
msgid "cannot update relocation: %s"
msgstr "no se puede actualizar reubicación: %s"
-#: src/unstrip.c:574
+#: src/unstrip.c:578
#, c-format
msgid "cannot get symbol version: %s"
msgstr "no se puede obtener versión de símbolo: %s"
-#: src/unstrip.c:587
+#: src/unstrip.c:591
#, fuzzy, c-format
msgid "unexpected section type in [%zu] with sh_link to symtab"
msgstr "tipo de sección inesperado en [%Zu] con sh_link para symtab"
-#: src/unstrip.c:842
+#: src/unstrip.c:846
#, fuzzy, c-format
msgid "cannot get symbol section data: %s"
msgstr "no se pueden obtener datos de sección: %s"
-#: src/unstrip.c:844
+#: src/unstrip.c:848
#, fuzzy, c-format
msgid "cannot get string section data: %s"
msgstr "no se pueden obtener datos de sección: %s"
-#: src/unstrip.c:861
+#: src/unstrip.c:865
#, fuzzy, c-format
msgid "invalid string offset in symbol [%zu]"
msgstr "compensación de cadena inválida en símbolo [%Zu]"
-#: src/unstrip.c:1019 src/unstrip.c:1423
+#: src/unstrip.c:1023 src/unstrip.c:1427
#, fuzzy, c-format
msgid "cannot read section [%zu] name: %s"
msgstr "no se puede leer nombre [%Zu]: %s"
-#: src/unstrip.c:1034
+#: src/unstrip.c:1038
#, fuzzy, c-format
msgid "bad sh_link for group section: %s"
msgstr ".debug_line section inválida"
-#: src/unstrip.c:1040
+#: src/unstrip.c:1044
#, fuzzy, c-format
msgid "couldn't get shdr for group section: %s"
msgstr "No se puede obtener encabezamiento de sección 0th: %s"
-#: src/unstrip.c:1045
+#: src/unstrip.c:1049
#, fuzzy, c-format
msgid "bad data for group symbol section: %s"
msgstr "no se puede obtener sección para símbolos\n"
-#: src/unstrip.c:1051
+#: src/unstrip.c:1055
#, fuzzy, c-format
msgid "couldn't get symbol for group section: %s"
msgstr "no se puede obtener versión de símbolo: %s"
-#: src/unstrip.c:1056
+#: src/unstrip.c:1060
#, fuzzy, c-format
msgid "bad symbol name for group section: %s"
msgstr "No se puede obtener el encabezamiento de sección %zu: %s"
-#: src/unstrip.c:1098 src/unstrip.c:1117 src/unstrip.c:1155
+#: src/unstrip.c:1102 src/unstrip.c:1121 src/unstrip.c:1159
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr "no se puede leer sección '.gnu.prelink_undo': %s"
-#: src/unstrip.c:1135
+#: src/unstrip.c:1139
#, c-format
msgid "overflow with shnum = %zu in '%s' section"
msgstr ""
-#: src/unstrip.c:1146
+#: src/unstrip.c:1150
#, c-format
msgid "invalid contents in '%s' section"
msgstr "contenido inválido en sección '%s'"
-#: src/unstrip.c:1202 src/unstrip.c:1549
+#: src/unstrip.c:1206 src/unstrip.c:1553
#, fuzzy, c-format
msgid "cannot find matching section for [%zu] '%s'"
msgstr "no se puede hallar sección coincidente para [%Zu] '%s'"
-#: src/unstrip.c:1327 src/unstrip.c:1343 src/unstrip.c:1629 src/unstrip.c:1920
+#: src/unstrip.c:1331 src/unstrip.c:1347 src/unstrip.c:1633 src/unstrip.c:1924
#, c-format
msgid "cannot add section name to string table: %s"
msgstr "no se puede añadir nombre de sección a tabla de cadenas: %s"
-#: src/unstrip.c:1352
+#: src/unstrip.c:1356
#, c-format
msgid "cannot update section header string table data: %s"
msgstr ""
"no se pueden actualizar datos de tabla de cadenas de encabezamiento de "
"sección: %s"
-#: src/unstrip.c:1381 src/unstrip.c:1385
+#: src/unstrip.c:1385 src/unstrip.c:1389
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
"no se puede obtener índice de sección de tabla de cadenas de encabezamiento "
"de sección: %s"
-#: src/unstrip.c:1389 src/unstrip.c:1393 src/unstrip.c:1644
+#: src/unstrip.c:1393 src/unstrip.c:1397 src/unstrip.c:1648
#, c-format
msgid "cannot get section count: %s"
msgstr "No se puede obtener cuenta de sección: %s"
-#: src/unstrip.c:1396
+#: src/unstrip.c:1400
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
"más secciones en el archivo despojado que en el archivo de depuración -- "
"¿argumentos invertidos?"
-#: src/unstrip.c:1400
+#: src/unstrip.c:1404
#, c-format
msgid "no sections in stripped file"
msgstr ""
-#: src/unstrip.c:1471 src/unstrip.c:1564
+#: src/unstrip.c:1475 src/unstrip.c:1568
#, c-format
msgid "cannot read section header string table: %s"
msgstr "no se puede obtener tabla de cadenas de encabezamiento de sección: %s"
-#: src/unstrip.c:1623
+#: src/unstrip.c:1627
#, c-format
msgid "cannot add new section: %s"
msgstr "No se puede añadir nueva sección: %s"
-#: src/unstrip.c:1753
+#: src/unstrip.c:1757
#, fuzzy, c-format
msgid "symbol [%zu] has invalid section index"
msgstr "símbolo [%Zu] tiene índice de sección inválido"
-#: src/unstrip.c:1785
+#: src/unstrip.c:1789
#, fuzzy, c-format
msgid "group has invalid section index [%zd]"
msgstr "símbolo [%Zu] tiene índice de sección inválido"
-#: src/unstrip.c:2060
+#: src/unstrip.c:2064
#, c-format
msgid "cannot read section data: %s"
msgstr "no se puede leer la sección de datos: %s"
-#: src/unstrip.c:2089
+#: src/unstrip.c:2093
#, c-format
msgid "cannot update ELF header: %s"
msgstr "No se puede actualizar encabezamiento ELF: %s"
-#: src/unstrip.c:2113
+#: src/unstrip.c:2117
#, c-format
msgid "cannot update program header: %s"
msgstr "no se puede actualizar encabezamiento de programa: %s"
-#: src/unstrip.c:2118 src/unstrip.c:2200
+#: src/unstrip.c:2122 src/unstrip.c:2205
#, c-format
msgid "cannot write output file: %s"
msgstr "no se puede escribir al archivo de salida: %s"
-#: src/unstrip.c:2169
+#: src/unstrip.c:2173
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
"datos DWARF no se ajustan para polarización de pre-enlace; considere prelink "
"-u"
-#: src/unstrip.c:2172
+#: src/unstrip.c:2176
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6947,77 +6986,77 @@ msgstr ""
"Datos DWARF en '%s' no se ajustan a polarización de pre-enlace; considere "
"prelink -u"
-#: src/unstrip.c:2191 src/unstrip.c:2242 src/unstrip.c:2254 src/unstrip.c:2340
+#: src/unstrip.c:2196 src/unstrip.c:2247 src/unstrip.c:2259 src/unstrip.c:2345
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr "no se puede crear un descriptor ELF: %s"
-#: src/unstrip.c:2233
+#: src/unstrip.c:2238
msgid "WARNING: "
msgstr ""
-#: src/unstrip.c:2235
+#: src/unstrip.c:2240
msgid ", use --force"
msgstr ""
-#: src/unstrip.c:2258
+#: src/unstrip.c:2263
msgid "ELF header identification (e_ident) different"
msgstr ""
-#: src/unstrip.c:2261
+#: src/unstrip.c:2266
msgid "ELF header type (e_type) different"
msgstr ""
-#: src/unstrip.c:2264
+#: src/unstrip.c:2269
msgid "ELF header machine type (e_machine) different"
msgstr ""
-#: src/unstrip.c:2267
+#: src/unstrip.c:2272
msgid "stripped program header (e_phnum) smaller than unstripped"
msgstr ""
-#: src/unstrip.c:2297
+#: src/unstrip.c:2302
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr "no se puede hallar archivo obtenido para módulo '%s': %s "
-#: src/unstrip.c:2301
+#: src/unstrip.c:2306
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr "No se puede abrir el archivo '%s' obtenido para módulo '%s': %s"
-#: src/unstrip.c:2316
+#: src/unstrip.c:2321
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr "no puede hallar archivo de depuración para módulo '%s': %su"
-#: src/unstrip.c:2320
+#: src/unstrip.c:2325
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr "No puede abrir archivo de depuración '%s' para módulo '%s': %s"
-#: src/unstrip.c:2333
+#: src/unstrip.c:2338
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr "No se obtuvo el archivo '%s' de módulo '%s' "
-#: src/unstrip.c:2364
+#: src/unstrip.c:2369
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
"No puede almacenar en cache direcciones de sección para módulo '%s': %s"
-#: src/unstrip.c:2497
+#: src/unstrip.c:2501
#, c-format
msgid "no matching modules found"
msgstr "No se encontraron módulos coincidentes"
-#: src/unstrip.c:2506
+#: src/unstrip.c:2510
#, c-format
msgid "matched more than one module"
msgstr "coincidió con más de un módulo"
-#: src/unstrip.c:2550
+#: src/unstrip.c:2554
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
@@ -7025,7 +7064,7 @@ msgstr ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
-#: src/unstrip.c:2551
+#: src/unstrip.c:2555
#, fuzzy
msgid ""
"Combine stripped files with separate symbols and debug information.\n"
@@ -7082,16 +7121,22 @@ msgstr ""
msgid "Run executable"
msgstr ""
-#: tests/dwflmodtest.c:213
+#: tests/dwflmodtest.c:209
#, fuzzy
msgid "Additionally show function names"
msgstr "También mostrar nombres de función"
-#: tests/dwflmodtest.c:214
+#: tests/dwflmodtest.c:210
msgid "Show instances of inlined functions"
msgstr ""
#, fuzzy
+#~ msgid ""
+#~ " [%6tx] base address\n"
+#~ " "
+#~ msgstr " [%6tx] (dirección base) %s\n"
+
+#, fuzzy
#~ msgid "%s: error getting zero section: %s"
#~ msgstr "%s: error al leer el fichero: %s"
diff --git a/po/fr.po b/po/fr.po
deleted file mode 100644
index 1a7a3f87..00000000
--- a/po/fr.po
+++ /dev/null
@@ -1,5665 +0,0 @@
-# Translations template for ELFUTILS.
-# Copyright (C) 2009 ORGANIZATION
-# This file is distributed under the same license as the elfutils package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: elfutils.master.fr\n"
-"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2010-04-21 07:41-0700\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <fedora-trans-fr@redhat.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2822
-#: src/readelf.c:3161 src/unstrip.c:2087 src/unstrip.c:2295
-#, c-format
-msgid "memory exhausted"
-msgstr ""
-
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
-msgid "no error"
-msgstr ""
-
-#: libasm/asm_error.c:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
-msgid "out of memory"
-msgstr ""
-
-#: libasm/asm_error.c:64 src/ldgeneric.c:2687
-#, c-format
-msgid "cannot create output file"
-msgstr ""
-
-#: libasm/asm_error.c:65
-msgid "invalid parameter"
-msgstr ""
-
-#: libasm/asm_error.c:66
-msgid "cannot change mode of output file"
-msgstr ""
-
-#: libasm/asm_error.c:67 src/ldgeneric.c:7001
-#, c-format
-msgid "cannot rename output file"
-msgstr ""
-
-#: libasm/asm_error.c:68
-msgid "duplicate symbol"
-msgstr ""
-
-#: libasm/asm_error.c:69
-msgid "invalid section type for operation"
-msgstr ""
-
-#: libasm/asm_error.c:70
-msgid "error during output of data"
-msgstr ""
-
-#: libasm/asm_error.c:71
-msgid "no backend support available"
-msgstr ""
-
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
-msgid "unknown error"
-msgstr ""
-
-#: libdw/dwarf_error.c:81
-msgid "invalid access"
-msgstr ""
-
-#: libdw/dwarf_error.c:82
-msgid "no regular file"
-msgstr ""
-
-#: libdw/dwarf_error.c:83
-msgid "I/O error"
-msgstr ""
-
-#: libdw/dwarf_error.c:84
-msgid "invalid ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:85
-msgid "no DWARF information"
-msgstr ""
-
-#: libdw/dwarf_error.c:86
-msgid "no ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:87
-msgid "cannot get ELF header"
-msgstr ""
-
-#: libdw/dwarf_error.c:89
-msgid "not implemented"
-msgstr ""
-
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
-msgid "invalid command"
-msgstr ""
-
-#: libdw/dwarf_error.c:91
-msgid "invalid version"
-msgstr ""
-
-#: libdw/dwarf_error.c:92
-msgid "invalid file"
-msgstr ""
-
-#: libdw/dwarf_error.c:93
-msgid "no entries found"
-msgstr ""
-
-#: libdw/dwarf_error.c:94
-msgid "invalid DWARF"
-msgstr ""
-
-#: libdw/dwarf_error.c:95
-msgid "no string data"
-msgstr ""
-
-#: libdw/dwarf_error.c:96
-msgid "no address value"
-msgstr ""
-
-#: libdw/dwarf_error.c:97
-msgid "no constant value"
-msgstr ""
-
-#: libdw/dwarf_error.c:98
-msgid "no reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:99
-msgid "invalid reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:100
-msgid ".debug_line section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:101
-msgid "invalid .debug_line section"
-msgstr ""
-
-#: libdw/dwarf_error.c:102
-msgid "debug information too big"
-msgstr ""
-
-#: libdw/dwarf_error.c:103
-msgid "invalid DWARF version"
-msgstr ""
-
-#: libdw/dwarf_error.c:104
-msgid "invalid directory index"
-msgstr ""
-
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
-msgid "address out of range"
-msgstr ""
-
-#: libdw/dwarf_error.c:106
-msgid "no location list value"
-msgstr ""
-
-#: libdw/dwarf_error.c:107
-msgid "no block data"
-msgstr ""
-
-#: libdw/dwarf_error.c:108
-msgid "invalid line index"
-msgstr ""
-
-#: libdw/dwarf_error.c:109
-msgid "invalid address range index"
-msgstr ""
-
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
-msgid "no matching address range"
-msgstr ""
-
-#: libdw/dwarf_error.c:111
-msgid "no flag value"
-msgstr ""
-
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
-msgid "invalid offset"
-msgstr ""
-
-#: libdw/dwarf_error.c:113
-msgid ".debug_ranges section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:114
-msgid "invalid CFI section"
-msgstr ""
-
-#: libdwfl/argp-std.c:67 src/unstrip.c:2237
-msgid "Input selection options:"
-msgstr ""
-
-#: libdwfl/argp-std.c:68
-msgid "Find addresses in FILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:70
-msgid "Find addresses from signatures found in COREFILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:72
-msgid "Find addresses in files mapped into process PID"
-msgstr ""
-
-#: libdwfl/argp-std.c:74
-msgid ""
-"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
-"format"
-msgstr ""
-
-#: libdwfl/argp-std.c:76
-msgid "Find addresses in the running kernel"
-msgstr ""
-
-#: libdwfl/argp-std.c:78
-msgid "Kernel with all modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:80
-msgid "Search path for separate debuginfo files"
-msgstr ""
-
-#: libdwfl/argp-std.c:163
-msgid "only one of -e, -p, -k, -K, or --core allowed"
-msgstr ""
-
-#: libdwfl/argp-std.c:223
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr ""
-
-#: libdwfl/argp-std.c:241
-msgid "No modules recognized in core file"
-msgstr ""
-
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr ""
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr ""
-
-#: libdwfl/libdwflP.h:73
-msgid "See errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:74
-msgid "See elf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:75
-msgid "See dwarf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:76
-msgid "See ebl_errno (XXX missing)"
-msgstr ""
-
-#: libdwfl/libdwflP.h:77
-msgid "gzip decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:78
-msgid "bzip2 decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:79
-msgid "LZMA decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:80
-msgid "no support library found for machine"
-msgstr ""
-
-#: libdwfl/libdwflP.h:81
-msgid "Callbacks missing for ET_REL file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:82
-msgid "Unsupported relocation type"
-msgstr ""
-
-#: libdwfl/libdwflP.h:83
-msgid "r_offset is bogus"
-msgstr ""
-
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
-msgid "offset out of range"
-msgstr ""
-
-#: libdwfl/libdwflP.h:85
-msgid "relocation refers to undefined symbol"
-msgstr ""
-
-#: libdwfl/libdwflP.h:86
-msgid "Callback returned failure"
-msgstr ""
-
-#: libdwfl/libdwflP.h:87
-msgid "No DWARF information found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:88
-msgid "No symbol table found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:89
-msgid "No ELF program headers"
-msgstr ""
-
-#: libdwfl/libdwflP.h:90
-msgid "address range overlaps an existing module"
-msgstr ""
-
-#: libdwfl/libdwflP.h:93
-msgid "image truncated"
-msgstr ""
-
-#: libdwfl/libdwflP.h:94
-msgid "ELF file opened"
-msgstr ""
-
-#: libdwfl/libdwflP.h:95
-msgid "not a valid ELF file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:96
-msgid "cannot handle DWARF type description"
-msgstr ""
-
-#: libebl/eblbackendname.c:63
-msgid "No backend"
-msgstr ""
-
-#: libebl/eblcorenotetypename.c:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:86 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
-msgid "<unknown>"
-msgstr ""
-
-#: libebl/ebldynamictagname.c:126
-#, c-format
-msgid "<unknown>: %#<PRIx64>"
-msgstr ""
-
-#: libebl/eblobjnote.c:76
-#, c-format
-msgid " Build ID: "
-msgstr ""
-
-#: libebl/eblobjnote.c:87
-#, c-format
-msgid " Linker version: %.*s\n"
-msgstr ""
-
-#: libebl/eblobjnote.c:136
-#, c-format
-msgid " OS: %s, ABI: "
-msgstr ""
-
-#: libebl/eblosabiname.c:95
-msgid "Stand alone"
-msgstr ""
-
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
-#, c-format
-msgid "<unknown>: %d"
-msgstr ""
-
-#: libelf/elf_error.c:88
-msgid "unknown version"
-msgstr ""
-
-#: libelf/elf_error.c:92
-msgid "unknown type"
-msgstr ""
-
-#: libelf/elf_error.c:96
-msgid "invalid `Elf' handle"
-msgstr ""
-
-#: libelf/elf_error.c:100
-msgid "invalid size of source operand"
-msgstr ""
-
-#: libelf/elf_error.c:104
-msgid "invalid size of destination operand"
-msgstr ""
-
-#: libelf/elf_error.c:108 src/readelf.c:4779
-#, c-format
-msgid "invalid encoding"
-msgstr ""
-
-#: libelf/elf_error.c:116
-msgid "invalid file descriptor"
-msgstr ""
-
-#: libelf/elf_error.c:120
-msgid "invalid operation"
-msgstr ""
-
-#: libelf/elf_error.c:124
-msgid "ELF version not set"
-msgstr ""
-
-#: libelf/elf_error.c:136
-msgid "invalid fmag field in archive header"
-msgstr ""
-
-#: libelf/elf_error.c:140
-msgid "invalid archive file"
-msgstr ""
-
-#: libelf/elf_error.c:144
-msgid "descriptor is not for an archive"
-msgstr ""
-
-#: libelf/elf_error.c:148
-msgid "no index available"
-msgstr ""
-
-#: libelf/elf_error.c:152
-msgid "cannot read data from file"
-msgstr ""
-
-#: libelf/elf_error.c:156
-msgid "cannot write data to file"
-msgstr ""
-
-#: libelf/elf_error.c:160
-msgid "invalid binary class"
-msgstr ""
-
-#: libelf/elf_error.c:164
-msgid "invalid section index"
-msgstr ""
-
-#: libelf/elf_error.c:168
-msgid "invalid operand"
-msgstr ""
-
-#: libelf/elf_error.c:172
-msgid "invalid section"
-msgstr ""
-
-#: libelf/elf_error.c:180
-msgid "executable header not created first"
-msgstr ""
-
-#: libelf/elf_error.c:184
-msgid "file descriptor disabled"
-msgstr ""
-
-#: libelf/elf_error.c:188
-msgid "archive/member file descriptor mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:196
-msgid "cannot manipulate null section"
-msgstr ""
-
-#: libelf/elf_error.c:200
-msgid "data/scn mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:204
-msgid "invalid section header"
-msgstr ""
-
-#: libelf/elf_error.c:208 src/readelf.c:6242 src/readelf.c:6343
-#, c-format
-msgid "invalid data"
-msgstr ""
-
-#: libelf/elf_error.c:212
-msgid "unknown data encoding"
-msgstr ""
-
-#: libelf/elf_error.c:216
-msgid "section `sh_size' too small for data"
-msgstr ""
-
-#: libelf/elf_error.c:220
-msgid "invalid section alignment"
-msgstr ""
-
-#: libelf/elf_error.c:224
-msgid "invalid section entry size"
-msgstr ""
-
-#: libelf/elf_error.c:228
-msgid "update() for write on read-only file"
-msgstr ""
-
-#: libelf/elf_error.c:232
-msgid "no such file"
-msgstr ""
-
-#: libelf/elf_error.c:236
-msgid "only relocatable files can contain section groups"
-msgstr ""
-
-#: libelf/elf_error.c:241
-msgid ""
-"program header only allowed in executables, shared objects, and core files"
-msgstr ""
-
-#: libelf/elf_error.c:248
-msgid "file has no program header"
-msgstr ""
-
-#: src/addr2line.c:66
-msgid "Output selection options:"
-msgstr ""
-
-#: src/addr2line.c:67
-msgid "Show only base names of source files"
-msgstr ""
-
-#: src/addr2line.c:69
-msgid "Show absolute file names using compilation directory"
-msgstr ""
-
-#: src/addr2line.c:70
-msgid "Also show function names"
-msgstr ""
-
-#: src/addr2line.c:71
-msgid "Also show symbol or section names"
-msgstr ""
-
-#: src/addr2line.c:73
-msgid "Treat addresses as offsets relative to NAME section."
-msgstr ""
-
-#: src/addr2line.c:75 src/elfcmp.c:75 src/findtextrel.c:75 src/nm.c:103
-#: src/strings.c:83
-msgid "Miscellaneous:"
-msgstr ""
-
-#: src/addr2line.c:84
-msgid ""
-"Locate source files and line information for ADDRs (in a.out by default)."
-msgstr ""
-
-#: src/addr2line.c:88
-msgid "[ADDR...]"
-msgstr ""
-
-#: src/addr2line.c:185 src/ar.c:289 src/elfcmp.c:555 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:253 src/objdump.c:181
-#: src/ranlib.c:136 src/readelf.c:449 src/size.c:219 src/strings.c:227
-#: src/strip.c:204 src/unstrip.c:234
-#, c-format
-msgid ""
-"Copyright (C) %s Red Hat, Inc.\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-msgstr ""
-
-#: src/addr2line.c:190 src/ar.c:294 src/elfcmp.c:560 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:258 src/objdump.c:186
-#: src/ranlib.c:141 src/readelf.c:454 src/size.c:224 src/strings.c:232
-#: src/strip.c:209 src/unstrip.c:239
-#, c-format
-msgid "Written by %s.\n"
-msgstr ""
-
-#: src/addr2line.c:405
-#, c-format
-msgid "Section syntax requires exactly one module"
-msgstr ""
-
-#: src/addr2line.c:428
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside section '%s'"
-msgstr ""
-
-#: src/addr2line.c:461
-#, c-format
-msgid "cannot find symbol '%s'"
-msgstr ""
-
-#: src/addr2line.c:466
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
-msgstr ""
-
-#: src/ar.c:76
-msgid "Commands:"
-msgstr ""
-
-#: src/ar.c:77
-msgid "Delete files from archive."
-msgstr ""
-
-#: src/ar.c:78
-msgid "Move files in archive."
-msgstr ""
-
-#: src/ar.c:79
-msgid "Print files in archive."
-msgstr ""
-
-#: src/ar.c:80
-msgid "Quick append files to archive."
-msgstr ""
-
-#: src/ar.c:82
-msgid "Replace existing or insert new file into archive."
-msgstr ""
-
-#: src/ar.c:83
-msgid "Display content of archive."
-msgstr ""
-
-#: src/ar.c:84
-msgid "Extract files from archive."
-msgstr ""
-
-#: src/ar.c:86
-msgid "Command Modifiers:"
-msgstr ""
-
-#: src/ar.c:87
-msgid "Preserve original dates."
-msgstr ""
-
-#: src/ar.c:88
-msgid "Use instance [COUNT] of name."
-msgstr ""
-
-#: src/ar.c:90
-msgid "Do not replace existing files with extracted files."
-msgstr ""
-
-#: src/ar.c:91
-msgid "Allow filename to be truncated if necessary."
-msgstr ""
-
-#: src/ar.c:93
-msgid "Provide verbose output."
-msgstr ""
-
-#: src/ar.c:94
-msgid "Force regeneration of symbol table."
-msgstr ""
-
-#: src/ar.c:95
-msgid "Insert file after [MEMBER]."
-msgstr ""
-
-#: src/ar.c:96
-msgid "Insert file before [MEMBER]."
-msgstr ""
-
-#: src/ar.c:97
-msgid "Same as -b."
-msgstr ""
-
-#: src/ar.c:98
-msgid "Suppress message when library has to be created."
-msgstr ""
-
-#: src/ar.c:100
-msgid "Use full path for file matching."
-msgstr ""
-
-#: src/ar.c:101
-msgid "Update only older files in archive."
-msgstr ""
-
-#: src/ar.c:107
-msgid "Create, modify, and extract from archives."
-msgstr ""
-
-#: src/ar.c:110
-msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
-msgstr ""
-
-#: src/ar.c:192
-#, c-format
-msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
-msgstr ""
-
-#: src/ar.c:197
-#, c-format
-msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
-msgstr ""
-
-#: src/ar.c:213
-#, c-format
-msgid "'N' is only meaningful with the 'x' and 'd' options"
-msgstr ""
-
-#: src/ar.c:218
-#, c-format
-msgid "COUNT parameter required"
-msgstr ""
-
-#: src/ar.c:230
-#, c-format
-msgid "invalid COUNT parameter %s"
-msgstr ""
-
-#: src/ar.c:237
-#, c-format
-msgid "'%c' is only meaningful with the 'x' option"
-msgstr ""
-
-#: src/ar.c:243
-#, c-format
-msgid "archive name required"
-msgstr ""
-
-#: src/ar.c:314
-#, c-format
-msgid "More than one operation specified"
-msgstr ""
-
-#: src/ar.c:404
-#, c-format
-msgid "cannot open archive '%s'"
-msgstr ""
-
-#: src/ar.c:414
-#, c-format
-msgid "cannot open archive '%s': %s"
-msgstr ""
-
-#: src/ar.c:418
-#, c-format
-msgid "%s: not an archive file"
-msgstr ""
-
-#: src/ar.c:422
-#, c-format
-msgid "cannot stat archive '%s'"
-msgstr ""
-
-#: src/ar.c:434
-#, c-format
-msgid "no entry %s in archive\n"
-msgstr ""
-
-#: src/ar.c:487 src/ar.c:929 src/ar.c:1129
-#, c-format
-msgid "cannot create hash table"
-msgstr ""
-
-#: src/ar.c:494 src/ar.c:936 src/ar.c:1138
-#, c-format
-msgid "cannot insert into hash table"
-msgstr ""
-
-#: src/ar.c:502 src/ranlib.c:176
-#, c-format
-msgid "cannot stat '%s'"
-msgstr ""
-
-#: src/ar.c:598
-#, c-format
-msgid "cannot read content of %s: %s"
-msgstr ""
-
-#: src/ar.c:641
-#, c-format
-msgid "cannot open %.*s"
-msgstr ""
-
-#: src/ar.c:663
-#, c-format
-msgid "failed to write %s"
-msgstr ""
-
-#: src/ar.c:675
-#, c-format
-msgid "cannot change mode of %s"
-msgstr ""
-
-#: src/ar.c:691
-#, c-format
-msgid "cannot change modification time of %s"
-msgstr ""
-
-#: src/ar.c:737
-#, c-format
-msgid "cannot rename temporary file to %.*s"
-msgstr ""
-
-#: src/ar.c:773 src/ar.c:1021 src/ar.c:1419 src/ranlib.c:250
-#, c-format
-msgid "cannot create new file"
-msgstr ""
-
-#: src/ar.c:1220
-#, c-format
-msgid "position member %s not found"
-msgstr ""
-
-#: src/ar.c:1230
-#, c-format
-msgid "%s: no entry %s in archive!\n"
-msgstr ""
-
-#: src/ar.c:1259 src/ldgeneric.c:519 src/objdump.c:257
-#, c-format
-msgid "cannot open %s"
-msgstr ""
-
-#: src/ar.c:1264
-#, c-format
-msgid "cannot stat %s"
-msgstr ""
-
-#: src/ar.c:1270
-#, c-format
-msgid "%s is no regular file"
-msgstr ""
-
-#: src/ar.c:1283
-#, c-format
-msgid "cannot get ELF descriptor for %s: %s\n"
-msgstr ""
-
-#: src/ar.c:1302
-#, c-format
-msgid "cannot read %s: %s"
-msgstr ""
-
-#: src/arlib.c:215
-#, c-format
-msgid "the archive '%s' is too large"
-msgstr ""
-
-#: src/arlib.c:228
-#, c-format
-msgid "cannot read ELF header of %s(%s): %s"
-msgstr ""
-
-#: src/elfcmp.c:69
-msgid "Control options:"
-msgstr ""
-
-#: src/elfcmp.c:70
-msgid ""
-"Control treatment of gaps in loadable segments [ignore|match] (default: "
-"ignore)"
-msgstr ""
-
-#: src/elfcmp.c:72
-msgid "Ignore permutation of buckets in SHT_HASH section"
-msgstr ""
-
-#: src/elfcmp.c:73
-msgid "Output nothing; yield exit status only"
-msgstr ""
-
-#: src/elfcmp.c:80
-msgid "Compare relevant parts of two ELF files for equality."
-msgstr ""
-
-#: src/elfcmp.c:84
-msgid "FILE1 FILE2"
-msgstr ""
-
-#: src/elfcmp.c:140
-msgid "Invalid number of parameters.\n"
-msgstr ""
-
-#: src/elfcmp.c:168 src/elfcmp.c:173
-#, c-format
-msgid "cannot get ELF header of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:190
-#, c-format
-msgid "%s %s diff: ELF header"
-msgstr ""
-
-#: src/elfcmp.c:198 src/elfcmp.c:201
-#, c-format
-msgid "cannot get section count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:206
-#, c-format
-msgid "%s %s diff: section count"
-msgstr ""
-
-#: src/elfcmp.c:214 src/elfcmp.c:217
-#, c-format
-msgid "cannot get program header count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:222
-#, c-format
-msgid "%s %s diff: program header count"
-msgstr ""
-
-#: src/elfcmp.c:281
-#, c-format
-msgid "%s %s differ: section header"
-msgstr ""
-
-#: src/elfcmp.c:309 src/elfcmp.c:315
-#, c-format
-msgid "cannot get content of section %zu in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:331 src/elfcmp.c:337
-#, c-format
-msgid "cannot get symbol in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:358
-#, c-format
-msgid "%s %s differ: symbol table [%zu]"
-msgstr ""
-
-#: src/elfcmp.c:361
-#, c-format
-msgid "%s %s differ: symbol table [%zu,%zu]"
-msgstr ""
-
-#: src/elfcmp.c:409
-#, c-format
-msgid "%s %s differ: section [%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:413
-#, c-format
-msgid "%s %s differ: section [%zu,%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:429
-#, c-format
-msgid "%s %s differ: unequal amount of important sections"
-msgstr ""
-
-#: src/elfcmp.c:463 src/elfcmp.c:468
-#, c-format
-msgid "cannot load data of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:487 src/elfcmp.c:493
-#, c-format
-msgid "cannot get program header entry %d of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:499
-#, c-format
-msgid "%s %s differ: program header %d"
-msgstr ""
-
-#: src/elfcmp.c:524
-#, c-format
-msgid "%s %s differ: gap"
-msgstr ""
-
-#: src/elfcmp.c:583
-#, c-format
-msgid "Invalid value '%s' for --gaps parameter."
-msgstr ""
-
-#: src/elfcmp.c:607 src/findtextrel.c:229 src/ldgeneric.c:1767
-#: src/ldgeneric.c:4257 src/nm.c:363 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:433 src/strip.c:468 src/unstrip.c:1900
-#: src/unstrip.c:1929
-#, c-format
-msgid "cannot open '%s'"
-msgstr ""
-
-#: src/elfcmp.c:611 src/findtextrel.c:236 src/ranlib.c:186
-#, c-format
-msgid "cannot create ELF descriptor for '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:616
-#, c-format
-msgid "cannot create EBL descriptor for '%s'"
-msgstr ""
-
-#: src/elfcmp.c:634
-#, c-format
-msgid "cannot get section header of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:644
-#, c-format
-msgid "cannot get content of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:654 src/elfcmp.c:668
-#, c-format
-msgid "cannot get relocation: %s"
-msgstr ""
-
-#: src/elflint.c:72
-msgid "Be extremely strict, flag level 2 features."
-msgstr ""
-
-#: src/elflint.c:73
-msgid "Do not print anything if successful"
-msgstr ""
-
-#: src/elflint.c:74
-msgid "Binary is a separate debuginfo file"
-msgstr ""
-
-#: src/elflint.c:76
-msgid ""
-"Binary has been created with GNU ld and is therefore known to be broken in "
-"certain ways"
-msgstr ""
-
-#: src/elflint.c:82
-msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
-msgstr ""
-
-#: src/elflint.c:86 src/readelf.c:118
-msgid "FILE..."
-msgstr ""
-
-#: src/elflint.c:159 src/readelf.c:272
-#, c-format
-msgid "cannot open input file"
-msgstr ""
-
-#: src/elflint.c:166
-#, c-format
-msgid "cannot generate Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:185
-#, c-format
-msgid "error while closing Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:189
-msgid "No errors"
-msgstr ""
-
-#: src/elflint.c:223 src/readelf.c:425
-msgid "Missing file name.\n"
-msgstr ""
-
-#: src/elflint.c:302
-#, c-format
-msgid " error while freeing sub-ELF descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:310
-#, c-format
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr ""
-
-#: src/elflint.c:370
-#, c-format
-msgid "e_ident[%d] == %d is no known class\n"
-msgstr ""
-
-#: src/elflint.c:375
-#, c-format
-msgid "e_ident[%d] == %d is no known data encoding\n"
-msgstr ""
-
-#: src/elflint.c:379
-#, c-format
-msgid "unknown ELF header version number e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:385
-#, c-format
-msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
-msgstr ""
-
-#: src/elflint.c:391
-#, c-format
-msgid "unsupport ABI version e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:396
-#, c-format
-msgid "e_ident[%zu] is not zero\n"
-msgstr ""
-
-#: src/elflint.c:401
-#, c-format
-msgid "unknown object file type %d\n"
-msgstr ""
-
-#: src/elflint.c:408
-#, c-format
-msgid "unknown machine type %d\n"
-msgstr ""
-
-#: src/elflint.c:412
-#, c-format
-msgid "unknown object file version\n"
-msgstr ""
-
-#: src/elflint.c:418
-#, c-format
-msgid "invalid program header offset\n"
-msgstr ""
-
-#: src/elflint.c:420
-#, c-format
-msgid "executables and DSOs cannot have zero program header offset\n"
-msgstr ""
-
-#: src/elflint.c:424
-#, c-format
-msgid "invalid number of program header entries\n"
-msgstr ""
-
-#: src/elflint.c:432
-#, c-format
-msgid "invalid section header table offset\n"
-msgstr ""
-
-#: src/elflint.c:435
-#, c-format
-msgid "section header table must be present\n"
-msgstr ""
-
-#: src/elflint.c:449
-#, c-format
-msgid "invalid number of section header table entries\n"
-msgstr ""
-
-#: src/elflint.c:466
-#, c-format
-msgid "invalid section header index\n"
-msgstr ""
-
-#: src/elflint.c:480
-#, c-format
-msgid "invalid number of program header table entries\n"
-msgstr ""
-
-#: src/elflint.c:489
-#, c-format
-msgid "invalid machine flags: %s\n"
-msgstr ""
-
-#: src/elflint.c:496 src/elflint.c:513
-#, c-format
-msgid "invalid ELF header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:499 src/elflint.c:516
-#, c-format
-msgid "invalid program header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:502 src/elflint.c:519
-#, c-format
-msgid "invalid program header position or size\n"
-msgstr ""
-
-#: src/elflint.c:505 src/elflint.c:522
-#, c-format
-msgid "invalid section header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:508 src/elflint.c:525
-#, c-format
-msgid "invalid section header position or size\n"
-msgstr ""
-
-#: src/elflint.c:569
-#, c-format
-msgid ""
-"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
-"group\n"
-msgstr ""
-
-#: src/elflint.c:573
-#, c-format
-msgid ""
-"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
-msgstr ""
-
-#: src/elflint.c:589 src/elflint.c:1432 src/elflint.c:1482 src/elflint.c:1591
-#: src/elflint.c:2185 src/elflint.c:2699 src/elflint.c:2860 src/elflint.c:2990
-#: src/elflint.c:3162 src/elflint.c:4062
-#, c-format
-msgid "section [%2d] '%s': cannot get section data\n"
-msgstr ""
-
-#: src/elflint.c:602 src/elflint.c:1598
-#, c-format
-msgid ""
-"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
-"type is not SHT_STRTAB\n"
-msgstr ""
-
-#: src/elflint.c:625
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol table cannot have more than one extended index "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:636
-#, c-format
-msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
-msgstr ""
-
-#: src/elflint.c:645
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
-#, c-format
-msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:668
-#, c-format
-msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:678
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:687
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
-msgstr ""
-
-#: src/elflint.c:700
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
-"section index section\n"
-msgstr ""
-
-#: src/elflint.c:706
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
-msgstr ""
-
-#: src/elflint.c:718
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
-msgstr ""
-
-#: src/elflint.c:726
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
-msgstr ""
-
-#: src/elflint.c:732
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
-msgstr ""
-
-#: src/elflint.c:737
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
-msgstr ""
-
-#: src/elflint.c:745
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
-msgstr ""
-
-#: src/elflint.c:749
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
-msgstr ""
-
-#: src/elflint.c:753
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
-msgstr ""
-
-#: src/elflint.c:785
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:791 src/elflint.c:816 src/elflint.c:859
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:800
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
-msgstr ""
-
-#: src/elflint.c:810 src/elflint.c:852
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:837
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
-msgstr ""
-
-#: src/elflint.c:845
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:872
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:879
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:886
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
-msgstr ""
-
-#: src/elflint.c:936
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section [%"
-"2d]\n"
-msgstr ""
-
-#: src/elflint.c:943
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:959
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
-"match %s section address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:966
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
-"match %s section size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:974
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:990
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
-"segment address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:997
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
-"segment size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:1010
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
-"default visibility\n"
-msgstr ""
-
-#: src/elflint.c:1014
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
-msgstr ""
-
-#: src/elflint.c:1059
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
-msgstr ""
-
-#: src/elflint.c:1068 src/elflint.c:1120
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
-msgstr ""
-
-#: src/elflint.c:1093 src/elflint.c:1145
-#, c-format
-msgid ""
-"section [%2d] '%s': relative relocations after index %d as specified by "
-"DT_RELCOUNT\n"
-msgstr ""
-
-#: src/elflint.c:1099 src/elflint.c:1151
-#, c-format
-msgid ""
-"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
-"specified %d relative relocations\n"
-msgstr ""
-
-#: src/elflint.c:1111
-#, c-format
-msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
-msgstr ""
-
-#: src/elflint.c:1193
-#, c-format
-msgid "section [%2d] '%s': invalid destination section index\n"
-msgstr ""
-
-#: src/elflint.c:1206
-#, c-format
-msgid "section [%2d] '%s': invalid destination section type\n"
-msgstr ""
-
-#: src/elflint.c:1214
-#, c-format
-msgid "section [%2d] '%s': sh_info should be zero\n"
-msgstr ""
-
-#: src/elflint.c:1221
-#, c-format
-msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
-msgstr ""
-
-#: src/elflint.c:1228
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-
-#: src/elflint.c:1288
-#, c-format
-msgid "text relocation flag set but there is no read-only segment\n"
-msgstr ""
-
-#: src/elflint.c:1315
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid type\n"
-msgstr ""
-
-#: src/elflint.c:1323
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
-"type\n"
-msgstr ""
-
-#: src/elflint.c:1331
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
-msgstr ""
-
-#: src/elflint.c:1349
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
-"be used with %s\n"
-msgstr ""
-
-#: src/elflint.c:1366
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1381
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: copy relocation against symbol of type %"
-"s\n"
-msgstr ""
-
-#: src/elflint.c:1402
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: read-only section modified but text "
-"relocation flag not set\n"
-msgstr ""
-
-#: src/elflint.c:1417
-#, c-format
-msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
-msgstr ""
-
-#: src/elflint.c:1456 src/elflint.c:1506
-#, c-format
-msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1586
-#, c-format
-msgid "more than one dynamic section present\n"
-msgstr ""
-
-#: src/elflint.c:1604
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
-msgstr ""
-
-#: src/elflint.c:1609 src/elflint.c:1901
-#, c-format
-msgid "section [%2d] '%s': sh_info not zero\n"
-msgstr ""
-
-#: src/elflint.c:1619
-#, c-format
-msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1627
-#, c-format
-msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
-msgstr ""
-
-#: src/elflint.c:1634
-#, c-format
-msgid "section [%2d] '%s': entry %zu: unknown tag\n"
-msgstr ""
-
-#: src/elflint.c:1645
-#, c-format
-msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
-msgstr ""
-
-#: src/elflint.c:1655
-#, c-format
-msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
-msgstr ""
-
-#: src/elflint.c:1673
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
-msgstr ""
-
-#: src/elflint.c:1695
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: pointer does not match address of section [%"
-"2d] '%s' referenced by sh_link\n"
-msgstr ""
-
-#: src/elflint.c:1738
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:1753
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must be valid offset in section [%"
-"2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:1773 src/elflint.c:1801
-#, c-format
-msgid "section [%2d] '%s': contains %s entry but not %s\n"
-msgstr ""
-
-#: src/elflint.c:1785
-#, c-format
-msgid "section [%2d] '%s': mandatory tag %s not present\n"
-msgstr ""
-
-#: src/elflint.c:1794
-#, c-format
-msgid "section [%2d] '%s': no hash section present\n"
-msgstr ""
-
-#: src/elflint.c:1809 src/elflint.c:1816
-#, c-format
-msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
-msgstr ""
-
-#: src/elflint.c:1826 src/elflint.c:1830
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
-msgstr ""
-
-#: src/elflint.c:1836
-#, c-format
-msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
-msgstr ""
-
-#: src/elflint.c:1847 src/elflint.c:1851 src/elflint.c:1855 src/elflint.c:1859
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
-msgstr ""
-
-#: src/elflint.c:1871
-#, c-format
-msgid ""
-"section [%2d] '%s': only relocatable files can have extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1881
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index section not for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1886
-#, c-format
-msgid "cannot get data for symbol section\n"
-msgstr ""
-
-#: src/elflint.c:1889
-#, c-format
-msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
-msgstr ""
-
-#: src/elflint.c:1896
-#, c-format
-msgid "section [%2d] '%s': extended index table too small for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1911
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
-"same symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1922
-#, c-format
-msgid "symbol 0 should have zero extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1934
-#, c-format
-msgid "cannot get data for symbol %zu\n"
-msgstr ""
-
-#: src/elflint.c:1939
-#, c-format
-msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
-msgstr ""
-
-#: src/elflint.c:1955 src/elflint.c:1996
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
-msgstr ""
-
-#: src/elflint.c:1967 src/elflint.c:2008
-#, c-format
-msgid "section [%2d] '%s': chain array too large\n"
-msgstr ""
-
-#: src/elflint.c:1976 src/elflint.c:2017
-#, c-format
-msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1982
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2023
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2038
-#, c-format
-msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
-msgstr ""
-
-#: src/elflint.c:2049
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
-msgstr ""
-
-#: src/elflint.c:2057
-#, c-format
-msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
-msgstr ""
-
-#: src/elflint.c:2089
-#, c-format
-msgid ""
-"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
-msgstr ""
-
-#: src/elflint.c:2110
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
-"undefined\n"
-msgstr ""
-
-#: src/elflint.c:2121
-#, c-format
-msgid ""
-"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
-msgstr ""
-
-#: src/elflint.c:2152
-#, c-format
-msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2157
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2163
-#, c-format
-msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
-msgstr ""
-
-#: src/elflint.c:2176
-#, c-format
-msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
-msgstr ""
-
-#: src/elflint.c:2194
-#, c-format
-msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2202
-#, c-format
-msgid "section [%2d] '%s': hash table entry size incorrect\n"
-msgstr ""
-
-#: src/elflint.c:2207
-#, c-format
-msgid "section [%2d] '%s': not marked to be allocated\n"
-msgstr ""
-
-#: src/elflint.c:2212
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table has not even room for initial administrative "
-"entries\n"
-msgstr ""
-
-#: src/elflint.c:2260
-#, c-format
-msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
-msgstr ""
-
-#: src/elflint.c:2338 src/elflint.c:2342
-#, c-format
-msgid "section [%2zu] '%s': reference to symbol index 0\n"
-msgstr ""
-
-#: src/elflint.c:2349
-#, c-format
-msgid ""
-"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2361
-#, c-format
-msgid ""
-"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2377
-#, c-format
-msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
-msgstr ""
-
-#: src/elflint.c:2397
-#, c-format
-msgid ""
-"section [%2d] '%s': section groups only allowed in relocatable object files\n"
-msgstr ""
-
-#: src/elflint.c:2408
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol table: %s\n"
-msgstr ""
-
-#: src/elflint.c:2413
-#, c-format
-msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2419
-#, c-format
-msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
-msgstr ""
-
-#: src/elflint.c:2424
-#, c-format
-msgid "section [%2d] '%s': sh_flags not zero\n"
-msgstr ""
-
-#: src/elflint.c:2431
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol for signature\n"
-msgstr ""
-
-#: src/elflint.c:2436
-#, c-format
-msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
-msgstr ""
-
-#: src/elflint.c:2442
-#, c-format
-msgid "section [%2d] '%s': sh_flags not set correctly\n"
-msgstr ""
-
-#: src/elflint.c:2448
-#, c-format
-msgid "section [%2d] '%s': cannot get data: %s\n"
-msgstr ""
-
-#: src/elflint.c:2457
-#, c-format
-msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
-msgstr ""
-
-#: src/elflint.c:2462
-#, c-format
-msgid "section [%2d] '%s': section group without flags word\n"
-msgstr ""
-
-#: src/elflint.c:2468
-#, c-format
-msgid "section [%2d] '%s': section group without member\n"
-msgstr ""
-
-#: src/elflint.c:2472
-#, c-format
-msgid "section [%2d] '%s': section group with only one member\n"
-msgstr ""
-
-#: src/elflint.c:2483
-#, c-format
-msgid "section [%2d] '%s': unknown section group flags\n"
-msgstr ""
-
-#: src/elflint.c:2495
-#, c-format
-msgid "section [%2d] '%s': section index %Zu out of range\n"
-msgstr ""
-
-#: src/elflint.c:2504
-#, c-format
-msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:2511
-#, c-format
-msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2517
-#, c-format
-msgid ""
-"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
-"SHF_GROUP flag set\n"
-msgstr ""
-
-#: src/elflint.c:2524
-#, c-format
-msgid "section [%2d] '%s' is contained in more than one section group\n"
-msgstr ""
-
-#: src/elflint.c:2713
-#, c-format
-msgid ""
-"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
-"dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2724
-#, c-format
-msgid ""
-"section [%2d] '%s' has different number of entries than symbol table [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:2740
-#, c-format
-msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
-msgstr ""
-
-#: src/elflint.c:2756
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
-msgstr ""
-
-#: src/elflint.c:2764
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
-msgstr ""
-
-#: src/elflint.c:2778
-#, c-format
-msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
-msgstr ""
-
-#: src/elflint.c:2783
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
-msgstr ""
-
-#: src/elflint.c:2793
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
-msgstr ""
-
-#: src/elflint.c:2845
-#, c-format
-msgid "more than one version reference section present\n"
-msgstr ""
-
-#: src/elflint.c:2853 src/elflint.c:2982
-#, c-format
-msgid "section [%2d] '%s': sh_link does not link to string table\n"
-msgstr ""
-
-#: src/elflint.c:2876 src/elflint.c:3034
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong version %d\n"
-msgstr ""
-
-#: src/elflint.c:2882 src/elflint.c:3040
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:2890
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid file reference\n"
-msgstr ""
-
-#: src/elflint.c:2898
-#, c-format
-msgid "section [%2d] '%s': entry %d references unknown dependency\n"
-msgstr ""
-
-#: src/elflint.c:2910
-#, c-format
-msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:2917
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
-"reference\n"
-msgstr ""
-
-#: src/elflint.c:2924
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: %"
-"#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:2934
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
-"name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2945
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
-msgstr ""
-
-#: src/elflint.c:2961 src/elflint.c:3119
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
-msgstr ""
-
-#: src/elflint.c:2974
-#, c-format
-msgid "more than one version definition section present\n"
-msgstr ""
-
-#: src/elflint.c:3019
-#, c-format
-msgid "section [%2d] '%s': more than one BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3023
-#, c-format
-msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
-msgstr ""
-
-#: src/elflint.c:3029
-#, c-format
-msgid "section [%2d] '%s': entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:3053
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid name reference\n"
-msgstr ""
-
-#: src/elflint.c:3060
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:3069
-#, c-format
-msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3088
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3103
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3125
-#, c-format
-msgid "section [%2d] '%s': no BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3141
-#, c-format
-msgid "section [%2d] '%s': unknown parent version '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3154
-#, c-format
-msgid "section [%2d] '%s': empty object attributes section\n"
-msgstr ""
-
-#: src/elflint.c:3175
-#, c-format
-msgid "section [%2d] '%s': unrecognized attribute format\n"
-msgstr ""
-
-#: src/elflint.c:3191
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3200
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3212
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
-#: src/elflint.c:3229
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-msgstr ""
-
-#: src/elflint.c:3238
-#, c-format
-msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3247
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3260
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3271
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3289
-#, c-format
-msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
-msgstr ""
-
-#: src/elflint.c:3300
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
-msgstr ""
-
-#: src/elflint.c:3313
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3317
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3327
-#, c-format
-msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
-msgstr ""
-
-#: src/elflint.c:3333
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3422
-#, c-format
-msgid "cannot get section header of zeroth section\n"
-msgstr ""
-
-#: src/elflint.c:3426
-#, c-format
-msgid "zeroth section has nonzero name\n"
-msgstr ""
-
-#: src/elflint.c:3428
-#, c-format
-msgid "zeroth section has nonzero type\n"
-msgstr ""
-
-#: src/elflint.c:3430
-#, c-format
-msgid "zeroth section has nonzero flags\n"
-msgstr ""
-
-#: src/elflint.c:3432
-#, c-format
-msgid "zeroth section has nonzero address\n"
-msgstr ""
-
-#: src/elflint.c:3434
-#, c-format
-msgid "zeroth section has nonzero offset\n"
-msgstr ""
-
-#: src/elflint.c:3436
-#, c-format
-msgid "zeroth section has nonzero align value\n"
-msgstr ""
-
-#: src/elflint.c:3438
-#, c-format
-msgid "zeroth section has nonzero entry size value\n"
-msgstr ""
-
-#: src/elflint.c:3441
-#, c-format
-msgid ""
-"zeroth section has nonzero size value while ELF header has nonzero shnum "
-"value\n"
-msgstr ""
-
-#: src/elflint.c:3445
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in shstrndx\n"
-msgstr ""
-
-#: src/elflint.c:3449
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in phnum\n"
-msgstr ""
-
-#: src/elflint.c:3466
-#, c-format
-msgid "cannot get section header for section [%2zu] '%s': %s\n"
-msgstr ""
-
-#: src/elflint.c:3475
-#, c-format
-msgid "section [%2zu]: invalid name\n"
-msgstr ""
-
-#: src/elflint.c:3502
-#, c-format
-msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3518
-#, c-format
-msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3535
-#, c-format
-msgid ""
-"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3553
-#, c-format
-msgid "section [%2zu] '%s' present in object file\n"
-msgstr ""
-
-#: src/elflint.c:3559 src/elflint.c:3591
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
-msgstr ""
-
-#: src/elflint.c:3564 src/elflint.c:3596
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
-"segments\n"
-msgstr ""
-
-#: src/elflint.c:3572
-#, c-format
-msgid ""
-"section [%2zu] '%s' is extension section index table in non-object file\n"
-msgstr ""
-
-#: src/elflint.c:3615
-#, c-format
-msgid "section [%2zu] '%s': size not multiple of entry size\n"
-msgstr ""
-
-#: src/elflint.c:3620
-#, c-format
-msgid "cannot get section header\n"
-msgstr ""
-
-#: src/elflint.c:3630
-#, c-format
-msgid "section [%2zu] '%s' has unsupported type %d\n"
-msgstr ""
-
-#: src/elflint.c:3644
-#, c-format
-msgid ""
-"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3651
-#, c-format
-msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3659
-#, c-format
-msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
-msgstr ""
-
-#: src/elflint.c:3667
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in link value\n"
-msgstr ""
-
-#: src/elflint.c:3672
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in info value\n"
-msgstr ""
-
-#: src/elflint.c:3679
-#, c-format
-msgid "section [%2zu] '%s': strings flag set without merge flag\n"
-msgstr ""
-
-#: src/elflint.c:3684
-#, c-format
-msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
-msgstr ""
-
-#: src/elflint.c:3702
-#, c-format
-msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
-msgstr ""
-
-#: src/elflint.c:3711
-#, c-format
-msgid "section [%2zu] '%s' is both executable and writable\n"
-msgstr ""
-
-#: src/elflint.c:3738
-#, c-format
-msgid ""
-"section [%2zu] '%s' not fully contained in segment of program header entry %"
-"d\n"
-msgstr ""
-
-#: src/elflint.c:3746
-#, c-format
-msgid ""
-"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
-"program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3755
-#, c-format
-msgid ""
-"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
-"segment of program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3766
-#, c-format
-msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3776
-#, c-format
-msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3786
-#, c-format
-msgid ""
-"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:3792
-#, c-format
-msgid ""
-"section [%2zu] '%s': ELF header says this is the section header string table "
-"but type is not SHT_TYPE\n"
-msgstr ""
-
-#: src/elflint.c:3800
-#, c-format
-msgid ""
-"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
-msgstr ""
-
-#: src/elflint.c:3851
-#, c-format
-msgid "more than one version symbol table present\n"
-msgstr ""
-
-#: src/elflint.c:3874
-#, c-format
-msgid "INTERP program header entry but no .interp section\n"
-msgstr ""
-
-#: src/elflint.c:3885
-#, c-format
-msgid ""
-"loadable segment [%u] is executable but contains no executable sections\n"
-msgstr ""
-
-#: src/elflint.c:3891
-#, c-format
-msgid "loadable segment [%u] is writable but contains no writable sections\n"
-msgstr ""
-
-#: src/elflint.c:3902
-#, c-format
-msgid ""
-"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
-"exist\n"
-msgstr ""
-
-#: src/elflint.c:3915
-#, c-format
-msgid "duplicate version index %d\n"
-msgstr ""
-
-#: src/elflint.c:3929
-#, c-format
-msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
-msgstr ""
-
-#: src/elflint.c:3978
-#, c-format
-msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3982
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4005
-#, c-format
-msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4009
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4026
-#, c-format
-msgid "phdr[%d]: no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4045
-#, c-format
-msgid "phdr[%d]: cannot get content of note section: %s\n"
-msgstr ""
-
-#: src/elflint.c:4048
-#, c-format
-msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4069
-#, c-format
-msgid "section [%2d] '%s': no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4076
-#, c-format
-msgid "section [%2d] '%s': cannot get content of note section\n"
-msgstr ""
-
-#: src/elflint.c:4079
-#, c-format
-msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4097
-#, c-format
-msgid ""
-"only executables, shared objects, and core files can have program headers\n"
-msgstr ""
-
-#: src/elflint.c:4112
-#, c-format
-msgid "cannot get program header entry %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:4121
-#, c-format
-msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:4132
-#, c-format
-msgid "more than one INTERP entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4140
-#, c-format
-msgid "more than one TLS entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4147
-#, c-format
-msgid "static executable cannot have dynamic sections\n"
-msgstr ""
-
-#: src/elflint.c:4161
-#, c-format
-msgid "dynamic section reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4164
-#, c-format
-msgid "dynamic section size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4174
-#, c-format
-msgid "more than one GNU_RELRO entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4195
-#, c-format
-msgid "loadable segment GNU_RELRO applies to is not writable\n"
-msgstr ""
-
-#: src/elflint.c:4198
-#, c-format
-msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
-msgstr ""
-
-#: src/elflint.c:4206 src/elflint.c:4229
-#, c-format
-msgid "%s segment not contained in a loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:4235
-#, c-format
-msgid "program header offset in ELF header and PHDR entry do not match"
-msgstr ""
-
-#: src/elflint.c:4259
-#, c-format
-msgid "call frame search table reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4262
-#, c-format
-msgid "call frame search table size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4275
-#, c-format
-msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
-msgstr ""
-
-#: src/elflint.c:4283
-#, c-format
-msgid "call frame search table must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4286
-#, c-format
-msgid "section [%2zu] '%s' must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4290
-#, c-format
-msgid "call frame search table must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4293
-#, c-format
-msgid "section [%2zu] '%s' must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4298
-#, c-format
-msgid "call frame search table must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4301
-#, c-format
-msgid "section [%2zu] '%s' must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4312
-#, c-format
-msgid "program header entry %d: file size greater than memory size\n"
-msgstr ""
-
-#: src/elflint.c:4319
-#, c-format
-msgid "program header entry %d: alignment not a power of 2\n"
-msgstr ""
-
-#: src/elflint.c:4322
-#, c-format
-msgid ""
-"program header entry %d: file offset and virtual address not module of "
-"alignment\n"
-msgstr ""
-
-#: src/elflint.c:4335
-#, c-format
-msgid ""
-"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
-"program header entry"
-msgstr ""
-
-#: src/elflint.c:4369
-#, c-format
-msgid "cannot read ELF header: %s\n"
-msgstr ""
-
-#: src/elflint.c:4395
-#, c-format
-msgid "text relocation flag set but not needed\n"
-msgstr ""
-
-#: src/findtextrel.c:70
-msgid "Input Selection:"
-msgstr ""
-
-#: src/findtextrel.c:71
-msgid "Prepend PATH to all file names"
-msgstr ""
-
-#: src/findtextrel.c:73
-msgid "Use PATH as root of debuginfo hierarchy"
-msgstr ""
-
-#: src/findtextrel.c:80
-msgid "Locate source of text relocations in FILEs (a.out by default)."
-msgstr ""
-
-#: src/findtextrel.c:84 src/nm.c:111 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:97
-msgid "[FILE...]"
-msgstr ""
-
-#: src/findtextrel.c:246
-#, c-format
-msgid "cannot get ELF header '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:257
-#, c-format
-msgid "'%s' is not a DSO or PIE"
-msgstr ""
-
-#: src/findtextrel.c:274
-#, c-format
-msgid "getting get section header of section %zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:292
-#, c-format
-msgid "cannot read dynamic section: %s"
-msgstr ""
-
-#: src/findtextrel.c:307
-#, c-format
-msgid "no text relocations reported in '%s'"
-msgstr ""
-
-#: src/findtextrel.c:319
-#, c-format
-msgid "while reading ELF file"
-msgstr ""
-
-#: src/findtextrel.c:328 src/findtextrel.c:345
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr ""
-
-#: src/findtextrel.c:397
-#, c-format
-msgid "cannot get section header of section %Zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:409
-#, c-format
-msgid "cannot get symbol table section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:429 src/findtextrel.c:452
-#, c-format
-msgid "cannot get relocation at index %d in section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:517
-#, c-format
-msgid "%s not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:570
-#, c-format
-msgid ""
-"the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:577 src/findtextrel.c:597
-#, c-format
-msgid ""
-"the file containing the function '%s' might not be compiled with -fpic/-"
-"fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:585
-#, c-format
-msgid ""
-"either the file containing the function '%s' or the file containing the "
-"function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:605
-#, c-format
-msgid ""
-"a relocation modifies memory at offset %llu in a write-protected segment\n"
-msgstr ""
-
-#: src/i386_ld.c:210
-#, c-format
-msgid "cannot allocate PLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:232
-#, c-format
-msgid "cannot allocate PLTREL section: %s"
-msgstr ""
-
-#: src/i386_ld.c:253
-#, c-format
-msgid "cannot allocate GOT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:274
-#, c-format
-msgid "cannot allocate GOTPLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:661
-#, c-format
-msgid "initial-executable TLS relocation cannot be used "
-msgstr ""
-
-#: src/ld.c:87
-msgid "Input File Control:"
-msgstr ""
-
-#: src/ld.c:89
-msgid "Include whole archives in the output from now on."
-msgstr ""
-
-#: src/ld.c:91
-msgid "Stop including the whole archives in the output."
-msgstr ""
-
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
-msgid "FILE"
-msgstr ""
-
-#: src/ld.c:93
-msgid "Start a group."
-msgstr ""
-
-#: src/ld.c:94
-msgid "End a group."
-msgstr ""
-
-#: src/ld.c:95
-msgid "PATH"
-msgstr ""
-
-#: src/ld.c:96
-msgid "Add PATH to list of directories files are searched in."
-msgstr ""
-
-#: src/ld.c:98
-msgid "Only set DT_NEEDED for following dynamic libs if actually used"
-msgstr ""
-
-#: src/ld.c:100
-msgid "Always set DT_NEEDED for following dynamic libs"
-msgstr ""
-
-#: src/ld.c:102
-msgid "Ignore LD_LIBRARY_PATH environment variable."
-msgstr ""
-
-#: src/ld.c:105
-msgid "Output File Control:"
-msgstr ""
-
-#: src/ld.c:106
-msgid "Place output in FILE."
-msgstr ""
-
-#: src/ld.c:109
-msgid "Object is marked to not use default search path at runtime."
-msgstr ""
-
-#: src/ld.c:111
-msgid "Same as --whole-archive."
-msgstr ""
-
-#: src/ld.c:112
-msgid ""
-"Default rules of extracting from archive; weak references are not enough."
-msgstr ""
-
-#: src/ld.c:116
-msgid "Weak references cause extraction from archive."
-msgstr ""
-
-#: src/ld.c:118
-msgid "Allow multiple definitions; first is used."
-msgstr ""
-
-#: src/ld.c:120
-msgid "Disallow/allow undefined symbols in DSOs."
-msgstr ""
-
-#: src/ld.c:123
-msgid "Object requires immediate handling of $ORIGIN."
-msgstr ""
-
-#: src/ld.c:125
-msgid "Relocation will not be processed lazily."
-msgstr ""
-
-#: src/ld.c:127
-msgid "Object cannot be unloaded at runtime."
-msgstr ""
-
-#: src/ld.c:129
-msgid "Mark object to be initialized first."
-msgstr ""
-
-#: src/ld.c:131
-msgid "Enable/disable lazy-loading flag for following dependencies."
-msgstr ""
-
-#: src/ld.c:133
-msgid "Mark object as not loadable with 'dlopen'."
-msgstr ""
-
-#: src/ld.c:135
-msgid "Ignore/record dependencies on unused DSOs."
-msgstr ""
-
-#: src/ld.c:137
-msgid "Generated DSO will be a system library."
-msgstr ""
-
-#: src/ld.c:138
-msgid "ADDRESS"
-msgstr ""
-
-#: src/ld.c:138
-msgid "Set entry point address."
-msgstr ""
-
-#: src/ld.c:141
-msgid "Do not link against shared libraries."
-msgstr ""
-
-#: src/ld.c:144
-msgid "Prefer linking against shared libraries."
-msgstr ""
-
-#: src/ld.c:145
-msgid "Export all dynamic symbols."
-msgstr ""
-
-#: src/ld.c:146
-msgid "Strip all symbols."
-msgstr ""
-
-#: src/ld.c:147
-msgid "Strip debugging symbols."
-msgstr ""
-
-#: src/ld.c:149
-msgid "Assume pagesize for the target system to be SIZE."
-msgstr ""
-
-#: src/ld.c:151
-msgid "Set runtime DSO search path."
-msgstr ""
-
-#: src/ld.c:154
-msgid "Set link time DSO search path."
-msgstr ""
-
-#: src/ld.c:155
-msgid "Generate dynamic shared object."
-msgstr ""
-
-#: src/ld.c:156
-msgid "Generate relocatable object."
-msgstr ""
-
-#: src/ld.c:159
-msgid "Causes symbol not assigned to a version be reduced to local."
-msgstr ""
-
-#: src/ld.c:160
-msgid "Remove unused sections."
-msgstr ""
-
-#: src/ld.c:163
-msgid "Don't remove unused sections."
-msgstr ""
-
-#: src/ld.c:164
-msgid "Set soname of shared object."
-msgstr ""
-
-#: src/ld.c:165
-msgid "Set the dynamic linker name."
-msgstr ""
-
-#: src/ld.c:168
-msgid "Add/suppress addition indentifying link-editor to .comment section."
-msgstr ""
-
-#: src/ld.c:171
-msgid "Create .eh_frame_hdr section"
-msgstr ""
-
-#: src/ld.c:173
-msgid "Set hash style to sysv, gnu or both."
-msgstr ""
-
-#: src/ld.c:175
-msgid "Generate build ID note (md5, sha1 (default), uuid)."
-msgstr ""
-
-#: src/ld.c:177
-msgid "Linker Operation Control:"
-msgstr ""
-
-#: src/ld.c:178
-msgid "Verbose messages."
-msgstr ""
-
-#: src/ld.c:179
-msgid "Trace file opens."
-msgstr ""
-
-#: src/ld.c:181
-msgid "Trade speed for less memory usage"
-msgstr ""
-
-#: src/ld.c:182
-msgid "LEVEL"
-msgstr ""
-
-#: src/ld.c:183
-msgid "Set optimization level to LEVEL."
-msgstr ""
-
-#: src/ld.c:184
-msgid "Use linker script in FILE."
-msgstr ""
-
-#: src/ld.c:187
-msgid "Select to get parser debug information"
-msgstr ""
-
-#: src/ld.c:190
-msgid "Read version information from FILE."
-msgstr ""
-
-#: src/ld.c:191
-msgid "Set emulation to NAME."
-msgstr ""
-
-#: src/ld.c:197
-msgid "Combine object and archive files."
-msgstr ""
-
-#: src/ld.c:200
-msgid "[FILE]..."
-msgstr ""
-
-#: src/ld.c:333
-#, c-format
-msgid "At least one input file needed"
-msgstr ""
-
-#: src/ld.c:349
-#, c-format
-msgid "error while preparing linking"
-msgstr ""
-
-#: src/ld.c:356
-#, c-format
-msgid "cannot open linker script '%s'"
-msgstr ""
-
-#: src/ld.c:397
-#, c-format
-msgid "-( without matching -)"
-msgstr ""
-
-#: src/ld.c:572 src/ld.c:610
-#, c-format
-msgid "only one option of -G and -r is allowed"
-msgstr ""
-
-#: src/ld.c:594
-#, c-format
-msgid "more than one '-m' parameter"
-msgstr ""
-
-#: src/ld.c:604 src/ld.c:1013
-#, c-format
-msgid "unknown option `-%c %s'"
-msgstr ""
-
-#: src/ld.c:646
-#, c-format
-msgid "invalid page size value '%s': ignored"
-msgstr ""
-
-#: src/ld.c:687
-#, c-format
-msgid "invalid hash style '%s'"
-msgstr ""
-
-#: src/ld.c:697
-#, c-format
-msgid "invalid build-ID style '%s'"
-msgstr ""
-
-#: src/ld.c:785
-#, c-format
-msgid "More than one output file name given."
-msgstr ""
-
-#: src/ld.c:802
-#, c-format
-msgid "Invalid optimization level `%s'"
-msgstr ""
-
-#: src/ld.c:850
-#, c-format
-msgid "nested -( -) groups are not allowed"
-msgstr ""
-
-#: src/ld.c:869
-#, c-format
-msgid "-) without matching -("
-msgstr ""
-
-#: src/ld.c:1046
-#, c-format
-msgid "unknown option '-%c %s'"
-msgstr ""
-
-#: src/ld.c:1150
-#, c-format
-msgid "could not find input file to determine output file format"
-msgstr ""
-
-#: src/ld.c:1152
-#, c-format
-msgid "try again with an appropriate '-m' parameter"
-msgstr ""
-
-#: src/ld.c:1446
-#, c-format
-msgid "cannot read version script '%s'"
-msgstr ""
-
-#: src/ld.c:1512 src/ld.c:1551
-#, c-format
-msgid "duplicate definition of '%s' in linker script"
-msgstr ""
-
-#: src/ldgeneric.c:209 src/ldgeneric.c:5151
-#, c-format
-msgid "cannot create string table"
-msgstr ""
-
-#: src/ldgeneric.c:255
-#, c-format
-msgid "cannot load ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:265
-#, c-format
-msgid "cannot find init function in ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:310
-#, c-format
-msgid "%s listed more than once as input"
-msgstr ""
-
-#: src/ldgeneric.c:424
-#, c-format
-msgid "%s (for -l%s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:425
-#, c-format
-msgid "%s (for DT_NEEDED %s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:573
-#, c-format
-msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
-msgstr ""
-
-#: src/ldgeneric.c:586
-#, c-format
-msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
-msgstr ""
-
-#: src/ldgeneric.c:661 src/ldgeneric.c:1122 src/readelf.c:629 src/strip.c:543
-#, c-format
-msgid "cannot determine number of sections: %s"
-msgstr ""
-
-#: src/ldgeneric.c:677
-#, c-format
-msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
-msgstr ""
-
-#: src/ldgeneric.c:700
-#, c-format
-msgid "(%s+%#<PRIx64>): first defined here\n"
-msgstr ""
-
-#: src/ldgeneric.c:819
-#, c-format
-msgid "%s: cannot get section group data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:840
-#, c-format
-msgid "%s: section '%s' with group flag set does not belong to any group"
-msgstr ""
-
-#: src/ldgeneric.c:885
-#, c-format
-msgid "%s: section [%2d] '%s' is not in the correct section group"
-msgstr ""
-
-#: src/ldgeneric.c:1156 src/ldgeneric.c:1413 src/ldgeneric.c:1422
-#: src/ldgeneric.c:1481 src/ldgeneric.c:1490 src/ldgeneric.c:1753
-#: src/ldgeneric.c:2005
-#, c-format
-msgid "%s: invalid ELF file (%s:%d)\n"
-msgstr ""
-
-#: src/ldgeneric.c:1250
-#, c-format
-msgid "%s: only files of type ET_REL might contain section groups"
-msgstr ""
-
-#: src/ldgeneric.c:1302
-#, c-format
-msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:1314
-#, c-format
-msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
-msgstr ""
-
-#: src/ldgeneric.c:1328
-#, c-format
-msgid ""
-"%s: group member %zu of section group [%2zd] '%s' has too high index: %"
-"<PRIu32>"
-msgstr ""
-
-#: src/ldgeneric.c:1350
-#, c-format
-msgid "%s: section '%s' has unknown type: %d"
-msgstr ""
-
-#: src/ldgeneric.c:1729
-#, c-format
-msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:1899
-#, c-format
-msgid "cannot read archive `%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:2020
-#, c-format
-msgid "file of type %s cannot be linked in\n"
-msgstr ""
-
-#: src/ldgeneric.c:2032
-#, c-format
-msgid "%s: input file incompatible with ELF machine type %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2044
-#, c-format
-msgid "%s: cannot get section header string table index: %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2073
-#, c-format
-msgid "cannot use DSO '%s' when generating relocatable object file"
-msgstr ""
-
-#: src/ldgeneric.c:2158
-#, c-format
-msgid "input file '%s' ignored"
-msgstr ""
-
-#: src/ldgeneric.c:2372
-#, c-format
-msgid "undefined symbol `%s' in %s"
-msgstr ""
-
-#: src/ldgeneric.c:2702
-#, c-format
-msgid "cannot create ELF descriptor for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:2709
-#, c-format
-msgid "could not create ELF header for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3224 src/ldgeneric.c:3294 src/ldgeneric.c:3330
-#: src/ldgeneric.c:4457 src/ldgeneric.c:4506 src/ldgeneric.c:4538
-#: src/ldgeneric.c:4773 src/ldgeneric.c:4828 src/ldgeneric.c:5075
-#: src/ldgeneric.c:5131 src/ldgeneric.c:5600 src/ldgeneric.c:5612
-#, c-format
-msgid "cannot create section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3444
-#, c-format
-msgid "address computation expression contains variable '%s'"
-msgstr ""
-
-#: src/ldgeneric.c:3489
-#, c-format
-msgid ""
-"argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
-"of two"
-msgstr ""
-
-#: src/ldgeneric.c:3684
-#, c-format
-msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3690
-#, c-format
-msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3920
-#, c-format
-msgid "cannot create GNU hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4071
-#, c-format
-msgid "cannot create hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4114
-#, c-format
-msgid "cannot create build ID section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4191
-#, c-format
-msgid "cannot convert section data to file format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4200
-#, c-format
-msgid "cannot convert section data to memory format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4261
-#, c-format
-msgid "cannot read enough data for UUID"
-msgstr ""
-
-#: src/ldgeneric.c:4358 src/ldgeneric.c:4379 src/ldgeneric.c:4408
-#: src/ldgeneric.c:6062
-#, c-format
-msgid "cannot create symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5300 src/ldgeneric.c:5852
-#, c-format
-msgid "section index too large in dynamic symbol table"
-msgstr ""
-
-#: src/ldgeneric.c:5745
-#, c-format
-msgid "cannot create versioning section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5818
-#, c-format
-msgid "cannot create dynamic symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5994
-#, c-format
-msgid "cannot create versioning data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6094 src/ldgeneric.c:6107 src/ldgeneric.c:6171
-#: src/ldgeneric.c:6179
-#, c-format
-msgid "cannot create section header string section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6101
-#, c-format
-msgid "cannot create section header string section"
-msgstr ""
-
-#: src/ldgeneric.c:6259
-#, c-format
-msgid "cannot create program header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6267
-#, c-format
-msgid "while determining file layout: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6388
-#, c-format
-msgid "internal error: non-nobits section follows nobits section"
-msgstr ""
-
-#: src/ldgeneric.c:6925
-#, c-format
-msgid "cannot get header of 0th section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6941 src/unstrip.c:1808
-#, c-format
-msgid "cannot update ELF header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6972
-#, c-format
-msgid "linker backend didn't specify function to relocate section"
-msgstr ""
-
-#: src/ldgeneric.c:6984
-#, c-format
-msgid "while writing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6989
-#, c-format
-msgid "while finishing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6995
-#, c-format
-msgid "cannot stat output file"
-msgstr ""
-
-#: src/ldgeneric.c:7011
-#, c-format
-msgid "WARNING: temporary output file overwritten before linking finished"
-msgstr ""
-
-#: src/ldgeneric.c:7064 src/ldgeneric.c:7075 src/ldgeneric.c:7086
-#: src/ldgeneric.c:7097 src/ldgeneric.c:7116 src/ldgeneric.c:7129
-#: src/ldgeneric.c:7141
-#, c-format
-msgid "no machine specific '%s' implementation"
-msgstr ""
-
-#: src/ldscript.y:178
-msgid "mode for segment invalid\n"
-msgstr ""
-
-#: src/ldscript.y:465
-#, c-format
-msgid "while reading version script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:466
-#, c-format
-msgid "while reading linker script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:745
-#, c-format
-msgid "symbol '%s' is declared both local and global for unnamed version"
-msgstr ""
-
-#: src/ldscript.y:747
-#, c-format
-msgid "symbol '%s' is declared both local and global for version '%s'"
-msgstr ""
-
-#: src/ldscript.y:767 src/ldscript.y:774
-#, c-format
-msgid "default visibility set as local and global"
-msgstr ""
-
-#: src/nm.c:74 src/strip.c:73
-msgid "Output selection:"
-msgstr ""
-
-#: src/nm.c:75
-msgid "Display debugger-only symbols"
-msgstr ""
-
-#: src/nm.c:76
-msgid "Display only defined symbols"
-msgstr ""
-
-#: src/nm.c:79
-msgid "Display dynamic symbols instead of normal symbols"
-msgstr ""
-
-#: src/nm.c:80
-msgid "Display only external symbols"
-msgstr ""
-
-#: src/nm.c:81
-msgid "Display only undefined symbols"
-msgstr ""
-
-#: src/nm.c:83
-msgid "Include index for symbols from archive members"
-msgstr ""
-
-#: src/nm.c:85 src/size.c:66
-msgid "Output format:"
-msgstr ""
-
-#: src/nm.c:87
-msgid "Print name of the input file before every symbol"
-msgstr ""
-
-#: src/nm.c:90
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The "
-"default is `sysv'"
-msgstr ""
-
-#: src/nm.c:92
-msgid "Same as --format=bsd"
-msgstr ""
-
-#: src/nm.c:93
-msgid "Same as --format=posix"
-msgstr ""
-
-#: src/nm.c:94 src/size.c:72
-msgid "Use RADIX for printing symbol values"
-msgstr ""
-
-#: src/nm.c:95
-msgid "Mark weak symbols"
-msgstr ""
-
-#: src/nm.c:96
-msgid "Print size of defined symbols"
-msgstr ""
-
-#: src/nm.c:98 src/size.c:80 src/strip.c:78 src/unstrip.c:81
-msgid "Output options:"
-msgstr ""
-
-#: src/nm.c:99
-msgid "Sort symbols numerically by address"
-msgstr ""
-
-#: src/nm.c:101
-msgid "Do not sort the symbols"
-msgstr ""
-
-#: src/nm.c:102
-msgid "Reverse the sense of the sort"
-msgstr ""
-
-#: src/nm.c:108
-msgid "List symbols from FILEs (a.out by default)."
-msgstr ""
-
-#: src/nm.c:136 src/objdump.c:105 src/size.c:117 src/strip.c:121
-#, c-format
-msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
-msgstr ""
-
-#: src/nm.c:380 src/nm.c:392 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:1816
-#, c-format
-msgid "while closing '%s'"
-msgstr ""
-
-#: src/nm.c:402 src/objdump.c:296 src/strip.c:359
-#, c-format
-msgid "%s: File format not recognized"
-msgstr ""
-
-#: src/nm.c:442
-msgid ""
-"\n"
-"Archive index:"
-msgstr ""
-
-#: src/nm.c:451
-#, c-format
-msgid "invalid offset %zu for symbol %s"
-msgstr ""
-
-#: src/nm.c:456
-#, c-format
-msgid "%s in %s\n"
-msgstr ""
-
-#: src/nm.c:464
-#, c-format
-msgid "cannot reset archive offset to beginning"
-msgstr ""
-
-#: src/nm.c:488 src/objdump.c:344
-#, c-format
-msgid "%s%s%s: file format not recognized"
-msgstr ""
-
-#: src/nm.c:700
-#, c-format
-msgid "cannot create search tree"
-msgstr ""
-
-#: src/nm.c:740 src/nm.c:1002 src/objdump.c:744 src/readelf.c:885
-#: src/readelf.c:1028 src/readelf.c:1169 src/readelf.c:1351 src/readelf.c:1549
-#: src/readelf.c:1735 src/readelf.c:1945 src/readelf.c:2199 src/readelf.c:2265
-#: src/readelf.c:2343 src/readelf.c:2841 src/readelf.c:2877 src/readelf.c:2939
-#: src/readelf.c:6493 src/readelf.c:7387 src/readelf.c:7534 src/readelf.c:7604
-#: src/size.c:425 src/size.c:499 src/strip.c:483
-#, c-format
-msgid "cannot get section header string table index"
-msgstr ""
-
-#: src/nm.c:766
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:768
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:771
-#, c-format
-msgid ""
-"%*s%-*s %-*s Class Type %-*s %*s Section\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:1012
-#, c-format
-msgid "%s: entry size in section `%s' is not what we expect"
-msgstr ""
-
-#: src/nm.c:1016
-#, c-format
-msgid "%s: size of section `%s' is not multiple of entry size"
-msgstr ""
-
-#: src/nm.c:1255
-#, c-format
-msgid "%s%s%s%s: Invalid operation"
-msgstr ""
-
-#: src/nm.c:1312
-#, c-format
-msgid "%s%s%s: no symbols"
-msgstr ""
-
-#: src/objdump.c:61
-msgid "Mode selection:"
-msgstr ""
-
-#: src/objdump.c:62
-msgid "Display relocation information."
-msgstr ""
-
-#: src/objdump.c:64
-msgid "Display the full contents of all sections requested"
-msgstr ""
-
-#: src/objdump.c:66
-msgid "Display assembler code of executable sections"
-msgstr ""
-
-#: src/objdump.c:68
-msgid "Output option selection:"
-msgstr ""
-
-#: src/objdump.c:70
-msgid "Only display information for section NAME."
-msgstr ""
-
-#: src/objdump.c:76
-msgid "Show information from FILEs (a.out by default)."
-msgstr ""
-
-#: src/objdump.c:236 src/readelf.c:430
-msgid "No operation specified.\n"
-msgstr ""
-
-#: src/objdump.c:274 src/objdump.c:286
-#, c-format
-msgid "while close `%s'"
-msgstr ""
-
-#: src/objdump.c:379 src/readelf.c:1644 src/readelf.c:1818
-msgid "INVALID SYMBOL"
-msgstr ""
-
-#: src/objdump.c:394 src/readelf.c:1675 src/readelf.c:1851
-msgid "INVALID SECTION"
-msgstr ""
-
-#: src/objdump.c:510
-#, c-format
-msgid ""
-"\n"
-"RELOCATION RECORDS FOR [%s]:\n"
-"%-*s TYPE VALUE\n"
-msgstr ""
-
-#: src/objdump.c:513
-msgid "OFFSET"
-msgstr ""
-
-#: src/objdump.c:576
-#, c-format
-msgid "Contents of section %s:\n"
-msgstr ""
-
-#: src/objdump.c:676
-#, c-format
-msgid "cannot disassemble"
-msgstr ""
-
-#: src/ranlib.c:74
-msgid "Generate an index to speed access to archives."
-msgstr ""
-
-#: src/ranlib.c:77
-msgid "ARCHIVE"
-msgstr ""
-
-#: src/ranlib.c:116
-#, c-format
-msgid "Archive name required"
-msgstr ""
-
-#: src/ranlib.c:194
-#, c-format
-msgid "'%s' is no archive"
-msgstr ""
-
-#: src/ranlib.c:229
-#, c-format
-msgid "error while freeing sub-ELF descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:73
-msgid "ELF output selection:"
-msgstr ""
-
-#: src/readelf.c:75
-msgid "All these plus -p .strtab -p .dynstr -p .comment"
-msgstr ""
-
-#: src/readelf.c:76
-msgid "Display the dynamic segment"
-msgstr ""
-
-#: src/readelf.c:77
-msgid "Display the ELF file header"
-msgstr ""
-
-#: src/readelf.c:79
-msgid "Display histogram of bucket list lengths"
-msgstr ""
-
-#: src/readelf.c:80
-msgid "Display the program headers"
-msgstr ""
-
-#: src/readelf.c:82
-msgid "Display relocations"
-msgstr ""
-
-#: src/readelf.c:83
-msgid "Display the sections' headers"
-msgstr ""
-
-#: src/readelf.c:85
-msgid "Display the symbol table"
-msgstr ""
-
-#: src/readelf.c:86
-msgid "Display versioning information"
-msgstr ""
-
-#: src/readelf.c:87
-msgid "Display the ELF notes"
-msgstr ""
-
-#: src/readelf.c:89
-msgid "Display architecture specific information, if any"
-msgstr ""
-
-#: src/readelf.c:91
-msgid "Display sections for exception handling"
-msgstr ""
-
-#: src/readelf.c:93
-msgid "Additional output selection:"
-msgstr ""
-
-#: src/readelf.c:95
-msgid ""
-"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, info, loc, line, ranges, pubnames, str, macinfo, or exception"
-msgstr ""
-
-#: src/readelf.c:99
-msgid "Dump the uninterpreted contents of SECTION, by number or name"
-msgstr ""
-
-#: src/readelf.c:101
-msgid "Print string contents of sections"
-msgstr ""
-
-#: src/readelf.c:104
-msgid "Display the symbol index of an archive"
-msgstr ""
-
-#: src/readelf.c:106
-msgid "Output control:"
-msgstr ""
-
-#: src/readelf.c:108
-msgid "Do not find symbol names for addresses in DWARF data"
-msgstr ""
-
-#: src/readelf.c:114
-msgid "Print information from ELF file in human-readable form."
-msgstr ""
-
-#: src/readelf.c:401
-#, c-format
-msgid "Unknown DWARF debug section `%s'.\n"
-msgstr ""
-
-#: src/readelf.c:465
-#, c-format
-msgid "cannot generate Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:477
-#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr ""
-
-#: src/readelf.c:482
-#, c-format
-msgid "error while closing Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:574
-#, c-format
-msgid "cannot stat input file"
-msgstr ""
-
-#: src/readelf.c:576
-#, c-format
-msgid "input file is empty"
-msgstr ""
-
-#: src/readelf.c:578
-#, c-format
-msgid "failed reading '%s': %s"
-msgstr ""
-
-#: src/readelf.c:614
-#, c-format
-msgid "cannot read ELF header: %s"
-msgstr ""
-
-#: src/readelf.c:622
-#, c-format
-msgid "cannot create EBL handle"
-msgstr ""
-
-#: src/readelf.c:635
-#, c-format
-msgid "cannot determine number of program headers: %s"
-msgstr ""
-
-#: src/readelf.c:721
-msgid "NONE (None)"
-msgstr ""
-
-#: src/readelf.c:722
-msgid "REL (Relocatable file)"
-msgstr ""
-
-#: src/readelf.c:723
-msgid "EXEC (Executable file)"
-msgstr ""
-
-#: src/readelf.c:724
-msgid "DYN (Shared object file)"
-msgstr ""
-
-#: src/readelf.c:725
-msgid "CORE (Core file)"
-msgstr ""
-
-#: src/readelf.c:730
-#, c-format
-msgid "OS Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:732
-#, c-format
-msgid "Processor Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:742
-msgid ""
-"ELF Header:\n"
-" Magic: "
-msgstr ""
-
-#: src/readelf.c:746
-#, c-format
-msgid ""
-"\n"
-" Class: %s\n"
-msgstr ""
-
-#: src/readelf.c:751
-#, c-format
-msgid " Data: %s\n"
-msgstr ""
-
-#: src/readelf.c:757
-#, c-format
-msgid " Ident Version: %hhd %s\n"
-msgstr ""
-
-#: src/readelf.c:759 src/readelf.c:776
-msgid "(current)"
-msgstr ""
-
-#: src/readelf.c:763
-#, c-format
-msgid " OS/ABI: %s\n"
-msgstr ""
-
-#: src/readelf.c:766
-#, c-format
-msgid " ABI Version: %hhd\n"
-msgstr ""
-
-#: src/readelf.c:769
-msgid " Type: "
-msgstr ""
-
-#: src/readelf.c:772
-#, c-format
-msgid " Machine: %s\n"
-msgstr ""
-
-#: src/readelf.c:774
-#, c-format
-msgid " Version: %d %s\n"
-msgstr ""
-
-#: src/readelf.c:778
-#, c-format
-msgid " Entry point address: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:781
-#, c-format
-msgid " Start of program headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:782 src/readelf.c:785
-msgid "(bytes into file)"
-msgstr ""
-
-#: src/readelf.c:784
-#, c-format
-msgid " Start of section headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:787
-#, c-format
-msgid " Flags: %s\n"
-msgstr ""
-
-#: src/readelf.c:790
-#, c-format
-msgid " Size of this header: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:791 src/readelf.c:794 src/readelf.c:811
-msgid "(bytes)"
-msgstr ""
-
-#: src/readelf.c:793
-#, c-format
-msgid " Size of program header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:796
-#, c-format
-msgid " Number of program headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:803
-#, c-format
-msgid " (%<PRIu32> in [0].sh_info)"
-msgstr ""
-
-#: src/readelf.c:806 src/readelf.c:823 src/readelf.c:837
-msgid " ([0] not available)"
-msgstr ""
-
-#: src/readelf.c:810
-#, c-format
-msgid " Size of section header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:813
-#, c-format
-msgid " Number of section headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:820
-#, c-format
-msgid " (%<PRIu32> in [0].sh_size)"
-msgstr ""
-
-#: src/readelf.c:833
-#, c-format
-msgid " (%<PRIu32> in [0].sh_link)"
-msgstr ""
-
-#: src/readelf.c:841
-#, c-format
-msgid ""
-" Section header string table index: XINDEX%s\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:845
-#, c-format
-msgid ""
-" Section header string table index: %<PRId16>\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:877
-#, c-format
-msgid ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:887
-msgid "Section Headers:"
-msgstr ""
-
-#: src/readelf.c:890
-msgid ""
-"[Nr] Name Type Addr Off Size ES Flags Lk "
-"Inf Al"
-msgstr ""
-
-#: src/readelf.c:892
-msgid ""
-"[Nr] Name Type Addr Off Size ES "
-"Flags Lk Inf Al"
-msgstr ""
-
-#: src/readelf.c:899 src/readelf.c:1052
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:906 src/readelf.c:1060 src/readelf.c:7554 src/unstrip.c:353
-#: src/unstrip.c:377 src/unstrip.c:427 src/unstrip.c:536 src/unstrip.c:553
-#: src/unstrip.c:591 src/unstrip.c:789 src/unstrip.c:1057 src/unstrip.c:1244
-#: src/unstrip.c:1305 src/unstrip.c:1427 src/unstrip.c:1480 src/unstrip.c:1588
-#: src/unstrip.c:1778
-#, c-format
-msgid "cannot get section header: %s"
-msgstr ""
-
-#: src/readelf.c:964
-msgid "Program Headers:"
-msgstr ""
-
-#: src/readelf.c:966
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:969
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz "
-"MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:1009
-#, c-format
-msgid "\t[Requesting program interpreter: %s]\n"
-msgstr ""
-
-#: src/readelf.c:1030
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-" Segment Sections..."
-msgstr ""
-
-#: src/readelf.c:1041 src/unstrip.c:1824 src/unstrip.c:1863 src/unstrip.c:1870
-#, c-format
-msgid "cannot get program header: %s"
-msgstr ""
-
-#: src/readelf.c:1175
-#, c-format
-msgid ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1180
-#, c-format
-msgid ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1188
-msgid "<INVALID SYMBOL>"
-msgstr ""
-
-#: src/readelf.c:1202
-msgid "<INVALID SECTION>"
-msgstr ""
-
-#: src/readelf.c:1353
-#, c-format
-msgid ""
-"\n"
-"Dynamic segment contains %lu entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Dynamic segment contains %lu entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1365
-msgid " Type Value\n"
-msgstr ""
-
-#: src/readelf.c:1389
-#, c-format
-msgid "Shared library: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1394
-#, c-format
-msgid "Library soname: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1399
-#, c-format
-msgid "Library rpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1404
-#, c-format
-msgid "Library runpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1424
-#, c-format
-msgid "%<PRId64> (bytes)\n"
-msgstr ""
-
-#: src/readelf.c:1534 src/readelf.c:1720
-#, c-format
-msgid ""
-"\n"
-"Invalid symbol table at offset %#0<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:1552 src/readelf.c:1737
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1567
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1577
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1579
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1632 src/readelf.c:1643 src/readelf.c:1656 src/readelf.c:1674
-#: src/readelf.c:1686 src/readelf.c:1805 src/readelf.c:1817 src/readelf.c:1831
-#: src/readelf.c:1850 src/readelf.c:1863
-msgid "<INVALID RELOC>"
-msgstr ""
-
-#: src/readelf.c:1749
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1751
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1952
-#, c-format
-msgid ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entry:\n"
-msgid_plural ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1958
-#, c-format
-msgid " %lu local symbol String table: [%2u] '%s'\n"
-msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1968
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1970
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1990
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr ""
-
-#: src/readelf.c:2078
-#, c-format
-msgid "bad dynamic symbol"
-msgstr ""
-
-#: src/readelf.c:2160
-msgid "none"
-msgstr ""
-
-#: src/readelf.c:2177
-msgid "| <unknown>"
-msgstr ""
-
-#: src/readelf.c:2202
-#, c-format
-msgid ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2225
-#, c-format
-msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2238
-#, c-format
-msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2269
-#, c-format
-msgid ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2299
-#, c-format
-msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
-msgstr ""
-
-#: src/readelf.c:2314
-#, c-format
-msgid " %#06x: Parent %d: %s\n"
-msgstr ""
-
-#: src/readelf.c:2546
-#, c-format
-msgid ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgid_plural ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2576
-msgid " 0 *local* "
-msgstr ""
-
-#: src/readelf.c:2581
-msgid " 1 *global* "
-msgstr ""
-
-#: src/readelf.c:2612
-#, c-format
-msgid ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"bucket):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"buckets):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2636
-#, no-c-format
-msgid " Length Number % of total Coverage\n"
-msgstr ""
-
-#: src/readelf.c:2638
-#, c-format
-msgid " 0 %6<PRIu32> %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2645
-#, c-format
-msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2658
-#, c-format
-msgid ""
-" Average number of tests: successful lookup: %f\n"
-" unsuccessful lookup: %f\n"
-msgstr ""
-
-#: src/readelf.c:2676 src/readelf.c:2718 src/readelf.c:2759
-#, c-format
-msgid "cannot get data for section %d: %s"
-msgstr ""
-
-#: src/readelf.c:2813
-#, c-format
-msgid ""
-" Symbol Bias: %u\n"
-" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
-msgstr ""
-
-#: src/readelf.c:2887
-#, c-format
-msgid ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2901
-msgid ""
-" Library Time Stamp Checksum Version "
-"Flags"
-msgstr ""
-
-#: src/readelf.c:2951
-#, c-format
-msgid ""
-"\n"
-"Object attributes section [%2zu] '%s' of %<PRIu64> bytes at offset %"
-"#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:2967
-msgid " Owner Size\n"
-msgstr ""
-
-#: src/readelf.c:2993
-#, c-format
-msgid " %-13s %4<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3025
-#, c-format
-msgid " %-4u %12<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3030
-#, c-format
-msgid " File: %11<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3065
-#, c-format
-msgid " %s: %<PRId64>, %s\n"
-msgstr ""
-
-#: src/readelf.c:3068
-#, c-format
-msgid " %s: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3071
-#, c-format
-msgid " %s: %s\n"
-msgstr ""
-
-#: src/readelf.c:3078
-#, c-format
-msgid " %u: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3081
-#, c-format
-msgid " %u: %s\n"
-msgstr ""
-
-#: src/readelf.c:3117
-#, c-format
-msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3120
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3125
-#, c-format
-msgid "%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3128
-#, c-format
-msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3134
-#, c-format
-msgid "%s+%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3137
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3141
-#, c-format
-msgid "%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3144
-#, c-format
-msgid "%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3149
-#, c-format
-msgid "%s+%#<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3152
-#, c-format
-msgid "%s+%#0*<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3260
-#, c-format
-msgid "unknown tag %hx"
-msgstr ""
-
-#: src/readelf.c:3262
-#, c-format
-msgid "unknown user tag %hx"
-msgstr ""
-
-#: src/readelf.c:3480
-#, c-format
-msgid "unknown attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3483
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3529
-#, c-format
-msgid "unknown form %<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3763
-msgid "empty block"
-msgstr ""
-
-#: src/readelf.c:3766
-#, c-format
-msgid "%zu byte block:"
-msgstr ""
-
-#: src/readelf.c:4175
-#, c-format
-msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-msgstr ""
-
-#: src/readelf.c:4188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [ Code]\n"
-msgstr ""
-
-#: src/readelf.c:4195
-#, c-format
-msgid ""
-"\n"
-"Abbreviation section at offset %<PRIu64>:\n"
-msgstr ""
-
-#: src/readelf.c:4208
-#, c-format
-msgid " *** error while reading abbreviation: %s\n"
-msgstr ""
-
-#: src/readelf.c:4224
-#, c-format
-msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "yes"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "no"
-msgstr ""
-
-#: src/readelf.c:4263
-#, c-format
-msgid "cannot get .debug_aranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4268
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:4298
-#, c-format
-msgid " [%*zu] ???\n"
-msgstr ""
-
-#: src/readelf.c:4300
-#, c-format
-msgid ""
-" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:4319
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4324 src/readelf.c:4810 src/readelf.c:5452 src/readelf.c:5897
-#: src/readelf.c:5992 src/readelf.c:6164
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4338 src/readelf.c:5911
-#, c-format
-msgid " [%6tx] <INVALID DATA>\n"
-msgstr ""
-
-#: src/readelf.c:4360 src/readelf.c:5933
-#, c-format
-msgid " [%6tx] base address %s\n"
-msgstr ""
-
-#: src/readelf.c:4371
-#, c-format
-msgid " [%6tx] %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4373
-#, c-format
-msgid " %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4799 src/readelf.c:6230 src/readelf.c:6332
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr ""
-
-#: src/readelf.c:4806
-#, c-format
-msgid ""
-"\n"
-"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4833 src/readelf.c:5486
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:4855
-#, c-format
-msgid ""
-"\n"
-" [%6tx] Zero terminator\n"
-msgstr ""
-
-#: src/readelf.c:4924
-#, c-format
-msgid "invalid augmentation length"
-msgstr ""
-
-#: src/readelf.c:4936
-msgid "FDE address encoding: "
-msgstr ""
-
-#: src/readelf.c:4942
-msgid "LSDA pointer encoding: "
-msgstr ""
-
-#: src/readelf.c:5034
-#, c-format
-msgid " (offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5041
-#, c-format
-msgid " (end offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5068
-#, c-format
-msgid " %-26sLSDA pointer: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:5114
-#, c-format
-msgid "cannot get attribute code: %s"
-msgstr ""
-
-#: src/readelf.c:5122
-#, c-format
-msgid "cannot get attribute form: %s"
-msgstr ""
-
-#: src/readelf.c:5135
-#, c-format
-msgid "cannot get attribute value: %s"
-msgstr ""
-
-#: src/readelf.c:5331
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [Offset]\n"
-msgstr ""
-
-#: src/readelf.c:5356
-#, c-format
-msgid ""
-" Compilation unit at offset %<PRIu64>:\n"
-" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: %"
-"<PRIu8>, Offset size: %<PRIu8>\n"
-msgstr ""
-
-#: src/readelf.c:5374
-#, c-format
-msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5385
-#, c-format
-msgid "cannot get DIE offset: %s"
-msgstr ""
-
-#: src/readelf.c:5393
-#, c-format
-msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5422
-#, c-format
-msgid "cannot get next DIE: %s\n"
-msgstr ""
-
-#: src/readelf.c:5429
-#, c-format
-msgid "cannot get next DIE: %s"
-msgstr ""
-
-#: src/readelf.c:5464
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr ""
-
-#: src/readelf.c:5477
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-
-#: src/readelf.c:5529
-#, c-format
-msgid ""
-"\n"
-" Length: %<PRIu64>\n"
-" DWARF version: %<PRIuFAST16>\n"
-" Prologue length: %<PRIu64>\n"
-" Minimum instruction length: %<PRIuFAST8>\n"
-" Initial value if '%s': %<PRIuFAST8>\n"
-" Line base: %<PRIdFAST8>\n"
-" Line range: %<PRIuFAST8>\n"
-" Opcode base: %<PRIuFAST8>\n"
-"\n"
-"Opcodes:\n"
-msgstr ""
-
-#: src/readelf.c:5548
-#, c-format
-msgid "invalid data at offset %tu in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:5563
-#, c-format
-msgid " [%*<PRIuFAST8>] %hhu argument\n"
-msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5571
-msgid ""
-"\n"
-"Directory table:"
-msgstr ""
-
-#: src/readelf.c:5587
-msgid ""
-"\n"
-"File name table:\n"
-" Entry Dir Time Size Name"
-msgstr ""
-
-#: src/readelf.c:5616
-msgid ""
-"\n"
-"Line number statements:"
-msgstr ""
-
-#: src/readelf.c:5677
-#, c-format
-msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
-msgstr ""
-
-#: src/readelf.c:5697
-#, c-format
-msgid " extended opcode %u: "
-msgstr ""
-
-#: src/readelf.c:5702
-msgid "end of sequence"
-msgstr ""
-
-#: src/readelf.c:5717
-#, c-format
-msgid "set address to %s\n"
-msgstr ""
-
-#: src/readelf.c:5738
-#, c-format
-msgid "define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
-msgstr ""
-
-#: src/readelf.c:5747
-msgid "unknown opcode"
-msgstr ""
-
-#: src/readelf.c:5759
-msgid " copy"
-msgstr ""
-
-#: src/readelf.c:5769
-#, c-format
-msgid "advance address by %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5780
-#, c-format
-msgid " advance line by constant %d to %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:5788
-#, c-format
-msgid " set file to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5798
-#, c-format
-msgid " set column to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5805
-#, c-format
-msgid " set '%s' to %<PRIuFAST8>\n"
-msgstr ""
-
-#: src/readelf.c:5811
-msgid " set basic block flag"
-msgstr ""
-
-#: src/readelf.c:5821
-#, c-format
-msgid "advance address by constant %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5837
-#, c-format
-msgid "advance address by fixed value %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5846
-msgid " set prologue end flag"
-msgstr ""
-
-#: src/readelf.c:5851
-msgid " set epilogue begin flag"
-msgstr ""
-
-#: src/readelf.c:5860
-#, c-format
-msgid " unknown opcode with %<PRIu8> parameter:"
-msgid_plural " unknown opcode with %<PRIu8> parameters:"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5892
-#, c-format
-msgid "cannot get .debug_loc content: %s"
-msgstr ""
-
-#: src/readelf.c:5947
-#, c-format
-msgid " [%6tx] %s..%s"
-msgstr ""
-
-#: src/readelf.c:5949
-#, c-format
-msgid " %s..%s"
-msgstr ""
-
-#: src/readelf.c:6002
-#, c-format
-msgid "cannot get macro information section data: %s"
-msgstr ""
-
-#: src/readelf.c:6081
-#, c-format
-msgid "%*s*** non-terminated string at end of section"
-msgstr ""
-
-#: src/readelf.c:6149
-#, c-format
-msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
-msgstr ""
-
-#: src/readelf.c:6188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" %*s String\n"
-msgstr ""
-
-#: src/readelf.c:6202
-#, c-format
-msgid " *** error while reading strings: %s\n"
-msgstr ""
-
-#: src/readelf.c:6222
-#, c-format
-msgid ""
-"\n"
-"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
-msgstr ""
-
-#: src/readelf.c:6324
-#, c-format
-msgid ""
-"\n"
-"Exception handling table section [%2zu] '.gcc_except_table':\n"
-msgstr ""
-
-#: src/readelf.c:6347
-#, c-format
-msgid " LPStart encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6359
-#, c-format
-msgid " TType encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6373
-#, c-format
-msgid " Call site encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6386
-msgid ""
-"\n"
-" Call site table:"
-msgstr ""
-
-#: src/readelf.c:6400
-#, c-format
-msgid ""
-" [%4u] Call site start: %#<PRIx64>\n"
-" Call site length: %<PRIu64>\n"
-" Landing pad: %#<PRIx64>\n"
-" Action: %u\n"
-msgstr ""
-
-#: src/readelf.c:6460
-#, c-format
-msgid "invalid TType encoding"
-msgstr ""
-
-#: src/readelf.c:6484
-#, c-format
-msgid "cannot get debug context descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:6620 src/readelf.c:7221
-#, c-format
-msgid "cannot convert core note data: %s"
-msgstr ""
-
-#: src/readelf.c:6961
-#, c-format
-msgid ""
-"\n"
-"%*s... <repeats %u more times> ..."
-msgstr ""
-
-#: src/readelf.c:7320
-msgid " Owner Data size Type\n"
-msgstr ""
-
-#: src/readelf.c:7338
-#, c-format
-msgid " %-13.*s %9<PRId32> %s\n"
-msgstr ""
-
-#: src/readelf.c:7372
-#, c-format
-msgid "cannot get content of note section: %s"
-msgstr ""
-
-#: src/readelf.c:7399
-#, c-format
-msgid ""
-"\n"
-"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7422
-#, c-format
-msgid ""
-"\n"
-"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7468
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no data to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7474 src/readelf.c:7497
-#, c-format
-msgid "cannot get data for section [%Zu] '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7478
-#, c-format
-msgid ""
-"\n"
-"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7491
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no strings to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7501
-#, c-format
-msgid ""
-"\n"
-"String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7549
-#, c-format
-msgid ""
-"\n"
-"section [%lu] does not exist"
-msgstr ""
-
-#: src/readelf.c:7576
-#, c-format
-msgid ""
-"\n"
-"section '%s' does not exist"
-msgstr ""
-
-#: src/readelf.c:7637
-#, c-format
-msgid "cannot get symbol index of archive '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7640
-#, c-format
-msgid ""
-"\n"
-"Archive '%s' has no symbol index\n"
-msgstr ""
-
-#: src/readelf.c:7644
-#, c-format
-msgid ""
-"\n"
-"Index of archive '%s' has %Zu entries:\n"
-msgstr ""
-
-#: src/readelf.c:7662
-#, c-format
-msgid "cannot extract member at offset %Zu in '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7667
-#, c-format
-msgid "Archive member '%s' contains:\n"
-msgstr ""
-
-#: src/size.c:68
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default "
-"is `bsd'"
-msgstr ""
-
-#: src/size.c:70
-msgid "Same as `--format=sysv'"
-msgstr ""
-
-#: src/size.c:71
-msgid "Same as `--format=bsd'"
-msgstr ""
-
-#: src/size.c:74
-msgid "Same as `--radix=10'"
-msgstr ""
-
-#: src/size.c:75
-msgid "Same as `--radix=8'"
-msgstr ""
-
-#: src/size.c:76
-msgid "Same as `--radix=16'"
-msgstr ""
-
-#: src/size.c:78
-msgid "Similar to `--format=sysv' output but in one line"
-msgstr ""
-
-#: src/size.c:82
-msgid "Print size and permission flags for loadable segments"
-msgstr ""
-
-#: src/size.c:83
-msgid "Display the total sizes (bsd only)"
-msgstr ""
-
-#: src/size.c:88
-msgid "List section sizes of FILEs (a.out by default)."
-msgstr ""
-
-#: src/size.c:269
-#, c-format
-msgid "Invalid format: %s"
-msgstr ""
-
-#: src/size.c:280
-#, c-format
-msgid "Invalid radix: %s"
-msgstr ""
-
-#: src/size.c:339
-#, c-format
-msgid "%s: file format not recognized"
-msgstr ""
-
-#: src/size.c:446 src/size.c:589
-#, c-format
-msgid " (ex %s)"
-msgstr ""
-
-#: src/size.c:614
-msgid "(TOTALS)\n"
-msgstr ""
-
-#: src/strings.c:70
-msgid "Output Selection:"
-msgstr ""
-
-#: src/strings.c:71
-msgid "Scan entire file, not only loaded sections"
-msgstr ""
-
-#: src/strings.c:73
-msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
-msgstr ""
-
-#: src/strings.c:74
-msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
-"{B,L} = 32-bit"
-msgstr ""
-
-#: src/strings.c:78
-msgid "Print name of the file before each string."
-msgstr ""
-
-#: src/strings.c:80
-msgid "Print location of the string in base 8, 10, or 16 respectively."
-msgstr ""
-
-#: src/strings.c:81
-msgid "Alias for --radix=o"
-msgstr ""
-
-#: src/strings.c:88
-msgid "Print the strings of printable characters in files."
-msgstr ""
-
-#: src/strings.c:268 src/strings.c:303
-#, c-format
-msgid "invalid value '%s' for %s parameter"
-msgstr ""
-
-#: src/strings.c:314
-#, c-format
-msgid "invalid minimum length of matched string size"
-msgstr ""
-
-#: src/strings.c:601
-#, c-format
-msgid "lseek64 failed"
-msgstr ""
-
-#: src/strings.c:616 src/strings.c:680
-#, c-format
-msgid "re-mmap failed"
-msgstr ""
-
-#: src/strings.c:653
-#, c-format
-msgid "mprotect failed"
-msgstr ""
-
-#: src/strip.c:74
-msgid "Place stripped output into FILE"
-msgstr ""
-
-#: src/strip.c:75
-msgid "Extract the removed sections into FILE"
-msgstr ""
-
-#: src/strip.c:76
-msgid "Embed name FILE instead of -f argument"
-msgstr ""
-
-#: src/strip.c:80
-msgid "Remove all debugging symbols"
-msgstr ""
-
-#: src/strip.c:84
-msgid "Copy modified/access timestamps to the output"
-msgstr ""
-
-#: src/strip.c:86
-msgid "Remove .comment section"
-msgstr ""
-
-#: src/strip.c:89
-msgid "Relax a few rules to handle slightly broken ELF files"
-msgstr ""
-
-#: src/strip.c:94
-msgid "Discard symbols from object files."
-msgstr ""
-
-#: src/strip.c:186
-#, c-format
-msgid "Only one input file allowed together with '-o' and '-f'"
-msgstr ""
-
-#: src/strip.c:222
-#, c-format
-msgid "-f option specified twice"
-msgstr ""
-
-#: src/strip.c:231
-#, c-format
-msgid "-F option specified twice"
-msgstr ""
-
-#: src/strip.c:240 src/unstrip.c:125
-#, c-format
-msgid "-o option specified twice"
-msgstr ""
-
-#: src/strip.c:260
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr ""
-
-#: src/strip.c:298 src/strip.c:322
-#, c-format
-msgid "cannot stat input file '%s'"
-msgstr ""
-
-#: src/strip.c:312
-#, c-format
-msgid "while opening '%s'"
-msgstr ""
-
-#: src/strip.c:350
-#, c-format
-msgid "%s: cannot use -o or -f when stripping archive"
-msgstr ""
-
-#: src/strip.c:448
-#, c-format
-msgid "cannot open EBL backend"
-msgstr ""
-
-#: src/strip.c:498 src/strip.c:522
-#, c-format
-msgid "cannot create new file '%s': %s"
-msgstr ""
-
-#: src/strip.c:582
-#, c-format
-msgid "illformed file '%s'"
-msgstr ""
-
-#: src/strip.c:869 src/strip.c:956
-#, c-format
-msgid "while generating output file: %s"
-msgstr ""
-
-#: src/strip.c:929 src/strip.c:1668
-#, c-format
-msgid "%s: error while creating ELF header: %s"
-msgstr ""
-
-#: src/strip.c:943
-#, c-format
-msgid "while preparing output for '%s'"
-msgstr ""
-
-#: src/strip.c:994 src/strip.c:1050
-#, c-format
-msgid "while create section header section: %s"
-msgstr ""
-
-#: src/strip.c:1000
-#, c-format
-msgid "cannot allocate section data: %s"
-msgstr ""
-
-#: src/strip.c:1059
-#, c-format
-msgid "while create section header string table: %s"
-msgstr ""
-
-#: src/strip.c:1593 src/strip.c:1690
-#, c-format
-msgid "while writing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1604
-#, c-format
-msgid "while creating '%s'"
-msgstr ""
-
-#: src/strip.c:1616
-#, c-format
-msgid "while computing checksum for debug information"
-msgstr ""
-
-#: src/strip.c:1676
-#, c-format
-msgid "%s: error while reading the file: %s"
-msgstr ""
-
-#: src/strip.c:1722 src/strip.c:1729
-#, c-format
-msgid "error while finishing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1752 src/strip.c:1809
-#, c-format
-msgid "cannot set access and modification date of '%s'"
-msgstr ""
-
-#: src/unstrip.c:78
-msgid "Match MODULE against file names, not module names"
-msgstr ""
-
-#: src/unstrip.c:79
-msgid "Silently skip unfindable files"
-msgstr ""
-
-#: src/unstrip.c:82
-msgid "Place output into FILE"
-msgstr ""
-
-#: src/unstrip.c:84
-msgid "Create multiple output files under DIRECTORY"
-msgstr ""
-
-#: src/unstrip.c:85
-msgid "Use module rather than file names"
-msgstr ""
-
-#: src/unstrip.c:87
-msgid "Create output for modules that have no separate debug information"
-msgstr ""
-
-#: src/unstrip.c:90
-msgid "Apply relocations to section contents in ET_REL files"
-msgstr ""
-
-#: src/unstrip.c:92
-msgid "Only list module and file names, build IDs"
-msgstr ""
-
-#: src/unstrip.c:134
-#, c-format
-msgid "-d option specified twice"
-msgstr ""
-
-#: src/unstrip.c:166
-#, c-format
-msgid "only one of -o or -d allowed"
-msgstr ""
-
-#: src/unstrip.c:175
-#, c-format
-msgid "-n cannot be used with explicit files or -o or -d"
-msgstr ""
-
-#: src/unstrip.c:190
-#, c-format
-msgid "output directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:199
-#, c-format
-msgid "exactly two file arguments are required"
-msgstr ""
-
-#: src/unstrip.c:205
-#, c-format
-msgid "-m, -a, -R, and -i options not allowed with explicit files"
-msgstr ""
-
-#: src/unstrip.c:218
-#, c-format
-msgid "-o or -d is required when using implicit files"
-msgstr ""
-
-#: src/unstrip.c:254
-#, c-format
-msgid "cannot create ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:259
-#, c-format
-msgid "cannot copy ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:264 src/unstrip.c:1817
-#, c-format
-msgid "cannot create program headers: %s"
-msgstr ""
-
-#: src/unstrip.c:270
-#, c-format
-msgid "cannot copy program header: %s"
-msgstr ""
-
-#: src/unstrip.c:280
-#, c-format
-msgid "cannot copy section header: %s"
-msgstr ""
-
-#: src/unstrip.c:283 src/unstrip.c:1505
-#, c-format
-msgid "cannot get section data: %s"
-msgstr ""
-
-#: src/unstrip.c:285 src/unstrip.c:1507
-#, c-format
-msgid "cannot copy section data: %s"
-msgstr ""
-
-#: src/unstrip.c:309
-#, c-format
-msgid "cannot create directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:349 src/unstrip.c:763 src/unstrip.c:1540
-#, c-format
-msgid "cannot get symbol table entry: %s"
-msgstr ""
-
-#: src/unstrip.c:365 src/unstrip.c:580 src/unstrip.c:601 src/unstrip.c:613
-#: src/unstrip.c:1561 src/unstrip.c:1691 src/unstrip.c:1715
-#, c-format
-msgid "cannot update symbol table: %s"
-msgstr ""
-
-#: src/unstrip.c:382 src/unstrip.c:432 src/unstrip.c:562 src/unstrip.c:1209
-#: src/unstrip.c:1525 src/unstrip.c:1720 src/unstrip.c:1791
-#, c-format
-msgid "cannot update section header: %s"
-msgstr ""
-
-#: src/unstrip.c:408 src/unstrip.c:419
-#, c-format
-msgid "cannot update relocation: %s"
-msgstr ""
-
-#: src/unstrip.c:507
-#, c-format
-msgid "cannot get symbol version: %s"
-msgstr ""
-
-#: src/unstrip.c:519
-#, c-format
-msgid "unexpected section type in [%Zu] with sh_link to symtab"
-msgstr ""
-
-#: src/unstrip.c:769
-#, c-format
-msgid "invalid string offset in symbol [%Zu]"
-msgstr ""
-
-#: src/unstrip.c:911 src/unstrip.c:1248
-#, c-format
-msgid "cannot read section [%Zu] name: %s"
-msgstr ""
-
-#: src/unstrip.c:952 src/unstrip.c:971 src/unstrip.c:1004
-#, c-format
-msgid "cannot read '.gnu.prelink_undo' section: %s"
-msgstr ""
-
-#: src/unstrip.c:992
-#, c-format
-msgid "invalid contents in '%s' section"
-msgstr ""
-
-#: src/unstrip.c:1047 src/unstrip.c:1370
-#, c-format
-msgid "cannot find matching section for [%Zu] '%s'"
-msgstr ""
-
-#: src/unstrip.c:1171 src/unstrip.c:1186 src/unstrip.c:1451
-#, c-format
-msgid "cannot add section name to string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1195
-#, c-format
-msgid "cannot update section header string table data: %s"
-msgstr ""
-
-#: src/unstrip.c:1223 src/unstrip.c:1227
-#, c-format
-msgid "cannot get section header string table section index: %s"
-msgstr ""
-
-#: src/unstrip.c:1231 src/unstrip.c:1235 src/unstrip.c:1466
-#, c-format
-msgid "cannot get section count: %s"
-msgstr ""
-
-#: src/unstrip.c:1293 src/unstrip.c:1385
-#, c-format
-msgid "cannot read section header string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1445
-#, c-format
-msgid "cannot add new section: %s"
-msgstr ""
-
-#: src/unstrip.c:1548
-#, c-format
-msgid "symbol [%Zu] has invalid section index"
-msgstr ""
-
-#: src/unstrip.c:1800
-#, c-format
-msgid "cannot get ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:1827
-#, c-format
-msgid "cannot update program header: %s"
-msgstr ""
-
-#: src/unstrip.c:1832 src/unstrip.c:1911
-#, c-format
-msgid "cannot write output file: %s"
-msgstr ""
-
-#: src/unstrip.c:1880
-#, c-format
-msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1883
-#, c-format
-msgid ""
-"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1902 src/unstrip.c:1942 src/unstrip.c:1954 src/unstrip.c:2034
-#, c-format
-msgid "cannot create ELF descriptor: %s"
-msgstr ""
-
-#: src/unstrip.c:1960
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr ""
-
-#: src/unstrip.c:1991
-#, c-format
-msgid "cannot find stripped file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:1995
-#, c-format
-msgid "cannot open stripped file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2010
-#, c-format
-msgid "cannot find debug file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2014
-#, c-format
-msgid "cannot open debug file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2027
-#, c-format
-msgid "module '%s' file '%s' is not stripped"
-msgstr ""
-
-#: src/unstrip.c:2058
-#, c-format
-msgid "cannot cache section addresses for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2191
-#, c-format
-msgid "no matching modules found"
-msgstr ""
-
-#: src/unstrip.c:2200
-#, c-format
-msgid "matched more than one module"
-msgstr ""
-
-#: src/unstrip.c:2247
-msgid ""
-"STRIPPED-FILE DEBUG-FILE\n"
-"[MODULE...]"
-msgstr ""
-
-#: src/unstrip.c:2248
-msgid ""
-"Combine stripped files with separate symbols and debug information.\n\nThe "
-"first form puts the result in DEBUG-FILE if -o was not given.\n"
-"\n"
-"MODULE arguments give file name patterns matching modules to process.\n"
-"With -f these match the file name of the main (stripped) file (slashes are "
-"never special), otherwise they match the simple module names. With no "
-"arguments, process all modules found.\n"
-"\n"
-"Multiple modules are written to files under OUTPUT-DIRECTORY, creating "
-"subdirectories as needed. With -m these files have simple module names, "
-"otherwise they have the name of the main file complete with directory "
-"underneath OUTPUT-DIRECTORY.\n"
-"\n"
-"With -n no files are written, but one line to standard output for each "
-"module:\n"
-"\tSTART+SIZE BUILDID FILE DEBUGFILE MODULENAME\n"
-"START and SIZE are hexadecimal giving the address bounds of the module. "
-"BUILDID is hexadecimal for the build ID bits, or - if no ID is known; the "
-"hexadecimal may be followed by @0xADDR giving the address where the ID "
-"resides if that is known. FILE is the file name found for the module, or - "
-"if none was found, or . if an ELF image is available but not from any named "
-"file. DEBUGFILE is the separate debuginfo file name, or - if no debuginfo "
-"was found, or . if FILE contains the debug information."
-msgstr ""
diff --git a/po/insert-header.sin b/po/insert-header.sin
deleted file mode 100644
index b26de01f..00000000
--- a/po/insert-header.sin
+++ /dev/null
@@ -1,23 +0,0 @@
-# Sed script that inserts the file called HEADER before the header entry.
-#
-# At each occurrence of a line starting with "msgid ", we execute the following
-# commands. At the first occurrence, insert the file. At the following
-# occurrences, do nothing. The distinction between the first and the following
-# occurrences is achieved by looking at the hold space.
-/^msgid /{
-x
-# Test if the hold space is empty.
-s/m/m/
-ta
-# Yes it was empty. First occurrence. Read the file.
-r HEADER
-# Output the file's contents by reading the next line. But don't lose the
-# current line while doing this.
-g
-N
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
diff --git a/po/it.po b/po/it.po
deleted file mode 100644
index 61e8ae03..00000000
--- a/po/it.po
+++ /dev/null
@@ -1,5666 +0,0 @@
-# translation of elfutils.master.RedHatelfutils.it.po to Italiano
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Francesco Tombolini <tombo@adamantio.net>, 2009.
-msgid ""
-msgstr ""
-"Project-Id-Version: elfutils.master.RedHatelfutils.it\n"
-"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2010-04-21 07:41-0700\n"
-"PO-Revision-Date: 2009-04-30 03:50+0200\n"
-"Last-Translator: Francesco Tombolini <tombo@adamantio.net>\n"
-"Language-Team: Italiano <fedora-trans-it@redhat.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2822
-#: src/readelf.c:3161 src/unstrip.c:2087 src/unstrip.c:2295
-#, c-format
-msgid "memory exhausted"
-msgstr ""
-
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
-msgid "no error"
-msgstr ""
-
-#: libasm/asm_error.c:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
-msgid "out of memory"
-msgstr ""
-
-#: libasm/asm_error.c:64 src/ldgeneric.c:2687
-#, c-format
-msgid "cannot create output file"
-msgstr ""
-
-#: libasm/asm_error.c:65
-msgid "invalid parameter"
-msgstr ""
-
-#: libasm/asm_error.c:66
-msgid "cannot change mode of output file"
-msgstr ""
-
-#: libasm/asm_error.c:67 src/ldgeneric.c:7001
-#, c-format
-msgid "cannot rename output file"
-msgstr ""
-
-#: libasm/asm_error.c:68
-msgid "duplicate symbol"
-msgstr ""
-
-#: libasm/asm_error.c:69
-msgid "invalid section type for operation"
-msgstr ""
-
-#: libasm/asm_error.c:70
-msgid "error during output of data"
-msgstr ""
-
-#: libasm/asm_error.c:71
-msgid "no backend support available"
-msgstr ""
-
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
-msgid "unknown error"
-msgstr ""
-
-#: libdw/dwarf_error.c:81
-msgid "invalid access"
-msgstr ""
-
-#: libdw/dwarf_error.c:82
-msgid "no regular file"
-msgstr ""
-
-#: libdw/dwarf_error.c:83
-msgid "I/O error"
-msgstr ""
-
-#: libdw/dwarf_error.c:84
-msgid "invalid ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:85
-msgid "no DWARF information"
-msgstr ""
-
-#: libdw/dwarf_error.c:86
-msgid "no ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:87
-msgid "cannot get ELF header"
-msgstr ""
-
-#: libdw/dwarf_error.c:89
-msgid "not implemented"
-msgstr ""
-
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
-msgid "invalid command"
-msgstr ""
-
-#: libdw/dwarf_error.c:91
-msgid "invalid version"
-msgstr ""
-
-#: libdw/dwarf_error.c:92
-msgid "invalid file"
-msgstr ""
-
-#: libdw/dwarf_error.c:93
-msgid "no entries found"
-msgstr ""
-
-#: libdw/dwarf_error.c:94
-msgid "invalid DWARF"
-msgstr ""
-
-#: libdw/dwarf_error.c:95
-msgid "no string data"
-msgstr ""
-
-#: libdw/dwarf_error.c:96
-msgid "no address value"
-msgstr ""
-
-#: libdw/dwarf_error.c:97
-msgid "no constant value"
-msgstr ""
-
-#: libdw/dwarf_error.c:98
-msgid "no reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:99
-msgid "invalid reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:100
-msgid ".debug_line section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:101
-msgid "invalid .debug_line section"
-msgstr ""
-
-#: libdw/dwarf_error.c:102
-msgid "debug information too big"
-msgstr ""
-
-#: libdw/dwarf_error.c:103
-msgid "invalid DWARF version"
-msgstr ""
-
-#: libdw/dwarf_error.c:104
-msgid "invalid directory index"
-msgstr ""
-
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
-msgid "address out of range"
-msgstr ""
-
-#: libdw/dwarf_error.c:106
-msgid "no location list value"
-msgstr ""
-
-#: libdw/dwarf_error.c:107
-msgid "no block data"
-msgstr ""
-
-#: libdw/dwarf_error.c:108
-msgid "invalid line index"
-msgstr ""
-
-#: libdw/dwarf_error.c:109
-msgid "invalid address range index"
-msgstr ""
-
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
-msgid "no matching address range"
-msgstr ""
-
-#: libdw/dwarf_error.c:111
-msgid "no flag value"
-msgstr ""
-
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
-msgid "invalid offset"
-msgstr ""
-
-#: libdw/dwarf_error.c:113
-msgid ".debug_ranges section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:114
-msgid "invalid CFI section"
-msgstr ""
-
-#: libdwfl/argp-std.c:67 src/unstrip.c:2237
-msgid "Input selection options:"
-msgstr ""
-
-#: libdwfl/argp-std.c:68
-msgid "Find addresses in FILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:70
-msgid "Find addresses from signatures found in COREFILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:72
-msgid "Find addresses in files mapped into process PID"
-msgstr ""
-
-#: libdwfl/argp-std.c:74
-msgid ""
-"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
-"format"
-msgstr ""
-
-#: libdwfl/argp-std.c:76
-msgid "Find addresses in the running kernel"
-msgstr ""
-
-#: libdwfl/argp-std.c:78
-msgid "Kernel with all modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:80
-msgid "Search path for separate debuginfo files"
-msgstr ""
-
-#: libdwfl/argp-std.c:163
-msgid "only one of -e, -p, -k, -K, or --core allowed"
-msgstr ""
-
-#: libdwfl/argp-std.c:223
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr ""
-
-#: libdwfl/argp-std.c:241
-msgid "No modules recognized in core file"
-msgstr ""
-
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr ""
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr ""
-
-#: libdwfl/libdwflP.h:73
-msgid "See errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:74
-msgid "See elf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:75
-msgid "See dwarf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:76
-msgid "See ebl_errno (XXX missing)"
-msgstr ""
-
-#: libdwfl/libdwflP.h:77
-msgid "gzip decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:78
-msgid "bzip2 decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:79
-msgid "LZMA decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:80
-msgid "no support library found for machine"
-msgstr ""
-
-#: libdwfl/libdwflP.h:81
-msgid "Callbacks missing for ET_REL file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:82
-msgid "Unsupported relocation type"
-msgstr ""
-
-#: libdwfl/libdwflP.h:83
-msgid "r_offset is bogus"
-msgstr ""
-
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
-msgid "offset out of range"
-msgstr ""
-
-#: libdwfl/libdwflP.h:85
-msgid "relocation refers to undefined symbol"
-msgstr ""
-
-#: libdwfl/libdwflP.h:86
-msgid "Callback returned failure"
-msgstr ""
-
-#: libdwfl/libdwflP.h:87
-msgid "No DWARF information found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:88
-msgid "No symbol table found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:89
-msgid "No ELF program headers"
-msgstr ""
-
-#: libdwfl/libdwflP.h:90
-msgid "address range overlaps an existing module"
-msgstr ""
-
-#: libdwfl/libdwflP.h:93
-msgid "image truncated"
-msgstr ""
-
-#: libdwfl/libdwflP.h:94
-msgid "ELF file opened"
-msgstr ""
-
-#: libdwfl/libdwflP.h:95
-msgid "not a valid ELF file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:96
-msgid "cannot handle DWARF type description"
-msgstr ""
-
-#: libebl/eblbackendname.c:63
-msgid "No backend"
-msgstr ""
-
-#: libebl/eblcorenotetypename.c:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:86 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
-msgid "<unknown>"
-msgstr ""
-
-#: libebl/ebldynamictagname.c:126
-#, c-format
-msgid "<unknown>: %#<PRIx64>"
-msgstr ""
-
-#: libebl/eblobjnote.c:76
-#, c-format
-msgid " Build ID: "
-msgstr ""
-
-#: libebl/eblobjnote.c:87
-#, c-format
-msgid " Linker version: %.*s\n"
-msgstr ""
-
-#: libebl/eblobjnote.c:136
-#, c-format
-msgid " OS: %s, ABI: "
-msgstr ""
-
-#: libebl/eblosabiname.c:95
-msgid "Stand alone"
-msgstr ""
-
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
-#, c-format
-msgid "<unknown>: %d"
-msgstr ""
-
-#: libelf/elf_error.c:88
-msgid "unknown version"
-msgstr ""
-
-#: libelf/elf_error.c:92
-msgid "unknown type"
-msgstr ""
-
-#: libelf/elf_error.c:96
-msgid "invalid `Elf' handle"
-msgstr ""
-
-#: libelf/elf_error.c:100
-msgid "invalid size of source operand"
-msgstr ""
-
-#: libelf/elf_error.c:104
-msgid "invalid size of destination operand"
-msgstr ""
-
-#: libelf/elf_error.c:108 src/readelf.c:4779
-#, c-format
-msgid "invalid encoding"
-msgstr ""
-
-#: libelf/elf_error.c:116
-msgid "invalid file descriptor"
-msgstr ""
-
-#: libelf/elf_error.c:120
-msgid "invalid operation"
-msgstr ""
-
-#: libelf/elf_error.c:124
-msgid "ELF version not set"
-msgstr ""
-
-#: libelf/elf_error.c:136
-msgid "invalid fmag field in archive header"
-msgstr ""
-
-#: libelf/elf_error.c:140
-msgid "invalid archive file"
-msgstr ""
-
-#: libelf/elf_error.c:144
-msgid "descriptor is not for an archive"
-msgstr ""
-
-#: libelf/elf_error.c:148
-msgid "no index available"
-msgstr ""
-
-#: libelf/elf_error.c:152
-msgid "cannot read data from file"
-msgstr ""
-
-#: libelf/elf_error.c:156
-msgid "cannot write data to file"
-msgstr ""
-
-#: libelf/elf_error.c:160
-msgid "invalid binary class"
-msgstr ""
-
-#: libelf/elf_error.c:164
-msgid "invalid section index"
-msgstr ""
-
-#: libelf/elf_error.c:168
-msgid "invalid operand"
-msgstr ""
-
-#: libelf/elf_error.c:172
-msgid "invalid section"
-msgstr ""
-
-#: libelf/elf_error.c:180
-msgid "executable header not created first"
-msgstr ""
-
-#: libelf/elf_error.c:184
-msgid "file descriptor disabled"
-msgstr ""
-
-#: libelf/elf_error.c:188
-msgid "archive/member file descriptor mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:196
-msgid "cannot manipulate null section"
-msgstr ""
-
-#: libelf/elf_error.c:200
-msgid "data/scn mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:204
-msgid "invalid section header"
-msgstr ""
-
-#: libelf/elf_error.c:208 src/readelf.c:6242 src/readelf.c:6343
-#, c-format
-msgid "invalid data"
-msgstr ""
-
-#: libelf/elf_error.c:212
-msgid "unknown data encoding"
-msgstr ""
-
-#: libelf/elf_error.c:216
-msgid "section `sh_size' too small for data"
-msgstr ""
-
-#: libelf/elf_error.c:220
-msgid "invalid section alignment"
-msgstr ""
-
-#: libelf/elf_error.c:224
-msgid "invalid section entry size"
-msgstr ""
-
-#: libelf/elf_error.c:228
-msgid "update() for write on read-only file"
-msgstr ""
-
-#: libelf/elf_error.c:232
-msgid "no such file"
-msgstr ""
-
-#: libelf/elf_error.c:236
-msgid "only relocatable files can contain section groups"
-msgstr ""
-
-#: libelf/elf_error.c:241
-msgid ""
-"program header only allowed in executables, shared objects, and core files"
-msgstr ""
-
-#: libelf/elf_error.c:248
-msgid "file has no program header"
-msgstr ""
-
-#: src/addr2line.c:66
-msgid "Output selection options:"
-msgstr ""
-
-#: src/addr2line.c:67
-msgid "Show only base names of source files"
-msgstr ""
-
-#: src/addr2line.c:69
-msgid "Show absolute file names using compilation directory"
-msgstr ""
-
-#: src/addr2line.c:70
-msgid "Also show function names"
-msgstr ""
-
-#: src/addr2line.c:71
-msgid "Also show symbol or section names"
-msgstr ""
-
-#: src/addr2line.c:73
-msgid "Treat addresses as offsets relative to NAME section."
-msgstr ""
-
-#: src/addr2line.c:75 src/elfcmp.c:75 src/findtextrel.c:75 src/nm.c:103
-#: src/strings.c:83
-msgid "Miscellaneous:"
-msgstr ""
-
-#: src/addr2line.c:84
-msgid ""
-"Locate source files and line information for ADDRs (in a.out by default)."
-msgstr ""
-
-#: src/addr2line.c:88
-msgid "[ADDR...]"
-msgstr ""
-
-#: src/addr2line.c:185 src/ar.c:289 src/elfcmp.c:555 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:253 src/objdump.c:181
-#: src/ranlib.c:136 src/readelf.c:449 src/size.c:219 src/strings.c:227
-#: src/strip.c:204 src/unstrip.c:234
-#, c-format
-msgid ""
-"Copyright (C) %s Red Hat, Inc.\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-msgstr ""
-
-#: src/addr2line.c:190 src/ar.c:294 src/elfcmp.c:560 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:258 src/objdump.c:186
-#: src/ranlib.c:141 src/readelf.c:454 src/size.c:224 src/strings.c:232
-#: src/strip.c:209 src/unstrip.c:239
-#, c-format
-msgid "Written by %s.\n"
-msgstr ""
-
-#: src/addr2line.c:405
-#, c-format
-msgid "Section syntax requires exactly one module"
-msgstr ""
-
-#: src/addr2line.c:428
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside section '%s'"
-msgstr ""
-
-#: src/addr2line.c:461
-#, c-format
-msgid "cannot find symbol '%s'"
-msgstr ""
-
-#: src/addr2line.c:466
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
-msgstr ""
-
-#: src/ar.c:76
-msgid "Commands:"
-msgstr ""
-
-#: src/ar.c:77
-msgid "Delete files from archive."
-msgstr ""
-
-#: src/ar.c:78
-msgid "Move files in archive."
-msgstr ""
-
-#: src/ar.c:79
-msgid "Print files in archive."
-msgstr ""
-
-#: src/ar.c:80
-msgid "Quick append files to archive."
-msgstr ""
-
-#: src/ar.c:82
-msgid "Replace existing or insert new file into archive."
-msgstr ""
-
-#: src/ar.c:83
-msgid "Display content of archive."
-msgstr ""
-
-#: src/ar.c:84
-msgid "Extract files from archive."
-msgstr ""
-
-#: src/ar.c:86
-msgid "Command Modifiers:"
-msgstr ""
-
-#: src/ar.c:87
-msgid "Preserve original dates."
-msgstr ""
-
-#: src/ar.c:88
-msgid "Use instance [COUNT] of name."
-msgstr ""
-
-#: src/ar.c:90
-msgid "Do not replace existing files with extracted files."
-msgstr ""
-
-#: src/ar.c:91
-msgid "Allow filename to be truncated if necessary."
-msgstr ""
-
-#: src/ar.c:93
-msgid "Provide verbose output."
-msgstr ""
-
-#: src/ar.c:94
-msgid "Force regeneration of symbol table."
-msgstr ""
-
-#: src/ar.c:95
-msgid "Insert file after [MEMBER]."
-msgstr ""
-
-#: src/ar.c:96
-msgid "Insert file before [MEMBER]."
-msgstr ""
-
-#: src/ar.c:97
-msgid "Same as -b."
-msgstr ""
-
-#: src/ar.c:98
-msgid "Suppress message when library has to be created."
-msgstr ""
-
-#: src/ar.c:100
-msgid "Use full path for file matching."
-msgstr ""
-
-#: src/ar.c:101
-msgid "Update only older files in archive."
-msgstr ""
-
-#: src/ar.c:107
-msgid "Create, modify, and extract from archives."
-msgstr ""
-
-#: src/ar.c:110
-msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
-msgstr ""
-
-#: src/ar.c:192
-#, c-format
-msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
-msgstr ""
-
-#: src/ar.c:197
-#, c-format
-msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
-msgstr ""
-
-#: src/ar.c:213
-#, c-format
-msgid "'N' is only meaningful with the 'x' and 'd' options"
-msgstr ""
-
-#: src/ar.c:218
-#, c-format
-msgid "COUNT parameter required"
-msgstr ""
-
-#: src/ar.c:230
-#, c-format
-msgid "invalid COUNT parameter %s"
-msgstr ""
-
-#: src/ar.c:237
-#, c-format
-msgid "'%c' is only meaningful with the 'x' option"
-msgstr ""
-
-#: src/ar.c:243
-#, c-format
-msgid "archive name required"
-msgstr ""
-
-#: src/ar.c:314
-#, c-format
-msgid "More than one operation specified"
-msgstr ""
-
-#: src/ar.c:404
-#, c-format
-msgid "cannot open archive '%s'"
-msgstr ""
-
-#: src/ar.c:414
-#, c-format
-msgid "cannot open archive '%s': %s"
-msgstr ""
-
-#: src/ar.c:418
-#, c-format
-msgid "%s: not an archive file"
-msgstr ""
-
-#: src/ar.c:422
-#, c-format
-msgid "cannot stat archive '%s'"
-msgstr ""
-
-#: src/ar.c:434
-#, c-format
-msgid "no entry %s in archive\n"
-msgstr ""
-
-#: src/ar.c:487 src/ar.c:929 src/ar.c:1129
-#, c-format
-msgid "cannot create hash table"
-msgstr ""
-
-#: src/ar.c:494 src/ar.c:936 src/ar.c:1138
-#, c-format
-msgid "cannot insert into hash table"
-msgstr ""
-
-#: src/ar.c:502 src/ranlib.c:176
-#, c-format
-msgid "cannot stat '%s'"
-msgstr ""
-
-#: src/ar.c:598
-#, c-format
-msgid "cannot read content of %s: %s"
-msgstr ""
-
-#: src/ar.c:641
-#, c-format
-msgid "cannot open %.*s"
-msgstr ""
-
-#: src/ar.c:663
-#, c-format
-msgid "failed to write %s"
-msgstr ""
-
-#: src/ar.c:675
-#, c-format
-msgid "cannot change mode of %s"
-msgstr ""
-
-#: src/ar.c:691
-#, c-format
-msgid "cannot change modification time of %s"
-msgstr ""
-
-#: src/ar.c:737
-#, c-format
-msgid "cannot rename temporary file to %.*s"
-msgstr ""
-
-#: src/ar.c:773 src/ar.c:1021 src/ar.c:1419 src/ranlib.c:250
-#, c-format
-msgid "cannot create new file"
-msgstr ""
-
-#: src/ar.c:1220
-#, c-format
-msgid "position member %s not found"
-msgstr ""
-
-#: src/ar.c:1230
-#, c-format
-msgid "%s: no entry %s in archive!\n"
-msgstr ""
-
-#: src/ar.c:1259 src/ldgeneric.c:519 src/objdump.c:257
-#, c-format
-msgid "cannot open %s"
-msgstr ""
-
-#: src/ar.c:1264
-#, c-format
-msgid "cannot stat %s"
-msgstr ""
-
-#: src/ar.c:1270
-#, c-format
-msgid "%s is no regular file"
-msgstr ""
-
-#: src/ar.c:1283
-#, c-format
-msgid "cannot get ELF descriptor for %s: %s\n"
-msgstr ""
-
-#: src/ar.c:1302
-#, c-format
-msgid "cannot read %s: %s"
-msgstr ""
-
-#: src/arlib.c:215
-#, c-format
-msgid "the archive '%s' is too large"
-msgstr ""
-
-#: src/arlib.c:228
-#, c-format
-msgid "cannot read ELF header of %s(%s): %s"
-msgstr ""
-
-#: src/elfcmp.c:69
-msgid "Control options:"
-msgstr ""
-
-#: src/elfcmp.c:70
-msgid ""
-"Control treatment of gaps in loadable segments [ignore|match] (default: "
-"ignore)"
-msgstr ""
-
-#: src/elfcmp.c:72
-msgid "Ignore permutation of buckets in SHT_HASH section"
-msgstr ""
-
-#: src/elfcmp.c:73
-msgid "Output nothing; yield exit status only"
-msgstr ""
-
-#: src/elfcmp.c:80
-msgid "Compare relevant parts of two ELF files for equality."
-msgstr ""
-
-#: src/elfcmp.c:84
-msgid "FILE1 FILE2"
-msgstr ""
-
-#: src/elfcmp.c:140
-msgid "Invalid number of parameters.\n"
-msgstr ""
-
-#: src/elfcmp.c:168 src/elfcmp.c:173
-#, c-format
-msgid "cannot get ELF header of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:190
-#, c-format
-msgid "%s %s diff: ELF header"
-msgstr ""
-
-#: src/elfcmp.c:198 src/elfcmp.c:201
-#, c-format
-msgid "cannot get section count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:206
-#, c-format
-msgid "%s %s diff: section count"
-msgstr ""
-
-#: src/elfcmp.c:214 src/elfcmp.c:217
-#, c-format
-msgid "cannot get program header count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:222
-#, c-format
-msgid "%s %s diff: program header count"
-msgstr ""
-
-#: src/elfcmp.c:281
-#, c-format
-msgid "%s %s differ: section header"
-msgstr ""
-
-#: src/elfcmp.c:309 src/elfcmp.c:315
-#, c-format
-msgid "cannot get content of section %zu in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:331 src/elfcmp.c:337
-#, c-format
-msgid "cannot get symbol in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:358
-#, c-format
-msgid "%s %s differ: symbol table [%zu]"
-msgstr ""
-
-#: src/elfcmp.c:361
-#, c-format
-msgid "%s %s differ: symbol table [%zu,%zu]"
-msgstr ""
-
-#: src/elfcmp.c:409
-#, c-format
-msgid "%s %s differ: section [%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:413
-#, c-format
-msgid "%s %s differ: section [%zu,%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:429
-#, c-format
-msgid "%s %s differ: unequal amount of important sections"
-msgstr ""
-
-#: src/elfcmp.c:463 src/elfcmp.c:468
-#, c-format
-msgid "cannot load data of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:487 src/elfcmp.c:493
-#, c-format
-msgid "cannot get program header entry %d of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:499
-#, c-format
-msgid "%s %s differ: program header %d"
-msgstr ""
-
-#: src/elfcmp.c:524
-#, c-format
-msgid "%s %s differ: gap"
-msgstr ""
-
-#: src/elfcmp.c:583
-#, c-format
-msgid "Invalid value '%s' for --gaps parameter."
-msgstr ""
-
-#: src/elfcmp.c:607 src/findtextrel.c:229 src/ldgeneric.c:1767
-#: src/ldgeneric.c:4257 src/nm.c:363 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:433 src/strip.c:468 src/unstrip.c:1900
-#: src/unstrip.c:1929
-#, c-format
-msgid "cannot open '%s'"
-msgstr ""
-
-#: src/elfcmp.c:611 src/findtextrel.c:236 src/ranlib.c:186
-#, c-format
-msgid "cannot create ELF descriptor for '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:616
-#, c-format
-msgid "cannot create EBL descriptor for '%s'"
-msgstr ""
-
-#: src/elfcmp.c:634
-#, c-format
-msgid "cannot get section header of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:644
-#, c-format
-msgid "cannot get content of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:654 src/elfcmp.c:668
-#, c-format
-msgid "cannot get relocation: %s"
-msgstr ""
-
-#: src/elflint.c:72
-msgid "Be extremely strict, flag level 2 features."
-msgstr ""
-
-#: src/elflint.c:73
-msgid "Do not print anything if successful"
-msgstr ""
-
-#: src/elflint.c:74
-msgid "Binary is a separate debuginfo file"
-msgstr ""
-
-#: src/elflint.c:76
-msgid ""
-"Binary has been created with GNU ld and is therefore known to be broken in "
-"certain ways"
-msgstr ""
-
-#: src/elflint.c:82
-msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
-msgstr ""
-
-#: src/elflint.c:86 src/readelf.c:118
-msgid "FILE..."
-msgstr ""
-
-#: src/elflint.c:159 src/readelf.c:272
-#, c-format
-msgid "cannot open input file"
-msgstr ""
-
-#: src/elflint.c:166
-#, c-format
-msgid "cannot generate Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:185
-#, c-format
-msgid "error while closing Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:189
-msgid "No errors"
-msgstr ""
-
-#: src/elflint.c:223 src/readelf.c:425
-msgid "Missing file name.\n"
-msgstr ""
-
-#: src/elflint.c:302
-#, c-format
-msgid " error while freeing sub-ELF descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:310
-#, c-format
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr ""
-
-#: src/elflint.c:370
-#, c-format
-msgid "e_ident[%d] == %d is no known class\n"
-msgstr ""
-
-#: src/elflint.c:375
-#, c-format
-msgid "e_ident[%d] == %d is no known data encoding\n"
-msgstr ""
-
-#: src/elflint.c:379
-#, c-format
-msgid "unknown ELF header version number e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:385
-#, c-format
-msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
-msgstr ""
-
-#: src/elflint.c:391
-#, c-format
-msgid "unsupport ABI version e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:396
-#, c-format
-msgid "e_ident[%zu] is not zero\n"
-msgstr ""
-
-#: src/elflint.c:401
-#, c-format
-msgid "unknown object file type %d\n"
-msgstr ""
-
-#: src/elflint.c:408
-#, c-format
-msgid "unknown machine type %d\n"
-msgstr ""
-
-#: src/elflint.c:412
-#, c-format
-msgid "unknown object file version\n"
-msgstr ""
-
-#: src/elflint.c:418
-#, c-format
-msgid "invalid program header offset\n"
-msgstr ""
-
-#: src/elflint.c:420
-#, c-format
-msgid "executables and DSOs cannot have zero program header offset\n"
-msgstr ""
-
-#: src/elflint.c:424
-#, c-format
-msgid "invalid number of program header entries\n"
-msgstr ""
-
-#: src/elflint.c:432
-#, c-format
-msgid "invalid section header table offset\n"
-msgstr ""
-
-#: src/elflint.c:435
-#, c-format
-msgid "section header table must be present\n"
-msgstr ""
-
-#: src/elflint.c:449
-#, c-format
-msgid "invalid number of section header table entries\n"
-msgstr ""
-
-#: src/elflint.c:466
-#, c-format
-msgid "invalid section header index\n"
-msgstr ""
-
-#: src/elflint.c:480
-#, c-format
-msgid "invalid number of program header table entries\n"
-msgstr ""
-
-#: src/elflint.c:489
-#, c-format
-msgid "invalid machine flags: %s\n"
-msgstr ""
-
-#: src/elflint.c:496 src/elflint.c:513
-#, c-format
-msgid "invalid ELF header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:499 src/elflint.c:516
-#, c-format
-msgid "invalid program header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:502 src/elflint.c:519
-#, c-format
-msgid "invalid program header position or size\n"
-msgstr ""
-
-#: src/elflint.c:505 src/elflint.c:522
-#, c-format
-msgid "invalid section header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:508 src/elflint.c:525
-#, c-format
-msgid "invalid section header position or size\n"
-msgstr ""
-
-#: src/elflint.c:569
-#, c-format
-msgid ""
-"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
-"group\n"
-msgstr ""
-
-#: src/elflint.c:573
-#, c-format
-msgid ""
-"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
-msgstr ""
-
-#: src/elflint.c:589 src/elflint.c:1432 src/elflint.c:1482 src/elflint.c:1591
-#: src/elflint.c:2185 src/elflint.c:2699 src/elflint.c:2860 src/elflint.c:2990
-#: src/elflint.c:3162 src/elflint.c:4062
-#, c-format
-msgid "section [%2d] '%s': cannot get section data\n"
-msgstr ""
-
-#: src/elflint.c:602 src/elflint.c:1598
-#, c-format
-msgid ""
-"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
-"type is not SHT_STRTAB\n"
-msgstr ""
-
-#: src/elflint.c:625
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol table cannot have more than one extended index "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:636
-#, c-format
-msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
-msgstr ""
-
-#: src/elflint.c:645
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
-#, c-format
-msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:668
-#, c-format
-msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:678
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:687
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
-msgstr ""
-
-#: src/elflint.c:700
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
-"section index section\n"
-msgstr ""
-
-#: src/elflint.c:706
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
-msgstr ""
-
-#: src/elflint.c:718
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
-msgstr ""
-
-#: src/elflint.c:726
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
-msgstr ""
-
-#: src/elflint.c:732
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
-msgstr ""
-
-#: src/elflint.c:737
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
-msgstr ""
-
-#: src/elflint.c:745
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
-msgstr ""
-
-#: src/elflint.c:749
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
-msgstr ""
-
-#: src/elflint.c:753
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
-msgstr ""
-
-#: src/elflint.c:785
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:791 src/elflint.c:816 src/elflint.c:859
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:800
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
-msgstr ""
-
-#: src/elflint.c:810 src/elflint.c:852
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:837
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
-msgstr ""
-
-#: src/elflint.c:845
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:872
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:879
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:886
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
-msgstr ""
-
-#: src/elflint.c:936
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section [%"
-"2d]\n"
-msgstr ""
-
-#: src/elflint.c:943
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:959
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
-"match %s section address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:966
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
-"match %s section size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:974
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:990
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
-"segment address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:997
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
-"segment size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:1010
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
-"default visibility\n"
-msgstr ""
-
-#: src/elflint.c:1014
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
-msgstr ""
-
-#: src/elflint.c:1059
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
-msgstr ""
-
-#: src/elflint.c:1068 src/elflint.c:1120
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
-msgstr ""
-
-#: src/elflint.c:1093 src/elflint.c:1145
-#, c-format
-msgid ""
-"section [%2d] '%s': relative relocations after index %d as specified by "
-"DT_RELCOUNT\n"
-msgstr ""
-
-#: src/elflint.c:1099 src/elflint.c:1151
-#, c-format
-msgid ""
-"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
-"specified %d relative relocations\n"
-msgstr ""
-
-#: src/elflint.c:1111
-#, c-format
-msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
-msgstr ""
-
-#: src/elflint.c:1193
-#, c-format
-msgid "section [%2d] '%s': invalid destination section index\n"
-msgstr ""
-
-#: src/elflint.c:1206
-#, c-format
-msgid "section [%2d] '%s': invalid destination section type\n"
-msgstr ""
-
-#: src/elflint.c:1214
-#, c-format
-msgid "section [%2d] '%s': sh_info should be zero\n"
-msgstr ""
-
-#: src/elflint.c:1221
-#, c-format
-msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
-msgstr ""
-
-#: src/elflint.c:1228
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-
-#: src/elflint.c:1288
-#, c-format
-msgid "text relocation flag set but there is no read-only segment\n"
-msgstr ""
-
-#: src/elflint.c:1315
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid type\n"
-msgstr ""
-
-#: src/elflint.c:1323
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
-"type\n"
-msgstr ""
-
-#: src/elflint.c:1331
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
-msgstr ""
-
-#: src/elflint.c:1349
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
-"be used with %s\n"
-msgstr ""
-
-#: src/elflint.c:1366
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1381
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: copy relocation against symbol of type %"
-"s\n"
-msgstr ""
-
-#: src/elflint.c:1402
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: read-only section modified but text "
-"relocation flag not set\n"
-msgstr ""
-
-#: src/elflint.c:1417
-#, c-format
-msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
-msgstr ""
-
-#: src/elflint.c:1456 src/elflint.c:1506
-#, c-format
-msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1586
-#, c-format
-msgid "more than one dynamic section present\n"
-msgstr ""
-
-#: src/elflint.c:1604
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
-msgstr ""
-
-#: src/elflint.c:1609 src/elflint.c:1901
-#, c-format
-msgid "section [%2d] '%s': sh_info not zero\n"
-msgstr ""
-
-#: src/elflint.c:1619
-#, c-format
-msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1627
-#, c-format
-msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
-msgstr ""
-
-#: src/elflint.c:1634
-#, c-format
-msgid "section [%2d] '%s': entry %zu: unknown tag\n"
-msgstr ""
-
-#: src/elflint.c:1645
-#, c-format
-msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
-msgstr ""
-
-#: src/elflint.c:1655
-#, c-format
-msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
-msgstr ""
-
-#: src/elflint.c:1673
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
-msgstr ""
-
-#: src/elflint.c:1695
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: pointer does not match address of section [%"
-"2d] '%s' referenced by sh_link\n"
-msgstr ""
-
-#: src/elflint.c:1738
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:1753
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must be valid offset in section [%"
-"2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:1773 src/elflint.c:1801
-#, c-format
-msgid "section [%2d] '%s': contains %s entry but not %s\n"
-msgstr ""
-
-#: src/elflint.c:1785
-#, c-format
-msgid "section [%2d] '%s': mandatory tag %s not present\n"
-msgstr ""
-
-#: src/elflint.c:1794
-#, c-format
-msgid "section [%2d] '%s': no hash section present\n"
-msgstr ""
-
-#: src/elflint.c:1809 src/elflint.c:1816
-#, c-format
-msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
-msgstr ""
-
-#: src/elflint.c:1826 src/elflint.c:1830
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
-msgstr ""
-
-#: src/elflint.c:1836
-#, c-format
-msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
-msgstr ""
-
-#: src/elflint.c:1847 src/elflint.c:1851 src/elflint.c:1855 src/elflint.c:1859
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
-msgstr ""
-
-#: src/elflint.c:1871
-#, c-format
-msgid ""
-"section [%2d] '%s': only relocatable files can have extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1881
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index section not for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1886
-#, c-format
-msgid "cannot get data for symbol section\n"
-msgstr ""
-
-#: src/elflint.c:1889
-#, c-format
-msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
-msgstr ""
-
-#: src/elflint.c:1896
-#, c-format
-msgid "section [%2d] '%s': extended index table too small for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1911
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
-"same symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1922
-#, c-format
-msgid "symbol 0 should have zero extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1934
-#, c-format
-msgid "cannot get data for symbol %zu\n"
-msgstr ""
-
-#: src/elflint.c:1939
-#, c-format
-msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
-msgstr ""
-
-#: src/elflint.c:1955 src/elflint.c:1996
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
-msgstr ""
-
-#: src/elflint.c:1967 src/elflint.c:2008
-#, c-format
-msgid "section [%2d] '%s': chain array too large\n"
-msgstr ""
-
-#: src/elflint.c:1976 src/elflint.c:2017
-#, c-format
-msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1982
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2023
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2038
-#, c-format
-msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
-msgstr ""
-
-#: src/elflint.c:2049
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
-msgstr ""
-
-#: src/elflint.c:2057
-#, c-format
-msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
-msgstr ""
-
-#: src/elflint.c:2089
-#, c-format
-msgid ""
-"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
-msgstr ""
-
-#: src/elflint.c:2110
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
-"undefined\n"
-msgstr ""
-
-#: src/elflint.c:2121
-#, c-format
-msgid ""
-"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
-msgstr ""
-
-#: src/elflint.c:2152
-#, c-format
-msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2157
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2163
-#, c-format
-msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
-msgstr ""
-
-#: src/elflint.c:2176
-#, c-format
-msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
-msgstr ""
-
-#: src/elflint.c:2194
-#, c-format
-msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2202
-#, c-format
-msgid "section [%2d] '%s': hash table entry size incorrect\n"
-msgstr ""
-
-#: src/elflint.c:2207
-#, c-format
-msgid "section [%2d] '%s': not marked to be allocated\n"
-msgstr ""
-
-#: src/elflint.c:2212
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table has not even room for initial administrative "
-"entries\n"
-msgstr ""
-
-#: src/elflint.c:2260
-#, c-format
-msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
-msgstr ""
-
-#: src/elflint.c:2338 src/elflint.c:2342
-#, c-format
-msgid "section [%2zu] '%s': reference to symbol index 0\n"
-msgstr ""
-
-#: src/elflint.c:2349
-#, c-format
-msgid ""
-"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2361
-#, c-format
-msgid ""
-"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2377
-#, c-format
-msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
-msgstr ""
-
-#: src/elflint.c:2397
-#, c-format
-msgid ""
-"section [%2d] '%s': section groups only allowed in relocatable object files\n"
-msgstr ""
-
-#: src/elflint.c:2408
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol table: %s\n"
-msgstr ""
-
-#: src/elflint.c:2413
-#, c-format
-msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2419
-#, c-format
-msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
-msgstr ""
-
-#: src/elflint.c:2424
-#, c-format
-msgid "section [%2d] '%s': sh_flags not zero\n"
-msgstr ""
-
-#: src/elflint.c:2431
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol for signature\n"
-msgstr ""
-
-#: src/elflint.c:2436
-#, c-format
-msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
-msgstr ""
-
-#: src/elflint.c:2442
-#, c-format
-msgid "section [%2d] '%s': sh_flags not set correctly\n"
-msgstr ""
-
-#: src/elflint.c:2448
-#, c-format
-msgid "section [%2d] '%s': cannot get data: %s\n"
-msgstr ""
-
-#: src/elflint.c:2457
-#, c-format
-msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
-msgstr ""
-
-#: src/elflint.c:2462
-#, c-format
-msgid "section [%2d] '%s': section group without flags word\n"
-msgstr ""
-
-#: src/elflint.c:2468
-#, c-format
-msgid "section [%2d] '%s': section group without member\n"
-msgstr ""
-
-#: src/elflint.c:2472
-#, c-format
-msgid "section [%2d] '%s': section group with only one member\n"
-msgstr ""
-
-#: src/elflint.c:2483
-#, c-format
-msgid "section [%2d] '%s': unknown section group flags\n"
-msgstr ""
-
-#: src/elflint.c:2495
-#, c-format
-msgid "section [%2d] '%s': section index %Zu out of range\n"
-msgstr ""
-
-#: src/elflint.c:2504
-#, c-format
-msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:2511
-#, c-format
-msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2517
-#, c-format
-msgid ""
-"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
-"SHF_GROUP flag set\n"
-msgstr ""
-
-#: src/elflint.c:2524
-#, c-format
-msgid "section [%2d] '%s' is contained in more than one section group\n"
-msgstr ""
-
-#: src/elflint.c:2713
-#, c-format
-msgid ""
-"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
-"dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2724
-#, c-format
-msgid ""
-"section [%2d] '%s' has different number of entries than symbol table [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:2740
-#, c-format
-msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
-msgstr ""
-
-#: src/elflint.c:2756
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
-msgstr ""
-
-#: src/elflint.c:2764
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
-msgstr ""
-
-#: src/elflint.c:2778
-#, c-format
-msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
-msgstr ""
-
-#: src/elflint.c:2783
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
-msgstr ""
-
-#: src/elflint.c:2793
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
-msgstr ""
-
-#: src/elflint.c:2845
-#, c-format
-msgid "more than one version reference section present\n"
-msgstr ""
-
-#: src/elflint.c:2853 src/elflint.c:2982
-#, c-format
-msgid "section [%2d] '%s': sh_link does not link to string table\n"
-msgstr ""
-
-#: src/elflint.c:2876 src/elflint.c:3034
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong version %d\n"
-msgstr ""
-
-#: src/elflint.c:2882 src/elflint.c:3040
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:2890
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid file reference\n"
-msgstr ""
-
-#: src/elflint.c:2898
-#, c-format
-msgid "section [%2d] '%s': entry %d references unknown dependency\n"
-msgstr ""
-
-#: src/elflint.c:2910
-#, c-format
-msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:2917
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
-"reference\n"
-msgstr ""
-
-#: src/elflint.c:2924
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: %"
-"#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:2934
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
-"name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2945
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
-msgstr ""
-
-#: src/elflint.c:2961 src/elflint.c:3119
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
-msgstr ""
-
-#: src/elflint.c:2974
-#, c-format
-msgid "more than one version definition section present\n"
-msgstr ""
-
-#: src/elflint.c:3019
-#, c-format
-msgid "section [%2d] '%s': more than one BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3023
-#, c-format
-msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
-msgstr ""
-
-#: src/elflint.c:3029
-#, c-format
-msgid "section [%2d] '%s': entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:3053
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid name reference\n"
-msgstr ""
-
-#: src/elflint.c:3060
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:3069
-#, c-format
-msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3088
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3103
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3125
-#, c-format
-msgid "section [%2d] '%s': no BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3141
-#, c-format
-msgid "section [%2d] '%s': unknown parent version '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3154
-#, c-format
-msgid "section [%2d] '%s': empty object attributes section\n"
-msgstr ""
-
-#: src/elflint.c:3175
-#, c-format
-msgid "section [%2d] '%s': unrecognized attribute format\n"
-msgstr ""
-
-#: src/elflint.c:3191
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3200
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3212
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
-#: src/elflint.c:3229
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-msgstr ""
-
-#: src/elflint.c:3238
-#, c-format
-msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3247
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3260
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3271
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3289
-#, c-format
-msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
-msgstr ""
-
-#: src/elflint.c:3300
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
-msgstr ""
-
-#: src/elflint.c:3313
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3317
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3327
-#, c-format
-msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
-msgstr ""
-
-#: src/elflint.c:3333
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3422
-#, c-format
-msgid "cannot get section header of zeroth section\n"
-msgstr ""
-
-#: src/elflint.c:3426
-#, c-format
-msgid "zeroth section has nonzero name\n"
-msgstr ""
-
-#: src/elflint.c:3428
-#, c-format
-msgid "zeroth section has nonzero type\n"
-msgstr ""
-
-#: src/elflint.c:3430
-#, c-format
-msgid "zeroth section has nonzero flags\n"
-msgstr ""
-
-#: src/elflint.c:3432
-#, c-format
-msgid "zeroth section has nonzero address\n"
-msgstr ""
-
-#: src/elflint.c:3434
-#, c-format
-msgid "zeroth section has nonzero offset\n"
-msgstr ""
-
-#: src/elflint.c:3436
-#, c-format
-msgid "zeroth section has nonzero align value\n"
-msgstr ""
-
-#: src/elflint.c:3438
-#, c-format
-msgid "zeroth section has nonzero entry size value\n"
-msgstr ""
-
-#: src/elflint.c:3441
-#, c-format
-msgid ""
-"zeroth section has nonzero size value while ELF header has nonzero shnum "
-"value\n"
-msgstr ""
-
-#: src/elflint.c:3445
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in shstrndx\n"
-msgstr ""
-
-#: src/elflint.c:3449
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in phnum\n"
-msgstr ""
-
-#: src/elflint.c:3466
-#, c-format
-msgid "cannot get section header for section [%2zu] '%s': %s\n"
-msgstr ""
-
-#: src/elflint.c:3475
-#, c-format
-msgid "section [%2zu]: invalid name\n"
-msgstr ""
-
-#: src/elflint.c:3502
-#, c-format
-msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3518
-#, c-format
-msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3535
-#, c-format
-msgid ""
-"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3553
-#, c-format
-msgid "section [%2zu] '%s' present in object file\n"
-msgstr ""
-
-#: src/elflint.c:3559 src/elflint.c:3591
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
-msgstr ""
-
-#: src/elflint.c:3564 src/elflint.c:3596
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
-"segments\n"
-msgstr ""
-
-#: src/elflint.c:3572
-#, c-format
-msgid ""
-"section [%2zu] '%s' is extension section index table in non-object file\n"
-msgstr ""
-
-#: src/elflint.c:3615
-#, c-format
-msgid "section [%2zu] '%s': size not multiple of entry size\n"
-msgstr ""
-
-#: src/elflint.c:3620
-#, c-format
-msgid "cannot get section header\n"
-msgstr ""
-
-#: src/elflint.c:3630
-#, c-format
-msgid "section [%2zu] '%s' has unsupported type %d\n"
-msgstr ""
-
-#: src/elflint.c:3644
-#, c-format
-msgid ""
-"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3651
-#, c-format
-msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3659
-#, c-format
-msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
-msgstr ""
-
-#: src/elflint.c:3667
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in link value\n"
-msgstr ""
-
-#: src/elflint.c:3672
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in info value\n"
-msgstr ""
-
-#: src/elflint.c:3679
-#, c-format
-msgid "section [%2zu] '%s': strings flag set without merge flag\n"
-msgstr ""
-
-#: src/elflint.c:3684
-#, c-format
-msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
-msgstr ""
-
-#: src/elflint.c:3702
-#, c-format
-msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
-msgstr ""
-
-#: src/elflint.c:3711
-#, c-format
-msgid "section [%2zu] '%s' is both executable and writable\n"
-msgstr ""
-
-#: src/elflint.c:3738
-#, c-format
-msgid ""
-"section [%2zu] '%s' not fully contained in segment of program header entry %"
-"d\n"
-msgstr ""
-
-#: src/elflint.c:3746
-#, c-format
-msgid ""
-"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
-"program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3755
-#, c-format
-msgid ""
-"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
-"segment of program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3766
-#, c-format
-msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3776
-#, c-format
-msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3786
-#, c-format
-msgid ""
-"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:3792
-#, c-format
-msgid ""
-"section [%2zu] '%s': ELF header says this is the section header string table "
-"but type is not SHT_TYPE\n"
-msgstr ""
-
-#: src/elflint.c:3800
-#, c-format
-msgid ""
-"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
-msgstr ""
-
-#: src/elflint.c:3851
-#, c-format
-msgid "more than one version symbol table present\n"
-msgstr ""
-
-#: src/elflint.c:3874
-#, c-format
-msgid "INTERP program header entry but no .interp section\n"
-msgstr ""
-
-#: src/elflint.c:3885
-#, c-format
-msgid ""
-"loadable segment [%u] is executable but contains no executable sections\n"
-msgstr ""
-
-#: src/elflint.c:3891
-#, c-format
-msgid "loadable segment [%u] is writable but contains no writable sections\n"
-msgstr ""
-
-#: src/elflint.c:3902
-#, c-format
-msgid ""
-"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
-"exist\n"
-msgstr ""
-
-#: src/elflint.c:3915
-#, c-format
-msgid "duplicate version index %d\n"
-msgstr ""
-
-#: src/elflint.c:3929
-#, c-format
-msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
-msgstr ""
-
-#: src/elflint.c:3978
-#, c-format
-msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3982
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4005
-#, c-format
-msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4009
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4026
-#, c-format
-msgid "phdr[%d]: no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4045
-#, c-format
-msgid "phdr[%d]: cannot get content of note section: %s\n"
-msgstr ""
-
-#: src/elflint.c:4048
-#, c-format
-msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4069
-#, c-format
-msgid "section [%2d] '%s': no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4076
-#, c-format
-msgid "section [%2d] '%s': cannot get content of note section\n"
-msgstr ""
-
-#: src/elflint.c:4079
-#, c-format
-msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4097
-#, c-format
-msgid ""
-"only executables, shared objects, and core files can have program headers\n"
-msgstr ""
-
-#: src/elflint.c:4112
-#, c-format
-msgid "cannot get program header entry %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:4121
-#, c-format
-msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:4132
-#, c-format
-msgid "more than one INTERP entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4140
-#, c-format
-msgid "more than one TLS entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4147
-#, c-format
-msgid "static executable cannot have dynamic sections\n"
-msgstr ""
-
-#: src/elflint.c:4161
-#, c-format
-msgid "dynamic section reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4164
-#, c-format
-msgid "dynamic section size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4174
-#, c-format
-msgid "more than one GNU_RELRO entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4195
-#, c-format
-msgid "loadable segment GNU_RELRO applies to is not writable\n"
-msgstr ""
-
-#: src/elflint.c:4198
-#, c-format
-msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
-msgstr ""
-
-#: src/elflint.c:4206 src/elflint.c:4229
-#, c-format
-msgid "%s segment not contained in a loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:4235
-#, c-format
-msgid "program header offset in ELF header and PHDR entry do not match"
-msgstr ""
-
-#: src/elflint.c:4259
-#, c-format
-msgid "call frame search table reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4262
-#, c-format
-msgid "call frame search table size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4275
-#, c-format
-msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
-msgstr ""
-
-#: src/elflint.c:4283
-#, c-format
-msgid "call frame search table must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4286
-#, c-format
-msgid "section [%2zu] '%s' must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4290
-#, c-format
-msgid "call frame search table must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4293
-#, c-format
-msgid "section [%2zu] '%s' must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4298
-#, c-format
-msgid "call frame search table must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4301
-#, c-format
-msgid "section [%2zu] '%s' must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4312
-#, c-format
-msgid "program header entry %d: file size greater than memory size\n"
-msgstr ""
-
-#: src/elflint.c:4319
-#, c-format
-msgid "program header entry %d: alignment not a power of 2\n"
-msgstr ""
-
-#: src/elflint.c:4322
-#, c-format
-msgid ""
-"program header entry %d: file offset and virtual address not module of "
-"alignment\n"
-msgstr ""
-
-#: src/elflint.c:4335
-#, c-format
-msgid ""
-"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
-"program header entry"
-msgstr ""
-
-#: src/elflint.c:4369
-#, c-format
-msgid "cannot read ELF header: %s\n"
-msgstr ""
-
-#: src/elflint.c:4395
-#, c-format
-msgid "text relocation flag set but not needed\n"
-msgstr ""
-
-#: src/findtextrel.c:70
-msgid "Input Selection:"
-msgstr ""
-
-#: src/findtextrel.c:71
-msgid "Prepend PATH to all file names"
-msgstr ""
-
-#: src/findtextrel.c:73
-msgid "Use PATH as root of debuginfo hierarchy"
-msgstr ""
-
-#: src/findtextrel.c:80
-msgid "Locate source of text relocations in FILEs (a.out by default)."
-msgstr ""
-
-#: src/findtextrel.c:84 src/nm.c:111 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:97
-msgid "[FILE...]"
-msgstr ""
-
-#: src/findtextrel.c:246
-#, c-format
-msgid "cannot get ELF header '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:257
-#, c-format
-msgid "'%s' is not a DSO or PIE"
-msgstr ""
-
-#: src/findtextrel.c:274
-#, c-format
-msgid "getting get section header of section %zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:292
-#, c-format
-msgid "cannot read dynamic section: %s"
-msgstr ""
-
-#: src/findtextrel.c:307
-#, c-format
-msgid "no text relocations reported in '%s'"
-msgstr ""
-
-#: src/findtextrel.c:319
-#, c-format
-msgid "while reading ELF file"
-msgstr ""
-
-#: src/findtextrel.c:328 src/findtextrel.c:345
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr ""
-
-#: src/findtextrel.c:397
-#, c-format
-msgid "cannot get section header of section %Zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:409
-#, c-format
-msgid "cannot get symbol table section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:429 src/findtextrel.c:452
-#, c-format
-msgid "cannot get relocation at index %d in section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:517
-#, c-format
-msgid "%s not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:570
-#, c-format
-msgid ""
-"the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:577 src/findtextrel.c:597
-#, c-format
-msgid ""
-"the file containing the function '%s' might not be compiled with -fpic/-"
-"fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:585
-#, c-format
-msgid ""
-"either the file containing the function '%s' or the file containing the "
-"function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:605
-#, c-format
-msgid ""
-"a relocation modifies memory at offset %llu in a write-protected segment\n"
-msgstr ""
-
-#: src/i386_ld.c:210
-#, c-format
-msgid "cannot allocate PLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:232
-#, c-format
-msgid "cannot allocate PLTREL section: %s"
-msgstr ""
-
-#: src/i386_ld.c:253
-#, c-format
-msgid "cannot allocate GOT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:274
-#, c-format
-msgid "cannot allocate GOTPLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:661
-#, c-format
-msgid "initial-executable TLS relocation cannot be used "
-msgstr ""
-
-#: src/ld.c:87
-msgid "Input File Control:"
-msgstr ""
-
-#: src/ld.c:89
-msgid "Include whole archives in the output from now on."
-msgstr ""
-
-#: src/ld.c:91
-msgid "Stop including the whole archives in the output."
-msgstr ""
-
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
-msgid "FILE"
-msgstr ""
-
-#: src/ld.c:93
-msgid "Start a group."
-msgstr ""
-
-#: src/ld.c:94
-msgid "End a group."
-msgstr ""
-
-#: src/ld.c:95
-msgid "PATH"
-msgstr ""
-
-#: src/ld.c:96
-msgid "Add PATH to list of directories files are searched in."
-msgstr ""
-
-#: src/ld.c:98
-msgid "Only set DT_NEEDED for following dynamic libs if actually used"
-msgstr ""
-
-#: src/ld.c:100
-msgid "Always set DT_NEEDED for following dynamic libs"
-msgstr ""
-
-#: src/ld.c:102
-msgid "Ignore LD_LIBRARY_PATH environment variable."
-msgstr ""
-
-#: src/ld.c:105
-msgid "Output File Control:"
-msgstr ""
-
-#: src/ld.c:106
-msgid "Place output in FILE."
-msgstr ""
-
-#: src/ld.c:109
-msgid "Object is marked to not use default search path at runtime."
-msgstr ""
-
-#: src/ld.c:111
-msgid "Same as --whole-archive."
-msgstr ""
-
-#: src/ld.c:112
-msgid ""
-"Default rules of extracting from archive; weak references are not enough."
-msgstr ""
-
-#: src/ld.c:116
-msgid "Weak references cause extraction from archive."
-msgstr ""
-
-#: src/ld.c:118
-msgid "Allow multiple definitions; first is used."
-msgstr ""
-
-#: src/ld.c:120
-msgid "Disallow/allow undefined symbols in DSOs."
-msgstr ""
-
-#: src/ld.c:123
-msgid "Object requires immediate handling of $ORIGIN."
-msgstr ""
-
-#: src/ld.c:125
-msgid "Relocation will not be processed lazily."
-msgstr ""
-
-#: src/ld.c:127
-msgid "Object cannot be unloaded at runtime."
-msgstr ""
-
-#: src/ld.c:129
-msgid "Mark object to be initialized first."
-msgstr ""
-
-#: src/ld.c:131
-msgid "Enable/disable lazy-loading flag for following dependencies."
-msgstr ""
-
-#: src/ld.c:133
-msgid "Mark object as not loadable with 'dlopen'."
-msgstr ""
-
-#: src/ld.c:135
-msgid "Ignore/record dependencies on unused DSOs."
-msgstr ""
-
-#: src/ld.c:137
-msgid "Generated DSO will be a system library."
-msgstr ""
-
-#: src/ld.c:138
-msgid "ADDRESS"
-msgstr ""
-
-#: src/ld.c:138
-msgid "Set entry point address."
-msgstr ""
-
-#: src/ld.c:141
-msgid "Do not link against shared libraries."
-msgstr ""
-
-#: src/ld.c:144
-msgid "Prefer linking against shared libraries."
-msgstr ""
-
-#: src/ld.c:145
-msgid "Export all dynamic symbols."
-msgstr ""
-
-#: src/ld.c:146
-msgid "Strip all symbols."
-msgstr ""
-
-#: src/ld.c:147
-msgid "Strip debugging symbols."
-msgstr ""
-
-#: src/ld.c:149
-msgid "Assume pagesize for the target system to be SIZE."
-msgstr ""
-
-#: src/ld.c:151
-msgid "Set runtime DSO search path."
-msgstr ""
-
-#: src/ld.c:154
-msgid "Set link time DSO search path."
-msgstr ""
-
-#: src/ld.c:155
-msgid "Generate dynamic shared object."
-msgstr ""
-
-#: src/ld.c:156
-msgid "Generate relocatable object."
-msgstr ""
-
-#: src/ld.c:159
-msgid "Causes symbol not assigned to a version be reduced to local."
-msgstr ""
-
-#: src/ld.c:160
-msgid "Remove unused sections."
-msgstr ""
-
-#: src/ld.c:163
-msgid "Don't remove unused sections."
-msgstr ""
-
-#: src/ld.c:164
-msgid "Set soname of shared object."
-msgstr ""
-
-#: src/ld.c:165
-msgid "Set the dynamic linker name."
-msgstr ""
-
-#: src/ld.c:168
-msgid "Add/suppress addition indentifying link-editor to .comment section."
-msgstr ""
-
-#: src/ld.c:171
-msgid "Create .eh_frame_hdr section"
-msgstr ""
-
-#: src/ld.c:173
-msgid "Set hash style to sysv, gnu or both."
-msgstr ""
-
-#: src/ld.c:175
-msgid "Generate build ID note (md5, sha1 (default), uuid)."
-msgstr ""
-
-#: src/ld.c:177
-msgid "Linker Operation Control:"
-msgstr ""
-
-#: src/ld.c:178
-msgid "Verbose messages."
-msgstr ""
-
-#: src/ld.c:179
-msgid "Trace file opens."
-msgstr ""
-
-#: src/ld.c:181
-msgid "Trade speed for less memory usage"
-msgstr ""
-
-#: src/ld.c:182
-msgid "LEVEL"
-msgstr ""
-
-#: src/ld.c:183
-msgid "Set optimization level to LEVEL."
-msgstr ""
-
-#: src/ld.c:184
-msgid "Use linker script in FILE."
-msgstr ""
-
-#: src/ld.c:187
-msgid "Select to get parser debug information"
-msgstr ""
-
-#: src/ld.c:190
-msgid "Read version information from FILE."
-msgstr ""
-
-#: src/ld.c:191
-msgid "Set emulation to NAME."
-msgstr ""
-
-#: src/ld.c:197
-msgid "Combine object and archive files."
-msgstr ""
-
-#: src/ld.c:200
-msgid "[FILE]..."
-msgstr ""
-
-#: src/ld.c:333
-#, c-format
-msgid "At least one input file needed"
-msgstr ""
-
-#: src/ld.c:349
-#, c-format
-msgid "error while preparing linking"
-msgstr ""
-
-#: src/ld.c:356
-#, c-format
-msgid "cannot open linker script '%s'"
-msgstr ""
-
-#: src/ld.c:397
-#, c-format
-msgid "-( without matching -)"
-msgstr ""
-
-#: src/ld.c:572 src/ld.c:610
-#, c-format
-msgid "only one option of -G and -r is allowed"
-msgstr ""
-
-#: src/ld.c:594
-#, c-format
-msgid "more than one '-m' parameter"
-msgstr ""
-
-#: src/ld.c:604 src/ld.c:1013
-#, c-format
-msgid "unknown option `-%c %s'"
-msgstr ""
-
-#: src/ld.c:646
-#, c-format
-msgid "invalid page size value '%s': ignored"
-msgstr ""
-
-#: src/ld.c:687
-#, c-format
-msgid "invalid hash style '%s'"
-msgstr ""
-
-#: src/ld.c:697
-#, c-format
-msgid "invalid build-ID style '%s'"
-msgstr ""
-
-#: src/ld.c:785
-#, c-format
-msgid "More than one output file name given."
-msgstr ""
-
-#: src/ld.c:802
-#, c-format
-msgid "Invalid optimization level `%s'"
-msgstr ""
-
-#: src/ld.c:850
-#, c-format
-msgid "nested -( -) groups are not allowed"
-msgstr ""
-
-#: src/ld.c:869
-#, c-format
-msgid "-) without matching -("
-msgstr ""
-
-#: src/ld.c:1046
-#, c-format
-msgid "unknown option '-%c %s'"
-msgstr ""
-
-#: src/ld.c:1150
-#, c-format
-msgid "could not find input file to determine output file format"
-msgstr ""
-
-#: src/ld.c:1152
-#, c-format
-msgid "try again with an appropriate '-m' parameter"
-msgstr ""
-
-#: src/ld.c:1446
-#, c-format
-msgid "cannot read version script '%s'"
-msgstr ""
-
-#: src/ld.c:1512 src/ld.c:1551
-#, c-format
-msgid "duplicate definition of '%s' in linker script"
-msgstr ""
-
-#: src/ldgeneric.c:209 src/ldgeneric.c:5151
-#, c-format
-msgid "cannot create string table"
-msgstr ""
-
-#: src/ldgeneric.c:255
-#, c-format
-msgid "cannot load ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:265
-#, c-format
-msgid "cannot find init function in ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:310
-#, c-format
-msgid "%s listed more than once as input"
-msgstr ""
-
-#: src/ldgeneric.c:424
-#, c-format
-msgid "%s (for -l%s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:425
-#, c-format
-msgid "%s (for DT_NEEDED %s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:573
-#, c-format
-msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
-msgstr ""
-
-#: src/ldgeneric.c:586
-#, c-format
-msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
-msgstr ""
-
-#: src/ldgeneric.c:661 src/ldgeneric.c:1122 src/readelf.c:629 src/strip.c:543
-#, c-format
-msgid "cannot determine number of sections: %s"
-msgstr ""
-
-#: src/ldgeneric.c:677
-#, c-format
-msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
-msgstr ""
-
-#: src/ldgeneric.c:700
-#, c-format
-msgid "(%s+%#<PRIx64>): first defined here\n"
-msgstr ""
-
-#: src/ldgeneric.c:819
-#, c-format
-msgid "%s: cannot get section group data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:840
-#, c-format
-msgid "%s: section '%s' with group flag set does not belong to any group"
-msgstr ""
-
-#: src/ldgeneric.c:885
-#, c-format
-msgid "%s: section [%2d] '%s' is not in the correct section group"
-msgstr ""
-
-#: src/ldgeneric.c:1156 src/ldgeneric.c:1413 src/ldgeneric.c:1422
-#: src/ldgeneric.c:1481 src/ldgeneric.c:1490 src/ldgeneric.c:1753
-#: src/ldgeneric.c:2005
-#, c-format
-msgid "%s: invalid ELF file (%s:%d)\n"
-msgstr ""
-
-#: src/ldgeneric.c:1250
-#, c-format
-msgid "%s: only files of type ET_REL might contain section groups"
-msgstr ""
-
-#: src/ldgeneric.c:1302
-#, c-format
-msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:1314
-#, c-format
-msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
-msgstr ""
-
-#: src/ldgeneric.c:1328
-#, c-format
-msgid ""
-"%s: group member %zu of section group [%2zd] '%s' has too high index: %"
-"<PRIu32>"
-msgstr ""
-
-#: src/ldgeneric.c:1350
-#, c-format
-msgid "%s: section '%s' has unknown type: %d"
-msgstr ""
-
-#: src/ldgeneric.c:1729
-#, c-format
-msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:1899
-#, c-format
-msgid "cannot read archive `%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:2020
-#, c-format
-msgid "file of type %s cannot be linked in\n"
-msgstr ""
-
-#: src/ldgeneric.c:2032
-#, c-format
-msgid "%s: input file incompatible with ELF machine type %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2044
-#, c-format
-msgid "%s: cannot get section header string table index: %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2073
-#, c-format
-msgid "cannot use DSO '%s' when generating relocatable object file"
-msgstr ""
-
-#: src/ldgeneric.c:2158
-#, c-format
-msgid "input file '%s' ignored"
-msgstr ""
-
-#: src/ldgeneric.c:2372
-#, c-format
-msgid "undefined symbol `%s' in %s"
-msgstr ""
-
-#: src/ldgeneric.c:2702
-#, c-format
-msgid "cannot create ELF descriptor for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:2709
-#, c-format
-msgid "could not create ELF header for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3224 src/ldgeneric.c:3294 src/ldgeneric.c:3330
-#: src/ldgeneric.c:4457 src/ldgeneric.c:4506 src/ldgeneric.c:4538
-#: src/ldgeneric.c:4773 src/ldgeneric.c:4828 src/ldgeneric.c:5075
-#: src/ldgeneric.c:5131 src/ldgeneric.c:5600 src/ldgeneric.c:5612
-#, c-format
-msgid "cannot create section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3444
-#, c-format
-msgid "address computation expression contains variable '%s'"
-msgstr ""
-
-#: src/ldgeneric.c:3489
-#, c-format
-msgid ""
-"argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
-"of two"
-msgstr ""
-
-#: src/ldgeneric.c:3684
-#, c-format
-msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3690
-#, c-format
-msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3920
-#, c-format
-msgid "cannot create GNU hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4071
-#, c-format
-msgid "cannot create hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4114
-#, c-format
-msgid "cannot create build ID section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4191
-#, c-format
-msgid "cannot convert section data to file format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4200
-#, c-format
-msgid "cannot convert section data to memory format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4261
-#, c-format
-msgid "cannot read enough data for UUID"
-msgstr ""
-
-#: src/ldgeneric.c:4358 src/ldgeneric.c:4379 src/ldgeneric.c:4408
-#: src/ldgeneric.c:6062
-#, c-format
-msgid "cannot create symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5300 src/ldgeneric.c:5852
-#, c-format
-msgid "section index too large in dynamic symbol table"
-msgstr ""
-
-#: src/ldgeneric.c:5745
-#, c-format
-msgid "cannot create versioning section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5818
-#, c-format
-msgid "cannot create dynamic symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5994
-#, c-format
-msgid "cannot create versioning data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6094 src/ldgeneric.c:6107 src/ldgeneric.c:6171
-#: src/ldgeneric.c:6179
-#, c-format
-msgid "cannot create section header string section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6101
-#, c-format
-msgid "cannot create section header string section"
-msgstr ""
-
-#: src/ldgeneric.c:6259
-#, c-format
-msgid "cannot create program header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6267
-#, c-format
-msgid "while determining file layout: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6388
-#, c-format
-msgid "internal error: non-nobits section follows nobits section"
-msgstr ""
-
-#: src/ldgeneric.c:6925
-#, c-format
-msgid "cannot get header of 0th section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6941 src/unstrip.c:1808
-#, c-format
-msgid "cannot update ELF header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6972
-#, c-format
-msgid "linker backend didn't specify function to relocate section"
-msgstr ""
-
-#: src/ldgeneric.c:6984
-#, c-format
-msgid "while writing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6989
-#, c-format
-msgid "while finishing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6995
-#, c-format
-msgid "cannot stat output file"
-msgstr ""
-
-#: src/ldgeneric.c:7011
-#, c-format
-msgid "WARNING: temporary output file overwritten before linking finished"
-msgstr ""
-
-#: src/ldgeneric.c:7064 src/ldgeneric.c:7075 src/ldgeneric.c:7086
-#: src/ldgeneric.c:7097 src/ldgeneric.c:7116 src/ldgeneric.c:7129
-#: src/ldgeneric.c:7141
-#, c-format
-msgid "no machine specific '%s' implementation"
-msgstr ""
-
-#: src/ldscript.y:178
-msgid "mode for segment invalid\n"
-msgstr ""
-
-#: src/ldscript.y:465
-#, c-format
-msgid "while reading version script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:466
-#, c-format
-msgid "while reading linker script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:745
-#, c-format
-msgid "symbol '%s' is declared both local and global for unnamed version"
-msgstr ""
-
-#: src/ldscript.y:747
-#, c-format
-msgid "symbol '%s' is declared both local and global for version '%s'"
-msgstr ""
-
-#: src/ldscript.y:767 src/ldscript.y:774
-#, c-format
-msgid "default visibility set as local and global"
-msgstr ""
-
-#: src/nm.c:74 src/strip.c:73
-msgid "Output selection:"
-msgstr ""
-
-#: src/nm.c:75
-msgid "Display debugger-only symbols"
-msgstr ""
-
-#: src/nm.c:76
-msgid "Display only defined symbols"
-msgstr ""
-
-#: src/nm.c:79
-msgid "Display dynamic symbols instead of normal symbols"
-msgstr ""
-
-#: src/nm.c:80
-msgid "Display only external symbols"
-msgstr ""
-
-#: src/nm.c:81
-msgid "Display only undefined symbols"
-msgstr ""
-
-#: src/nm.c:83
-msgid "Include index for symbols from archive members"
-msgstr ""
-
-#: src/nm.c:85 src/size.c:66
-msgid "Output format:"
-msgstr ""
-
-#: src/nm.c:87
-msgid "Print name of the input file before every symbol"
-msgstr ""
-
-#: src/nm.c:90
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The "
-"default is `sysv'"
-msgstr ""
-
-#: src/nm.c:92
-msgid "Same as --format=bsd"
-msgstr ""
-
-#: src/nm.c:93
-msgid "Same as --format=posix"
-msgstr ""
-
-#: src/nm.c:94 src/size.c:72
-msgid "Use RADIX for printing symbol values"
-msgstr ""
-
-#: src/nm.c:95
-msgid "Mark weak symbols"
-msgstr ""
-
-#: src/nm.c:96
-msgid "Print size of defined symbols"
-msgstr ""
-
-#: src/nm.c:98 src/size.c:80 src/strip.c:78 src/unstrip.c:81
-msgid "Output options:"
-msgstr ""
-
-#: src/nm.c:99
-msgid "Sort symbols numerically by address"
-msgstr ""
-
-#: src/nm.c:101
-msgid "Do not sort the symbols"
-msgstr ""
-
-#: src/nm.c:102
-msgid "Reverse the sense of the sort"
-msgstr ""
-
-#: src/nm.c:108
-msgid "List symbols from FILEs (a.out by default)."
-msgstr ""
-
-#: src/nm.c:136 src/objdump.c:105 src/size.c:117 src/strip.c:121
-#, c-format
-msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
-msgstr ""
-
-#: src/nm.c:380 src/nm.c:392 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:1816
-#, c-format
-msgid "while closing '%s'"
-msgstr ""
-
-#: src/nm.c:402 src/objdump.c:296 src/strip.c:359
-#, c-format
-msgid "%s: File format not recognized"
-msgstr ""
-
-#: src/nm.c:442
-msgid ""
-"\n"
-"Archive index:"
-msgstr ""
-
-#: src/nm.c:451
-#, c-format
-msgid "invalid offset %zu for symbol %s"
-msgstr ""
-
-#: src/nm.c:456
-#, c-format
-msgid "%s in %s\n"
-msgstr ""
-
-#: src/nm.c:464
-#, c-format
-msgid "cannot reset archive offset to beginning"
-msgstr ""
-
-#: src/nm.c:488 src/objdump.c:344
-#, c-format
-msgid "%s%s%s: file format not recognized"
-msgstr ""
-
-#: src/nm.c:700
-#, c-format
-msgid "cannot create search tree"
-msgstr ""
-
-#: src/nm.c:740 src/nm.c:1002 src/objdump.c:744 src/readelf.c:885
-#: src/readelf.c:1028 src/readelf.c:1169 src/readelf.c:1351 src/readelf.c:1549
-#: src/readelf.c:1735 src/readelf.c:1945 src/readelf.c:2199 src/readelf.c:2265
-#: src/readelf.c:2343 src/readelf.c:2841 src/readelf.c:2877 src/readelf.c:2939
-#: src/readelf.c:6493 src/readelf.c:7387 src/readelf.c:7534 src/readelf.c:7604
-#: src/size.c:425 src/size.c:499 src/strip.c:483
-#, c-format
-msgid "cannot get section header string table index"
-msgstr ""
-
-#: src/nm.c:766
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:768
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:771
-#, c-format
-msgid ""
-"%*s%-*s %-*s Class Type %-*s %*s Section\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:1012
-#, c-format
-msgid "%s: entry size in section `%s' is not what we expect"
-msgstr ""
-
-#: src/nm.c:1016
-#, c-format
-msgid "%s: size of section `%s' is not multiple of entry size"
-msgstr ""
-
-#: src/nm.c:1255
-#, c-format
-msgid "%s%s%s%s: Invalid operation"
-msgstr ""
-
-#: src/nm.c:1312
-#, c-format
-msgid "%s%s%s: no symbols"
-msgstr ""
-
-#: src/objdump.c:61
-msgid "Mode selection:"
-msgstr ""
-
-#: src/objdump.c:62
-msgid "Display relocation information."
-msgstr ""
-
-#: src/objdump.c:64
-msgid "Display the full contents of all sections requested"
-msgstr ""
-
-#: src/objdump.c:66
-msgid "Display assembler code of executable sections"
-msgstr ""
-
-#: src/objdump.c:68
-msgid "Output option selection:"
-msgstr ""
-
-#: src/objdump.c:70
-msgid "Only display information for section NAME."
-msgstr ""
-
-#: src/objdump.c:76
-msgid "Show information from FILEs (a.out by default)."
-msgstr ""
-
-#: src/objdump.c:236 src/readelf.c:430
-msgid "No operation specified.\n"
-msgstr ""
-
-#: src/objdump.c:274 src/objdump.c:286
-#, c-format
-msgid "while close `%s'"
-msgstr ""
-
-#: src/objdump.c:379 src/readelf.c:1644 src/readelf.c:1818
-msgid "INVALID SYMBOL"
-msgstr ""
-
-#: src/objdump.c:394 src/readelf.c:1675 src/readelf.c:1851
-msgid "INVALID SECTION"
-msgstr ""
-
-#: src/objdump.c:510
-#, c-format
-msgid ""
-"\n"
-"RELOCATION RECORDS FOR [%s]:\n"
-"%-*s TYPE VALUE\n"
-msgstr ""
-
-#: src/objdump.c:513
-msgid "OFFSET"
-msgstr ""
-
-#: src/objdump.c:576
-#, c-format
-msgid "Contents of section %s:\n"
-msgstr ""
-
-#: src/objdump.c:676
-#, c-format
-msgid "cannot disassemble"
-msgstr ""
-
-#: src/ranlib.c:74
-msgid "Generate an index to speed access to archives."
-msgstr ""
-
-#: src/ranlib.c:77
-msgid "ARCHIVE"
-msgstr ""
-
-#: src/ranlib.c:116
-#, c-format
-msgid "Archive name required"
-msgstr ""
-
-#: src/ranlib.c:194
-#, c-format
-msgid "'%s' is no archive"
-msgstr ""
-
-#: src/ranlib.c:229
-#, c-format
-msgid "error while freeing sub-ELF descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:73
-msgid "ELF output selection:"
-msgstr ""
-
-#: src/readelf.c:75
-msgid "All these plus -p .strtab -p .dynstr -p .comment"
-msgstr ""
-
-#: src/readelf.c:76
-msgid "Display the dynamic segment"
-msgstr ""
-
-#: src/readelf.c:77
-msgid "Display the ELF file header"
-msgstr ""
-
-#: src/readelf.c:79
-msgid "Display histogram of bucket list lengths"
-msgstr ""
-
-#: src/readelf.c:80
-msgid "Display the program headers"
-msgstr ""
-
-#: src/readelf.c:82
-msgid "Display relocations"
-msgstr ""
-
-#: src/readelf.c:83
-msgid "Display the sections' headers"
-msgstr ""
-
-#: src/readelf.c:85
-msgid "Display the symbol table"
-msgstr ""
-
-#: src/readelf.c:86
-msgid "Display versioning information"
-msgstr ""
-
-#: src/readelf.c:87
-msgid "Display the ELF notes"
-msgstr ""
-
-#: src/readelf.c:89
-msgid "Display architecture specific information, if any"
-msgstr ""
-
-#: src/readelf.c:91
-msgid "Display sections for exception handling"
-msgstr ""
-
-#: src/readelf.c:93
-msgid "Additional output selection:"
-msgstr ""
-
-#: src/readelf.c:95
-msgid ""
-"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, info, loc, line, ranges, pubnames, str, macinfo, or exception"
-msgstr ""
-
-#: src/readelf.c:99
-msgid "Dump the uninterpreted contents of SECTION, by number or name"
-msgstr ""
-
-#: src/readelf.c:101
-msgid "Print string contents of sections"
-msgstr ""
-
-#: src/readelf.c:104
-msgid "Display the symbol index of an archive"
-msgstr ""
-
-#: src/readelf.c:106
-msgid "Output control:"
-msgstr ""
-
-#: src/readelf.c:108
-msgid "Do not find symbol names for addresses in DWARF data"
-msgstr ""
-
-#: src/readelf.c:114
-msgid "Print information from ELF file in human-readable form."
-msgstr ""
-
-#: src/readelf.c:401
-#, c-format
-msgid "Unknown DWARF debug section `%s'.\n"
-msgstr ""
-
-#: src/readelf.c:465
-#, c-format
-msgid "cannot generate Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:477
-#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr ""
-
-#: src/readelf.c:482
-#, c-format
-msgid "error while closing Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:574
-#, c-format
-msgid "cannot stat input file"
-msgstr ""
-
-#: src/readelf.c:576
-#, c-format
-msgid "input file is empty"
-msgstr ""
-
-#: src/readelf.c:578
-#, c-format
-msgid "failed reading '%s': %s"
-msgstr ""
-
-#: src/readelf.c:614
-#, c-format
-msgid "cannot read ELF header: %s"
-msgstr ""
-
-#: src/readelf.c:622
-#, c-format
-msgid "cannot create EBL handle"
-msgstr ""
-
-#: src/readelf.c:635
-#, c-format
-msgid "cannot determine number of program headers: %s"
-msgstr ""
-
-#: src/readelf.c:721
-msgid "NONE (None)"
-msgstr ""
-
-#: src/readelf.c:722
-msgid "REL (Relocatable file)"
-msgstr ""
-
-#: src/readelf.c:723
-msgid "EXEC (Executable file)"
-msgstr ""
-
-#: src/readelf.c:724
-msgid "DYN (Shared object file)"
-msgstr ""
-
-#: src/readelf.c:725
-msgid "CORE (Core file)"
-msgstr ""
-
-#: src/readelf.c:730
-#, c-format
-msgid "OS Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:732
-#, c-format
-msgid "Processor Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:742
-msgid ""
-"ELF Header:\n"
-" Magic: "
-msgstr ""
-
-#: src/readelf.c:746
-#, c-format
-msgid ""
-"\n"
-" Class: %s\n"
-msgstr ""
-
-#: src/readelf.c:751
-#, c-format
-msgid " Data: %s\n"
-msgstr ""
-
-#: src/readelf.c:757
-#, c-format
-msgid " Ident Version: %hhd %s\n"
-msgstr ""
-
-#: src/readelf.c:759 src/readelf.c:776
-msgid "(current)"
-msgstr ""
-
-#: src/readelf.c:763
-#, c-format
-msgid " OS/ABI: %s\n"
-msgstr ""
-
-#: src/readelf.c:766
-#, c-format
-msgid " ABI Version: %hhd\n"
-msgstr ""
-
-#: src/readelf.c:769
-msgid " Type: "
-msgstr ""
-
-#: src/readelf.c:772
-#, c-format
-msgid " Machine: %s\n"
-msgstr ""
-
-#: src/readelf.c:774
-#, c-format
-msgid " Version: %d %s\n"
-msgstr ""
-
-#: src/readelf.c:778
-#, c-format
-msgid " Entry point address: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:781
-#, c-format
-msgid " Start of program headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:782 src/readelf.c:785
-msgid "(bytes into file)"
-msgstr ""
-
-#: src/readelf.c:784
-#, c-format
-msgid " Start of section headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:787
-#, c-format
-msgid " Flags: %s\n"
-msgstr ""
-
-#: src/readelf.c:790
-#, c-format
-msgid " Size of this header: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:791 src/readelf.c:794 src/readelf.c:811
-msgid "(bytes)"
-msgstr ""
-
-#: src/readelf.c:793
-#, c-format
-msgid " Size of program header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:796
-#, c-format
-msgid " Number of program headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:803
-#, c-format
-msgid " (%<PRIu32> in [0].sh_info)"
-msgstr ""
-
-#: src/readelf.c:806 src/readelf.c:823 src/readelf.c:837
-msgid " ([0] not available)"
-msgstr ""
-
-#: src/readelf.c:810
-#, c-format
-msgid " Size of section header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:813
-#, c-format
-msgid " Number of section headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:820
-#, c-format
-msgid " (%<PRIu32> in [0].sh_size)"
-msgstr ""
-
-#: src/readelf.c:833
-#, c-format
-msgid " (%<PRIu32> in [0].sh_link)"
-msgstr ""
-
-#: src/readelf.c:841
-#, c-format
-msgid ""
-" Section header string table index: XINDEX%s\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:845
-#, c-format
-msgid ""
-" Section header string table index: %<PRId16>\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:877
-#, c-format
-msgid ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:887
-msgid "Section Headers:"
-msgstr ""
-
-#: src/readelf.c:890
-msgid ""
-"[Nr] Name Type Addr Off Size ES Flags Lk "
-"Inf Al"
-msgstr ""
-
-#: src/readelf.c:892
-msgid ""
-"[Nr] Name Type Addr Off Size ES "
-"Flags Lk Inf Al"
-msgstr ""
-
-#: src/readelf.c:899 src/readelf.c:1052
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:906 src/readelf.c:1060 src/readelf.c:7554 src/unstrip.c:353
-#: src/unstrip.c:377 src/unstrip.c:427 src/unstrip.c:536 src/unstrip.c:553
-#: src/unstrip.c:591 src/unstrip.c:789 src/unstrip.c:1057 src/unstrip.c:1244
-#: src/unstrip.c:1305 src/unstrip.c:1427 src/unstrip.c:1480 src/unstrip.c:1588
-#: src/unstrip.c:1778
-#, c-format
-msgid "cannot get section header: %s"
-msgstr ""
-
-#: src/readelf.c:964
-msgid "Program Headers:"
-msgstr ""
-
-#: src/readelf.c:966
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:969
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz "
-"MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:1009
-#, c-format
-msgid "\t[Requesting program interpreter: %s]\n"
-msgstr ""
-
-#: src/readelf.c:1030
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-" Segment Sections..."
-msgstr ""
-
-#: src/readelf.c:1041 src/unstrip.c:1824 src/unstrip.c:1863 src/unstrip.c:1870
-#, c-format
-msgid "cannot get program header: %s"
-msgstr ""
-
-#: src/readelf.c:1175
-#, c-format
-msgid ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1180
-#, c-format
-msgid ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1188
-msgid "<INVALID SYMBOL>"
-msgstr ""
-
-#: src/readelf.c:1202
-msgid "<INVALID SECTION>"
-msgstr ""
-
-#: src/readelf.c:1353
-#, c-format
-msgid ""
-"\n"
-"Dynamic segment contains %lu entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Dynamic segment contains %lu entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1365
-msgid " Type Value\n"
-msgstr ""
-
-#: src/readelf.c:1389
-#, c-format
-msgid "Shared library: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1394
-#, c-format
-msgid "Library soname: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1399
-#, c-format
-msgid "Library rpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1404
-#, c-format
-msgid "Library runpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1424
-#, c-format
-msgid "%<PRId64> (bytes)\n"
-msgstr ""
-
-#: src/readelf.c:1534 src/readelf.c:1720
-#, c-format
-msgid ""
-"\n"
-"Invalid symbol table at offset %#0<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:1552 src/readelf.c:1737
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1567
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1577
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1579
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1632 src/readelf.c:1643 src/readelf.c:1656 src/readelf.c:1674
-#: src/readelf.c:1686 src/readelf.c:1805 src/readelf.c:1817 src/readelf.c:1831
-#: src/readelf.c:1850 src/readelf.c:1863
-msgid "<INVALID RELOC>"
-msgstr ""
-
-#: src/readelf.c:1749
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1751
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1952
-#, c-format
-msgid ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entry:\n"
-msgid_plural ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1958
-#, c-format
-msgid " %lu local symbol String table: [%2u] '%s'\n"
-msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1968
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1970
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1990
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr ""
-
-#: src/readelf.c:2078
-#, c-format
-msgid "bad dynamic symbol"
-msgstr ""
-
-#: src/readelf.c:2160
-msgid "none"
-msgstr ""
-
-#: src/readelf.c:2177
-msgid "| <unknown>"
-msgstr ""
-
-#: src/readelf.c:2202
-#, c-format
-msgid ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2225
-#, c-format
-msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2238
-#, c-format
-msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2269
-#, c-format
-msgid ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2299
-#, c-format
-msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
-msgstr ""
-
-#: src/readelf.c:2314
-#, c-format
-msgid " %#06x: Parent %d: %s\n"
-msgstr ""
-
-#: src/readelf.c:2546
-#, c-format
-msgid ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgid_plural ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2576
-msgid " 0 *local* "
-msgstr ""
-
-#: src/readelf.c:2581
-msgid " 1 *global* "
-msgstr ""
-
-#: src/readelf.c:2612
-#, c-format
-msgid ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"bucket):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"buckets):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2636
-#, no-c-format
-msgid " Length Number % of total Coverage\n"
-msgstr ""
-
-#: src/readelf.c:2638
-#, c-format
-msgid " 0 %6<PRIu32> %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2645
-#, c-format
-msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2658
-#, c-format
-msgid ""
-" Average number of tests: successful lookup: %f\n"
-" unsuccessful lookup: %f\n"
-msgstr ""
-
-#: src/readelf.c:2676 src/readelf.c:2718 src/readelf.c:2759
-#, c-format
-msgid "cannot get data for section %d: %s"
-msgstr ""
-
-#: src/readelf.c:2813
-#, c-format
-msgid ""
-" Symbol Bias: %u\n"
-" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
-msgstr ""
-
-#: src/readelf.c:2887
-#, c-format
-msgid ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2901
-msgid ""
-" Library Time Stamp Checksum Version "
-"Flags"
-msgstr ""
-
-#: src/readelf.c:2951
-#, c-format
-msgid ""
-"\n"
-"Object attributes section [%2zu] '%s' of %<PRIu64> bytes at offset %"
-"#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:2967
-msgid " Owner Size\n"
-msgstr ""
-
-#: src/readelf.c:2993
-#, c-format
-msgid " %-13s %4<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3025
-#, c-format
-msgid " %-4u %12<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3030
-#, c-format
-msgid " File: %11<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3065
-#, c-format
-msgid " %s: %<PRId64>, %s\n"
-msgstr ""
-
-#: src/readelf.c:3068
-#, c-format
-msgid " %s: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3071
-#, c-format
-msgid " %s: %s\n"
-msgstr ""
-
-#: src/readelf.c:3078
-#, c-format
-msgid " %u: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3081
-#, c-format
-msgid " %u: %s\n"
-msgstr ""
-
-#: src/readelf.c:3117
-#, c-format
-msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3120
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3125
-#, c-format
-msgid "%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3128
-#, c-format
-msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3134
-#, c-format
-msgid "%s+%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3137
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3141
-#, c-format
-msgid "%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3144
-#, c-format
-msgid "%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3149
-#, c-format
-msgid "%s+%#<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3152
-#, c-format
-msgid "%s+%#0*<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3260
-#, c-format
-msgid "unknown tag %hx"
-msgstr ""
-
-#: src/readelf.c:3262
-#, c-format
-msgid "unknown user tag %hx"
-msgstr ""
-
-#: src/readelf.c:3480
-#, c-format
-msgid "unknown attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3483
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3529
-#, c-format
-msgid "unknown form %<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3763
-msgid "empty block"
-msgstr ""
-
-#: src/readelf.c:3766
-#, c-format
-msgid "%zu byte block:"
-msgstr ""
-
-#: src/readelf.c:4175
-#, c-format
-msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-msgstr ""
-
-#: src/readelf.c:4188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [ Code]\n"
-msgstr ""
-
-#: src/readelf.c:4195
-#, c-format
-msgid ""
-"\n"
-"Abbreviation section at offset %<PRIu64>:\n"
-msgstr ""
-
-#: src/readelf.c:4208
-#, c-format
-msgid " *** error while reading abbreviation: %s\n"
-msgstr ""
-
-#: src/readelf.c:4224
-#, c-format
-msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "yes"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "no"
-msgstr ""
-
-#: src/readelf.c:4263
-#, c-format
-msgid "cannot get .debug_aranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4268
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:4298
-#, c-format
-msgid " [%*zu] ???\n"
-msgstr ""
-
-#: src/readelf.c:4300
-#, c-format
-msgid ""
-" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:4319
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4324 src/readelf.c:4810 src/readelf.c:5452 src/readelf.c:5897
-#: src/readelf.c:5992 src/readelf.c:6164
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4338 src/readelf.c:5911
-#, c-format
-msgid " [%6tx] <INVALID DATA>\n"
-msgstr ""
-
-#: src/readelf.c:4360 src/readelf.c:5933
-#, c-format
-msgid " [%6tx] base address %s\n"
-msgstr ""
-
-#: src/readelf.c:4371
-#, c-format
-msgid " [%6tx] %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4373
-#, c-format
-msgid " %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4799 src/readelf.c:6230 src/readelf.c:6332
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr ""
-
-#: src/readelf.c:4806
-#, c-format
-msgid ""
-"\n"
-"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4833 src/readelf.c:5486
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:4855
-#, c-format
-msgid ""
-"\n"
-" [%6tx] Zero terminator\n"
-msgstr ""
-
-#: src/readelf.c:4924
-#, c-format
-msgid "invalid augmentation length"
-msgstr ""
-
-#: src/readelf.c:4936
-msgid "FDE address encoding: "
-msgstr ""
-
-#: src/readelf.c:4942
-msgid "LSDA pointer encoding: "
-msgstr ""
-
-#: src/readelf.c:5034
-#, c-format
-msgid " (offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5041
-#, c-format
-msgid " (end offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5068
-#, c-format
-msgid " %-26sLSDA pointer: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:5114
-#, c-format
-msgid "cannot get attribute code: %s"
-msgstr ""
-
-#: src/readelf.c:5122
-#, c-format
-msgid "cannot get attribute form: %s"
-msgstr ""
-
-#: src/readelf.c:5135
-#, c-format
-msgid "cannot get attribute value: %s"
-msgstr ""
-
-#: src/readelf.c:5331
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [Offset]\n"
-msgstr ""
-
-#: src/readelf.c:5356
-#, c-format
-msgid ""
-" Compilation unit at offset %<PRIu64>:\n"
-" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: %"
-"<PRIu8>, Offset size: %<PRIu8>\n"
-msgstr ""
-
-#: src/readelf.c:5374
-#, c-format
-msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5385
-#, c-format
-msgid "cannot get DIE offset: %s"
-msgstr ""
-
-#: src/readelf.c:5393
-#, c-format
-msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5422
-#, c-format
-msgid "cannot get next DIE: %s\n"
-msgstr ""
-
-#: src/readelf.c:5429
-#, c-format
-msgid "cannot get next DIE: %s"
-msgstr ""
-
-#: src/readelf.c:5464
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr ""
-
-#: src/readelf.c:5477
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-
-#: src/readelf.c:5529
-#, c-format
-msgid ""
-"\n"
-" Length: %<PRIu64>\n"
-" DWARF version: %<PRIuFAST16>\n"
-" Prologue length: %<PRIu64>\n"
-" Minimum instruction length: %<PRIuFAST8>\n"
-" Initial value if '%s': %<PRIuFAST8>\n"
-" Line base: %<PRIdFAST8>\n"
-" Line range: %<PRIuFAST8>\n"
-" Opcode base: %<PRIuFAST8>\n"
-"\n"
-"Opcodes:\n"
-msgstr ""
-
-#: src/readelf.c:5548
-#, c-format
-msgid "invalid data at offset %tu in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:5563
-#, c-format
-msgid " [%*<PRIuFAST8>] %hhu argument\n"
-msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5571
-msgid ""
-"\n"
-"Directory table:"
-msgstr ""
-
-#: src/readelf.c:5587
-msgid ""
-"\n"
-"File name table:\n"
-" Entry Dir Time Size Name"
-msgstr ""
-
-#: src/readelf.c:5616
-msgid ""
-"\n"
-"Line number statements:"
-msgstr ""
-
-#: src/readelf.c:5677
-#, c-format
-msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
-msgstr ""
-
-#: src/readelf.c:5697
-#, c-format
-msgid " extended opcode %u: "
-msgstr ""
-
-#: src/readelf.c:5702
-msgid "end of sequence"
-msgstr ""
-
-#: src/readelf.c:5717
-#, c-format
-msgid "set address to %s\n"
-msgstr ""
-
-#: src/readelf.c:5738
-#, c-format
-msgid "define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
-msgstr ""
-
-#: src/readelf.c:5747
-msgid "unknown opcode"
-msgstr ""
-
-#: src/readelf.c:5759
-msgid " copy"
-msgstr ""
-
-#: src/readelf.c:5769
-#, c-format
-msgid "advance address by %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5780
-#, c-format
-msgid " advance line by constant %d to %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:5788
-#, c-format
-msgid " set file to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5798
-#, c-format
-msgid " set column to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5805
-#, c-format
-msgid " set '%s' to %<PRIuFAST8>\n"
-msgstr ""
-
-#: src/readelf.c:5811
-msgid " set basic block flag"
-msgstr ""
-
-#: src/readelf.c:5821
-#, c-format
-msgid "advance address by constant %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5837
-#, c-format
-msgid "advance address by fixed value %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5846
-msgid " set prologue end flag"
-msgstr ""
-
-#: src/readelf.c:5851
-msgid " set epilogue begin flag"
-msgstr ""
-
-#: src/readelf.c:5860
-#, c-format
-msgid " unknown opcode with %<PRIu8> parameter:"
-msgid_plural " unknown opcode with %<PRIu8> parameters:"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5892
-#, c-format
-msgid "cannot get .debug_loc content: %s"
-msgstr ""
-
-#: src/readelf.c:5947
-#, c-format
-msgid " [%6tx] %s..%s"
-msgstr ""
-
-#: src/readelf.c:5949
-#, c-format
-msgid " %s..%s"
-msgstr ""
-
-#: src/readelf.c:6002
-#, c-format
-msgid "cannot get macro information section data: %s"
-msgstr ""
-
-#: src/readelf.c:6081
-#, c-format
-msgid "%*s*** non-terminated string at end of section"
-msgstr ""
-
-#: src/readelf.c:6149
-#, c-format
-msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
-msgstr ""
-
-#: src/readelf.c:6188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" %*s String\n"
-msgstr ""
-
-#: src/readelf.c:6202
-#, c-format
-msgid " *** error while reading strings: %s\n"
-msgstr ""
-
-#: src/readelf.c:6222
-#, c-format
-msgid ""
-"\n"
-"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
-msgstr ""
-
-#: src/readelf.c:6324
-#, c-format
-msgid ""
-"\n"
-"Exception handling table section [%2zu] '.gcc_except_table':\n"
-msgstr ""
-
-#: src/readelf.c:6347
-#, c-format
-msgid " LPStart encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6359
-#, c-format
-msgid " TType encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6373
-#, c-format
-msgid " Call site encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6386
-msgid ""
-"\n"
-" Call site table:"
-msgstr ""
-
-#: src/readelf.c:6400
-#, c-format
-msgid ""
-" [%4u] Call site start: %#<PRIx64>\n"
-" Call site length: %<PRIu64>\n"
-" Landing pad: %#<PRIx64>\n"
-" Action: %u\n"
-msgstr ""
-
-#: src/readelf.c:6460
-#, c-format
-msgid "invalid TType encoding"
-msgstr ""
-
-#: src/readelf.c:6484
-#, c-format
-msgid "cannot get debug context descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:6620 src/readelf.c:7221
-#, c-format
-msgid "cannot convert core note data: %s"
-msgstr ""
-
-#: src/readelf.c:6961
-#, c-format
-msgid ""
-"\n"
-"%*s... <repeats %u more times> ..."
-msgstr ""
-
-#: src/readelf.c:7320
-msgid " Owner Data size Type\n"
-msgstr ""
-
-#: src/readelf.c:7338
-#, c-format
-msgid " %-13.*s %9<PRId32> %s\n"
-msgstr ""
-
-#: src/readelf.c:7372
-#, c-format
-msgid "cannot get content of note section: %s"
-msgstr ""
-
-#: src/readelf.c:7399
-#, c-format
-msgid ""
-"\n"
-"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7422
-#, c-format
-msgid ""
-"\n"
-"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7468
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no data to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7474 src/readelf.c:7497
-#, c-format
-msgid "cannot get data for section [%Zu] '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7478
-#, c-format
-msgid ""
-"\n"
-"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7491
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no strings to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7501
-#, c-format
-msgid ""
-"\n"
-"String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7549
-#, c-format
-msgid ""
-"\n"
-"section [%lu] does not exist"
-msgstr ""
-
-#: src/readelf.c:7576
-#, c-format
-msgid ""
-"\n"
-"section '%s' does not exist"
-msgstr ""
-
-#: src/readelf.c:7637
-#, c-format
-msgid "cannot get symbol index of archive '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7640
-#, c-format
-msgid ""
-"\n"
-"Archive '%s' has no symbol index\n"
-msgstr ""
-
-#: src/readelf.c:7644
-#, c-format
-msgid ""
-"\n"
-"Index of archive '%s' has %Zu entries:\n"
-msgstr ""
-
-#: src/readelf.c:7662
-#, c-format
-msgid "cannot extract member at offset %Zu in '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7667
-#, c-format
-msgid "Archive member '%s' contains:\n"
-msgstr ""
-
-#: src/size.c:68
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default "
-"is `bsd'"
-msgstr ""
-
-#: src/size.c:70
-msgid "Same as `--format=sysv'"
-msgstr ""
-
-#: src/size.c:71
-msgid "Same as `--format=bsd'"
-msgstr ""
-
-#: src/size.c:74
-msgid "Same as `--radix=10'"
-msgstr ""
-
-#: src/size.c:75
-msgid "Same as `--radix=8'"
-msgstr ""
-
-#: src/size.c:76
-msgid "Same as `--radix=16'"
-msgstr ""
-
-#: src/size.c:78
-msgid "Similar to `--format=sysv' output but in one line"
-msgstr ""
-
-#: src/size.c:82
-msgid "Print size and permission flags for loadable segments"
-msgstr ""
-
-#: src/size.c:83
-msgid "Display the total sizes (bsd only)"
-msgstr ""
-
-#: src/size.c:88
-msgid "List section sizes of FILEs (a.out by default)."
-msgstr ""
-
-#: src/size.c:269
-#, c-format
-msgid "Invalid format: %s"
-msgstr ""
-
-#: src/size.c:280
-#, c-format
-msgid "Invalid radix: %s"
-msgstr ""
-
-#: src/size.c:339
-#, c-format
-msgid "%s: file format not recognized"
-msgstr ""
-
-#: src/size.c:446 src/size.c:589
-#, c-format
-msgid " (ex %s)"
-msgstr ""
-
-#: src/size.c:614
-msgid "(TOTALS)\n"
-msgstr ""
-
-#: src/strings.c:70
-msgid "Output Selection:"
-msgstr ""
-
-#: src/strings.c:71
-msgid "Scan entire file, not only loaded sections"
-msgstr ""
-
-#: src/strings.c:73
-msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
-msgstr ""
-
-#: src/strings.c:74
-msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
-"{B,L} = 32-bit"
-msgstr ""
-
-#: src/strings.c:78
-msgid "Print name of the file before each string."
-msgstr ""
-
-#: src/strings.c:80
-msgid "Print location of the string in base 8, 10, or 16 respectively."
-msgstr ""
-
-#: src/strings.c:81
-msgid "Alias for --radix=o"
-msgstr ""
-
-#: src/strings.c:88
-msgid "Print the strings of printable characters in files."
-msgstr ""
-
-#: src/strings.c:268 src/strings.c:303
-#, c-format
-msgid "invalid value '%s' for %s parameter"
-msgstr ""
-
-#: src/strings.c:314
-#, c-format
-msgid "invalid minimum length of matched string size"
-msgstr ""
-
-#: src/strings.c:601
-#, c-format
-msgid "lseek64 failed"
-msgstr ""
-
-#: src/strings.c:616 src/strings.c:680
-#, c-format
-msgid "re-mmap failed"
-msgstr ""
-
-#: src/strings.c:653
-#, c-format
-msgid "mprotect failed"
-msgstr ""
-
-#: src/strip.c:74
-msgid "Place stripped output into FILE"
-msgstr ""
-
-#: src/strip.c:75
-msgid "Extract the removed sections into FILE"
-msgstr ""
-
-#: src/strip.c:76
-msgid "Embed name FILE instead of -f argument"
-msgstr ""
-
-#: src/strip.c:80
-msgid "Remove all debugging symbols"
-msgstr ""
-
-#: src/strip.c:84
-msgid "Copy modified/access timestamps to the output"
-msgstr ""
-
-#: src/strip.c:86
-msgid "Remove .comment section"
-msgstr ""
-
-#: src/strip.c:89
-msgid "Relax a few rules to handle slightly broken ELF files"
-msgstr ""
-
-#: src/strip.c:94
-msgid "Discard symbols from object files."
-msgstr ""
-
-#: src/strip.c:186
-#, c-format
-msgid "Only one input file allowed together with '-o' and '-f'"
-msgstr ""
-
-#: src/strip.c:222
-#, c-format
-msgid "-f option specified twice"
-msgstr ""
-
-#: src/strip.c:231
-#, c-format
-msgid "-F option specified twice"
-msgstr ""
-
-#: src/strip.c:240 src/unstrip.c:125
-#, c-format
-msgid "-o option specified twice"
-msgstr ""
-
-#: src/strip.c:260
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr ""
-
-#: src/strip.c:298 src/strip.c:322
-#, c-format
-msgid "cannot stat input file '%s'"
-msgstr ""
-
-#: src/strip.c:312
-#, c-format
-msgid "while opening '%s'"
-msgstr ""
-
-#: src/strip.c:350
-#, c-format
-msgid "%s: cannot use -o or -f when stripping archive"
-msgstr ""
-
-#: src/strip.c:448
-#, c-format
-msgid "cannot open EBL backend"
-msgstr ""
-
-#: src/strip.c:498 src/strip.c:522
-#, c-format
-msgid "cannot create new file '%s': %s"
-msgstr ""
-
-#: src/strip.c:582
-#, c-format
-msgid "illformed file '%s'"
-msgstr ""
-
-#: src/strip.c:869 src/strip.c:956
-#, c-format
-msgid "while generating output file: %s"
-msgstr ""
-
-#: src/strip.c:929 src/strip.c:1668
-#, c-format
-msgid "%s: error while creating ELF header: %s"
-msgstr ""
-
-#: src/strip.c:943
-#, c-format
-msgid "while preparing output for '%s'"
-msgstr ""
-
-#: src/strip.c:994 src/strip.c:1050
-#, c-format
-msgid "while create section header section: %s"
-msgstr ""
-
-#: src/strip.c:1000
-#, c-format
-msgid "cannot allocate section data: %s"
-msgstr ""
-
-#: src/strip.c:1059
-#, c-format
-msgid "while create section header string table: %s"
-msgstr ""
-
-#: src/strip.c:1593 src/strip.c:1690
-#, c-format
-msgid "while writing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1604
-#, c-format
-msgid "while creating '%s'"
-msgstr ""
-
-#: src/strip.c:1616
-#, c-format
-msgid "while computing checksum for debug information"
-msgstr ""
-
-#: src/strip.c:1676
-#, c-format
-msgid "%s: error while reading the file: %s"
-msgstr ""
-
-#: src/strip.c:1722 src/strip.c:1729
-#, c-format
-msgid "error while finishing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1752 src/strip.c:1809
-#, c-format
-msgid "cannot set access and modification date of '%s'"
-msgstr ""
-
-#: src/unstrip.c:78
-msgid "Match MODULE against file names, not module names"
-msgstr ""
-
-#: src/unstrip.c:79
-msgid "Silently skip unfindable files"
-msgstr ""
-
-#: src/unstrip.c:82
-msgid "Place output into FILE"
-msgstr ""
-
-#: src/unstrip.c:84
-msgid "Create multiple output files under DIRECTORY"
-msgstr ""
-
-#: src/unstrip.c:85
-msgid "Use module rather than file names"
-msgstr ""
-
-#: src/unstrip.c:87
-msgid "Create output for modules that have no separate debug information"
-msgstr ""
-
-#: src/unstrip.c:90
-msgid "Apply relocations to section contents in ET_REL files"
-msgstr ""
-
-#: src/unstrip.c:92
-msgid "Only list module and file names, build IDs"
-msgstr ""
-
-#: src/unstrip.c:134
-#, c-format
-msgid "-d option specified twice"
-msgstr ""
-
-#: src/unstrip.c:166
-#, c-format
-msgid "only one of -o or -d allowed"
-msgstr ""
-
-#: src/unstrip.c:175
-#, c-format
-msgid "-n cannot be used with explicit files or -o or -d"
-msgstr ""
-
-#: src/unstrip.c:190
-#, c-format
-msgid "output directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:199
-#, c-format
-msgid "exactly two file arguments are required"
-msgstr ""
-
-#: src/unstrip.c:205
-#, c-format
-msgid "-m, -a, -R, and -i options not allowed with explicit files"
-msgstr ""
-
-#: src/unstrip.c:218
-#, c-format
-msgid "-o or -d is required when using implicit files"
-msgstr ""
-
-#: src/unstrip.c:254
-#, c-format
-msgid "cannot create ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:259
-#, c-format
-msgid "cannot copy ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:264 src/unstrip.c:1817
-#, c-format
-msgid "cannot create program headers: %s"
-msgstr ""
-
-#: src/unstrip.c:270
-#, c-format
-msgid "cannot copy program header: %s"
-msgstr ""
-
-#: src/unstrip.c:280
-#, c-format
-msgid "cannot copy section header: %s"
-msgstr ""
-
-#: src/unstrip.c:283 src/unstrip.c:1505
-#, c-format
-msgid "cannot get section data: %s"
-msgstr ""
-
-#: src/unstrip.c:285 src/unstrip.c:1507
-#, c-format
-msgid "cannot copy section data: %s"
-msgstr ""
-
-#: src/unstrip.c:309
-#, c-format
-msgid "cannot create directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:349 src/unstrip.c:763 src/unstrip.c:1540
-#, c-format
-msgid "cannot get symbol table entry: %s"
-msgstr ""
-
-#: src/unstrip.c:365 src/unstrip.c:580 src/unstrip.c:601 src/unstrip.c:613
-#: src/unstrip.c:1561 src/unstrip.c:1691 src/unstrip.c:1715
-#, c-format
-msgid "cannot update symbol table: %s"
-msgstr ""
-
-#: src/unstrip.c:382 src/unstrip.c:432 src/unstrip.c:562 src/unstrip.c:1209
-#: src/unstrip.c:1525 src/unstrip.c:1720 src/unstrip.c:1791
-#, c-format
-msgid "cannot update section header: %s"
-msgstr ""
-
-#: src/unstrip.c:408 src/unstrip.c:419
-#, c-format
-msgid "cannot update relocation: %s"
-msgstr ""
-
-#: src/unstrip.c:507
-#, c-format
-msgid "cannot get symbol version: %s"
-msgstr ""
-
-#: src/unstrip.c:519
-#, c-format
-msgid "unexpected section type in [%Zu] with sh_link to symtab"
-msgstr ""
-
-#: src/unstrip.c:769
-#, c-format
-msgid "invalid string offset in symbol [%Zu]"
-msgstr ""
-
-#: src/unstrip.c:911 src/unstrip.c:1248
-#, c-format
-msgid "cannot read section [%Zu] name: %s"
-msgstr ""
-
-#: src/unstrip.c:952 src/unstrip.c:971 src/unstrip.c:1004
-#, c-format
-msgid "cannot read '.gnu.prelink_undo' section: %s"
-msgstr ""
-
-#: src/unstrip.c:992
-#, c-format
-msgid "invalid contents in '%s' section"
-msgstr ""
-
-#: src/unstrip.c:1047 src/unstrip.c:1370
-#, c-format
-msgid "cannot find matching section for [%Zu] '%s'"
-msgstr ""
-
-#: src/unstrip.c:1171 src/unstrip.c:1186 src/unstrip.c:1451
-#, c-format
-msgid "cannot add section name to string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1195
-#, c-format
-msgid "cannot update section header string table data: %s"
-msgstr ""
-
-#: src/unstrip.c:1223 src/unstrip.c:1227
-#, c-format
-msgid "cannot get section header string table section index: %s"
-msgstr ""
-
-#: src/unstrip.c:1231 src/unstrip.c:1235 src/unstrip.c:1466
-#, c-format
-msgid "cannot get section count: %s"
-msgstr ""
-
-#: src/unstrip.c:1293 src/unstrip.c:1385
-#, c-format
-msgid "cannot read section header string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1445
-#, c-format
-msgid "cannot add new section: %s"
-msgstr ""
-
-#: src/unstrip.c:1548
-#, c-format
-msgid "symbol [%Zu] has invalid section index"
-msgstr ""
-
-#: src/unstrip.c:1800
-#, c-format
-msgid "cannot get ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:1827
-#, c-format
-msgid "cannot update program header: %s"
-msgstr ""
-
-#: src/unstrip.c:1832 src/unstrip.c:1911
-#, c-format
-msgid "cannot write output file: %s"
-msgstr ""
-
-#: src/unstrip.c:1880
-#, c-format
-msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1883
-#, c-format
-msgid ""
-"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1902 src/unstrip.c:1942 src/unstrip.c:1954 src/unstrip.c:2034
-#, c-format
-msgid "cannot create ELF descriptor: %s"
-msgstr ""
-
-#: src/unstrip.c:1960
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr ""
-
-#: src/unstrip.c:1991
-#, c-format
-msgid "cannot find stripped file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:1995
-#, c-format
-msgid "cannot open stripped file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2010
-#, c-format
-msgid "cannot find debug file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2014
-#, c-format
-msgid "cannot open debug file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2027
-#, c-format
-msgid "module '%s' file '%s' is not stripped"
-msgstr ""
-
-#: src/unstrip.c:2058
-#, c-format
-msgid "cannot cache section addresses for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2191
-#, c-format
-msgid "no matching modules found"
-msgstr ""
-
-#: src/unstrip.c:2200
-#, c-format
-msgid "matched more than one module"
-msgstr ""
-
-#: src/unstrip.c:2247
-msgid ""
-"STRIPPED-FILE DEBUG-FILE\n"
-"[MODULE...]"
-msgstr ""
-
-#: src/unstrip.c:2248
-msgid ""
-"Combine stripped files with separate symbols and debug information.\n\nThe "
-"first form puts the result in DEBUG-FILE if -o was not given.\n"
-"\n"
-"MODULE arguments give file name patterns matching modules to process.\n"
-"With -f these match the file name of the main (stripped) file (slashes are "
-"never special), otherwise they match the simple module names. With no "
-"arguments, process all modules found.\n"
-"\n"
-"Multiple modules are written to files under OUTPUT-DIRECTORY, creating "
-"subdirectories as needed. With -m these files have simple module names, "
-"otherwise they have the name of the main file complete with directory "
-"underneath OUTPUT-DIRECTORY.\n"
-"\n"
-"With -n no files are written, but one line to standard output for each "
-"module:\n"
-"\tSTART+SIZE BUILDID FILE DEBUGFILE MODULENAME\n"
-"START and SIZE are hexadecimal giving the address bounds of the module. "
-"BUILDID is hexadecimal for the build ID bits, or - if no ID is known; the "
-"hexadecimal may be followed by @0xADDR giving the address where the ID "
-"resides if that is known. FILE is the file name found for the module, or - "
-"if none was found, or . if an ELF image is available but not from any named "
-"file. DEBUGFILE is the separate debuginfo file name, or - if no debuginfo "
-"was found, or . if FILE contains the debug information."
-msgstr ""
diff --git a/po/ja.po b/po/ja.po
index cd53f220..9fe007ce 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: 2019-11-26 09:48+0100\n"
+"POT-Creation-Date: 2021-02-05 21:10+0100\n"
"PO-Revision-Date: 2009-09-20 15:32+0900\n"
"Last-Translator: Hyu_gabaru Ryu_ichi <hyu_gabaru@yahoo.co.jp>\n"
"Language-Team: Japanese <jp@li.org>\n"
@@ -50,8 +50,8 @@ msgstr ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: lib/xmalloc.c:48 lib/xmalloc.c:61 lib/xmalloc.c:73 src/readelf.c:3453
+#: src/readelf.c:11501 src/unstrip.c:312 src/unstrip.c:2398 src/unstrip.c:2603
#, c-format
msgid "memory exhausted"
msgstr "メモリー消費済ã¿"
@@ -214,7 +214,7 @@ msgstr "ä¸å½“㪠DWARF ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
msgid "invalid directory index"
msgstr "ä¸å½“ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼ç´¢å¼•"
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:72
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73
msgid "address out of range"
msgstr "アドレスãŒç¯„囲外ã§ã™"
@@ -245,7 +245,7 @@ msgstr "ä¸å½“ãªè¡Œç´¢å¼•"
msgid "invalid address range index"
msgstr "ä¸å½“ãªã‚¢ãƒ‰ãƒ¬ã‚¹ç¯„囲索引"
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:73
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:74
msgid "no matching address range"
msgstr "アドレス範囲ã«å¯¾å¿œã—ã¾ã›ã‚“"
@@ -293,23 +293,23 @@ msgstr "ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰"
msgid ".debug_addr section missing"
msgstr ".debug_ranges セクションãŒã‚ã‚Šã¾ã›ã‚“"
-#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2540
+#: libdwfl/argp-std.c:47 src/stack.c:643 src/unstrip.c:2544
msgid "Input selection options:"
msgstr "é¸æŠžã‚ªãƒ—ションを入力ã—ã¦ãã ã•ã„:"
-#: libdwfl/argp-std.c:51
+#: libdwfl/argp-std.c:48
msgid "Find addresses in FILE"
msgstr "ãµãã„ã‚‹ 中ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探ã™"
-#: libdwfl/argp-std.c:53
+#: libdwfl/argp-std.c:50
msgid "Find addresses from signatures found in COREFILE"
msgstr "COREFILE 中ã§è¦‹ã¤ã‹ã£ãŸç½²åã‹ã‚‰ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探ã™"
-#: libdwfl/argp-std.c:55
+#: libdwfl/argp-std.c:52
msgid "Find addresses in files mapped into process PID"
msgstr "プロセス PID ã«å¯¾å¿œã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ä¸­ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探ã™"
-#: libdwfl/argp-std.c:57
+#: libdwfl/argp-std.c:54
msgid ""
"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
"format"
@@ -317,46 +317,46 @@ msgstr ""
"Linux ã® /proc/PID/maps å½¢å¼ã® ãµãã„ã‚‹ ã‹ã‚‰èª­ã¿è¾¼ã‚“ã ã‚‚ã®ã«å¯¾å¿œã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«"
"ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探ã™"
-#: libdwfl/argp-std.c:59
+#: libdwfl/argp-std.c:56
msgid "Find addresses in the running kernel"
msgstr "実行中ã®ã‚«ãƒ¼ãƒãƒ«ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探ã™"
-#: libdwfl/argp-std.c:61
+#: libdwfl/argp-std.c:58
msgid "Kernel with all modules"
msgstr "å…¨ã¦ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ä»˜ãã®ã‚«ãƒ¼ãƒãƒ«"
-#: libdwfl/argp-std.c:63 src/stack.c:645
+#: libdwfl/argp-std.c:60 src/stack.c:650
msgid "Search path for separate debuginfo files"
msgstr "分離ã—㟠debuginfo ファイルã¹ãパスを探ã™"
-#: libdwfl/argp-std.c:164
+#: libdwfl/argp-std.c:161
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "-e ã‹ã€-pã€-kã€-Kã€--core ã®ã²ã¨ã¤ã ã‘ãŒèªã‚られã¾ã™"
-#: libdwfl/argp-std.c:237
+#: libdwfl/argp-std.c:234
msgid "cannot load kernel symbols"
msgstr "カーãƒãƒ«ã‚·ãƒ³ãƒœãƒ«ã‚’ロードã§ãã¾ã›ã‚“"
#. Non-fatal to have no modules since we do have the kernel.
-#: libdwfl/argp-std.c:241
+#: libdwfl/argp-std.c:238
msgid "cannot find kernel modules"
msgstr "カーãƒãƒ«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’見ã¤ã‘られã¾ã›ã‚“"
-#: libdwfl/argp-std.c:258
+#: libdwfl/argp-std.c:255
msgid "cannot find kernel or modules"
msgstr "カーãƒãƒ«ã‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’見ã¤ã‘られã¾ã›ã‚“"
-#: libdwfl/argp-std.c:297
+#: libdwfl/argp-std.c:294
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "ELF コアファイルを読ã‚ã¾ã›ã‚“: %s"
-#: libdwfl/argp-std.c:320
+#: libdwfl/argp-std.c:317
#, fuzzy
msgid "Not enough memory"
msgstr "メモリーä¸è¶³"
-#: libdwfl/argp-std.c:330
+#: libdwfl/argp-std.c:327
msgid "No modules recognized in core file"
msgstr "コアファイルã®ä¸­ã«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’èªè­˜ã§ãã¾ã›ã‚“"
@@ -389,136 +389,140 @@ msgid "LZMA decompression failed"
msgstr ""
#: libdwfl/libdwflP.h:61
-msgid "no support library found for machine"
+msgid "zstd decompression failed"
msgstr ""
#: libdwfl/libdwflP.h:62
-msgid "Callbacks missing for ET_REL file"
+msgid "no support library found for machine"
msgstr ""
#: libdwfl/libdwflP.h:63
-msgid "Unsupported relocation type"
+msgid "Callbacks missing for ET_REL file"
msgstr ""
#: libdwfl/libdwflP.h:64
+msgid "Unsupported relocation type"
+msgstr ""
+
+#: libdwfl/libdwflP.h:65
msgid "r_offset is bogus"
msgstr ""
-#: libdwfl/libdwflP.h:65 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:66 libelf/elf_error.c:115 libelf/elf_error.c:175
msgid "offset out of range"
msgstr "オフセットãŒç¯„囲を越ãˆã¦ã„ã‚‹"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:67
#, fuzzy
msgid "relocation refers to undefined symbol"
msgstr "定義ã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«ã®å°åˆ·ã‚µã‚¤ã‚º"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:68
msgid "Callback returned failure"
msgstr ""
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:69
#, fuzzy
msgid "No DWARF information found"
msgstr "DWARF 情報ãŒã‚ã‚Šã¾ã›ã‚“"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
msgid "No symbol table found"
msgstr ""
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
#, fuzzy
msgid "No ELF program headers"
msgstr "プログラムヘッダーを得られã¾ã›ã‚“: %s"
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
msgid "address range overlaps an existing module"
msgstr ""
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
msgid "image truncated"
msgstr ""
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:76
#, fuzzy
msgid "ELF file opened"
msgstr "ファイルã®ã‚ªãƒ¼ãƒ—ンを追跡ã—ã¾ã™ã€‚"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:77
#, fuzzy
msgid "not a valid ELF file"
msgstr "ä¸å½“㪠ELF ファイル"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
#, fuzzy
msgid "cannot handle DWARF type description"
msgstr "Elf 記述å­ã‚’生æˆã§ãã¾ã›ã‚“: %s"
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
msgid "ELF file does not match build ID"
msgstr ""
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
#, fuzzy
msgid "corrupt .gnu.prelink_undo section data"
msgstr "ラインデータセクションデータを得られã¾ã›ã‚“: %s"
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
msgid "Internal error due to ebl"
msgstr ""
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
msgid "Missing data in core file"
msgstr ""
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
#, fuzzy
msgid "Invalid register"
msgstr "ä¸å½“ãªãƒ‘ラメーター"
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
msgid "Error reading process memory"
msgstr ""
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
msgid "Couldn't find architecture of any ELF"
msgstr ""
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
msgid "Error parsing /proc filesystem"
msgstr ""
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
#, fuzzy
msgid "Invalid DWARF"
msgstr "ä¸å½“㪠DWARF"
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
msgid "Unsupported DWARF"
msgstr ""
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
msgid "Unable to find more threads"
msgstr ""
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
msgid "Dwfl already has attached state"
msgstr ""
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
msgid "Dwfl has no attached state"
msgstr ""
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
msgid "Unwinding not supported for this architecture"
msgstr ""
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
#, fuzzy
msgid "Invalid argument"
msgstr "ä¸å½“ãªãƒ‘ラメーター"
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
#, fuzzy
msgid "Not an ET_CORE ELF file"
msgstr "ä¸å½“㪠ELF ファイル"
@@ -530,7 +534,7 @@ msgstr "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒã‚ã‚Šã¾ã›ã‚“"
#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
msgid "<unknown>"
msgstr "<ä¸æ˜Ž>"
@@ -590,7 +594,7 @@ msgstr " ビルト ID: "
msgid " Linker version: %.*s\n"
msgstr ""
-#: libebl/eblobjnote.c:571
+#: libebl/eblobjnote.c:638
#, c-format
msgid " OS: %s, ABI: "
msgstr " OS: %sã€ABI: "
@@ -624,7 +628,7 @@ msgstr "ソース演算å­ã®å¤§ãã•ãŒç„¡åŠ¹"
msgid "invalid size of destination operand"
msgstr "宛先演算å­ã®å¤§ãã•ãŒç„¡åŠ¹"
-#: libelf/elf_error.c:87 src/readelf.c:6166
+#: libelf/elf_error.c:87 src/readelf.c:6209
#, c-format
msgid "invalid encoding"
msgstr "無効ãªã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰"
@@ -711,8 +715,8 @@ msgstr "データ/scnãŒä¸æ•´åˆã§ã™"
msgid "invalid section header"
msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼"
-#: libelf/elf_error.c:191 src/readelf.c:9914 src/readelf.c:10514
-#: src/readelf.c:10615 src/readelf.c:10797
+#: libelf/elf_error.c:191 src/readelf.c:10012 src/readelf.c:10612
+#: src/readelf.c:10713 src/readelf.c:10895
#, c-format
msgid "invalid data"
msgstr "ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
@@ -872,12 +876,12 @@ msgstr ""
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr ""
-#: src/addr2line.c:632
+#: src/addr2line.c:652
#, c-format
msgid "cannot find symbol '%s'"
msgstr ""
-#: src/addr2line.c:637
+#: src/addr2line.c:657
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr ""
@@ -1046,12 +1050,12 @@ msgstr "アーカイブ㫠stat ã§ãã¾ã›ã‚“: '%s'"
msgid "no entry %s in archive\n"
msgstr "アーカイブã«é …ç›® %s ãŒã‚ã‚Šã¾ã›ã‚“\n"
-#: src/ar.c:472 src/ar.c:923 src/ar.c:1127
+#: src/ar.c:472 src/ar.c:927 src/ar.c:1134
#, c-format
msgid "cannot create hash table"
msgstr "ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルを生æˆã§ãã¾ã›ã‚“"
-#: src/ar.c:479 src/ar.c:930 src/ar.c:1136
+#: src/ar.c:479 src/ar.c:934 src/ar.c:1143
#, c-format
msgid "cannot insert into hash table"
msgstr "ãƒãƒƒã‚·ãƒ¥ã«æŒ¿å…¥ã§ãã¾ã›ã‚“"
@@ -1091,67 +1095,67 @@ msgstr "%s ã®æ›´æ–°æ™‚間を変更ã§ãã¾ã›ã‚“"
msgid "cannot rename temporary file to %.*s"
msgstr "一時ファイルを %.*s ã«åå‰å¤‰æ›´ã§ãã¾ã›ã‚“"
-#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222
+#: src/ar.c:764 src/ar.c:1019 src/ar.c:1423 src/ranlib.c:222
#, c-format
msgid "cannot create new file"
msgstr "æ–°ã—ã„ファイルを生æˆã§ãã¾ã›ã‚“"
-#: src/ar.c:1218
+#: src/ar.c:1225
#, c-format
msgid "position member %s not found"
msgstr "ä½ç½®ãƒ¡ãƒ³ãƒãƒ¼ %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: src/ar.c:1228
+#: src/ar.c:1235
#, c-format
msgid "%s: no entry %s in archive!\n"
msgstr "%s: é …ç›® %s ãŒã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã«ã‚ã‚Šã¾ã›ã‚“!\n"
-#: src/ar.c:1257 src/objdump.c:241
+#: src/ar.c:1264 src/objdump.c:241
#, c-format
msgid "cannot open %s"
msgstr "%s ã‚’é–‹ã‘ã¾ã›ã‚“"
-#: src/ar.c:1262
+#: src/ar.c:1269
#, c-format
msgid "cannot stat %s"
msgstr "%s ã‚’ stat ã§ãã¾ã›ã‚“"
-#: src/ar.c:1268
+#: src/ar.c:1275
#, c-format
msgid "%s is no regular file"
msgstr "%s ã¯ä¸€èˆ¬ãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: src/ar.c:1281
+#: src/ar.c:1288
#, c-format
msgid "cannot get ELF descriptor for %s: %s\n"
msgstr "%s ã® ELF 記述å­ã‚’得られã¾ã›ã‚“: %s\n"
-#: src/ar.c:1301
+#: src/ar.c:1308
#, c-format
msgid "cannot read %s: %s"
msgstr "%s を読ã¿ã¾ã›ã‚“: %s"
-#: src/ar.c:1476
+#: src/ar.c:1483
#, fuzzy, c-format
msgid "cannot represent ar_date"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/ar.c:1482
+#: src/ar.c:1489
#, fuzzy, c-format
msgid "cannot represent ar_uid"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/ar.c:1488
+#: src/ar.c:1495
#, fuzzy, c-format
msgid "cannot represent ar_gid"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/ar.c:1494
+#: src/ar.c:1501
#, fuzzy, c-format
msgid "cannot represent ar_mode"
msgstr "セクションを得られã¾ã›ã‚“: %s"
-#: src/ar.c:1500
+#: src/ar.c:1507
#, fuzzy, c-format
msgid "cannot represent ar_size"
msgstr "%s ã‚’é–‹ã‘ã¾ã›ã‚“"
@@ -1164,7 +1168,7 @@ msgstr ""
msgid "Use actual uid, gid, and date in archive members."
msgstr ""
-#: src/arlib-argp.c:65
+#: src/arlib-argp.c:63
#, c-format
msgid "%s (default)"
msgstr ""
@@ -1373,8 +1377,8 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr ""
#: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
-#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2189 src/unstrip.c:2218
+#: src/size.c:272 src/strings.c:185 src/strip.c:1030 src/strip.c:1067
+#: src/unstrip.c:2194 src/unstrip.c:2223
#, c-format
msgid "cannot open '%s'"
msgstr "'%s' ã‚’é–‹ã‘ã¾ã›ã‚“"
@@ -1404,7 +1408,7 @@ msgstr ""
msgid "cannot get relocation: %s"
msgstr ""
-#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:117
#, c-format
msgid "-o option specified twice"
msgstr "-o オプション㌠2 回指定ã•ã‚Œã¦ã„ã¾ã™"
@@ -1519,7 +1523,7 @@ msgstr "Elf 記述å­ã‚’é–‰ã˜ã¦ã„る時ã«ã‚¨ãƒ©ãƒ¼: %s\n"
msgid "No errors"
msgstr "エラーã¯ã‚ã‚Šã¾ã›ã‚“"
-#: src/elflint.c:219 src/readelf.c:575
+#: src/elflint.c:219 src/readelf.c:577
msgid "Missing file name.\n"
msgstr "ファイルåãŒã‚ã‚Šã¾ã›ã‚“。\n"
@@ -1677,14 +1681,14 @@ msgstr ""
"セクション [%2d] '%s': セクショングループ [%2zu] '%s' ãŒã‚°ãƒ«ãƒ¼ãƒ—メンãƒãƒ¼ã‚’継"
"続ã—ã¦ã„ã¾ã›ã‚“\n"
-#: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651
-#: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095
-#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431
+#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
+#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
+#: src/elflint.c:3254 src/elflint.c:3444 src/elflint.c:4456
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:623 src/elflint.c:1658
+#: src/elflint.c:623 src/elflint.c:1662
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1707,178 +1711,188 @@ msgstr ""
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr "セクション [%2u] '%s': 項目サイズ㌠ElfXX_Sym ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n"
-#: src/elflint.c:667
+#: src/elflint.c:662
+#, c-format
+msgid ""
+"section [%2u] '%s': number of local entries in 'st_info' larger than table "
+"size\n"
+msgstr ""
+
+#: src/elflint.c:671
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "セクション [%2d] '%s': シンボル %d を得られã¾ã›ã‚“: %s\n"
-#: src/elflint.c:672 src/elflint.c:675 src/elflint.c:678 src/elflint.c:681
-#: src/elflint.c:684 src/elflint.c:687
+#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
+#: src/elflint.c:688 src/elflint.c:691
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "セクション [%2d] '%s': 0番目ã®é …ç›®ã«ã‚ã‚‹ '%s' ゼロã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
-#: src/elflint.c:690
+#: src/elflint.c:694
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "セクション [%2d] '%s': 0番目ã®é …目用㮠XINDEX ãŒã‚¼ãƒ­ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
-#: src/elflint.c:700
+#: src/elflint.c:704
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "セクション [%2d] '%s': シンボル %zu を得られã¾ã›ã‚“: %s\n"
-#: src/elflint.c:709
+#: src/elflint.c:713
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "セクション [%2d] '%s': シンボル %zu: ä¸å½“ãªåå‰ã®å€¤\n"
-#: src/elflint.c:724
-#, c-format
+#: src/elflint.c:728
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
+"section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
"section index section\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: 大ãã™ãŽã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã ãŒã€æ‹¡"
"張セクションインデックスセクションãŒã‚ã‚Šã¾ã›ã‚“\n"
-#: src/elflint.c:730
-#, c-format
+#: src/elflint.c:734
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
+"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
+"in st_shndx (%<PRIu32>)\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: st_shndx (%<PRIu32>) ã«é©åˆã™ã‚‹ã‚¤ãƒ³ãƒ‡ãƒƒ"
"クス用ã«ä½¿ã‚れる XINDEX\n"
#. || sym->st_shndx > SHN_HIRESERVE always false
-#: src/elflint.c:742
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
+#: src/elflint.c:746
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
msgstr "セクション [%2d] '%s': シンボル %zu: ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹\n"
-#: src/elflint.c:750
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
+#: src/elflint.c:754
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
msgstr "セクション [%2d] '%s': シンボル %zu: ä¸æ˜Žãªã‚¿ã‚¤ãƒ—\n"
-#: src/elflint.c:756
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
+#: src/elflint.c:760
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
msgstr "セクション [%2d] '%s': シンボル %zu: ä¸æ˜Žãªã‚·ãƒ³ãƒœãƒ«ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°\n"
-#: src/elflint.c:761
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
+#: src/elflint.c:765
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: オブジェクトタイプã¨ç•°ãªã‚‹å›ºæœ‰ã®ã‚·ãƒ³ãƒœ"
"ル\n"
-#: src/elflint.c:769
-#, c-format
+#: src/elflint.c:773
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
+"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
+"files\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: COMMON ã¯ãƒªãƒ­ã‚±ãƒ¼ã‚¿ãƒ–ルファイル内ã®ã¿ã§"
"許ã•ã‚Œã¾ã™\n"
-#: src/elflint.c:773
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
+#: src/elflint.c:777
+#, fuzzy, c-format
+msgid ""
+"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: ローカル㪠COMMON シンボルã¯æ„味ãŒã‚ã‚Šã¾"
"ã›ã‚“\n"
-#: src/elflint.c:777
-#, c-format
+#: src/elflint.c:781
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
+"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: COMMON セクションã®æ©Ÿèƒ½ã¯æ„味ãŒã‚ã‚Šã¾ã›"
"ã‚“\n"
-#: src/elflint.c:828
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
+#: src/elflint.c:832
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
msgstr "セクション [%2d] '%s': シンボル %zu: st_value 境界外\n"
-#: src/elflint.c:834 src/elflint.c:859 src/elflint.c:908
-#, c-format
+#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
+"section [%2d] '%s'\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu ã¯å‚ç…§ã•ã‚Œã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%2d] '%s' ã¨ã¯å®Œ"
"å…¨ã«ä¸€è‡´ã—ã¾ã›ã‚“\n"
-#: src/elflint.c:843
-#, c-format
+#: src/elflint.c:847
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
+"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
+"have SHF_TLS flag set\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: å‚ç…§ã•ã‚Œã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%2d] '%s' 㯠"
"SHF_TLS フラグãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
-#: src/elflint.c:853 src/elflint.c:901
-#, c-format
+#: src/elflint.c:857 src/elflint.c:905
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
+"section [%2d] '%s'\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: st_value å‚ç…§ã•ã‚Œã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%2d] "
"'%s' ã®å¢ƒç•Œå¤–\n"
-#: src/elflint.c:880
-#, c-format
+#: src/elflint.c:884
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
+"entry\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: TLS プログラムヘッダー項目ãŒãªã„ TLS ã‚·"
"ンボル\n"
-#: src/elflint.c:886
+#: src/elflint.c:890
#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but couldn't get TLS program "
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
"header entry\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: TLS プログラムヘッダー項目ãŒãªã„ TLS ã‚·"
"ンボル\n"
-#: src/elflint.c:894
-#, c-format
+#: src/elflint.c:898
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
-"'%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
+"[%2d] '%s'\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: å‚ç…§ã•ã‚Œã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%2d] '%s' ã®"
"st_value ä¸è¶³\n"
-#: src/elflint.c:921
-#, c-format
+#: src/elflint.c:925
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
+"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
"sh_info\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: sh_info ã«è¨˜è¿°ã•ã‚ŒãŸç¯„囲外ã®ãƒ­ãƒ¼ã‚«ãƒ«ã‚·ãƒ³"
"ボル\n"
-#: src/elflint.c:928
-#, c-format
+#: src/elflint.c:932
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
+"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
+"described in sh_info\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: sh_info ã«è¨˜è¿°ã•ã‚ŒãŸç¯„囲外ã®éžãƒ­ãƒ¼ã‚«ãƒ«ã‚·"
"ンボル\n"
-#: src/elflint.c:935
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
+#: src/elflint.c:939
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
msgstr "セクション [%2d] '%s': シンボル %zu: éžãƒ­ãƒ¼ã‚«ãƒ«ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚·ãƒ³ãƒœãƒ«\n"
-#: src/elflint.c:985
+#: src/elflint.c:989
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1887,7 +1901,7 @@ msgstr ""
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルãŒé–“é•ã£ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ "
"[%2d] ã‚’å‚ç…§ã—ã¦ã„ã¾ã™\n"
-#: src/elflint.c:992
+#: src/elflint.c:996
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1899,7 +1913,7 @@ msgstr ""
#. This test is more strict than the psABIs which
#. usually allow the symbol to be in the middle of
#. the .got section, allowing negative offsets.
-#: src/elflint.c:1008
+#: src/elflint.c:1012
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1908,7 +1922,7 @@ msgstr ""
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボル値 %#<PRIx64> 㯠%s ã®ã‚»"
"クションアドレス %#<PRIx64> ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n"
-#: src/elflint.c:1015
+#: src/elflint.c:1019
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1917,7 +1931,7 @@ msgstr ""
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルサイズ %<PRIu64> 㯠%s "
"ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚µã‚¤ã‚º %<PRIu64> ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n"
-#: src/elflint.c:1023
+#: src/elflint.c:1027
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1926,7 +1940,7 @@ msgstr ""
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルã¯ã‚ã‚Šã¾ã™ãŒã€.got セク"
"ションãŒã‚ã‚Šã¾ã›ã‚“\n"
-#: src/elflint.c:1039
+#: src/elflint.c:1043
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1935,7 +1949,7 @@ msgstr ""
"セクション [%2d] '%s': _DYNAMIC_ シンボル値 %#<PRIx64> ã¯å‹•çš„セグメントアドレ"
"ス %#<PRIx64> ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n"
-#: src/elflint.c:1046
+#: src/elflint.c:1050
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1944,38 +1958,38 @@ msgstr ""
"セクション [%2d] '%s': _DYNAMIC シンボルサイズ %<PRIu64> ã¯å‹•çš„セグメントサイ"
"ズ %<PRIu64> ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n"
-#: src/elflint.c:1059
-#, c-format
+#: src/elflint.c:1063
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
+"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
"default visibility\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: çœç•¥ä»¥å¤–ã®å¯è¦–性をæŒã£ãŸå‹•çš„シンボルテー"
"ブル中ã®ã‚·ãƒ³ãƒœãƒ«\n"
-#: src/elflint.c:1063
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
+#: src/elflint.c:1067
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: st_other 中ã«è¨­å®šã•ã‚ŒãŸä¸æ˜Žãªãƒ“ット\n"
-#: src/elflint.c:1101
+#: src/elflint.c:1105
#, fuzzy, c-format
msgid "section [%2d] '%s': cannot get section data.\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:1117
+#: src/elflint.c:1121
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "セクション [%2d] '%s': ã“ã® RELA セクション用ã«ä½¿ã‚れる DT_RELCOUNT\n"
-#: src/elflint.c:1128 src/elflint.c:1181
+#: src/elflint.c:1132 src/elflint.c:1185
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
"セクション [%2d] '%s': ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ç”¨ã«ã¯é«˜ã™ãŽã‚‹ DT_RELCOUNT 値 %d\n"
-#: src/elflint.c:1153 src/elflint.c:1206
+#: src/elflint.c:1157 src/elflint.c:1210
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1984,7 +1998,7 @@ msgstr ""
"セクション [%2d] '%s': UT_RELOCOUNT ã§æŒ‡å®šã•ã‚ŒãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ %d 後ã®ç›¸å¯¾ãƒªãƒ­"
"ケーション\n"
-#: src/elflint.c:1159 src/elflint.c:1212
+#: src/elflint.c:1163 src/elflint.c:1216
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -1993,52 +2007,52 @@ msgstr ""
"セクション [%2d] '%s': インデックス %zu ã§ã®éžç›¸å¯¾ãƒªãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³; %d 相対リ"
"ロケーションã§æŒ‡å®šã•ã‚ŒãŸ DT_RELCOUNT\n"
-#: src/elflint.c:1171
+#: src/elflint.c:1175
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "セクション [%2d] '%s': ã“ã® REL セクション用ã«ä½¿ã‚れる DT_RELACOUNT\n"
-#: src/elflint.c:1254
+#: src/elflint.c:1258
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "セクション [%2d] '%s': ä¸å½“ãªå®›å…ˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹\n"
-#: src/elflint.c:1266
+#: src/elflint.c:1270
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "セクション [%2d] '%s': ä¸å½“ãªå®›å…ˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚¿ã‚¤ãƒ—\n"
-#: src/elflint.c:1274
+#: src/elflint.c:1278
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "セクション [%2d] '%s': sh_info ã¯ã‚¼ãƒ­ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1286
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': no relocations for merge-able string sections possible\n"
msgstr ""
"セクション [%2d] '%s': マージã§ãるセクションã®ãƒªãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯ä¸å¯èƒ½ã§ã™\n"
-#: src/elflint.c:1290
+#: src/elflint.c:1294
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
"セクション [%2d] '%s': セクション項目サイズ㌠ElfXX_Rela ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n"
-#: src/elflint.c:1350
+#: src/elflint.c:1354
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
"テキストリロケーションフラグãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã™ãŒã€èª­è¾¼ã¿å°‚用セグメントãŒã‚ã‚Š"
"ã¾ã›ã‚“\n"
-#: src/elflint.c:1377
+#: src/elflint.c:1381
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "セクション [%2d] '%s': リロケーション %zu: ä¸å½“ãªã‚¿ã‚¤ãƒ—\n"
-#: src/elflint.c:1385
+#: src/elflint.c:1389
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -2047,13 +2061,13 @@ msgstr ""
"セクション [%2d] '%s': リロケーション %zu: ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ç”¨ã®ãƒªãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚¿ã‚¤"
"プã¯ä¸å½“ã§ã™\n"
-#: src/elflint.c:1393
+#: src/elflint.c:1397
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr ""
"セクション [%2d] '%s': リロケーション %zu: ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1415
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -2062,12 +2076,12 @@ msgstr ""
"セクション [%2d] '%s': リロケーション %zu: シンボル '_GLOBAL_OFFSET_TABLE_' "
"ã®ã¿ãŒ %s ã¨ä¸€ç·’ã«ä½¿ç”¨ã§ãã¾ã™\n"
-#: src/elflint.c:1428
+#: src/elflint.c:1432
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "セクション [%2d] '%s': リロケーション %zu: オフセット境界外\n"
-#: src/elflint.c:1443
+#: src/elflint.c:1447
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -2076,7 +2090,7 @@ msgstr ""
"セクション [%2d] '%s': リロケーション %zu: タイプ %s ã®ã‚·ãƒ³ãƒœãƒ«ã«å¯¾ã™ã‚‹ã‚³ãƒ”ー"
"リロケーション\n"
-#: src/elflint.c:1464
+#: src/elflint.c:1468
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -2085,24 +2099,24 @@ msgstr ""
"セクション [%2d] '%s': リロケーション %zu: 読込ã¿å°‚用セクションãŒå¤‰æ›´ã•ã‚Œã¾ã—"
"ãŸãŒã€ãƒ†ã‚­ã‚¹ãƒˆãƒªãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ãƒ•ãƒ©ã‚°ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
-#: src/elflint.c:1479
+#: src/elflint.c:1483
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
"セクション [%2d] '%s': リロケーションãŒãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ã¨ãƒ­ãƒ¼ãƒ‰ã•ã‚Œãªã‹ã£ãŸ"
"データã«å¯¾ã—ã¦ã§ã™\n"
-#: src/elflint.c:1519 src/elflint.c:1570
+#: src/elflint.c:1523 src/elflint.c:1574
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr ""
-#: src/elflint.c:1646
+#: src/elflint.c:1650
#, c-format
msgid "more than one dynamic section present\n"
msgstr ""
-#: src/elflint.c:1664
+#: src/elflint.c:1668
#, fuzzy, c-format
msgid ""
"section [%2d]: referenced as string table for section [%2d] '%s' but section "
@@ -2111,427 +2125,427 @@ msgstr ""
"セクション [%2d] '%s': セクション [%2d] '%s' 用ã®æ–‡å­—列テーブルã¨ã—ã¦å‚ç…§ã•ã‚Œ"
"ã¦ã„ã¾ã™ãŒã€ã‚¿ã‚¤ãƒ—㌠SHT_STRTAB ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
-#: src/elflint.c:1672
+#: src/elflint.c:1676
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
-#: src/elflint.c:1677 src/elflint.c:1966
+#: src/elflint.c:1681 src/elflint.c:1970
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr ""
-#: src/elflint.c:1687
+#: src/elflint.c:1691
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
-#: src/elflint.c:1695
+#: src/elflint.c:1699
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr ""
-#: src/elflint.c:1702
+#: src/elflint.c:1706
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr ""
-#: src/elflint.c:1713
+#: src/elflint.c:1717
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr ""
-#: src/elflint.c:1723
+#: src/elflint.c:1727
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr ""
-#: src/elflint.c:1741
+#: src/elflint.c:1745
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
msgstr ""
-#: src/elflint.c:1754
+#: src/elflint.c:1758
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"[%2d] '%s' referenced by sh_link\n"
msgstr ""
-#: src/elflint.c:1797
+#: src/elflint.c:1801
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
-#: src/elflint.c:1812
+#: src/elflint.c:1816
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:1832 src/elflint.c:1860
+#: src/elflint.c:1836 src/elflint.c:1864
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr ""
-#: src/elflint.c:1844
+#: src/elflint.c:1848
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr ""
-#: src/elflint.c:1853
+#: src/elflint.c:1857
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr ""
-#: src/elflint.c:1868 src/elflint.c:1875
+#: src/elflint.c:1872 src/elflint.c:1879
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr ""
-#: src/elflint.c:1885 src/elflint.c:1889
+#: src/elflint.c:1889 src/elflint.c:1893
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
-#: src/elflint.c:1895
+#: src/elflint.c:1899
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
-#: src/elflint.c:1906 src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918
+#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
-#: src/elflint.c:1930
+#: src/elflint.c:1934
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
msgstr ""
-#: src/elflint.c:1940
+#: src/elflint.c:1944
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
-#: src/elflint.c:1944
+#: src/elflint.c:1948
#, fuzzy, c-format
msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
msgstr "セクション [%2d] '%s': ä¸å½“ãªå®›å…ˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹\n"
-#: src/elflint.c:1949
+#: src/elflint.c:1953
#, c-format
msgid "cannot get data for symbol section\n"
msgstr ""
-#: src/elflint.c:1952
+#: src/elflint.c:1956
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr ""
-#: src/elflint.c:1961
+#: src/elflint.c:1965
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
-#: src/elflint.c:1976
+#: src/elflint.c:1980
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"same symbol table\n"
msgstr ""
-#: src/elflint.c:1994
+#: src/elflint.c:1998
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr ""
-#: src/elflint.c:2006
+#: src/elflint.c:2010
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr ""
-#: src/elflint.c:2011
+#: src/elflint.c:2015
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
-#: src/elflint.c:2028 src/elflint.c:2085
+#: src/elflint.c:2032 src/elflint.c:2089
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
msgstr ""
-#: src/elflint.c:2042 src/elflint.c:2099
+#: src/elflint.c:2046 src/elflint.c:2103
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr ""
-#: src/elflint.c:2056 src/elflint.c:2113
+#: src/elflint.c:2060 src/elflint.c:2117
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2066
+#: src/elflint.c:2070
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2123
+#: src/elflint.c:2127
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
-#: src/elflint.c:2136
+#: src/elflint.c:2140
#, fuzzy, c-format
msgid "section [%2d] '%s': not enough data\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:2148
+#: src/elflint.c:2152
#, fuzzy, c-format
msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
msgstr "セクション [%2d] '%s': 0番目ã®é …ç›®ã«ã‚ã‚‹ '%s' ゼロã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
-#: src/elflint.c:2164
+#: src/elflint.c:2168
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
"least %ld)\n"
msgstr ""
-#: src/elflint.c:2173
+#: src/elflint.c:2177
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
-#: src/elflint.c:2207
+#: src/elflint.c:2211
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
msgstr ""
-#: src/elflint.c:2228
+#: src/elflint.c:2232
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"undefined\n"
msgstr ""
-#: src/elflint.c:2241
+#: src/elflint.c:2245
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
msgstr ""
-#: src/elflint.c:2250
+#: src/elflint.c:2254
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:2280
+#: src/elflint.c:2284
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2285
+#: src/elflint.c:2289
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2291
+#: src/elflint.c:2295
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
-#: src/elflint.c:2304
+#: src/elflint.c:2308
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
-#: src/elflint.c:2322
+#: src/elflint.c:2326
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2326
+#: src/elflint.c:2330
#, fuzzy, c-format
msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
msgstr "セクション [%2d] '%s': ä¸å½“ãªå®›å…ˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹\n"
-#: src/elflint.c:2336
+#: src/elflint.c:2340
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr ""
-#: src/elflint.c:2341
+#: src/elflint.c:2345
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr ""
-#: src/elflint.c:2346
+#: src/elflint.c:2350
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"entries\n"
msgstr ""
-#: src/elflint.c:2395
+#: src/elflint.c:2399
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
-#: src/elflint.c:2419 src/elflint.c:2484 src/elflint.c:2519
+#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
#, fuzzy, c-format
msgid "hash section [%2zu] '%s' does not contain enough data\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:2440
+#: src/elflint.c:2444
#, fuzzy, c-format
msgid "hash section [%2zu] '%s' has zero bit mask words\n"
msgstr ""
"\n"
"セクション [%Zu] '%s' ã«ã¯ãƒ€ãƒ³ãƒ—ã™ã¹ãデータãŒã‚ã‚Šã¾ã›ã‚“。\n"
-#: src/elflint.c:2451 src/elflint.c:2495 src/elflint.c:2532
+#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
#, fuzzy, c-format
msgid "hash section [%2zu] '%s' uses too much data\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:2466
+#: src/elflint.c:2470
#, c-format
msgid ""
"hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
"%<PRIu32>, nentries: %<PRIu32>\n"
msgstr ""
-#: src/elflint.c:2553
+#: src/elflint.c:2557
#, fuzzy, c-format
msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
msgstr "セクション [%2d] '%s': ä¸å½“ãªå®›å…ˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚¿ã‚¤ãƒ—\n"
-#: src/elflint.c:2563 src/elflint.c:2567
+#: src/elflint.c:2567 src/elflint.c:2571
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr ""
-#: src/elflint.c:2574
+#: src/elflint.c:2578
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2586
+#: src/elflint.c:2590
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2602
+#: src/elflint.c:2606
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr ""
-#: src/elflint.c:2622
+#: src/elflint.c:2626
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
msgstr ""
-#: src/elflint.c:2633
+#: src/elflint.c:2637
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr ""
-#: src/elflint.c:2638
+#: src/elflint.c:2642
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
-#: src/elflint.c:2644
+#: src/elflint.c:2648
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr ""
-#: src/elflint.c:2649
+#: src/elflint.c:2653
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr ""
-#: src/elflint.c:2656
+#: src/elflint.c:2660
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr ""
-#: src/elflint.c:2660
+#: src/elflint.c:2664
#, fuzzy, c-format
msgid "section [%2d] '%s': cannot get symbol name for signature\n"
msgstr "セクション [%2d] '%s': シンボル %d を得られã¾ã›ã‚“: %s\n"
-#: src/elflint.c:2665
+#: src/elflint.c:2669
#, fuzzy, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:2671
+#: src/elflint.c:2675
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr ""
-#: src/elflint.c:2677
+#: src/elflint.c:2681
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr ""
-#: src/elflint.c:2686
+#: src/elflint.c:2690
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
-#: src/elflint.c:2692
+#: src/elflint.c:2696
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr ""
-#: src/elflint.c:2700
+#: src/elflint.c:2704
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr ""
-#: src/elflint.c:2704
+#: src/elflint.c:2708
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr ""
-#: src/elflint.c:2715
+#: src/elflint.c:2719
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr ""
-#: src/elflint.c:2727
+#: src/elflint.c:2731
#, fuzzy, c-format
msgid "section [%2d] '%s': section index %zu out of range\n"
msgstr "セクション [%2d] '%s': リロケーション %zu: オフセット境界外\n"
-#: src/elflint.c:2736
+#: src/elflint.c:2740
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
-#: src/elflint.c:2743
+#: src/elflint.c:2747
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:2749
+#: src/elflint.c:2753
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': element %zu references section [%2d] '%s' without "
@@ -2540,765 +2554,770 @@ msgstr ""
"セクション [%2d] '%s': シンボル %zu: å‚ç…§ã•ã‚Œã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%2d] '%s' 㯠"
"SHF_TLS フラグãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
-#: src/elflint.c:2756
+#: src/elflint.c:2760
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr ""
-#: src/elflint.c:2946
+#: src/elflint.c:2957
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2958
+#: src/elflint.c:2969
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:2974
+#: src/elflint.c:2985
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr ""
-#: src/elflint.c:2990
+#: src/elflint.c:3001
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
-#: src/elflint.c:2998
+#: src/elflint.c:3009
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr ""
-#: src/elflint.c:3012
+#: src/elflint.c:3023
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr ""
-#: src/elflint.c:3017
+#: src/elflint.c:3028
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
-#: src/elflint.c:3027
+#: src/elflint.c:3038
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
-#: src/elflint.c:3080
+#: src/elflint.c:3091
#, c-format
msgid "more than one version reference section present\n"
msgstr ""
-#: src/elflint.c:3088 src/elflint.c:3235
+#: src/elflint.c:3099 src/elflint.c:3246
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr ""
-#: src/elflint.c:3113 src/elflint.c:3289
+#: src/elflint.c:3124 src/elflint.c:3300
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr ""
-#: src/elflint.c:3120 src/elflint.c:3296
+#: src/elflint.c:3131 src/elflint.c:3307
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
-#: src/elflint.c:3130
+#: src/elflint.c:3141
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr ""
-#: src/elflint.c:3138
+#: src/elflint.c:3149
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr ""
-#: src/elflint.c:3150
+#: src/elflint.c:3161
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:3158
+#: src/elflint.c:3169
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"reference\n"
msgstr ""
-#: src/elflint.c:3167
+#: src/elflint.c:3178
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"%#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:3176
+#: src/elflint.c:3187
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"name '%s'\n"
msgstr ""
-#: src/elflint.c:3187
+#: src/elflint.c:3198
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
msgstr ""
-#: src/elflint.c:3204 src/elflint.c:3380
+#: src/elflint.c:3215 src/elflint.c:3391
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
-#: src/elflint.c:3212 src/elflint.c:3388
+#: src/elflint.c:3223 src/elflint.c:3399
#, c-format
msgid ""
"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
"there are more entries\n"
msgstr ""
-#: src/elflint.c:3227
+#: src/elflint.c:3238
#, c-format
msgid "more than one version definition section present\n"
msgstr ""
-#: src/elflint.c:3274
+#: src/elflint.c:3285
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr ""
-#: src/elflint.c:3278
+#: src/elflint.c:3289
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
-#: src/elflint.c:3284
+#: src/elflint.c:3295
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:3311
+#: src/elflint.c:3322
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr ""
-#: src/elflint.c:3318
+#: src/elflint.c:3329
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:3326
+#: src/elflint.c:3337
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr ""
-#: src/elflint.c:3346
+#: src/elflint.c:3357
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3363
+#: src/elflint.c:3374
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3396
+#: src/elflint.c:3407
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr ""
-#: src/elflint.c:3412
+#: src/elflint.c:3423
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr ""
-#: src/elflint.c:3425
+#: src/elflint.c:3436
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr ""
-#: src/elflint.c:3446
+#: src/elflint.c:3457
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr ""
-#: src/elflint.c:3462
+#: src/elflint.c:3473
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
-#: src/elflint.c:3471
+#: src/elflint.c:3482
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
-#: src/elflint.c:3483
+#: src/elflint.c:3494
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
-#: src/elflint.c:3500
+#: src/elflint.c:3511
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
msgstr ""
-#: src/elflint.c:3509
+#: src/elflint.c:3520
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr ""
-#: src/elflint.c:3518
+#: src/elflint.c:3529
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
msgstr ""
-#: src/elflint.c:3533
+#: src/elflint.c:3544
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
msgstr ""
#. Tag_File
-#: src/elflint.c:3544
+#: src/elflint.c:3555
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
msgstr ""
-#: src/elflint.c:3562
+#: src/elflint.c:3573
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
-#: src/elflint.c:3573
+#: src/elflint.c:3584
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr ""
-#: src/elflint.c:3586
+#: src/elflint.c:3597
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr ""
-#: src/elflint.c:3590
+#: src/elflint.c:3601
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:3600
+#: src/elflint.c:3611
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr ""
-#: src/elflint.c:3606
+#: src/elflint.c:3617
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
msgstr ""
-#: src/elflint.c:3695
+#: src/elflint.c:3714
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr ""
-#: src/elflint.c:3699
+#: src/elflint.c:3718
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr ""
-#: src/elflint.c:3701
+#: src/elflint.c:3720
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr ""
-#: src/elflint.c:3703
+#: src/elflint.c:3722
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr ""
-#: src/elflint.c:3705
+#: src/elflint.c:3724
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr ""
-#: src/elflint.c:3707
+#: src/elflint.c:3726
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr ""
-#: src/elflint.c:3709
+#: src/elflint.c:3728
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr ""
-#: src/elflint.c:3711
+#: src/elflint.c:3730
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr ""
-#: src/elflint.c:3714
+#: src/elflint.c:3733
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"value\n"
msgstr ""
-#: src/elflint.c:3718
+#: src/elflint.c:3737
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in shstrndx\n"
msgstr ""
-#: src/elflint.c:3722
+#: src/elflint.c:3741
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in phnum\n"
msgstr ""
-#: src/elflint.c:3740
+#: src/elflint.c:3759
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr ""
-#: src/elflint.c:3749
+#: src/elflint.c:3768
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr ""
-#: src/elflint.c:3776
+#: src/elflint.c:3795
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3794
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3812
+#: src/elflint.c:3830
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
msgstr ""
-#: src/elflint.c:3830
+#: src/elflint.c:3847
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr ""
-#: src/elflint.c:3836 src/elflint.c:3868
+#: src/elflint.c:3853 src/elflint.c:3885
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
msgstr ""
-#: src/elflint.c:3841 src/elflint.c:3873
+#: src/elflint.c:3858 src/elflint.c:3890
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"segments\n"
msgstr ""
-#: src/elflint.c:3849
+#: src/elflint.c:3866
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
msgstr ""
-#: src/elflint.c:3892
+#: src/elflint.c:3909
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr ""
-#: src/elflint.c:3897
+#: src/elflint.c:3914
#, c-format
msgid "cannot get section header\n"
msgstr ""
-#: src/elflint.c:3907
+#: src/elflint.c:3924
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr ""
-#: src/elflint.c:3922
+#: src/elflint.c:3944
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3929
+#: src/elflint.c:3954
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3937
+#: src/elflint.c:3962
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
-#: src/elflint.c:3947
+#: src/elflint.c:3972
#, fuzzy, c-format
msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:3952
+#: src/elflint.c:3977
#, fuzzy, c-format
msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
msgstr "セクション [%2d] '%s': セクションデータを得られã¾ã›ã‚“\n"
-#: src/elflint.c:3958
+#: src/elflint.c:3983
#, c-format
msgid ""
"section [%2zu] '%s': compressed section with no compression header: %s\n"
msgstr ""
-#: src/elflint.c:3964
+#: src/elflint.c:3989
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
-#: src/elflint.c:3969
+#: src/elflint.c:3994
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
-#: src/elflint.c:3976
+#: src/elflint.c:4001
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr ""
-#: src/elflint.c:3981
+#: src/elflint.c:4006
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
-#: src/elflint.c:4000
+#: src/elflint.c:4025
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
-#: src/elflint.c:4009
+#: src/elflint.c:4034
#, c-format
msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
msgstr ""
-#: src/elflint.c:4016
+#: src/elflint.c:4041
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr ""
-#: src/elflint.c:4047
+#: src/elflint.c:4072
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"%d\n"
msgstr ""
-#: src/elflint.c:4057
+#: src/elflint.c:4082
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"program header entry %d\n"
msgstr ""
-#: src/elflint.c:4083
+#: src/elflint.c:4108
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"program header entry %d and file contents is non-zero\n"
msgstr ""
-#: src/elflint.c:4094
+#: src/elflint.c:4119
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"segment of program header entry %d\n"
msgstr ""
-#: src/elflint.c:4105
+#: src/elflint.c:4130
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr ""
-#: src/elflint.c:4115
+#: src/elflint.c:4140
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
-#: src/elflint.c:4125
+#: src/elflint.c:4150
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
msgstr ""
-#: src/elflint.c:4131
+#: src/elflint.c:4156
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"but type is not SHT_TYPE\n"
msgstr ""
-#: src/elflint.c:4139
+#: src/elflint.c:4164
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
msgstr ""
-#: src/elflint.c:4190
+#: src/elflint.c:4215
#, c-format
msgid "more than one version symbol table present\n"
msgstr ""
-#: src/elflint.c:4213
+#: src/elflint.c:4238
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr ""
-#: src/elflint.c:4224
+#: src/elflint.c:4249
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
-#: src/elflint.c:4230
+#: src/elflint.c:4255
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
-#: src/elflint.c:4241
+#: src/elflint.c:4266
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"exist\n"
msgstr ""
-#: src/elflint.c:4254
+#: src/elflint.c:4279
#, c-format
msgid "duplicate version index %d\n"
msgstr ""
-#: src/elflint.c:4268
+#: src/elflint.c:4293
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
-#: src/elflint.c:4317
+#: src/elflint.c:4342
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:4321
+#: src/elflint.c:4346
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
msgstr ""
-#: src/elflint.c:4370
+#: src/elflint.c:4395
#, c-format
msgid ""
"phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
"offset %zu\n"
msgstr ""
-#: src/elflint.c:4375
+#: src/elflint.c:4400
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
"'%s' at offset %zu\n"
msgstr ""
-#: src/elflint.c:4394
+#: src/elflint.c:4419
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4414
+#: src/elflint.c:4439
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr ""
-#: src/elflint.c:4417
+#: src/elflint.c:4442
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4438
+#: src/elflint.c:4463
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4445
+#: src/elflint.c:4470
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr ""
-#: src/elflint.c:4448
+#: src/elflint.c:4473
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4466
+#: src/elflint.c:4491
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
msgstr ""
-#: src/elflint.c:4481
+#: src/elflint.c:4506
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr ""
-#: src/elflint.c:4490
+#: src/elflint.c:4516
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:4501
+#: src/elflint.c:4527
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr ""
-#: src/elflint.c:4509
+#: src/elflint.c:4535
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr ""
-#: src/elflint.c:4516
+#: src/elflint.c:4542
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr ""
-#: src/elflint.c:4530
+#: src/elflint.c:4556
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4533
+#: src/elflint.c:4559
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4543
+#: src/elflint.c:4569
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr ""
-#: src/elflint.c:4564
+#: src/elflint.c:4590
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr ""
-#: src/elflint.c:4575
+#: src/elflint.c:4601
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
-#: src/elflint.c:4582
+#: src/elflint.c:4608
#, c-format
msgid ""
"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
msgstr ""
-#: src/elflint.c:4591 src/elflint.c:4614
+#: src/elflint.c:4617 src/elflint.c:4640
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr ""
-#: src/elflint.c:4620
+#: src/elflint.c:4646
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
-#: src/elflint.c:4647
+#: src/elflint.c:4673
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4650
+#: src/elflint.c:4676
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4663
+#: src/elflint.c:4689
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr ""
-#: src/elflint.c:4671
+#: src/elflint.c:4697
#, c-format
msgid "call frame search table must be allocated\n"
msgstr ""
-#: src/elflint.c:4674
+#: src/elflint.c:4700
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr ""
-#: src/elflint.c:4678
+#: src/elflint.c:4704
#, c-format
msgid "call frame search table must not be writable\n"
msgstr ""
-#: src/elflint.c:4681
+#: src/elflint.c:4707
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr ""
-#: src/elflint.c:4686
+#: src/elflint.c:4712
#, c-format
msgid "call frame search table must not be executable\n"
msgstr ""
-#: src/elflint.c:4689
+#: src/elflint.c:4715
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr ""
-#: src/elflint.c:4700
+#: src/elflint.c:4726
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr ""
-#: src/elflint.c:4707
+#: src/elflint.c:4733
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr ""
-#: src/elflint.c:4710
+#: src/elflint.c:4736
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"alignment\n"
msgstr ""
-#: src/elflint.c:4723
+#: src/elflint.c:4749
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"program header entry"
msgstr ""
-#: src/elflint.c:4757
+#: src/elflint.c:4783
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr ""
-#: src/elflint.c:4783
+#: src/elflint.c:4795
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "æ–°ã—ã„ファイルを生æˆã§ãã¾ã›ã‚“"
+
+#: src/elflint.c:4816
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr ""
@@ -3472,7 +3491,7 @@ msgstr "å¼±ã„シンボルã«å°ã‚’点ã‘ã‚‹"
msgid "Print size of defined symbols"
msgstr "定義ã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«ã®å°åˆ·ã‚µã‚¤ã‚º"
-#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73
+#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:69
msgid "Output options:"
msgstr "出力オプション:"
@@ -3508,12 +3527,12 @@ msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: 内部エラー %d (%s-%s): %s"
#: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308
-#: src/strip.c:2748
+#: src/strip.c:2763
#, c-format
msgid "while closing '%s'"
msgstr "'%s' ã‚’é–‰ã˜ã¦ã„る最中"
-#: src/nm.c:403 src/objdump.c:280 src/strip.c:797
+#: src/nm.c:403 src/objdump.c:280 src/strip.c:818
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: ファイル形å¼ã‚’èªè­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ"
@@ -3553,13 +3572,13 @@ msgstr "%s%s%s: ファイル形å¼ã‚’èªè­˜ã§ãã¾ã›ã‚“"
msgid "cannot create search tree"
msgstr "検索ツリーを生æˆã§ãã¾ã›ã‚“"
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
-#: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
-#: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
-#: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
-#: src/strip.c:1038
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:637
+#: src/readelf.c:1451 src/readelf.c:1602 src/readelf.c:1803 src/readelf.c:2009
+#: src/readelf.c:2199 src/readelf.c:2377 src/readelf.c:2453 src/readelf.c:2711
+#: src/readelf.c:2787 src/readelf.c:2874 src/readelf.c:3472 src/readelf.c:3522
+#: src/readelf.c:3592 src/readelf.c:11328 src/readelf.c:12523
+#: src/readelf.c:12734 src/readelf.c:12803 src/size.c:398 src/size.c:470
+#: src/strip.c:1084
#, c-format
msgid "cannot get section header string table index"
msgstr "セクションヘッダー文字列テーブル索引ãŒå¾—られã¾ã›ã‚“"
@@ -3588,28 +3607,28 @@ msgstr ""
"%*s%-*s %-*s クラス タイプ %-*s %*s セクション\n"
"\n"
-#: src/nm.c:1216
+#: src/nm.c:1250
#, fuzzy, c-format
msgid "%s: entry size in section %zd `%s' is not what we expect"
msgstr "%s: セクションã®é …ç›®ã®å¤§ãã• `%s' ã¯äºˆæœŸã—ãŸã‚‚ã®ã¨ã¯ç•°ãªã‚Šã¾ã™"
-#: src/nm.c:1221
+#: src/nm.c:1255
#, fuzzy, c-format
msgid "%s: size of section %zd `%s' is not multiple of entry size"
msgstr "%s: セクション `%s' ã®å¤§ãã•ã¯é …ç›®ã®å¤§ãã•ã®æ•´æ•°å€ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: src/nm.c:1300
+#: src/nm.c:1334
#, fuzzy, c-format
msgid "%s: entries (%zd) in section %zd `%s' is too large"
msgstr "%s: セクションã®é …ç›®ã®å¤§ãã• `%s' ã¯äºˆæœŸã—ãŸã‚‚ã®ã¨ã¯ç•°ãªã‚Šã¾ã™"
#. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: ä¸å½“ãªæ“作"
-#: src/nm.c:1584
+#: src/nm.c:1620
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: シンボルãŒã‚ã‚Šã¾ã›ã‚“"
@@ -3644,7 +3663,7 @@ msgstr ""
msgid "Show information from FILEs (a.out by default)."
msgstr ""
-#: src/objdump.c:218 src/readelf.c:580
+#: src/objdump.c:218 src/readelf.c:582
msgid "No operation specified.\n"
msgstr "æ“作ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
@@ -3653,11 +3672,11 @@ msgstr "æ“作ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
msgid "while close `%s'"
msgstr ""
-#: src/objdump.c:363 src/readelf.c:2100 src/readelf.c:2292
+#: src/objdump.c:363 src/readelf.c:2104 src/readelf.c:2296
msgid "INVALID SYMBOL"
msgstr "ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«"
-#: src/objdump.c:378 src/readelf.c:2134 src/readelf.c:2328
+#: src/objdump.c:378 src/readelf.c:2138 src/readelf.c:2332
msgid "INVALID SECTION"
msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³"
@@ -3683,6 +3702,11 @@ msgstr ""
msgid "cannot disassemble"
msgstr ""
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "æ–°ã—ã„ファイルを生æˆã§ãã¾ã›ã‚“"
+
#. Short description of program.
#: src/ranlib.c:63
msgid "Generate an index to speed access to archives."
@@ -3856,143 +3880,143 @@ msgstr "ã¯ã„"
msgid "no"
msgstr "ã„ã„ãˆ"
-#: src/readelf.c:548
+#: src/readelf.c:550
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "ä¸æ˜Žãª DWARF デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s'.\n"
-#: src/readelf.c:619 src/readelf.c:730
+#: src/readelf.c:621 src/readelf.c:732
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "Elf 記述å­ã‚’生æˆã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:626 src/readelf.c:953 src/strip.c:1133
+#: src/readelf.c:628 src/readelf.c:955 src/strip.c:1179
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:644 src/readelf.c:1263 src/readelf.c:1471
+#: src/readelf.c:646 src/readelf.c:1265 src/readelf.c:1475
#, c-format
msgid "cannot get section: %s"
msgstr "セクションを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
-#: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
-#: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
-#: src/unstrip.c:1658 src/unstrip.c:1809 src/unstrip.c:1952 src/unstrip.c:2051
+#: src/readelf.c:655 src/readelf.c:1272 src/readelf.c:1483 src/readelf.c:12754
+#: src/unstrip.c:397 src/unstrip.c:428 src/unstrip.c:487 src/unstrip.c:608
+#: src/unstrip.c:629 src/unstrip.c:669 src/unstrip.c:885 src/unstrip.c:1216
+#: src/unstrip.c:1343 src/unstrip.c:1367 src/unstrip.c:1423 src/unstrip.c:1487
+#: src/unstrip.c:1662 src/unstrip.c:1813 src/unstrip.c:1956 src/unstrip.c:2055
#, c-format
msgid "cannot get section header: %s"
msgstr "セクションヘッダーを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:661
+#: src/readelf.c:663
#, fuzzy, c-format
msgid "cannot get section name"
msgstr "セクションを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:670 src/readelf.c:6576 src/readelf.c:10502 src/readelf.c:10604
-#: src/readelf.c:10782
+#: src/readelf.c:672 src/readelf.c:6628 src/readelf.c:10600 src/readelf.c:10702
+#: src/readelf.c:10880
#, c-format
msgid "cannot get %s content: %s"
msgstr "%s ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:686
+#: src/readelf.c:688
#, fuzzy, c-format
msgid "cannot create temp file '%s'"
msgstr "æ–°ã—ã„ファイル '%s' を生æˆã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:695
+#: src/readelf.c:697
#, fuzzy, c-format
msgid "cannot write section data"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/readelf.c:701 src/readelf.c:718 src/readelf.c:747
+#: src/readelf.c:703 src/readelf.c:720 src/readelf.c:749
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "Elf 記述å­ã‚’é–‰ã˜ã¦ã„る時ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/readelf.c:708
+#: src/readelf.c:710
#, fuzzy, c-format
msgid "error while rewinding file descriptor"
msgstr "Elf 記述å­ã‚’é–‰ã˜ã¦ã„る時ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/readelf.c:742
+#: src/readelf.c:744
#, c-format
msgid "'%s' is not an archive, cannot print archive index"
msgstr "'%s' ã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã§ã¯ãªãã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–索引をå°åˆ·ã§ãã¾ã›ã‚“"
-#: src/readelf.c:846
+#: src/readelf.c:848
#, c-format
msgid "cannot stat input file"
msgstr "入力ファイルを stat ã§ãã¾ã›ã‚“"
-#: src/readelf.c:848
+#: src/readelf.c:850
#, c-format
msgid "input file is empty"
msgstr "入力ファイルãŒç©ºã§ã™"
-#: src/readelf.c:850
+#: src/readelf.c:852
#, c-format
msgid "failed reading '%s': %s"
msgstr "'%s' ã®èª­è¾¼ã¿ã«å¤±æ•—: %s"
-#: src/readelf.c:879
+#: src/readelf.c:881
#, fuzzy, c-format
msgid "No such section '%s' in '%s'"
msgstr "セクション [%Zu] '%s' ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãŒå¾—られã¾ã›ã‚“: %s"
-#: src/readelf.c:938
+#: src/readelf.c:940
#, c-format
msgid "cannot read ELF header: %s"
msgstr "ELF ヘッダーãŒèª­ã‚ã¾ã›ã‚“: %s"
-#: src/readelf.c:946
+#: src/readelf.c:948
#, c-format
msgid "cannot create EBL handle"
msgstr "EBL ヘッダーを生æˆã§ãã¾ã›ã‚“"
-#: src/readelf.c:959
+#: src/readelf.c:961
#, fuzzy, c-format
msgid "cannot determine number of program headers: %s"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:991
+#: src/readelf.c:993
#, fuzzy, c-format
msgid "cannot read ELF: %s"
msgstr "%s を読ã¿ã¾ã›ã‚“: %s"
-#: src/readelf.c:1052
+#: src/readelf.c:1054
msgid "NONE (None)"
msgstr "ãªã— (ãªã—)"
-#: src/readelf.c:1053
+#: src/readelf.c:1055
msgid "REL (Relocatable file)"
msgstr "REL (リロケータブルファイル)"
-#: src/readelf.c:1054
+#: src/readelf.c:1056
msgid "EXEC (Executable file)"
msgstr "(EXEC (実行ファイル)"
-#: src/readelf.c:1055
+#: src/readelf.c:1057
msgid "DYN (Shared object file)"
msgstr "DYN (共用オブジェクトファイル)"
-#: src/readelf.c:1056
+#: src/readelf.c:1058
msgid "CORE (Core file)"
msgstr "CORE (コアファイル)"
-#: src/readelf.c:1061
+#: src/readelf.c:1063
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "OS 固有: (%x)\n"
#. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1063
+#: src/readelf.c:1065
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "プロセッサー固有: (%x)\n"
-#: src/readelf.c:1073
+#: src/readelf.c:1075
msgid ""
"ELF Header:\n"
" Magic: "
@@ -4000,7 +4024,7 @@ msgstr ""
"ELF ヘッダー:\n"
" マジック: "
-#: src/readelf.c:1077
+#: src/readelf.c:1079
#, c-format
msgid ""
"\n"
@@ -4009,123 +4033,123 @@ msgstr ""
"\n"
" クラス: %s\n"
-#: src/readelf.c:1082
+#: src/readelf.c:1084
#, c-format
msgid " Data: %s\n"
msgstr " データ: %s\n"
-#: src/readelf.c:1088
+#: src/readelf.c:1090
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " 識別ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hhd %s\n"
-#: src/readelf.c:1090 src/readelf.c:1112
+#: src/readelf.c:1092 src/readelf.c:1114
msgid "(current)"
msgstr "(ç¾åœ¨)"
-#: src/readelf.c:1094
+#: src/readelf.c:1096
#, c-format
msgid " OS/ABI: %s\n"
msgstr " OS/ABI: %s\n"
-#: src/readelf.c:1097
+#: src/readelf.c:1099
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " ABI ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hhd\n"
-#: src/readelf.c:1100
+#: src/readelf.c:1102
msgid " Type: "
msgstr " タイプ: "
-#: src/readelf.c:1105
+#: src/readelf.c:1107
#, c-format
msgid " Machine: %s\n"
msgstr " マシン : %s\n"
-#: src/readelf.c:1107
+#: src/readelf.c:1109
#, fuzzy, c-format
msgid " Machine: <unknown>: 0x%x\n"
msgstr " マシン : %s\n"
-#: src/readelf.c:1110
+#: src/readelf.c:1112
#, c-format
msgid " Version: %d %s\n"
msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d %s\n"
-#: src/readelf.c:1114
+#: src/readelf.c:1116
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " å…¥å£ç‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹ : %#<PRIx64>\n"
-#: src/readelf.c:1117
+#: src/readelf.c:1119
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " プログラムヘッダーã®é–‹å§‹: %<PRId64> %s\n"
-#: src/readelf.c:1118 src/readelf.c:1121
+#: src/readelf.c:1120 src/readelf.c:1123
msgid "(bytes into file)"
msgstr "(ファイルã¸ã®ãƒã‚¤ãƒˆæ•°)"
-#: src/readelf.c:1120
+#: src/readelf.c:1122
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " セクションヘッダーã®é–‹å§‹: %<PRId64> %s\n"
-#: src/readelf.c:1123
+#: src/readelf.c:1125
#, c-format
msgid " Flags: %s\n"
msgstr " フラグ: %s\n"
-#: src/readelf.c:1126
+#: src/readelf.c:1128
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " ã“ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã®å¤§ãã•: %<PRId16> %s\n"
-#: src/readelf.c:1127 src/readelf.c:1130 src/readelf.c:1147
+#: src/readelf.c:1129 src/readelf.c:1132 src/readelf.c:1149
msgid "(bytes)"
msgstr "(ãƒã‚¤ãƒˆ)"
-#: src/readelf.c:1129
+#: src/readelf.c:1131
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr " プログラムヘッダー項目ã®å¤§ãã•:%<PRId16> %s\n"
-#: src/readelf.c:1132
+#: src/readelf.c:1134
#, fuzzy, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " プログラムヘッダー項目ã®æ•° : %<PRId16>\n"
-#: src/readelf.c:1139
+#: src/readelf.c:1141
#, fuzzy, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr "([0].sh_link ã® %<PRIu32>)"
-#: src/readelf.c:1142 src/readelf.c:1159 src/readelf.c:1173
+#: src/readelf.c:1144 src/readelf.c:1161 src/readelf.c:1175
msgid " ([0] not available)"
msgstr "([0]ã¯ä½¿ãˆã¾ã›ã‚“)"
-#: src/readelf.c:1146
+#: src/readelf.c:1148
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr " セクションヘッダー項目ã®å¤§ãã•:%<PRId16> %s\n"
-#: src/readelf.c:1149
+#: src/readelf.c:1151
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " セクションヘッダー項目ã®æ•° : %<PRId16>"
-#: src/readelf.c:1156
+#: src/readelf.c:1158
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " ([0].sh_size ã® %<PRIu32>)"
#. We managed to get the zeroth section.
-#: src/readelf.c:1169
+#: src/readelf.c:1171
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr "([0].sh_link ã® %<PRIu32>)"
-#: src/readelf.c:1177
+#: src/readelf.c:1179
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
@@ -4134,7 +4158,7 @@ msgstr ""
" セクションヘッダー文字列テーブル索引: XINDEX%s\n"
"\n"
-#: src/readelf.c:1181
+#: src/readelf.c:1183
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
@@ -4143,12 +4167,12 @@ msgstr ""
" セクションヘッダー文字列テーブル索引: %<PRId16>\n"
"\n"
-#: src/readelf.c:1228 src/readelf.c:1436
+#: src/readelf.c:1230 src/readelf.c:1440
#, fuzzy, c-format
msgid "cannot get number of sections: %s"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:1231
+#: src/readelf.c:1233
#, fuzzy, c-format
msgid ""
"There are %zd section headers, starting at offset %#<PRIx64>:\n"
@@ -4157,16 +4181,16 @@ msgstr ""
"オフセット %2$#<PRIx64> ã‹ã‚‰å§‹ã¾ã‚‹ %1$d 個ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼ãŒã‚ã‚Šã¾ã™:\n"
"\n"
-#: src/readelf.c:1240
+#: src/readelf.c:1242
#, fuzzy, c-format
msgid "cannot get section header string table index: %s"
msgstr "セクションヘッダー文字列テーブル索引ãŒå¾—られã¾ã›ã‚“"
-#: src/readelf.c:1243
+#: src/readelf.c:1245
msgid "Section Headers:"
msgstr "セクションヘッダー:"
-#: src/readelf.c:1246
+#: src/readelf.c:1248
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
@@ -4174,7 +4198,7 @@ msgstr ""
"[番] åå‰ ã‚¿ã‚¤ãƒ— アドレス オフセ 大ãã• ES フラグLk "
"Inf Al"
-#: src/readelf.c:1248
+#: src/readelf.c:1250
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
@@ -4182,35 +4206,35 @@ msgstr ""
"[番] åå‰ ã‚¿ã‚¤ãƒ— アドレス オフセ 大ãã• ES "
"フラグLk Inf Al"
-#: src/readelf.c:1253
+#: src/readelf.c:1255
msgid " [Compression Size Al]"
msgstr ""
-#: src/readelf.c:1255
+#: src/readelf.c:1257
msgid " [Compression Size Al]"
msgstr ""
-#: src/readelf.c:1331
+#: src/readelf.c:1335
#, fuzzy, c-format
msgid "bad compression header for section %zd: %s"
msgstr "セクションヘッダー文字列セクションを生æˆã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:1342
+#: src/readelf.c:1346
#, fuzzy, c-format
msgid "bad gnu compressed size for section %zd: %s"
msgstr "セクションã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“ %d: %s"
-#: src/readelf.c:1360
+#: src/readelf.c:1364
msgid "Program Headers:"
msgstr "プログラムヘッダー:"
-#: src/readelf.c:1362
+#: src/readelf.c:1366
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" タイプ オフセ 仮アドレス 物アドレス ãƒ•ã‚¡ã‚¤é‡ ãƒ¡ãƒ¢é‡ Flg 調整 "
-#: src/readelf.c:1365
+#: src/readelf.c:1369
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
@@ -4218,12 +4242,12 @@ msgstr ""
" タイプ オフセ 仮想アドレス 物ç†ã‚¢ãƒ‰ãƒ¬ã‚¹ ファイルé‡ãƒ¡ãƒ¢"
"é‡ Flg 調整 "
-#: src/readelf.c:1422
+#: src/readelf.c:1426
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[プログラム割込ã¿ã‚’è¦æ±‚: %s]\n"
-#: src/readelf.c:1449
+#: src/readelf.c:1453
msgid ""
"\n"
" Section to Segment mapping:\n"
@@ -4233,12 +4257,12 @@ msgstr ""
" セクションã‹ã‚‰ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã¸ã®ãƒžãƒƒãƒ“ング:\n"
" セグメント セクション..."
-#: src/readelf.c:1460 src/unstrip.c:2110 src/unstrip.c:2152 src/unstrip.c:2159
+#: src/readelf.c:1464 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
#, c-format
msgid "cannot get program header: %s"
msgstr "プログラムヘッダーを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:1606
+#: src/readelf.c:1610
#, c-format
msgid ""
"\n"
@@ -4251,7 +4275,7 @@ msgstr[0] ""
"ç½²å '%3$s' ã‚’æŒã¤ COMDAT セクショングループ [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®"
"é …ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:1611
+#: src/readelf.c:1615
#, c-format
msgid ""
"\n"
@@ -4264,31 +4288,31 @@ msgstr[0] ""
"ç½²å '%3$s' ã‚’æŒã¤ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚°ãƒ«ãƒ¼ãƒ— [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …ç›®ãŒã‚"
"ã‚Šã¾ã™:\n"
-#: src/readelf.c:1619
+#: src/readelf.c:1623
msgid "<INVALID SYMBOL>"
msgstr "<ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«>"
-#: src/readelf.c:1633
+#: src/readelf.c:1637
msgid "<INVALID SECTION>"
msgstr "<ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³>"
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1660 src/readelf.c:2387 src/readelf.c:3488 src/readelf.c:12625
+#: src/readelf.c:12632 src/readelf.c:12676 src/readelf.c:12683
msgid "Couldn't uncompress section"
msgstr ""
-#: src/readelf.c:1661 src/readelf.c:2388 src/readelf.c:3489
+#: src/readelf.c:1665 src/readelf.c:2392 src/readelf.c:3493
#, fuzzy, c-format
msgid "cannot get section [%zd] header: %s"
msgstr "セクションヘッダーを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:1809 src/readelf.c:2459 src/readelf.c:2717 src/readelf.c:2793
+#: src/readelf.c:3097 src/readelf.c:3171 src/readelf.c:5401
#, fuzzy, c-format
msgid "invalid sh_link value in section %zu"
msgstr "ä¸å½“㪠.debug_line セクション"
-#: src/readelf.c:1808
+#: src/readelf.c:1812
#, c-format
msgid ""
"\n"
@@ -4304,36 +4328,36 @@ msgstr[0] ""
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: "
"[%2u] '%s'\n"
-#: src/readelf.c:1818
+#: src/readelf.c:1822
msgid " Type Value\n"
msgstr " タイプ 値\n"
-#: src/readelf.c:1842
+#: src/readelf.c:1846
#, c-format
msgid "Shared library: [%s]\n"
msgstr "共用ライブラリー: [%s]\n"
-#: src/readelf.c:1847
+#: src/readelf.c:1851
#, c-format
msgid "Library soname: [%s]\n"
msgstr "ライブラリー so å: [%s]\n"
-#: src/readelf.c:1852
+#: src/readelf.c:1856
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "ライブラリー rパス: [%s]\n"
-#: src/readelf.c:1857
+#: src/readelf.c:1861
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "ライブラリー run パス: [%s]\n"
-#: src/readelf.c:1877
+#: src/readelf.c:1881
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (ãƒã‚¤ãƒˆ)\n"
-#: src/readelf.c:1990 src/readelf.c:2180
+#: src/readelf.c:1994 src/readelf.c:2184
#, c-format
msgid ""
"\n"
@@ -4342,7 +4366,7 @@ msgstr ""
"\n"
"オフセット %#0<PRIx64> ã«ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«ãƒ†ãƒ¼ãƒ–ル\n"
-#: src/readelf.c:2008 src/readelf.c:2198
+#: src/readelf.c:2012 src/readelf.c:2202
#, c-format
msgid ""
"\n"
@@ -4363,7 +4387,7 @@ msgstr[0] ""
#. The .rela.dyn section does not refer to a specific section but
#. instead of section index zero. Do not try to print a section
#. name.
-#: src/readelf.c:2023 src/readelf.c:2213
+#: src/readelf.c:2027 src/readelf.c:2217
#, c-format
msgid ""
"\n"
@@ -4376,29 +4400,29 @@ msgstr[0] ""
"オフセット %3$#0<PRIx64> ã®ãƒªãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$2u] '%2$s' ã«ã¯ %4$d "
"個ã®é …ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:2033
+#: src/readelf.c:2037
msgid " Offset Type Value Name\n"
msgstr " オフセット タイプ 値 åå‰\n"
-#: src/readelf.c:2035
+#: src/readelf.c:2039
msgid " Offset Type Value Name\n"
msgstr " オフセット タイプ 値 åå‰\n"
-#: src/readelf.c:2088 src/readelf.c:2099 src/readelf.c:2112 src/readelf.c:2133
-#: src/readelf.c:2145 src/readelf.c:2279 src/readelf.c:2291 src/readelf.c:2305
-#: src/readelf.c:2327 src/readelf.c:2340
+#: src/readelf.c:2092 src/readelf.c:2103 src/readelf.c:2116 src/readelf.c:2137
+#: src/readelf.c:2149 src/readelf.c:2283 src/readelf.c:2295 src/readelf.c:2309
+#: src/readelf.c:2331 src/readelf.c:2344
msgid "<INVALID RELOC>"
msgstr "<ä¸å½“ãªRELOC>"
-#: src/readelf.c:2223
+#: src/readelf.c:2227
msgid " Offset Type Value Addend Name\n"
msgstr " オフセット タイプ 値 付加å\n"
-#: src/readelf.c:2225
+#: src/readelf.c:2229
msgid " Offset Type Value Addend Name\n"
msgstr " オフセット タイプ 値 付加å\n"
-#: src/readelf.c:2463
+#: src/readelf.c:2467
#, c-format
msgid ""
"\n"
@@ -4410,39 +4434,39 @@ msgstr[0] ""
"\n"
"シンボルテーブル [%2u] '%s' ã«ã¯ %u 個ã®é …ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:2468
+#: src/readelf.c:2472
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] " %lu ローカルシンボル文字列テーブル: [%2u] '%s'\n"
-#: src/readelf.c:2476
+#: src/readelf.c:2480
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " æ•° : 値 大ã タイプ Bind Vis Ndx åå‰\n"
-#: src/readelf.c:2478
+#: src/readelf.c:2482
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " æ•° : 値 大ã タイプ Bind Vis Ndx åå‰\n"
-#: src/readelf.c:2498
+#: src/readelf.c:2502
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2586
+#: src/readelf.c:2590
#, c-format
msgid "bad dynamic symbol"
msgstr "ä¸æ­£ãªå‹•çš„シンボル"
-#: src/readelf.c:2668
+#: src/readelf.c:2672
msgid "none"
msgstr "ãªã—"
-#: src/readelf.c:2685
+#: src/readelf.c:2689
msgid "| <unknown>"
msgstr "| <ä¸æ˜Ž>"
-#: src/readelf.c:2716
+#: src/readelf.c:2720
#, c-format
msgid ""
"\n"
@@ -4458,17 +4482,17 @@ msgstr[0] ""
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: "
"[%2u] '%s'\n"
-#: src/readelf.c:2737
+#: src/readelf.c:2741
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hu ファイル: %s æ•°: %hu\n"
-#: src/readelf.c:2750
+#: src/readelf.c:2754
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: åå‰: %s フラグ: %s ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hu\n"
-#: src/readelf.c:2793
+#: src/readelf.c:2797
#, c-format
msgid ""
"\n"
@@ -4484,18 +4508,18 @@ msgstr[0] ""
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: "
"[%2u] '%s'\n"
-#: src/readelf.c:2821
+#: src/readelf.c:2825
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr " %#06x: ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %hd フラグ: %s 索引: %hd æ•°: %hd åå‰: %s\n"
-#: src/readelf.c:2836
+#: src/readelf.c:2840
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: 親 %d: %s\n"
#. Print the header.
-#: src/readelf.c:3097
+#: src/readelf.c:3101
#, c-format
msgid ""
"\n"
@@ -4511,15 +4535,15 @@ msgstr[0] ""
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: "
"[%2u] '%s'"
-#: src/readelf.c:3125
+#: src/readelf.c:3129
msgid " 0 *local* "
msgstr " 0 *ローカル* "
-#: src/readelf.c:3130
+#: src/readelf.c:3134
msgid " 1 *global* "
msgstr " 1 *グローãƒãƒ«* "
-#: src/readelf.c:3172
+#: src/readelf.c:3176
#, c-format
msgid ""
"\n"
@@ -4537,22 +4561,22 @@ msgstr[0] ""
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションã¸ã®ãƒªãƒ³ã‚¯: "
"[%2u] '%s'\n"
-#: src/readelf.c:3194
+#: src/readelf.c:3198
#, fuzzy, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " é•·ã• æ•° 全体ã®% 範囲 \n"
-#: src/readelf.c:3196
+#: src/readelf.c:3200
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:3203
+#: src/readelf.c:3207
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:3216
+#: src/readelf.c:3220
#, fuzzy, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
@@ -4561,37 +4585,37 @@ msgstr ""
" テストã®å¹³å‡æ•°: 検索æˆåŠŸ: %f\n"
" 検索失敗: %f\n"
-#: src/readelf.c:3234 src/readelf.c:3298 src/readelf.c:3364
+#: src/readelf.c:3238 src/readelf.c:3302 src/readelf.c:3368
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "セクションã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“ %d: %s"
-#: src/readelf.c:3242
+#: src/readelf.c:3246
#, fuzzy, c-format
msgid "invalid data in sysv.hash section %d"
msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:3271
+#: src/readelf.c:3275
#, fuzzy, c-format
msgid "invalid chain in sysv.hash section %d"
msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:3306
+#: src/readelf.c:3310
#, fuzzy, c-format
msgid "invalid data in sysv.hash64 section %d"
msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:3337
+#: src/readelf.c:3341
#, fuzzy, c-format
msgid "invalid chain in sysv.hash64 section %d"
msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:3373
+#: src/readelf.c:3377
#, fuzzy, c-format
msgid "invalid data in gnu.hash section %d"
msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:3440
+#: src/readelf.c:3444
#, c-format
msgid ""
" Symbol Bias: %u\n"
@@ -4601,7 +4625,7 @@ msgstr ""
" ビットマスクã®å¤§ãã•: %zu ãƒã‚¤ãƒˆ %<PRIuFAST32>%% ビット設定 第2ãƒãƒƒã‚·ãƒ¥ã‚·ãƒ•"
"ト: %u\n"
-#: src/readelf.c:3529
+#: src/readelf.c:3533
#, c-format
msgid ""
"\n"
@@ -4614,7 +4638,7 @@ msgstr[0] ""
"オフセット %3$#0<PRIx64> ã®ãƒ©ã‚¤ãƒ–ラリー一覧セクション [%1$2zu] '%2$s' ã«ã¯ "
"%4$d 個ã®é …ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:3543
+#: src/readelf.c:3547
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
@@ -4622,7 +4646,7 @@ msgstr ""
" ライブラリー タイムスタンプ ãƒã‚§ãƒƒã‚¯ã‚µãƒ  ãƒãƒ¼"
"ジョン フラグ"
-#: src/readelf.c:3595
+#: src/readelf.c:3606
#, c-format
msgid ""
"\n"
@@ -4633,102 +4657,102 @@ msgstr ""
"オフセット %4$#0<PRIx64> ã® %3$<PRIu64> ãƒã‚¤ãƒˆã®ã‚ªãƒ–ジェクト属性セクション "
"[%1$2zu] '%2$s':\n"
-#: src/readelf.c:3612
+#: src/readelf.c:3623
msgid " Owner Size\n"
msgstr " 所有者 大ãã•\n"
-#: src/readelf.c:3641
+#: src/readelf.c:3647
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
#. Unknown subsection, print and skip.
-#: src/readelf.c:3680
+#: src/readelf.c:3686
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
#. Tag_File
-#: src/readelf.c:3685
+#: src/readelf.c:3691
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " ファイル: %11<PRIu32>\n"
-#: src/readelf.c:3734
+#: src/readelf.c:3740
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>ã€%s\n"
-#: src/readelf.c:3737
+#: src/readelf.c:3743
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3740
+#: src/readelf.c:3746
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3750
+#: src/readelf.c:3756
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3753
+#: src/readelf.c:3759
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3823
+#: src/readelf.c:3829
#, c-format
msgid "sprintf failure"
msgstr ""
-#: src/readelf.c:4305
+#: src/readelf.c:4311
msgid "empty block"
msgstr "空ブロック"
-#: src/readelf.c:4308
+#: src/readelf.c:4314
#, c-format
msgid "%zu byte block:"
msgstr "%zu ãƒã‚¤ãƒˆã®ãƒ–ロック:"
-#: src/readelf.c:4786
+#: src/readelf.c:4792
#, fuzzy, c-format
msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-#: src/readelf.c:4850
+#: src/readelf.c:4859
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr ""
-#: src/readelf.c:4857
+#: src/readelf.c:4866
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr ""
-#: src/readelf.c:4864
+#: src/readelf.c:4873
#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr ""
-#: src/readelf.c:4871
+#: src/readelf.c:4880
#, c-format
msgid "%s %#<PRIx64> used with different attribute %s and %s"
msgstr ""
-#: src/readelf.c:4968
+#: src/readelf.c:4980
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr ""
-#: src/readelf.c:4976
+#: src/readelf.c:4988
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr ""
-#: src/readelf.c:5054
+#: src/readelf.c:5091
#, c-format
msgid ""
"\n"
@@ -4739,7 +4763,7 @@ msgstr ""
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
" [ コード]\n"
-#: src/readelf.c:5062
+#: src/readelf.c:5099
#, c-format
msgid ""
"\n"
@@ -4748,20 +4772,20 @@ msgstr ""
"\n"
"オフセット %<PRIu64> ã®ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³:\n"
-#: src/readelf.c:5075
+#: src/readelf.c:5112
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** 略語を読んã§ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s\n"
-#: src/readelf.c:5091
+#: src/readelf.c:5128
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] オフセット: %<PRId64>ã€å­: %sã€ã‚¿ã‚°: %s\n"
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6586 src/readelf.c:8323 src/readelf.c:9009 src/readelf.c:9445
-#: src/readelf.c:9690 src/readelf.c:9856 src/readelf.c:10243
-#: src/readelf.c:10303
+#: src/readelf.c:5161 src/readelf.c:5470 src/readelf.c:5637 src/readelf.c:6022
+#: src/readelf.c:6638 src/readelf.c:8375 src/readelf.c:9064 src/readelf.c:9537
+#: src/readelf.c:9788 src/readelf.c:9954 src/readelf.c:10341
+#: src/readelf.c:10401
#, c-format
msgid ""
"\n"
@@ -4770,52 +4794,52 @@ msgstr ""
"\n"
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:5137
+#: src/readelf.c:5174
#, fuzzy, c-format
msgid "cannot get .debug_addr section data: %s"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9054
+#: src/readelf.c:5274 src/readelf.c:5298 src/readelf.c:5682 src/readelf.c:9109
#, fuzzy, c-format
msgid " Length: %8<PRIu64>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9067
+#: src/readelf.c:5276 src/readelf.c:5313 src/readelf.c:5695 src/readelf.c:9122
#, fuzzy, c-format
msgid " DWARF version: %8<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9076
+#: src/readelf.c:5277 src/readelf.c:5322 src/readelf.c:5704 src/readelf.c:9131
#, fuzzy, c-format
msgid " Address size: %8<PRIu64>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9086
+#: src/readelf.c:5279 src/readelf.c:5332 src/readelf.c:5714 src/readelf.c:9141
#, fuzzy, c-format
msgid " Segment size: %8<PRIu64>\n"
msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9071 src/readelf.c:10435
+#: src/readelf.c:5317 src/readelf.c:5699 src/readelf.c:9126 src/readelf.c:10533
#, fuzzy, c-format
msgid "Unknown version"
msgstr "ä¸æ˜Žãªãƒãƒ¼ã‚¸ãƒ§ãƒ³"
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9081
+#: src/readelf.c:5327 src/readelf.c:5540 src/readelf.c:5709 src/readelf.c:9136
#, fuzzy, c-format
msgid "unsupported address size"
msgstr "アドレス値ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9091
+#: src/readelf.c:5338 src/readelf.c:5551 src/readelf.c:5719 src/readelf.c:9146
#, c-format
msgid "unsupported segment size"
msgstr ""
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5391 src/readelf.c:5465
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr ".debug_aragnes ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:5369
+#: src/readelf.c:5406
#, c-format
msgid ""
"\n"
@@ -4828,19 +4852,19 @@ msgstr[0] ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:5400
+#: src/readelf.c:5437
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:5402
+#: src/readelf.c:5439
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
" [%*zu] 開始: %0#*<PRIx64>ã€é•·ã•: %5<PRIu64>ã€CU DIE オフセット: %6<PRId64>\n"
-#: src/readelf.c:5446 src/readelf.c:8350
+#: src/readelf.c:5483 src/readelf.c:8402
#, fuzzy, c-format
msgid ""
"\n"
@@ -4849,154 +4873,152 @@ msgstr ""
"\n"
"オフセット %Zu ã®ãƒ†ãƒ¼ãƒ–ル:\n"
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6610 src/readelf.c:8361
-#: src/readelf.c:9035
+#: src/readelf.c:5487 src/readelf.c:5663 src/readelf.c:6662 src/readelf.c:8413
+#: src/readelf.c:9090
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:5466
+#: src/readelf.c:5503
#, fuzzy, c-format
msgid ""
"\n"
" Length: %6<PRIu64>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:5478
+#: src/readelf.c:5515
#, fuzzy, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:5482
+#: src/readelf.c:5519
#, c-format
msgid "unsupported aranges version"
msgstr ""
-#: src/readelf.c:5493
+#: src/readelf.c:5530
#, fuzzy, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:5499
+#: src/readelf.c:5536
#, fuzzy, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:5510
+#: src/readelf.c:5547
#, fuzzy, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
"\n"
msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:5565
+#: src/readelf.c:5602
#, c-format
msgid " %zu padding bytes\n"
msgstr ""
-#: src/readelf.c:5609
+#: src/readelf.c:5646
#, fuzzy, c-format
msgid "cannot get .debug_rnglists content: %s"
msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:5632 src/readelf.c:9041
+#: src/readelf.c:5669 src/readelf.c:9096
#, fuzzy, c-format
msgid ""
"Table at Offset 0x%<PRIx64>:\n"
"\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:5687 src/readelf.c:9096
+#: src/readelf.c:5724 src/readelf.c:9151
#, fuzzy, c-format
msgid " Offset entries: %8<PRIu64>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:5703 src/readelf.c:9112
+#: src/readelf.c:5740 src/readelf.c:9167
#, c-format
msgid " Unknown CU base: "
msgstr ""
-#: src/readelf.c:5705 src/readelf.c:9114
+#: src/readelf.c:5742 src/readelf.c:9169
#, c-format
msgid " CU [%6<PRIx64>] base: "
msgstr ""
-#: src/readelf.c:5711 src/readelf.c:9120
+#: src/readelf.c:5748 src/readelf.c:9175
#, c-format
msgid " Not associated with a CU.\n"
msgstr ""
-#: src/readelf.c:5722 src/readelf.c:9131
+#: src/readelf.c:5759 src/readelf.c:9186
#, c-format
msgid "too many offset entries for unit length"
msgstr ""
-#: src/readelf.c:5726 src/readelf.c:9135
+#: src/readelf.c:5763 src/readelf.c:9190
#, fuzzy, c-format
msgid " Offsets starting at 0x%<PRIx64>:\n"
msgstr " 所有者 大ãã•\n"
-#: src/readelf.c:5778
+#: src/readelf.c:5815
#, fuzzy, c-format
msgid "invalid range list data"
msgstr "ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:5963 src/readelf.c:9423
+#: src/readelf.c:6000 src/readelf.c:9515
#, c-format
msgid ""
" %zu padding bytes\n"
"\n"
msgstr ""
-#: src/readelf.c:5980
+#: src/readelf.c:6017
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:6016 src/readelf.c:9478
+#: src/readelf.c:6053 src/readelf.c:9570
#, c-format
msgid ""
"\n"
" Unknown CU base: "
msgstr ""
-#: src/readelf.c:6018 src/readelf.c:9480
+#: src/readelf.c:6055 src/readelf.c:9572
#, c-format
msgid ""
"\n"
" CU [%6<PRIx64>] base: "
msgstr ""
-#: src/readelf.c:6027 src/readelf.c:9506 src/readelf.c:9532
+#: src/readelf.c:6064 src/readelf.c:9598 src/readelf.c:9624
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n"
-#: src/readelf.c:6048 src/readelf.c:9612
-#, fuzzy, c-format
-msgid ""
-" [%6tx] base address\n"
-" "
-msgstr " [%6tx] ベースアドレス %s\n"
+#: src/readelf.c:6089 src/readelf.c:9708
+#, fuzzy
+msgid "base address"
+msgstr "アドレスを %s ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:6056 src/readelf.c:9620
+#: src/readelf.c:6099 src/readelf.c:9718
#, fuzzy, c-format
msgid " [%6tx] empty list\n"
msgstr ""
"\n"
" [%6tx] ゼロ終端\n"
-#: src/readelf.c:6311
+#: src/readelf.c:6359
#, fuzzy
msgid " <INVALID DATA>\n"
msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n"
-#: src/readelf.c:6564
+#: src/readelf.c:6616
#, fuzzy, c-format
msgid "cannot get ELF: %s"
msgstr "次㮠DIE を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:6582
+#: src/readelf.c:6634
#, c-format
msgid ""
"\n"
@@ -5005,7 +5027,7 @@ msgstr ""
"\n"
"オフセット %3$#<PRIx64> 㮠フレーム情報呼出ã—セクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:6632
+#: src/readelf.c:6684
#, c-format
msgid ""
"\n"
@@ -5014,65 +5036,65 @@ msgstr ""
"\n"
" [%6tx] ゼロ終端\n"
-#: src/readelf.c:6733 src/readelf.c:6887
+#: src/readelf.c:6785 src/readelf.c:6939
#, fuzzy, c-format
msgid "invalid augmentation length"
msgstr "ä¸å½“ãªæ‹¡å¤§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰"
-#: src/readelf.c:6748
+#: src/readelf.c:6800
msgid "FDE address encoding: "
msgstr "FDE アドレスエンコード"
-#: src/readelf.c:6754
+#: src/readelf.c:6806
msgid "LSDA pointer encoding: "
msgstr "LSDA ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰:"
-#: src/readelf.c:6864
+#: src/readelf.c:6916
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:6871
+#: src/readelf.c:6923
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:6908
+#: src/readelf.c:6960
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sLSDA ãƒã‚¤ãƒ³ã‚¿ãƒ¼: %#<PRIx64>\n"
-#: src/readelf.c:6993
+#: src/readelf.c:7045
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
msgstr "属性コードを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:7003
+#: src/readelf.c:7055
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
msgstr "属性様å¼ã‚’得られã¾ã›ã‚“: %s"
-#: src/readelf.c:7025
+#: src/readelf.c:7077
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
msgstr "属性値を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:7355
+#: src/readelf.c:7407
#, fuzzy, c-format
msgid "invalid file (%<PRId64>): %s"
msgstr "ä¸å½“ãªãƒ•ã‚¡ã‚¤ãƒ«"
-#: src/readelf.c:7359
+#: src/readelf.c:7411
#, fuzzy, c-format
msgid "no srcfiles for CU [%<PRIx64>]"
msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:7363
+#: src/readelf.c:7415
#, fuzzy, c-format
msgid "couldn't get DWARF CU: %s"
msgstr "次㮠DIE を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:7676
+#: src/readelf.c:7728
#, c-format
msgid ""
"\n"
@@ -5083,12 +5105,12 @@ msgstr ""
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
" [オフセット]\n"
-#: src/readelf.c:7726
+#: src/readelf.c:7778
#, fuzzy, c-format
msgid "cannot get next unit: %s"
msgstr "次㮠DIE を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:7745
+#: src/readelf.c:7797
#, fuzzy, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -5100,7 +5122,7 @@ msgstr ""
" ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %2$<PRIu16>ã€ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %3$<PRIu64>ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¤§"
"ãã•: %4$<PRIu8>ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å¤§ãã•: %5$<PRIu8>\n"
-#: src/readelf.c:7757
+#: src/readelf.c:7809
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -5111,39 +5133,39 @@ msgstr ""
" ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %2$<PRIu16>ã€ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %3$<PRIu64>ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¤§"
"ãã•: %4$<PRIu8>ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å¤§ãã•: %5$<PRIu8>\n"
-#: src/readelf.c:7767 src/readelf.c:7930
+#: src/readelf.c:7819 src/readelf.c:7982
#, c-format
msgid " Unit type: %s (%<PRIu8>)"
msgstr ""
-#: src/readelf.c:7794
+#: src/readelf.c:7846
#, c-format
msgid "unknown version (%d) or unit type (%d)"
msgstr ""
-#: src/readelf.c:7823
+#: src/readelf.c:7875
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "DIE オフセットを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:7832
+#: src/readelf.c:7884
#, fuzzy, c-format
msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
msgstr ""
"セクション '%2$s' 中ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ %1$<PRIu64> ã® DIE ã®ã‚¿ã‚°ã‚’得られã¾ã›ã‚“: "
"%3$s"
-#: src/readelf.c:7870
+#: src/readelf.c:7922
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "次㮠DIE を得られã¾ã›ã‚“: %s\n"
-#: src/readelf.c:7878
+#: src/readelf.c:7930
#, c-format
msgid "cannot get next DIE: %s"
msgstr "次㮠DIE を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:7922
+#: src/readelf.c:7974
#, fuzzy, c-format
msgid ""
" Split compilation unit at offset %<PRIu64>:\n"
@@ -5154,7 +5176,7 @@ msgstr ""
" ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %2$<PRIu16>ã€ç•¥èªžã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %3$<PRIu64>ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¤§"
"ãã•: %4$<PRIu8>ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å¤§ãã•: %5$<PRIu8>\n"
-#: src/readelf.c:7974
+#: src/readelf.c:8026
#, fuzzy, c-format
msgid ""
"\n"
@@ -5164,18 +5186,18 @@ msgstr ""
"\n"
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:8306
+#: src/readelf.c:8358
#, fuzzy, c-format
msgid "unknown form: %s"
msgstr "ä¸æ˜Žãªæ§˜å¼ %<PRIx64>"
-#: src/readelf.c:8337
+#: src/readelf.c:8389
#, c-format
msgid "cannot get line data section data: %s"
msgstr "ラインデータセクションデータを得られã¾ã›ã‚“: %s"
#. Print what we got so far.
-#: src/readelf.c:8439
+#: src/readelf.c:8491
#, fuzzy, c-format
msgid ""
"\n"
@@ -5205,33 +5227,33 @@ msgstr ""
"\n"
"命令コード:\n"
-#: src/readelf.c:8461
+#: src/readelf.c:8513
#, fuzzy, c-format
msgid "cannot handle .debug_line version: %u\n"
msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:8469
+#: src/readelf.c:8521
#, fuzzy, c-format
msgid "cannot handle address size: %u\n"
msgstr "アドレス値ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: src/readelf.c:8477
+#: src/readelf.c:8529
#, fuzzy, c-format
msgid "cannot handle segment selector size: %u\n"
msgstr "セクションを得られã¾ã›ã‚“: %s"
-#: src/readelf.c:8487
+#: src/readelf.c:8539
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "セクション [%2$zu] '%3$s' 中ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ %1$tu ã«ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:8502
+#: src/readelf.c:8554
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] " [%*<PRIuFAST8>] %hhu パラメーター\n"
-#: src/readelf.c:8513
+#: src/readelf.c:8565
msgid ""
"\n"
"Directory table:"
@@ -5239,12 +5261,12 @@ msgstr ""
"\n"
"ディレクトリーテーブル:"
-#: src/readelf.c:8519 src/readelf.c:8596
+#: src/readelf.c:8571 src/readelf.c:8648
#, fuzzy, c-format
msgid " ["
msgstr " %s: %s\n"
-#: src/readelf.c:8590
+#: src/readelf.c:8642
#, fuzzy
msgid ""
"\n"
@@ -5253,7 +5275,7 @@ msgstr ""
"\n"
" 呼出ã—サイトテーブル:"
-#: src/readelf.c:8651
+#: src/readelf.c:8703
#, fuzzy
msgid " Entry Dir Time Size Name"
msgstr ""
@@ -5261,7 +5283,16 @@ msgstr ""
"ファイルåテーブル:\n"
" Entry Dir 時刻 大ãã• åå‰"
-#: src/readelf.c:8688
+#: src/readelf.c:8742
+#, fuzzy
+msgid ""
+"\n"
+"No line number statements."
+msgstr ""
+"\n"
+"è¡Œ ç•ªå· æ–‡:"
+
+#: src/readelf.c:8746
msgid ""
"\n"
"Line number statements:"
@@ -5269,119 +5300,119 @@ msgstr ""
"\n"
"è¡Œ ç•ªå· æ–‡:"
-#: src/readelf.c:8711
+#: src/readelf.c:8766
#, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr ""
-#: src/readelf.c:8745
+#: src/readelf.c:8800
#, fuzzy, c-format
msgid " special opcode %u: address+%u = "
msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
-#: src/readelf.c:8749
+#: src/readelf.c:8804
#, fuzzy, c-format
msgid ", op_index = %u, line%+d = %zu\n"
msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
-#: src/readelf.c:8752
+#: src/readelf.c:8807
#, c-format
msgid ", line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:8770
+#: src/readelf.c:8825
#, c-format
msgid " extended opcode %u: "
msgstr " 拡張命令コード %u: "
-#: src/readelf.c:8775
+#: src/readelf.c:8830
#, fuzzy
msgid " end of sequence"
msgstr "列ã®çµ‚ã‚ã‚Š"
-#: src/readelf.c:8793
+#: src/readelf.c:8848
#, fuzzy, c-format
msgid " set address to "
msgstr "アドレスを %s ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:8821
+#: src/readelf.c:8876
#, fuzzy, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
"新ファイルを定義ã™ã‚‹: dir=%uã€mtime=%<PRIu64>ã€é•·ã•h=%<PRIu64>ã€åå‰=%s\n"
-#: src/readelf.c:8835
+#: src/readelf.c:8890
#, fuzzy, c-format
msgid " set discriminator to %u\n"
msgstr "カラムを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
#. Unknown, ignore it.
-#: src/readelf.c:8840
+#: src/readelf.c:8895
#, fuzzy
msgid " unknown opcode"
msgstr "ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰"
#. Takes no argument.
-#: src/readelf.c:8852
+#: src/readelf.c:8907
msgid " copy"
msgstr "複写"
-#: src/readelf.c:8863
+#: src/readelf.c:8918
#, fuzzy, c-format
msgid " advance address by %u to "
msgstr "アドレスを %u ã ã‘進ã‚㦠%s ã«ã™ã‚‹\n"
-#: src/readelf.c:8867 src/readelf.c:8928
+#: src/readelf.c:8922 src/readelf.c:8983
#, c-format
msgid ", op_index to %u"
msgstr ""
-#: src/readelf.c:8879
+#: src/readelf.c:8934
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr "行を定数 %d ã ã‘進ã‚㦠%<PRId64> ã«ã™ã‚‹\n"
-#: src/readelf.c:8889
+#: src/readelf.c:8944
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:8900
+#: src/readelf.c:8955
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr "カラムを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
-#: src/readelf.c:8907
+#: src/readelf.c:8962
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " '%s' ã‚’ %<PRIuFAST8> ã«è¨­å®šã™ã‚‹\n"
#. Takes no argument.
-#: src/readelf.c:8913
+#: src/readelf.c:8968
msgid " set basic block flag"
msgstr "基本ブロックフラグを設定ã™ã‚‹"
-#: src/readelf.c:8924
+#: src/readelf.c:8979
#, fuzzy, c-format
msgid " advance address by constant %u to "
msgstr "アドレスを定数 %u ã ã‘済ã‚㦠%s ã«ã™ã‚‹\n"
-#: src/readelf.c:8944
+#: src/readelf.c:8999
#, fuzzy, c-format
msgid " advance address by fixed value %u to \n"
msgstr "アドレスを固定値 %u ã ã‘進ã‚㦠%s ã«ã™ã‚‹\n"
#. Takes no argument.
-#: src/readelf.c:8954
+#: src/readelf.c:9009
msgid " set prologue end flag"
msgstr "プロローグ終了フラグを設定ã™ã‚‹"
#. Takes no argument.
-#: src/readelf.c:8959
+#: src/readelf.c:9014
msgid " set epilogue begin flag"
msgstr "エピローグ開始フラグを設定ã™ã‚‹"
-#: src/readelf.c:8969
+#: src/readelf.c:9024
#, fuzzy, c-format
msgid " set isa to %u\n"
msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
@@ -5389,98 +5420,103 @@ msgstr " ファイルを %<PRIu64> ã«è¨­å®šã™ã‚‹\n"
#. This is a new opcode the generator but not we know about.
#. Read the parameters associated with it but then discard
#. everything. Read all the parameters for this opcode.
-#: src/readelf.c:8978
+#: src/readelf.c:9033
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] " %<PRIu8> 個ã®ãƒ‘ラメーターã®ã‚ã‚‹ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰:"
-#: src/readelf.c:9018
+#: src/readelf.c:9073
#, fuzzy, c-format
msgid "cannot get .debug_loclists content: %s"
msgstr ".debug_loc ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:9187
+#: src/readelf.c:9239
+#, fuzzy, c-format
+msgid " <INVALID DATA>\n"
+msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n"
+
+#: src/readelf.c:9279
#, fuzzy, c-format
msgid "invalid loclists data"
msgstr "ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/readelf.c:9440
+#: src/readelf.c:9532
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr ".debug_loc ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:9647 src/readelf.c:10691
+#: src/readelf.c:9745 src/readelf.c:10789
#, fuzzy
msgid " <INVALID DATA>\n"
msgstr " [%6tx] <ä¸å½“ãªãƒ‡ãƒ¼ã‚¿>\n"
-#: src/readelf.c:9702 src/readelf.c:9865
+#: src/readelf.c:9800 src/readelf.c:9963
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "マクロ情報セクションã®ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“: %s"
-#: src/readelf.c:9782
+#: src/readelf.c:9880
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** 最後ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®çµ‚端ã—ã¦ã„ãªã„文字列"
-#: src/readelf.c:9805
+#: src/readelf.c:9903
#, fuzzy, c-format
msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
msgstr "%*s*** 最後ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®çµ‚端ã—ã¦ã„ãªã„文字列"
-#: src/readelf.c:9906
+#: src/readelf.c:10004
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " 所有者 大ãã•\n"
-#: src/readelf.c:9918
+#: src/readelf.c:10016
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:9924 src/readelf.c:10811
+#: src/readelf.c:10022 src/readelf.c:10909
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:9931
+#: src/readelf.c:10029
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>"
msgstr " å…¥å£ç‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹ : %#<PRIx64>\n"
-#: src/readelf.c:9960
+#: src/readelf.c:10058
#, fuzzy, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:9968
+#: src/readelf.c:10066
#, fuzzy, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:9993
+#: src/readelf.c:10091
#, fuzzy, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " %<PRIu8> 個ã®ãƒ‘ラメーターã®ã‚ã‚‹ä¸æ˜Žãªå‘½ä»¤ã‚³ãƒ¼ãƒ‰:"
-#: src/readelf.c:10000
+#: src/readelf.c:10098
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:10012
+#: src/readelf.c:10110
#, fuzzy, c-format
msgid " %<PRIu8> arguments:"
msgstr " [%*<PRIuFAST8>] %hhu パラメーター\n"
-#: src/readelf.c:10027
+#: src/readelf.c:10125
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:10228
+#: src/readelf.c:10326
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
@@ -5488,7 +5524,7 @@ msgstr ""
# # "オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
# # " %4$*s 文字列\n" ãŒã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã®ã¯ä½•æ•…? å–ã‚Šæ•¢ãˆãš fuzzy扱ã„
-#: src/readelf.c:10272
+#: src/readelf.c:10370
#, fuzzy, c-format
msgid ""
"\n"
@@ -5499,37 +5535,37 @@ msgstr ""
"オフセット %3$#<PRIx64> 㮠DWARF セクション [%1$2zu] '%2$s':\n"
" %4$*s 文字列\n"
-#: src/readelf.c:10287
+#: src/readelf.c:10385
#, fuzzy, c-format
msgid " *** error, missing string terminator\n"
msgstr " *** 文字列ã®èª­è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼: %s\n"
-#: src/readelf.c:10316
+#: src/readelf.c:10414
#, fuzzy, c-format
msgid "cannot get .debug_str_offsets section data: %s"
msgstr ".degub_ranges ã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:10415
+#: src/readelf.c:10513
#, fuzzy, c-format
msgid " Length: %8<PRIu64>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:10417
+#: src/readelf.c:10515
#, fuzzy, c-format
msgid " Offset size: %8<PRIu8>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:10431
+#: src/readelf.c:10529
#, fuzzy, c-format
msgid " DWARF version: %8<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10440
+#: src/readelf.c:10538
#, fuzzy, c-format
msgid " Padding: %8<PRIx16>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:10494
+#: src/readelf.c:10592
#, c-format
msgid ""
"\n"
@@ -5538,7 +5574,7 @@ msgstr ""
"\n"
"呼出ã—フレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:10596
+#: src/readelf.c:10694
#, c-format
msgid ""
"\n"
@@ -5547,22 +5583,22 @@ msgstr ""
"\n"
"例外å–扱ã„テーブルセクション [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:10619
+#: src/readelf.c:10717
#, c-format
msgid " LPStart encoding: %#x "
msgstr " LPStart コード化: %#x "
-#: src/readelf.c:10631
+#: src/readelf.c:10729
#, c-format
msgid " TType encoding: %#x "
msgstr "TType コード化: %#x "
-#: src/readelf.c:10646
+#: src/readelf.c:10744
#, c-format
msgid " Call site encoding: %#x "
msgstr "呼出ã—サイトコード化: %#x "
-#: src/readelf.c:10659
+#: src/readelf.c:10757
msgid ""
"\n"
" Call site table:"
@@ -5570,7 +5606,7 @@ msgstr ""
"\n"
" 呼出ã—サイトテーブル:"
-#: src/readelf.c:10673
+#: src/readelf.c:10771
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5583,12 +5619,12 @@ msgstr ""
" 離ç€é™¸å ´: %#<PRIx64>\n"
" 行動: %u\n"
-#: src/readelf.c:10746
+#: src/readelf.c:10844
#, c-format
msgid "invalid TType encoding"
msgstr "ä¸å½“㪠TType コード化"
-#: src/readelf.c:10773
+#: src/readelf.c:10871
#, fuzzy, c-format
msgid ""
"\n"
@@ -5598,37 +5634,37 @@ msgstr ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:10802
+#: src/readelf.c:10900
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:10820
+#: src/readelf.c:10918
#, fuzzy, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:10827
+#: src/readelf.c:10925
#, fuzzy, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:10834
+#: src/readelf.c:10932
#, fuzzy, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:10841
+#: src/readelf.c:10939
#, fuzzy, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:10848
+#: src/readelf.c:10946
#, fuzzy, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:10862
+#: src/readelf.c:10960
#, fuzzy, c-format
msgid ""
"\n"
@@ -5638,7 +5674,7 @@ msgstr ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:10887
+#: src/readelf.c:10985
#, fuzzy, c-format
msgid ""
"\n"
@@ -5648,7 +5684,7 @@ msgstr ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:10916
+#: src/readelf.c:11014
#, fuzzy, c-format
msgid ""
"\n"
@@ -5658,7 +5694,7 @@ msgstr ""
"オフセット %3$#<PRIx64> ã® DWARF セクション [%1$2zu] '%2$s' ã«ã¯ %4$zu 個ã®é …"
"ç›®ãŒã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:10948
+#: src/readelf.c:11046
#, fuzzy, c-format
msgid ""
"\n"
@@ -5667,18 +5703,18 @@ msgstr ""
"\n"
"オフセット %#0<PRIx64> ã«ä¸å½“ãªã‚·ãƒ³ãƒœãƒ«ãƒ†ãƒ¼ãƒ–ル\n"
-#: src/readelf.c:11086
+#: src/readelf.c:11184
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "デãƒãƒƒã‚°å†…容記述å­ã‚’得られã¾ã›ã‚“: %s"
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11552 src/readelf.c:12179 src/readelf.c:12290
+#: src/readelf.c:12348
#, c-format
msgid "cannot convert core note data: %s"
msgstr "コアノートデータã®å¤‰æ›ãŒã§ãã¾ã›ã‚“: %s"
-#: src/readelf.c:11812
+#: src/readelf.c:11915
#, c-format
msgid ""
"\n"
@@ -5687,21 +5723,21 @@ msgstr ""
"\n"
"%*s... < %u 回ã®ç¹°è¿”ã—> ..."
-#: src/readelf.c:12319
+#: src/readelf.c:12427
msgid " Owner Data size Type\n"
msgstr " 所有者 データ大ãã•ã‚¿ã‚¤ãƒ—\n"
-#: src/readelf.c:12348
+#: src/readelf.c:12456
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:12400
+#: src/readelf.c:12508
#, fuzzy, c-format
msgid "cannot get content of note: %s"
msgstr "ノートセクションã®å†…容を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:12434
+#: src/readelf.c:12542
#, c-format
msgid ""
"\n"
@@ -5711,7 +5747,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> ã® %3$<PRIu64> ãƒã‚¤ãƒˆã®ãƒŽãƒ¼ãƒˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$2zu] "
"'%2$s':\n"
-#: src/readelf.c:12457
+#: src/readelf.c:12565
#, c-format
msgid ""
"\n"
@@ -5720,7 +5756,7 @@ msgstr ""
"\n"
"オフセット %2$#0<PRIx64> ã® %1$<PRIu64> ãƒã‚¤ãƒˆã®ãƒŽãƒ¼ãƒˆã‚»ã‚°ãƒ¡ãƒ³ãƒˆ:\n"
-#: src/readelf.c:12504
+#: src/readelf.c:12612
#, fuzzy, c-format
msgid ""
"\n"
@@ -5729,12 +5765,12 @@ msgstr ""
"\n"
"セクション [%Zu] '%s' ã«ã¯ãƒ€ãƒ³ãƒ—ã™ã¹ãデータãŒã‚ã‚Šã¾ã›ã‚“。\n"
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12639 src/readelf.c:12690
#, fuzzy, c-format
msgid "cannot get data for section [%zu] '%s': %s"
msgstr "セクション [%Zu] '%s' ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ãŒå¾—られã¾ã›ã‚“: %s"
-#: src/readelf.c:12536
+#: src/readelf.c:12644
#, fuzzy, c-format
msgid ""
"\n"
@@ -5744,7 +5780,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$Zu] '%2$s' ã®16進ダン"
"プã€%3$<PRIu64> ãƒã‚¤ãƒˆ:\n"
-#: src/readelf.c:12541
+#: src/readelf.c:12649
#, fuzzy, c-format
msgid ""
"\n"
@@ -5755,7 +5791,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$Zu] '%2$s' ã®16進ダン"
"プã€%3$<PRIu64> ãƒã‚¤ãƒˆ:\n"
-#: src/readelf.c:12555
+#: src/readelf.c:12663
#, fuzzy, c-format
msgid ""
"\n"
@@ -5764,7 +5800,7 @@ msgstr ""
"\n"
"セクション [%Zu] '%s' ã«ã¯ãƒ€ãƒ³ãƒ—ã™ã¹ãデータãŒã‚ã‚Šã¾ã›ã‚“。\n"
-#: src/readelf.c:12587
+#: src/readelf.c:12695
#, fuzzy, c-format
msgid ""
"\n"
@@ -5774,7 +5810,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' ã«ã¯ %3$<PRIu64> ãƒ"
"イトã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:12592
+#: src/readelf.c:12700
#, fuzzy, c-format
msgid ""
"\n"
@@ -5785,7 +5821,7 @@ msgstr ""
"オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' ã«ã¯ %3$<PRIu64> ãƒ"
"イトã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:12641
+#: src/readelf.c:12749
#, c-format
msgid ""
"\n"
@@ -5794,7 +5830,7 @@ msgstr ""
"\n"
"セクション [%lu] ãŒã‚ã‚Šã¾ã›ã‚“"
-#: src/readelf.c:12671
+#: src/readelf.c:12779
#, c-format
msgid ""
"\n"
@@ -5803,12 +5839,12 @@ msgstr ""
"\n"
"セクション '%s' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: src/readelf.c:12728
+#: src/readelf.c:12836
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "アーカイブã®ã‚·ãƒ³ãƒœãƒ«ç´¢å¼• '%s' を得られã¾ã›ã‚“: %s"
-#: src/readelf.c:12731
+#: src/readelf.c:12839
#, c-format
msgid ""
"\n"
@@ -5817,7 +5853,7 @@ msgstr ""
"\n"
"アーカイブ '%s' ã«ã¯ã‚·ãƒ³ãƒœãƒ«ç´¢å¼•ãŒã‚ã‚Šã¾ã›ã‚“\n"
-#: src/readelf.c:12735
+#: src/readelf.c:12843
#, fuzzy, c-format
msgid ""
"\n"
@@ -5826,12 +5862,12 @@ msgstr ""
"\n"
"アーカイブ '%s' ã®ç´¢å¼•ã«ã¯ %Zu é …ç›®ã‚ã‚Šã¾ã™:\n"
-#: src/readelf.c:12753
+#: src/readelf.c:12861
#, fuzzy, c-format
msgid "cannot extract member at offset %zu in '%s': %s"
msgstr "'%2$s' 㮠オフセット %1$Zu ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’抽出ã§ãã¾ã›ã‚“: %3$s"
-#: src/readelf.c:12758
+#: src/readelf.c:12866
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "アーカイブメンãƒãƒ¼ '%s' ã«ã¯ä»¥ä¸‹ãŒã‚ã‚Šã¾ã™:\n"
@@ -5896,7 +5932,7 @@ msgstr "ä¸å½“ãªåŸºæ•°: %s"
msgid "%s: file format not recognized"
msgstr "%s: ファイル形å¼ã‚’èªè­˜ã§ãã¾ã›ã‚“"
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
#, c-format
msgid " (ex %s)"
msgstr " (ex %s)"
@@ -5906,125 +5942,125 @@ msgstr " (ex %s)"
msgid "cannot get section header"
msgstr "セクションヘッダーを得られã¾ã›ã‚“: %s"
-#: src/size.c:582
+#: src/size.c:585
msgid "(TOTALS)\n"
msgstr "(åˆè¨ˆ)\n"
-#: src/stack.c:482
+#: src/stack.c:487
#, c-format
msgid "-p PID should be a positive process id."
msgstr ""
-#: src/stack.c:488
+#: src/stack.c:493
#, fuzzy, c-format
msgid "Cannot open core file '%s'"
msgstr "アーカイブ '%s' ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“"
-#: src/stack.c:548
+#: src/stack.c:553
#, c-format
msgid "-n MAXFRAMES should be 0 or higher."
msgstr ""
-#: src/stack.c:560
+#: src/stack.c:565
#, c-format
msgid "-e EXEC needs a core given by --core."
msgstr ""
-#: src/stack.c:564
+#: src/stack.c:569
#, c-format
msgid "-1 needs a thread id given by -p."
msgstr ""
-#: src/stack.c:568
+#: src/stack.c:573
#, c-format
msgid "One of -p PID or --core COREFILE should be given."
msgstr ""
-#: src/stack.c:640
+#: src/stack.c:645
#, fuzzy
msgid "Show stack of process PID"
msgstr "検索ツリーを生æˆã§ãã¾ã›ã‚“"
-#: src/stack.c:642
+#: src/stack.c:647
msgid "Show stack found in COREFILE"
msgstr ""
-#: src/stack.c:643
+#: src/stack.c:648
msgid "(optional) EXECUTABLE that produced COREFILE"
msgstr ""
-#: src/stack.c:647
+#: src/stack.c:652
#, fuzzy
msgid "Output selection options:"
msgstr "é¸æŠžã‚ªãƒ—ションを入力ã—ã¦ãã ã•ã„:"
-#: src/stack.c:649
+#: src/stack.c:654
#, fuzzy
msgid "Additionally show frame activation"
msgstr "出力é¸æŠž:"
-#: src/stack.c:651
+#: src/stack.c:656
msgid "Additionally try to lookup DWARF debuginfo name for frame address"
msgstr ""
-#: src/stack.c:654
+#: src/stack.c:659
msgid ""
"Additionally show inlined function frames using DWARF debuginfo if available "
"(implies -d)"
msgstr ""
-#: src/stack.c:656
+#: src/stack.c:661
msgid "Additionally show module file information"
msgstr ""
-#: src/stack.c:658
+#: src/stack.c:663
#, fuzzy
msgid "Additionally show source file information"
msgstr "出力é¸æŠž:"
-#: src/stack.c:660
+#: src/stack.c:665
msgid ""
"Show all additional information (activation, debugname, inlines, module and "
"source)"
msgstr ""
-#: src/stack.c:662
+#: src/stack.c:667
msgid "Do not resolve address to function symbol name"
msgstr ""
-#: src/stack.c:664
+#: src/stack.c:669
msgid "Show raw function symbol names, do not try to demangle names"
msgstr ""
-#: src/stack.c:666
+#: src/stack.c:671
msgid "Show module build-id, load address and pc offset"
msgstr ""
-#: src/stack.c:668
+#: src/stack.c:673
msgid "Show the backtrace of only one thread"
msgstr ""
-#: src/stack.c:670
+#: src/stack.c:675
msgid "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)"
msgstr ""
-#: src/stack.c:672
+#: src/stack.c:677
msgid "Show module memory map with build-id, elf and debug files detected"
msgstr ""
-#: src/stack.c:680
+#: src/stack.c:685
msgid ""
"Print a stack for each thread in a process or core file.\n"
"\n"
"Program exits with return code 0 if all frames were shown without any "
"errors. If some frames were shown, but there were some non-fatal errors, "
"possibly causing an incomplete backtrace, the program exits with return code "
-"1. If no frames could be shown, or a fatal error occured the program exits "
+"1. If no frames could be shown, or a fatal error occurred the program exits "
"with return code 2. If the program was invoked with bad or missing "
"arguments it will exit with return code 64."
msgstr ""
-#: src/stack.c:755
+#: src/stack.c:760
#, c-format
msgid "Couldn't show any frames."
msgstr ""
@@ -6043,7 +6079,7 @@ msgstr ""
#: src/strings.c:69
msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
+"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
"{B,L} = 32-bit"
msgstr ""
@@ -6122,14 +6158,14 @@ msgstr "修正/アクセスタイムスタンプを出力ã¸è¤‡å†™ã™ã‚‹"
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)"
+"operation is not reversible, needs -f)"
msgstr ""
#: src/strip.c:87
msgid ""
"Similar to --reloc-debug-sections, but resolve all trivial relocations "
"between debug sections in place. No other stripping is performed (operation "
-"is not reversable, incompatible with -f, -g, --remove-comment and --remove-"
+"is not reversible, incompatible with -f, -g, --remove-comment and --remove-"
"section)"
msgstr ""
@@ -6186,22 +6222,22 @@ msgstr "-F オプション㌠2 回指定ã•ã‚Œã¦ã„ã¾ã™"
msgid "cannot both keep and remove .comment section"
msgstr ".comment セクションをå–り除ã"
-#: src/strip.c:574
+#: src/strip.c:481
#, fuzzy, c-format
msgid "bad relocation"
msgstr "リロケーションを表示"
-#: src/strip.c:726 src/strip.c:750
+#: src/strip.c:747 src/strip.c:771
#, c-format
msgid "cannot stat input file '%s'"
msgstr "入力ファイル '%s' ã‚’ stat ã§ãã¾ã›ã‚“"
-#: src/strip.c:740
+#: src/strip.c:761
#, c-format
msgid "while opening '%s'"
msgstr "'%s' ã‚’é–‹ã„ã¦ã„ã‚‹é–“"
-#: src/strip.c:778
+#: src/strip.c:799
#, c-format
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: アーカイブã‹ã‚‰æŠœã出ã—ã¦ã„る時㯠-o ã‚„ -f ã¯ä½¿ãˆã¾ã›ã‚“"
@@ -6212,263 +6248,263 @@ msgstr "%s: アーカイブã‹ã‚‰æŠœã出ã—ã¦ã„る時㯠-o ã‚„ -f ã¯ä½¿ãˆ
#. result = handle_ar (fd, elf, NULL, fname,
#. preserve_dates ? tv : NULL);
#.
-#: src/strip.c:790
+#: src/strip.c:811
#, fuzzy, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: アーカイブã‹ã‚‰æŠœã出ã—ã¦ã„る時㯠-o ã‚„ -f ã¯ä½¿ãˆã¾ã›ã‚“"
-#: src/strip.c:1001
+#: src/strip.c:1047
#, c-format
msgid "cannot open EBL backend"
msgstr "EBL ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’é–‹ã‘ã¾ã›ã‚“"
-#: src/strip.c:1046
+#: src/strip.c:1092
#, fuzzy, c-format
msgid "cannot get number of phdrs"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
-#: src/strip.c:1060 src/strip.c:1103
+#: src/strip.c:1106 src/strip.c:1149
#, fuzzy, c-format
msgid "cannot create new ehdr for file '%s': %s"
msgstr "æ–°ã—ã„ファイル '%s' を生æˆã§ãã¾ã›ã‚“: %s"
-#: src/strip.c:1070 src/strip.c:1113
+#: src/strip.c:1116 src/strip.c:1159
#, fuzzy, c-format
msgid "cannot create new phdr for file '%s': %s"
msgstr "æ–°ã—ã„ファイル '%s' を生æˆã§ãã¾ã›ã‚“: %s"
-#: src/strip.c:1194
+#: src/strip.c:1240
#, c-format
msgid "illformed file '%s'"
msgstr "ä¸é©æ ¼ãªãƒ•ã‚¡ã‚¤ãƒ« '%s'"
-#: src/strip.c:1204
+#: src/strip.c:1250
#, fuzzy, c-format
msgid "Cannot remove allocated section '%s'"
msgstr "PLT セクションを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/strip.c:1213
+#: src/strip.c:1259
#, fuzzy, c-format
msgid "Cannot both keep and remove section '%s'"
msgstr "0番目ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã‚’得られã¾ã›ã‚“: %s"
-#: src/strip.c:1573 src/strip.c:1688
+#: src/strip.c:1624 src/strip.c:1739
#, c-format
msgid "while generating output file: %s"
msgstr "出力ファイルを生æˆã—ã¦ã„ã‚‹é–“: %s"
-#: src/strip.c:1637
+#: src/strip.c:1688
#, fuzzy, c-format
msgid "%s: error while updating ELF header: %s"
msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:1646
+#: src/strip.c:1697
#, fuzzy, c-format
msgid "%s: error while getting shdrstrndx: %s"
msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:1654 src/strip.c:2535
+#: src/strip.c:1705 src/strip.c:2550
#, fuzzy, c-format
msgid "%s: error updating shdrstrndx: %s"
msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:1671
+#: src/strip.c:1722
#, c-format
msgid "while preparing output for '%s'"
msgstr "'%s' ã®ãŸã‚ã®å‡ºåŠ›ã‚’準備ã—ã¦ã„ã‚‹é–“"
-#: src/strip.c:1733 src/strip.c:1796
+#: src/strip.c:1784 src/strip.c:1847
#, c-format
msgid "while create section header section: %s"
msgstr "セクションヘッダーセクションを生æˆã—ã¦ã„ã‚‹é–“: %s"
-#: src/strip.c:1742
+#: src/strip.c:1793
#, c-format
msgid "cannot allocate section data: %s"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/strip.c:1808
+#: src/strip.c:1859
#, c-format
msgid "while create section header string table: %s"
msgstr "セクションヘッダー文字列テーブルを生æˆä¸­: %s"
-#: src/strip.c:1815
+#: src/strip.c:1866
#, fuzzy, c-format
msgid "no memory to create section header string table"
msgstr "セクションヘッダー文字列テーブルを生æˆä¸­: %s"
-#: src/strip.c:2028
+#: src/strip.c:2079
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr ""
-#: src/strip.c:2451 src/strip.c:2559
+#: src/strip.c:2466 src/strip.c:2574
#, c-format
msgid "while writing '%s': %s"
msgstr "'%s' を書込ã¿ä¸­: %s"
-#: src/strip.c:2462
+#: src/strip.c:2477
#, c-format
msgid "while creating '%s'"
msgstr "'%s' を生æˆä¸­"
-#: src/strip.c:2485
+#: src/strip.c:2500
#, c-format
msgid "while computing checksum for debug information"
msgstr "デãƒãƒƒã‚°æƒ…å ±ã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’計算中"
-#: src/strip.c:2526
+#: src/strip.c:2541
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: ELF ヘッダーを生æˆã—ã¦ã„ã‚‹é–“ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:2544
+#: src/strip.c:2559
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: ファイルを読込ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:2584 src/strip.c:2604
+#: src/strip.c:2599 src/strip.c:2619
#, fuzzy, c-format
msgid "while writing '%s'"
msgstr "'%s' を書込ã¿ä¸­: %s"
-#: src/strip.c:2641 src/strip.c:2648
+#: src/strip.c:2656 src/strip.c:2663
#, c-format
msgid "error while finishing '%s': %s"
msgstr "'%s' ã®çµ‚了中ã«ã‚¨ãƒ©ãƒ¼: %s"
-#: src/strip.c:2665 src/strip.c:2741
+#: src/strip.c:2680 src/strip.c:2756
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "'%s' ã®ã‚¢ã‚¯ã‚»ã‚¹ã¨å¤‰æ›´æ—¥ä»˜ã‚’設定ã§ãã¾ã›ã‚“"
-#: src/unstrip.c:70
+#: src/unstrip.c:66
msgid "Match MODULE against file names, not module names"
msgstr ""
-#: src/unstrip.c:71
+#: src/unstrip.c:67
msgid "Silently skip unfindable files"
msgstr ""
-#: src/unstrip.c:74
+#: src/unstrip.c:70
msgid "Place output into FILE"
msgstr ""
-#: src/unstrip.c:76
+#: src/unstrip.c:72
msgid "Create multiple output files under DIRECTORY"
msgstr ""
-#: src/unstrip.c:77
+#: src/unstrip.c:73
msgid "Use module rather than file names"
msgstr ""
-#: src/unstrip.c:79
+#: src/unstrip.c:75
msgid "Create output for modules that have no separate debug information"
msgstr ""
-#: src/unstrip.c:82
+#: src/unstrip.c:78
msgid "Apply relocations to section contents in ET_REL files"
msgstr ""
-#: src/unstrip.c:84
+#: src/unstrip.c:80
msgid "Only list module and file names, build IDs"
msgstr ""
-#: src/unstrip.c:86
+#: src/unstrip.c:82
msgid "Force combining files even if some ELF headers don't seem to match"
msgstr ""
-#: src/unstrip.c:130
+#: src/unstrip.c:126
#, c-format
msgid "-d option specified twice"
msgstr ""
-#: src/unstrip.c:165
+#: src/unstrip.c:161
#, c-format
msgid "only one of -o or -d allowed"
msgstr ""
-#: src/unstrip.c:174
+#: src/unstrip.c:170
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr ""
-#: src/unstrip.c:189
+#: src/unstrip.c:185
#, c-format
msgid "output directory '%s'"
msgstr ""
-#: src/unstrip.c:198
+#: src/unstrip.c:194
#, c-format
msgid "exactly two file arguments are required"
msgstr ""
-#: src/unstrip.c:204
+#: src/unstrip.c:200
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr ""
-#: src/unstrip.c:217
+#: src/unstrip.c:213
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr ""
-#: src/unstrip.c:240
+#: src/unstrip.c:236
#, c-format
msgid "cannot create ELF header: %s"
msgstr ""
-#: src/unstrip.c:244
+#: src/unstrip.c:240
#, fuzzy, c-format
msgid "cannot get shdrstrndx:%s"
msgstr "セクションを得られã¾ã›ã‚“: %s"
-#: src/unstrip.c:248 src/unstrip.c:2081
+#: src/unstrip.c:244 src/unstrip.c:2085
#, c-format
msgid "cannot get ELF header: %s"
msgstr ""
-#: src/unstrip.c:258
+#: src/unstrip.c:254
#, fuzzy, c-format
msgid "cannot get new zero section: %s"
msgstr "セクションを得られã¾ã›ã‚“: %s"
-#: src/unstrip.c:261
+#: src/unstrip.c:257
#, fuzzy, c-format
msgid "cannot update new zero section: %s"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
-#: src/unstrip.c:265
+#: src/unstrip.c:261
#, c-format
msgid "cannot copy ELF header: %s"
msgstr ""
-#: src/unstrip.c:269 src/unstrip.c:2099 src/unstrip.c:2142
+#: src/unstrip.c:265 src/unstrip.c:2103 src/unstrip.c:2146
#, fuzzy, c-format
msgid "cannot get number of program headers: %s"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
-#: src/unstrip.c:274 src/unstrip.c:2103
+#: src/unstrip.c:270 src/unstrip.c:2107
#, c-format
msgid "cannot create program headers: %s"
msgstr ""
-#: src/unstrip.c:280
+#: src/unstrip.c:276
#, c-format
msgid "cannot copy program header: %s"
msgstr ""
-#: src/unstrip.c:290
+#: src/unstrip.c:286
#, c-format
msgid "cannot copy section header: %s"
msgstr ""
-#: src/unstrip.c:293 src/unstrip.c:1703
+#: src/unstrip.c:289 src/unstrip.c:1707
#, c-format
msgid "cannot get section data: %s"
msgstr ""
-#: src/unstrip.c:295 src/unstrip.c:1705
+#: src/unstrip.c:291 src/unstrip.c:1709
#, c-format
msgid "cannot copy section data: %s"
msgstr ""
@@ -6478,260 +6514,260 @@ msgstr ""
msgid "cannot create directory '%s'"
msgstr ""
-#: src/unstrip.c:391 src/unstrip.c:651 src/unstrip.c:685 src/unstrip.c:853
-#: src/unstrip.c:1745
+#: src/unstrip.c:393 src/unstrip.c:655 src/unstrip.c:689 src/unstrip.c:857
+#: src/unstrip.c:1749
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr ""
-#: src/unstrip.c:407 src/unstrip.c:654 src/unstrip.c:675 src/unstrip.c:688
-#: src/unstrip.c:1766 src/unstrip.c:1961 src/unstrip.c:1985
+#: src/unstrip.c:409 src/unstrip.c:658 src/unstrip.c:679 src/unstrip.c:692
+#: src/unstrip.c:1770 src/unstrip.c:1965 src/unstrip.c:1989
#, c-format
msgid "cannot update symbol table: %s"
msgstr ""
-#: src/unstrip.c:417
+#: src/unstrip.c:419
#, c-format
msgid "cannot update section header: %s"
msgstr ""
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:465 src/unstrip.c:479
#, c-format
msgid "cannot update relocation: %s"
msgstr ""
-#: src/unstrip.c:574
+#: src/unstrip.c:578
#, c-format
msgid "cannot get symbol version: %s"
msgstr ""
-#: src/unstrip.c:587
+#: src/unstrip.c:591
#, c-format
msgid "unexpected section type in [%zu] with sh_link to symtab"
msgstr ""
-#: src/unstrip.c:842
+#: src/unstrip.c:846
#, fuzzy, c-format
msgid "cannot get symbol section data: %s"
msgstr "ラインデータセクションデータを得られã¾ã›ã‚“: %s"
-#: src/unstrip.c:844
+#: src/unstrip.c:848
#, fuzzy, c-format
msgid "cannot get string section data: %s"
msgstr "ラインデータセクションデータを得られã¾ã›ã‚“: %s"
-#: src/unstrip.c:861
+#: src/unstrip.c:865
#, fuzzy, c-format
msgid "invalid string offset in symbol [%zu]"
msgstr "シンボル %2$sã®ä¸æ­£ãªã‚ªãƒ•ã‚»ãƒƒãƒˆ %1$zu "
-#: src/unstrip.c:1019 src/unstrip.c:1423
+#: src/unstrip.c:1023 src/unstrip.c:1427
#, fuzzy, c-format
msgid "cannot read section [%zu] name: %s"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/unstrip.c:1034
+#: src/unstrip.c:1038
#, fuzzy, c-format
msgid "bad sh_link for group section: %s"
msgstr "ä¸å½“㪠.debug_line セクション"
-#: src/unstrip.c:1040
+#: src/unstrip.c:1044
#, fuzzy, c-format
msgid "couldn't get shdr for group section: %s"
msgstr "セクションã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“ %d: %s"
-#: src/unstrip.c:1045
+#: src/unstrip.c:1049
#, fuzzy, c-format
msgid "bad data for group symbol section: %s"
msgstr "セクションã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’得られã¾ã›ã‚“ %d: %s"
-#: src/unstrip.c:1051
+#: src/unstrip.c:1055
#, fuzzy, c-format
msgid "couldn't get symbol for group section: %s"
msgstr "セクション数を決定ã§ãã¾ã›ã‚“: %s"
-#: src/unstrip.c:1056
+#: src/unstrip.c:1060
#, fuzzy, c-format
msgid "bad symbol name for group section: %s"
msgstr "セクションヘッダー文字列セクションを生æˆã§ãã¾ã›ã‚“: %s"
-#: src/unstrip.c:1098 src/unstrip.c:1117 src/unstrip.c:1155
+#: src/unstrip.c:1102 src/unstrip.c:1121 src/unstrip.c:1159
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr ""
-#: src/unstrip.c:1135
+#: src/unstrip.c:1139
#, c-format
msgid "overflow with shnum = %zu in '%s' section"
msgstr ""
-#: src/unstrip.c:1146
+#: src/unstrip.c:1150
#, c-format
msgid "invalid contents in '%s' section"
msgstr ""
-#: src/unstrip.c:1202 src/unstrip.c:1549
+#: src/unstrip.c:1206 src/unstrip.c:1553
#, fuzzy, c-format
msgid "cannot find matching section for [%zu] '%s'"
msgstr "セクション [%zu] '%s' ã®ä¸å½“ãªãƒ‡ãƒ¼ã‚¿"
-#: src/unstrip.c:1327 src/unstrip.c:1343 src/unstrip.c:1629 src/unstrip.c:1920
+#: src/unstrip.c:1331 src/unstrip.c:1347 src/unstrip.c:1633 src/unstrip.c:1924
#, c-format
msgid "cannot add section name to string table: %s"
msgstr ""
-#: src/unstrip.c:1352
+#: src/unstrip.c:1356
#, c-format
msgid "cannot update section header string table data: %s"
msgstr ""
-#: src/unstrip.c:1381 src/unstrip.c:1385
+#: src/unstrip.c:1385 src/unstrip.c:1389
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
-#: src/unstrip.c:1389 src/unstrip.c:1393 src/unstrip.c:1644
+#: src/unstrip.c:1393 src/unstrip.c:1397 src/unstrip.c:1648
#, c-format
msgid "cannot get section count: %s"
msgstr ""
-#: src/unstrip.c:1396
+#: src/unstrip.c:1400
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
-#: src/unstrip.c:1400
+#: src/unstrip.c:1404
#, c-format
msgid "no sections in stripped file"
msgstr ""
-#: src/unstrip.c:1471 src/unstrip.c:1564
+#: src/unstrip.c:1475 src/unstrip.c:1568
#, c-format
msgid "cannot read section header string table: %s"
msgstr ""
-#: src/unstrip.c:1623
+#: src/unstrip.c:1627
#, c-format
msgid "cannot add new section: %s"
msgstr ""
-#: src/unstrip.c:1753
+#: src/unstrip.c:1757
#, fuzzy, c-format
msgid "symbol [%zu] has invalid section index"
msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ç´¢å¼•"
-#: src/unstrip.c:1785
+#: src/unstrip.c:1789
#, fuzzy, c-format
msgid "group has invalid section index [%zd]"
msgstr "ä¸å½“ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ç´¢å¼•"
-#: src/unstrip.c:2060
+#: src/unstrip.c:2064
#, fuzzy, c-format
msgid "cannot read section data: %s"
msgstr "セクションデータを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“: %s"
-#: src/unstrip.c:2089
+#: src/unstrip.c:2093
#, c-format
msgid "cannot update ELF header: %s"
msgstr "ELF ヘッダーを更新ã§ãã¾ã›ã‚“: %s"
-#: src/unstrip.c:2113
+#: src/unstrip.c:2117
#, c-format
msgid "cannot update program header: %s"
msgstr ""
-#: src/unstrip.c:2118 src/unstrip.c:2200
+#: src/unstrip.c:2122 src/unstrip.c:2205
#, c-format
msgid "cannot write output file: %s"
msgstr ""
-#: src/unstrip.c:2169
+#: src/unstrip.c:2173
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:2172
+#: src/unstrip.c:2176
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:2191 src/unstrip.c:2242 src/unstrip.c:2254 src/unstrip.c:2340
+#: src/unstrip.c:2196 src/unstrip.c:2247 src/unstrip.c:2259 src/unstrip.c:2345
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr ""
-#: src/unstrip.c:2233
+#: src/unstrip.c:2238
msgid "WARNING: "
msgstr ""
-#: src/unstrip.c:2235
+#: src/unstrip.c:2240
msgid ", use --force"
msgstr ""
-#: src/unstrip.c:2258
+#: src/unstrip.c:2263
msgid "ELF header identification (e_ident) different"
msgstr ""
-#: src/unstrip.c:2261
+#: src/unstrip.c:2266
msgid "ELF header type (e_type) different"
msgstr ""
-#: src/unstrip.c:2264
+#: src/unstrip.c:2269
msgid "ELF header machine type (e_machine) different"
msgstr ""
-#: src/unstrip.c:2267
+#: src/unstrip.c:2272
msgid "stripped program header (e_phnum) smaller than unstripped"
msgstr ""
-#: src/unstrip.c:2297
+#: src/unstrip.c:2302
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2301
+#: src/unstrip.c:2306
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2316
+#: src/unstrip.c:2321
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2320
+#: src/unstrip.c:2325
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2333
+#: src/unstrip.c:2338
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr ""
-#: src/unstrip.c:2364
+#: src/unstrip.c:2369
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2497
+#: src/unstrip.c:2501
#, c-format
msgid "no matching modules found"
msgstr ""
-#: src/unstrip.c:2506
+#: src/unstrip.c:2510
#, c-format
msgid "matched more than one module"
msgstr ""
-#: src/unstrip.c:2550
+#: src/unstrip.c:2554
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
msgstr ""
-#: src/unstrip.c:2551
+#: src/unstrip.c:2555
msgid ""
"Combine stripped files with separate symbols and debug information.\n"
"\n"
@@ -6763,16 +6799,22 @@ msgstr ""
msgid "Run executable"
msgstr ""
-#: tests/dwflmodtest.c:213
+#: tests/dwflmodtest.c:209
#, fuzzy
msgid "Additionally show function names"
msgstr "出力é¸æŠž:"
-#: tests/dwflmodtest.c:214
+#: tests/dwflmodtest.c:210
msgid "Show instances of inlined functions"
msgstr ""
#, fuzzy
+#~ msgid ""
+#~ " [%6tx] base address\n"
+#~ " "
+#~ msgstr " [%6tx] ベースアドレス %s\n"
+
+#, fuzzy
#~ msgid "%s: error getting zero section: %s"
#~ msgstr "%s: ファイルを読込ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼: %s"
diff --git a/po/nl.po b/po/nl.po
deleted file mode 100644
index ff3e5d5f..00000000
--- a/po/nl.po
+++ /dev/null
@@ -1,5666 +0,0 @@
-# Dutch translation of elfutils
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-# Geert Warrink <geert.warrink@onsnet.nu>, 2009.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Elfutils\n"
-"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2010-04-21 07:41-0700\n"
-"PO-Revision-Date: 2009-09-01 18:02+0200\n"
-"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
-"Language-Team: nl <nl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
-
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2822
-#: src/readelf.c:3161 src/unstrip.c:2087 src/unstrip.c:2295
-#, c-format
-msgid "memory exhausted"
-msgstr ""
-
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
-msgid "no error"
-msgstr ""
-
-#: libasm/asm_error.c:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
-msgid "out of memory"
-msgstr ""
-
-#: libasm/asm_error.c:64 src/ldgeneric.c:2687
-#, c-format
-msgid "cannot create output file"
-msgstr ""
-
-#: libasm/asm_error.c:65
-msgid "invalid parameter"
-msgstr ""
-
-#: libasm/asm_error.c:66
-msgid "cannot change mode of output file"
-msgstr ""
-
-#: libasm/asm_error.c:67 src/ldgeneric.c:7001
-#, c-format
-msgid "cannot rename output file"
-msgstr ""
-
-#: libasm/asm_error.c:68
-msgid "duplicate symbol"
-msgstr ""
-
-#: libasm/asm_error.c:69
-msgid "invalid section type for operation"
-msgstr ""
-
-#: libasm/asm_error.c:70
-msgid "error during output of data"
-msgstr ""
-
-#: libasm/asm_error.c:71
-msgid "no backend support available"
-msgstr ""
-
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
-msgid "unknown error"
-msgstr ""
-
-#: libdw/dwarf_error.c:81
-msgid "invalid access"
-msgstr ""
-
-#: libdw/dwarf_error.c:82
-msgid "no regular file"
-msgstr ""
-
-#: libdw/dwarf_error.c:83
-msgid "I/O error"
-msgstr ""
-
-#: libdw/dwarf_error.c:84
-msgid "invalid ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:85
-msgid "no DWARF information"
-msgstr ""
-
-#: libdw/dwarf_error.c:86
-msgid "no ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:87
-msgid "cannot get ELF header"
-msgstr ""
-
-#: libdw/dwarf_error.c:89
-msgid "not implemented"
-msgstr ""
-
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
-msgid "invalid command"
-msgstr ""
-
-#: libdw/dwarf_error.c:91
-msgid "invalid version"
-msgstr ""
-
-#: libdw/dwarf_error.c:92
-msgid "invalid file"
-msgstr ""
-
-#: libdw/dwarf_error.c:93
-msgid "no entries found"
-msgstr ""
-
-#: libdw/dwarf_error.c:94
-msgid "invalid DWARF"
-msgstr ""
-
-#: libdw/dwarf_error.c:95
-msgid "no string data"
-msgstr ""
-
-#: libdw/dwarf_error.c:96
-msgid "no address value"
-msgstr ""
-
-#: libdw/dwarf_error.c:97
-msgid "no constant value"
-msgstr ""
-
-#: libdw/dwarf_error.c:98
-msgid "no reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:99
-msgid "invalid reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:100
-msgid ".debug_line section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:101
-msgid "invalid .debug_line section"
-msgstr ""
-
-#: libdw/dwarf_error.c:102
-msgid "debug information too big"
-msgstr ""
-
-#: libdw/dwarf_error.c:103
-msgid "invalid DWARF version"
-msgstr ""
-
-#: libdw/dwarf_error.c:104
-msgid "invalid directory index"
-msgstr ""
-
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
-msgid "address out of range"
-msgstr ""
-
-#: libdw/dwarf_error.c:106
-msgid "no location list value"
-msgstr ""
-
-#: libdw/dwarf_error.c:107
-msgid "no block data"
-msgstr ""
-
-#: libdw/dwarf_error.c:108
-msgid "invalid line index"
-msgstr ""
-
-#: libdw/dwarf_error.c:109
-msgid "invalid address range index"
-msgstr ""
-
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
-msgid "no matching address range"
-msgstr ""
-
-#: libdw/dwarf_error.c:111
-msgid "no flag value"
-msgstr ""
-
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
-msgid "invalid offset"
-msgstr ""
-
-#: libdw/dwarf_error.c:113
-msgid ".debug_ranges section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:114
-msgid "invalid CFI section"
-msgstr ""
-
-#: libdwfl/argp-std.c:67 src/unstrip.c:2237
-msgid "Input selection options:"
-msgstr ""
-
-#: libdwfl/argp-std.c:68
-msgid "Find addresses in FILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:70
-msgid "Find addresses from signatures found in COREFILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:72
-msgid "Find addresses in files mapped into process PID"
-msgstr ""
-
-#: libdwfl/argp-std.c:74
-msgid ""
-"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
-"format"
-msgstr ""
-
-#: libdwfl/argp-std.c:76
-msgid "Find addresses in the running kernel"
-msgstr ""
-
-#: libdwfl/argp-std.c:78
-msgid "Kernel with all modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:80
-msgid "Search path for separate debuginfo files"
-msgstr ""
-
-#: libdwfl/argp-std.c:163
-msgid "only one of -e, -p, -k, -K, or --core allowed"
-msgstr ""
-
-#: libdwfl/argp-std.c:223
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr ""
-
-#: libdwfl/argp-std.c:241
-msgid "No modules recognized in core file"
-msgstr ""
-
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr ""
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr ""
-
-#: libdwfl/libdwflP.h:73
-msgid "See errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:74
-msgid "See elf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:75
-msgid "See dwarf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:76
-msgid "See ebl_errno (XXX missing)"
-msgstr ""
-
-#: libdwfl/libdwflP.h:77
-msgid "gzip decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:78
-msgid "bzip2 decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:79
-msgid "LZMA decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:80
-msgid "no support library found for machine"
-msgstr ""
-
-#: libdwfl/libdwflP.h:81
-msgid "Callbacks missing for ET_REL file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:82
-msgid "Unsupported relocation type"
-msgstr ""
-
-#: libdwfl/libdwflP.h:83
-msgid "r_offset is bogus"
-msgstr ""
-
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
-msgid "offset out of range"
-msgstr ""
-
-#: libdwfl/libdwflP.h:85
-msgid "relocation refers to undefined symbol"
-msgstr ""
-
-#: libdwfl/libdwflP.h:86
-msgid "Callback returned failure"
-msgstr ""
-
-#: libdwfl/libdwflP.h:87
-msgid "No DWARF information found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:88
-msgid "No symbol table found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:89
-msgid "No ELF program headers"
-msgstr ""
-
-#: libdwfl/libdwflP.h:90
-msgid "address range overlaps an existing module"
-msgstr ""
-
-#: libdwfl/libdwflP.h:93
-msgid "image truncated"
-msgstr ""
-
-#: libdwfl/libdwflP.h:94
-msgid "ELF file opened"
-msgstr ""
-
-#: libdwfl/libdwflP.h:95
-msgid "not a valid ELF file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:96
-msgid "cannot handle DWARF type description"
-msgstr ""
-
-#: libebl/eblbackendname.c:63
-msgid "No backend"
-msgstr ""
-
-#: libebl/eblcorenotetypename.c:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:86 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
-msgid "<unknown>"
-msgstr ""
-
-#: libebl/ebldynamictagname.c:126
-#, c-format
-msgid "<unknown>: %#<PRIx64>"
-msgstr ""
-
-#: libebl/eblobjnote.c:76
-#, c-format
-msgid " Build ID: "
-msgstr ""
-
-#: libebl/eblobjnote.c:87
-#, c-format
-msgid " Linker version: %.*s\n"
-msgstr ""
-
-#: libebl/eblobjnote.c:136
-#, c-format
-msgid " OS: %s, ABI: "
-msgstr ""
-
-#: libebl/eblosabiname.c:95
-msgid "Stand alone"
-msgstr ""
-
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
-#, c-format
-msgid "<unknown>: %d"
-msgstr ""
-
-#: libelf/elf_error.c:88
-msgid "unknown version"
-msgstr ""
-
-#: libelf/elf_error.c:92
-msgid "unknown type"
-msgstr ""
-
-#: libelf/elf_error.c:96
-msgid "invalid `Elf' handle"
-msgstr ""
-
-#: libelf/elf_error.c:100
-msgid "invalid size of source operand"
-msgstr ""
-
-#: libelf/elf_error.c:104
-msgid "invalid size of destination operand"
-msgstr ""
-
-#: libelf/elf_error.c:108 src/readelf.c:4779
-#, c-format
-msgid "invalid encoding"
-msgstr ""
-
-#: libelf/elf_error.c:116
-msgid "invalid file descriptor"
-msgstr ""
-
-#: libelf/elf_error.c:120
-msgid "invalid operation"
-msgstr ""
-
-#: libelf/elf_error.c:124
-msgid "ELF version not set"
-msgstr ""
-
-#: libelf/elf_error.c:136
-msgid "invalid fmag field in archive header"
-msgstr ""
-
-#: libelf/elf_error.c:140
-msgid "invalid archive file"
-msgstr ""
-
-#: libelf/elf_error.c:144
-msgid "descriptor is not for an archive"
-msgstr ""
-
-#: libelf/elf_error.c:148
-msgid "no index available"
-msgstr ""
-
-#: libelf/elf_error.c:152
-msgid "cannot read data from file"
-msgstr ""
-
-#: libelf/elf_error.c:156
-msgid "cannot write data to file"
-msgstr ""
-
-#: libelf/elf_error.c:160
-msgid "invalid binary class"
-msgstr ""
-
-#: libelf/elf_error.c:164
-msgid "invalid section index"
-msgstr ""
-
-#: libelf/elf_error.c:168
-msgid "invalid operand"
-msgstr ""
-
-#: libelf/elf_error.c:172
-msgid "invalid section"
-msgstr ""
-
-#: libelf/elf_error.c:180
-msgid "executable header not created first"
-msgstr ""
-
-#: libelf/elf_error.c:184
-msgid "file descriptor disabled"
-msgstr ""
-
-#: libelf/elf_error.c:188
-msgid "archive/member file descriptor mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:196
-msgid "cannot manipulate null section"
-msgstr ""
-
-#: libelf/elf_error.c:200
-msgid "data/scn mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:204
-msgid "invalid section header"
-msgstr ""
-
-#: libelf/elf_error.c:208 src/readelf.c:6242 src/readelf.c:6343
-#, c-format
-msgid "invalid data"
-msgstr ""
-
-#: libelf/elf_error.c:212
-msgid "unknown data encoding"
-msgstr ""
-
-#: libelf/elf_error.c:216
-msgid "section `sh_size' too small for data"
-msgstr ""
-
-#: libelf/elf_error.c:220
-msgid "invalid section alignment"
-msgstr ""
-
-#: libelf/elf_error.c:224
-msgid "invalid section entry size"
-msgstr ""
-
-#: libelf/elf_error.c:228
-msgid "update() for write on read-only file"
-msgstr ""
-
-#: libelf/elf_error.c:232
-msgid "no such file"
-msgstr ""
-
-#: libelf/elf_error.c:236
-msgid "only relocatable files can contain section groups"
-msgstr ""
-
-#: libelf/elf_error.c:241
-msgid ""
-"program header only allowed in executables, shared objects, and core files"
-msgstr ""
-
-#: libelf/elf_error.c:248
-msgid "file has no program header"
-msgstr ""
-
-#: src/addr2line.c:66
-msgid "Output selection options:"
-msgstr ""
-
-#: src/addr2line.c:67
-msgid "Show only base names of source files"
-msgstr ""
-
-#: src/addr2line.c:69
-msgid "Show absolute file names using compilation directory"
-msgstr ""
-
-#: src/addr2line.c:70
-msgid "Also show function names"
-msgstr ""
-
-#: src/addr2line.c:71
-msgid "Also show symbol or section names"
-msgstr ""
-
-#: src/addr2line.c:73
-msgid "Treat addresses as offsets relative to NAME section."
-msgstr ""
-
-#: src/addr2line.c:75 src/elfcmp.c:75 src/findtextrel.c:75 src/nm.c:103
-#: src/strings.c:83
-msgid "Miscellaneous:"
-msgstr ""
-
-#: src/addr2line.c:84
-msgid ""
-"Locate source files and line information for ADDRs (in a.out by default)."
-msgstr ""
-
-#: src/addr2line.c:88
-msgid "[ADDR...]"
-msgstr ""
-
-#: src/addr2line.c:185 src/ar.c:289 src/elfcmp.c:555 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:253 src/objdump.c:181
-#: src/ranlib.c:136 src/readelf.c:449 src/size.c:219 src/strings.c:227
-#: src/strip.c:204 src/unstrip.c:234
-#, c-format
-msgid ""
-"Copyright (C) %s Red Hat, Inc.\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-msgstr ""
-
-#: src/addr2line.c:190 src/ar.c:294 src/elfcmp.c:560 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:258 src/objdump.c:186
-#: src/ranlib.c:141 src/readelf.c:454 src/size.c:224 src/strings.c:232
-#: src/strip.c:209 src/unstrip.c:239
-#, c-format
-msgid "Written by %s.\n"
-msgstr ""
-
-#: src/addr2line.c:405
-#, c-format
-msgid "Section syntax requires exactly one module"
-msgstr ""
-
-#: src/addr2line.c:428
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside section '%s'"
-msgstr ""
-
-#: src/addr2line.c:461
-#, c-format
-msgid "cannot find symbol '%s'"
-msgstr ""
-
-#: src/addr2line.c:466
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
-msgstr ""
-
-#: src/ar.c:76
-msgid "Commands:"
-msgstr ""
-
-#: src/ar.c:77
-msgid "Delete files from archive."
-msgstr ""
-
-#: src/ar.c:78
-msgid "Move files in archive."
-msgstr ""
-
-#: src/ar.c:79
-msgid "Print files in archive."
-msgstr ""
-
-#: src/ar.c:80
-msgid "Quick append files to archive."
-msgstr ""
-
-#: src/ar.c:82
-msgid "Replace existing or insert new file into archive."
-msgstr ""
-
-#: src/ar.c:83
-msgid "Display content of archive."
-msgstr ""
-
-#: src/ar.c:84
-msgid "Extract files from archive."
-msgstr ""
-
-#: src/ar.c:86
-msgid "Command Modifiers:"
-msgstr ""
-
-#: src/ar.c:87
-msgid "Preserve original dates."
-msgstr ""
-
-#: src/ar.c:88
-msgid "Use instance [COUNT] of name."
-msgstr ""
-
-#: src/ar.c:90
-msgid "Do not replace existing files with extracted files."
-msgstr ""
-
-#: src/ar.c:91
-msgid "Allow filename to be truncated if necessary."
-msgstr ""
-
-#: src/ar.c:93
-msgid "Provide verbose output."
-msgstr ""
-
-#: src/ar.c:94
-msgid "Force regeneration of symbol table."
-msgstr ""
-
-#: src/ar.c:95
-msgid "Insert file after [MEMBER]."
-msgstr ""
-
-#: src/ar.c:96
-msgid "Insert file before [MEMBER]."
-msgstr ""
-
-#: src/ar.c:97
-msgid "Same as -b."
-msgstr ""
-
-#: src/ar.c:98
-msgid "Suppress message when library has to be created."
-msgstr ""
-
-#: src/ar.c:100
-msgid "Use full path for file matching."
-msgstr ""
-
-#: src/ar.c:101
-msgid "Update only older files in archive."
-msgstr ""
-
-#: src/ar.c:107
-msgid "Create, modify, and extract from archives."
-msgstr ""
-
-#: src/ar.c:110
-msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
-msgstr ""
-
-#: src/ar.c:192
-#, c-format
-msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
-msgstr ""
-
-#: src/ar.c:197
-#, c-format
-msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
-msgstr ""
-
-#: src/ar.c:213
-#, c-format
-msgid "'N' is only meaningful with the 'x' and 'd' options"
-msgstr ""
-
-#: src/ar.c:218
-#, c-format
-msgid "COUNT parameter required"
-msgstr ""
-
-#: src/ar.c:230
-#, c-format
-msgid "invalid COUNT parameter %s"
-msgstr ""
-
-#: src/ar.c:237
-#, c-format
-msgid "'%c' is only meaningful with the 'x' option"
-msgstr ""
-
-#: src/ar.c:243
-#, c-format
-msgid "archive name required"
-msgstr ""
-
-#: src/ar.c:314
-#, c-format
-msgid "More than one operation specified"
-msgstr ""
-
-#: src/ar.c:404
-#, c-format
-msgid "cannot open archive '%s'"
-msgstr ""
-
-#: src/ar.c:414
-#, c-format
-msgid "cannot open archive '%s': %s"
-msgstr ""
-
-#: src/ar.c:418
-#, c-format
-msgid "%s: not an archive file"
-msgstr ""
-
-#: src/ar.c:422
-#, c-format
-msgid "cannot stat archive '%s'"
-msgstr ""
-
-#: src/ar.c:434
-#, c-format
-msgid "no entry %s in archive\n"
-msgstr ""
-
-#: src/ar.c:487 src/ar.c:929 src/ar.c:1129
-#, c-format
-msgid "cannot create hash table"
-msgstr ""
-
-#: src/ar.c:494 src/ar.c:936 src/ar.c:1138
-#, c-format
-msgid "cannot insert into hash table"
-msgstr ""
-
-#: src/ar.c:502 src/ranlib.c:176
-#, c-format
-msgid "cannot stat '%s'"
-msgstr ""
-
-#: src/ar.c:598
-#, c-format
-msgid "cannot read content of %s: %s"
-msgstr ""
-
-#: src/ar.c:641
-#, c-format
-msgid "cannot open %.*s"
-msgstr ""
-
-#: src/ar.c:663
-#, c-format
-msgid "failed to write %s"
-msgstr ""
-
-#: src/ar.c:675
-#, c-format
-msgid "cannot change mode of %s"
-msgstr ""
-
-#: src/ar.c:691
-#, c-format
-msgid "cannot change modification time of %s"
-msgstr ""
-
-#: src/ar.c:737
-#, c-format
-msgid "cannot rename temporary file to %.*s"
-msgstr ""
-
-#: src/ar.c:773 src/ar.c:1021 src/ar.c:1419 src/ranlib.c:250
-#, c-format
-msgid "cannot create new file"
-msgstr ""
-
-#: src/ar.c:1220
-#, c-format
-msgid "position member %s not found"
-msgstr ""
-
-#: src/ar.c:1230
-#, c-format
-msgid "%s: no entry %s in archive!\n"
-msgstr ""
-
-#: src/ar.c:1259 src/ldgeneric.c:519 src/objdump.c:257
-#, c-format
-msgid "cannot open %s"
-msgstr ""
-
-#: src/ar.c:1264
-#, c-format
-msgid "cannot stat %s"
-msgstr ""
-
-#: src/ar.c:1270
-#, c-format
-msgid "%s is no regular file"
-msgstr ""
-
-#: src/ar.c:1283
-#, c-format
-msgid "cannot get ELF descriptor for %s: %s\n"
-msgstr ""
-
-#: src/ar.c:1302
-#, c-format
-msgid "cannot read %s: %s"
-msgstr ""
-
-#: src/arlib.c:215
-#, c-format
-msgid "the archive '%s' is too large"
-msgstr ""
-
-#: src/arlib.c:228
-#, c-format
-msgid "cannot read ELF header of %s(%s): %s"
-msgstr ""
-
-#: src/elfcmp.c:69
-msgid "Control options:"
-msgstr ""
-
-#: src/elfcmp.c:70
-msgid ""
-"Control treatment of gaps in loadable segments [ignore|match] (default: "
-"ignore)"
-msgstr ""
-
-#: src/elfcmp.c:72
-msgid "Ignore permutation of buckets in SHT_HASH section"
-msgstr ""
-
-#: src/elfcmp.c:73
-msgid "Output nothing; yield exit status only"
-msgstr ""
-
-#: src/elfcmp.c:80
-msgid "Compare relevant parts of two ELF files for equality."
-msgstr ""
-
-#: src/elfcmp.c:84
-msgid "FILE1 FILE2"
-msgstr ""
-
-#: src/elfcmp.c:140
-msgid "Invalid number of parameters.\n"
-msgstr ""
-
-#: src/elfcmp.c:168 src/elfcmp.c:173
-#, c-format
-msgid "cannot get ELF header of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:190
-#, c-format
-msgid "%s %s diff: ELF header"
-msgstr ""
-
-#: src/elfcmp.c:198 src/elfcmp.c:201
-#, c-format
-msgid "cannot get section count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:206
-#, c-format
-msgid "%s %s diff: section count"
-msgstr ""
-
-#: src/elfcmp.c:214 src/elfcmp.c:217
-#, c-format
-msgid "cannot get program header count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:222
-#, c-format
-msgid "%s %s diff: program header count"
-msgstr ""
-
-#: src/elfcmp.c:281
-#, c-format
-msgid "%s %s differ: section header"
-msgstr ""
-
-#: src/elfcmp.c:309 src/elfcmp.c:315
-#, c-format
-msgid "cannot get content of section %zu in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:331 src/elfcmp.c:337
-#, c-format
-msgid "cannot get symbol in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:358
-#, c-format
-msgid "%s %s differ: symbol table [%zu]"
-msgstr ""
-
-#: src/elfcmp.c:361
-#, c-format
-msgid "%s %s differ: symbol table [%zu,%zu]"
-msgstr ""
-
-#: src/elfcmp.c:409
-#, c-format
-msgid "%s %s differ: section [%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:413
-#, c-format
-msgid "%s %s differ: section [%zu,%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:429
-#, c-format
-msgid "%s %s differ: unequal amount of important sections"
-msgstr ""
-
-#: src/elfcmp.c:463 src/elfcmp.c:468
-#, c-format
-msgid "cannot load data of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:487 src/elfcmp.c:493
-#, c-format
-msgid "cannot get program header entry %d of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:499
-#, c-format
-msgid "%s %s differ: program header %d"
-msgstr ""
-
-#: src/elfcmp.c:524
-#, c-format
-msgid "%s %s differ: gap"
-msgstr ""
-
-#: src/elfcmp.c:583
-#, c-format
-msgid "Invalid value '%s' for --gaps parameter."
-msgstr ""
-
-#: src/elfcmp.c:607 src/findtextrel.c:229 src/ldgeneric.c:1767
-#: src/ldgeneric.c:4257 src/nm.c:363 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:433 src/strip.c:468 src/unstrip.c:1900
-#: src/unstrip.c:1929
-#, c-format
-msgid "cannot open '%s'"
-msgstr ""
-
-#: src/elfcmp.c:611 src/findtextrel.c:236 src/ranlib.c:186
-#, c-format
-msgid "cannot create ELF descriptor for '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:616
-#, c-format
-msgid "cannot create EBL descriptor for '%s'"
-msgstr ""
-
-#: src/elfcmp.c:634
-#, c-format
-msgid "cannot get section header of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:644
-#, c-format
-msgid "cannot get content of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:654 src/elfcmp.c:668
-#, c-format
-msgid "cannot get relocation: %s"
-msgstr ""
-
-#: src/elflint.c:72
-msgid "Be extremely strict, flag level 2 features."
-msgstr ""
-
-#: src/elflint.c:73
-msgid "Do not print anything if successful"
-msgstr ""
-
-#: src/elflint.c:74
-msgid "Binary is a separate debuginfo file"
-msgstr ""
-
-#: src/elflint.c:76
-msgid ""
-"Binary has been created with GNU ld and is therefore known to be broken in "
-"certain ways"
-msgstr ""
-
-#: src/elflint.c:82
-msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
-msgstr ""
-
-#: src/elflint.c:86 src/readelf.c:118
-msgid "FILE..."
-msgstr ""
-
-#: src/elflint.c:159 src/readelf.c:272
-#, c-format
-msgid "cannot open input file"
-msgstr ""
-
-#: src/elflint.c:166
-#, c-format
-msgid "cannot generate Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:185
-#, c-format
-msgid "error while closing Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:189
-msgid "No errors"
-msgstr ""
-
-#: src/elflint.c:223 src/readelf.c:425
-msgid "Missing file name.\n"
-msgstr ""
-
-#: src/elflint.c:302
-#, c-format
-msgid " error while freeing sub-ELF descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:310
-#, c-format
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr ""
-
-#: src/elflint.c:370
-#, c-format
-msgid "e_ident[%d] == %d is no known class\n"
-msgstr ""
-
-#: src/elflint.c:375
-#, c-format
-msgid "e_ident[%d] == %d is no known data encoding\n"
-msgstr ""
-
-#: src/elflint.c:379
-#, c-format
-msgid "unknown ELF header version number e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:385
-#, c-format
-msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
-msgstr ""
-
-#: src/elflint.c:391
-#, c-format
-msgid "unsupport ABI version e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:396
-#, c-format
-msgid "e_ident[%zu] is not zero\n"
-msgstr ""
-
-#: src/elflint.c:401
-#, c-format
-msgid "unknown object file type %d\n"
-msgstr ""
-
-#: src/elflint.c:408
-#, c-format
-msgid "unknown machine type %d\n"
-msgstr ""
-
-#: src/elflint.c:412
-#, c-format
-msgid "unknown object file version\n"
-msgstr ""
-
-#: src/elflint.c:418
-#, c-format
-msgid "invalid program header offset\n"
-msgstr ""
-
-#: src/elflint.c:420
-#, c-format
-msgid "executables and DSOs cannot have zero program header offset\n"
-msgstr ""
-
-#: src/elflint.c:424
-#, c-format
-msgid "invalid number of program header entries\n"
-msgstr ""
-
-#: src/elflint.c:432
-#, c-format
-msgid "invalid section header table offset\n"
-msgstr ""
-
-#: src/elflint.c:435
-#, c-format
-msgid "section header table must be present\n"
-msgstr ""
-
-#: src/elflint.c:449
-#, c-format
-msgid "invalid number of section header table entries\n"
-msgstr ""
-
-#: src/elflint.c:466
-#, c-format
-msgid "invalid section header index\n"
-msgstr ""
-
-#: src/elflint.c:480
-#, c-format
-msgid "invalid number of program header table entries\n"
-msgstr ""
-
-#: src/elflint.c:489
-#, c-format
-msgid "invalid machine flags: %s\n"
-msgstr ""
-
-#: src/elflint.c:496 src/elflint.c:513
-#, c-format
-msgid "invalid ELF header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:499 src/elflint.c:516
-#, c-format
-msgid "invalid program header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:502 src/elflint.c:519
-#, c-format
-msgid "invalid program header position or size\n"
-msgstr ""
-
-#: src/elflint.c:505 src/elflint.c:522
-#, c-format
-msgid "invalid section header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:508 src/elflint.c:525
-#, c-format
-msgid "invalid section header position or size\n"
-msgstr ""
-
-#: src/elflint.c:569
-#, c-format
-msgid ""
-"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
-"group\n"
-msgstr ""
-
-#: src/elflint.c:573
-#, c-format
-msgid ""
-"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
-msgstr ""
-
-#: src/elflint.c:589 src/elflint.c:1432 src/elflint.c:1482 src/elflint.c:1591
-#: src/elflint.c:2185 src/elflint.c:2699 src/elflint.c:2860 src/elflint.c:2990
-#: src/elflint.c:3162 src/elflint.c:4062
-#, c-format
-msgid "section [%2d] '%s': cannot get section data\n"
-msgstr ""
-
-#: src/elflint.c:602 src/elflint.c:1598
-#, c-format
-msgid ""
-"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
-"type is not SHT_STRTAB\n"
-msgstr ""
-
-#: src/elflint.c:625
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol table cannot have more than one extended index "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:636
-#, c-format
-msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
-msgstr ""
-
-#: src/elflint.c:645
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
-#, c-format
-msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:668
-#, c-format
-msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:678
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:687
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
-msgstr ""
-
-#: src/elflint.c:700
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
-"section index section\n"
-msgstr ""
-
-#: src/elflint.c:706
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
-msgstr ""
-
-#: src/elflint.c:718
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
-msgstr ""
-
-#: src/elflint.c:726
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
-msgstr ""
-
-#: src/elflint.c:732
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
-msgstr ""
-
-#: src/elflint.c:737
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
-msgstr ""
-
-#: src/elflint.c:745
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
-msgstr ""
-
-#: src/elflint.c:749
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
-msgstr ""
-
-#: src/elflint.c:753
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
-msgstr ""
-
-#: src/elflint.c:785
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:791 src/elflint.c:816 src/elflint.c:859
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:800
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
-msgstr ""
-
-#: src/elflint.c:810 src/elflint.c:852
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:837
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
-msgstr ""
-
-#: src/elflint.c:845
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:872
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:879
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:886
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
-msgstr ""
-
-#: src/elflint.c:936
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section [%"
-"2d]\n"
-msgstr ""
-
-#: src/elflint.c:943
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:959
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
-"match %s section address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:966
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
-"match %s section size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:974
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:990
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
-"segment address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:997
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
-"segment size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:1010
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
-"default visibility\n"
-msgstr ""
-
-#: src/elflint.c:1014
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
-msgstr ""
-
-#: src/elflint.c:1059
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
-msgstr ""
-
-#: src/elflint.c:1068 src/elflint.c:1120
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
-msgstr ""
-
-#: src/elflint.c:1093 src/elflint.c:1145
-#, c-format
-msgid ""
-"section [%2d] '%s': relative relocations after index %d as specified by "
-"DT_RELCOUNT\n"
-msgstr ""
-
-#: src/elflint.c:1099 src/elflint.c:1151
-#, c-format
-msgid ""
-"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
-"specified %d relative relocations\n"
-msgstr ""
-
-#: src/elflint.c:1111
-#, c-format
-msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
-msgstr ""
-
-#: src/elflint.c:1193
-#, c-format
-msgid "section [%2d] '%s': invalid destination section index\n"
-msgstr ""
-
-#: src/elflint.c:1206
-#, c-format
-msgid "section [%2d] '%s': invalid destination section type\n"
-msgstr ""
-
-#: src/elflint.c:1214
-#, c-format
-msgid "section [%2d] '%s': sh_info should be zero\n"
-msgstr ""
-
-#: src/elflint.c:1221
-#, c-format
-msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
-msgstr ""
-
-#: src/elflint.c:1228
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-
-#: src/elflint.c:1288
-#, c-format
-msgid "text relocation flag set but there is no read-only segment\n"
-msgstr ""
-
-#: src/elflint.c:1315
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid type\n"
-msgstr ""
-
-#: src/elflint.c:1323
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
-"type\n"
-msgstr ""
-
-#: src/elflint.c:1331
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
-msgstr ""
-
-#: src/elflint.c:1349
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
-"be used with %s\n"
-msgstr ""
-
-#: src/elflint.c:1366
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1381
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: copy relocation against symbol of type %"
-"s\n"
-msgstr ""
-
-#: src/elflint.c:1402
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: read-only section modified but text "
-"relocation flag not set\n"
-msgstr ""
-
-#: src/elflint.c:1417
-#, c-format
-msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
-msgstr ""
-
-#: src/elflint.c:1456 src/elflint.c:1506
-#, c-format
-msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1586
-#, c-format
-msgid "more than one dynamic section present\n"
-msgstr ""
-
-#: src/elflint.c:1604
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
-msgstr ""
-
-#: src/elflint.c:1609 src/elflint.c:1901
-#, c-format
-msgid "section [%2d] '%s': sh_info not zero\n"
-msgstr ""
-
-#: src/elflint.c:1619
-#, c-format
-msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1627
-#, c-format
-msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
-msgstr ""
-
-#: src/elflint.c:1634
-#, c-format
-msgid "section [%2d] '%s': entry %zu: unknown tag\n"
-msgstr ""
-
-#: src/elflint.c:1645
-#, c-format
-msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
-msgstr ""
-
-#: src/elflint.c:1655
-#, c-format
-msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
-msgstr ""
-
-#: src/elflint.c:1673
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
-msgstr ""
-
-#: src/elflint.c:1695
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: pointer does not match address of section [%"
-"2d] '%s' referenced by sh_link\n"
-msgstr ""
-
-#: src/elflint.c:1738
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:1753
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must be valid offset in section [%"
-"2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:1773 src/elflint.c:1801
-#, c-format
-msgid "section [%2d] '%s': contains %s entry but not %s\n"
-msgstr ""
-
-#: src/elflint.c:1785
-#, c-format
-msgid "section [%2d] '%s': mandatory tag %s not present\n"
-msgstr ""
-
-#: src/elflint.c:1794
-#, c-format
-msgid "section [%2d] '%s': no hash section present\n"
-msgstr ""
-
-#: src/elflint.c:1809 src/elflint.c:1816
-#, c-format
-msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
-msgstr ""
-
-#: src/elflint.c:1826 src/elflint.c:1830
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
-msgstr ""
-
-#: src/elflint.c:1836
-#, c-format
-msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
-msgstr ""
-
-#: src/elflint.c:1847 src/elflint.c:1851 src/elflint.c:1855 src/elflint.c:1859
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
-msgstr ""
-
-#: src/elflint.c:1871
-#, c-format
-msgid ""
-"section [%2d] '%s': only relocatable files can have extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1881
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index section not for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1886
-#, c-format
-msgid "cannot get data for symbol section\n"
-msgstr ""
-
-#: src/elflint.c:1889
-#, c-format
-msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
-msgstr ""
-
-#: src/elflint.c:1896
-#, c-format
-msgid "section [%2d] '%s': extended index table too small for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1911
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
-"same symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1922
-#, c-format
-msgid "symbol 0 should have zero extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1934
-#, c-format
-msgid "cannot get data for symbol %zu\n"
-msgstr ""
-
-#: src/elflint.c:1939
-#, c-format
-msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
-msgstr ""
-
-#: src/elflint.c:1955 src/elflint.c:1996
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
-msgstr ""
-
-#: src/elflint.c:1967 src/elflint.c:2008
-#, c-format
-msgid "section [%2d] '%s': chain array too large\n"
-msgstr ""
-
-#: src/elflint.c:1976 src/elflint.c:2017
-#, c-format
-msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1982
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2023
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2038
-#, c-format
-msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
-msgstr ""
-
-#: src/elflint.c:2049
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
-msgstr ""
-
-#: src/elflint.c:2057
-#, c-format
-msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
-msgstr ""
-
-#: src/elflint.c:2089
-#, c-format
-msgid ""
-"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
-msgstr ""
-
-#: src/elflint.c:2110
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
-"undefined\n"
-msgstr ""
-
-#: src/elflint.c:2121
-#, c-format
-msgid ""
-"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
-msgstr ""
-
-#: src/elflint.c:2152
-#, c-format
-msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2157
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2163
-#, c-format
-msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
-msgstr ""
-
-#: src/elflint.c:2176
-#, c-format
-msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
-msgstr ""
-
-#: src/elflint.c:2194
-#, c-format
-msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2202
-#, c-format
-msgid "section [%2d] '%s': hash table entry size incorrect\n"
-msgstr ""
-
-#: src/elflint.c:2207
-#, c-format
-msgid "section [%2d] '%s': not marked to be allocated\n"
-msgstr ""
-
-#: src/elflint.c:2212
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table has not even room for initial administrative "
-"entries\n"
-msgstr ""
-
-#: src/elflint.c:2260
-#, c-format
-msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
-msgstr ""
-
-#: src/elflint.c:2338 src/elflint.c:2342
-#, c-format
-msgid "section [%2zu] '%s': reference to symbol index 0\n"
-msgstr ""
-
-#: src/elflint.c:2349
-#, c-format
-msgid ""
-"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2361
-#, c-format
-msgid ""
-"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2377
-#, c-format
-msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
-msgstr ""
-
-#: src/elflint.c:2397
-#, c-format
-msgid ""
-"section [%2d] '%s': section groups only allowed in relocatable object files\n"
-msgstr ""
-
-#: src/elflint.c:2408
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol table: %s\n"
-msgstr ""
-
-#: src/elflint.c:2413
-#, c-format
-msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2419
-#, c-format
-msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
-msgstr ""
-
-#: src/elflint.c:2424
-#, c-format
-msgid "section [%2d] '%s': sh_flags not zero\n"
-msgstr ""
-
-#: src/elflint.c:2431
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol for signature\n"
-msgstr ""
-
-#: src/elflint.c:2436
-#, c-format
-msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
-msgstr ""
-
-#: src/elflint.c:2442
-#, c-format
-msgid "section [%2d] '%s': sh_flags not set correctly\n"
-msgstr ""
-
-#: src/elflint.c:2448
-#, c-format
-msgid "section [%2d] '%s': cannot get data: %s\n"
-msgstr ""
-
-#: src/elflint.c:2457
-#, c-format
-msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
-msgstr ""
-
-#: src/elflint.c:2462
-#, c-format
-msgid "section [%2d] '%s': section group without flags word\n"
-msgstr ""
-
-#: src/elflint.c:2468
-#, c-format
-msgid "section [%2d] '%s': section group without member\n"
-msgstr ""
-
-#: src/elflint.c:2472
-#, c-format
-msgid "section [%2d] '%s': section group with only one member\n"
-msgstr ""
-
-#: src/elflint.c:2483
-#, c-format
-msgid "section [%2d] '%s': unknown section group flags\n"
-msgstr ""
-
-#: src/elflint.c:2495
-#, c-format
-msgid "section [%2d] '%s': section index %Zu out of range\n"
-msgstr ""
-
-#: src/elflint.c:2504
-#, c-format
-msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:2511
-#, c-format
-msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2517
-#, c-format
-msgid ""
-"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
-"SHF_GROUP flag set\n"
-msgstr ""
-
-#: src/elflint.c:2524
-#, c-format
-msgid "section [%2d] '%s' is contained in more than one section group\n"
-msgstr ""
-
-#: src/elflint.c:2713
-#, c-format
-msgid ""
-"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
-"dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2724
-#, c-format
-msgid ""
-"section [%2d] '%s' has different number of entries than symbol table [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:2740
-#, c-format
-msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
-msgstr ""
-
-#: src/elflint.c:2756
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
-msgstr ""
-
-#: src/elflint.c:2764
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
-msgstr ""
-
-#: src/elflint.c:2778
-#, c-format
-msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
-msgstr ""
-
-#: src/elflint.c:2783
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
-msgstr ""
-
-#: src/elflint.c:2793
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
-msgstr ""
-
-#: src/elflint.c:2845
-#, c-format
-msgid "more than one version reference section present\n"
-msgstr ""
-
-#: src/elflint.c:2853 src/elflint.c:2982
-#, c-format
-msgid "section [%2d] '%s': sh_link does not link to string table\n"
-msgstr ""
-
-#: src/elflint.c:2876 src/elflint.c:3034
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong version %d\n"
-msgstr ""
-
-#: src/elflint.c:2882 src/elflint.c:3040
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:2890
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid file reference\n"
-msgstr ""
-
-#: src/elflint.c:2898
-#, c-format
-msgid "section [%2d] '%s': entry %d references unknown dependency\n"
-msgstr ""
-
-#: src/elflint.c:2910
-#, c-format
-msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:2917
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
-"reference\n"
-msgstr ""
-
-#: src/elflint.c:2924
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: %"
-"#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:2934
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
-"name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2945
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
-msgstr ""
-
-#: src/elflint.c:2961 src/elflint.c:3119
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
-msgstr ""
-
-#: src/elflint.c:2974
-#, c-format
-msgid "more than one version definition section present\n"
-msgstr ""
-
-#: src/elflint.c:3019
-#, c-format
-msgid "section [%2d] '%s': more than one BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3023
-#, c-format
-msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
-msgstr ""
-
-#: src/elflint.c:3029
-#, c-format
-msgid "section [%2d] '%s': entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:3053
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid name reference\n"
-msgstr ""
-
-#: src/elflint.c:3060
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:3069
-#, c-format
-msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3088
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3103
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3125
-#, c-format
-msgid "section [%2d] '%s': no BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3141
-#, c-format
-msgid "section [%2d] '%s': unknown parent version '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3154
-#, c-format
-msgid "section [%2d] '%s': empty object attributes section\n"
-msgstr ""
-
-#: src/elflint.c:3175
-#, c-format
-msgid "section [%2d] '%s': unrecognized attribute format\n"
-msgstr ""
-
-#: src/elflint.c:3191
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3200
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3212
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
-#: src/elflint.c:3229
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-msgstr ""
-
-#: src/elflint.c:3238
-#, c-format
-msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3247
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3260
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3271
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3289
-#, c-format
-msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
-msgstr ""
-
-#: src/elflint.c:3300
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
-msgstr ""
-
-#: src/elflint.c:3313
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3317
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3327
-#, c-format
-msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
-msgstr ""
-
-#: src/elflint.c:3333
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3422
-#, c-format
-msgid "cannot get section header of zeroth section\n"
-msgstr ""
-
-#: src/elflint.c:3426
-#, c-format
-msgid "zeroth section has nonzero name\n"
-msgstr ""
-
-#: src/elflint.c:3428
-#, c-format
-msgid "zeroth section has nonzero type\n"
-msgstr ""
-
-#: src/elflint.c:3430
-#, c-format
-msgid "zeroth section has nonzero flags\n"
-msgstr ""
-
-#: src/elflint.c:3432
-#, c-format
-msgid "zeroth section has nonzero address\n"
-msgstr ""
-
-#: src/elflint.c:3434
-#, c-format
-msgid "zeroth section has nonzero offset\n"
-msgstr ""
-
-#: src/elflint.c:3436
-#, c-format
-msgid "zeroth section has nonzero align value\n"
-msgstr ""
-
-#: src/elflint.c:3438
-#, c-format
-msgid "zeroth section has nonzero entry size value\n"
-msgstr ""
-
-#: src/elflint.c:3441
-#, c-format
-msgid ""
-"zeroth section has nonzero size value while ELF header has nonzero shnum "
-"value\n"
-msgstr ""
-
-#: src/elflint.c:3445
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in shstrndx\n"
-msgstr ""
-
-#: src/elflint.c:3449
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in phnum\n"
-msgstr ""
-
-#: src/elflint.c:3466
-#, c-format
-msgid "cannot get section header for section [%2zu] '%s': %s\n"
-msgstr ""
-
-#: src/elflint.c:3475
-#, c-format
-msgid "section [%2zu]: invalid name\n"
-msgstr ""
-
-#: src/elflint.c:3502
-#, c-format
-msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3518
-#, c-format
-msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3535
-#, c-format
-msgid ""
-"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3553
-#, c-format
-msgid "section [%2zu] '%s' present in object file\n"
-msgstr ""
-
-#: src/elflint.c:3559 src/elflint.c:3591
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
-msgstr ""
-
-#: src/elflint.c:3564 src/elflint.c:3596
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
-"segments\n"
-msgstr ""
-
-#: src/elflint.c:3572
-#, c-format
-msgid ""
-"section [%2zu] '%s' is extension section index table in non-object file\n"
-msgstr ""
-
-#: src/elflint.c:3615
-#, c-format
-msgid "section [%2zu] '%s': size not multiple of entry size\n"
-msgstr ""
-
-#: src/elflint.c:3620
-#, c-format
-msgid "cannot get section header\n"
-msgstr ""
-
-#: src/elflint.c:3630
-#, c-format
-msgid "section [%2zu] '%s' has unsupported type %d\n"
-msgstr ""
-
-#: src/elflint.c:3644
-#, c-format
-msgid ""
-"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3651
-#, c-format
-msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3659
-#, c-format
-msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
-msgstr ""
-
-#: src/elflint.c:3667
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in link value\n"
-msgstr ""
-
-#: src/elflint.c:3672
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in info value\n"
-msgstr ""
-
-#: src/elflint.c:3679
-#, c-format
-msgid "section [%2zu] '%s': strings flag set without merge flag\n"
-msgstr ""
-
-#: src/elflint.c:3684
-#, c-format
-msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
-msgstr ""
-
-#: src/elflint.c:3702
-#, c-format
-msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
-msgstr ""
-
-#: src/elflint.c:3711
-#, c-format
-msgid "section [%2zu] '%s' is both executable and writable\n"
-msgstr ""
-
-#: src/elflint.c:3738
-#, c-format
-msgid ""
-"section [%2zu] '%s' not fully contained in segment of program header entry %"
-"d\n"
-msgstr ""
-
-#: src/elflint.c:3746
-#, c-format
-msgid ""
-"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
-"program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3755
-#, c-format
-msgid ""
-"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
-"segment of program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3766
-#, c-format
-msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3776
-#, c-format
-msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3786
-#, c-format
-msgid ""
-"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:3792
-#, c-format
-msgid ""
-"section [%2zu] '%s': ELF header says this is the section header string table "
-"but type is not SHT_TYPE\n"
-msgstr ""
-
-#: src/elflint.c:3800
-#, c-format
-msgid ""
-"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
-msgstr ""
-
-#: src/elflint.c:3851
-#, c-format
-msgid "more than one version symbol table present\n"
-msgstr ""
-
-#: src/elflint.c:3874
-#, c-format
-msgid "INTERP program header entry but no .interp section\n"
-msgstr ""
-
-#: src/elflint.c:3885
-#, c-format
-msgid ""
-"loadable segment [%u] is executable but contains no executable sections\n"
-msgstr ""
-
-#: src/elflint.c:3891
-#, c-format
-msgid "loadable segment [%u] is writable but contains no writable sections\n"
-msgstr ""
-
-#: src/elflint.c:3902
-#, c-format
-msgid ""
-"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
-"exist\n"
-msgstr ""
-
-#: src/elflint.c:3915
-#, c-format
-msgid "duplicate version index %d\n"
-msgstr ""
-
-#: src/elflint.c:3929
-#, c-format
-msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
-msgstr ""
-
-#: src/elflint.c:3978
-#, c-format
-msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3982
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4005
-#, c-format
-msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4009
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4026
-#, c-format
-msgid "phdr[%d]: no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4045
-#, c-format
-msgid "phdr[%d]: cannot get content of note section: %s\n"
-msgstr ""
-
-#: src/elflint.c:4048
-#, c-format
-msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4069
-#, c-format
-msgid "section [%2d] '%s': no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4076
-#, c-format
-msgid "section [%2d] '%s': cannot get content of note section\n"
-msgstr ""
-
-#: src/elflint.c:4079
-#, c-format
-msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4097
-#, c-format
-msgid ""
-"only executables, shared objects, and core files can have program headers\n"
-msgstr ""
-
-#: src/elflint.c:4112
-#, c-format
-msgid "cannot get program header entry %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:4121
-#, c-format
-msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:4132
-#, c-format
-msgid "more than one INTERP entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4140
-#, c-format
-msgid "more than one TLS entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4147
-#, c-format
-msgid "static executable cannot have dynamic sections\n"
-msgstr ""
-
-#: src/elflint.c:4161
-#, c-format
-msgid "dynamic section reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4164
-#, c-format
-msgid "dynamic section size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4174
-#, c-format
-msgid "more than one GNU_RELRO entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4195
-#, c-format
-msgid "loadable segment GNU_RELRO applies to is not writable\n"
-msgstr ""
-
-#: src/elflint.c:4198
-#, c-format
-msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
-msgstr ""
-
-#: src/elflint.c:4206 src/elflint.c:4229
-#, c-format
-msgid "%s segment not contained in a loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:4235
-#, c-format
-msgid "program header offset in ELF header and PHDR entry do not match"
-msgstr ""
-
-#: src/elflint.c:4259
-#, c-format
-msgid "call frame search table reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4262
-#, c-format
-msgid "call frame search table size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4275
-#, c-format
-msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
-msgstr ""
-
-#: src/elflint.c:4283
-#, c-format
-msgid "call frame search table must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4286
-#, c-format
-msgid "section [%2zu] '%s' must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4290
-#, c-format
-msgid "call frame search table must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4293
-#, c-format
-msgid "section [%2zu] '%s' must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4298
-#, c-format
-msgid "call frame search table must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4301
-#, c-format
-msgid "section [%2zu] '%s' must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4312
-#, c-format
-msgid "program header entry %d: file size greater than memory size\n"
-msgstr ""
-
-#: src/elflint.c:4319
-#, c-format
-msgid "program header entry %d: alignment not a power of 2\n"
-msgstr ""
-
-#: src/elflint.c:4322
-#, c-format
-msgid ""
-"program header entry %d: file offset and virtual address not module of "
-"alignment\n"
-msgstr ""
-
-#: src/elflint.c:4335
-#, c-format
-msgid ""
-"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
-"program header entry"
-msgstr ""
-
-#: src/elflint.c:4369
-#, c-format
-msgid "cannot read ELF header: %s\n"
-msgstr ""
-
-#: src/elflint.c:4395
-#, c-format
-msgid "text relocation flag set but not needed\n"
-msgstr ""
-
-#: src/findtextrel.c:70
-msgid "Input Selection:"
-msgstr ""
-
-#: src/findtextrel.c:71
-msgid "Prepend PATH to all file names"
-msgstr ""
-
-#: src/findtextrel.c:73
-msgid "Use PATH as root of debuginfo hierarchy"
-msgstr ""
-
-#: src/findtextrel.c:80
-msgid "Locate source of text relocations in FILEs (a.out by default)."
-msgstr ""
-
-#: src/findtextrel.c:84 src/nm.c:111 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:97
-msgid "[FILE...]"
-msgstr ""
-
-#: src/findtextrel.c:246
-#, c-format
-msgid "cannot get ELF header '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:257
-#, c-format
-msgid "'%s' is not a DSO or PIE"
-msgstr ""
-
-#: src/findtextrel.c:274
-#, c-format
-msgid "getting get section header of section %zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:292
-#, c-format
-msgid "cannot read dynamic section: %s"
-msgstr ""
-
-#: src/findtextrel.c:307
-#, c-format
-msgid "no text relocations reported in '%s'"
-msgstr ""
-
-#: src/findtextrel.c:319
-#, c-format
-msgid "while reading ELF file"
-msgstr ""
-
-#: src/findtextrel.c:328 src/findtextrel.c:345
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr ""
-
-#: src/findtextrel.c:397
-#, c-format
-msgid "cannot get section header of section %Zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:409
-#, c-format
-msgid "cannot get symbol table section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:429 src/findtextrel.c:452
-#, c-format
-msgid "cannot get relocation at index %d in section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:517
-#, c-format
-msgid "%s not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:570
-#, c-format
-msgid ""
-"the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:577 src/findtextrel.c:597
-#, c-format
-msgid ""
-"the file containing the function '%s' might not be compiled with -fpic/-"
-"fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:585
-#, c-format
-msgid ""
-"either the file containing the function '%s' or the file containing the "
-"function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:605
-#, c-format
-msgid ""
-"a relocation modifies memory at offset %llu in a write-protected segment\n"
-msgstr ""
-
-#: src/i386_ld.c:210
-#, c-format
-msgid "cannot allocate PLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:232
-#, c-format
-msgid "cannot allocate PLTREL section: %s"
-msgstr ""
-
-#: src/i386_ld.c:253
-#, c-format
-msgid "cannot allocate GOT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:274
-#, c-format
-msgid "cannot allocate GOTPLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:661
-#, c-format
-msgid "initial-executable TLS relocation cannot be used "
-msgstr ""
-
-#: src/ld.c:87
-msgid "Input File Control:"
-msgstr ""
-
-#: src/ld.c:89
-msgid "Include whole archives in the output from now on."
-msgstr ""
-
-#: src/ld.c:91
-msgid "Stop including the whole archives in the output."
-msgstr ""
-
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
-msgid "FILE"
-msgstr ""
-
-#: src/ld.c:93
-msgid "Start a group."
-msgstr ""
-
-#: src/ld.c:94
-msgid "End a group."
-msgstr ""
-
-#: src/ld.c:95
-msgid "PATH"
-msgstr ""
-
-#: src/ld.c:96
-msgid "Add PATH to list of directories files are searched in."
-msgstr ""
-
-#: src/ld.c:98
-msgid "Only set DT_NEEDED for following dynamic libs if actually used"
-msgstr ""
-
-#: src/ld.c:100
-msgid "Always set DT_NEEDED for following dynamic libs"
-msgstr ""
-
-#: src/ld.c:102
-msgid "Ignore LD_LIBRARY_PATH environment variable."
-msgstr ""
-
-#: src/ld.c:105
-msgid "Output File Control:"
-msgstr ""
-
-#: src/ld.c:106
-msgid "Place output in FILE."
-msgstr ""
-
-#: src/ld.c:109
-msgid "Object is marked to not use default search path at runtime."
-msgstr ""
-
-#: src/ld.c:111
-msgid "Same as --whole-archive."
-msgstr ""
-
-#: src/ld.c:112
-msgid ""
-"Default rules of extracting from archive; weak references are not enough."
-msgstr ""
-
-#: src/ld.c:116
-msgid "Weak references cause extraction from archive."
-msgstr ""
-
-#: src/ld.c:118
-msgid "Allow multiple definitions; first is used."
-msgstr ""
-
-#: src/ld.c:120
-msgid "Disallow/allow undefined symbols in DSOs."
-msgstr ""
-
-#: src/ld.c:123
-msgid "Object requires immediate handling of $ORIGIN."
-msgstr ""
-
-#: src/ld.c:125
-msgid "Relocation will not be processed lazily."
-msgstr ""
-
-#: src/ld.c:127
-msgid "Object cannot be unloaded at runtime."
-msgstr ""
-
-#: src/ld.c:129
-msgid "Mark object to be initialized first."
-msgstr ""
-
-#: src/ld.c:131
-msgid "Enable/disable lazy-loading flag for following dependencies."
-msgstr ""
-
-#: src/ld.c:133
-msgid "Mark object as not loadable with 'dlopen'."
-msgstr ""
-
-#: src/ld.c:135
-msgid "Ignore/record dependencies on unused DSOs."
-msgstr ""
-
-#: src/ld.c:137
-msgid "Generated DSO will be a system library."
-msgstr ""
-
-#: src/ld.c:138
-msgid "ADDRESS"
-msgstr ""
-
-#: src/ld.c:138
-msgid "Set entry point address."
-msgstr ""
-
-#: src/ld.c:141
-msgid "Do not link against shared libraries."
-msgstr ""
-
-#: src/ld.c:144
-msgid "Prefer linking against shared libraries."
-msgstr ""
-
-#: src/ld.c:145
-msgid "Export all dynamic symbols."
-msgstr ""
-
-#: src/ld.c:146
-msgid "Strip all symbols."
-msgstr ""
-
-#: src/ld.c:147
-msgid "Strip debugging symbols."
-msgstr ""
-
-#: src/ld.c:149
-msgid "Assume pagesize for the target system to be SIZE."
-msgstr ""
-
-#: src/ld.c:151
-msgid "Set runtime DSO search path."
-msgstr ""
-
-#: src/ld.c:154
-msgid "Set link time DSO search path."
-msgstr ""
-
-#: src/ld.c:155
-msgid "Generate dynamic shared object."
-msgstr ""
-
-#: src/ld.c:156
-msgid "Generate relocatable object."
-msgstr ""
-
-#: src/ld.c:159
-msgid "Causes symbol not assigned to a version be reduced to local."
-msgstr ""
-
-#: src/ld.c:160
-msgid "Remove unused sections."
-msgstr ""
-
-#: src/ld.c:163
-msgid "Don't remove unused sections."
-msgstr ""
-
-#: src/ld.c:164
-msgid "Set soname of shared object."
-msgstr ""
-
-#: src/ld.c:165
-msgid "Set the dynamic linker name."
-msgstr ""
-
-#: src/ld.c:168
-msgid "Add/suppress addition indentifying link-editor to .comment section."
-msgstr ""
-
-#: src/ld.c:171
-msgid "Create .eh_frame_hdr section"
-msgstr ""
-
-#: src/ld.c:173
-msgid "Set hash style to sysv, gnu or both."
-msgstr ""
-
-#: src/ld.c:175
-msgid "Generate build ID note (md5, sha1 (default), uuid)."
-msgstr ""
-
-#: src/ld.c:177
-msgid "Linker Operation Control:"
-msgstr ""
-
-#: src/ld.c:178
-msgid "Verbose messages."
-msgstr ""
-
-#: src/ld.c:179
-msgid "Trace file opens."
-msgstr ""
-
-#: src/ld.c:181
-msgid "Trade speed for less memory usage"
-msgstr ""
-
-#: src/ld.c:182
-msgid "LEVEL"
-msgstr ""
-
-#: src/ld.c:183
-msgid "Set optimization level to LEVEL."
-msgstr ""
-
-#: src/ld.c:184
-msgid "Use linker script in FILE."
-msgstr ""
-
-#: src/ld.c:187
-msgid "Select to get parser debug information"
-msgstr ""
-
-#: src/ld.c:190
-msgid "Read version information from FILE."
-msgstr ""
-
-#: src/ld.c:191
-msgid "Set emulation to NAME."
-msgstr ""
-
-#: src/ld.c:197
-msgid "Combine object and archive files."
-msgstr ""
-
-#: src/ld.c:200
-msgid "[FILE]..."
-msgstr ""
-
-#: src/ld.c:333
-#, c-format
-msgid "At least one input file needed"
-msgstr ""
-
-#: src/ld.c:349
-#, c-format
-msgid "error while preparing linking"
-msgstr ""
-
-#: src/ld.c:356
-#, c-format
-msgid "cannot open linker script '%s'"
-msgstr ""
-
-#: src/ld.c:397
-#, c-format
-msgid "-( without matching -)"
-msgstr ""
-
-#: src/ld.c:572 src/ld.c:610
-#, c-format
-msgid "only one option of -G and -r is allowed"
-msgstr ""
-
-#: src/ld.c:594
-#, c-format
-msgid "more than one '-m' parameter"
-msgstr ""
-
-#: src/ld.c:604 src/ld.c:1013
-#, c-format
-msgid "unknown option `-%c %s'"
-msgstr ""
-
-#: src/ld.c:646
-#, c-format
-msgid "invalid page size value '%s': ignored"
-msgstr ""
-
-#: src/ld.c:687
-#, c-format
-msgid "invalid hash style '%s'"
-msgstr ""
-
-#: src/ld.c:697
-#, c-format
-msgid "invalid build-ID style '%s'"
-msgstr ""
-
-#: src/ld.c:785
-#, c-format
-msgid "More than one output file name given."
-msgstr ""
-
-#: src/ld.c:802
-#, c-format
-msgid "Invalid optimization level `%s'"
-msgstr ""
-
-#: src/ld.c:850
-#, c-format
-msgid "nested -( -) groups are not allowed"
-msgstr ""
-
-#: src/ld.c:869
-#, c-format
-msgid "-) without matching -("
-msgstr ""
-
-#: src/ld.c:1046
-#, c-format
-msgid "unknown option '-%c %s'"
-msgstr ""
-
-#: src/ld.c:1150
-#, c-format
-msgid "could not find input file to determine output file format"
-msgstr ""
-
-#: src/ld.c:1152
-#, c-format
-msgid "try again with an appropriate '-m' parameter"
-msgstr ""
-
-#: src/ld.c:1446
-#, c-format
-msgid "cannot read version script '%s'"
-msgstr ""
-
-#: src/ld.c:1512 src/ld.c:1551
-#, c-format
-msgid "duplicate definition of '%s' in linker script"
-msgstr ""
-
-#: src/ldgeneric.c:209 src/ldgeneric.c:5151
-#, c-format
-msgid "cannot create string table"
-msgstr ""
-
-#: src/ldgeneric.c:255
-#, c-format
-msgid "cannot load ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:265
-#, c-format
-msgid "cannot find init function in ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:310
-#, c-format
-msgid "%s listed more than once as input"
-msgstr ""
-
-#: src/ldgeneric.c:424
-#, c-format
-msgid "%s (for -l%s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:425
-#, c-format
-msgid "%s (for DT_NEEDED %s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:573
-#, c-format
-msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
-msgstr ""
-
-#: src/ldgeneric.c:586
-#, c-format
-msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
-msgstr ""
-
-#: src/ldgeneric.c:661 src/ldgeneric.c:1122 src/readelf.c:629 src/strip.c:543
-#, c-format
-msgid "cannot determine number of sections: %s"
-msgstr ""
-
-#: src/ldgeneric.c:677
-#, c-format
-msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
-msgstr ""
-
-#: src/ldgeneric.c:700
-#, c-format
-msgid "(%s+%#<PRIx64>): first defined here\n"
-msgstr ""
-
-#: src/ldgeneric.c:819
-#, c-format
-msgid "%s: cannot get section group data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:840
-#, c-format
-msgid "%s: section '%s' with group flag set does not belong to any group"
-msgstr ""
-
-#: src/ldgeneric.c:885
-#, c-format
-msgid "%s: section [%2d] '%s' is not in the correct section group"
-msgstr ""
-
-#: src/ldgeneric.c:1156 src/ldgeneric.c:1413 src/ldgeneric.c:1422
-#: src/ldgeneric.c:1481 src/ldgeneric.c:1490 src/ldgeneric.c:1753
-#: src/ldgeneric.c:2005
-#, c-format
-msgid "%s: invalid ELF file (%s:%d)\n"
-msgstr ""
-
-#: src/ldgeneric.c:1250
-#, c-format
-msgid "%s: only files of type ET_REL might contain section groups"
-msgstr ""
-
-#: src/ldgeneric.c:1302
-#, c-format
-msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:1314
-#, c-format
-msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
-msgstr ""
-
-#: src/ldgeneric.c:1328
-#, c-format
-msgid ""
-"%s: group member %zu of section group [%2zd] '%s' has too high index: %"
-"<PRIu32>"
-msgstr ""
-
-#: src/ldgeneric.c:1350
-#, c-format
-msgid "%s: section '%s' has unknown type: %d"
-msgstr ""
-
-#: src/ldgeneric.c:1729
-#, c-format
-msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:1899
-#, c-format
-msgid "cannot read archive `%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:2020
-#, c-format
-msgid "file of type %s cannot be linked in\n"
-msgstr ""
-
-#: src/ldgeneric.c:2032
-#, c-format
-msgid "%s: input file incompatible with ELF machine type %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2044
-#, c-format
-msgid "%s: cannot get section header string table index: %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2073
-#, c-format
-msgid "cannot use DSO '%s' when generating relocatable object file"
-msgstr ""
-
-#: src/ldgeneric.c:2158
-#, c-format
-msgid "input file '%s' ignored"
-msgstr ""
-
-#: src/ldgeneric.c:2372
-#, c-format
-msgid "undefined symbol `%s' in %s"
-msgstr ""
-
-#: src/ldgeneric.c:2702
-#, c-format
-msgid "cannot create ELF descriptor for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:2709
-#, c-format
-msgid "could not create ELF header for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3224 src/ldgeneric.c:3294 src/ldgeneric.c:3330
-#: src/ldgeneric.c:4457 src/ldgeneric.c:4506 src/ldgeneric.c:4538
-#: src/ldgeneric.c:4773 src/ldgeneric.c:4828 src/ldgeneric.c:5075
-#: src/ldgeneric.c:5131 src/ldgeneric.c:5600 src/ldgeneric.c:5612
-#, c-format
-msgid "cannot create section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3444
-#, c-format
-msgid "address computation expression contains variable '%s'"
-msgstr ""
-
-#: src/ldgeneric.c:3489
-#, c-format
-msgid ""
-"argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
-"of two"
-msgstr ""
-
-#: src/ldgeneric.c:3684
-#, c-format
-msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3690
-#, c-format
-msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3920
-#, c-format
-msgid "cannot create GNU hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4071
-#, c-format
-msgid "cannot create hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4114
-#, c-format
-msgid "cannot create build ID section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4191
-#, c-format
-msgid "cannot convert section data to file format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4200
-#, c-format
-msgid "cannot convert section data to memory format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4261
-#, c-format
-msgid "cannot read enough data for UUID"
-msgstr ""
-
-#: src/ldgeneric.c:4358 src/ldgeneric.c:4379 src/ldgeneric.c:4408
-#: src/ldgeneric.c:6062
-#, c-format
-msgid "cannot create symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5300 src/ldgeneric.c:5852
-#, c-format
-msgid "section index too large in dynamic symbol table"
-msgstr ""
-
-#: src/ldgeneric.c:5745
-#, c-format
-msgid "cannot create versioning section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5818
-#, c-format
-msgid "cannot create dynamic symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5994
-#, c-format
-msgid "cannot create versioning data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6094 src/ldgeneric.c:6107 src/ldgeneric.c:6171
-#: src/ldgeneric.c:6179
-#, c-format
-msgid "cannot create section header string section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6101
-#, c-format
-msgid "cannot create section header string section"
-msgstr ""
-
-#: src/ldgeneric.c:6259
-#, c-format
-msgid "cannot create program header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6267
-#, c-format
-msgid "while determining file layout: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6388
-#, c-format
-msgid "internal error: non-nobits section follows nobits section"
-msgstr ""
-
-#: src/ldgeneric.c:6925
-#, c-format
-msgid "cannot get header of 0th section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6941 src/unstrip.c:1808
-#, c-format
-msgid "cannot update ELF header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6972
-#, c-format
-msgid "linker backend didn't specify function to relocate section"
-msgstr ""
-
-#: src/ldgeneric.c:6984
-#, c-format
-msgid "while writing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6989
-#, c-format
-msgid "while finishing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6995
-#, c-format
-msgid "cannot stat output file"
-msgstr ""
-
-#: src/ldgeneric.c:7011
-#, c-format
-msgid "WARNING: temporary output file overwritten before linking finished"
-msgstr ""
-
-#: src/ldgeneric.c:7064 src/ldgeneric.c:7075 src/ldgeneric.c:7086
-#: src/ldgeneric.c:7097 src/ldgeneric.c:7116 src/ldgeneric.c:7129
-#: src/ldgeneric.c:7141
-#, c-format
-msgid "no machine specific '%s' implementation"
-msgstr ""
-
-#: src/ldscript.y:178
-msgid "mode for segment invalid\n"
-msgstr ""
-
-#: src/ldscript.y:465
-#, c-format
-msgid "while reading version script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:466
-#, c-format
-msgid "while reading linker script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:745
-#, c-format
-msgid "symbol '%s' is declared both local and global for unnamed version"
-msgstr ""
-
-#: src/ldscript.y:747
-#, c-format
-msgid "symbol '%s' is declared both local and global for version '%s'"
-msgstr ""
-
-#: src/ldscript.y:767 src/ldscript.y:774
-#, c-format
-msgid "default visibility set as local and global"
-msgstr ""
-
-#: src/nm.c:74 src/strip.c:73
-msgid "Output selection:"
-msgstr ""
-
-#: src/nm.c:75
-msgid "Display debugger-only symbols"
-msgstr ""
-
-#: src/nm.c:76
-msgid "Display only defined symbols"
-msgstr ""
-
-#: src/nm.c:79
-msgid "Display dynamic symbols instead of normal symbols"
-msgstr ""
-
-#: src/nm.c:80
-msgid "Display only external symbols"
-msgstr ""
-
-#: src/nm.c:81
-msgid "Display only undefined symbols"
-msgstr ""
-
-#: src/nm.c:83
-msgid "Include index for symbols from archive members"
-msgstr ""
-
-#: src/nm.c:85 src/size.c:66
-msgid "Output format:"
-msgstr ""
-
-#: src/nm.c:87
-msgid "Print name of the input file before every symbol"
-msgstr ""
-
-#: src/nm.c:90
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The "
-"default is `sysv'"
-msgstr ""
-
-#: src/nm.c:92
-msgid "Same as --format=bsd"
-msgstr ""
-
-#: src/nm.c:93
-msgid "Same as --format=posix"
-msgstr ""
-
-#: src/nm.c:94 src/size.c:72
-msgid "Use RADIX for printing symbol values"
-msgstr ""
-
-#: src/nm.c:95
-msgid "Mark weak symbols"
-msgstr ""
-
-#: src/nm.c:96
-msgid "Print size of defined symbols"
-msgstr ""
-
-#: src/nm.c:98 src/size.c:80 src/strip.c:78 src/unstrip.c:81
-msgid "Output options:"
-msgstr ""
-
-#: src/nm.c:99
-msgid "Sort symbols numerically by address"
-msgstr ""
-
-#: src/nm.c:101
-msgid "Do not sort the symbols"
-msgstr ""
-
-#: src/nm.c:102
-msgid "Reverse the sense of the sort"
-msgstr ""
-
-#: src/nm.c:108
-msgid "List symbols from FILEs (a.out by default)."
-msgstr ""
-
-#: src/nm.c:136 src/objdump.c:105 src/size.c:117 src/strip.c:121
-#, c-format
-msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
-msgstr ""
-
-#: src/nm.c:380 src/nm.c:392 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:1816
-#, c-format
-msgid "while closing '%s'"
-msgstr ""
-
-#: src/nm.c:402 src/objdump.c:296 src/strip.c:359
-#, c-format
-msgid "%s: File format not recognized"
-msgstr ""
-
-#: src/nm.c:442
-msgid ""
-"\n"
-"Archive index:"
-msgstr ""
-
-#: src/nm.c:451
-#, c-format
-msgid "invalid offset %zu for symbol %s"
-msgstr ""
-
-#: src/nm.c:456
-#, c-format
-msgid "%s in %s\n"
-msgstr ""
-
-#: src/nm.c:464
-#, c-format
-msgid "cannot reset archive offset to beginning"
-msgstr ""
-
-#: src/nm.c:488 src/objdump.c:344
-#, c-format
-msgid "%s%s%s: file format not recognized"
-msgstr ""
-
-#: src/nm.c:700
-#, c-format
-msgid "cannot create search tree"
-msgstr ""
-
-#: src/nm.c:740 src/nm.c:1002 src/objdump.c:744 src/readelf.c:885
-#: src/readelf.c:1028 src/readelf.c:1169 src/readelf.c:1351 src/readelf.c:1549
-#: src/readelf.c:1735 src/readelf.c:1945 src/readelf.c:2199 src/readelf.c:2265
-#: src/readelf.c:2343 src/readelf.c:2841 src/readelf.c:2877 src/readelf.c:2939
-#: src/readelf.c:6493 src/readelf.c:7387 src/readelf.c:7534 src/readelf.c:7604
-#: src/size.c:425 src/size.c:499 src/strip.c:483
-#, c-format
-msgid "cannot get section header string table index"
-msgstr ""
-
-#: src/nm.c:766
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:768
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:771
-#, c-format
-msgid ""
-"%*s%-*s %-*s Class Type %-*s %*s Section\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:1012
-#, c-format
-msgid "%s: entry size in section `%s' is not what we expect"
-msgstr ""
-
-#: src/nm.c:1016
-#, c-format
-msgid "%s: size of section `%s' is not multiple of entry size"
-msgstr ""
-
-#: src/nm.c:1255
-#, c-format
-msgid "%s%s%s%s: Invalid operation"
-msgstr ""
-
-#: src/nm.c:1312
-#, c-format
-msgid "%s%s%s: no symbols"
-msgstr ""
-
-#: src/objdump.c:61
-msgid "Mode selection:"
-msgstr ""
-
-#: src/objdump.c:62
-msgid "Display relocation information."
-msgstr ""
-
-#: src/objdump.c:64
-msgid "Display the full contents of all sections requested"
-msgstr ""
-
-#: src/objdump.c:66
-msgid "Display assembler code of executable sections"
-msgstr ""
-
-#: src/objdump.c:68
-msgid "Output option selection:"
-msgstr ""
-
-#: src/objdump.c:70
-msgid "Only display information for section NAME."
-msgstr ""
-
-#: src/objdump.c:76
-msgid "Show information from FILEs (a.out by default)."
-msgstr ""
-
-#: src/objdump.c:236 src/readelf.c:430
-msgid "No operation specified.\n"
-msgstr ""
-
-#: src/objdump.c:274 src/objdump.c:286
-#, c-format
-msgid "while close `%s'"
-msgstr ""
-
-#: src/objdump.c:379 src/readelf.c:1644 src/readelf.c:1818
-msgid "INVALID SYMBOL"
-msgstr ""
-
-#: src/objdump.c:394 src/readelf.c:1675 src/readelf.c:1851
-msgid "INVALID SECTION"
-msgstr ""
-
-#: src/objdump.c:510
-#, c-format
-msgid ""
-"\n"
-"RELOCATION RECORDS FOR [%s]:\n"
-"%-*s TYPE VALUE\n"
-msgstr ""
-
-#: src/objdump.c:513
-msgid "OFFSET"
-msgstr ""
-
-#: src/objdump.c:576
-#, c-format
-msgid "Contents of section %s:\n"
-msgstr ""
-
-#: src/objdump.c:676
-#, c-format
-msgid "cannot disassemble"
-msgstr ""
-
-#: src/ranlib.c:74
-msgid "Generate an index to speed access to archives."
-msgstr ""
-
-#: src/ranlib.c:77
-msgid "ARCHIVE"
-msgstr ""
-
-#: src/ranlib.c:116
-#, c-format
-msgid "Archive name required"
-msgstr ""
-
-#: src/ranlib.c:194
-#, c-format
-msgid "'%s' is no archive"
-msgstr ""
-
-#: src/ranlib.c:229
-#, c-format
-msgid "error while freeing sub-ELF descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:73
-msgid "ELF output selection:"
-msgstr ""
-
-#: src/readelf.c:75
-msgid "All these plus -p .strtab -p .dynstr -p .comment"
-msgstr ""
-
-#: src/readelf.c:76
-msgid "Display the dynamic segment"
-msgstr ""
-
-#: src/readelf.c:77
-msgid "Display the ELF file header"
-msgstr ""
-
-#: src/readelf.c:79
-msgid "Display histogram of bucket list lengths"
-msgstr ""
-
-#: src/readelf.c:80
-msgid "Display the program headers"
-msgstr ""
-
-#: src/readelf.c:82
-msgid "Display relocations"
-msgstr ""
-
-#: src/readelf.c:83
-msgid "Display the sections' headers"
-msgstr ""
-
-#: src/readelf.c:85
-msgid "Display the symbol table"
-msgstr ""
-
-#: src/readelf.c:86
-msgid "Display versioning information"
-msgstr ""
-
-#: src/readelf.c:87
-msgid "Display the ELF notes"
-msgstr ""
-
-#: src/readelf.c:89
-msgid "Display architecture specific information, if any"
-msgstr ""
-
-#: src/readelf.c:91
-msgid "Display sections for exception handling"
-msgstr ""
-
-#: src/readelf.c:93
-msgid "Additional output selection:"
-msgstr ""
-
-#: src/readelf.c:95
-msgid ""
-"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, info, loc, line, ranges, pubnames, str, macinfo, or exception"
-msgstr ""
-
-#: src/readelf.c:99
-msgid "Dump the uninterpreted contents of SECTION, by number or name"
-msgstr ""
-
-#: src/readelf.c:101
-msgid "Print string contents of sections"
-msgstr ""
-
-#: src/readelf.c:104
-msgid "Display the symbol index of an archive"
-msgstr ""
-
-#: src/readelf.c:106
-msgid "Output control:"
-msgstr ""
-
-#: src/readelf.c:108
-msgid "Do not find symbol names for addresses in DWARF data"
-msgstr ""
-
-#: src/readelf.c:114
-msgid "Print information from ELF file in human-readable form."
-msgstr ""
-
-#: src/readelf.c:401
-#, c-format
-msgid "Unknown DWARF debug section `%s'.\n"
-msgstr ""
-
-#: src/readelf.c:465
-#, c-format
-msgid "cannot generate Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:477
-#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr ""
-
-#: src/readelf.c:482
-#, c-format
-msgid "error while closing Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:574
-#, c-format
-msgid "cannot stat input file"
-msgstr ""
-
-#: src/readelf.c:576
-#, c-format
-msgid "input file is empty"
-msgstr ""
-
-#: src/readelf.c:578
-#, c-format
-msgid "failed reading '%s': %s"
-msgstr ""
-
-#: src/readelf.c:614
-#, c-format
-msgid "cannot read ELF header: %s"
-msgstr ""
-
-#: src/readelf.c:622
-#, c-format
-msgid "cannot create EBL handle"
-msgstr ""
-
-#: src/readelf.c:635
-#, c-format
-msgid "cannot determine number of program headers: %s"
-msgstr ""
-
-#: src/readelf.c:721
-msgid "NONE (None)"
-msgstr ""
-
-#: src/readelf.c:722
-msgid "REL (Relocatable file)"
-msgstr ""
-
-#: src/readelf.c:723
-msgid "EXEC (Executable file)"
-msgstr ""
-
-#: src/readelf.c:724
-msgid "DYN (Shared object file)"
-msgstr ""
-
-#: src/readelf.c:725
-msgid "CORE (Core file)"
-msgstr ""
-
-#: src/readelf.c:730
-#, c-format
-msgid "OS Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:732
-#, c-format
-msgid "Processor Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:742
-msgid ""
-"ELF Header:\n"
-" Magic: "
-msgstr ""
-
-#: src/readelf.c:746
-#, c-format
-msgid ""
-"\n"
-" Class: %s\n"
-msgstr ""
-
-#: src/readelf.c:751
-#, c-format
-msgid " Data: %s\n"
-msgstr ""
-
-#: src/readelf.c:757
-#, c-format
-msgid " Ident Version: %hhd %s\n"
-msgstr ""
-
-#: src/readelf.c:759 src/readelf.c:776
-msgid "(current)"
-msgstr ""
-
-#: src/readelf.c:763
-#, c-format
-msgid " OS/ABI: %s\n"
-msgstr ""
-
-#: src/readelf.c:766
-#, c-format
-msgid " ABI Version: %hhd\n"
-msgstr ""
-
-#: src/readelf.c:769
-msgid " Type: "
-msgstr ""
-
-#: src/readelf.c:772
-#, c-format
-msgid " Machine: %s\n"
-msgstr ""
-
-#: src/readelf.c:774
-#, c-format
-msgid " Version: %d %s\n"
-msgstr ""
-
-#: src/readelf.c:778
-#, c-format
-msgid " Entry point address: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:781
-#, c-format
-msgid " Start of program headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:782 src/readelf.c:785
-msgid "(bytes into file)"
-msgstr ""
-
-#: src/readelf.c:784
-#, c-format
-msgid " Start of section headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:787
-#, c-format
-msgid " Flags: %s\n"
-msgstr ""
-
-#: src/readelf.c:790
-#, c-format
-msgid " Size of this header: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:791 src/readelf.c:794 src/readelf.c:811
-msgid "(bytes)"
-msgstr ""
-
-#: src/readelf.c:793
-#, c-format
-msgid " Size of program header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:796
-#, c-format
-msgid " Number of program headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:803
-#, c-format
-msgid " (%<PRIu32> in [0].sh_info)"
-msgstr ""
-
-#: src/readelf.c:806 src/readelf.c:823 src/readelf.c:837
-msgid " ([0] not available)"
-msgstr ""
-
-#: src/readelf.c:810
-#, c-format
-msgid " Size of section header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:813
-#, c-format
-msgid " Number of section headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:820
-#, c-format
-msgid " (%<PRIu32> in [0].sh_size)"
-msgstr ""
-
-#: src/readelf.c:833
-#, c-format
-msgid " (%<PRIu32> in [0].sh_link)"
-msgstr ""
-
-#: src/readelf.c:841
-#, c-format
-msgid ""
-" Section header string table index: XINDEX%s\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:845
-#, c-format
-msgid ""
-" Section header string table index: %<PRId16>\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:877
-#, c-format
-msgid ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:887
-msgid "Section Headers:"
-msgstr ""
-
-#: src/readelf.c:890
-msgid ""
-"[Nr] Name Type Addr Off Size ES Flags Lk "
-"Inf Al"
-msgstr ""
-
-#: src/readelf.c:892
-msgid ""
-"[Nr] Name Type Addr Off Size ES "
-"Flags Lk Inf Al"
-msgstr ""
-
-#: src/readelf.c:899 src/readelf.c:1052
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:906 src/readelf.c:1060 src/readelf.c:7554 src/unstrip.c:353
-#: src/unstrip.c:377 src/unstrip.c:427 src/unstrip.c:536 src/unstrip.c:553
-#: src/unstrip.c:591 src/unstrip.c:789 src/unstrip.c:1057 src/unstrip.c:1244
-#: src/unstrip.c:1305 src/unstrip.c:1427 src/unstrip.c:1480 src/unstrip.c:1588
-#: src/unstrip.c:1778
-#, c-format
-msgid "cannot get section header: %s"
-msgstr ""
-
-#: src/readelf.c:964
-msgid "Program Headers:"
-msgstr ""
-
-#: src/readelf.c:966
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:969
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz "
-"MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:1009
-#, c-format
-msgid "\t[Requesting program interpreter: %s]\n"
-msgstr ""
-
-#: src/readelf.c:1030
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-" Segment Sections..."
-msgstr ""
-
-#: src/readelf.c:1041 src/unstrip.c:1824 src/unstrip.c:1863 src/unstrip.c:1870
-#, c-format
-msgid "cannot get program header: %s"
-msgstr ""
-
-#: src/readelf.c:1175
-#, c-format
-msgid ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1180
-#, c-format
-msgid ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1188
-msgid "<INVALID SYMBOL>"
-msgstr ""
-
-#: src/readelf.c:1202
-msgid "<INVALID SECTION>"
-msgstr ""
-
-#: src/readelf.c:1353
-#, c-format
-msgid ""
-"\n"
-"Dynamic segment contains %lu entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Dynamic segment contains %lu entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1365
-msgid " Type Value\n"
-msgstr ""
-
-#: src/readelf.c:1389
-#, c-format
-msgid "Shared library: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1394
-#, c-format
-msgid "Library soname: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1399
-#, c-format
-msgid "Library rpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1404
-#, c-format
-msgid "Library runpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1424
-#, c-format
-msgid "%<PRId64> (bytes)\n"
-msgstr ""
-
-#: src/readelf.c:1534 src/readelf.c:1720
-#, c-format
-msgid ""
-"\n"
-"Invalid symbol table at offset %#0<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:1552 src/readelf.c:1737
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1567
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1577
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1579
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1632 src/readelf.c:1643 src/readelf.c:1656 src/readelf.c:1674
-#: src/readelf.c:1686 src/readelf.c:1805 src/readelf.c:1817 src/readelf.c:1831
-#: src/readelf.c:1850 src/readelf.c:1863
-msgid "<INVALID RELOC>"
-msgstr ""
-
-#: src/readelf.c:1749
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1751
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1952
-#, c-format
-msgid ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entry:\n"
-msgid_plural ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1958
-#, c-format
-msgid " %lu local symbol String table: [%2u] '%s'\n"
-msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1968
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1970
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1990
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr ""
-
-#: src/readelf.c:2078
-#, c-format
-msgid "bad dynamic symbol"
-msgstr ""
-
-#: src/readelf.c:2160
-msgid "none"
-msgstr ""
-
-#: src/readelf.c:2177
-msgid "| <unknown>"
-msgstr ""
-
-#: src/readelf.c:2202
-#, c-format
-msgid ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2225
-#, c-format
-msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2238
-#, c-format
-msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2269
-#, c-format
-msgid ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2299
-#, c-format
-msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
-msgstr ""
-
-#: src/readelf.c:2314
-#, c-format
-msgid " %#06x: Parent %d: %s\n"
-msgstr ""
-
-#: src/readelf.c:2546
-#, c-format
-msgid ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgid_plural ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2576
-msgid " 0 *local* "
-msgstr ""
-
-#: src/readelf.c:2581
-msgid " 1 *global* "
-msgstr ""
-
-#: src/readelf.c:2612
-#, c-format
-msgid ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"bucket):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"buckets):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2636
-#, no-c-format
-msgid " Length Number % of total Coverage\n"
-msgstr ""
-
-#: src/readelf.c:2638
-#, c-format
-msgid " 0 %6<PRIu32> %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2645
-#, c-format
-msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2658
-#, c-format
-msgid ""
-" Average number of tests: successful lookup: %f\n"
-" unsuccessful lookup: %f\n"
-msgstr ""
-
-#: src/readelf.c:2676 src/readelf.c:2718 src/readelf.c:2759
-#, c-format
-msgid "cannot get data for section %d: %s"
-msgstr ""
-
-#: src/readelf.c:2813
-#, c-format
-msgid ""
-" Symbol Bias: %u\n"
-" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
-msgstr ""
-
-#: src/readelf.c:2887
-#, c-format
-msgid ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2901
-msgid ""
-" Library Time Stamp Checksum Version "
-"Flags"
-msgstr ""
-
-#: src/readelf.c:2951
-#, c-format
-msgid ""
-"\n"
-"Object attributes section [%2zu] '%s' of %<PRIu64> bytes at offset %"
-"#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:2967
-msgid " Owner Size\n"
-msgstr ""
-
-#: src/readelf.c:2993
-#, c-format
-msgid " %-13s %4<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3025
-#, c-format
-msgid " %-4u %12<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3030
-#, c-format
-msgid " File: %11<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3065
-#, c-format
-msgid " %s: %<PRId64>, %s\n"
-msgstr ""
-
-#: src/readelf.c:3068
-#, c-format
-msgid " %s: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3071
-#, c-format
-msgid " %s: %s\n"
-msgstr ""
-
-#: src/readelf.c:3078
-#, c-format
-msgid " %u: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3081
-#, c-format
-msgid " %u: %s\n"
-msgstr ""
-
-#: src/readelf.c:3117
-#, c-format
-msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3120
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3125
-#, c-format
-msgid "%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3128
-#, c-format
-msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3134
-#, c-format
-msgid "%s+%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3137
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3141
-#, c-format
-msgid "%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3144
-#, c-format
-msgid "%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3149
-#, c-format
-msgid "%s+%#<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3152
-#, c-format
-msgid "%s+%#0*<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3260
-#, c-format
-msgid "unknown tag %hx"
-msgstr ""
-
-#: src/readelf.c:3262
-#, c-format
-msgid "unknown user tag %hx"
-msgstr ""
-
-#: src/readelf.c:3480
-#, c-format
-msgid "unknown attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3483
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3529
-#, c-format
-msgid "unknown form %<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3763
-msgid "empty block"
-msgstr ""
-
-#: src/readelf.c:3766
-#, c-format
-msgid "%zu byte block:"
-msgstr ""
-
-#: src/readelf.c:4175
-#, c-format
-msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-msgstr ""
-
-#: src/readelf.c:4188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [ Code]\n"
-msgstr ""
-
-#: src/readelf.c:4195
-#, c-format
-msgid ""
-"\n"
-"Abbreviation section at offset %<PRIu64>:\n"
-msgstr ""
-
-#: src/readelf.c:4208
-#, c-format
-msgid " *** error while reading abbreviation: %s\n"
-msgstr ""
-
-#: src/readelf.c:4224
-#, c-format
-msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "yes"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "no"
-msgstr ""
-
-#: src/readelf.c:4263
-#, c-format
-msgid "cannot get .debug_aranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4268
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:4298
-#, c-format
-msgid " [%*zu] ???\n"
-msgstr ""
-
-#: src/readelf.c:4300
-#, c-format
-msgid ""
-" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:4319
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4324 src/readelf.c:4810 src/readelf.c:5452 src/readelf.c:5897
-#: src/readelf.c:5992 src/readelf.c:6164
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4338 src/readelf.c:5911
-#, c-format
-msgid " [%6tx] <INVALID DATA>\n"
-msgstr ""
-
-#: src/readelf.c:4360 src/readelf.c:5933
-#, c-format
-msgid " [%6tx] base address %s\n"
-msgstr ""
-
-#: src/readelf.c:4371
-#, c-format
-msgid " [%6tx] %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4373
-#, c-format
-msgid " %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4799 src/readelf.c:6230 src/readelf.c:6332
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr ""
-
-#: src/readelf.c:4806
-#, c-format
-msgid ""
-"\n"
-"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4833 src/readelf.c:5486
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:4855
-#, c-format
-msgid ""
-"\n"
-" [%6tx] Zero terminator\n"
-msgstr ""
-
-#: src/readelf.c:4924
-#, c-format
-msgid "invalid augmentation length"
-msgstr ""
-
-#: src/readelf.c:4936
-msgid "FDE address encoding: "
-msgstr ""
-
-#: src/readelf.c:4942
-msgid "LSDA pointer encoding: "
-msgstr ""
-
-#: src/readelf.c:5034
-#, c-format
-msgid " (offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5041
-#, c-format
-msgid " (end offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5068
-#, c-format
-msgid " %-26sLSDA pointer: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:5114
-#, c-format
-msgid "cannot get attribute code: %s"
-msgstr ""
-
-#: src/readelf.c:5122
-#, c-format
-msgid "cannot get attribute form: %s"
-msgstr ""
-
-#: src/readelf.c:5135
-#, c-format
-msgid "cannot get attribute value: %s"
-msgstr ""
-
-#: src/readelf.c:5331
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [Offset]\n"
-msgstr ""
-
-#: src/readelf.c:5356
-#, c-format
-msgid ""
-" Compilation unit at offset %<PRIu64>:\n"
-" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: %"
-"<PRIu8>, Offset size: %<PRIu8>\n"
-msgstr ""
-
-#: src/readelf.c:5374
-#, c-format
-msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5385
-#, c-format
-msgid "cannot get DIE offset: %s"
-msgstr ""
-
-#: src/readelf.c:5393
-#, c-format
-msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5422
-#, c-format
-msgid "cannot get next DIE: %s\n"
-msgstr ""
-
-#: src/readelf.c:5429
-#, c-format
-msgid "cannot get next DIE: %s"
-msgstr ""
-
-#: src/readelf.c:5464
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr ""
-
-#: src/readelf.c:5477
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-
-#: src/readelf.c:5529
-#, c-format
-msgid ""
-"\n"
-" Length: %<PRIu64>\n"
-" DWARF version: %<PRIuFAST16>\n"
-" Prologue length: %<PRIu64>\n"
-" Minimum instruction length: %<PRIuFAST8>\n"
-" Initial value if '%s': %<PRIuFAST8>\n"
-" Line base: %<PRIdFAST8>\n"
-" Line range: %<PRIuFAST8>\n"
-" Opcode base: %<PRIuFAST8>\n"
-"\n"
-"Opcodes:\n"
-msgstr ""
-
-#: src/readelf.c:5548
-#, c-format
-msgid "invalid data at offset %tu in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:5563
-#, c-format
-msgid " [%*<PRIuFAST8>] %hhu argument\n"
-msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5571
-msgid ""
-"\n"
-"Directory table:"
-msgstr ""
-
-#: src/readelf.c:5587
-msgid ""
-"\n"
-"File name table:\n"
-" Entry Dir Time Size Name"
-msgstr ""
-
-#: src/readelf.c:5616
-msgid ""
-"\n"
-"Line number statements:"
-msgstr ""
-
-#: src/readelf.c:5677
-#, c-format
-msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
-msgstr ""
-
-#: src/readelf.c:5697
-#, c-format
-msgid " extended opcode %u: "
-msgstr ""
-
-#: src/readelf.c:5702
-msgid "end of sequence"
-msgstr ""
-
-#: src/readelf.c:5717
-#, c-format
-msgid "set address to %s\n"
-msgstr ""
-
-#: src/readelf.c:5738
-#, c-format
-msgid "define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
-msgstr ""
-
-#: src/readelf.c:5747
-msgid "unknown opcode"
-msgstr ""
-
-#: src/readelf.c:5759
-msgid " copy"
-msgstr ""
-
-#: src/readelf.c:5769
-#, c-format
-msgid "advance address by %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5780
-#, c-format
-msgid " advance line by constant %d to %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:5788
-#, c-format
-msgid " set file to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5798
-#, c-format
-msgid " set column to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5805
-#, c-format
-msgid " set '%s' to %<PRIuFAST8>\n"
-msgstr ""
-
-#: src/readelf.c:5811
-msgid " set basic block flag"
-msgstr ""
-
-#: src/readelf.c:5821
-#, c-format
-msgid "advance address by constant %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5837
-#, c-format
-msgid "advance address by fixed value %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5846
-msgid " set prologue end flag"
-msgstr ""
-
-#: src/readelf.c:5851
-msgid " set epilogue begin flag"
-msgstr ""
-
-#: src/readelf.c:5860
-#, c-format
-msgid " unknown opcode with %<PRIu8> parameter:"
-msgid_plural " unknown opcode with %<PRIu8> parameters:"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5892
-#, c-format
-msgid "cannot get .debug_loc content: %s"
-msgstr ""
-
-#: src/readelf.c:5947
-#, c-format
-msgid " [%6tx] %s..%s"
-msgstr ""
-
-#: src/readelf.c:5949
-#, c-format
-msgid " %s..%s"
-msgstr ""
-
-#: src/readelf.c:6002
-#, c-format
-msgid "cannot get macro information section data: %s"
-msgstr ""
-
-#: src/readelf.c:6081
-#, c-format
-msgid "%*s*** non-terminated string at end of section"
-msgstr ""
-
-#: src/readelf.c:6149
-#, c-format
-msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
-msgstr ""
-
-#: src/readelf.c:6188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" %*s String\n"
-msgstr ""
-
-#: src/readelf.c:6202
-#, c-format
-msgid " *** error while reading strings: %s\n"
-msgstr ""
-
-#: src/readelf.c:6222
-#, c-format
-msgid ""
-"\n"
-"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
-msgstr ""
-
-#: src/readelf.c:6324
-#, c-format
-msgid ""
-"\n"
-"Exception handling table section [%2zu] '.gcc_except_table':\n"
-msgstr ""
-
-#: src/readelf.c:6347
-#, c-format
-msgid " LPStart encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6359
-#, c-format
-msgid " TType encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6373
-#, c-format
-msgid " Call site encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6386
-msgid ""
-"\n"
-" Call site table:"
-msgstr ""
-
-#: src/readelf.c:6400
-#, c-format
-msgid ""
-" [%4u] Call site start: %#<PRIx64>\n"
-" Call site length: %<PRIu64>\n"
-" Landing pad: %#<PRIx64>\n"
-" Action: %u\n"
-msgstr ""
-
-#: src/readelf.c:6460
-#, c-format
-msgid "invalid TType encoding"
-msgstr ""
-
-#: src/readelf.c:6484
-#, c-format
-msgid "cannot get debug context descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:6620 src/readelf.c:7221
-#, c-format
-msgid "cannot convert core note data: %s"
-msgstr ""
-
-#: src/readelf.c:6961
-#, c-format
-msgid ""
-"\n"
-"%*s... <repeats %u more times> ..."
-msgstr ""
-
-#: src/readelf.c:7320
-msgid " Owner Data size Type\n"
-msgstr ""
-
-#: src/readelf.c:7338
-#, c-format
-msgid " %-13.*s %9<PRId32> %s\n"
-msgstr ""
-
-#: src/readelf.c:7372
-#, c-format
-msgid "cannot get content of note section: %s"
-msgstr ""
-
-#: src/readelf.c:7399
-#, c-format
-msgid ""
-"\n"
-"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7422
-#, c-format
-msgid ""
-"\n"
-"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7468
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no data to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7474 src/readelf.c:7497
-#, c-format
-msgid "cannot get data for section [%Zu] '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7478
-#, c-format
-msgid ""
-"\n"
-"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7491
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no strings to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7501
-#, c-format
-msgid ""
-"\n"
-"String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7549
-#, c-format
-msgid ""
-"\n"
-"section [%lu] does not exist"
-msgstr ""
-
-#: src/readelf.c:7576
-#, c-format
-msgid ""
-"\n"
-"section '%s' does not exist"
-msgstr ""
-
-#: src/readelf.c:7637
-#, c-format
-msgid "cannot get symbol index of archive '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7640
-#, c-format
-msgid ""
-"\n"
-"Archive '%s' has no symbol index\n"
-msgstr ""
-
-#: src/readelf.c:7644
-#, c-format
-msgid ""
-"\n"
-"Index of archive '%s' has %Zu entries:\n"
-msgstr ""
-
-#: src/readelf.c:7662
-#, c-format
-msgid "cannot extract member at offset %Zu in '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7667
-#, c-format
-msgid "Archive member '%s' contains:\n"
-msgstr ""
-
-#: src/size.c:68
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default "
-"is `bsd'"
-msgstr ""
-
-#: src/size.c:70
-msgid "Same as `--format=sysv'"
-msgstr ""
-
-#: src/size.c:71
-msgid "Same as `--format=bsd'"
-msgstr ""
-
-#: src/size.c:74
-msgid "Same as `--radix=10'"
-msgstr ""
-
-#: src/size.c:75
-msgid "Same as `--radix=8'"
-msgstr ""
-
-#: src/size.c:76
-msgid "Same as `--radix=16'"
-msgstr ""
-
-#: src/size.c:78
-msgid "Similar to `--format=sysv' output but in one line"
-msgstr ""
-
-#: src/size.c:82
-msgid "Print size and permission flags for loadable segments"
-msgstr ""
-
-#: src/size.c:83
-msgid "Display the total sizes (bsd only)"
-msgstr ""
-
-#: src/size.c:88
-msgid "List section sizes of FILEs (a.out by default)."
-msgstr ""
-
-#: src/size.c:269
-#, c-format
-msgid "Invalid format: %s"
-msgstr ""
-
-#: src/size.c:280
-#, c-format
-msgid "Invalid radix: %s"
-msgstr ""
-
-#: src/size.c:339
-#, c-format
-msgid "%s: file format not recognized"
-msgstr ""
-
-#: src/size.c:446 src/size.c:589
-#, c-format
-msgid " (ex %s)"
-msgstr ""
-
-#: src/size.c:614
-msgid "(TOTALS)\n"
-msgstr ""
-
-#: src/strings.c:70
-msgid "Output Selection:"
-msgstr ""
-
-#: src/strings.c:71
-msgid "Scan entire file, not only loaded sections"
-msgstr ""
-
-#: src/strings.c:73
-msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
-msgstr ""
-
-#: src/strings.c:74
-msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
-"{B,L} = 32-bit"
-msgstr ""
-
-#: src/strings.c:78
-msgid "Print name of the file before each string."
-msgstr ""
-
-#: src/strings.c:80
-msgid "Print location of the string in base 8, 10, or 16 respectively."
-msgstr ""
-
-#: src/strings.c:81
-msgid "Alias for --radix=o"
-msgstr ""
-
-#: src/strings.c:88
-msgid "Print the strings of printable characters in files."
-msgstr ""
-
-#: src/strings.c:268 src/strings.c:303
-#, c-format
-msgid "invalid value '%s' for %s parameter"
-msgstr ""
-
-#: src/strings.c:314
-#, c-format
-msgid "invalid minimum length of matched string size"
-msgstr ""
-
-#: src/strings.c:601
-#, c-format
-msgid "lseek64 failed"
-msgstr ""
-
-#: src/strings.c:616 src/strings.c:680
-#, c-format
-msgid "re-mmap failed"
-msgstr ""
-
-#: src/strings.c:653
-#, c-format
-msgid "mprotect failed"
-msgstr ""
-
-#: src/strip.c:74
-msgid "Place stripped output into FILE"
-msgstr ""
-
-#: src/strip.c:75
-msgid "Extract the removed sections into FILE"
-msgstr ""
-
-#: src/strip.c:76
-msgid "Embed name FILE instead of -f argument"
-msgstr ""
-
-#: src/strip.c:80
-msgid "Remove all debugging symbols"
-msgstr ""
-
-#: src/strip.c:84
-msgid "Copy modified/access timestamps to the output"
-msgstr ""
-
-#: src/strip.c:86
-msgid "Remove .comment section"
-msgstr ""
-
-#: src/strip.c:89
-msgid "Relax a few rules to handle slightly broken ELF files"
-msgstr ""
-
-#: src/strip.c:94
-msgid "Discard symbols from object files."
-msgstr ""
-
-#: src/strip.c:186
-#, c-format
-msgid "Only one input file allowed together with '-o' and '-f'"
-msgstr ""
-
-#: src/strip.c:222
-#, c-format
-msgid "-f option specified twice"
-msgstr ""
-
-#: src/strip.c:231
-#, c-format
-msgid "-F option specified twice"
-msgstr ""
-
-#: src/strip.c:240 src/unstrip.c:125
-#, c-format
-msgid "-o option specified twice"
-msgstr ""
-
-#: src/strip.c:260
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr ""
-
-#: src/strip.c:298 src/strip.c:322
-#, c-format
-msgid "cannot stat input file '%s'"
-msgstr ""
-
-#: src/strip.c:312
-#, c-format
-msgid "while opening '%s'"
-msgstr ""
-
-#: src/strip.c:350
-#, c-format
-msgid "%s: cannot use -o or -f when stripping archive"
-msgstr ""
-
-#: src/strip.c:448
-#, c-format
-msgid "cannot open EBL backend"
-msgstr ""
-
-#: src/strip.c:498 src/strip.c:522
-#, c-format
-msgid "cannot create new file '%s': %s"
-msgstr ""
-
-#: src/strip.c:582
-#, c-format
-msgid "illformed file '%s'"
-msgstr ""
-
-#: src/strip.c:869 src/strip.c:956
-#, c-format
-msgid "while generating output file: %s"
-msgstr ""
-
-#: src/strip.c:929 src/strip.c:1668
-#, c-format
-msgid "%s: error while creating ELF header: %s"
-msgstr ""
-
-#: src/strip.c:943
-#, c-format
-msgid "while preparing output for '%s'"
-msgstr ""
-
-#: src/strip.c:994 src/strip.c:1050
-#, c-format
-msgid "while create section header section: %s"
-msgstr ""
-
-#: src/strip.c:1000
-#, c-format
-msgid "cannot allocate section data: %s"
-msgstr ""
-
-#: src/strip.c:1059
-#, c-format
-msgid "while create section header string table: %s"
-msgstr ""
-
-#: src/strip.c:1593 src/strip.c:1690
-#, c-format
-msgid "while writing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1604
-#, c-format
-msgid "while creating '%s'"
-msgstr ""
-
-#: src/strip.c:1616
-#, c-format
-msgid "while computing checksum for debug information"
-msgstr ""
-
-#: src/strip.c:1676
-#, c-format
-msgid "%s: error while reading the file: %s"
-msgstr ""
-
-#: src/strip.c:1722 src/strip.c:1729
-#, c-format
-msgid "error while finishing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1752 src/strip.c:1809
-#, c-format
-msgid "cannot set access and modification date of '%s'"
-msgstr ""
-
-#: src/unstrip.c:78
-msgid "Match MODULE against file names, not module names"
-msgstr ""
-
-#: src/unstrip.c:79
-msgid "Silently skip unfindable files"
-msgstr ""
-
-#: src/unstrip.c:82
-msgid "Place output into FILE"
-msgstr ""
-
-#: src/unstrip.c:84
-msgid "Create multiple output files under DIRECTORY"
-msgstr ""
-
-#: src/unstrip.c:85
-msgid "Use module rather than file names"
-msgstr ""
-
-#: src/unstrip.c:87
-msgid "Create output for modules that have no separate debug information"
-msgstr ""
-
-#: src/unstrip.c:90
-msgid "Apply relocations to section contents in ET_REL files"
-msgstr ""
-
-#: src/unstrip.c:92
-msgid "Only list module and file names, build IDs"
-msgstr ""
-
-#: src/unstrip.c:134
-#, c-format
-msgid "-d option specified twice"
-msgstr ""
-
-#: src/unstrip.c:166
-#, c-format
-msgid "only one of -o or -d allowed"
-msgstr ""
-
-#: src/unstrip.c:175
-#, c-format
-msgid "-n cannot be used with explicit files or -o or -d"
-msgstr ""
-
-#: src/unstrip.c:190
-#, c-format
-msgid "output directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:199
-#, c-format
-msgid "exactly two file arguments are required"
-msgstr ""
-
-#: src/unstrip.c:205
-#, c-format
-msgid "-m, -a, -R, and -i options not allowed with explicit files"
-msgstr ""
-
-#: src/unstrip.c:218
-#, c-format
-msgid "-o or -d is required when using implicit files"
-msgstr ""
-
-#: src/unstrip.c:254
-#, c-format
-msgid "cannot create ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:259
-#, c-format
-msgid "cannot copy ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:264 src/unstrip.c:1817
-#, c-format
-msgid "cannot create program headers: %s"
-msgstr ""
-
-#: src/unstrip.c:270
-#, c-format
-msgid "cannot copy program header: %s"
-msgstr ""
-
-#: src/unstrip.c:280
-#, c-format
-msgid "cannot copy section header: %s"
-msgstr ""
-
-#: src/unstrip.c:283 src/unstrip.c:1505
-#, c-format
-msgid "cannot get section data: %s"
-msgstr ""
-
-#: src/unstrip.c:285 src/unstrip.c:1507
-#, c-format
-msgid "cannot copy section data: %s"
-msgstr ""
-
-#: src/unstrip.c:309
-#, c-format
-msgid "cannot create directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:349 src/unstrip.c:763 src/unstrip.c:1540
-#, c-format
-msgid "cannot get symbol table entry: %s"
-msgstr ""
-
-#: src/unstrip.c:365 src/unstrip.c:580 src/unstrip.c:601 src/unstrip.c:613
-#: src/unstrip.c:1561 src/unstrip.c:1691 src/unstrip.c:1715
-#, c-format
-msgid "cannot update symbol table: %s"
-msgstr ""
-
-#: src/unstrip.c:382 src/unstrip.c:432 src/unstrip.c:562 src/unstrip.c:1209
-#: src/unstrip.c:1525 src/unstrip.c:1720 src/unstrip.c:1791
-#, c-format
-msgid "cannot update section header: %s"
-msgstr ""
-
-#: src/unstrip.c:408 src/unstrip.c:419
-#, c-format
-msgid "cannot update relocation: %s"
-msgstr ""
-
-#: src/unstrip.c:507
-#, c-format
-msgid "cannot get symbol version: %s"
-msgstr ""
-
-#: src/unstrip.c:519
-#, c-format
-msgid "unexpected section type in [%Zu] with sh_link to symtab"
-msgstr ""
-
-#: src/unstrip.c:769
-#, c-format
-msgid "invalid string offset in symbol [%Zu]"
-msgstr ""
-
-#: src/unstrip.c:911 src/unstrip.c:1248
-#, c-format
-msgid "cannot read section [%Zu] name: %s"
-msgstr ""
-
-#: src/unstrip.c:952 src/unstrip.c:971 src/unstrip.c:1004
-#, c-format
-msgid "cannot read '.gnu.prelink_undo' section: %s"
-msgstr ""
-
-#: src/unstrip.c:992
-#, c-format
-msgid "invalid contents in '%s' section"
-msgstr ""
-
-#: src/unstrip.c:1047 src/unstrip.c:1370
-#, c-format
-msgid "cannot find matching section for [%Zu] '%s'"
-msgstr ""
-
-#: src/unstrip.c:1171 src/unstrip.c:1186 src/unstrip.c:1451
-#, c-format
-msgid "cannot add section name to string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1195
-#, c-format
-msgid "cannot update section header string table data: %s"
-msgstr ""
-
-#: src/unstrip.c:1223 src/unstrip.c:1227
-#, c-format
-msgid "cannot get section header string table section index: %s"
-msgstr ""
-
-#: src/unstrip.c:1231 src/unstrip.c:1235 src/unstrip.c:1466
-#, c-format
-msgid "cannot get section count: %s"
-msgstr ""
-
-#: src/unstrip.c:1293 src/unstrip.c:1385
-#, c-format
-msgid "cannot read section header string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1445
-#, c-format
-msgid "cannot add new section: %s"
-msgstr ""
-
-#: src/unstrip.c:1548
-#, c-format
-msgid "symbol [%Zu] has invalid section index"
-msgstr ""
-
-#: src/unstrip.c:1800
-#, c-format
-msgid "cannot get ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:1827
-#, c-format
-msgid "cannot update program header: %s"
-msgstr ""
-
-#: src/unstrip.c:1832 src/unstrip.c:1911
-#, c-format
-msgid "cannot write output file: %s"
-msgstr ""
-
-#: src/unstrip.c:1880
-#, c-format
-msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1883
-#, c-format
-msgid ""
-"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1902 src/unstrip.c:1942 src/unstrip.c:1954 src/unstrip.c:2034
-#, c-format
-msgid "cannot create ELF descriptor: %s"
-msgstr ""
-
-#: src/unstrip.c:1960
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr ""
-
-#: src/unstrip.c:1991
-#, c-format
-msgid "cannot find stripped file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:1995
-#, c-format
-msgid "cannot open stripped file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2010
-#, c-format
-msgid "cannot find debug file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2014
-#, c-format
-msgid "cannot open debug file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2027
-#, c-format
-msgid "module '%s' file '%s' is not stripped"
-msgstr ""
-
-#: src/unstrip.c:2058
-#, c-format
-msgid "cannot cache section addresses for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2191
-#, c-format
-msgid "no matching modules found"
-msgstr ""
-
-#: src/unstrip.c:2200
-#, c-format
-msgid "matched more than one module"
-msgstr ""
-
-#: src/unstrip.c:2247
-msgid ""
-"STRIPPED-FILE DEBUG-FILE\n"
-"[MODULE...]"
-msgstr ""
-
-#: src/unstrip.c:2248
-msgid ""
-"Combine stripped files with separate symbols and debug information.\n\nThe "
-"first form puts the result in DEBUG-FILE if -o was not given.\n"
-"\n"
-"MODULE arguments give file name patterns matching modules to process.\n"
-"With -f these match the file name of the main (stripped) file (slashes are "
-"never special), otherwise they match the simple module names. With no "
-"arguments, process all modules found.\n"
-"\n"
-"Multiple modules are written to files under OUTPUT-DIRECTORY, creating "
-"subdirectories as needed. With -m these files have simple module names, "
-"otherwise they have the name of the main file complete with directory "
-"underneath OUTPUT-DIRECTORY.\n"
-"\n"
-"With -n no files are written, but one line to standard output for each "
-"module:\n"
-"\tSTART+SIZE BUILDID FILE DEBUGFILE MODULENAME\n"
-"START and SIZE are hexadecimal giving the address bounds of the module. "
-"BUILDID is hexadecimal for the build ID bits, or - if no ID is known; the "
-"hexadecimal may be followed by @0xADDR giving the address where the ID "
-"resides if that is known. FILE is the file name found for the module, or - "
-"if none was found, or . if an ELF image is available but not from any named "
-"file. DEBUGFILE is the separate debuginfo file name, or - if no debuginfo "
-"was found, or . if FILE contains the debug information."
-msgstr ""
diff --git a/po/pl.po b/po/pl.po
index 54a01641..260955ab 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: 2019-11-26 09:48+0100\n"
+"POT-Creation-Date: 2021-02-05 21:10+0100\n"
"PO-Revision-Date: 2016-12-29 17:48+0100\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish <trans-pl@lists.fedoraproject.org>\n"
@@ -59,8 +59,8 @@ msgstr ""
"BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI\n"
"HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n"
-#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: lib/xmalloc.c:48 lib/xmalloc.c:61 lib/xmalloc.c:73 src/readelf.c:3453
+#: src/readelf.c:11501 src/unstrip.c:312 src/unstrip.c:2398 src/unstrip.c:2603
#, c-format
msgid "memory exhausted"
msgstr "pamięć wyczerpana"
@@ -223,7 +223,7 @@ msgstr "nieprawidłowa wersja DWARF"
msgid "invalid directory index"
msgstr "nieprawidłowy indeks katalogu"
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:72
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73
msgid "address out of range"
msgstr "adres jest spoza zakresu"
@@ -254,7 +254,7 @@ msgstr "nieprawidłowy indeks wiersza"
msgid "invalid address range index"
msgstr "nieprawidłowy indeks zakresu adresów"
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:73
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:74
msgid "no matching address range"
msgstr "brak pasującego zakresu adresów"
@@ -301,23 +301,23 @@ msgstr " nieznana instrukcja"
msgid ".debug_addr section missing"
msgstr "brak sekcji .debug_ranges"
-#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2540
+#: libdwfl/argp-std.c:47 src/stack.c:643 src/unstrip.c:2544
msgid "Input selection options:"
msgstr "Opcje wyboru wejścia:"
-#: libdwfl/argp-std.c:51
+#: libdwfl/argp-std.c:48
msgid "Find addresses in FILE"
msgstr "Wyszukuje adresy w PLIKU"
-#: libdwfl/argp-std.c:53
+#: libdwfl/argp-std.c:50
msgid "Find addresses from signatures found in COREFILE"
msgstr "Wyszukuje adresy z podpisów odnalezionych w PLIKU_CORE"
-#: libdwfl/argp-std.c:55
+#: libdwfl/argp-std.c:52
msgid "Find addresses in files mapped into process PID"
msgstr "Wyszukuje adresy w plikach zmapowanych do PID procesów"
-#: libdwfl/argp-std.c:57
+#: libdwfl/argp-std.c:54
msgid ""
"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
"format"
@@ -325,45 +325,45 @@ msgstr ""
"Wyszukuje adresy w plikach zmapowanych jako odczyt z PLIKU w formacie /proc/"
"PID/maps systemu Linux"
-#: libdwfl/argp-std.c:59
+#: libdwfl/argp-std.c:56
msgid "Find addresses in the running kernel"
msgstr "Wyszukuje adresy w uruchomionych jądrze"
-#: libdwfl/argp-std.c:61
+#: libdwfl/argp-std.c:58
msgid "Kernel with all modules"
msgstr "Jądro ze wszystkimi modułami"
-#: libdwfl/argp-std.c:63 src/stack.c:645
+#: libdwfl/argp-std.c:60 src/stack.c:650
msgid "Search path for separate debuginfo files"
msgstr "Wyszukuje ścieżkę dla oddzielnych plików debuginfo"
-#: libdwfl/argp-std.c:164
+#: libdwfl/argp-std.c:161
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:237
+#: libdwfl/argp-std.c:234
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:241
+#: libdwfl/argp-std.c:238
msgid "cannot find kernel modules"
msgstr "nie można odnaleźć modułów jądra"
-#: libdwfl/argp-std.c:258
+#: libdwfl/argp-std.c:255
msgid "cannot find kernel or modules"
msgstr "nie można odnaleźć jądra lub modułów"
-#: libdwfl/argp-std.c:297
+#: libdwfl/argp-std.c:294
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "nie można odczytać pliku core ELF: %s"
-#: libdwfl/argp-std.c:320
+#: libdwfl/argp-std.c:317
msgid "Not enough memory"
msgstr "Za mało pamięci"
-#: libdwfl/argp-std.c:330
+#: libdwfl/argp-std.c:327
msgid "No modules recognized in core file"
msgstr "Nie rozpoznano żadnych modułów w pliku core"
@@ -396,126 +396,131 @@ msgid "LZMA decompression failed"
msgstr "dekompresja LZMA się nie powiodła"
#: libdwfl/libdwflP.h:61
+#, fuzzy
+msgid "zstd decompression failed"
+msgstr "dekompresja gzip się nie powiodła"
+
+#: libdwfl/libdwflP.h:62
msgid "no support library found for machine"
msgstr "nie odnaleziono biblioteki obsługi dla komputera"
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:63
msgid "Callbacks missing for ET_REL file"
msgstr "Brak wywołań zwrotnych dla pliku ET_REL"
-#: libdwfl/libdwflP.h:63
+#: libdwfl/libdwflP.h:64
msgid "Unsupported relocation type"
msgstr "Nieobsługiwany typ relokacji"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:65
msgid "r_offset is bogus"
msgstr "r_offset jest fałszywe"
-#: libdwfl/libdwflP.h:65 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:66 libelf/elf_error.c:115 libelf/elf_error.c:175
msgid "offset out of range"
msgstr "offset spoza zakresu"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:67
msgid "relocation refers to undefined symbol"
msgstr "relokacja odnosi się do nieokreślonego symbolu"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:68
msgid "Callback returned failure"
msgstr "Wywołanie zwrotne zwróciło niepowodzenie"
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:69
msgid "No DWARF information found"
msgstr "Nie odnaleziono informacji DWARF"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
msgid "No symbol table found"
msgstr "Nie odnaleziono tabeli symboli"
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
msgid "No ELF program headers"
msgstr "Brak nagłówków programu ELF"
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
msgid "address range overlaps an existing module"
msgstr "zakres adresów pokrywa się z istniejącym modułem"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
msgid "image truncated"
msgstr "skrócono obraz"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:76
msgid "ELF file opened"
msgstr "otwarto plik ELF"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:77
msgid "not a valid ELF file"
msgstr "nie jest prawidłowym plikiem ELF"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
msgid "cannot handle DWARF type description"
msgstr "nie można obsłużyć opisu typu DWARF"
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
msgid "ELF file does not match build ID"
msgstr "plik ELF nie ma pasujÄ…cego identyfikatora kopii"
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
msgid "corrupt .gnu.prelink_undo section data"
msgstr "uszkodzone dane sekcji .gnu.prelink_undo"
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
msgid "Internal error due to ebl"
msgstr "Wewnętrzny błąd z powodu ebl"
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
msgid "Missing data in core file"
msgstr "Brak danych w pliku core"
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
msgid "Invalid register"
msgstr "Nieprawidłowy rejestr"
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
msgid "Error reading process memory"
msgstr "Błąd podczas odczytywania pamięci procesu"
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
msgid "Couldn't find architecture of any ELF"
msgstr "Nie można odnaleźć architektury żadnego ELF"
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
msgid "Error parsing /proc filesystem"
msgstr "Błąd podczas przetwarzania systemu plików /proc"
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
msgid "Invalid DWARF"
msgstr "Nieprawidłowy DWARF"
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
msgid "Unsupported DWARF"
msgstr "Nieobsługiwany DWARF"
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
msgid "Unable to find more threads"
msgstr "Nie można odnaleźć więcej wątków"
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
msgid "Dwfl already has attached state"
msgstr "Dwfl już ma załączony stan"
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
msgid "Dwfl has no attached state"
msgstr "Dwfl nie ma załączonego stanu"
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
msgid "Unwinding not supported for this architecture"
msgstr "Odwijanie nie jest obsługiwane dla tej architektury"
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
msgid "Invalid argument"
msgstr "Nieprawidłowy parametr"
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
msgid "Not an ET_CORE ELF file"
msgstr "Nie jest plikiem ELF ET_CORE"
@@ -526,7 +531,7 @@ msgstr "Brak zaplecza"
#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
msgid "<unknown>"
msgstr "<nieznany>"
@@ -586,7 +591,7 @@ msgstr " Identyfikator kopii: "
msgid " Linker version: %.*s\n"
msgstr " Wersja konsolidatora: %.*s\n"
-#: libebl/eblobjnote.c:571
+#: libebl/eblobjnote.c:638
#, c-format
msgid " OS: %s, ABI: "
msgstr " System operacyjny: %s, ABI: "
@@ -620,7 +625,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:6166
+#: libelf/elf_error.c:87 src/readelf.c:6209
#, c-format
msgid "invalid encoding"
msgstr "nieprawidłowe kodowanie"
@@ -706,8 +711,8 @@ msgstr "dane/scn nie zgadzajÄ… siÄ™"
msgid "invalid section header"
msgstr "nieprawidłowy nagłówek sekcji"
-#: libelf/elf_error.c:191 src/readelf.c:9914 src/readelf.c:10514
-#: src/readelf.c:10615 src/readelf.c:10797
+#: libelf/elf_error.c:191 src/readelf.c:10012 src/readelf.c:10612
+#: src/readelf.c:10713 src/readelf.c:10895
#, c-format
msgid "invalid data"
msgstr "nieprawidłowe dane"
@@ -864,12 +869,12 @@ msgstr "Składnia sekcji wymaga dokładnie jednego modułu"
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr "offset %#<PRIxMAX> leży poza sekcjÄ… „%sâ€"
-#: src/addr2line.c:632
+#: src/addr2line.c:652
#, c-format
msgid "cannot find symbol '%s'"
msgstr "nie można odnaleźć symbolu „%sâ€"
-#: src/addr2line.c:637
+#: src/addr2line.c:657
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr "offset %#<PRIxMAX> leży poza zawartoÅ›ciÄ… „%sâ€"
@@ -1038,12 +1043,12 @@ msgstr "nie można wykonać stat na archiwum „%sâ€"
msgid "no entry %s in archive\n"
msgstr "brak wpisu %s w archiwum\n"
-#: src/ar.c:472 src/ar.c:923 src/ar.c:1127
+#: src/ar.c:472 src/ar.c:927 src/ar.c:1134
#, c-format
msgid "cannot create hash table"
msgstr "nie można utworzyć tabeli mieszającej"
-#: src/ar.c:479 src/ar.c:930 src/ar.c:1136
+#: src/ar.c:479 src/ar.c:934 src/ar.c:1143
#, c-format
msgid "cannot insert into hash table"
msgstr "nie można umieścić w tabeli mieszającej"
@@ -1083,67 +1088,67 @@ msgstr "nie można zmienić czasu modyfikacji %s"
msgid "cannot rename temporary file to %.*s"
msgstr "nie można zmienić nazwy pliku tymczasowego na %.*s"
-#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222
+#: src/ar.c:764 src/ar.c:1019 src/ar.c:1423 src/ranlib.c:222
#, c-format
msgid "cannot create new file"
msgstr "nie można utworzyć nowego pliku"
-#: src/ar.c:1218
+#: src/ar.c:1225
#, c-format
msgid "position member %s not found"
msgstr "nie odnaleziono położenia elementu %s"
-#: src/ar.c:1228
+#: src/ar.c:1235
#, c-format
msgid "%s: no entry %s in archive!\n"
msgstr "%s: brak wpisu %s w archiwum.\n"
-#: src/ar.c:1257 src/objdump.c:241
+#: src/ar.c:1264 src/objdump.c:241
#, c-format
msgid "cannot open %s"
msgstr "nie można otworzyć %s"
-#: src/ar.c:1262
+#: src/ar.c:1269
#, c-format
msgid "cannot stat %s"
msgstr "nie można wykonać stat na %s"
-#: src/ar.c:1268
+#: src/ar.c:1275
#, c-format
msgid "%s is no regular file"
msgstr "%s nie jest zwykłym plikiem"
-#: src/ar.c:1281
+#: src/ar.c:1288
#, c-format
msgid "cannot get ELF descriptor for %s: %s\n"
msgstr "nie można uzyskać deskryptora ELF dla %s: %s\n"
-#: src/ar.c:1301
+#: src/ar.c:1308
#, c-format
msgid "cannot read %s: %s"
msgstr "nie można odczytać %s: %s"
-#: src/ar.c:1476
+#: src/ar.c:1483
#, fuzzy, c-format
msgid "cannot represent ar_date"
msgstr "nie można dekompresować danych"
-#: src/ar.c:1482
+#: src/ar.c:1489
#, fuzzy, c-format
msgid "cannot represent ar_uid"
msgstr "nie można dekompresować danych"
-#: src/ar.c:1488
+#: src/ar.c:1495
#, fuzzy, c-format
msgid "cannot represent ar_gid"
msgstr "nie można dekompresować danych"
-#: src/ar.c:1494
+#: src/ar.c:1501
#, fuzzy, c-format
msgid "cannot represent ar_mode"
msgstr "nie można uzyskać nazwy sekcji"
-#: src/ar.c:1500
+#: src/ar.c:1507
#, fuzzy, c-format
msgid "cannot represent ar_size"
msgstr "nie można otworzyć %s"
@@ -1156,7 +1161,7 @@ msgstr "Używa zero jako UID, GID i datę w elementach archiwum."
msgid "Use actual uid, gid, and date in archive members."
msgstr "Używa prawdziwe UID, GID i datę w elementach archiwum."
-#: src/arlib-argp.c:65
+#: src/arlib-argp.c:63
#, c-format
msgid "%s (default)"
msgstr "%s (domyślnie)"
@@ -1365,8 +1370,8 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr "Nieprawidłowa wartość „%s†dla parametru --gaps."
#: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
-#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2189 src/unstrip.c:2218
+#: src/size.c:272 src/strings.c:185 src/strip.c:1030 src/strip.c:1067
+#: src/unstrip.c:2194 src/unstrip.c:2223
#, c-format
msgid "cannot open '%s'"
msgstr "nie można otworzyć „%sâ€"
@@ -1396,7 +1401,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:308 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:117
#, c-format
msgid "-o option specified twice"
msgstr "OpcjÄ™ -o podano dwukrotnie"
@@ -1517,7 +1522,7 @@ msgstr "błąd podczas zamykania deskryptora ELF: %s\n"
msgid "No errors"
msgstr "Brak błędów"
-#: src/elflint.c:219 src/readelf.c:575
+#: src/elflint.c:219 src/readelf.c:577
msgid "Missing file name.\n"
msgstr "Brak nazwy pliku.\n"
@@ -1673,14 +1678,14 @@ msgid ""
msgstr ""
"sekcja [%2d] „%sâ€: grupa sekcji [%2zu] „%s†nie poprzedza elementu grupy\n"
-#: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651
-#: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095
-#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431
+#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
+#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
+#: src/elflint.c:3254 src/elflint.c:3444 src/elflint.c:4456
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać danych sekcji\n"
-#: src/elflint.c:623 src/elflint.c:1658
+#: src/elflint.c:623 src/elflint.c:1662
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1703,172 +1708,182 @@ msgstr ""
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr "sekcja [%2u] „%sâ€: rozmiar wpisu nie zgadza siÄ™ z ElfXX_Sym\n"
-#: src/elflint.c:667
+#: src/elflint.c:662
+#, fuzzy, c-format
+msgid ""
+"section [%2u] '%s': number of local entries in 'st_info' larger than table "
+"size\n"
+msgstr "sekcja [%2d] „%sâ€: brak okreÅ›lonych wpisów notatek dla typu pliku\n"
+
+#: src/elflint.c:671
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać symbolu %d: %s\n"
-#: src/elflint.c:672 src/elflint.c:675 src/elflint.c:678 src/elflint.c:681
-#: src/elflint.c:684 src/elflint.c:687
+#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
+#: src/elflint.c:688 src/elflint.c:691
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "sekcja [%2d] „%sâ€: „%s†w zerowym wpisie nie jest zerem\n"
-#: src/elflint.c:690
+#: src/elflint.c:694
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "sekcja [%2d] „%sâ€: XINDEX dla zerowego wpisu nie jest zerem\n"
-#: src/elflint.c:700
+#: src/elflint.c:704
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać symbolu %zu: %s\n"
-#: src/elflint.c:709
+#: src/elflint.c:713
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: nieprawidÅ‚owa wartość nazwy\n"
-#: src/elflint.c:724
-#, c-format
+#: src/elflint.c:728
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
+"section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
"section index section\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: za duży indeks sekcji, ale nie ma sekcji "
"rozszerzonych indeksów sekcji\n"
-#: src/elflint.c:730
-#, c-format
+#: src/elflint.c:734
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
+"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
+"in st_shndx (%<PRIu32>)\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: XINDEX użyty dla indeksu, który zmieÅ›ciÅ‚by "
"się w st_shndx (%<PRIu32>)\n"
#. || sym->st_shndx > SHN_HIRESERVE always false
-#: src/elflint.c:742
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
+#: src/elflint.c:746
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: nieprawidÅ‚owy indeks sekcji\n"
-#: src/elflint.c:750
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
+#: src/elflint.c:754
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: nieznany typ\n"
-#: src/elflint.c:756
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
+#: src/elflint.c:760
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: nieznane dowiÄ…zanie symbolu\n"
-#: src/elflint.c:761
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
+#: src/elflint.c:765
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: unikalny symbol nie jest typem obiektu\n"
-#: src/elflint.c:769
-#, c-format
+#: src/elflint.c:773
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
+"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
+"files\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: COMMON jest dozwolone tylko w plikach "
"relokowalnych\n"
-#: src/elflint.c:773
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
+#: src/elflint.c:777
+#, fuzzy, c-format
+msgid ""
+"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: lokalne symbole COMMON to nonsens\n"
-#: src/elflint.c:777
-#, c-format
+#: src/elflint.c:781
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
+"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: funkcja w sekcji COMMON to nonsens\n"
-#: src/elflint.c:828
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
+#: src/elflint.c:832
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: st_value spoza zakresu\n"
-#: src/elflint.c:834 src/elflint.c:859 src/elflint.c:908
-#, c-format
+#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
+"section [%2d] '%s'\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu nie mieÅ›ci siÄ™ w caÅ‚oÅ›ci we wskazywanej sekcji "
"[%2d] „%sâ€\n"
-#: src/elflint.c:843
-#, c-format
+#: src/elflint.c:847
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
+"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
+"have SHF_TLS flag set\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: wskazywana sekcja [%2d] „%s†nie ma "
"ustawionej flagi SHF_TLS\n"
-#: src/elflint.c:853 src/elflint.c:901
-#, c-format
+#: src/elflint.c:857 src/elflint.c:905
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
+"section [%2d] '%s'\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: st_value spoza zakresu wskazywanej sekcji "
"[%2d] „%sâ€\n"
-#: src/elflint.c:880
-#, c-format
+#: src/elflint.c:884
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
+"entry\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: symbol TLS, ale brak wpisu TLS nagłówka "
"programu\n"
-#: src/elflint.c:886
-#, c-format
+#: src/elflint.c:890
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but couldn't get TLS program "
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
"header entry\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: symbol TLS, ale nie można uzyskać wpisu TLS "
"nagłówka programu\n"
-#: src/elflint.c:894
-#, c-format
+#: src/elflint.c:898
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
-"'%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
+"[%2d] '%s'\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: st_value pomija wskazywanÄ… sekcjÄ™ [%2d] „%sâ€\n"
-#: src/elflint.c:921
-#, c-format
+#: src/elflint.c:925
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
+"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
"sh_info\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: lokalny symbol spoza zakresu okreÅ›lonego "
"w sh_info\n"
-#: src/elflint.c:928
-#, c-format
+#: src/elflint.c:932
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
+"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
+"described in sh_info\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: nielokalny symbol spoza zakresu okreÅ›lonego "
"w sh_info\n"
-#: src/elflint.c:935
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
+#: src/elflint.c:939
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: nielokalny symbol sekcji\n"
-#: src/elflint.c:985
+#: src/elflint.c:989
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1877,7 +1892,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: symbol _GLOBAL_OFFSET_TABLE_ odnosi siÄ™ do bÅ‚Ä™dnej sekcji "
"[%2d]\n"
-#: src/elflint.c:992
+#: src/elflint.c:996
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1889,7 +1904,7 @@ msgstr ""
#. This test is more strict than the psABIs which
#. usually allow the symbol to be in the middle of
#. the .got section, allowing negative offsets.
-#: src/elflint.c:1008
+#: src/elflint.c:1012
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1898,7 +1913,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: wartość symbolu _GLOBAL_OFFSET_TABLE_ %#<PRIx64> nie "
"pasuje do adresu sekcji %s %#<PRIx64>\n"
-#: src/elflint.c:1015
+#: src/elflint.c:1019
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1907,7 +1922,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: rozmiar symbolu _GLOBAL_OFFSET_TABLE_ %<PRIu64> nie "
"pasuje do rozmiaru sekcji %s %<PRIu64>\n"
-#: src/elflint.c:1023
+#: src/elflint.c:1027
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1916,7 +1931,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: symbol _GLOBAL_OFFSET_TABLE_ istnieje, ale brak sekcji ."
"got\n"
-#: src/elflint.c:1039
+#: src/elflint.c:1043
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1925,7 +1940,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: wartość symbolu _DYNAMIC_ %#<PRIx64> nie pasuje do adresu "
"segmentu dynamicznego %#<PRIx64>\n"
-#: src/elflint.c:1046
+#: src/elflint.c:1050
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1934,36 +1949,36 @@ msgstr ""
"sekcja [%2d] „%sâ€: rozmiar symbolu _DYNAMIC_ %<PRIu64> nie pasuje do "
"rozmiaru segmentu dynamicznego %<PRIu64>\n"
-#: src/elflint.c:1059
-#, c-format
+#: src/elflint.c:1063
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
+"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
"default visibility\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %zu: symbol w dynamicznej tabeli symboli "
"z niedomyślną widocznością\n"
-#: src/elflint.c:1063
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
+#: src/elflint.c:1067
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
msgstr "sekcja [%2d] „%sâ€: symbol %zu: ustawiono nieznany bit w st_other\n"
-#: src/elflint.c:1101
+#: src/elflint.c:1105
#, c-format
msgid "section [%2d] '%s': cannot get section data.\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać danych sekcji.\n"
-#: src/elflint.c:1117
+#: src/elflint.c:1121
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "sekcja [%2d] „%sâ€: DT_RELCOUNT użyte dla tej sekcji RELA\n"
-#: src/elflint.c:1128 src/elflint.c:1181
+#: src/elflint.c:1132 src/elflint.c:1185
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr "sekcja [%2d] „%sâ€: DT_RELCOUNT %d za duże dla tej sekcji\n"
-#: src/elflint.c:1153 src/elflint.c:1206
+#: src/elflint.c:1157 src/elflint.c:1210
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1972,7 +1987,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: relokacje wzglÄ™dne po indeksie %d podanym przez "
"DT_RELCOUNT\n"
-#: src/elflint.c:1159 src/elflint.c:1212
+#: src/elflint.c:1163 src/elflint.c:1216
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -1981,50 +1996,50 @@ msgstr ""
"sekcja [%2d] „%sâ€: relokacja bezwzglÄ™dna pod indeksem %zu; DT_RELCOUNT podaÅ‚ "
"%d relokacji względnych\n"
-#: src/elflint.c:1171
+#: src/elflint.c:1175
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "sekcja [%2d] „%sâ€: DT_RELACOUNT użyte dla tej sekcji REL\n"
-#: src/elflint.c:1254
+#: src/elflint.c:1258
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "sekcja [%2d] „%sâ€: nieprawidÅ‚owy indeks sekcji docelowej\n"
-#: src/elflint.c:1266
+#: src/elflint.c:1270
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "sekcja [%2d] „%sâ€: nieprawidÅ‚owy typ sekcji docelowej\n"
-#: src/elflint.c:1274
+#: src/elflint.c:1278
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "sekcja [%2d] „%sâ€: sh_info powinno wynosić zero\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1286
#, c-format
msgid ""
"section [%2d] '%s': no relocations for merge-able string sections possible\n"
msgstr ""
"sekcja [%2d] „%sâ€: relokacje dla sekcji zÅ‚Ä…czalnych ciÄ…gów sÄ… niemożliwe\n"
-#: src/elflint.c:1290
+#: src/elflint.c:1294
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr "sekcja [%2d] „%sâ€: rozmiar wpisu sekcji nie zgadza siÄ™ z ElfXX_Rela\n"
-#: src/elflint.c:1350
+#: src/elflint.c:1354
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
"flaga relokacji tekstu jest ustawiona, ale nie ma segmentu tylko do odczytu\n"
-#: src/elflint.c:1377
+#: src/elflint.c:1381
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "sekcja [%2d] „%sâ€: relokacja %zu: nieprawidÅ‚owy typ\n"
-#: src/elflint.c:1385
+#: src/elflint.c:1389
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -2033,12 +2048,12 @@ msgstr ""
"sekcja [%2d] „%sâ€: relokacja %zu: typ relokacji nieprawidÅ‚owy dla tego typu "
"pliku\n"
-#: src/elflint.c:1393
+#: src/elflint.c:1397
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr "sekcja [%2d] „%sâ€: relokacja %zu: nieprawidÅ‚owy indeks symbolu\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1415
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -2047,12 +2062,12 @@ msgstr ""
"sekcja [%2d] „%sâ€: relokacja %zu: z %s można użyć tylko symbolu "
"„_GLOBAL_OFFSET_TABLE_â€\n"
-#: src/elflint.c:1428
+#: src/elflint.c:1432
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "sekcja [%2d] „%sâ€: relokacja %zu: offset spoza zakresu\n"
-#: src/elflint.c:1443
+#: src/elflint.c:1447
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -2060,7 +2075,7 @@ msgid ""
msgstr ""
"sekcja [%2d] „%sâ€: relokacja %zu: relokacja kopii wzglÄ™dem symbolu typu %s\n"
-#: src/elflint.c:1464
+#: src/elflint.c:1468
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -2069,23 +2084,23 @@ msgstr ""
"sekcja [%2d] „%sâ€: relokacja %zu: sekcja tylko do odczytu zostaÅ‚a "
"zmodyfikowana, ale nie ustawiono flagi relokacji tekstu\n"
-#: src/elflint.c:1479
+#: src/elflint.c:1483
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
"sekcja [%2d] „%sâ€: relokacje wzglÄ™dem wczytanych i niewczytanych danych\n"
-#: src/elflint.c:1519 src/elflint.c:1570
+#: src/elflint.c:1523 src/elflint.c:1574
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać relokacji %zu: %s\n"
-#: src/elflint.c:1646
+#: src/elflint.c:1650
#, c-format
msgid "more than one dynamic section present\n"
msgstr "obecna jest więcej niż jedna sekcja dynamiczna\n"
-#: src/elflint.c:1664
+#: src/elflint.c:1668
#, c-format
msgid ""
"section [%2d]: referenced as string table for section [%2d] '%s' but section "
@@ -2094,43 +2109,43 @@ msgstr ""
"sekcja [%2d]: wskazane jako tabela ciÄ…gów dla sekcji [%2d] „%sâ€, ale wartość "
"dowiązania sekcji jest nieprawidłowa\n"
-#: src/elflint.c:1672
+#: src/elflint.c:1676
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr "sekcja [%2d] „%sâ€: rozmiar wpisu sekcji nie zgadza siÄ™ z ElfXX_Dyn\n"
-#: src/elflint.c:1677 src/elflint.c:1966
+#: src/elflint.c:1681 src/elflint.c:1970
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr "sekcja [%2d] „%sâ€: sh_info nie wynosi zero\n"
-#: src/elflint.c:1687
+#: src/elflint.c:1691
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
"sekcja [%2d] „%sâ€: nie można uzyskać wpisu %zu sekcji dynamicznej: %s\n"
-#: src/elflint.c:1695
+#: src/elflint.c:1699
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr "sekcja [%2d] „%sâ€: wpisy nie-DT_NULL wystÄ™pujÄ… po wpisie DT_NULL\n"
-#: src/elflint.c:1702
+#: src/elflint.c:1706
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr "sekcja [%2d] „%sâ€: wpis %zu: nieznany znacznik\n"
-#: src/elflint.c:1713
+#: src/elflint.c:1717
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr "sekcja [%2d] „%sâ€: wpis %zu: wiÄ™cej niż jeden wpis ze znacznikiem %s\n"
-#: src/elflint.c:1723
+#: src/elflint.c:1727
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr "sekcja [%2d] „%sâ€: wpis %zu: użyto znacznika %s poziomu 2\n"
-#: src/elflint.c:1741
+#: src/elflint.c:1745
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -2138,7 +2153,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: wpis %zu: wartość DT_PLTREL musi wynosić DT_REL lub "
"DT_RELA\n"
-#: src/elflint.c:1754
+#: src/elflint.c:1758
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -2147,14 +2162,14 @@ msgstr ""
"sekcja [%2d] „%sâ€: wpis %zu: wskaźnik nie pasuje do adresu sekcji [%2d] „%s†"
"wskazywanej przez sh_link\n"
-#: src/elflint.c:1797
+#: src/elflint.c:1801
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
"sekcja [%2d] „%sâ€: wpis %zu: wartość %s musi wskazywać na wczytany segment\n"
-#: src/elflint.c:1812
+#: src/elflint.c:1816
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -2163,48 +2178,48 @@ msgstr ""
"sekcja [%2d] „%sâ€: wpis %zu: wartość %s musi być prawidÅ‚owym offsetem "
"w sekcji [%2d] „%sâ€\n"
-#: src/elflint.c:1832 src/elflint.c:1860
+#: src/elflint.c:1836 src/elflint.c:1864
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr "sekcja [%2d] „%sâ€: zawiera wpis %s, ale nie %s\n"
-#: src/elflint.c:1844
+#: src/elflint.c:1848
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr "sekcja [%2d] „%sâ€: brak obowiÄ…zkowego znacznika %s\n"
-#: src/elflint.c:1853
+#: src/elflint.c:1857
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr "sekcja [%2d] „%sâ€: brak sekcji skrótów\n"
-#: src/elflint.c:1868 src/elflint.c:1875
+#: src/elflint.c:1872 src/elflint.c:1879
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr "sekcja [%2d] „%sâ€: nie wszystkie z %s, %s i %s sÄ… obecne\n"
-#: src/elflint.c:1885 src/elflint.c:1889
+#: src/elflint.c:1889 src/elflint.c:1893
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
"sekcja [%2d] „%sâ€: brak znacznika %s w DSO oznaczonym podczas wstÄ™pnej "
"konsolidacji\n"
-#: src/elflint.c:1895
+#: src/elflint.c:1899
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
"sekcja [%2d] „%sâ€: plik nie-DSO oznaczony jako zależność podczas wstÄ™pnej "
"konsolidacji\n"
-#: src/elflint.c:1906 src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918
+#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
"sekcja [%2d] „%sâ€: brak znacznika %s we wstÄ™pnie konsolidowanym pliku "
"wykonywalnym\n"
-#: src/elflint.c:1930
+#: src/elflint.c:1934
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
@@ -2212,7 +2227,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: tylko pliki relokowalne mogÄ… mieć rozszerzonÄ… sekcjÄ™ "
"indeksów\n"
-#: src/elflint.c:1940
+#: src/elflint.c:1944
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
@@ -2220,31 +2235,31 @@ msgstr ""
"sekcja [%2d] „%sâ€: sekcja rozszerzonych indeksów sekcji nie dla tabeli "
"symboli\n"
-#: src/elflint.c:1944
+#: src/elflint.c:1948
#, c-format
msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
msgstr ""
"sekcja [%2d] „%sâ€: rozszerzony indeks sekcji sh_link [%2d] jest "
"nieprawidłowy\n"
-#: src/elflint.c:1949
+#: src/elflint.c:1953
#, c-format
msgid "cannot get data for symbol section\n"
msgstr "nie można uzyskać danych dla sekcji symboli\n"
-#: src/elflint.c:1952
+#: src/elflint.c:1956
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr "sekcja [%2d] „%sâ€: rozmiar wpisu nie zgadza siÄ™ z Elf32_Word\n"
-#: src/elflint.c:1961
+#: src/elflint.c:1965
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
"sekcja [%2d] „%sâ€: tabela rozszerzonych indeksów jest za maÅ‚a dla tabeli "
"symboli\n"
-#: src/elflint.c:1976
+#: src/elflint.c:1980
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -2253,24 +2268,24 @@ msgstr ""
"sekcja [%2d] „%sâ€: rozszerzony indeks sekcji w sekcji [%2zu] „%s†odwoÅ‚uje "
"siÄ™ do tej samej tabeli symboli\n"
-#: src/elflint.c:1994
+#: src/elflint.c:1998
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr "symbol 0 powinien mieć zerowy rozszerzony indeks sekcji\n"
-#: src/elflint.c:2006
+#: src/elflint.c:2010
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr "nie można uzyskać danych dla symbolu %zu\n"
-#: src/elflint.c:2011
+#: src/elflint.c:2015
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
"rozszerzony indeks sekcji wynosi %<PRIu32>, ale indeks symbolu nie wynosi "
"XINDEX\n"
-#: src/elflint.c:2028 src/elflint.c:2085
+#: src/elflint.c:2032 src/elflint.c:2089
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
@@ -2278,43 +2293,43 @@ msgstr ""
"sekcja [%2d] „%sâ€: sekcja tabeli mieszajÄ…cej jest za maÅ‚a (%ld, oczekiwano "
"%ld)\n"
-#: src/elflint.c:2042 src/elflint.c:2099
+#: src/elflint.c:2046 src/elflint.c:2103
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr "sekcja [%2d] „%sâ€: tabela Å‚aÅ„cuchowa jest za duża\n"
-#: src/elflint.c:2056 src/elflint.c:2113
+#: src/elflint.c:2060 src/elflint.c:2117
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
"sekcja [%2d] „%sâ€: odwoÅ‚anie do kubeÅ‚ka skrótu %zu jest spoza zakresu\n"
-#: src/elflint.c:2066
+#: src/elflint.c:2070
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
"sekcja [%2d] „%sâ€: odwoÅ‚anie do Å‚aÅ„cucha skrótu %zu jest spoza zakresu\n"
-#: src/elflint.c:2123
+#: src/elflint.c:2127
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
"sekcja [%2d] „%sâ€: odwoÅ‚anie do Å‚aÅ„cucha skrótu %<PRIu64> jest spoza "
"zakresu\n"
-#: src/elflint.c:2136
+#: src/elflint.c:2140
#, c-format
msgid "section [%2d] '%s': not enough data\n"
msgstr "sekcja [%2d] „%sâ€: brak wystarczajÄ…cej iloÅ›ci danych\n"
-#: src/elflint.c:2148
+#: src/elflint.c:2152
#, c-format
msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
msgstr ""
"sekcja [%2d] „%sâ€: rozmiar maski bitowej wynosi zero lub nie jest potÄ™gÄ… 2: "
"%u\n"
-#: src/elflint.c:2164
+#: src/elflint.c:2168
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
@@ -2323,13 +2338,13 @@ msgstr ""
"sekcja [%2d] „%sâ€: sekcja tabeli mieszajÄ…cej jest za maÅ‚a (wynosi %ld, "
"oczekiwano co najmniej %ld)\n"
-#: src/elflint.c:2173
+#: src/elflint.c:2177
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
"sekcja [%2d] „%sâ€: drugie przesuniÄ™cie funkcji mieszajÄ…cej jest za duże: %u\n"
-#: src/elflint.c:2207
+#: src/elflint.c:2211
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -2337,7 +2352,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: Å‚aÅ„cuch mieszajÄ…cy dla kubeÅ‚ka %zu jest mniejszy niż "
"przesunięcie indeksu symboli\n"
-#: src/elflint.c:2228
+#: src/elflint.c:2232
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -2346,7 +2361,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: symbol %u wskazywany w łaÅ„cuchu dla kubeÅ‚ka %zu jest "
"nieokreślony\n"
-#: src/elflint.c:2241
+#: src/elflint.c:2245
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -2354,7 +2369,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: wartość skrótu dla symbolu %u w łaÅ„cuchu dla kubeÅ‚ka %zu "
"jest błędna\n"
-#: src/elflint.c:2250
+#: src/elflint.c:2254
#, c-format
msgid ""
"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
@@ -2362,12 +2377,12 @@ msgstr ""
"sekcja [%2d] „%sâ€: indeks maski dla symbolu %u w łaÅ„cuchu dla kubeÅ‚ka %zu "
"jest błędny\n"
-#: src/elflint.c:2280
+#: src/elflint.c:2284
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr "sekcja [%2d] „%sâ€: Å‚aÅ„cuch skrótu dla kubeÅ‚ka %zu jest spoza zakresu\n"
-#: src/elflint.c:2285
+#: src/elflint.c:2289
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -2375,41 +2390,41 @@ msgstr ""
"sekcja [%2d] „%sâ€: odwoÅ‚anie do symbolu w łaÅ„cuchu dla kubeÅ‚ka %zu jest "
"spoza zakresu\n"
-#: src/elflint.c:2291
+#: src/elflint.c:2295
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
"sekcja [%2d] „%sâ€: maska bitowa nie pasuje do nazw w tabeli mieszajÄ…cej\n"
-#: src/elflint.c:2304
+#: src/elflint.c:2308
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
"sekcja [%2d] „%sâ€: pliki relokowalne nie mogÄ… mieć tabeli mieszajÄ…cych\n"
-#: src/elflint.c:2322
+#: src/elflint.c:2326
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
"sekcja [%2d] „%sâ€: tabela mieszajÄ…ca nie dla tabeli dynamicznych symboli\n"
-#: src/elflint.c:2326
+#: src/elflint.c:2330
#, c-format
msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
msgstr ""
"sekcja [%2d] „%sâ€: nieprawidÅ‚owy indeks sekcji tabeli symboli sh_link [%2d]\n"
-#: src/elflint.c:2336
+#: src/elflint.c:2340
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr "sekcja [%2d] „%sâ€: niepoprawny rozmiar wpisu tabeli mieszajÄ…cej\n"
-#: src/elflint.c:2341
+#: src/elflint.c:2345
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr "sekcja [%2d] „%sâ€: nieoznaczona do przydzielenia\n"
-#: src/elflint.c:2346
+#: src/elflint.c:2350
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2418,29 +2433,29 @@ msgstr ""
"sekcja [%2d] „%sâ€: tabela mieszajÄ…ca nie ma miejsca nawet na poczÄ…tkowe "
"wpisy administracyjne\n"
-#: src/elflint.c:2395
+#: src/elflint.c:2399
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
"sh_link w sekcjach skrótu [%2zu] „%s†i [%2zu] „%s†nie są identyczne\n"
-#: src/elflint.c:2419 src/elflint.c:2484 src/elflint.c:2519
+#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
#, c-format
msgid "hash section [%2zu] '%s' does not contain enough data\n"
msgstr ""
"sekcja mieszania [%2zu] „%s†nie zawiera wystarczającej ilości danych\n"
-#: src/elflint.c:2440
+#: src/elflint.c:2444
#, c-format
msgid "hash section [%2zu] '%s' has zero bit mask words\n"
msgstr "sekcja mieszania [%2zu] „%s†ma zerowe słowa maski bitów\n"
-#: src/elflint.c:2451 src/elflint.c:2495 src/elflint.c:2532
+#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
#, c-format
msgid "hash section [%2zu] '%s' uses too much data\n"
msgstr "sekcja mieszania [%2zu] „%s†używa za dużo danych\n"
-#: src/elflint.c:2466
+#: src/elflint.c:2470
#, c-format
msgid ""
"hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
@@ -2449,17 +2464,17 @@ msgstr ""
"sekcja mieszająca [%2zu] „%s†nieprawidłowy indeks symboli %<PRIu32> "
"(max_nsyms: %<PRIu32>, nentries: %<PRIu32>\n"
-#: src/elflint.c:2553
+#: src/elflint.c:2557
#, c-format
msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
msgstr "sekcja mieszania [%2zu] „%s†nieprawidłowe sh_entsize\n"
-#: src/elflint.c:2563 src/elflint.c:2567
+#: src/elflint.c:2567 src/elflint.c:2571
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr "sekcja [%2zu] „%sâ€: odwoÅ‚anie do symbolu o indeksie 0\n"
-#: src/elflint.c:2574
+#: src/elflint.c:2578
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2468,7 +2483,7 @@ msgstr ""
"symbol %d wymieniony w nowej tabeli mieszajÄ…cej w [%2zu] „%sâ€, ale nie "
"w poprzedniej tabeli mieszajÄ…cej [%2zu] „%sâ€\n"
-#: src/elflint.c:2586
+#: src/elflint.c:2590
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2477,12 +2492,12 @@ msgstr ""
"symbol %d wymieniony w poprzedniej tabeli mieszajÄ…cej w [%2zu] „%sâ€, ale nie "
"w nowej tabeli mieszajÄ…cej w [%2zu] „%sâ€\n"
-#: src/elflint.c:2602
+#: src/elflint.c:2606
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr "sekcja [%2d] „%sâ€: niezerowe sh_%s dla sekcji NULL\n"
-#: src/elflint.c:2622
+#: src/elflint.c:2626
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
@@ -2490,96 +2505,96 @@ msgstr ""
"sekcja [%2d] „%sâ€: w plikach obiektów relokowalnych dozwolone sÄ… tylko grupy "
"sekcji\n"
-#: src/elflint.c:2633
+#: src/elflint.c:2637
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać tabeli symboli: %s\n"
-#: src/elflint.c:2638
+#: src/elflint.c:2642
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
"sekcja [%2d] „%sâ€: odwoÅ‚anie do sekcji w sh_link nie ma tabeli symboli\n"
-#: src/elflint.c:2644
+#: src/elflint.c:2648
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr "sekcja [%2d] „%sâ€: nieprawidÅ‚owy indeks symbolu w sh_info\n"
-#: src/elflint.c:2649
+#: src/elflint.c:2653
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr "sekcja [%2d] „%sâ€: niezerowe sh_flags\n"
-#: src/elflint.c:2656
+#: src/elflint.c:2660
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać symbolu dla podpisu\n"
-#: src/elflint.c:2660
+#: src/elflint.c:2664
#, c-format
msgid "section [%2d] '%s': cannot get symbol name for signature\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać nazwy symbolu dla podpisu\n"
-#: src/elflint.c:2665
+#: src/elflint.c:2669
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr "sekcja [%2d] „%sâ€: symbol podpisu nie można być pustym ciÄ…giem\n"
-#: src/elflint.c:2671
+#: src/elflint.c:2675
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr "sekcja [%2d] „%sâ€: sh_flags nie ustawione poprawnie\n"
-#: src/elflint.c:2677
+#: src/elflint.c:2681
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać danych: %s\n"
-#: src/elflint.c:2686
+#: src/elflint.c:2690
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
"sekcja [%2d] „%sâ€: rozmiar sekcji nie jest wielokrotnoÅ›ciÄ… "
"sizeof(Elf32_Word)\n"
-#: src/elflint.c:2692
+#: src/elflint.c:2696
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr "sekcja [%2d] „%sâ€: grupa sekcji bez sÅ‚owa flag\n"
-#: src/elflint.c:2700
+#: src/elflint.c:2704
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr "sekcja [%2d] „%sâ€: grupa sekcji bez elementów\n"
-#: src/elflint.c:2704
+#: src/elflint.c:2708
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr "sekcja [%2d] „%sâ€: grupa sekcji z tylko jednym elementem\n"
-#: src/elflint.c:2715
+#: src/elflint.c:2719
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr "sekcja [%2d] „%sâ€: nieznane flagi grupy sekcji\n"
-#: src/elflint.c:2727
+#: src/elflint.c:2731
#, c-format
msgid "section [%2d] '%s': section index %zu out of range\n"
msgstr "sekcja [%2d] „%sâ€: indeks sekcji %zu jest spoza zakresu\n"
-#: src/elflint.c:2736
+#: src/elflint.c:2740
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
"sekcja [%2d] „%sâ€: nie można uzyskać nagłówka sekcji dla elementu %zu: %s\n"
-#: src/elflint.c:2743
+#: src/elflint.c:2747
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr "sekcja [%2d] „%sâ€: grupa sekcji zawiera innÄ… grupÄ™ [%2d] „%sâ€\n"
-#: src/elflint.c:2749
+#: src/elflint.c:2753
#, c-format
msgid ""
"section [%2d] '%s': element %zu references section [%2d] '%s' without "
@@ -2588,12 +2603,12 @@ msgstr ""
"sekcja [%2d] „%sâ€: element %zu odwoÅ‚uje siÄ™ do sekcji [%2d] „%s†bez flagi "
"SHF_GROUP\n"
-#: src/elflint.c:2756
+#: src/elflint.c:2760
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr "sekcja [%2d] „%s†jest zawarta w więcej niż jednej grupie sekcji\n"
-#: src/elflint.c:2946
+#: src/elflint.c:2957
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2602,7 +2617,7 @@ msgstr ""
"sekcja [%2d] „%s†odwoÅ‚uje siÄ™ w sh_link do sekcji [%2d] „%sâ€, która nie "
"jest tabelÄ… symboli dynamicznych\n"
-#: src/elflint.c:2958
+#: src/elflint.c:2969
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2610,76 +2625,76 @@ msgid ""
msgstr ""
"sekcja [%2d] „%s†ma innÄ… liczbÄ™ wpisów niż tabela symboli [%2d] „%sâ€\n"
-#: src/elflint.c:2974
+#: src/elflint.c:2985
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr "sekcja [%2d] „%sâ€: symbol %d: nie można odczytać danych wersji\n"
-#: src/elflint.c:2990
+#: src/elflint.c:3001
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr "sekcja [%2d] „%sâ€: symbol %d: symbol lokalny z zakresem globalnym\n"
-#: src/elflint.c:2998
+#: src/elflint.c:3009
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr "sekcja [%2d] „%sâ€: symbol %d: symbol lokalny z wersjÄ…\n"
-#: src/elflint.c:3012
+#: src/elflint.c:3023
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr "sekcja [%2d] „%sâ€: symbol %d: nieprawidÅ‚owy indeks wersji %d\n"
-#: src/elflint.c:3017
+#: src/elflint.c:3028
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %d: indeks wersji %d jest dla wersji okreÅ›lonej\n"
-#: src/elflint.c:3027
+#: src/elflint.c:3038
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
"sekcja [%2d] „%sâ€: symbol %d: indeks wersji %d jest dla wersji żądanej\n"
-#: src/elflint.c:3080
+#: src/elflint.c:3091
#, c-format
msgid "more than one version reference section present\n"
msgstr "obecna jest więcej niż jedna sekcja odniesienia wersji\n"
-#: src/elflint.c:3088 src/elflint.c:3235
+#: src/elflint.c:3099 src/elflint.c:3246
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr "sekcja [%2d] „%sâ€: sh_link nie Å‚Ä…czy siÄ™ z tabelÄ… ciÄ…gów\n"
-#: src/elflint.c:3113 src/elflint.c:3289
+#: src/elflint.c:3124 src/elflint.c:3300
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr "sekcja [%2d] „%sâ€: wpis %d ma bÅ‚Ä™dnÄ… wersjÄ™ %d\n"
-#: src/elflint.c:3120 src/elflint.c:3296
+#: src/elflint.c:3131 src/elflint.c:3307
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr "sekcja [%2d] „%sâ€: wpis %d ma bÅ‚Ä™dny offset dla danych dodatkowych\n"
-#: src/elflint.c:3130
+#: src/elflint.c:3141
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr "sekcja [%2d] „%sâ€: symbol %d ma bÅ‚Ä™dne odniesienie do pliku\n"
-#: src/elflint.c:3138
+#: src/elflint.c:3149
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr "sekcja [%2d] „%sâ€: wpis %d odnosi siÄ™ do nieznanej zależnoÅ›ci\n"
-#: src/elflint.c:3150
+#: src/elflint.c:3161
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr "sekcja [%2d] „%sâ€: wpis dodatkowy %d do wpisu %d ma nieznanÄ… flagÄ™\n"
-#: src/elflint.c:3158
+#: src/elflint.c:3169
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2688,7 +2703,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: wpis dodatkowy %d do wpisu %d ma nieprawidÅ‚owe "
"odniesienie do nazwy\n"
-#: src/elflint.c:3167
+#: src/elflint.c:3178
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2697,7 +2712,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: wpis dodatkowy %d do wpisu %d ma bÅ‚Ä™dnÄ… wartość skrótu: "
"%#x, oczekiwano %#x\n"
-#: src/elflint.c:3176
+#: src/elflint.c:3187
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -2706,19 +2721,19 @@ msgstr ""
"sekcja [%2d] „%sâ€: wpis dodatkowy %d do wpisu %d ma powtórzonÄ… nazwÄ™ wersji "
"„%sâ€\n"
-#: src/elflint.c:3187
+#: src/elflint.c:3198
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
msgstr ""
"sekcja [%2d] „%sâ€: wpis dodatkowy %d do wpisu %d ma bÅ‚Ä™dne nastÄ™pne pole\n"
-#: src/elflint.c:3204 src/elflint.c:3380
+#: src/elflint.c:3215 src/elflint.c:3391
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr "sekcja [%2d] „%sâ€: wpis %d ma bÅ‚Ä™dny offset do nastÄ™pnego wpisu\n"
-#: src/elflint.c:3212 src/elflint.c:3388
+#: src/elflint.c:3223 src/elflint.c:3399
#, c-format
msgid ""
"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
@@ -2727,43 +2742,43 @@ msgstr ""
"sekcja [%2d] „%sâ€: wpis %d ma zerowy offset do nastÄ™pnego wpisu, ale sh_info "
"zawiera informacje o większej liczbie wpisów\n"
-#: src/elflint.c:3227
+#: src/elflint.c:3238
#, c-format
msgid "more than one version definition section present\n"
msgstr "obecna jest więcej niż jedna sekcja definicji wersji\n"
-#: src/elflint.c:3274
+#: src/elflint.c:3285
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr "sekcja [%2d] „%sâ€: jest wiÄ™cej niż jedna definicja BASE\n"
-#: src/elflint.c:3278
+#: src/elflint.c:3289
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr "sekcja [%2d] „%sâ€: definicja BASE musi mieć indeks VER_NDX_GLOBAL\n"
-#: src/elflint.c:3284
+#: src/elflint.c:3295
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr "sekcja [%2d] „%sâ€: wpis %d ma nieznanÄ… flagÄ™\n"
-#: src/elflint.c:3311
+#: src/elflint.c:3322
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr "sekcja [%2d] „%sâ€: wpis %d ma nieprawidÅ‚owe odniesienie do nazwy\n"
-#: src/elflint.c:3318
+#: src/elflint.c:3329
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
"sekcja [%2d] „%sâ€: wpis %d ma bÅ‚Ä™dnÄ… wartość skrótu: %#x, oczekiwano %#x\n"
-#: src/elflint.c:3326
+#: src/elflint.c:3337
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr "sekcja [%2d] „%sâ€: wpis %d ma powtórzonÄ… nazwÄ™ wersji „%sâ€\n"
-#: src/elflint.c:3346
+#: src/elflint.c:3357
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -2771,51 +2786,51 @@ msgstr ""
"sekcja [%2d] „%sâ€: wpis %d ma nieprawidÅ‚owe odniesienie do nazwy w danych "
"dodatkowych\n"
-#: src/elflint.c:3363
+#: src/elflint.c:3374
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
"sekcja [%2d] „%sâ€: wpis %d ma bÅ‚Ä™dne nastÄ™pne pole w danych dodatkowych\n"
-#: src/elflint.c:3396
+#: src/elflint.c:3407
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr "sekcja [%2d] „%sâ€: brak definicji BASE\n"
-#: src/elflint.c:3412
+#: src/elflint.c:3423
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr "sekcja [%2d] „%sâ€: nieznana wersja rodzica „%sâ€\n"
-#: src/elflint.c:3425
+#: src/elflint.c:3436
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr "sekcja [%2d] „%sâ€: pusta sekcja atrybutów obiektu\n"
-#: src/elflint.c:3446
+#: src/elflint.c:3457
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr "sekcja [%2d] „%sâ€: nierozpoznany format atrybutu\n"
-#: src/elflint.c:3462
+#: src/elflint.c:3473
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: pole o zerowej dÅ‚ugoÅ›ci w sekcji atrybutów\n"
-#: src/elflint.c:3471
+#: src/elflint.c:3482
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: nieprawidÅ‚owa dÅ‚ugość w sekcji atrybutów\n"
-#: src/elflint.c:3483
+#: src/elflint.c:3494
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr "sekcja [%2d] „%sâ€: offset %zu: niezakoÅ„czony ciÄ…g nazwy producenta\n"
-#: src/elflint.c:3500
+#: src/elflint.c:3511
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -2823,19 +2838,19 @@ msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: niekoÅ„czÄ…ce siÄ™ ULEB128 w znaczniku podsekcji "
"atrybutów\n"
-#: src/elflint.c:3509
+#: src/elflint.c:3520
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr "sekcja [%2d] „%sâ€: offset %zu: skrócona sekcja atrybutów\n"
-#: src/elflint.c:3518
+#: src/elflint.c:3529
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: zerowej dÅ‚ugoÅ›ci pole w podsekcji atrybutów\n"
-#: src/elflint.c:3533
+#: src/elflint.c:3544
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
@@ -2843,7 +2858,7 @@ msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: nieprawidÅ‚owa dÅ‚ugość w podsekcji atrybutów\n"
#. Tag_File
-#: src/elflint.c:3544
+#: src/elflint.c:3555
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -2851,23 +2866,23 @@ msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: podsekcja atrybutów ma nieoczekiwany znacznik "
"%u\n"
-#: src/elflint.c:3562
+#: src/elflint.c:3573
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: niekoÅ„czÄ…ce siÄ™ ULEB128 w znaczniku atrybutu\n"
-#: src/elflint.c:3573
+#: src/elflint.c:3584
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr "sekcja [%2d] „%sâ€: offset %zu: niezakoÅ„czony ciÄ…g w atrybucie\n"
-#: src/elflint.c:3586
+#: src/elflint.c:3597
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr "sekcja [%2d] „%sâ€: offset %zu: nierozpoznany znacznik atrybutu %u\n"
-#: src/elflint.c:3590
+#: src/elflint.c:3601
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
@@ -2875,12 +2890,12 @@ msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: atrybut %s ma nierozpoznanÄ… wartość "
"%<PRIu64>\n"
-#: src/elflint.c:3600
+#: src/elflint.c:3611
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr "sekcja [%2d] „%sâ€: offset %zu: producent „%s†jest nieznany\n"
-#: src/elflint.c:3606
+#: src/elflint.c:3617
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -2888,47 +2903,47 @@ msgstr ""
"sekcja [%2d] „%sâ€: offset %zu: dodatkowe bajty po ostatniej sekcji "
"atrybutów\n"
-#: src/elflint.c:3695
+#: src/elflint.c:3714
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr "nie można uzyskać nagłówka sekcji zerowej\n"
-#: src/elflint.c:3699
+#: src/elflint.c:3718
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr "sekcja zerowa ma niezerowÄ… nazwÄ™\n"
-#: src/elflint.c:3701
+#: src/elflint.c:3720
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr "sekcja zerowa ma niezerowy typ\n"
-#: src/elflint.c:3703
+#: src/elflint.c:3722
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr "sekcja zerowa ma niezerowe flagi\n"
-#: src/elflint.c:3705
+#: src/elflint.c:3724
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr "sekcja zerowa ma niezerowy adres\n"
-#: src/elflint.c:3707
+#: src/elflint.c:3726
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr "sekcja zerowa ma niezerowy offset\n"
-#: src/elflint.c:3709
+#: src/elflint.c:3728
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr "sekcja zerowa ma niezerową wartość wyrównania\n"
-#: src/elflint.c:3711
+#: src/elflint.c:3730
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr "sekcja zerowa ma niezerową wartość rozmiaru wpisu\n"
-#: src/elflint.c:3714
+#: src/elflint.c:3733
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -2937,7 +2952,7 @@ msgstr ""
"sekcja zerowa ma niezerową wartość rozmiaru, a nagłówek ELF ma niezerową "
"wartość shnum\n"
-#: src/elflint.c:3718
+#: src/elflint.c:3737
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
@@ -2946,7 +2961,7 @@ msgstr ""
"sekcja zerowa ma niezerową wartość dowiązań, a nagłówek ELF nie wskazuje "
"przepełnienia w shstrndx\n"
-#: src/elflint.c:3722
+#: src/elflint.c:3741
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
@@ -2955,46 +2970,46 @@ msgstr ""
"sekcja zerowa ma niezerową wartość dowiązań, a nagłówek ELF nie wskazuje "
"przepełnienia w phnum\n"
-#: src/elflint.c:3740
+#: src/elflint.c:3759
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr "nie można uzyskać nagłówka sekcji dla sekcji [%2zu] „%sâ€: %s\n"
-#: src/elflint.c:3749
+#: src/elflint.c:3768
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr "sekcja [%2zu]: nieprawidłowa nazwa\n"
-#: src/elflint.c:3776
+#: src/elflint.c:3795
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr "sekcja [%2d] „%s†ma błędny typ: oczekiwano %s, jest %s\n"
-#: src/elflint.c:3794
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr "sekcja [%2zu] „%s†ma błędne flagi: oczekiwano %s, jest %s\n"
-#: src/elflint.c:3812
+#: src/elflint.c:3830
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
msgstr ""
"sekcja [%2zu] „%s†ma błędne flagi: oczekiwano %s i być może %s, jest %s\n"
-#: src/elflint.c:3830
+#: src/elflint.c:3847
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr "sekcja [%2zu] „%s†jest obecna w pliku obiektu\n"
-#: src/elflint.c:3836 src/elflint.c:3868
+#: src/elflint.c:3853 src/elflint.c:3885
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
msgstr ""
"sekcja [%2zu] „%s†ma flagę SHF_ALLOC, ale nie ma segmentu wczytywalnego\n"
-#: src/elflint.c:3841 src/elflint.c:3873
+#: src/elflint.c:3858 src/elflint.c:3890
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -3002,7 +3017,7 @@ msgid ""
msgstr ""
"sekcja [%2zu] „%s†nie ma flagi SHF_ALLOC, ale są segmenty wczytywalne\n"
-#: src/elflint.c:3849
+#: src/elflint.c:3866
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -3010,22 +3025,22 @@ msgstr ""
"sekcja [%2zu] „%s†jest tabelą indeksów sekcji rozszerzeń w pliku "
"nieobiektowym\n"
-#: src/elflint.c:3892
+#: src/elflint.c:3909
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr "sekcja [%2zu] „%sâ€: rozmiar nie jest wielokrotnoÅ›ciÄ… rozmiaru wpisu\n"
-#: src/elflint.c:3897
+#: src/elflint.c:3914
#, c-format
msgid "cannot get section header\n"
msgstr "nie można uzyskać nagłówka sekcji\n"
-#: src/elflint.c:3907
+#: src/elflint.c:3924
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr "sekcja [%2zu] „%s†ma nieobsługiwany typ %d\n"
-#: src/elflint.c:3922
+#: src/elflint.c:3944
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3033,74 +3048,74 @@ msgstr ""
"sekcja [%2zu] „%s†zawiera nieprawidłowe flagi dla konkretnego procesora "
"%#<PRIx64>\n"
-#: src/elflint.c:3929
+#: src/elflint.c:3954
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr "sekcja [%2zu] „%s†zawiera nieznane flagi %#<PRIx64>\n"
-#: src/elflint.c:3937
+#: src/elflint.c:3962
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
"sekcja [%2zu] „%sâ€: adres sekcji danych lokalnych dla wÄ…tków nie jest zerem\n"
-#: src/elflint.c:3947
+#: src/elflint.c:3972
#, c-format
msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
msgstr "sekcja [%2zu] „%sâ€: nie można skompresować przydzielonej sekcji\n"
-#: src/elflint.c:3952
+#: src/elflint.c:3977
#, c-format
msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
msgstr "sekcja [%2zu] „%sâ€: nie można skompresować sekcji „nobitsâ€\n"
-#: src/elflint.c:3958
+#: src/elflint.c:3983
#, c-format
msgid ""
"section [%2zu] '%s': compressed section with no compression header: %s\n"
msgstr "sekcja [%2zu] „%sâ€: skompresowana sekcja bez nagłówka kompresji: %s\n"
-#: src/elflint.c:3964
+#: src/elflint.c:3989
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
"sekcja [%2zu] „%sâ€: nieprawidÅ‚owe odwoÅ‚anie do sekcji w wartoÅ›ci dowiÄ…zania\n"
-#: src/elflint.c:3969
+#: src/elflint.c:3994
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
"sekcja [%2zu] „%sâ€: nieprawidÅ‚owe odwoÅ‚anie do sekcji w wartoÅ›ci "
"informacyjnej\n"
-#: src/elflint.c:3976
+#: src/elflint.c:4001
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr "sekcja [%2zu] „%sâ€: flaga ciÄ…gów jest ustawiona bez flagi merge\n"
-#: src/elflint.c:3981
+#: src/elflint.c:4006
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
"sekcja [%2zu] „%sâ€: flaga merge jest ustawiona, ale rozmiar wpisu jest "
"zerowy\n"
-#: src/elflint.c:4000
+#: src/elflint.c:4025
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr "sekcja [%2zu] „%s†ma nieoczekiwany typ %d dla sekcji wykonywalnej\n"
-#: src/elflint.c:4009
+#: src/elflint.c:4034
#, c-format
msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
msgstr "sekcja [%2zu] „%s†musi być typu NOBITS w plikach debuginfo\n"
-#: src/elflint.c:4016
+#: src/elflint.c:4041
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr "sekcja [%2zu] „%s†jest wykonywalne i zapisywalne\n"
-#: src/elflint.c:4047
+#: src/elflint.c:4072
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3109,7 +3124,7 @@ msgstr ""
"sekcja [%2zu] „%s†nie jest w całości zawarta w segmencie wpisu %d nagłówka "
"programu\n"
-#: src/elflint.c:4057
+#: src/elflint.c:4082
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3118,7 +3133,7 @@ msgstr ""
"sekcja [%2zu] „%s†ma typ NOBITS, a jest odczytywana z pliku w segmencie "
"wpisu %d nagłówka programu\n"
-#: src/elflint.c:4083
+#: src/elflint.c:4108
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3127,7 +3142,7 @@ msgstr ""
"sekcja [%2zu] „%s†ma typ NOBITS, ale jest odczytywana z pliku w segmencie "
"wpisu %d nagłówka programu, a zawartość pliku jest niezerowa\n"
-#: src/elflint.c:4094
+#: src/elflint.c:4119
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3136,17 +3151,17 @@ msgstr ""
"sekcja [%2zu] „%s†nie ma typu NOBITS, a nie jest odczytywana z pliku "
"w segmencie wpisu %d nagłówka programu\n"
-#: src/elflint.c:4105
+#: src/elflint.c:4130
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr "sekcja [%2zu] „%s†jest wykonywalne w segmencie niewykonywalnym %d\n"
-#: src/elflint.c:4115
+#: src/elflint.c:4140
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr "sekcja [%2zu] „%s†jest zapisywalne w niezapisywalnym segmencie %d\n"
-#: src/elflint.c:4125
+#: src/elflint.c:4150
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3154,7 +3169,7 @@ msgstr ""
"sekcja [%2zu] „%sâ€: ma flagÄ™ alloc, ale sekcja nie jest w żadnym segmencie "
"wczytywalnym\n"
-#: src/elflint.c:4131
+#: src/elflint.c:4156
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3163,7 +3178,7 @@ msgstr ""
"sekcja [%2zu] „%sâ€: wedÅ‚ug nagłówka ELF to jest tabela ciÄ…gów nagłówków "
"sekcji, ale typ nie jest SHT_TYPE\n"
-#: src/elflint.c:4139
+#: src/elflint.c:4164
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3171,17 +3186,17 @@ msgstr ""
"sekcja [%2zu] „%sâ€: pliki relokowalne nie mogÄ… mieć tabeli symboli "
"dynamicznych\n"
-#: src/elflint.c:4190
+#: src/elflint.c:4215
#, c-format
msgid "more than one version symbol table present\n"
msgstr "obecna jest więcej niż jedna tabela symboli wersji\n"
-#: src/elflint.c:4213
+#: src/elflint.c:4238
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr "jest wpis nagłówka programu INTERP, ale nie ma sekcji .interp\n"
-#: src/elflint.c:4224
+#: src/elflint.c:4249
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
@@ -3189,14 +3204,14 @@ msgstr ""
"wczytywalny segment [%u] jest wykonywalny, ale nie zawiera wykonywalnych "
"sekcji\n"
-#: src/elflint.c:4230
+#: src/elflint.c:4255
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
"wczytywalny segment [%u] jest zapisywalny, ale nie zawiera zapisywalnych "
"sekcji\n"
-#: src/elflint.c:4241
+#: src/elflint.c:4266
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3205,23 +3220,23 @@ msgstr ""
"brak sekcji .gnu.versym, ale istnieje sekcja .gnu.versym_d lub .gnu."
"versym_r\n"
-#: src/elflint.c:4254
+#: src/elflint.c:4279
#, c-format
msgid "duplicate version index %d\n"
msgstr "powtórzony indeks wersji %d\n"
-#: src/elflint.c:4268
+#: src/elflint.c:4293
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr "sekcja .gnu.versym istnieje bez .gnu.versym_d lub .gnu.versym_r\n"
-#: src/elflint.c:4317
+#: src/elflint.c:4342
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
"phdr[%d]: nieznany typ notatki pliku core %<PRIu32> pod offsetem %<PRIu64>\n"
-#: src/elflint.c:4321
+#: src/elflint.c:4346
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3229,7 +3244,7 @@ msgstr ""
"sekcja [%2d]: „%sâ€: nieznany typ notatki pliku core %<PRIu32> pod offsetem "
"%zu\n"
-#: src/elflint.c:4370
+#: src/elflint.c:4395
#, fuzzy, c-format
msgid ""
"phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
@@ -3237,7 +3252,7 @@ msgid ""
msgstr ""
"phdr[%d]: nieznany typ notatki pliku obiektu %<PRIu32> pod offsetem %zu\n"
-#: src/elflint.c:4375
+#: src/elflint.c:4400
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
@@ -3246,37 +3261,37 @@ msgstr ""
"sekcja [%2d] „%sâ€: nieznany typ notatki pliku obiektu %<PRIu32> pod offsetem "
"%zu\n"
-#: src/elflint.c:4394
+#: src/elflint.c:4419
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr "phdr[%d]: brak określonych wpisów notatek dla typu pliku\n"
-#: src/elflint.c:4414
+#: src/elflint.c:4439
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr "phdr[%d]: nie można uzyskać zawartości sekcji notatki: %s\n"
-#: src/elflint.c:4417
+#: src/elflint.c:4442
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr "phdr[%d]: dodatkowe %<PRIu64> bajtów po ostatniej notatce\n"
-#: src/elflint.c:4438
+#: src/elflint.c:4463
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr "sekcja [%2d] „%sâ€: brak okreÅ›lonych wpisów notatek dla typu pliku\n"
-#: src/elflint.c:4445
+#: src/elflint.c:4470
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr "sekcja [%2d] „%sâ€: nie można uzyskać zawartoÅ›ci sekcji notatek\n"
-#: src/elflint.c:4448
+#: src/elflint.c:4473
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr "sekcja [%2d] „%sâ€: dodatkowe %<PRIu64> bajtów po ostatniej notatce\n"
-#: src/elflint.c:4466
+#: src/elflint.c:4491
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
@@ -3284,135 +3299,135 @@ msgstr ""
"tylko pliki wykonywalne, obiekty współdzielone i pliki core mogą mieć "
"nagłówki programu\n"
-#: src/elflint.c:4481
+#: src/elflint.c:4506
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr "nie można uzyskać wpisu nagłówka programu %d: %s\n"
-#: src/elflint.c:4490
+#: src/elflint.c:4516
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
"wpis nagłówka programu %d: nieznany typ wpisu nagłówka programu %#<PRIx64>\n"
-#: src/elflint.c:4501
+#: src/elflint.c:4527
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr "więcej niż jeden wpis INTERP w nagłówku programu\n"
-#: src/elflint.c:4509
+#: src/elflint.c:4535
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr "więcej niż jeden wpis TLS w nagłówku programu\n"
-#: src/elflint.c:4516
+#: src/elflint.c:4542
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr "statyczny plik wykonywalny nie może mieć sekcji dynamicznych\n"
-#: src/elflint.c:4530
+#: src/elflint.c:4556
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr "odniesienie sekcji dynamicznej w nagłówku programu ma błędny offset\n"
-#: src/elflint.c:4533
+#: src/elflint.c:4559
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr "różne rozmiary sekcji dynamicznej w nagłówku programu i sekcji\n"
-#: src/elflint.c:4543
+#: src/elflint.c:4569
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr "więcej niż jeden wpis GNU_RELRO w nagłówku programu\n"
-#: src/elflint.c:4564
+#: src/elflint.c:4590
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr "wczytywalny segment wskazywany przez GNU_RELRO nie jest zapisywalny\n"
-#: src/elflint.c:4575
+#: src/elflint.c:4601
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr "flagi wczytywalnego segmentu [%u] nie pasujÄ… do flag GNU_RELRO [%u]\n"
-#: src/elflint.c:4582
+#: src/elflint.c:4608
#, c-format
msgid ""
"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
msgstr ""
"flagi GNU_RELRO [%u] nie sÄ… podzbiorem flag wczytywalnego segmentu [%u]\n"
-#: src/elflint.c:4591 src/elflint.c:4614
+#: src/elflint.c:4617 src/elflint.c:4640
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr "segment %s nie zawiera siÄ™ we wczytywalnym segmencie\n"
-#: src/elflint.c:4620
+#: src/elflint.c:4646
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
"offsety nagłówka programu w nagłówku ELF i wpisie PHDR nie zgadzają się"
-#: src/elflint.c:4647
+#: src/elflint.c:4673
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
"odniesienie tabeli wyszukiwania ramki wywołania w nagłówku programu ma "
"błędny offset\n"
-#: src/elflint.c:4650
+#: src/elflint.c:4676
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
"różne rozmiary tabel wyszukiwania ramki wywołania w nagłówku programu "
"i sekcji\n"
-#: src/elflint.c:4663
+#: src/elflint.c:4689
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr "PT_GNU_EH_FRAME jest obecne, ale brak sekcji .eh_frame_hdr\n"
-#: src/elflint.c:4671
+#: src/elflint.c:4697
#, c-format
msgid "call frame search table must be allocated\n"
msgstr "tabela wyszukiwania ramki wywołania musi być przydzielona\n"
-#: src/elflint.c:4674
+#: src/elflint.c:4700
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr "sekcja [%2zu] „%sâ€: musi być przydzielona\n"
-#: src/elflint.c:4678
+#: src/elflint.c:4704
#, c-format
msgid "call frame search table must not be writable\n"
msgstr "tabela wyszukiwania ramki wywołania nie może być zapisywalna\n"
-#: src/elflint.c:4681
+#: src/elflint.c:4707
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr "sekcja [%2zu] „%s†nie może być zapisywalna\n"
-#: src/elflint.c:4686
+#: src/elflint.c:4712
#, c-format
msgid "call frame search table must not be executable\n"
msgstr "tabela wyszukiwania ramki wywołania nie może być wykonywalna\n"
-#: src/elflint.c:4689
+#: src/elflint.c:4715
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr "sekcja [%2zu] „%s†nie może być wykonywalna\n"
-#: src/elflint.c:4700
+#: src/elflint.c:4726
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr "wpis nagłówka programu %d: rozmiar pliku większy niż rozmiar pamięci\n"
-#: src/elflint.c:4707
+#: src/elflint.c:4733
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr "wpis nagłówka programu %d: wyrównanie nie jest potęgą 2\n"
-#: src/elflint.c:4710
+#: src/elflint.c:4736
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
@@ -3421,7 +3436,7 @@ msgstr ""
"wpis nagłówka programu %d: offset w pliku i adres wirtualny nie są "
"wielokrotnością wyrównania\n"
-#: src/elflint.c:4723
+#: src/elflint.c:4749
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3430,12 +3445,17 @@ msgstr ""
"plik wykonywalny/DSO z sekcją .eh_frame_hdr nie ma wpisu nagłówka programu "
"PT_GNU_EH_FRAME"
-#: src/elflint.c:4757
+#: src/elflint.c:4783
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr "nie można odczytać nagłówka ELF: %s\n"
-#: src/elflint.c:4783
+#: src/elflint.c:4795
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "nie można utworzyć nowego pliku"
+
+#: src/elflint.c:4816
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr "flaga relokacji tekstu jest ustawiona, ale niepotrzebna\n"
@@ -3613,7 +3633,7 @@ msgstr "Oznacza specjalne symbole"
msgid "Print size of defined symbols"
msgstr "Wyświetla rozmiar określonych symboli"
-#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73
+#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:69
msgid "Output options:"
msgstr "Opcje wyjścia:"
@@ -3648,12 +3668,12 @@ msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: BÅÄ„D WEWNĘTRZNY %d (%s): %s"
#: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308
-#: src/strip.c:2748
+#: src/strip.c:2763
#, c-format
msgid "while closing '%s'"
msgstr "podczas zamykania „%sâ€"
-#: src/nm.c:403 src/objdump.c:280 src/strip.c:797
+#: src/nm.c:403 src/objdump.c:280 src/strip.c:818
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: nie rozpoznano formatu pliku"
@@ -3692,13 +3712,13 @@ msgstr "%s%s%s: nie rozpoznano formatu pliku"
msgid "cannot create search tree"
msgstr "nie można utworzyć drzewa wyszukiwania"
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
-#: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
-#: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
-#: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
-#: src/strip.c:1038
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:637
+#: src/readelf.c:1451 src/readelf.c:1602 src/readelf.c:1803 src/readelf.c:2009
+#: src/readelf.c:2199 src/readelf.c:2377 src/readelf.c:2453 src/readelf.c:2711
+#: src/readelf.c:2787 src/readelf.c:2874 src/readelf.c:3472 src/readelf.c:3522
+#: src/readelf.c:3592 src/readelf.c:11328 src/readelf.c:12523
+#: src/readelf.c:12734 src/readelf.c:12803 src/size.c:398 src/size.c:470
+#: src/strip.c:1084
#, c-format
msgid "cannot get section header string table index"
msgstr "nie można uzyskać indeksu tabeli ciągów nagłówków sekcji"
@@ -3727,28 +3747,28 @@ msgstr ""
"%*s%-*s %-*s Klasa Typ %-*s %*s Sekcja\n"
"\n"
-#: src/nm.c:1216
+#: src/nm.c:1250
#, c-format
msgid "%s: entry size in section %zd `%s' is not what we expect"
msgstr "%s: rozmiar wpisu w sekcji %zd „%s†nie jest tym, czego oczekiwano"
-#: src/nm.c:1221
+#: src/nm.c:1255
#, c-format
msgid "%s: size of section %zd `%s' is not multiple of entry size"
msgstr "%s: rozmiar sekcji %zd „%s†nie jest wielokrotnością rozmiaru wpisu"
-#: src/nm.c:1300
+#: src/nm.c:1334
#, c-format
msgid "%s: entries (%zd) in section %zd `%s' is too large"
msgstr "%s: wpisy (%zd) w sekcji %zd „%s†są za duże"
#. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: nieprawidłowe działanie"
-#: src/nm.c:1584
+#: src/nm.c:1620
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: brak symboli"
@@ -3782,7 +3802,7 @@ msgstr "Wyświetla tylko informacje o sekcji NAZWA."
msgid "Show information from FILEs (a.out by default)."
msgstr "Wyświetla informacje z PLIKÓW (domyślnie a.out)."
-#: src/objdump.c:218 src/readelf.c:580
+#: src/objdump.c:218 src/readelf.c:582
msgid "No operation specified.\n"
msgstr "Nie podano działania.\n"
@@ -3791,11 +3811,11 @@ msgstr "Nie podano działania.\n"
msgid "while close `%s'"
msgstr "podczas zamykania „%sâ€"
-#: src/objdump.c:363 src/readelf.c:2100 src/readelf.c:2292
+#: src/objdump.c:363 src/readelf.c:2104 src/readelf.c:2296
msgid "INVALID SYMBOL"
msgstr "NIEPRAWIDÅOWY SYMBOL"
-#: src/objdump.c:378 src/readelf.c:2134 src/readelf.c:2328
+#: src/objdump.c:378 src/readelf.c:2138 src/readelf.c:2332
msgid "INVALID SECTION"
msgstr "NIEPRAWIDÅOWA SEKCJA"
@@ -3824,6 +3844,11 @@ msgstr "Zawartość sekcji %s:\n"
msgid "cannot disassemble"
msgstr "nie można deasemblować"
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "nie można utworzyć nowego pliku"
+
#. Short description of program.
#: src/ranlib.c:63
msgid "Generate an index to speed access to archives."
@@ -3997,143 +4022,143 @@ msgstr "tak"
msgid "no"
msgstr "nie"
-#: src/readelf.c:548
+#: src/readelf.c:550
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "Nieznana sekcja debugowania DWARF „%sâ€.\n"
-#: src/readelf.c:619 src/readelf.c:730
+#: src/readelf.c:621 src/readelf.c:732
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "nie można utworzyć deskryptora ELF: %s"
-#: src/readelf.c:626 src/readelf.c:953 src/strip.c:1133
+#: src/readelf.c:628 src/readelf.c:955 src/strip.c:1179
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "nie można określić liczby sekcji: %s"
-#: src/readelf.c:644 src/readelf.c:1263 src/readelf.c:1471
+#: src/readelf.c:646 src/readelf.c:1265 src/readelf.c:1475
#, c-format
msgid "cannot get section: %s"
msgstr "nie można uzyskać sekcji: %s"
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
-#: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
-#: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
-#: src/unstrip.c:1658 src/unstrip.c:1809 src/unstrip.c:1952 src/unstrip.c:2051
+#: src/readelf.c:655 src/readelf.c:1272 src/readelf.c:1483 src/readelf.c:12754
+#: src/unstrip.c:397 src/unstrip.c:428 src/unstrip.c:487 src/unstrip.c:608
+#: src/unstrip.c:629 src/unstrip.c:669 src/unstrip.c:885 src/unstrip.c:1216
+#: src/unstrip.c:1343 src/unstrip.c:1367 src/unstrip.c:1423 src/unstrip.c:1487
+#: src/unstrip.c:1662 src/unstrip.c:1813 src/unstrip.c:1956 src/unstrip.c:2055
#, c-format
msgid "cannot get section header: %s"
msgstr "nie można uzyskać nagłówka sekcji: %s"
-#: src/readelf.c:661
+#: src/readelf.c:663
#, c-format
msgid "cannot get section name"
msgstr "nie można uzyskać nazwy sekcji"
-#: src/readelf.c:670 src/readelf.c:6576 src/readelf.c:10502 src/readelf.c:10604
-#: src/readelf.c:10782
+#: src/readelf.c:672 src/readelf.c:6628 src/readelf.c:10600 src/readelf.c:10702
+#: src/readelf.c:10880
#, c-format
msgid "cannot get %s content: %s"
msgstr "nie można uzyskać zwartości %s: %s"
-#: src/readelf.c:686
+#: src/readelf.c:688
#, c-format
msgid "cannot create temp file '%s'"
msgstr "nie można utworzyć pliku tymczasowego „%sâ€"
-#: src/readelf.c:695
+#: src/readelf.c:697
#, c-format
msgid "cannot write section data"
msgstr "nie można zapisać danych sekcji"
-#: src/readelf.c:701 src/readelf.c:718 src/readelf.c:747
+#: src/readelf.c:703 src/readelf.c:720 src/readelf.c:749
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "błąd podczas zamykania deskryptora ELF: %s"
-#: src/readelf.c:708
+#: src/readelf.c:710
#, c-format
msgid "error while rewinding file descriptor"
msgstr "błąd podczas przewijania deskryptora pliku"
-#: src/readelf.c:742
+#: src/readelf.c:744
#, c-format
msgid "'%s' is not an archive, cannot print archive index"
msgstr "„%s†nie jest archiwum, nie można wyświetlić indeksu archiwum"
-#: src/readelf.c:846
+#: src/readelf.c:848
#, c-format
msgid "cannot stat input file"
msgstr "nie można wykonać stat na pliku wejściowym"
-#: src/readelf.c:848
+#: src/readelf.c:850
#, c-format
msgid "input file is empty"
msgstr "plik wejściowy jest pusty"
-#: src/readelf.c:850
+#: src/readelf.c:852
#, c-format
msgid "failed reading '%s': %s"
msgstr "odczytanie „%s†się nie powiodło: %s"
-#: src/readelf.c:879
+#: src/readelf.c:881
#, c-format
msgid "No such section '%s' in '%s'"
msgstr "Brak sekcji „%s†w „%sâ€"
-#: src/readelf.c:938
+#: src/readelf.c:940
#, c-format
msgid "cannot read ELF header: %s"
msgstr "nie można odczytać nagłówka ELF: %s"
-#: src/readelf.c:946
+#: src/readelf.c:948
#, c-format
msgid "cannot create EBL handle"
msgstr "nie można utworzyć uchwytu EBL"
-#: src/readelf.c:959
+#: src/readelf.c:961
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr "nie można określić liczby nagłówków programu: %s"
-#: src/readelf.c:991
+#: src/readelf.c:993
#, fuzzy, c-format
msgid "cannot read ELF: %s"
msgstr "nie można odczytać %s: %s"
-#: src/readelf.c:1052
+#: src/readelf.c:1054
msgid "NONE (None)"
msgstr "NONE (żaden)"
-#: src/readelf.c:1053
+#: src/readelf.c:1055
msgid "REL (Relocatable file)"
msgstr "REL (plik relokowalny)"
-#: src/readelf.c:1054
+#: src/readelf.c:1056
msgid "EXEC (Executable file)"
msgstr "EXEC (plik wykonywalny)"
-#: src/readelf.c:1055
+#: src/readelf.c:1057
msgid "DYN (Shared object file)"
msgstr "DYN (plik obiektu współdzielonego)"
-#: src/readelf.c:1056
+#: src/readelf.c:1058
msgid "CORE (Core file)"
msgstr "CORE (plik core)"
-#: src/readelf.c:1061
+#: src/readelf.c:1063
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "Zależny od systemu: (%x)\n"
#. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1063
+#: src/readelf.c:1065
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "Zależny od procesora: (%x)\n"
-#: src/readelf.c:1073
+#: src/readelf.c:1075
msgid ""
"ELF Header:\n"
" Magic: "
@@ -4141,7 +4166,7 @@ msgstr ""
"Nagłówek ELF:\n"
" Magic: "
-#: src/readelf.c:1077
+#: src/readelf.c:1079
#, c-format
msgid ""
"\n"
@@ -4150,123 +4175,123 @@ msgstr ""
"\n"
" Klasa: %s\n"
-#: src/readelf.c:1082
+#: src/readelf.c:1084
#, c-format
msgid " Data: %s\n"
msgstr " Dane: %s\n"
-#: src/readelf.c:1088
+#: src/readelf.c:1090
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " Wersja Ident: %hhd %s\n"
-#: src/readelf.c:1090 src/readelf.c:1112
+#: src/readelf.c:1092 src/readelf.c:1114
msgid "(current)"
msgstr "(bieżąca)"
-#: src/readelf.c:1094
+#: src/readelf.c:1096
#, c-format
msgid " OS/ABI: %s\n"
msgstr " System operacyjny/ABI: %s\n"
-#: src/readelf.c:1097
+#: src/readelf.c:1099
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " Wersja ABI: %hhd\n"
-#: src/readelf.c:1100
+#: src/readelf.c:1102
msgid " Type: "
msgstr " Typ: "
-#: src/readelf.c:1105
+#: src/readelf.c:1107
#, c-format
msgid " Machine: %s\n"
msgstr " Komputer: %s\n"
-#: src/readelf.c:1107
+#: src/readelf.c:1109
#, fuzzy, c-format
msgid " Machine: <unknown>: 0x%x\n"
msgstr " Komputer: %s\n"
-#: src/readelf.c:1110
+#: src/readelf.c:1112
#, c-format
msgid " Version: %d %s\n"
msgstr " Wersja: %d %s\n"
-#: src/readelf.c:1114
+#: src/readelf.c:1116
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " Adres punktu wejściowego: %#<PRIx64>\n"
-#: src/readelf.c:1117
+#: src/readelf.c:1119
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " Początek nagłówków programu: %<PRId64> %s\n"
-#: src/readelf.c:1118 src/readelf.c:1121
+#: src/readelf.c:1120 src/readelf.c:1123
msgid "(bytes into file)"
msgstr "(bajtów w pliku)"
-#: src/readelf.c:1120
+#: src/readelf.c:1122
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " Początek nagłówków sekcji: %<PRId64> %s\n"
-#: src/readelf.c:1123
+#: src/readelf.c:1125
#, c-format
msgid " Flags: %s\n"
msgstr " Flagi: %s\n"
-#: src/readelf.c:1126
+#: src/readelf.c:1128
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " Rozmiar tego nagłówka: %<PRId16> %s\n"
-#: src/readelf.c:1127 src/readelf.c:1130 src/readelf.c:1147
+#: src/readelf.c:1129 src/readelf.c:1132 src/readelf.c:1149
msgid "(bytes)"
msgstr "(bajtów)"
-#: src/readelf.c:1129
+#: src/readelf.c:1131
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr " Rozmiar wpisów nagłówka programu: %<PRId16> %s\n"
-#: src/readelf.c:1132
+#: src/readelf.c:1134
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " Liczba wpisów nagłówków programu: %<PRId16>"
-#: src/readelf.c:1139
+#: src/readelf.c:1141
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr " (%<PRIu32> w [0].sh_info)"
-#: src/readelf.c:1142 src/readelf.c:1159 src/readelf.c:1173
+#: src/readelf.c:1144 src/readelf.c:1161 src/readelf.c:1175
msgid " ([0] not available)"
msgstr " ([0] niedostępny)"
-#: src/readelf.c:1146
+#: src/readelf.c:1148
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr " Rozmiar wpisów nagłówka sekcji: %<PRId16> %s\n"
-#: src/readelf.c:1149
+#: src/readelf.c:1151
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " Liczba wpisów nagłówków sekcji: %<PRId16>"
-#: src/readelf.c:1156
+#: src/readelf.c:1158
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " (%<PRIu32> w [0].sh_size)"
#. We managed to get the zeroth section.
-#: src/readelf.c:1169
+#: src/readelf.c:1171
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr " (%<PRIu32> w [0].sh_link)"
-#: src/readelf.c:1177
+#: src/readelf.c:1179
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
@@ -4275,7 +4300,7 @@ msgstr ""
" Indeks tabeli ciągów nagłówków sekcji: XINDEX%s\n"
"\n"
-#: src/readelf.c:1181
+#: src/readelf.c:1183
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
@@ -4284,12 +4309,12 @@ msgstr ""
" Indeks tabeli ciągów nagłówków sekcji: %<PRId16>\n"
"\n"
-#: src/readelf.c:1228 src/readelf.c:1436
+#: src/readelf.c:1230 src/readelf.c:1440
#, fuzzy, c-format
msgid "cannot get number of sections: %s"
msgstr "nie można określić liczby sekcji: %s"
-#: src/readelf.c:1231
+#: src/readelf.c:1233
#, fuzzy, c-format
msgid ""
"There are %zd section headers, starting at offset %#<PRIx64>:\n"
@@ -4298,16 +4323,16 @@ msgstr ""
"Jest %d nagłówków sekcji, rozpoczynających się od offsetu %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:1240
+#: src/readelf.c:1242
#, fuzzy, c-format
msgid "cannot get section header string table index: %s"
msgstr "nie można uzyskać indeksu tabeli ciągów nagłówków sekcji"
-#: src/readelf.c:1243
+#: src/readelf.c:1245
msgid "Section Headers:"
msgstr "Nagłówki sekcji:"
-#: src/readelf.c:1246
+#: src/readelf.c:1248
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
@@ -4315,7 +4340,7 @@ msgstr ""
"[Nr] Nazwa Typ Adres Offset Rozm. ES Flagi Lk "
"Inf Al"
-#: src/readelf.c:1248
+#: src/readelf.c:1250
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
@@ -4323,36 +4348,36 @@ msgstr ""
"[Nr] Nazwa Typ Adres Offset Rozmiar ES "
"Flagi Lk Inf Al"
-#: src/readelf.c:1253
+#: src/readelf.c:1255
msgid " [Compression Size Al]"
msgstr " [Kompresja Rozmiar Al]"
-#: src/readelf.c:1255
+#: src/readelf.c:1257
msgid " [Compression Size Al]"
msgstr " [Kompresja Rozmiar Al]"
-#: src/readelf.c:1331
+#: src/readelf.c:1335
#, c-format
msgid "bad compression header for section %zd: %s"
msgstr "błędny nagłówek kompresji dla sekcji %zd: %s"
-#: src/readelf.c:1342
+#: src/readelf.c:1346
#, c-format
msgid "bad gnu compressed size for section %zd: %s"
msgstr "błędny rozmiar kompresji gnu dla sekcji %zd: %s"
-#: src/readelf.c:1360
+#: src/readelf.c:1364
msgid "Program Headers:"
msgstr "Nagłówki programu:"
-#: src/readelf.c:1362
+#: src/readelf.c:1366
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" Typ Offset AdresWirt AdresFiz RozmPlik RozmPam Flg "
"Wyrównanie"
-#: src/readelf.c:1365
+#: src/readelf.c:1369
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
@@ -4360,12 +4385,12 @@ msgstr ""
" Typ Offset AdresWirtualny AdresFizyczny RozmPlik "
"RozmPam Flg Wyrównanie"
-#: src/readelf.c:1422
+#: src/readelf.c:1426
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[Wywołanie interpretera programu: %s]\n"
-#: src/readelf.c:1449
+#: src/readelf.c:1453
msgid ""
"\n"
" Section to Segment mapping:\n"
@@ -4375,12 +4400,12 @@ msgstr ""
" Mapowanie sekcji do segmentów:\n"
" Segment sekcji…"
-#: src/readelf.c:1460 src/unstrip.c:2110 src/unstrip.c:2152 src/unstrip.c:2159
+#: src/readelf.c:1464 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
#, c-format
msgid "cannot get program header: %s"
msgstr "nie można uzyskać nagłówka programu: %s"
-#: src/readelf.c:1606
+#: src/readelf.c:1610
#, c-format
msgid ""
"\n"
@@ -4398,7 +4423,7 @@ msgstr[2] ""
"\n"
"Grupa sekcji COMDAT [%2zu] „%s†z podpisem „%s†zawiera %zu wpisów:\n"
-#: src/readelf.c:1611
+#: src/readelf.c:1615
#, c-format
msgid ""
"\n"
@@ -4416,31 +4441,31 @@ msgstr[2] ""
"\n"
"Grupa sekcji [%2zu] „%s†z podpisem „%s†zawiera %zu wpisów:\n"
-#: src/readelf.c:1619
+#: src/readelf.c:1623
msgid "<INVALID SYMBOL>"
msgstr "<NIEPRAWIDÅOWY SYMBOL>"
-#: src/readelf.c:1633
+#: src/readelf.c:1637
msgid "<INVALID SECTION>"
msgstr "<NIEPRAWIDÅOWY SEKCJA>"
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1660 src/readelf.c:2387 src/readelf.c:3488 src/readelf.c:12625
+#: src/readelf.c:12632 src/readelf.c:12676 src/readelf.c:12683
msgid "Couldn't uncompress section"
msgstr "Nie można dekompresować sekcji"
-#: src/readelf.c:1661 src/readelf.c:2388 src/readelf.c:3489
+#: src/readelf.c:1665 src/readelf.c:2392 src/readelf.c:3493
#, c-format
msgid "cannot get section [%zd] header: %s"
msgstr "nie można uzyskać nagłówka sekcji [%zd]: %s"
-#: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:1809 src/readelf.c:2459 src/readelf.c:2717 src/readelf.c:2793
+#: src/readelf.c:3097 src/readelf.c:3171 src/readelf.c:5401
#, c-format
msgid "invalid sh_link value in section %zu"
msgstr "nieprawidłowa wartość sh_link w sekcji %zu"
-#: src/readelf.c:1808
+#: src/readelf.c:1812
#, c-format
msgid ""
"\n"
@@ -4466,36 +4491,36 @@ msgstr[2] ""
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] "
"'%s'\n"
-#: src/readelf.c:1818
+#: src/readelf.c:1822
msgid " Type Value\n"
msgstr " Typ Wartość\n"
-#: src/readelf.c:1842
+#: src/readelf.c:1846
#, c-format
msgid "Shared library: [%s]\n"
msgstr "Biblioteka współdzielona: [%s]\n"
-#: src/readelf.c:1847
+#: src/readelf.c:1851
#, c-format
msgid "Library soname: [%s]\n"
msgstr "soname biblioteki: [%s]\n"
-#: src/readelf.c:1852
+#: src/readelf.c:1856
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "rpath biblioteki: [%s]\n"
-#: src/readelf.c:1857
+#: src/readelf.c:1861
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "runpath biblioteki: [%s]\n"
-#: src/readelf.c:1877
+#: src/readelf.c:1881
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (bajtów)\n"
-#: src/readelf.c:1990 src/readelf.c:2180
+#: src/readelf.c:1994 src/readelf.c:2184
#, c-format
msgid ""
"\n"
@@ -4504,7 +4529,7 @@ msgstr ""
"\n"
"Nieprawidłowa tabela symboli pod offsetem %#0<PRIx64>\n"
-#: src/readelf.c:2008 src/readelf.c:2198
+#: src/readelf.c:2012 src/readelf.c:2202
#, c-format
msgid ""
"\n"
@@ -4533,7 +4558,7 @@ msgstr[2] ""
#. The .rela.dyn section does not refer to a specific section but
#. instead of section index zero. Do not try to print a section
#. name.
-#: src/readelf.c:2023 src/readelf.c:2213
+#: src/readelf.c:2027 src/readelf.c:2217
#, c-format
msgid ""
"\n"
@@ -4551,30 +4576,30 @@ msgstr[2] ""
"\n"
"Sekcja relokacji [%2u] „%s†pod offsetem %#0<PRIx64> zawiera %d wpisów:\n"
-#: src/readelf.c:2033
+#: src/readelf.c:2037
msgid " Offset Type Value Name\n"
msgstr " Offset Typ Wartość Nazwa\n"
-#: src/readelf.c:2035
+#: src/readelf.c:2039
msgid " Offset Type Value Name\n"
msgstr " Offset Typ Wartość Nazwa\n"
-#: src/readelf.c:2088 src/readelf.c:2099 src/readelf.c:2112 src/readelf.c:2133
-#: src/readelf.c:2145 src/readelf.c:2279 src/readelf.c:2291 src/readelf.c:2305
-#: src/readelf.c:2327 src/readelf.c:2340
+#: src/readelf.c:2092 src/readelf.c:2103 src/readelf.c:2116 src/readelf.c:2137
+#: src/readelf.c:2149 src/readelf.c:2283 src/readelf.c:2295 src/readelf.c:2309
+#: src/readelf.c:2331 src/readelf.c:2344
msgid "<INVALID RELOC>"
msgstr "<NIEPRAWIDÅOWA RELOKACJA>"
-#: src/readelf.c:2223
+#: src/readelf.c:2227
msgid " Offset Type Value Addend Name\n"
msgstr " Offset Typ Wartość Koniec Nazwa\n"
-#: src/readelf.c:2225
+#: src/readelf.c:2229
msgid " Offset Type Value Addend Name\n"
msgstr ""
" Offset Typ Wartość Koniec Nazwa\n"
-#: src/readelf.c:2463
+#: src/readelf.c:2467
#, c-format
msgid ""
"\n"
@@ -4592,7 +4617,7 @@ msgstr[2] ""
"\n"
"Tabela symboli [%2u] „%s†zawiera %u wpisów:\n"
-#: src/readelf.c:2468
+#: src/readelf.c:2472
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
@@ -4600,33 +4625,33 @@ msgstr[0] " %lu symbol lokalny Tabela ciÄ…gów: [%2u] „%sâ€\n"
msgstr[1] " %lu symbole lokalne Tabela ciÄ…gów: [%2u] „%sâ€\n"
msgstr[2] " %lu symboli lokalnych Tabela ciÄ…gów: [%2u] „%sâ€\n"
-#: src/readelf.c:2476
+#: src/readelf.c:2480
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n"
-#: src/readelf.c:2478
+#: src/readelf.c:2482
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n"
-#: src/readelf.c:2498
+#: src/readelf.c:2502
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2586
+#: src/readelf.c:2590
#, c-format
msgid "bad dynamic symbol"
msgstr "błędny symbol dynamiczny"
-#: src/readelf.c:2668
+#: src/readelf.c:2672
msgid "none"
msgstr "brak"
-#: src/readelf.c:2685
+#: src/readelf.c:2689
msgid "| <unknown>"
msgstr "| <nieznany>"
-#: src/readelf.c:2716
+#: src/readelf.c:2720
#, c-format
msgid ""
"\n"
@@ -4652,17 +4677,17 @@ msgstr[2] ""
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] "
"„%sâ€\n"
-#: src/readelf.c:2737
+#: src/readelf.c:2741
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Wersja: %hu Plik: %s Licznik: %hu\n"
-#: src/readelf.c:2750
+#: src/readelf.c:2754
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Nazwa: %s Flagi: %s Wersja: %hu\n"
-#: src/readelf.c:2793
+#: src/readelf.c:2797
#, c-format
msgid ""
"\n"
@@ -4688,19 +4713,19 @@ msgstr[2] ""
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] "
"„%sâ€\n"
-#: src/readelf.c:2821
+#: src/readelf.c:2825
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr ""
" %#06x: Wersja: %hd Flagi: %s Indeks: %hd Licznik: %hd Nazwa: %s\n"
-#: src/readelf.c:2836
+#: src/readelf.c:2840
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: Rodzic %d: %s\n"
#. Print the header.
-#: src/readelf.c:3097
+#: src/readelf.c:3101
#, c-format
msgid ""
"\n"
@@ -4723,15 +4748,15 @@ msgstr[2] ""
"Sekcja symboli wersji [%2u] „%s†zawiera %d wpisów:\n"
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] „%sâ€"
-#: src/readelf.c:3125
+#: src/readelf.c:3129
msgid " 0 *local* "
msgstr " 0 *lokalny* "
-#: src/readelf.c:3130
+#: src/readelf.c:3134
msgid " 1 *global* "
msgstr " 1 *globalny* "
-#: src/readelf.c:3172
+#: src/readelf.c:3176
#, c-format
msgid ""
"\n"
@@ -4762,22 +4787,22 @@ msgstr[2] ""
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> DowiÄ…zanie do sekcji: [%2u] "
"„%sâ€\n"
-#: src/readelf.c:3194
+#: src/readelf.c:3198
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " Długość Liczba % całości Pokrycie\n"
-#: src/readelf.c:3196
+#: src/readelf.c:3200
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:3203
+#: src/readelf.c:3207
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:3216
+#: src/readelf.c:3220
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
@@ -4786,37 +4811,37 @@ msgstr ""
" Średnia liczba testów: udane wyszukania: %f\n"
"\t\t\t nieudane wyszukania: %f\n"
-#: src/readelf.c:3234 src/readelf.c:3298 src/readelf.c:3364
+#: src/readelf.c:3238 src/readelf.c:3302 src/readelf.c:3368
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "nie można uzyskać danych dla sekcji %d: %s"
-#: src/readelf.c:3242
+#: src/readelf.c:3246
#, c-format
msgid "invalid data in sysv.hash section %d"
msgstr "nieprawidłowe dane w sekcji sysv.hash %d"
-#: src/readelf.c:3271
+#: src/readelf.c:3275
#, fuzzy, c-format
msgid "invalid chain in sysv.hash section %d"
msgstr "nieprawidłowe dane w sekcji sysv.hash %d"
-#: src/readelf.c:3306
+#: src/readelf.c:3310
#, c-format
msgid "invalid data in sysv.hash64 section %d"
msgstr "nieprawidłowe dane w sekcji sysv.hash64 %d"
-#: src/readelf.c:3337
+#: src/readelf.c:3341
#, fuzzy, c-format
msgid "invalid chain in sysv.hash64 section %d"
msgstr "nieprawidłowe dane w sekcji sysv.hash64 %d"
-#: src/readelf.c:3373
+#: src/readelf.c:3377
#, c-format
msgid "invalid data in gnu.hash section %d"
msgstr "nieprawidłowe dane w sekcji gnu.hash %d"
-#: src/readelf.c:3440
+#: src/readelf.c:3444
#, c-format
msgid ""
" Symbol Bias: %u\n"
@@ -4826,7 +4851,7 @@ msgstr ""
" Rozmiar maski bitowej: %zu bajtów %<PRIuFAST32>%% bitów ustawionych "
"drugie przesunięcie skrótu: %u\n"
-#: src/readelf.c:3529
+#: src/readelf.c:3533
#, c-format
msgid ""
"\n"
@@ -4847,7 +4872,7 @@ msgstr[2] ""
"Sekcja listy bibliotek [%2zu] „%s†pod offsetem %#0<PRIx64> zawiera %d "
"wpisów:\n"
-#: src/readelf.c:3543
+#: src/readelf.c:3547
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
@@ -4855,7 +4880,7 @@ msgstr ""
" Biblioteka Oznaczenie czasu Suma k. Wersja "
"Flagi"
-#: src/readelf.c:3595
+#: src/readelf.c:3606
#, c-format
msgid ""
"\n"
@@ -4866,102 +4891,102 @@ msgstr ""
"Sekcja atrybutów obiektu [%2zu] „%s†%<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:3612
+#: src/readelf.c:3623
msgid " Owner Size\n"
msgstr " Właściciel Rozmiar\n"
-#: src/readelf.c:3641
+#: src/readelf.c:3647
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
#. Unknown subsection, print and skip.
-#: src/readelf.c:3680
+#: src/readelf.c:3686
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
#. Tag_File
-#: src/readelf.c:3685
+#: src/readelf.c:3691
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " Plik: %11<PRIu32>\n"
-#: src/readelf.c:3734
+#: src/readelf.c:3740
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3737
+#: src/readelf.c:3743
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3740
+#: src/readelf.c:3746
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3750
+#: src/readelf.c:3756
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3753
+#: src/readelf.c:3759
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3823
+#: src/readelf.c:3829
#, fuzzy, c-format
msgid "sprintf failure"
msgstr "mprotect się nie powiodło"
-#: src/readelf.c:4305
+#: src/readelf.c:4311
msgid "empty block"
msgstr "pusty blok"
-#: src/readelf.c:4308
+#: src/readelf.c:4314
#, c-format
msgid "%zu byte block:"
msgstr "%zu bajtowy blok:"
-#: src/readelf.c:4786
+#: src/readelf.c:4792
#, fuzzy, c-format
msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <SKRÓCONE>\n"
-#: src/readelf.c:4850
+#: src/readelf.c:4859
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami adresu"
-#: src/readelf.c:4857
+#: src/readelf.c:4866
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami offsetu"
-#: src/readelf.c:4864
+#: src/readelf.c:4873
#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr "%s %#<PRIx64> zostało użyte z różnymi adresami podstawowymi"
-#: src/readelf.c:4871
+#: src/readelf.c:4880
#, fuzzy, c-format
msgid "%s %#<PRIx64> used with different attribute %s and %s"
msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami adresu"
-#: src/readelf.c:4968
+#: src/readelf.c:4980
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <NIEUŻYWANE ŚMIECIE W RESZCIE SEKCJI>\n"
-#: src/readelf.c:4976
+#: src/readelf.c:4988
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <NIEUŻYWANE ŚMIECIE>… %<PRIu64> bajtów…\n"
-#: src/readelf.c:5054
+#: src/readelf.c:5091
#, c-format
msgid ""
"\n"
@@ -4972,7 +4997,7 @@ msgstr ""
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
" [ Kod]\n"
-#: src/readelf.c:5062
+#: src/readelf.c:5099
#, c-format
msgid ""
"\n"
@@ -4981,20 +5006,20 @@ msgstr ""
"\n"
"Sekcja skrótów pod offsetem %<PRIu64>:\n"
-#: src/readelf.c:5075
+#: src/readelf.c:5112
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** błąd podczas odczytywania skrótu: %s\n"
-#: src/readelf.c:5091
+#: src/readelf.c:5128
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] offset: %<PRId64>, potomek: %s, znacznik: %s\n"
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6586 src/readelf.c:8323 src/readelf.c:9009 src/readelf.c:9445
-#: src/readelf.c:9690 src/readelf.c:9856 src/readelf.c:10243
-#: src/readelf.c:10303
+#: src/readelf.c:5161 src/readelf.c:5470 src/readelf.c:5637 src/readelf.c:6022
+#: src/readelf.c:6638 src/readelf.c:8375 src/readelf.c:9064 src/readelf.c:9537
+#: src/readelf.c:9788 src/readelf.c:9954 src/readelf.c:10341
+#: src/readelf.c:10401
#, c-format
msgid ""
"\n"
@@ -5003,56 +5028,56 @@ msgstr ""
"\n"
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
-#: src/readelf.c:5137
+#: src/readelf.c:5174
#, fuzzy, c-format
msgid "cannot get .debug_addr section data: %s"
msgstr "nie można uzyskać danych sekcji: %s"
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9054
+#: src/readelf.c:5274 src/readelf.c:5298 src/readelf.c:5682 src/readelf.c:9109
#, fuzzy, c-format
msgid " Length: %8<PRIu64>\n"
msgstr ""
"\n"
" Długość: %6<PRIu64>\n"
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9067
+#: src/readelf.c:5276 src/readelf.c:5313 src/readelf.c:5695 src/readelf.c:9122
#, fuzzy, c-format
msgid " DWARF version: %8<PRIu16>\n"
msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9076
+#: src/readelf.c:5277 src/readelf.c:5322 src/readelf.c:5704 src/readelf.c:9131
#, fuzzy, c-format
msgid " Address size: %8<PRIu64>\n"
msgstr " Offset adresu: %6<PRIu64>\n"
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9086
+#: src/readelf.c:5279 src/readelf.c:5332 src/readelf.c:5714 src/readelf.c:9141
#, fuzzy, c-format
msgid " Segment size: %8<PRIu64>\n"
msgstr ""
" Rozmiar segmentu: %6<PRIu64>\n"
"\n"
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9071 src/readelf.c:10435
+#: src/readelf.c:5317 src/readelf.c:5699 src/readelf.c:9126 src/readelf.c:10533
#, fuzzy, c-format
msgid "Unknown version"
msgstr "nieznana wersja"
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9081
+#: src/readelf.c:5327 src/readelf.c:5540 src/readelf.c:5709 src/readelf.c:9136
#, c-format
msgid "unsupported address size"
msgstr "nieobsługiwany rozmiar adresu"
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9091
+#: src/readelf.c:5338 src/readelf.c:5551 src/readelf.c:5719 src/readelf.c:9146
#, c-format
msgid "unsupported segment size"
msgstr "nieobsługiwany rozmiar segmentu"
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5391 src/readelf.c:5465
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "nie można uzyskać zawartości .debug_aranges: %s"
-#: src/readelf.c:5369
+#: src/readelf.c:5406
#, c-format
msgid ""
"\n"
@@ -5070,12 +5095,12 @@ msgstr[2] ""
"\n"
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64> zawiera %zu wpisów:\n"
-#: src/readelf.c:5400
+#: src/readelf.c:5437
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:5402
+#: src/readelf.c:5439
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5083,7 +5108,7 @@ msgstr ""
" [%*zu] początek: %0#*<PRIx64>, długość: %5<PRIu64>, offset CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:5446 src/readelf.c:8350
+#: src/readelf.c:5483 src/readelf.c:8402
#, c-format
msgid ""
"\n"
@@ -5092,13 +5117,13 @@ msgstr ""
"\n"
"Tabela pod offsetem %zu:\n"
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6610 src/readelf.c:8361
-#: src/readelf.c:9035
+#: src/readelf.c:5487 src/readelf.c:5663 src/readelf.c:6662 src/readelf.c:8413
+#: src/readelf.c:9090
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr "nieprawidÅ‚owe dane w sekcji [%zu] „%sâ€"
-#: src/readelf.c:5466
+#: src/readelf.c:5503
#, c-format
msgid ""
"\n"
@@ -5107,27 +5132,27 @@ msgstr ""
"\n"
" Długość: %6<PRIu64>\n"
-#: src/readelf.c:5478
+#: src/readelf.c:5515
#, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
-#: src/readelf.c:5482
+#: src/readelf.c:5519
#, c-format
msgid "unsupported aranges version"
msgstr "nieobsługiwana wersja aranges"
-#: src/readelf.c:5493
+#: src/readelf.c:5530
#, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " Offset CU: %6<PRIx64>\n"
-#: src/readelf.c:5499
+#: src/readelf.c:5536
#, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr " Offset adresu: %6<PRIu64>\n"
-#: src/readelf.c:5510
+#: src/readelf.c:5547
#, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
@@ -5136,111 +5161,109 @@ msgstr ""
" Rozmiar segmentu: %6<PRIu64>\n"
"\n"
-#: src/readelf.c:5565
+#: src/readelf.c:5602
#, c-format
msgid " %zu padding bytes\n"
msgstr " bajty wypełnienia: %zu\n"
-#: src/readelf.c:5609
+#: src/readelf.c:5646
#, fuzzy, c-format
msgid "cannot get .debug_rnglists content: %s"
msgstr "nie można uzyskać zawartości .debug_ranges: %s"
-#: src/readelf.c:5632 src/readelf.c:9041
+#: src/readelf.c:5669 src/readelf.c:9096
#, fuzzy, c-format
msgid ""
"Table at Offset 0x%<PRIx64>:\n"
"\n"
msgstr " Offset .debug_line: 0x%<PRIx64>\n"
-#: src/readelf.c:5687 src/readelf.c:9096
+#: src/readelf.c:5724 src/readelf.c:9151
#, fuzzy, c-format
msgid " Offset entries: %8<PRIu64>\n"
msgstr " Długość offsetu: %<PRIu8>\n"
-#: src/readelf.c:5703 src/readelf.c:9112
+#: src/readelf.c:5740 src/readelf.c:9167
#, c-format
msgid " Unknown CU base: "
msgstr ""
-#: src/readelf.c:5705 src/readelf.c:9114
+#: src/readelf.c:5742 src/readelf.c:9169
#, c-format
msgid " CU [%6<PRIx64>] base: "
msgstr ""
-#: src/readelf.c:5711 src/readelf.c:9120
+#: src/readelf.c:5748 src/readelf.c:9175
#, c-format
msgid " Not associated with a CU.\n"
msgstr ""
-#: src/readelf.c:5722 src/readelf.c:9131
+#: src/readelf.c:5759 src/readelf.c:9186
#, c-format
msgid "too many offset entries for unit length"
msgstr ""
-#: src/readelf.c:5726 src/readelf.c:9135
+#: src/readelf.c:5763 src/readelf.c:9190
#, fuzzy, c-format
msgid " Offsets starting at 0x%<PRIx64>:\n"
msgstr " Offset: 0x%<PRIx64>\n"
-#: src/readelf.c:5778
+#: src/readelf.c:5815
#, fuzzy, c-format
msgid "invalid range list data"
msgstr "nieprawidłowe dane"
-#: src/readelf.c:5963 src/readelf.c:9423
+#: src/readelf.c:6000 src/readelf.c:9515
#, fuzzy, c-format
msgid ""
" %zu padding bytes\n"
"\n"
msgstr " bajty wypełnienia: %zu\n"
-#: src/readelf.c:5980
+#: src/readelf.c:6017
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr "nie można uzyskać zawartości .debug_ranges: %s"
-#: src/readelf.c:6016 src/readelf.c:9478
+#: src/readelf.c:6053 src/readelf.c:9570
#, c-format
msgid ""
"\n"
" Unknown CU base: "
msgstr ""
-#: src/readelf.c:6018 src/readelf.c:9480
+#: src/readelf.c:6055 src/readelf.c:9572
#, c-format
msgid ""
"\n"
" CU [%6<PRIx64>] base: "
msgstr ""
-#: src/readelf.c:6027 src/readelf.c:9506 src/readelf.c:9532
+#: src/readelf.c:6064 src/readelf.c:9598 src/readelf.c:9624
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <NIEPRAWIDÅOWE DANE>\n"
-#: src/readelf.c:6048 src/readelf.c:9612
-#, fuzzy, c-format
-msgid ""
-" [%6tx] base address\n"
-" "
-msgstr " [%6tx] adres podstawowy %s\n"
+#: src/readelf.c:6089 src/readelf.c:9708
+#, fuzzy
+msgid "base address"
+msgstr " ustawienie adresu na %s\n"
-#: src/readelf.c:6056 src/readelf.c:9620
+#: src/readelf.c:6099 src/readelf.c:9718
#, fuzzy, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] pusta lista\n"
-#: src/readelf.c:6311
+#: src/readelf.c:6359
msgid " <INVALID DATA>\n"
msgstr " <NIEPRAWIDÅOWE DANE>\n"
-#: src/readelf.c:6564
+#: src/readelf.c:6616
#, c-format
msgid "cannot get ELF: %s"
msgstr "nie można uzyskać ELF: %s"
-#: src/readelf.c:6582
+#: src/readelf.c:6634
#, c-format
msgid ""
"\n"
@@ -5249,7 +5272,7 @@ msgstr ""
"\n"
"Sekcja informacji o ramce wywołania [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
-#: src/readelf.c:6632
+#: src/readelf.c:6684
#, c-format
msgid ""
"\n"
@@ -5258,65 +5281,65 @@ msgstr ""
"\n"
" [%6tx] Zerowy koniec\n"
-#: src/readelf.c:6733 src/readelf.c:6887
+#: src/readelf.c:6785 src/readelf.c:6939
#, c-format
msgid "invalid augmentation length"
msgstr "nieprawidłowa długość powiększenia"
-#: src/readelf.c:6748
+#: src/readelf.c:6800
msgid "FDE address encoding: "
msgstr "Kodowanie adresu FDE: "
-#: src/readelf.c:6754
+#: src/readelf.c:6806
msgid "LSDA pointer encoding: "
msgstr "Kodowanie wskaźnika LSDA: "
-#: src/readelf.c:6864
+#: src/readelf.c:6916
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (offset: %#<PRIx64>)"
-#: src/readelf.c:6871
+#: src/readelf.c:6923
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (kończący offset: %#<PRIx64>)"
-#: src/readelf.c:6908
+#: src/readelf.c:6960
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sWskaźnik LSDA: %#<PRIx64>\n"
-#: src/readelf.c:6993
+#: src/readelf.c:7045
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
msgstr "nie można uzyskać kodu atrybutu: %s"
-#: src/readelf.c:7003
+#: src/readelf.c:7055
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
msgstr "nie można uzyskać formy atrybutu: %s"
-#: src/readelf.c:7025
+#: src/readelf.c:7077
#, fuzzy, c-format
msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
msgstr "nie można uzyskać wartości atrybutu: %s"
-#: src/readelf.c:7355
+#: src/readelf.c:7407
#, fuzzy, c-format
msgid "invalid file (%<PRId64>): %s"
msgstr "nieprawidłowy plik"
-#: src/readelf.c:7359
+#: src/readelf.c:7411
#, fuzzy, c-format
msgid "no srcfiles for CU [%<PRIx64>]"
msgstr " ustawienie pliku na %<PRIu64>\n"
-#: src/readelf.c:7363
+#: src/readelf.c:7415
#, fuzzy, c-format
msgid "couldn't get DWARF CU: %s"
msgstr "nie można uzyskać ELF: %s"
-#: src/readelf.c:7676
+#: src/readelf.c:7728
#, c-format
msgid ""
"\n"
@@ -5327,12 +5350,12 @@ msgstr ""
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
" [Offset]\n"
-#: src/readelf.c:7726
+#: src/readelf.c:7778
#, fuzzy, c-format
msgid "cannot get next unit: %s"
msgstr "nie można uzyskać następnego DIE: %s"
-#: src/readelf.c:7745
+#: src/readelf.c:7797
#, fuzzy, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
@@ -5345,7 +5368,7 @@ msgstr ""
"%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
" Podpis typu: %#<PRIx64>, offset typu: %#<PRIx64>\n"
-#: src/readelf.c:7757
+#: src/readelf.c:7809
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -5356,38 +5379,38 @@ msgstr ""
" Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
"%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
-#: src/readelf.c:7767 src/readelf.c:7930
+#: src/readelf.c:7819 src/readelf.c:7982
#, c-format
msgid " Unit type: %s (%<PRIu8>)"
msgstr ""
-#: src/readelf.c:7794
+#: src/readelf.c:7846
#, c-format
msgid "unknown version (%d) or unit type (%d)"
msgstr ""
-#: src/readelf.c:7823
+#: src/readelf.c:7875
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "nie można uzyskać offsetu DIE: %s"
-#: src/readelf.c:7832
+#: src/readelf.c:7884
#, fuzzy, c-format
msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
msgstr ""
"nie można uzyskać znacznika DIE pod offsetem %<PRIu64> w sekcji „%sâ€: %s"
-#: src/readelf.c:7870
+#: src/readelf.c:7922
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "nie można uzyskać następnego DIE: %s\n"
-#: src/readelf.c:7878
+#: src/readelf.c:7930
#, c-format
msgid "cannot get next DIE: %s"
msgstr "nie można uzyskać następnego DIE: %s"
-#: src/readelf.c:7922
+#: src/readelf.c:7974
#, fuzzy, c-format
msgid ""
" Split compilation unit at offset %<PRIu64>:\n"
@@ -5398,7 +5421,7 @@ msgstr ""
" Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
"%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
-#: src/readelf.c:7974
+#: src/readelf.c:8026
#, c-format
msgid ""
"\n"
@@ -5409,18 +5432,18 @@ msgstr ""
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:8306
+#: src/readelf.c:8358
#, fuzzy, c-format
msgid "unknown form: %s"
msgstr "nieznany błąd"
-#: src/readelf.c:8337
+#: src/readelf.c:8389
#, 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:8439
+#: src/readelf.c:8491
#, fuzzy, c-format
msgid ""
"\n"
@@ -5451,27 +5474,27 @@ msgstr ""
"\n"
"Instrukcje:\n"
-#: src/readelf.c:8461
+#: src/readelf.c:8513
#, fuzzy, c-format
msgid "cannot handle .debug_line version: %u\n"
msgstr "nie można uzyskać wersji symbolu: %s"
-#: src/readelf.c:8469
+#: src/readelf.c:8521
#, fuzzy, c-format
msgid "cannot handle address size: %u\n"
msgstr "nieobsługiwany rozmiar adresu"
-#: src/readelf.c:8477
+#: src/readelf.c:8529
#, fuzzy, c-format
msgid "cannot handle segment selector size: %u\n"
msgstr "nie można uzyskać sekcji: %s"
-#: src/readelf.c:8487
+#: src/readelf.c:8539
#, 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:8502
+#: src/readelf.c:8554
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
@@ -5479,7 +5502,7 @@ msgstr[0] " [%*<PRIuFAST8>] %hhu parametr\n"
msgstr[1] " [%*<PRIuFAST8>] %hhu parametry\n"
msgstr[2] " [%*<PRIuFAST8>] %hhu parametrów\n"
-#: src/readelf.c:8513
+#: src/readelf.c:8565
msgid ""
"\n"
"Directory table:"
@@ -5487,12 +5510,12 @@ msgstr ""
"\n"
"Tabela katalogu:"
-#: src/readelf.c:8519 src/readelf.c:8596
+#: src/readelf.c:8571 src/readelf.c:8648
#, fuzzy, c-format
msgid " ["
msgstr " PC: "
-#: src/readelf.c:8590
+#: src/readelf.c:8642
#, fuzzy
msgid ""
"\n"
@@ -5501,7 +5524,7 @@ msgstr ""
"\n"
" Tabela strony wywołania:"
-#: src/readelf.c:8651
+#: src/readelf.c:8703
#, fuzzy
msgid " Entry Dir Time Size Name"
msgstr ""
@@ -5509,7 +5532,16 @@ msgstr ""
"Tabela nazw plików:\n"
" Wpis Kat Czas Rozmiar Nazwa"
-#: src/readelf.c:8688
+#: src/readelf.c:8742
+#, fuzzy
+msgid ""
+"\n"
+"No line number statements."
+msgstr ""
+"\n"
+"Instrukcje numerów wierszy:"
+
+#: src/readelf.c:8746
msgid ""
"\n"
"Line number statements:"
@@ -5517,119 +5549,119 @@ msgstr ""
"\n"
"Instrukcje numerów wierszy:"
-#: src/readelf.c:8711
+#: src/readelf.c:8766
#, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr "nieprawidłowe maksimum operacji na instrukcję wynosi zero"
-#: src/readelf.c:8745
+#: src/readelf.c:8800
#, fuzzy, c-format
msgid " special opcode %u: address+%u = "
msgstr " instrukcja specjalna %u: adres+%u = %s, wiersz%+d = %zu\n"
-#: src/readelf.c:8749
+#: src/readelf.c:8804
#, fuzzy, c-format
msgid ", op_index = %u, line%+d = %zu\n"
msgstr ""
" instrukcja specjalna %u: adres+%u = %s, op_index = %u, wiersz%+d = %zu\n"
-#: src/readelf.c:8752
+#: src/readelf.c:8807
#, c-format
msgid ", line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:8770
+#: src/readelf.c:8825
#, c-format
msgid " extended opcode %u: "
msgstr " instrukcja rozszerzona %u: "
-#: src/readelf.c:8775
+#: src/readelf.c:8830
msgid " end of sequence"
msgstr " koniec sekwencji"
-#: src/readelf.c:8793
+#: src/readelf.c:8848
#, fuzzy, c-format
msgid " set address to "
msgstr " ustawienie adresu na %s\n"
-#: src/readelf.c:8821
+#: src/readelf.c:8876
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
" definicja nowego pliku: dir=%u, mtime=%<PRIu64>, długość=%<PRIu64>, nazwa="
"%s\n"
-#: src/readelf.c:8835
+#: src/readelf.c:8890
#, c-format
msgid " set discriminator to %u\n"
msgstr " ustawienie dyskryminatora na %u\n"
#. Unknown, ignore it.
-#: src/readelf.c:8840
+#: src/readelf.c:8895
msgid " unknown opcode"
msgstr " nieznana instrukcja"
#. Takes no argument.
-#: src/readelf.c:8852
+#: src/readelf.c:8907
msgid " copy"
msgstr " kopiowanie"
-#: src/readelf.c:8863
+#: src/readelf.c:8918
#, fuzzy, c-format
msgid " advance address by %u to "
msgstr " zwiększenie adresu o %u do %s\n"
-#: src/readelf.c:8867 src/readelf.c:8928
+#: src/readelf.c:8922 src/readelf.c:8983
#, c-format
msgid ", op_index to %u"
msgstr ""
-#: src/readelf.c:8879
+#: src/readelf.c:8934
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " zwiększenie wiersza o stałą %d do %<PRId64>\n"
-#: src/readelf.c:8889
+#: src/readelf.c:8944
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " ustawienie pliku na %<PRIu64>\n"
-#: src/readelf.c:8900
+#: src/readelf.c:8955
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " ustawienie kolumny na %<PRIu64>\n"
-#: src/readelf.c:8907
+#: src/readelf.c:8962
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " ustawienie „%s†na %<PRIuFAST8>\n"
#. Takes no argument.
-#: src/readelf.c:8913
+#: src/readelf.c:8968
msgid " set basic block flag"
msgstr " ustawienie podstawowej flagi bloku"
-#: src/readelf.c:8924
+#: src/readelf.c:8979
#, fuzzy, c-format
msgid " advance address by constant %u to "
msgstr " zwiększenie adresu o stałą %u do %s\n"
-#: src/readelf.c:8944
+#: src/readelf.c:8999
#, fuzzy, c-format
msgid " advance address by fixed value %u to \n"
msgstr " zwiększenie adresu o stałą wartość %u do %s\n"
#. Takes no argument.
-#: src/readelf.c:8954
+#: src/readelf.c:9009
msgid " set prologue end flag"
msgstr " ustawienie flagi końca prologu"
#. Takes no argument.
-#: src/readelf.c:8959
+#: src/readelf.c:9014
msgid " set epilogue begin flag"
msgstr " ustawienie flagi poczÄ…tku epilogu"
-#: src/readelf.c:8969
+#: src/readelf.c:9024
#, c-format
msgid " set isa to %u\n"
msgstr " ustawienie isa na %u\n"
@@ -5637,7 +5669,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:8978
+#: src/readelf.c:9033
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -5645,96 +5677,101 @@ msgstr[0] " nieznana instrukcja z %<PRIu8> parametrem:"
msgstr[1] " nieznana instrukcja z %<PRIu8> parametrami:"
msgstr[2] " nieznana instrukcja z %<PRIu8> parametrami:"
-#: src/readelf.c:9018
+#: src/readelf.c:9073
#, fuzzy, c-format
msgid "cannot get .debug_loclists content: %s"
msgstr "nie można uzyskać zawartości .debug_log: %s"
-#: src/readelf.c:9187
+#: src/readelf.c:9239
+#, fuzzy, c-format
+msgid " <INVALID DATA>\n"
+msgstr " <NIEPRAWIDÅOWE DANE>\n"
+
+#: src/readelf.c:9279
#, fuzzy, c-format
msgid "invalid loclists data"
msgstr "nieprawidłowe dane"
-#: src/readelf.c:9440
+#: src/readelf.c:9532
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "nie można uzyskać zawartości .debug_log: %s"
-#: src/readelf.c:9647 src/readelf.c:10691
+#: src/readelf.c:9745 src/readelf.c:10789
msgid " <INVALID DATA>\n"
msgstr " <NIEPRAWIDÅOWE DANE>\n"
-#: src/readelf.c:9702 src/readelf.c:9865
+#: src/readelf.c:9800 src/readelf.c:9963
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "nie można uzyskać danych sekcji informacji o makrach: %s"
-#: src/readelf.c:9782
+#: src/readelf.c:9880
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** niezakończony ciąg na końcu sekcji"
-#: src/readelf.c:9805
+#: src/readelf.c:9903
#, 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:9906
+#: src/readelf.c:10004
#, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " Offset: 0x%<PRIx64>\n"
-#: src/readelf.c:9918
+#: src/readelf.c:10016
#, c-format
msgid " Version: %<PRIu16>\n"
msgstr " Wersja: %<PRIu16>\n"
-#: src/readelf.c:9924 src/readelf.c:10811
+#: src/readelf.c:10022 src/readelf.c:10909
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr " nieznana wersja, nie można przetworzyć sekcji\n"
-#: src/readelf.c:9931
+#: src/readelf.c:10029
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>"
msgstr " Flaga: 0x%<PRIx8>\n"
-#: src/readelf.c:9960
+#: src/readelf.c:10058
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " Długość offsetu: %<PRIu8>\n"
-#: src/readelf.c:9968
+#: src/readelf.c:10066
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " Offset .debug_line: 0x%<PRIx64>\n"
-#: src/readelf.c:9993
+#: src/readelf.c:10091
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " tabela instrukcji rozszerzenia, %<PRIu8> elementów:\n"
-#: src/readelf.c:10000
+#: src/readelf.c:10098
#, c-format
msgid " [%<PRIx8>]"
msgstr " [%<PRIx8>]"
-#: src/readelf.c:10012
+#: src/readelf.c:10110
#, c-format
msgid " %<PRIu8> arguments:"
msgstr " Parametry %<PRIu8>:"
-#: src/readelf.c:10027
+#: src/readelf.c:10125
#, c-format
msgid " no arguments."
msgstr " brak parametrów."
-#: src/readelf.c:10228
+#: src/readelf.c:10326
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr " [%5d] offset DIE: %6<PRId64>, offset CU DIE: %6<PRId64>, nazwa: %s\n"
-#: src/readelf.c:10272
+#: src/readelf.c:10370
#, c-format
msgid ""
"\n"
@@ -5745,41 +5782,41 @@ msgstr ""
"Sekcja DWARF [%2zu] „%s†pod offsetem %#<PRIx64>:\n"
" %*s CiÄ…g\n"
-#: src/readelf.c:10287
+#: src/readelf.c:10385
#, fuzzy, c-format
msgid " *** error, missing string terminator\n"
msgstr " *** błąd podczas odczytywania ciągów: %s\n"
-#: src/readelf.c:10316
+#: src/readelf.c:10414
#, fuzzy, c-format
msgid "cannot get .debug_str_offsets section data: %s"
msgstr "nie można uzyskać danych sekcji: %s"
-#: src/readelf.c:10415
+#: src/readelf.c:10513
#, fuzzy, c-format
msgid " Length: %8<PRIu64>\n"
msgstr ""
"\n"
" Długość: %6<PRIu64>\n"
-#: src/readelf.c:10417
+#: src/readelf.c:10515
#, fuzzy, c-format
msgid " Offset size: %8<PRIu8>\n"
msgstr " Długość offsetu: %<PRIu8>\n"
-#: src/readelf.c:10431
+#: src/readelf.c:10529
#, fuzzy, c-format
msgid " DWARF version: %8<PRIu16>\n"
msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
-#: src/readelf.c:10440
+#: src/readelf.c:10538
#, fuzzy, c-format
msgid " Padding: %8<PRIx16>\n"
msgstr ""
"\n"
" Długość: %6<PRIu64>\n"
-#: src/readelf.c:10494
+#: src/readelf.c:10592
#, c-format
msgid ""
"\n"
@@ -5788,7 +5825,7 @@ msgstr ""
"\n"
"Sekcja tabeli wyszukiwania ramki wywoÅ‚ania [%2zu] „.eh_frame_hdrâ€:\n"
-#: src/readelf.c:10596
+#: src/readelf.c:10694
#, c-format
msgid ""
"\n"
@@ -5797,22 +5834,22 @@ msgstr ""
"\n"
"Sekcja tabeli obsÅ‚ugiwania wyjÄ…tków [%2zu] „.gcc_except_tableâ€:\n"
-#: src/readelf.c:10619
+#: src/readelf.c:10717
#, c-format
msgid " LPStart encoding: %#x "
msgstr " Kodowanie LPStart: %#x "
-#: src/readelf.c:10631
+#: src/readelf.c:10729
#, c-format
msgid " TType encoding: %#x "
msgstr " Kodowanie TType: %#x "
-#: src/readelf.c:10646
+#: src/readelf.c:10744
#, c-format
msgid " Call site encoding: %#x "
msgstr " Kodowanie strony wywołania: %#x "
-#: src/readelf.c:10659
+#: src/readelf.c:10757
msgid ""
"\n"
" Call site table:"
@@ -5820,7 +5857,7 @@ msgstr ""
"\n"
" Tabela strony wywołania:"
-#: src/readelf.c:10673
+#: src/readelf.c:10771
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5833,12 +5870,12 @@ msgstr ""
" LÄ…dowisko: %#<PRIx64>\n"
" Działanie: %u\n"
-#: src/readelf.c:10746
+#: src/readelf.c:10844
#, c-format
msgid "invalid TType encoding"
msgstr "nieprawidłowe kodowanie TType"
-#: src/readelf.c:10773
+#: src/readelf.c:10871
#, c-format
msgid ""
"\n"
@@ -5847,37 +5884,37 @@ msgstr ""
"\n"
"Sekcja GDB [%2zu] „%s†pod offsetem %#<PRIx64> zawiera %<PRId64> bajtów:\n"
-#: src/readelf.c:10802
+#: src/readelf.c:10900
#, c-format
msgid " Version: %<PRId32>\n"
msgstr " Wersja: %<PRId32>\n"
-#: src/readelf.c:10820
+#: src/readelf.c:10918
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " offset CU: %#<PRIx32>\n"
-#: src/readelf.c:10827
+#: src/readelf.c:10925
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " offset TU: %#<PRIx32>\n"
-#: src/readelf.c:10834
+#: src/readelf.c:10932
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " offset adresu: %#<PRIx32>\n"
-#: src/readelf.c:10841
+#: src/readelf.c:10939
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " offset symbolu: %#<PRIx32>\n"
-#: src/readelf.c:10848
+#: src/readelf.c:10946
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " offset stałej: %#<PRIx32>\n"
-#: src/readelf.c:10862
+#: src/readelf.c:10960
#, c-format
msgid ""
"\n"
@@ -5886,7 +5923,7 @@ msgstr ""
"\n"
" Lista CU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:10887
+#: src/readelf.c:10985
#, c-format
msgid ""
"\n"
@@ -5895,7 +5932,7 @@ msgstr ""
"\n"
" Lista TU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:10916
+#: src/readelf.c:11014
#, c-format
msgid ""
"\n"
@@ -5904,7 +5941,7 @@ msgstr ""
"\n"
" Lista adresów pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:10948
+#: src/readelf.c:11046
#, c-format
msgid ""
"\n"
@@ -5913,18 +5950,18 @@ msgstr ""
"\n"
" Tabela symboli pod offsetem %#<PRIx32> zawiera %zu gniazd:\n"
-#: src/readelf.c:11086
+#: src/readelf.c:11184
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s"
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11552 src/readelf.c:12179 src/readelf.c:12290
+#: src/readelf.c:12348
#, c-format
msgid "cannot convert core note data: %s"
msgstr "nie można konwertować danych notatki core: %s"
-#: src/readelf.c:11812
+#: src/readelf.c:11915
#, c-format
msgid ""
"\n"
@@ -5933,21 +5970,21 @@ msgstr ""
"\n"
"%*s… <powtarza się jeszcze %u razy>…"
-#: src/readelf.c:12319
+#: src/readelf.c:12427
msgid " Owner Data size Type\n"
msgstr " Właściciel Rozmiar danych Typ\n"
-#: src/readelf.c:12348
+#: src/readelf.c:12456
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:12400
+#: src/readelf.c:12508
#, fuzzy, c-format
msgid "cannot get content of note: %s"
msgstr "nie można uzyskać zawartości sekcji notatki: %s"
-#: src/readelf.c:12434
+#: src/readelf.c:12542
#, c-format
msgid ""
"\n"
@@ -5957,7 +5994,7 @@ msgstr ""
"Segment notatki [%2zu] „%s†o długości %<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:12457
+#: src/readelf.c:12565
#, c-format
msgid ""
"\n"
@@ -5966,7 +6003,7 @@ msgstr ""
"\n"
"Segment notatki o długości %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:12504
+#: src/readelf.c:12612
#, c-format
msgid ""
"\n"
@@ -5975,12 +6012,12 @@ msgstr ""
"\n"
"Sekcja [%zu] „%s†nie ma danych do zrzucenia.\n"
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12639 src/readelf.c:12690
#, 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:12536
+#: src/readelf.c:12644
#, c-format
msgid ""
"\n"
@@ -5990,7 +6027,7 @@ msgstr ""
"Segment zrzutu szesnastkowego [%zu] „%sâ€, %<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:12541
+#: src/readelf.c:12649
#, c-format
msgid ""
"\n"
@@ -6001,7 +6038,7 @@ msgstr ""
"Zrzut szesnastkowy sekcji [%zu] „%sâ€, %<PRIu64> bajtów (%zd "
"nieskompresowanych) pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:12555
+#: src/readelf.c:12663
#, c-format
msgid ""
"\n"
@@ -6010,7 +6047,7 @@ msgstr ""
"\n"
"Sekcja [%zu] „%s†nie ma ciągów do zrzucenia.\n"
-#: src/readelf.c:12587
+#: src/readelf.c:12695
#, c-format
msgid ""
"\n"
@@ -6019,7 +6056,7 @@ msgstr ""
"\n"
"Sekcja ciągów [%zu] „%s†zawiera %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:12592
+#: src/readelf.c:12700
#, c-format
msgid ""
"\n"
@@ -6030,7 +6067,7 @@ msgstr ""
"Sekcja ciągów [%zu] „%s†zawiera %<PRIu64> bajtów (%zd nieskompresowanych) "
"pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:12641
+#: src/readelf.c:12749
#, c-format
msgid ""
"\n"
@@ -6039,7 +6076,7 @@ msgstr ""
"\n"
"sekcja [%lu] nie istnieje"
-#: src/readelf.c:12671
+#: src/readelf.c:12779
#, c-format
msgid ""
"\n"
@@ -6048,12 +6085,12 @@ msgstr ""
"\n"
"sekcja „%s†nie istnieje"
-#: src/readelf.c:12728
+#: src/readelf.c:12836
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "nie można uzyskać indeksu symboli archiwum „%sâ€: %s"
-#: src/readelf.c:12731
+#: src/readelf.c:12839
#, c-format
msgid ""
"\n"
@@ -6062,7 +6099,7 @@ msgstr ""
"\n"
"Archiwum „%s†nie ma indeksu symboli\n"
-#: src/readelf.c:12735
+#: src/readelf.c:12843
#, c-format
msgid ""
"\n"
@@ -6071,12 +6108,12 @@ msgstr ""
"\n"
"Indeks archiwum „%s†ma %zu wpisów:\n"
-#: src/readelf.c:12753
+#: src/readelf.c:12861
#, 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:12758
+#: src/readelf.c:12866
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Element archiwum „%s†zawiera:\n"
@@ -6140,7 +6177,7 @@ msgstr "Nieprawidłowa baza: %s"
msgid "%s: file format not recognized"
msgstr "%s: nie rozpoznano formatu pliku"
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
#, c-format
msgid " (ex %s)"
msgstr " (ex %s)"
@@ -6150,65 +6187,65 @@ msgstr " (ex %s)"
msgid "cannot get section header"
msgstr "nie można uzyskać nagłówka sekcji\n"
-#: src/size.c:582
+#: src/size.c:585
msgid "(TOTALS)\n"
msgstr "(CAÅKOWITE)\n"
-#: src/stack.c:482
+#: src/stack.c:487
#, c-format
msgid "-p PID should be a positive process id."
msgstr "-p PID powinien być dodatnim identyfikatorem procesu."
-#: src/stack.c:488
+#: src/stack.c:493
#, c-format
msgid "Cannot open core file '%s'"
msgstr "Nie można otworzyć pliku core „%sâ€"
-#: src/stack.c:548
+#: src/stack.c:553
#, c-format
msgid "-n MAXFRAMES should be 0 or higher."
msgstr "-n MAKSYMALNA_LICZBA_RAMEK powinna wynosić 0 lub więcej."
-#: src/stack.c:560
+#: src/stack.c:565
#, c-format
msgid "-e EXEC needs a core given by --core."
msgstr "-e PLIK_WYKONYWALNY wymaga pliku core podanego za pomocÄ… opcji --core."
-#: src/stack.c:564
+#: src/stack.c:569
#, c-format
msgid "-1 needs a thread id given by -p."
msgstr "-1 wymaga identyfikatora wÄ…tku podanego za pomocÄ… opcji -p."
-#: src/stack.c:568
+#: src/stack.c:573
#, c-format
msgid "One of -p PID or --core COREFILE should be given."
msgstr "Tylko jedna z opcji -p PID lub --core PLIK_CORE powinna zostać podana."
-#: src/stack.c:640
+#: src/stack.c:645
msgid "Show stack of process PID"
msgstr "Wyświetla stos numeru PID procesu"
-#: src/stack.c:642
+#: src/stack.c:647
msgid "Show stack found in COREFILE"
msgstr "Wyświetla stos odnaleziony w PLIKU_CORE"
-#: src/stack.c:643
+#: src/stack.c:648
msgid "(optional) EXECUTABLE that produced COREFILE"
msgstr "(opcjonalnie) PLIK_WYKONYWALNY, który utworzył PLIK_CORE"
-#: src/stack.c:647
+#: src/stack.c:652
msgid "Output selection options:"
msgstr "Opcje wyboru wyjścia:"
-#: src/stack.c:649
+#: src/stack.c:654
msgid "Additionally show frame activation"
msgstr "Dodatkowo wyświetla aktywację ramki"
-#: src/stack.c:651
+#: src/stack.c:656
msgid "Additionally try to lookup DWARF debuginfo name for frame address"
msgstr "Dodatkowo próbuje wyszukać nazwy debuginfo DWARF dla adresu ramki"
-#: src/stack.c:654
+#: src/stack.c:659
msgid ""
"Additionally show inlined function frames using DWARF debuginfo if available "
"(implies -d)"
@@ -6216,15 +6253,15 @@ msgstr ""
"Dodatkowo wyświetla wstawione ramki używając debuginfo DWARF, jeśli jest "
"dostępne (zakłada opcję -d)"
-#: src/stack.c:656
+#: src/stack.c:661
msgid "Additionally show module file information"
msgstr "Dodatkowo wyświetla informacje o pliku modułu"
-#: src/stack.c:658
+#: src/stack.c:663
msgid "Additionally show source file information"
msgstr "Dodatkowo wyświetla informacje o pliku źródłowym"
-#: src/stack.c:660
+#: src/stack.c:665
msgid ""
"Show all additional information (activation, debugname, inlines, module and "
"source)"
@@ -6232,36 +6269,36 @@ msgstr ""
"Wyświetla wszystkie dodatkowe informacje (aktywację, nazwę debugowania, "
"wstawki, moduł i źródło)"
-#: src/stack.c:662
+#: src/stack.c:667
msgid "Do not resolve address to function symbol name"
msgstr "Nie rozwiązuje nazw symboli adresów do funkcji"
-#: src/stack.c:664
+#: src/stack.c:669
msgid "Show raw function symbol names, do not try to demangle names"
msgstr ""
"Wyświetla surowe nazwy symboli funkcji, nie próbuje usuwać dekoracji z nazw"
-#: src/stack.c:666
+#: src/stack.c:671
msgid "Show module build-id, load address and pc offset"
msgstr "Wyświetla identyfikator kopii modułu, wczytuje adres i offset pc"
-#: src/stack.c:668
+#: src/stack.c:673
msgid "Show the backtrace of only one thread"
msgstr "Wyświetla wyjątek, jeśli jest tylko jeden wątek"
-#: src/stack.c:670
+#: src/stack.c:675
msgid "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)"
msgstr ""
"Wyświetla najwyżej MAKSYMALNĄ_LICZBĘ_KLATEK na wątek (domyślnie 256, 0 "
"oznacza brak ograniczenia)"
-#: src/stack.c:672
+#: src/stack.c:677
msgid "Show module memory map with build-id, elf and debug files detected"
msgstr ""
"Wyświetla mapę pamięci modułu z identyfikatorem kopii, wykryte pliki elf "
"i debug"
-#: src/stack.c:680
+#: src/stack.c:685
#, fuzzy
msgid ""
"Print a stack for each thread in a process or core file.\n"
@@ -6269,7 +6306,7 @@ msgid ""
"Program exits with return code 0 if all frames were shown without any "
"errors. If some frames were shown, but there were some non-fatal errors, "
"possibly causing an incomplete backtrace, the program exits with return code "
-"1. If no frames could be shown, or a fatal error occured the program exits "
+"1. If no frames could be shown, or a fatal error occurred the program exits "
"with return code 2. If the program was invoked with bad or missing "
"arguments it will exit with return code 64."
msgstr ""
@@ -6283,7 +6320,7 @@ msgstr ""
"z kodem zwrotnym 2. Jeśli program został wywołany za pomocą błędnych lub "
"brakujących parametrów, to zakończy on działanie z kodem zwrotnym 64."
-#: src/stack.c:755
+#: src/stack.c:760
#, c-format
msgid "Couldn't show any frames."
msgstr "Nie można wyświetlić żadnych ramek."
@@ -6304,7 +6341,7 @@ msgstr ""
#: src/strings.c:69
msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
+"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
"{B,L} = 32-bit"
msgstr ""
"Wybór rozmiaru i kolejności znaków: s = 7 bitów, S = 8 bitów, {b,l} = 16 "
@@ -6385,7 +6422,7 @@ msgstr "Kopiuje czasy modyfikacji/dostępu do wyjścia"
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)"
+"operation is not reversible, needs -f)"
msgstr ""
"Rozwiązuje wszystkie proste relokacje między sekcjami debugowania, jeśli "
"usunięte sekcje zostały umieszczone w pliku debugowania (ma znaczenie tylko "
@@ -6395,7 +6432,7 @@ msgstr ""
msgid ""
"Similar to --reloc-debug-sections, but resolve all trivial relocations "
"between debug sections in place. No other stripping is performed (operation "
-"is not reversable, incompatible with -f, -g, --remove-comment and --remove-"
+"is not reversible, incompatible with -f, -g, --remove-comment and --remove-"
"section)"
msgstr ""
@@ -6452,22 +6489,22 @@ msgstr "OpcjÄ™ -F podano dwukrotnie"
msgid "cannot both keep and remove .comment section"
msgstr "Usuwa sekcjÄ™ .comment"
-#: src/strip.c:574
+#: src/strip.c:481
#, c-format
msgid "bad relocation"
msgstr "błędna relokacja"
-#: src/strip.c:726 src/strip.c:750
+#: src/strip.c:747 src/strip.c:771
#, c-format
msgid "cannot stat input file '%s'"
msgstr "nie można wykonać stat na pliku wejÅ›ciowym „%sâ€"
-#: src/strip.c:740
+#: src/strip.c:761
#, c-format
msgid "while opening '%s'"
msgstr "podczas otwierania „%sâ€"
-#: src/strip.c:778
+#: src/strip.c:799
#, 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"
@@ -6478,265 +6515,265 @@ 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:790
+#: src/strip.c:811
#, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: brak obsługi okrajania archiwum"
-#: src/strip.c:1001
+#: src/strip.c:1047
#, c-format
msgid "cannot open EBL backend"
msgstr "nie można otworzyć zaplecza EBL"
-#: src/strip.c:1046
+#: src/strip.c:1092
#, c-format
msgid "cannot get number of phdrs"
msgstr "nie można uzyskać liczby phdr"
-#: src/strip.c:1060 src/strip.c:1103
+#: src/strip.c:1106 src/strip.c:1149
#, fuzzy, c-format
msgid "cannot create new ehdr for file '%s': %s"
msgstr "nie można utworzyć nowego pliku „%sâ€: %s"
-#: src/strip.c:1070 src/strip.c:1113
+#: src/strip.c:1116 src/strip.c:1159
#, fuzzy, c-format
msgid "cannot create new phdr for file '%s': %s"
msgstr "nie można utworzyć nowego pliku „%sâ€: %s"
-#: src/strip.c:1194
+#: src/strip.c:1240
#, c-format
msgid "illformed file '%s'"
msgstr "plik „%s†ma błędny format"
-#: src/strip.c:1204
+#: src/strip.c:1250
#, fuzzy, c-format
msgid "Cannot remove allocated section '%s'"
msgstr "nie można przydzielić danych sekcji: %s"
-#: src/strip.c:1213
+#: src/strip.c:1259
#, fuzzy, c-format
msgid "Cannot both keep and remove section '%s'"
msgstr "nie można dodać nowej sekcji: %s"
-#: src/strip.c:1573 src/strip.c:1688
+#: src/strip.c:1624 src/strip.c:1739
#, c-format
msgid "while generating output file: %s"
msgstr "podczas tworzenia pliku wyjściowego: %s"
-#: src/strip.c:1637
+#: src/strip.c:1688
#, fuzzy, c-format
msgid "%s: error while updating ELF header: %s"
msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s"
-#: src/strip.c:1646
+#: src/strip.c:1697
#, fuzzy, c-format
msgid "%s: error while getting shdrstrndx: %s"
msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s"
-#: src/strip.c:1654 src/strip.c:2535
+#: src/strip.c:1705 src/strip.c:2550
#, fuzzy, c-format
msgid "%s: error updating shdrstrndx: %s"
msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s"
-#: src/strip.c:1671
+#: src/strip.c:1722
#, c-format
msgid "while preparing output for '%s'"
msgstr "podczas przygotowywania wyjÅ›cia dla „%sâ€"
-#: src/strip.c:1733 src/strip.c:1796
+#: src/strip.c:1784 src/strip.c:1847
#, c-format
msgid "while create section header section: %s"
msgstr "podczas tworzenia sekcji nagłówka sekcji: %s"
-#: src/strip.c:1742
+#: src/strip.c:1793
#, c-format
msgid "cannot allocate section data: %s"
msgstr "nie można przydzielić danych sekcji: %s"
-#: src/strip.c:1808
+#: src/strip.c:1859
#, c-format
msgid "while create section header string table: %s"
msgstr "podczas tworzenia tabeli ciągów nagłówka sekcji: %s"
-#: src/strip.c:1815
+#: src/strip.c:1866
#, 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:2028
+#: src/strip.c:2079
#, 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:2451 src/strip.c:2559
+#: src/strip.c:2466 src/strip.c:2574
#, c-format
msgid "while writing '%s': %s"
msgstr "podczas zapisywania „%sâ€: %s"
-#: src/strip.c:2462
+#: src/strip.c:2477
#, c-format
msgid "while creating '%s'"
msgstr "podczas tworzenia „%sâ€"
-#: src/strip.c:2485
+#: src/strip.c:2500
#, c-format
msgid "while computing checksum for debug information"
msgstr "podczas obliczania sumy kontrolnej dla informacji debugowania"
-#: src/strip.c:2526
+#: src/strip.c:2541
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s"
-#: src/strip.c:2544
+#: src/strip.c:2559
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: błąd podczas odczytywania pliku: %s"
-#: src/strip.c:2584 src/strip.c:2604
+#: src/strip.c:2599 src/strip.c:2619
#, c-format
msgid "while writing '%s'"
msgstr "podczas zapisywania „%sâ€"
-#: src/strip.c:2641 src/strip.c:2648
+#: src/strip.c:2656 src/strip.c:2663
#, c-format
msgid "error while finishing '%s': %s"
msgstr "bÅ‚Ä…d podczas koÅ„czenia „%sâ€: %s"
-#: src/strip.c:2665 src/strip.c:2741
+#: src/strip.c:2680 src/strip.c:2756
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "nie można ustawić czasu dostÄ™pu i modyfikacji „%sâ€"
-#: src/unstrip.c:70
+#: src/unstrip.c:66
msgid "Match MODULE against file names, not module names"
msgstr "Dopasowuje MODUÅY do nazw plików, a nie nazwy modułów"
-#: src/unstrip.c:71
+#: src/unstrip.c:67
msgid "Silently skip unfindable files"
msgstr "Pomija nieodnalezione pliki bez zgłaszania tego"
-#: src/unstrip.c:74
+#: src/unstrip.c:70
msgid "Place output into FILE"
msgstr "Umieszcza wyjście w PLIKU"
-#: src/unstrip.c:76
+#: src/unstrip.c:72
msgid "Create multiple output files under DIRECTORY"
msgstr "Tworzy wiele plików wyjściowych w KATALOGU"
-#: src/unstrip.c:77
+#: src/unstrip.c:73
msgid "Use module rather than file names"
msgstr "Używa nazw modułów zamiast nazw plików"
-#: src/unstrip.c:79
+#: src/unstrip.c:75
msgid "Create output for modules that have no separate debug information"
msgstr ""
"Tworzy wyjście dla modułów niemających oddzielnych informacji debugowania"
-#: src/unstrip.c:82
+#: src/unstrip.c:78
msgid "Apply relocations to section contents in ET_REL files"
msgstr "Zastosowuje relokacje do zawartości sekcji w plikach ET_REL"
-#: src/unstrip.c:84
+#: src/unstrip.c:80
msgid "Only list module and file names, build IDs"
msgstr "Wyświetla tylko nazwy modułów i plików, identyfikatory kopii"
-#: src/unstrip.c:86
+#: src/unstrip.c:82
msgid "Force combining files even if some ELF headers don't seem to match"
msgstr ""
"Wymusza łączenie plików nawet, jeśli niektóre nagłówki ELF się nie zgadzają"
-#: src/unstrip.c:130
+#: src/unstrip.c:126
#, c-format
msgid "-d option specified twice"
msgstr "opcjÄ™ -d podano dwukrotnie"
-#: src/unstrip.c:165
+#: src/unstrip.c:161
#, c-format
msgid "only one of -o or -d allowed"
msgstr "dozwolona jest tylko jedna z opcji -o lub -d"
-#: src/unstrip.c:174
+#: src/unstrip.c:170
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr "opcja -n nie może być używana z jawnymi plikami albo z opcją -o lub -d"
-#: src/unstrip.c:189
+#: src/unstrip.c:185
#, c-format
msgid "output directory '%s'"
msgstr "katalog wyjÅ›ciowy „%sâ€"
-#: src/unstrip.c:198
+#: src/unstrip.c:194
#, c-format
msgid "exactly two file arguments are required"
msgstr "wymagane są dokładnie dwa parametry plików"
-#: src/unstrip.c:204
+#: src/unstrip.c:200
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr "opcje -m, -a, -R oraz -i nie są dozwolone z jawnymi plikami"
-#: src/unstrip.c:217
+#: src/unstrip.c:213
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr "opcja -o lub -d jest wymagana podczas używania ukrytych plików"
-#: src/unstrip.c:240
+#: src/unstrip.c:236
#, c-format
msgid "cannot create ELF header: %s"
msgstr "nie można utworzyć nagłówka ELF: %s"
-#: src/unstrip.c:244
+#: src/unstrip.c:240
#, fuzzy, c-format
msgid "cannot get shdrstrndx:%s"
msgstr "nie można uzyskać sekcji: %s"
-#: src/unstrip.c:248 src/unstrip.c:2081
+#: src/unstrip.c:244 src/unstrip.c:2085
#, c-format
msgid "cannot get ELF header: %s"
msgstr "nie można uzyskać nagłówka ELF: %s"
-#: src/unstrip.c:258
+#: src/unstrip.c:254
#, fuzzy, c-format
msgid "cannot get new zero section: %s"
msgstr "nie można uzyskać sekcji: %s"
-#: src/unstrip.c:261
+#: src/unstrip.c:257
#, fuzzy, c-format
msgid "cannot update new zero section: %s"
msgstr "nie można zaktualizować relokacji: %s"
-#: src/unstrip.c:265
+#: src/unstrip.c:261
#, c-format
msgid "cannot copy ELF header: %s"
msgstr "nie można skopiować nagłówka ELF: %s"
-#: src/unstrip.c:269 src/unstrip.c:2099 src/unstrip.c:2142
+#: src/unstrip.c:265 src/unstrip.c:2103 src/unstrip.c:2146
#, c-format
msgid "cannot get number of program headers: %s"
msgstr "nie można uzyskać liczby nagłówków programu: %s"
-#: src/unstrip.c:274 src/unstrip.c:2103
+#: src/unstrip.c:270 src/unstrip.c:2107
#, c-format
msgid "cannot create program headers: %s"
msgstr "nie można utworzyć nagłówków programu: %s"
-#: src/unstrip.c:280
+#: src/unstrip.c:276
#, c-format
msgid "cannot copy program header: %s"
msgstr "nie można skopiować nagłówka programu: %s"
-#: src/unstrip.c:290
+#: src/unstrip.c:286
#, c-format
msgid "cannot copy section header: %s"
msgstr "nie można skopiować nagłówka sekcji: %s"
-#: src/unstrip.c:293 src/unstrip.c:1703
+#: src/unstrip.c:289 src/unstrip.c:1707
#, c-format
msgid "cannot get section data: %s"
msgstr "nie można uzyskać danych sekcji: %s"
-#: src/unstrip.c:295 src/unstrip.c:1705
+#: src/unstrip.c:291 src/unstrip.c:1709
#, c-format
msgid "cannot copy section data: %s"
msgstr "nie można skopiować danych sekcji: %s"
@@ -6746,183 +6783,183 @@ msgstr "nie można skopiować danych sekcji: %s"
msgid "cannot create directory '%s'"
msgstr "nie można utworzyć katalogu „%sâ€"
-#: src/unstrip.c:391 src/unstrip.c:651 src/unstrip.c:685 src/unstrip.c:853
-#: src/unstrip.c:1745
+#: src/unstrip.c:393 src/unstrip.c:655 src/unstrip.c:689 src/unstrip.c:857
+#: src/unstrip.c:1749
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "nie można uzyskać wpisu tabeli symboli: %s"
-#: src/unstrip.c:407 src/unstrip.c:654 src/unstrip.c:675 src/unstrip.c:688
-#: src/unstrip.c:1766 src/unstrip.c:1961 src/unstrip.c:1985
+#: src/unstrip.c:409 src/unstrip.c:658 src/unstrip.c:679 src/unstrip.c:692
+#: src/unstrip.c:1770 src/unstrip.c:1965 src/unstrip.c:1989
#, c-format
msgid "cannot update symbol table: %s"
msgstr "nie można zaktualizować tabeli symboli: %s"
-#: src/unstrip.c:417
+#: src/unstrip.c:419
#, c-format
msgid "cannot update section header: %s"
msgstr "nie można zaktualizować nagłówka sekcji: %s"
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:465 src/unstrip.c:479
#, c-format
msgid "cannot update relocation: %s"
msgstr "nie można zaktualizować relokacji: %s"
-#: src/unstrip.c:574
+#: src/unstrip.c:578
#, c-format
msgid "cannot get symbol version: %s"
msgstr "nie można uzyskać wersji symbolu: %s"
-#: src/unstrip.c:587
+#: src/unstrip.c:591
#, c-format
msgid "unexpected section type in [%zu] with sh_link to symtab"
msgstr "nieoczekiwany typ sekcji w [%zu] z sh_link do tabeli symboli"
-#: src/unstrip.c:842
+#: src/unstrip.c:846
#, fuzzy, c-format
msgid "cannot get symbol section data: %s"
msgstr "nie można uzyskać danych sekcji: %s"
-#: src/unstrip.c:844
+#: src/unstrip.c:848
#, fuzzy, c-format
msgid "cannot get string section data: %s"
msgstr "nie można uzyskać danych sekcji: %s"
-#: src/unstrip.c:861
+#: src/unstrip.c:865
#, c-format
msgid "invalid string offset in symbol [%zu]"
msgstr "nieprawidłowy offset ciągu w symbolu [%zu]"
-#: src/unstrip.c:1019 src/unstrip.c:1423
+#: src/unstrip.c:1023 src/unstrip.c:1427
#, c-format
msgid "cannot read section [%zu] name: %s"
msgstr "nie można odczytać nazwy sekcji [%zu]: %s"
-#: src/unstrip.c:1034
+#: src/unstrip.c:1038
#, fuzzy, c-format
msgid "bad sh_link for group section: %s"
msgstr "nieprawidłowa wartość sh_link w sekcji %zu"
-#: src/unstrip.c:1040
+#: src/unstrip.c:1044
#, fuzzy, c-format
msgid "couldn't get shdr for group section: %s"
msgstr "nie można uzyskać danych dla sekcji %d: %s"
-#: src/unstrip.c:1045
+#: src/unstrip.c:1049
#, fuzzy, c-format
msgid "bad data for group symbol section: %s"
msgstr "nie można uzyskać danych dla sekcji symboli\n"
-#: src/unstrip.c:1051
+#: src/unstrip.c:1055
#, fuzzy, c-format
msgid "couldn't get symbol for group section: %s"
msgstr "nie można uzyskać wersji symbolu: %s"
-#: src/unstrip.c:1056
+#: src/unstrip.c:1060
#, fuzzy, c-format
msgid "bad symbol name for group section: %s"
msgstr "błędny nagłówek kompresji dla sekcji %zd: %s"
-#: src/unstrip.c:1098 src/unstrip.c:1117 src/unstrip.c:1155
+#: src/unstrip.c:1102 src/unstrip.c:1121 src/unstrip.c:1159
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr "nie można odczytać sekcji „.gnu.prelink_undoâ€: %s"
-#: src/unstrip.c:1135
+#: src/unstrip.c:1139
#, c-format
msgid "overflow with shnum = %zu in '%s' section"
msgstr "przepeÅ‚nienie z shnum = %zu w sekcji „%sâ€"
-#: src/unstrip.c:1146
+#: src/unstrip.c:1150
#, c-format
msgid "invalid contents in '%s' section"
msgstr "nieprawidÅ‚owa zawartość w sekcji „%sâ€"
-#: src/unstrip.c:1202 src/unstrip.c:1549
+#: src/unstrip.c:1206 src/unstrip.c:1553
#, c-format
msgid "cannot find matching section for [%zu] '%s'"
msgstr "nie można odnaleźć pasujÄ…cej sekcji dla [%zu] „%sâ€"
-#: src/unstrip.c:1327 src/unstrip.c:1343 src/unstrip.c:1629 src/unstrip.c:1920
+#: src/unstrip.c:1331 src/unstrip.c:1347 src/unstrip.c:1633 src/unstrip.c:1924
#, c-format
msgid "cannot add section name to string table: %s"
msgstr "nie można nazwy sekcji do tabeli ciągów: %s"
-#: src/unstrip.c:1352
+#: src/unstrip.c:1356
#, c-format
msgid "cannot update section header string table data: %s"
msgstr "nie można zaktualizować danych tabeli ciągów nagłówków sekcji: %s"
-#: src/unstrip.c:1381 src/unstrip.c:1385
+#: src/unstrip.c:1385 src/unstrip.c:1389
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr "nie można uzyskać indeksu sekcji tabeli ciągów nagłówków sekcji: %s"
-#: src/unstrip.c:1389 src/unstrip.c:1393 src/unstrip.c:1644
+#: src/unstrip.c:1393 src/unstrip.c:1397 src/unstrip.c:1648
#, c-format
msgid "cannot get section count: %s"
msgstr "nie można uzyskać licznika sekcji: %s"
-#: src/unstrip.c:1396
+#: src/unstrip.c:1400
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
"więcej sekcji w okrojonym pliku niż w pliku debugowania — odwrócono "
"parametry?"
-#: src/unstrip.c:1400
+#: src/unstrip.c:1404
#, c-format
msgid "no sections in stripped file"
msgstr ""
-#: src/unstrip.c:1471 src/unstrip.c:1564
+#: src/unstrip.c:1475 src/unstrip.c:1568
#, c-format
msgid "cannot read section header string table: %s"
msgstr "nie można odczytać tabeli ciągów nagłówków sekcji: %s"
-#: src/unstrip.c:1623
+#: src/unstrip.c:1627
#, c-format
msgid "cannot add new section: %s"
msgstr "nie można dodać nowej sekcji: %s"
-#: src/unstrip.c:1753
+#: src/unstrip.c:1757
#, c-format
msgid "symbol [%zu] has invalid section index"
msgstr "symbol [%zu] ma nieprawidłowy indeks sekcji"
-#: src/unstrip.c:1785
+#: src/unstrip.c:1789
#, fuzzy, c-format
msgid "group has invalid section index [%zd]"
msgstr "symbol [%zu] ma nieprawidłowy indeks sekcji"
-#: src/unstrip.c:2060
+#: src/unstrip.c:2064
#, c-format
msgid "cannot read section data: %s"
msgstr "nie można odczytać danych sekcji: %s"
-#: src/unstrip.c:2089
+#: src/unstrip.c:2093
#, c-format
msgid "cannot update ELF header: %s"
msgstr "nie można zaktualizować nagłówka ELF: %s"
-#: src/unstrip.c:2113
+#: src/unstrip.c:2117
#, c-format
msgid "cannot update program header: %s"
msgstr "nie można zaktualizować nagłówka programu: %s"
-#: src/unstrip.c:2118 src/unstrip.c:2200
+#: src/unstrip.c:2122 src/unstrip.c:2205
#, c-format
msgid "cannot write output file: %s"
msgstr "nie można zapisać pliku wyjściowego: %s"
-#: src/unstrip.c:2169
+#: src/unstrip.c:2173
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
"Dane DWARF nie zostały dostosowane do przesunięcia wczesnego konsolidowania; "
"proszę rozważyć polecenie prelink -u"
-#: src/unstrip.c:2172
+#: src/unstrip.c:2176
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6930,77 +6967,77 @@ msgstr ""
"Dane DWARF w „%s†nie zostały dostosowane do przesunięcia wczesnego "
"konsolidowania; proszę rozważyć polecenie prelink -u"
-#: src/unstrip.c:2191 src/unstrip.c:2242 src/unstrip.c:2254 src/unstrip.c:2340
+#: src/unstrip.c:2196 src/unstrip.c:2247 src/unstrip.c:2259 src/unstrip.c:2345
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr "nie można utworzyć deskryptora ELF: %s"
-#: src/unstrip.c:2233
+#: src/unstrip.c:2238
msgid "WARNING: "
msgstr "OSTRZEŻENIE: "
-#: src/unstrip.c:2235
+#: src/unstrip.c:2240
msgid ", use --force"
msgstr ", należy użyć opcji --force"
-#: src/unstrip.c:2258
+#: src/unstrip.c:2263
msgid "ELF header identification (e_ident) different"
msgstr "Różna identyfikacja nagłówka ELF (e_ident)"
-#: src/unstrip.c:2261
+#: src/unstrip.c:2266
msgid "ELF header type (e_type) different"
msgstr "Różne typy nagłówka ELF (e_type)"
-#: src/unstrip.c:2264
+#: src/unstrip.c:2269
msgid "ELF header machine type (e_machine) different"
msgstr "Różne typy maszyny nagłówka ELF (e_machine)"
-#: src/unstrip.c:2267
+#: src/unstrip.c:2272
msgid "stripped program header (e_phnum) smaller than unstripped"
msgstr "okrojony nagłówek programu (e_phnum) jest mniejszy niż nieokrojony"
-#: src/unstrip.c:2297
+#: src/unstrip.c:2302
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr "nie można odnaleźć okrojonego pliku dla moduÅ‚u „%sâ€: %s"
-#: src/unstrip.c:2301
+#: src/unstrip.c:2306
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr "nie można otworzyć okrojonego pliku „%s†dla moduÅ‚u „%sâ€: %s"
-#: src/unstrip.c:2316
+#: src/unstrip.c:2321
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr "nie można odnaleźć pliku debugowania dla moduÅ‚u „%sâ€: %s"
-#: src/unstrip.c:2320
+#: src/unstrip.c:2325
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr "nie można otworzyć pliku debugowania „%s†dla moduÅ‚u „%sâ€: %s"
-#: src/unstrip.c:2333
+#: src/unstrip.c:2338
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr "moduł „%s†pliku „%s†nie został okrojony"
-#: src/unstrip.c:2364
+#: src/unstrip.c:2369
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
"nie można utworzyć pamiÄ™ci podrÄ™cznej adresów sekcji dla moduÅ‚u „%sâ€: %s"
-#: src/unstrip.c:2497
+#: src/unstrip.c:2501
#, c-format
msgid "no matching modules found"
msgstr "nie odnaleziono pasujących modułów"
-#: src/unstrip.c:2506
+#: src/unstrip.c:2510
#, c-format
msgid "matched more than one module"
msgstr "pasuje więcej niż jeden moduł"
-#: src/unstrip.c:2550
+#: src/unstrip.c:2554
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
@@ -7008,7 +7045,7 @@ msgstr ""
"OKROJONY-PLIK PLIK-DEBUGOWANIA\n"
"[MODUÅ…]"
-#: src/unstrip.c:2551
+#: src/unstrip.c:2555
#, fuzzy
msgid ""
"Combine stripped files with separate symbols and debug information.\n"
@@ -7068,15 +7105,21 @@ msgstr ""
msgid "Run executable"
msgstr "Uruchamia plik wykonywalny"
-#: tests/dwflmodtest.c:213
+#: tests/dwflmodtest.c:209
msgid "Additionally show function names"
msgstr "Dodatkowo wyświetla nazwy funkcji"
-#: tests/dwflmodtest.c:214
+#: tests/dwflmodtest.c:210
msgid "Show instances of inlined functions"
msgstr "Wyświetla wystąpienia wstawionych funkcji"
#, fuzzy
+#~ msgid ""
+#~ " [%6tx] base address\n"
+#~ " "
+#~ msgstr " [%6tx] adres podstawowy %s\n"
+
+#, fuzzy
#~ msgid "%s: error getting zero section: %s"
#~ msgstr "%s: błąd podczas odczytywania pliku: %s"
diff --git a/po/quot.sed b/po/quot.sed
deleted file mode 100644
index 0122c463..00000000
--- a/po/quot.sed
+++ /dev/null
@@ -1,6 +0,0 @@
-s/"\([^"]*\)"/“\1â€/g
-s/`\([^`']*\)'/‘\1’/g
-s/ '\([^`']*\)' / ‘\1’ /g
-s/ '\([^`']*\)'$/ ‘\1’/g
-s/^'\([^`']*\)' /‘\1’ /g
-s/“â€/""/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
deleted file mode 100644
index 2436c49e..00000000
--- a/po/remove-potcdate.sin
+++ /dev/null
@@ -1,19 +0,0 @@
-# Sed script that remove the POT-Creation-Date line in the header entry
-# from a POT file.
-#
-# The distinction between the first and the following occurrences of the
-# pattern is achieved by looking at the hold space.
-/^"POT-Creation-Date: .*"$/{
-x
-# Test if the hold space is empty.
-s/P/P/
-ta
-# Yes it was empty. First occurrence. Remove the line.
-g
-d
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
diff --git a/po/ru.po b/po/ru.po
deleted file mode 100644
index 99505d64..00000000
--- a/po/ru.po
+++ /dev/null
@@ -1,5665 +0,0 @@
-# translation of ru.po to
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ru\n"
-"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2010-04-21 07:41-0700\n"
-"PO-Revision-Date: 2009-11-12 10:27+1100\n"
-"Last-Translator: NAME <EMAIL>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2822
-#: src/readelf.c:3161 src/unstrip.c:2087 src/unstrip.c:2295
-#, c-format
-msgid "memory exhausted"
-msgstr ""
-
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
-msgid "no error"
-msgstr ""
-
-#: libasm/asm_error.c:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
-msgid "out of memory"
-msgstr ""
-
-#: libasm/asm_error.c:64 src/ldgeneric.c:2687
-#, c-format
-msgid "cannot create output file"
-msgstr ""
-
-#: libasm/asm_error.c:65
-msgid "invalid parameter"
-msgstr ""
-
-#: libasm/asm_error.c:66
-msgid "cannot change mode of output file"
-msgstr ""
-
-#: libasm/asm_error.c:67 src/ldgeneric.c:7001
-#, c-format
-msgid "cannot rename output file"
-msgstr ""
-
-#: libasm/asm_error.c:68
-msgid "duplicate symbol"
-msgstr ""
-
-#: libasm/asm_error.c:69
-msgid "invalid section type for operation"
-msgstr ""
-
-#: libasm/asm_error.c:70
-msgid "error during output of data"
-msgstr ""
-
-#: libasm/asm_error.c:71
-msgid "no backend support available"
-msgstr ""
-
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
-msgid "unknown error"
-msgstr ""
-
-#: libdw/dwarf_error.c:81
-msgid "invalid access"
-msgstr ""
-
-#: libdw/dwarf_error.c:82
-msgid "no regular file"
-msgstr ""
-
-#: libdw/dwarf_error.c:83
-msgid "I/O error"
-msgstr ""
-
-#: libdw/dwarf_error.c:84
-msgid "invalid ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:85
-msgid "no DWARF information"
-msgstr ""
-
-#: libdw/dwarf_error.c:86
-msgid "no ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:87
-msgid "cannot get ELF header"
-msgstr ""
-
-#: libdw/dwarf_error.c:89
-msgid "not implemented"
-msgstr ""
-
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
-msgid "invalid command"
-msgstr ""
-
-#: libdw/dwarf_error.c:91
-msgid "invalid version"
-msgstr ""
-
-#: libdw/dwarf_error.c:92
-msgid "invalid file"
-msgstr ""
-
-#: libdw/dwarf_error.c:93
-msgid "no entries found"
-msgstr ""
-
-#: libdw/dwarf_error.c:94
-msgid "invalid DWARF"
-msgstr ""
-
-#: libdw/dwarf_error.c:95
-msgid "no string data"
-msgstr ""
-
-#: libdw/dwarf_error.c:96
-msgid "no address value"
-msgstr ""
-
-#: libdw/dwarf_error.c:97
-msgid "no constant value"
-msgstr ""
-
-#: libdw/dwarf_error.c:98
-msgid "no reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:99
-msgid "invalid reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:100
-msgid ".debug_line section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:101
-msgid "invalid .debug_line section"
-msgstr ""
-
-#: libdw/dwarf_error.c:102
-msgid "debug information too big"
-msgstr ""
-
-#: libdw/dwarf_error.c:103
-msgid "invalid DWARF version"
-msgstr ""
-
-#: libdw/dwarf_error.c:104
-msgid "invalid directory index"
-msgstr ""
-
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
-msgid "address out of range"
-msgstr ""
-
-#: libdw/dwarf_error.c:106
-msgid "no location list value"
-msgstr ""
-
-#: libdw/dwarf_error.c:107
-msgid "no block data"
-msgstr ""
-
-#: libdw/dwarf_error.c:108
-msgid "invalid line index"
-msgstr ""
-
-#: libdw/dwarf_error.c:109
-msgid "invalid address range index"
-msgstr ""
-
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
-msgid "no matching address range"
-msgstr ""
-
-#: libdw/dwarf_error.c:111
-msgid "no flag value"
-msgstr ""
-
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
-msgid "invalid offset"
-msgstr ""
-
-#: libdw/dwarf_error.c:113
-msgid ".debug_ranges section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:114
-msgid "invalid CFI section"
-msgstr ""
-
-#: libdwfl/argp-std.c:67 src/unstrip.c:2237
-msgid "Input selection options:"
-msgstr ""
-
-#: libdwfl/argp-std.c:68
-msgid "Find addresses in FILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:70
-msgid "Find addresses from signatures found in COREFILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:72
-msgid "Find addresses in files mapped into process PID"
-msgstr ""
-
-#: libdwfl/argp-std.c:74
-msgid ""
-"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
-"format"
-msgstr ""
-
-#: libdwfl/argp-std.c:76
-msgid "Find addresses in the running kernel"
-msgstr ""
-
-#: libdwfl/argp-std.c:78
-msgid "Kernel with all modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:80
-msgid "Search path for separate debuginfo files"
-msgstr ""
-
-#: libdwfl/argp-std.c:163
-msgid "only one of -e, -p, -k, -K, or --core allowed"
-msgstr ""
-
-#: libdwfl/argp-std.c:223
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr ""
-
-#: libdwfl/argp-std.c:241
-msgid "No modules recognized in core file"
-msgstr ""
-
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr ""
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr ""
-
-#: libdwfl/libdwflP.h:73
-msgid "See errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:74
-msgid "See elf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:75
-msgid "See dwarf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:76
-msgid "See ebl_errno (XXX missing)"
-msgstr ""
-
-#: libdwfl/libdwflP.h:77
-msgid "gzip decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:78
-msgid "bzip2 decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:79
-msgid "LZMA decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:80
-msgid "no support library found for machine"
-msgstr ""
-
-#: libdwfl/libdwflP.h:81
-msgid "Callbacks missing for ET_REL file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:82
-msgid "Unsupported relocation type"
-msgstr ""
-
-#: libdwfl/libdwflP.h:83
-msgid "r_offset is bogus"
-msgstr ""
-
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
-msgid "offset out of range"
-msgstr ""
-
-#: libdwfl/libdwflP.h:85
-msgid "relocation refers to undefined symbol"
-msgstr ""
-
-#: libdwfl/libdwflP.h:86
-msgid "Callback returned failure"
-msgstr ""
-
-#: libdwfl/libdwflP.h:87
-msgid "No DWARF information found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:88
-msgid "No symbol table found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:89
-msgid "No ELF program headers"
-msgstr ""
-
-#: libdwfl/libdwflP.h:90
-msgid "address range overlaps an existing module"
-msgstr ""
-
-#: libdwfl/libdwflP.h:93
-msgid "image truncated"
-msgstr ""
-
-#: libdwfl/libdwflP.h:94
-msgid "ELF file opened"
-msgstr ""
-
-#: libdwfl/libdwflP.h:95
-msgid "not a valid ELF file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:96
-msgid "cannot handle DWARF type description"
-msgstr ""
-
-#: libebl/eblbackendname.c:63
-msgid "No backend"
-msgstr ""
-
-#: libebl/eblcorenotetypename.c:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:86 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
-msgid "<unknown>"
-msgstr ""
-
-#: libebl/ebldynamictagname.c:126
-#, c-format
-msgid "<unknown>: %#<PRIx64>"
-msgstr ""
-
-#: libebl/eblobjnote.c:76
-#, c-format
-msgid " Build ID: "
-msgstr ""
-
-#: libebl/eblobjnote.c:87
-#, c-format
-msgid " Linker version: %.*s\n"
-msgstr ""
-
-#: libebl/eblobjnote.c:136
-#, c-format
-msgid " OS: %s, ABI: "
-msgstr ""
-
-#: libebl/eblosabiname.c:95
-msgid "Stand alone"
-msgstr ""
-
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
-#, c-format
-msgid "<unknown>: %d"
-msgstr ""
-
-#: libelf/elf_error.c:88
-msgid "unknown version"
-msgstr ""
-
-#: libelf/elf_error.c:92
-msgid "unknown type"
-msgstr ""
-
-#: libelf/elf_error.c:96
-msgid "invalid `Elf' handle"
-msgstr ""
-
-#: libelf/elf_error.c:100
-msgid "invalid size of source operand"
-msgstr ""
-
-#: libelf/elf_error.c:104
-msgid "invalid size of destination operand"
-msgstr ""
-
-#: libelf/elf_error.c:108 src/readelf.c:4779
-#, c-format
-msgid "invalid encoding"
-msgstr ""
-
-#: libelf/elf_error.c:116
-msgid "invalid file descriptor"
-msgstr ""
-
-#: libelf/elf_error.c:120
-msgid "invalid operation"
-msgstr ""
-
-#: libelf/elf_error.c:124
-msgid "ELF version not set"
-msgstr ""
-
-#: libelf/elf_error.c:136
-msgid "invalid fmag field in archive header"
-msgstr ""
-
-#: libelf/elf_error.c:140
-msgid "invalid archive file"
-msgstr ""
-
-#: libelf/elf_error.c:144
-msgid "descriptor is not for an archive"
-msgstr ""
-
-#: libelf/elf_error.c:148
-msgid "no index available"
-msgstr ""
-
-#: libelf/elf_error.c:152
-msgid "cannot read data from file"
-msgstr ""
-
-#: libelf/elf_error.c:156
-msgid "cannot write data to file"
-msgstr ""
-
-#: libelf/elf_error.c:160
-msgid "invalid binary class"
-msgstr ""
-
-#: libelf/elf_error.c:164
-msgid "invalid section index"
-msgstr ""
-
-#: libelf/elf_error.c:168
-msgid "invalid operand"
-msgstr ""
-
-#: libelf/elf_error.c:172
-msgid "invalid section"
-msgstr ""
-
-#: libelf/elf_error.c:180
-msgid "executable header not created first"
-msgstr ""
-
-#: libelf/elf_error.c:184
-msgid "file descriptor disabled"
-msgstr ""
-
-#: libelf/elf_error.c:188
-msgid "archive/member file descriptor mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:196
-msgid "cannot manipulate null section"
-msgstr ""
-
-#: libelf/elf_error.c:200
-msgid "data/scn mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:204
-msgid "invalid section header"
-msgstr ""
-
-#: libelf/elf_error.c:208 src/readelf.c:6242 src/readelf.c:6343
-#, c-format
-msgid "invalid data"
-msgstr ""
-
-#: libelf/elf_error.c:212
-msgid "unknown data encoding"
-msgstr ""
-
-#: libelf/elf_error.c:216
-msgid "section `sh_size' too small for data"
-msgstr ""
-
-#: libelf/elf_error.c:220
-msgid "invalid section alignment"
-msgstr ""
-
-#: libelf/elf_error.c:224
-msgid "invalid section entry size"
-msgstr ""
-
-#: libelf/elf_error.c:228
-msgid "update() for write on read-only file"
-msgstr ""
-
-#: libelf/elf_error.c:232
-msgid "no such file"
-msgstr ""
-
-#: libelf/elf_error.c:236
-msgid "only relocatable files can contain section groups"
-msgstr ""
-
-#: libelf/elf_error.c:241
-msgid ""
-"program header only allowed in executables, shared objects, and core files"
-msgstr ""
-
-#: libelf/elf_error.c:248
-msgid "file has no program header"
-msgstr ""
-
-#: src/addr2line.c:66
-msgid "Output selection options:"
-msgstr ""
-
-#: src/addr2line.c:67
-msgid "Show only base names of source files"
-msgstr ""
-
-#: src/addr2line.c:69
-msgid "Show absolute file names using compilation directory"
-msgstr ""
-
-#: src/addr2line.c:70
-msgid "Also show function names"
-msgstr ""
-
-#: src/addr2line.c:71
-msgid "Also show symbol or section names"
-msgstr ""
-
-#: src/addr2line.c:73
-msgid "Treat addresses as offsets relative to NAME section."
-msgstr ""
-
-#: src/addr2line.c:75 src/elfcmp.c:75 src/findtextrel.c:75 src/nm.c:103
-#: src/strings.c:83
-msgid "Miscellaneous:"
-msgstr ""
-
-#: src/addr2line.c:84
-msgid ""
-"Locate source files and line information for ADDRs (in a.out by default)."
-msgstr ""
-
-#: src/addr2line.c:88
-msgid "[ADDR...]"
-msgstr ""
-
-#: src/addr2line.c:185 src/ar.c:289 src/elfcmp.c:555 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:253 src/objdump.c:181
-#: src/ranlib.c:136 src/readelf.c:449 src/size.c:219 src/strings.c:227
-#: src/strip.c:204 src/unstrip.c:234
-#, c-format
-msgid ""
-"Copyright (C) %s Red Hat, Inc.\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-msgstr ""
-
-#: src/addr2line.c:190 src/ar.c:294 src/elfcmp.c:560 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:258 src/objdump.c:186
-#: src/ranlib.c:141 src/readelf.c:454 src/size.c:224 src/strings.c:232
-#: src/strip.c:209 src/unstrip.c:239
-#, c-format
-msgid "Written by %s.\n"
-msgstr ""
-
-#: src/addr2line.c:405
-#, c-format
-msgid "Section syntax requires exactly one module"
-msgstr ""
-
-#: src/addr2line.c:428
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside section '%s'"
-msgstr ""
-
-#: src/addr2line.c:461
-#, c-format
-msgid "cannot find symbol '%s'"
-msgstr ""
-
-#: src/addr2line.c:466
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
-msgstr ""
-
-#: src/ar.c:76
-msgid "Commands:"
-msgstr ""
-
-#: src/ar.c:77
-msgid "Delete files from archive."
-msgstr ""
-
-#: src/ar.c:78
-msgid "Move files in archive."
-msgstr ""
-
-#: src/ar.c:79
-msgid "Print files in archive."
-msgstr ""
-
-#: src/ar.c:80
-msgid "Quick append files to archive."
-msgstr ""
-
-#: src/ar.c:82
-msgid "Replace existing or insert new file into archive."
-msgstr ""
-
-#: src/ar.c:83
-msgid "Display content of archive."
-msgstr ""
-
-#: src/ar.c:84
-msgid "Extract files from archive."
-msgstr ""
-
-#: src/ar.c:86
-msgid "Command Modifiers:"
-msgstr ""
-
-#: src/ar.c:87
-msgid "Preserve original dates."
-msgstr ""
-
-#: src/ar.c:88
-msgid "Use instance [COUNT] of name."
-msgstr ""
-
-#: src/ar.c:90
-msgid "Do not replace existing files with extracted files."
-msgstr ""
-
-#: src/ar.c:91
-msgid "Allow filename to be truncated if necessary."
-msgstr ""
-
-#: src/ar.c:93
-msgid "Provide verbose output."
-msgstr ""
-
-#: src/ar.c:94
-msgid "Force regeneration of symbol table."
-msgstr ""
-
-#: src/ar.c:95
-msgid "Insert file after [MEMBER]."
-msgstr ""
-
-#: src/ar.c:96
-msgid "Insert file before [MEMBER]."
-msgstr ""
-
-#: src/ar.c:97
-msgid "Same as -b."
-msgstr ""
-
-#: src/ar.c:98
-msgid "Suppress message when library has to be created."
-msgstr ""
-
-#: src/ar.c:100
-msgid "Use full path for file matching."
-msgstr ""
-
-#: src/ar.c:101
-msgid "Update only older files in archive."
-msgstr ""
-
-#: src/ar.c:107
-msgid "Create, modify, and extract from archives."
-msgstr ""
-
-#: src/ar.c:110
-msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
-msgstr ""
-
-#: src/ar.c:192
-#, c-format
-msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
-msgstr ""
-
-#: src/ar.c:197
-#, c-format
-msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
-msgstr ""
-
-#: src/ar.c:213
-#, c-format
-msgid "'N' is only meaningful with the 'x' and 'd' options"
-msgstr ""
-
-#: src/ar.c:218
-#, c-format
-msgid "COUNT parameter required"
-msgstr ""
-
-#: src/ar.c:230
-#, c-format
-msgid "invalid COUNT parameter %s"
-msgstr ""
-
-#: src/ar.c:237
-#, c-format
-msgid "'%c' is only meaningful with the 'x' option"
-msgstr ""
-
-#: src/ar.c:243
-#, c-format
-msgid "archive name required"
-msgstr ""
-
-#: src/ar.c:314
-#, c-format
-msgid "More than one operation specified"
-msgstr ""
-
-#: src/ar.c:404
-#, c-format
-msgid "cannot open archive '%s'"
-msgstr ""
-
-#: src/ar.c:414
-#, c-format
-msgid "cannot open archive '%s': %s"
-msgstr ""
-
-#: src/ar.c:418
-#, c-format
-msgid "%s: not an archive file"
-msgstr ""
-
-#: src/ar.c:422
-#, c-format
-msgid "cannot stat archive '%s'"
-msgstr ""
-
-#: src/ar.c:434
-#, c-format
-msgid "no entry %s in archive\n"
-msgstr ""
-
-#: src/ar.c:487 src/ar.c:929 src/ar.c:1129
-#, c-format
-msgid "cannot create hash table"
-msgstr ""
-
-#: src/ar.c:494 src/ar.c:936 src/ar.c:1138
-#, c-format
-msgid "cannot insert into hash table"
-msgstr ""
-
-#: src/ar.c:502 src/ranlib.c:176
-#, c-format
-msgid "cannot stat '%s'"
-msgstr ""
-
-#: src/ar.c:598
-#, c-format
-msgid "cannot read content of %s: %s"
-msgstr ""
-
-#: src/ar.c:641
-#, c-format
-msgid "cannot open %.*s"
-msgstr ""
-
-#: src/ar.c:663
-#, c-format
-msgid "failed to write %s"
-msgstr ""
-
-#: src/ar.c:675
-#, c-format
-msgid "cannot change mode of %s"
-msgstr ""
-
-#: src/ar.c:691
-#, c-format
-msgid "cannot change modification time of %s"
-msgstr ""
-
-#: src/ar.c:737
-#, c-format
-msgid "cannot rename temporary file to %.*s"
-msgstr ""
-
-#: src/ar.c:773 src/ar.c:1021 src/ar.c:1419 src/ranlib.c:250
-#, c-format
-msgid "cannot create new file"
-msgstr ""
-
-#: src/ar.c:1220
-#, c-format
-msgid "position member %s not found"
-msgstr ""
-
-#: src/ar.c:1230
-#, c-format
-msgid "%s: no entry %s in archive!\n"
-msgstr ""
-
-#: src/ar.c:1259 src/ldgeneric.c:519 src/objdump.c:257
-#, c-format
-msgid "cannot open %s"
-msgstr ""
-
-#: src/ar.c:1264
-#, c-format
-msgid "cannot stat %s"
-msgstr ""
-
-#: src/ar.c:1270
-#, c-format
-msgid "%s is no regular file"
-msgstr ""
-
-#: src/ar.c:1283
-#, c-format
-msgid "cannot get ELF descriptor for %s: %s\n"
-msgstr ""
-
-#: src/ar.c:1302
-#, c-format
-msgid "cannot read %s: %s"
-msgstr ""
-
-#: src/arlib.c:215
-#, c-format
-msgid "the archive '%s' is too large"
-msgstr ""
-
-#: src/arlib.c:228
-#, c-format
-msgid "cannot read ELF header of %s(%s): %s"
-msgstr ""
-
-#: src/elfcmp.c:69
-msgid "Control options:"
-msgstr ""
-
-#: src/elfcmp.c:70
-msgid ""
-"Control treatment of gaps in loadable segments [ignore|match] (default: "
-"ignore)"
-msgstr ""
-
-#: src/elfcmp.c:72
-msgid "Ignore permutation of buckets in SHT_HASH section"
-msgstr ""
-
-#: src/elfcmp.c:73
-msgid "Output nothing; yield exit status only"
-msgstr ""
-
-#: src/elfcmp.c:80
-msgid "Compare relevant parts of two ELF files for equality."
-msgstr ""
-
-#: src/elfcmp.c:84
-msgid "FILE1 FILE2"
-msgstr ""
-
-#: src/elfcmp.c:140
-msgid "Invalid number of parameters.\n"
-msgstr ""
-
-#: src/elfcmp.c:168 src/elfcmp.c:173
-#, c-format
-msgid "cannot get ELF header of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:190
-#, c-format
-msgid "%s %s diff: ELF header"
-msgstr ""
-
-#: src/elfcmp.c:198 src/elfcmp.c:201
-#, c-format
-msgid "cannot get section count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:206
-#, c-format
-msgid "%s %s diff: section count"
-msgstr ""
-
-#: src/elfcmp.c:214 src/elfcmp.c:217
-#, c-format
-msgid "cannot get program header count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:222
-#, c-format
-msgid "%s %s diff: program header count"
-msgstr ""
-
-#: src/elfcmp.c:281
-#, c-format
-msgid "%s %s differ: section header"
-msgstr ""
-
-#: src/elfcmp.c:309 src/elfcmp.c:315
-#, c-format
-msgid "cannot get content of section %zu in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:331 src/elfcmp.c:337
-#, c-format
-msgid "cannot get symbol in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:358
-#, c-format
-msgid "%s %s differ: symbol table [%zu]"
-msgstr ""
-
-#: src/elfcmp.c:361
-#, c-format
-msgid "%s %s differ: symbol table [%zu,%zu]"
-msgstr ""
-
-#: src/elfcmp.c:409
-#, c-format
-msgid "%s %s differ: section [%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:413
-#, c-format
-msgid "%s %s differ: section [%zu,%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:429
-#, c-format
-msgid "%s %s differ: unequal amount of important sections"
-msgstr ""
-
-#: src/elfcmp.c:463 src/elfcmp.c:468
-#, c-format
-msgid "cannot load data of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:487 src/elfcmp.c:493
-#, c-format
-msgid "cannot get program header entry %d of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:499
-#, c-format
-msgid "%s %s differ: program header %d"
-msgstr ""
-
-#: src/elfcmp.c:524
-#, c-format
-msgid "%s %s differ: gap"
-msgstr ""
-
-#: src/elfcmp.c:583
-#, c-format
-msgid "Invalid value '%s' for --gaps parameter."
-msgstr ""
-
-#: src/elfcmp.c:607 src/findtextrel.c:229 src/ldgeneric.c:1767
-#: src/ldgeneric.c:4257 src/nm.c:363 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:433 src/strip.c:468 src/unstrip.c:1900
-#: src/unstrip.c:1929
-#, c-format
-msgid "cannot open '%s'"
-msgstr ""
-
-#: src/elfcmp.c:611 src/findtextrel.c:236 src/ranlib.c:186
-#, c-format
-msgid "cannot create ELF descriptor for '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:616
-#, c-format
-msgid "cannot create EBL descriptor for '%s'"
-msgstr ""
-
-#: src/elfcmp.c:634
-#, c-format
-msgid "cannot get section header of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:644
-#, c-format
-msgid "cannot get content of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:654 src/elfcmp.c:668
-#, c-format
-msgid "cannot get relocation: %s"
-msgstr ""
-
-#: src/elflint.c:72
-msgid "Be extremely strict, flag level 2 features."
-msgstr ""
-
-#: src/elflint.c:73
-msgid "Do not print anything if successful"
-msgstr ""
-
-#: src/elflint.c:74
-msgid "Binary is a separate debuginfo file"
-msgstr ""
-
-#: src/elflint.c:76
-msgid ""
-"Binary has been created with GNU ld and is therefore known to be broken in "
-"certain ways"
-msgstr ""
-
-#: src/elflint.c:82
-msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
-msgstr ""
-
-#: src/elflint.c:86 src/readelf.c:118
-msgid "FILE..."
-msgstr ""
-
-#: src/elflint.c:159 src/readelf.c:272
-#, c-format
-msgid "cannot open input file"
-msgstr ""
-
-#: src/elflint.c:166
-#, c-format
-msgid "cannot generate Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:185
-#, c-format
-msgid "error while closing Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:189
-msgid "No errors"
-msgstr ""
-
-#: src/elflint.c:223 src/readelf.c:425
-msgid "Missing file name.\n"
-msgstr ""
-
-#: src/elflint.c:302
-#, c-format
-msgid " error while freeing sub-ELF descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:310
-#, c-format
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr ""
-
-#: src/elflint.c:370
-#, c-format
-msgid "e_ident[%d] == %d is no known class\n"
-msgstr ""
-
-#: src/elflint.c:375
-#, c-format
-msgid "e_ident[%d] == %d is no known data encoding\n"
-msgstr ""
-
-#: src/elflint.c:379
-#, c-format
-msgid "unknown ELF header version number e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:385
-#, c-format
-msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
-msgstr ""
-
-#: src/elflint.c:391
-#, c-format
-msgid "unsupport ABI version e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:396
-#, c-format
-msgid "e_ident[%zu] is not zero\n"
-msgstr ""
-
-#: src/elflint.c:401
-#, c-format
-msgid "unknown object file type %d\n"
-msgstr ""
-
-#: src/elflint.c:408
-#, c-format
-msgid "unknown machine type %d\n"
-msgstr ""
-
-#: src/elflint.c:412
-#, c-format
-msgid "unknown object file version\n"
-msgstr ""
-
-#: src/elflint.c:418
-#, c-format
-msgid "invalid program header offset\n"
-msgstr ""
-
-#: src/elflint.c:420
-#, c-format
-msgid "executables and DSOs cannot have zero program header offset\n"
-msgstr ""
-
-#: src/elflint.c:424
-#, c-format
-msgid "invalid number of program header entries\n"
-msgstr ""
-
-#: src/elflint.c:432
-#, c-format
-msgid "invalid section header table offset\n"
-msgstr ""
-
-#: src/elflint.c:435
-#, c-format
-msgid "section header table must be present\n"
-msgstr ""
-
-#: src/elflint.c:449
-#, c-format
-msgid "invalid number of section header table entries\n"
-msgstr ""
-
-#: src/elflint.c:466
-#, c-format
-msgid "invalid section header index\n"
-msgstr ""
-
-#: src/elflint.c:480
-#, c-format
-msgid "invalid number of program header table entries\n"
-msgstr ""
-
-#: src/elflint.c:489
-#, c-format
-msgid "invalid machine flags: %s\n"
-msgstr ""
-
-#: src/elflint.c:496 src/elflint.c:513
-#, c-format
-msgid "invalid ELF header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:499 src/elflint.c:516
-#, c-format
-msgid "invalid program header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:502 src/elflint.c:519
-#, c-format
-msgid "invalid program header position or size\n"
-msgstr ""
-
-#: src/elflint.c:505 src/elflint.c:522
-#, c-format
-msgid "invalid section header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:508 src/elflint.c:525
-#, c-format
-msgid "invalid section header position or size\n"
-msgstr ""
-
-#: src/elflint.c:569
-#, c-format
-msgid ""
-"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
-"group\n"
-msgstr ""
-
-#: src/elflint.c:573
-#, c-format
-msgid ""
-"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
-msgstr ""
-
-#: src/elflint.c:589 src/elflint.c:1432 src/elflint.c:1482 src/elflint.c:1591
-#: src/elflint.c:2185 src/elflint.c:2699 src/elflint.c:2860 src/elflint.c:2990
-#: src/elflint.c:3162 src/elflint.c:4062
-#, c-format
-msgid "section [%2d] '%s': cannot get section data\n"
-msgstr ""
-
-#: src/elflint.c:602 src/elflint.c:1598
-#, c-format
-msgid ""
-"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
-"type is not SHT_STRTAB\n"
-msgstr ""
-
-#: src/elflint.c:625
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol table cannot have more than one extended index "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:636
-#, c-format
-msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
-msgstr ""
-
-#: src/elflint.c:645
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
-#, c-format
-msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:668
-#, c-format
-msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:678
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:687
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
-msgstr ""
-
-#: src/elflint.c:700
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
-"section index section\n"
-msgstr ""
-
-#: src/elflint.c:706
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
-msgstr ""
-
-#: src/elflint.c:718
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
-msgstr ""
-
-#: src/elflint.c:726
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
-msgstr ""
-
-#: src/elflint.c:732
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
-msgstr ""
-
-#: src/elflint.c:737
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
-msgstr ""
-
-#: src/elflint.c:745
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
-msgstr ""
-
-#: src/elflint.c:749
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
-msgstr ""
-
-#: src/elflint.c:753
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
-msgstr ""
-
-#: src/elflint.c:785
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:791 src/elflint.c:816 src/elflint.c:859
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:800
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
-msgstr ""
-
-#: src/elflint.c:810 src/elflint.c:852
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:837
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
-msgstr ""
-
-#: src/elflint.c:845
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:872
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:879
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:886
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
-msgstr ""
-
-#: src/elflint.c:936
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section [%"
-"2d]\n"
-msgstr ""
-
-#: src/elflint.c:943
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:959
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
-"match %s section address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:966
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
-"match %s section size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:974
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:990
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
-"segment address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:997
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
-"segment size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:1010
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
-"default visibility\n"
-msgstr ""
-
-#: src/elflint.c:1014
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
-msgstr ""
-
-#: src/elflint.c:1059
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
-msgstr ""
-
-#: src/elflint.c:1068 src/elflint.c:1120
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
-msgstr ""
-
-#: src/elflint.c:1093 src/elflint.c:1145
-#, c-format
-msgid ""
-"section [%2d] '%s': relative relocations after index %d as specified by "
-"DT_RELCOUNT\n"
-msgstr ""
-
-#: src/elflint.c:1099 src/elflint.c:1151
-#, c-format
-msgid ""
-"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
-"specified %d relative relocations\n"
-msgstr ""
-
-#: src/elflint.c:1111
-#, c-format
-msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
-msgstr ""
-
-#: src/elflint.c:1193
-#, c-format
-msgid "section [%2d] '%s': invalid destination section index\n"
-msgstr ""
-
-#: src/elflint.c:1206
-#, c-format
-msgid "section [%2d] '%s': invalid destination section type\n"
-msgstr ""
-
-#: src/elflint.c:1214
-#, c-format
-msgid "section [%2d] '%s': sh_info should be zero\n"
-msgstr ""
-
-#: src/elflint.c:1221
-#, c-format
-msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
-msgstr ""
-
-#: src/elflint.c:1228
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-
-#: src/elflint.c:1288
-#, c-format
-msgid "text relocation flag set but there is no read-only segment\n"
-msgstr ""
-
-#: src/elflint.c:1315
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid type\n"
-msgstr ""
-
-#: src/elflint.c:1323
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
-"type\n"
-msgstr ""
-
-#: src/elflint.c:1331
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
-msgstr ""
-
-#: src/elflint.c:1349
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
-"be used with %s\n"
-msgstr ""
-
-#: src/elflint.c:1366
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1381
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: copy relocation against symbol of type %"
-"s\n"
-msgstr ""
-
-#: src/elflint.c:1402
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: read-only section modified but text "
-"relocation flag not set\n"
-msgstr ""
-
-#: src/elflint.c:1417
-#, c-format
-msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
-msgstr ""
-
-#: src/elflint.c:1456 src/elflint.c:1506
-#, c-format
-msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1586
-#, c-format
-msgid "more than one dynamic section present\n"
-msgstr ""
-
-#: src/elflint.c:1604
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
-msgstr ""
-
-#: src/elflint.c:1609 src/elflint.c:1901
-#, c-format
-msgid "section [%2d] '%s': sh_info not zero\n"
-msgstr ""
-
-#: src/elflint.c:1619
-#, c-format
-msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1627
-#, c-format
-msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
-msgstr ""
-
-#: src/elflint.c:1634
-#, c-format
-msgid "section [%2d] '%s': entry %zu: unknown tag\n"
-msgstr ""
-
-#: src/elflint.c:1645
-#, c-format
-msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
-msgstr ""
-
-#: src/elflint.c:1655
-#, c-format
-msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
-msgstr ""
-
-#: src/elflint.c:1673
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
-msgstr ""
-
-#: src/elflint.c:1695
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: pointer does not match address of section [%"
-"2d] '%s' referenced by sh_link\n"
-msgstr ""
-
-#: src/elflint.c:1738
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:1753
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must be valid offset in section [%"
-"2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:1773 src/elflint.c:1801
-#, c-format
-msgid "section [%2d] '%s': contains %s entry but not %s\n"
-msgstr ""
-
-#: src/elflint.c:1785
-#, c-format
-msgid "section [%2d] '%s': mandatory tag %s not present\n"
-msgstr ""
-
-#: src/elflint.c:1794
-#, c-format
-msgid "section [%2d] '%s': no hash section present\n"
-msgstr ""
-
-#: src/elflint.c:1809 src/elflint.c:1816
-#, c-format
-msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
-msgstr ""
-
-#: src/elflint.c:1826 src/elflint.c:1830
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
-msgstr ""
-
-#: src/elflint.c:1836
-#, c-format
-msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
-msgstr ""
-
-#: src/elflint.c:1847 src/elflint.c:1851 src/elflint.c:1855 src/elflint.c:1859
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
-msgstr ""
-
-#: src/elflint.c:1871
-#, c-format
-msgid ""
-"section [%2d] '%s': only relocatable files can have extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1881
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index section not for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1886
-#, c-format
-msgid "cannot get data for symbol section\n"
-msgstr ""
-
-#: src/elflint.c:1889
-#, c-format
-msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
-msgstr ""
-
-#: src/elflint.c:1896
-#, c-format
-msgid "section [%2d] '%s': extended index table too small for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1911
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
-"same symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1922
-#, c-format
-msgid "symbol 0 should have zero extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1934
-#, c-format
-msgid "cannot get data for symbol %zu\n"
-msgstr ""
-
-#: src/elflint.c:1939
-#, c-format
-msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
-msgstr ""
-
-#: src/elflint.c:1955 src/elflint.c:1996
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
-msgstr ""
-
-#: src/elflint.c:1967 src/elflint.c:2008
-#, c-format
-msgid "section [%2d] '%s': chain array too large\n"
-msgstr ""
-
-#: src/elflint.c:1976 src/elflint.c:2017
-#, c-format
-msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1982
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2023
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2038
-#, c-format
-msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
-msgstr ""
-
-#: src/elflint.c:2049
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
-msgstr ""
-
-#: src/elflint.c:2057
-#, c-format
-msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
-msgstr ""
-
-#: src/elflint.c:2089
-#, c-format
-msgid ""
-"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
-msgstr ""
-
-#: src/elflint.c:2110
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
-"undefined\n"
-msgstr ""
-
-#: src/elflint.c:2121
-#, c-format
-msgid ""
-"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
-msgstr ""
-
-#: src/elflint.c:2152
-#, c-format
-msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2157
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2163
-#, c-format
-msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
-msgstr ""
-
-#: src/elflint.c:2176
-#, c-format
-msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
-msgstr ""
-
-#: src/elflint.c:2194
-#, c-format
-msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2202
-#, c-format
-msgid "section [%2d] '%s': hash table entry size incorrect\n"
-msgstr ""
-
-#: src/elflint.c:2207
-#, c-format
-msgid "section [%2d] '%s': not marked to be allocated\n"
-msgstr ""
-
-#: src/elflint.c:2212
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table has not even room for initial administrative "
-"entries\n"
-msgstr ""
-
-#: src/elflint.c:2260
-#, c-format
-msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
-msgstr ""
-
-#: src/elflint.c:2338 src/elflint.c:2342
-#, c-format
-msgid "section [%2zu] '%s': reference to symbol index 0\n"
-msgstr ""
-
-#: src/elflint.c:2349
-#, c-format
-msgid ""
-"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2361
-#, c-format
-msgid ""
-"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2377
-#, c-format
-msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
-msgstr ""
-
-#: src/elflint.c:2397
-#, c-format
-msgid ""
-"section [%2d] '%s': section groups only allowed in relocatable object files\n"
-msgstr ""
-
-#: src/elflint.c:2408
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol table: %s\n"
-msgstr ""
-
-#: src/elflint.c:2413
-#, c-format
-msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2419
-#, c-format
-msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
-msgstr ""
-
-#: src/elflint.c:2424
-#, c-format
-msgid "section [%2d] '%s': sh_flags not zero\n"
-msgstr ""
-
-#: src/elflint.c:2431
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol for signature\n"
-msgstr ""
-
-#: src/elflint.c:2436
-#, c-format
-msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
-msgstr ""
-
-#: src/elflint.c:2442
-#, c-format
-msgid "section [%2d] '%s': sh_flags not set correctly\n"
-msgstr ""
-
-#: src/elflint.c:2448
-#, c-format
-msgid "section [%2d] '%s': cannot get data: %s\n"
-msgstr ""
-
-#: src/elflint.c:2457
-#, c-format
-msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
-msgstr ""
-
-#: src/elflint.c:2462
-#, c-format
-msgid "section [%2d] '%s': section group without flags word\n"
-msgstr ""
-
-#: src/elflint.c:2468
-#, c-format
-msgid "section [%2d] '%s': section group without member\n"
-msgstr ""
-
-#: src/elflint.c:2472
-#, c-format
-msgid "section [%2d] '%s': section group with only one member\n"
-msgstr ""
-
-#: src/elflint.c:2483
-#, c-format
-msgid "section [%2d] '%s': unknown section group flags\n"
-msgstr ""
-
-#: src/elflint.c:2495
-#, c-format
-msgid "section [%2d] '%s': section index %Zu out of range\n"
-msgstr ""
-
-#: src/elflint.c:2504
-#, c-format
-msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:2511
-#, c-format
-msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2517
-#, c-format
-msgid ""
-"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
-"SHF_GROUP flag set\n"
-msgstr ""
-
-#: src/elflint.c:2524
-#, c-format
-msgid "section [%2d] '%s' is contained in more than one section group\n"
-msgstr ""
-
-#: src/elflint.c:2713
-#, c-format
-msgid ""
-"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
-"dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2724
-#, c-format
-msgid ""
-"section [%2d] '%s' has different number of entries than symbol table [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:2740
-#, c-format
-msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
-msgstr ""
-
-#: src/elflint.c:2756
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
-msgstr ""
-
-#: src/elflint.c:2764
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
-msgstr ""
-
-#: src/elflint.c:2778
-#, c-format
-msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
-msgstr ""
-
-#: src/elflint.c:2783
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
-msgstr ""
-
-#: src/elflint.c:2793
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
-msgstr ""
-
-#: src/elflint.c:2845
-#, c-format
-msgid "more than one version reference section present\n"
-msgstr ""
-
-#: src/elflint.c:2853 src/elflint.c:2982
-#, c-format
-msgid "section [%2d] '%s': sh_link does not link to string table\n"
-msgstr ""
-
-#: src/elflint.c:2876 src/elflint.c:3034
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong version %d\n"
-msgstr ""
-
-#: src/elflint.c:2882 src/elflint.c:3040
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:2890
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid file reference\n"
-msgstr ""
-
-#: src/elflint.c:2898
-#, c-format
-msgid "section [%2d] '%s': entry %d references unknown dependency\n"
-msgstr ""
-
-#: src/elflint.c:2910
-#, c-format
-msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:2917
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
-"reference\n"
-msgstr ""
-
-#: src/elflint.c:2924
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: %"
-"#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:2934
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
-"name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2945
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
-msgstr ""
-
-#: src/elflint.c:2961 src/elflint.c:3119
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
-msgstr ""
-
-#: src/elflint.c:2974
-#, c-format
-msgid "more than one version definition section present\n"
-msgstr ""
-
-#: src/elflint.c:3019
-#, c-format
-msgid "section [%2d] '%s': more than one BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3023
-#, c-format
-msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
-msgstr ""
-
-#: src/elflint.c:3029
-#, c-format
-msgid "section [%2d] '%s': entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:3053
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid name reference\n"
-msgstr ""
-
-#: src/elflint.c:3060
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:3069
-#, c-format
-msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3088
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3103
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3125
-#, c-format
-msgid "section [%2d] '%s': no BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3141
-#, c-format
-msgid "section [%2d] '%s': unknown parent version '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3154
-#, c-format
-msgid "section [%2d] '%s': empty object attributes section\n"
-msgstr ""
-
-#: src/elflint.c:3175
-#, c-format
-msgid "section [%2d] '%s': unrecognized attribute format\n"
-msgstr ""
-
-#: src/elflint.c:3191
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3200
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3212
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
-#: src/elflint.c:3229
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-msgstr ""
-
-#: src/elflint.c:3238
-#, c-format
-msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3247
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3260
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3271
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3289
-#, c-format
-msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
-msgstr ""
-
-#: src/elflint.c:3300
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
-msgstr ""
-
-#: src/elflint.c:3313
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3317
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3327
-#, c-format
-msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
-msgstr ""
-
-#: src/elflint.c:3333
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3422
-#, c-format
-msgid "cannot get section header of zeroth section\n"
-msgstr ""
-
-#: src/elflint.c:3426
-#, c-format
-msgid "zeroth section has nonzero name\n"
-msgstr ""
-
-#: src/elflint.c:3428
-#, c-format
-msgid "zeroth section has nonzero type\n"
-msgstr ""
-
-#: src/elflint.c:3430
-#, c-format
-msgid "zeroth section has nonzero flags\n"
-msgstr ""
-
-#: src/elflint.c:3432
-#, c-format
-msgid "zeroth section has nonzero address\n"
-msgstr ""
-
-#: src/elflint.c:3434
-#, c-format
-msgid "zeroth section has nonzero offset\n"
-msgstr ""
-
-#: src/elflint.c:3436
-#, c-format
-msgid "zeroth section has nonzero align value\n"
-msgstr ""
-
-#: src/elflint.c:3438
-#, c-format
-msgid "zeroth section has nonzero entry size value\n"
-msgstr ""
-
-#: src/elflint.c:3441
-#, c-format
-msgid ""
-"zeroth section has nonzero size value while ELF header has nonzero shnum "
-"value\n"
-msgstr ""
-
-#: src/elflint.c:3445
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in shstrndx\n"
-msgstr ""
-
-#: src/elflint.c:3449
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in phnum\n"
-msgstr ""
-
-#: src/elflint.c:3466
-#, c-format
-msgid "cannot get section header for section [%2zu] '%s': %s\n"
-msgstr ""
-
-#: src/elflint.c:3475
-#, c-format
-msgid "section [%2zu]: invalid name\n"
-msgstr ""
-
-#: src/elflint.c:3502
-#, c-format
-msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3518
-#, c-format
-msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3535
-#, c-format
-msgid ""
-"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3553
-#, c-format
-msgid "section [%2zu] '%s' present in object file\n"
-msgstr ""
-
-#: src/elflint.c:3559 src/elflint.c:3591
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
-msgstr ""
-
-#: src/elflint.c:3564 src/elflint.c:3596
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
-"segments\n"
-msgstr ""
-
-#: src/elflint.c:3572
-#, c-format
-msgid ""
-"section [%2zu] '%s' is extension section index table in non-object file\n"
-msgstr ""
-
-#: src/elflint.c:3615
-#, c-format
-msgid "section [%2zu] '%s': size not multiple of entry size\n"
-msgstr ""
-
-#: src/elflint.c:3620
-#, c-format
-msgid "cannot get section header\n"
-msgstr ""
-
-#: src/elflint.c:3630
-#, c-format
-msgid "section [%2zu] '%s' has unsupported type %d\n"
-msgstr ""
-
-#: src/elflint.c:3644
-#, c-format
-msgid ""
-"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3651
-#, c-format
-msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3659
-#, c-format
-msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
-msgstr ""
-
-#: src/elflint.c:3667
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in link value\n"
-msgstr ""
-
-#: src/elflint.c:3672
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in info value\n"
-msgstr ""
-
-#: src/elflint.c:3679
-#, c-format
-msgid "section [%2zu] '%s': strings flag set without merge flag\n"
-msgstr ""
-
-#: src/elflint.c:3684
-#, c-format
-msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
-msgstr ""
-
-#: src/elflint.c:3702
-#, c-format
-msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
-msgstr ""
-
-#: src/elflint.c:3711
-#, c-format
-msgid "section [%2zu] '%s' is both executable and writable\n"
-msgstr ""
-
-#: src/elflint.c:3738
-#, c-format
-msgid ""
-"section [%2zu] '%s' not fully contained in segment of program header entry %"
-"d\n"
-msgstr ""
-
-#: src/elflint.c:3746
-#, c-format
-msgid ""
-"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
-"program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3755
-#, c-format
-msgid ""
-"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
-"segment of program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3766
-#, c-format
-msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3776
-#, c-format
-msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3786
-#, c-format
-msgid ""
-"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:3792
-#, c-format
-msgid ""
-"section [%2zu] '%s': ELF header says this is the section header string table "
-"but type is not SHT_TYPE\n"
-msgstr ""
-
-#: src/elflint.c:3800
-#, c-format
-msgid ""
-"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
-msgstr ""
-
-#: src/elflint.c:3851
-#, c-format
-msgid "more than one version symbol table present\n"
-msgstr ""
-
-#: src/elflint.c:3874
-#, c-format
-msgid "INTERP program header entry but no .interp section\n"
-msgstr ""
-
-#: src/elflint.c:3885
-#, c-format
-msgid ""
-"loadable segment [%u] is executable but contains no executable sections\n"
-msgstr ""
-
-#: src/elflint.c:3891
-#, c-format
-msgid "loadable segment [%u] is writable but contains no writable sections\n"
-msgstr ""
-
-#: src/elflint.c:3902
-#, c-format
-msgid ""
-"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
-"exist\n"
-msgstr ""
-
-#: src/elflint.c:3915
-#, c-format
-msgid "duplicate version index %d\n"
-msgstr ""
-
-#: src/elflint.c:3929
-#, c-format
-msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
-msgstr ""
-
-#: src/elflint.c:3978
-#, c-format
-msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3982
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4005
-#, c-format
-msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4009
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4026
-#, c-format
-msgid "phdr[%d]: no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4045
-#, c-format
-msgid "phdr[%d]: cannot get content of note section: %s\n"
-msgstr ""
-
-#: src/elflint.c:4048
-#, c-format
-msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4069
-#, c-format
-msgid "section [%2d] '%s': no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4076
-#, c-format
-msgid "section [%2d] '%s': cannot get content of note section\n"
-msgstr ""
-
-#: src/elflint.c:4079
-#, c-format
-msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4097
-#, c-format
-msgid ""
-"only executables, shared objects, and core files can have program headers\n"
-msgstr ""
-
-#: src/elflint.c:4112
-#, c-format
-msgid "cannot get program header entry %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:4121
-#, c-format
-msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:4132
-#, c-format
-msgid "more than one INTERP entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4140
-#, c-format
-msgid "more than one TLS entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4147
-#, c-format
-msgid "static executable cannot have dynamic sections\n"
-msgstr ""
-
-#: src/elflint.c:4161
-#, c-format
-msgid "dynamic section reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4164
-#, c-format
-msgid "dynamic section size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4174
-#, c-format
-msgid "more than one GNU_RELRO entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4195
-#, c-format
-msgid "loadable segment GNU_RELRO applies to is not writable\n"
-msgstr ""
-
-#: src/elflint.c:4198
-#, c-format
-msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
-msgstr ""
-
-#: src/elflint.c:4206 src/elflint.c:4229
-#, c-format
-msgid "%s segment not contained in a loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:4235
-#, c-format
-msgid "program header offset in ELF header and PHDR entry do not match"
-msgstr ""
-
-#: src/elflint.c:4259
-#, c-format
-msgid "call frame search table reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4262
-#, c-format
-msgid "call frame search table size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4275
-#, c-format
-msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
-msgstr ""
-
-#: src/elflint.c:4283
-#, c-format
-msgid "call frame search table must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4286
-#, c-format
-msgid "section [%2zu] '%s' must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4290
-#, c-format
-msgid "call frame search table must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4293
-#, c-format
-msgid "section [%2zu] '%s' must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4298
-#, c-format
-msgid "call frame search table must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4301
-#, c-format
-msgid "section [%2zu] '%s' must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4312
-#, c-format
-msgid "program header entry %d: file size greater than memory size\n"
-msgstr ""
-
-#: src/elflint.c:4319
-#, c-format
-msgid "program header entry %d: alignment not a power of 2\n"
-msgstr ""
-
-#: src/elflint.c:4322
-#, c-format
-msgid ""
-"program header entry %d: file offset and virtual address not module of "
-"alignment\n"
-msgstr ""
-
-#: src/elflint.c:4335
-#, c-format
-msgid ""
-"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
-"program header entry"
-msgstr ""
-
-#: src/elflint.c:4369
-#, c-format
-msgid "cannot read ELF header: %s\n"
-msgstr ""
-
-#: src/elflint.c:4395
-#, c-format
-msgid "text relocation flag set but not needed\n"
-msgstr ""
-
-#: src/findtextrel.c:70
-msgid "Input Selection:"
-msgstr ""
-
-#: src/findtextrel.c:71
-msgid "Prepend PATH to all file names"
-msgstr ""
-
-#: src/findtextrel.c:73
-msgid "Use PATH as root of debuginfo hierarchy"
-msgstr ""
-
-#: src/findtextrel.c:80
-msgid "Locate source of text relocations in FILEs (a.out by default)."
-msgstr ""
-
-#: src/findtextrel.c:84 src/nm.c:111 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:97
-msgid "[FILE...]"
-msgstr ""
-
-#: src/findtextrel.c:246
-#, c-format
-msgid "cannot get ELF header '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:257
-#, c-format
-msgid "'%s' is not a DSO or PIE"
-msgstr ""
-
-#: src/findtextrel.c:274
-#, c-format
-msgid "getting get section header of section %zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:292
-#, c-format
-msgid "cannot read dynamic section: %s"
-msgstr ""
-
-#: src/findtextrel.c:307
-#, c-format
-msgid "no text relocations reported in '%s'"
-msgstr ""
-
-#: src/findtextrel.c:319
-#, c-format
-msgid "while reading ELF file"
-msgstr ""
-
-#: src/findtextrel.c:328 src/findtextrel.c:345
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr ""
-
-#: src/findtextrel.c:397
-#, c-format
-msgid "cannot get section header of section %Zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:409
-#, c-format
-msgid "cannot get symbol table section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:429 src/findtextrel.c:452
-#, c-format
-msgid "cannot get relocation at index %d in section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:517
-#, c-format
-msgid "%s not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:570
-#, c-format
-msgid ""
-"the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:577 src/findtextrel.c:597
-#, c-format
-msgid ""
-"the file containing the function '%s' might not be compiled with -fpic/-"
-"fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:585
-#, c-format
-msgid ""
-"either the file containing the function '%s' or the file containing the "
-"function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:605
-#, c-format
-msgid ""
-"a relocation modifies memory at offset %llu in a write-protected segment\n"
-msgstr ""
-
-#: src/i386_ld.c:210
-#, c-format
-msgid "cannot allocate PLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:232
-#, c-format
-msgid "cannot allocate PLTREL section: %s"
-msgstr ""
-
-#: src/i386_ld.c:253
-#, c-format
-msgid "cannot allocate GOT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:274
-#, c-format
-msgid "cannot allocate GOTPLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:661
-#, c-format
-msgid "initial-executable TLS relocation cannot be used "
-msgstr ""
-
-#: src/ld.c:87
-msgid "Input File Control:"
-msgstr ""
-
-#: src/ld.c:89
-msgid "Include whole archives in the output from now on."
-msgstr ""
-
-#: src/ld.c:91
-msgid "Stop including the whole archives in the output."
-msgstr ""
-
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
-msgid "FILE"
-msgstr ""
-
-#: src/ld.c:93
-msgid "Start a group."
-msgstr ""
-
-#: src/ld.c:94
-msgid "End a group."
-msgstr ""
-
-#: src/ld.c:95
-msgid "PATH"
-msgstr ""
-
-#: src/ld.c:96
-msgid "Add PATH to list of directories files are searched in."
-msgstr ""
-
-#: src/ld.c:98
-msgid "Only set DT_NEEDED for following dynamic libs if actually used"
-msgstr ""
-
-#: src/ld.c:100
-msgid "Always set DT_NEEDED for following dynamic libs"
-msgstr ""
-
-#: src/ld.c:102
-msgid "Ignore LD_LIBRARY_PATH environment variable."
-msgstr ""
-
-#: src/ld.c:105
-msgid "Output File Control:"
-msgstr ""
-
-#: src/ld.c:106
-msgid "Place output in FILE."
-msgstr ""
-
-#: src/ld.c:109
-msgid "Object is marked to not use default search path at runtime."
-msgstr ""
-
-#: src/ld.c:111
-msgid "Same as --whole-archive."
-msgstr ""
-
-#: src/ld.c:112
-msgid ""
-"Default rules of extracting from archive; weak references are not enough."
-msgstr ""
-
-#: src/ld.c:116
-msgid "Weak references cause extraction from archive."
-msgstr ""
-
-#: src/ld.c:118
-msgid "Allow multiple definitions; first is used."
-msgstr ""
-
-#: src/ld.c:120
-msgid "Disallow/allow undefined symbols in DSOs."
-msgstr ""
-
-#: src/ld.c:123
-msgid "Object requires immediate handling of $ORIGIN."
-msgstr ""
-
-#: src/ld.c:125
-msgid "Relocation will not be processed lazily."
-msgstr ""
-
-#: src/ld.c:127
-msgid "Object cannot be unloaded at runtime."
-msgstr ""
-
-#: src/ld.c:129
-msgid "Mark object to be initialized first."
-msgstr ""
-
-#: src/ld.c:131
-msgid "Enable/disable lazy-loading flag for following dependencies."
-msgstr ""
-
-#: src/ld.c:133
-msgid "Mark object as not loadable with 'dlopen'."
-msgstr ""
-
-#: src/ld.c:135
-msgid "Ignore/record dependencies on unused DSOs."
-msgstr ""
-
-#: src/ld.c:137
-msgid "Generated DSO will be a system library."
-msgstr ""
-
-#: src/ld.c:138
-msgid "ADDRESS"
-msgstr ""
-
-#: src/ld.c:138
-msgid "Set entry point address."
-msgstr ""
-
-#: src/ld.c:141
-msgid "Do not link against shared libraries."
-msgstr ""
-
-#: src/ld.c:144
-msgid "Prefer linking against shared libraries."
-msgstr ""
-
-#: src/ld.c:145
-msgid "Export all dynamic symbols."
-msgstr ""
-
-#: src/ld.c:146
-msgid "Strip all symbols."
-msgstr ""
-
-#: src/ld.c:147
-msgid "Strip debugging symbols."
-msgstr ""
-
-#: src/ld.c:149
-msgid "Assume pagesize for the target system to be SIZE."
-msgstr ""
-
-#: src/ld.c:151
-msgid "Set runtime DSO search path."
-msgstr ""
-
-#: src/ld.c:154
-msgid "Set link time DSO search path."
-msgstr ""
-
-#: src/ld.c:155
-msgid "Generate dynamic shared object."
-msgstr ""
-
-#: src/ld.c:156
-msgid "Generate relocatable object."
-msgstr ""
-
-#: src/ld.c:159
-msgid "Causes symbol not assigned to a version be reduced to local."
-msgstr ""
-
-#: src/ld.c:160
-msgid "Remove unused sections."
-msgstr ""
-
-#: src/ld.c:163
-msgid "Don't remove unused sections."
-msgstr ""
-
-#: src/ld.c:164
-msgid "Set soname of shared object."
-msgstr ""
-
-#: src/ld.c:165
-msgid "Set the dynamic linker name."
-msgstr ""
-
-#: src/ld.c:168
-msgid "Add/suppress addition indentifying link-editor to .comment section."
-msgstr ""
-
-#: src/ld.c:171
-msgid "Create .eh_frame_hdr section"
-msgstr ""
-
-#: src/ld.c:173
-msgid "Set hash style to sysv, gnu or both."
-msgstr ""
-
-#: src/ld.c:175
-msgid "Generate build ID note (md5, sha1 (default), uuid)."
-msgstr ""
-
-#: src/ld.c:177
-msgid "Linker Operation Control:"
-msgstr ""
-
-#: src/ld.c:178
-msgid "Verbose messages."
-msgstr ""
-
-#: src/ld.c:179
-msgid "Trace file opens."
-msgstr ""
-
-#: src/ld.c:181
-msgid "Trade speed for less memory usage"
-msgstr ""
-
-#: src/ld.c:182
-msgid "LEVEL"
-msgstr ""
-
-#: src/ld.c:183
-msgid "Set optimization level to LEVEL."
-msgstr ""
-
-#: src/ld.c:184
-msgid "Use linker script in FILE."
-msgstr ""
-
-#: src/ld.c:187
-msgid "Select to get parser debug information"
-msgstr ""
-
-#: src/ld.c:190
-msgid "Read version information from FILE."
-msgstr ""
-
-#: src/ld.c:191
-msgid "Set emulation to NAME."
-msgstr ""
-
-#: src/ld.c:197
-msgid "Combine object and archive files."
-msgstr ""
-
-#: src/ld.c:200
-msgid "[FILE]..."
-msgstr ""
-
-#: src/ld.c:333
-#, c-format
-msgid "At least one input file needed"
-msgstr ""
-
-#: src/ld.c:349
-#, c-format
-msgid "error while preparing linking"
-msgstr ""
-
-#: src/ld.c:356
-#, c-format
-msgid "cannot open linker script '%s'"
-msgstr ""
-
-#: src/ld.c:397
-#, c-format
-msgid "-( without matching -)"
-msgstr ""
-
-#: src/ld.c:572 src/ld.c:610
-#, c-format
-msgid "only one option of -G and -r is allowed"
-msgstr ""
-
-#: src/ld.c:594
-#, c-format
-msgid "more than one '-m' parameter"
-msgstr ""
-
-#: src/ld.c:604 src/ld.c:1013
-#, c-format
-msgid "unknown option `-%c %s'"
-msgstr ""
-
-#: src/ld.c:646
-#, c-format
-msgid "invalid page size value '%s': ignored"
-msgstr ""
-
-#: src/ld.c:687
-#, c-format
-msgid "invalid hash style '%s'"
-msgstr ""
-
-#: src/ld.c:697
-#, c-format
-msgid "invalid build-ID style '%s'"
-msgstr ""
-
-#: src/ld.c:785
-#, c-format
-msgid "More than one output file name given."
-msgstr ""
-
-#: src/ld.c:802
-#, c-format
-msgid "Invalid optimization level `%s'"
-msgstr ""
-
-#: src/ld.c:850
-#, c-format
-msgid "nested -( -) groups are not allowed"
-msgstr ""
-
-#: src/ld.c:869
-#, c-format
-msgid "-) without matching -("
-msgstr ""
-
-#: src/ld.c:1046
-#, c-format
-msgid "unknown option '-%c %s'"
-msgstr ""
-
-#: src/ld.c:1150
-#, c-format
-msgid "could not find input file to determine output file format"
-msgstr ""
-
-#: src/ld.c:1152
-#, c-format
-msgid "try again with an appropriate '-m' parameter"
-msgstr ""
-
-#: src/ld.c:1446
-#, c-format
-msgid "cannot read version script '%s'"
-msgstr ""
-
-#: src/ld.c:1512 src/ld.c:1551
-#, c-format
-msgid "duplicate definition of '%s' in linker script"
-msgstr ""
-
-#: src/ldgeneric.c:209 src/ldgeneric.c:5151
-#, c-format
-msgid "cannot create string table"
-msgstr ""
-
-#: src/ldgeneric.c:255
-#, c-format
-msgid "cannot load ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:265
-#, c-format
-msgid "cannot find init function in ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:310
-#, c-format
-msgid "%s listed more than once as input"
-msgstr ""
-
-#: src/ldgeneric.c:424
-#, c-format
-msgid "%s (for -l%s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:425
-#, c-format
-msgid "%s (for DT_NEEDED %s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:573
-#, c-format
-msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
-msgstr ""
-
-#: src/ldgeneric.c:586
-#, c-format
-msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
-msgstr ""
-
-#: src/ldgeneric.c:661 src/ldgeneric.c:1122 src/readelf.c:629 src/strip.c:543
-#, c-format
-msgid "cannot determine number of sections: %s"
-msgstr ""
-
-#: src/ldgeneric.c:677
-#, c-format
-msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
-msgstr ""
-
-#: src/ldgeneric.c:700
-#, c-format
-msgid "(%s+%#<PRIx64>): first defined here\n"
-msgstr ""
-
-#: src/ldgeneric.c:819
-#, c-format
-msgid "%s: cannot get section group data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:840
-#, c-format
-msgid "%s: section '%s' with group flag set does not belong to any group"
-msgstr ""
-
-#: src/ldgeneric.c:885
-#, c-format
-msgid "%s: section [%2d] '%s' is not in the correct section group"
-msgstr ""
-
-#: src/ldgeneric.c:1156 src/ldgeneric.c:1413 src/ldgeneric.c:1422
-#: src/ldgeneric.c:1481 src/ldgeneric.c:1490 src/ldgeneric.c:1753
-#: src/ldgeneric.c:2005
-#, c-format
-msgid "%s: invalid ELF file (%s:%d)\n"
-msgstr ""
-
-#: src/ldgeneric.c:1250
-#, c-format
-msgid "%s: only files of type ET_REL might contain section groups"
-msgstr ""
-
-#: src/ldgeneric.c:1302
-#, c-format
-msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:1314
-#, c-format
-msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
-msgstr ""
-
-#: src/ldgeneric.c:1328
-#, c-format
-msgid ""
-"%s: group member %zu of section group [%2zd] '%s' has too high index: %"
-"<PRIu32>"
-msgstr ""
-
-#: src/ldgeneric.c:1350
-#, c-format
-msgid "%s: section '%s' has unknown type: %d"
-msgstr ""
-
-#: src/ldgeneric.c:1729
-#, c-format
-msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:1899
-#, c-format
-msgid "cannot read archive `%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:2020
-#, c-format
-msgid "file of type %s cannot be linked in\n"
-msgstr ""
-
-#: src/ldgeneric.c:2032
-#, c-format
-msgid "%s: input file incompatible with ELF machine type %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2044
-#, c-format
-msgid "%s: cannot get section header string table index: %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2073
-#, c-format
-msgid "cannot use DSO '%s' when generating relocatable object file"
-msgstr ""
-
-#: src/ldgeneric.c:2158
-#, c-format
-msgid "input file '%s' ignored"
-msgstr ""
-
-#: src/ldgeneric.c:2372
-#, c-format
-msgid "undefined symbol `%s' in %s"
-msgstr ""
-
-#: src/ldgeneric.c:2702
-#, c-format
-msgid "cannot create ELF descriptor for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:2709
-#, c-format
-msgid "could not create ELF header for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3224 src/ldgeneric.c:3294 src/ldgeneric.c:3330
-#: src/ldgeneric.c:4457 src/ldgeneric.c:4506 src/ldgeneric.c:4538
-#: src/ldgeneric.c:4773 src/ldgeneric.c:4828 src/ldgeneric.c:5075
-#: src/ldgeneric.c:5131 src/ldgeneric.c:5600 src/ldgeneric.c:5612
-#, c-format
-msgid "cannot create section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3444
-#, c-format
-msgid "address computation expression contains variable '%s'"
-msgstr ""
-
-#: src/ldgeneric.c:3489
-#, c-format
-msgid ""
-"argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
-"of two"
-msgstr ""
-
-#: src/ldgeneric.c:3684
-#, c-format
-msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3690
-#, c-format
-msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3920
-#, c-format
-msgid "cannot create GNU hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4071
-#, c-format
-msgid "cannot create hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4114
-#, c-format
-msgid "cannot create build ID section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4191
-#, c-format
-msgid "cannot convert section data to file format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4200
-#, c-format
-msgid "cannot convert section data to memory format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4261
-#, c-format
-msgid "cannot read enough data for UUID"
-msgstr ""
-
-#: src/ldgeneric.c:4358 src/ldgeneric.c:4379 src/ldgeneric.c:4408
-#: src/ldgeneric.c:6062
-#, c-format
-msgid "cannot create symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5300 src/ldgeneric.c:5852
-#, c-format
-msgid "section index too large in dynamic symbol table"
-msgstr ""
-
-#: src/ldgeneric.c:5745
-#, c-format
-msgid "cannot create versioning section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5818
-#, c-format
-msgid "cannot create dynamic symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5994
-#, c-format
-msgid "cannot create versioning data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6094 src/ldgeneric.c:6107 src/ldgeneric.c:6171
-#: src/ldgeneric.c:6179
-#, c-format
-msgid "cannot create section header string section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6101
-#, c-format
-msgid "cannot create section header string section"
-msgstr ""
-
-#: src/ldgeneric.c:6259
-#, c-format
-msgid "cannot create program header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6267
-#, c-format
-msgid "while determining file layout: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6388
-#, c-format
-msgid "internal error: non-nobits section follows nobits section"
-msgstr ""
-
-#: src/ldgeneric.c:6925
-#, c-format
-msgid "cannot get header of 0th section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6941 src/unstrip.c:1808
-#, c-format
-msgid "cannot update ELF header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6972
-#, c-format
-msgid "linker backend didn't specify function to relocate section"
-msgstr ""
-
-#: src/ldgeneric.c:6984
-#, c-format
-msgid "while writing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6989
-#, c-format
-msgid "while finishing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6995
-#, c-format
-msgid "cannot stat output file"
-msgstr ""
-
-#: src/ldgeneric.c:7011
-#, c-format
-msgid "WARNING: temporary output file overwritten before linking finished"
-msgstr ""
-
-#: src/ldgeneric.c:7064 src/ldgeneric.c:7075 src/ldgeneric.c:7086
-#: src/ldgeneric.c:7097 src/ldgeneric.c:7116 src/ldgeneric.c:7129
-#: src/ldgeneric.c:7141
-#, c-format
-msgid "no machine specific '%s' implementation"
-msgstr ""
-
-#: src/ldscript.y:178
-msgid "mode for segment invalid\n"
-msgstr ""
-
-#: src/ldscript.y:465
-#, c-format
-msgid "while reading version script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:466
-#, c-format
-msgid "while reading linker script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:745
-#, c-format
-msgid "symbol '%s' is declared both local and global for unnamed version"
-msgstr ""
-
-#: src/ldscript.y:747
-#, c-format
-msgid "symbol '%s' is declared both local and global for version '%s'"
-msgstr ""
-
-#: src/ldscript.y:767 src/ldscript.y:774
-#, c-format
-msgid "default visibility set as local and global"
-msgstr ""
-
-#: src/nm.c:74 src/strip.c:73
-msgid "Output selection:"
-msgstr ""
-
-#: src/nm.c:75
-msgid "Display debugger-only symbols"
-msgstr ""
-
-#: src/nm.c:76
-msgid "Display only defined symbols"
-msgstr ""
-
-#: src/nm.c:79
-msgid "Display dynamic symbols instead of normal symbols"
-msgstr ""
-
-#: src/nm.c:80
-msgid "Display only external symbols"
-msgstr ""
-
-#: src/nm.c:81
-msgid "Display only undefined symbols"
-msgstr ""
-
-#: src/nm.c:83
-msgid "Include index for symbols from archive members"
-msgstr ""
-
-#: src/nm.c:85 src/size.c:66
-msgid "Output format:"
-msgstr ""
-
-#: src/nm.c:87
-msgid "Print name of the input file before every symbol"
-msgstr ""
-
-#: src/nm.c:90
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The "
-"default is `sysv'"
-msgstr ""
-
-#: src/nm.c:92
-msgid "Same as --format=bsd"
-msgstr ""
-
-#: src/nm.c:93
-msgid "Same as --format=posix"
-msgstr ""
-
-#: src/nm.c:94 src/size.c:72
-msgid "Use RADIX for printing symbol values"
-msgstr ""
-
-#: src/nm.c:95
-msgid "Mark weak symbols"
-msgstr ""
-
-#: src/nm.c:96
-msgid "Print size of defined symbols"
-msgstr ""
-
-#: src/nm.c:98 src/size.c:80 src/strip.c:78 src/unstrip.c:81
-msgid "Output options:"
-msgstr ""
-
-#: src/nm.c:99
-msgid "Sort symbols numerically by address"
-msgstr ""
-
-#: src/nm.c:101
-msgid "Do not sort the symbols"
-msgstr ""
-
-#: src/nm.c:102
-msgid "Reverse the sense of the sort"
-msgstr ""
-
-#: src/nm.c:108
-msgid "List symbols from FILEs (a.out by default)."
-msgstr ""
-
-#: src/nm.c:136 src/objdump.c:105 src/size.c:117 src/strip.c:121
-#, c-format
-msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
-msgstr ""
-
-#: src/nm.c:380 src/nm.c:392 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:1816
-#, c-format
-msgid "while closing '%s'"
-msgstr ""
-
-#: src/nm.c:402 src/objdump.c:296 src/strip.c:359
-#, c-format
-msgid "%s: File format not recognized"
-msgstr ""
-
-#: src/nm.c:442
-msgid ""
-"\n"
-"Archive index:"
-msgstr ""
-
-#: src/nm.c:451
-#, c-format
-msgid "invalid offset %zu for symbol %s"
-msgstr ""
-
-#: src/nm.c:456
-#, c-format
-msgid "%s in %s\n"
-msgstr ""
-
-#: src/nm.c:464
-#, c-format
-msgid "cannot reset archive offset to beginning"
-msgstr ""
-
-#: src/nm.c:488 src/objdump.c:344
-#, c-format
-msgid "%s%s%s: file format not recognized"
-msgstr ""
-
-#: src/nm.c:700
-#, c-format
-msgid "cannot create search tree"
-msgstr ""
-
-#: src/nm.c:740 src/nm.c:1002 src/objdump.c:744 src/readelf.c:885
-#: src/readelf.c:1028 src/readelf.c:1169 src/readelf.c:1351 src/readelf.c:1549
-#: src/readelf.c:1735 src/readelf.c:1945 src/readelf.c:2199 src/readelf.c:2265
-#: src/readelf.c:2343 src/readelf.c:2841 src/readelf.c:2877 src/readelf.c:2939
-#: src/readelf.c:6493 src/readelf.c:7387 src/readelf.c:7534 src/readelf.c:7604
-#: src/size.c:425 src/size.c:499 src/strip.c:483
-#, c-format
-msgid "cannot get section header string table index"
-msgstr ""
-
-#: src/nm.c:766
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:768
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:771
-#, c-format
-msgid ""
-"%*s%-*s %-*s Class Type %-*s %*s Section\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:1012
-#, c-format
-msgid "%s: entry size in section `%s' is not what we expect"
-msgstr ""
-
-#: src/nm.c:1016
-#, c-format
-msgid "%s: size of section `%s' is not multiple of entry size"
-msgstr ""
-
-#: src/nm.c:1255
-#, c-format
-msgid "%s%s%s%s: Invalid operation"
-msgstr ""
-
-#: src/nm.c:1312
-#, c-format
-msgid "%s%s%s: no symbols"
-msgstr ""
-
-#: src/objdump.c:61
-msgid "Mode selection:"
-msgstr ""
-
-#: src/objdump.c:62
-msgid "Display relocation information."
-msgstr ""
-
-#: src/objdump.c:64
-msgid "Display the full contents of all sections requested"
-msgstr ""
-
-#: src/objdump.c:66
-msgid "Display assembler code of executable sections"
-msgstr ""
-
-#: src/objdump.c:68
-msgid "Output option selection:"
-msgstr ""
-
-#: src/objdump.c:70
-msgid "Only display information for section NAME."
-msgstr ""
-
-#: src/objdump.c:76
-msgid "Show information from FILEs (a.out by default)."
-msgstr ""
-
-#: src/objdump.c:236 src/readelf.c:430
-msgid "No operation specified.\n"
-msgstr ""
-
-#: src/objdump.c:274 src/objdump.c:286
-#, c-format
-msgid "while close `%s'"
-msgstr ""
-
-#: src/objdump.c:379 src/readelf.c:1644 src/readelf.c:1818
-msgid "INVALID SYMBOL"
-msgstr ""
-
-#: src/objdump.c:394 src/readelf.c:1675 src/readelf.c:1851
-msgid "INVALID SECTION"
-msgstr ""
-
-#: src/objdump.c:510
-#, c-format
-msgid ""
-"\n"
-"RELOCATION RECORDS FOR [%s]:\n"
-"%-*s TYPE VALUE\n"
-msgstr ""
-
-#: src/objdump.c:513
-msgid "OFFSET"
-msgstr ""
-
-#: src/objdump.c:576
-#, c-format
-msgid "Contents of section %s:\n"
-msgstr ""
-
-#: src/objdump.c:676
-#, c-format
-msgid "cannot disassemble"
-msgstr ""
-
-#: src/ranlib.c:74
-msgid "Generate an index to speed access to archives."
-msgstr ""
-
-#: src/ranlib.c:77
-msgid "ARCHIVE"
-msgstr ""
-
-#: src/ranlib.c:116
-#, c-format
-msgid "Archive name required"
-msgstr ""
-
-#: src/ranlib.c:194
-#, c-format
-msgid "'%s' is no archive"
-msgstr ""
-
-#: src/ranlib.c:229
-#, c-format
-msgid "error while freeing sub-ELF descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:73
-msgid "ELF output selection:"
-msgstr ""
-
-#: src/readelf.c:75
-msgid "All these plus -p .strtab -p .dynstr -p .comment"
-msgstr ""
-
-#: src/readelf.c:76
-msgid "Display the dynamic segment"
-msgstr ""
-
-#: src/readelf.c:77
-msgid "Display the ELF file header"
-msgstr ""
-
-#: src/readelf.c:79
-msgid "Display histogram of bucket list lengths"
-msgstr ""
-
-#: src/readelf.c:80
-msgid "Display the program headers"
-msgstr ""
-
-#: src/readelf.c:82
-msgid "Display relocations"
-msgstr ""
-
-#: src/readelf.c:83
-msgid "Display the sections' headers"
-msgstr ""
-
-#: src/readelf.c:85
-msgid "Display the symbol table"
-msgstr ""
-
-#: src/readelf.c:86
-msgid "Display versioning information"
-msgstr ""
-
-#: src/readelf.c:87
-msgid "Display the ELF notes"
-msgstr ""
-
-#: src/readelf.c:89
-msgid "Display architecture specific information, if any"
-msgstr ""
-
-#: src/readelf.c:91
-msgid "Display sections for exception handling"
-msgstr ""
-
-#: src/readelf.c:93
-msgid "Additional output selection:"
-msgstr ""
-
-#: src/readelf.c:95
-msgid ""
-"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, info, loc, line, ranges, pubnames, str, macinfo, or exception"
-msgstr ""
-
-#: src/readelf.c:99
-msgid "Dump the uninterpreted contents of SECTION, by number or name"
-msgstr ""
-
-#: src/readelf.c:101
-msgid "Print string contents of sections"
-msgstr ""
-
-#: src/readelf.c:104
-msgid "Display the symbol index of an archive"
-msgstr ""
-
-#: src/readelf.c:106
-msgid "Output control:"
-msgstr ""
-
-#: src/readelf.c:108
-msgid "Do not find symbol names for addresses in DWARF data"
-msgstr ""
-
-#: src/readelf.c:114
-msgid "Print information from ELF file in human-readable form."
-msgstr ""
-
-#: src/readelf.c:401
-#, c-format
-msgid "Unknown DWARF debug section `%s'.\n"
-msgstr ""
-
-#: src/readelf.c:465
-#, c-format
-msgid "cannot generate Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:477
-#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr ""
-
-#: src/readelf.c:482
-#, c-format
-msgid "error while closing Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:574
-#, c-format
-msgid "cannot stat input file"
-msgstr ""
-
-#: src/readelf.c:576
-#, c-format
-msgid "input file is empty"
-msgstr ""
-
-#: src/readelf.c:578
-#, c-format
-msgid "failed reading '%s': %s"
-msgstr ""
-
-#: src/readelf.c:614
-#, c-format
-msgid "cannot read ELF header: %s"
-msgstr ""
-
-#: src/readelf.c:622
-#, c-format
-msgid "cannot create EBL handle"
-msgstr ""
-
-#: src/readelf.c:635
-#, c-format
-msgid "cannot determine number of program headers: %s"
-msgstr ""
-
-#: src/readelf.c:721
-msgid "NONE (None)"
-msgstr ""
-
-#: src/readelf.c:722
-msgid "REL (Relocatable file)"
-msgstr ""
-
-#: src/readelf.c:723
-msgid "EXEC (Executable file)"
-msgstr ""
-
-#: src/readelf.c:724
-msgid "DYN (Shared object file)"
-msgstr ""
-
-#: src/readelf.c:725
-msgid "CORE (Core file)"
-msgstr ""
-
-#: src/readelf.c:730
-#, c-format
-msgid "OS Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:732
-#, c-format
-msgid "Processor Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:742
-msgid ""
-"ELF Header:\n"
-" Magic: "
-msgstr ""
-
-#: src/readelf.c:746
-#, c-format
-msgid ""
-"\n"
-" Class: %s\n"
-msgstr ""
-
-#: src/readelf.c:751
-#, c-format
-msgid " Data: %s\n"
-msgstr ""
-
-#: src/readelf.c:757
-#, c-format
-msgid " Ident Version: %hhd %s\n"
-msgstr ""
-
-#: src/readelf.c:759 src/readelf.c:776
-msgid "(current)"
-msgstr ""
-
-#: src/readelf.c:763
-#, c-format
-msgid " OS/ABI: %s\n"
-msgstr ""
-
-#: src/readelf.c:766
-#, c-format
-msgid " ABI Version: %hhd\n"
-msgstr ""
-
-#: src/readelf.c:769
-msgid " Type: "
-msgstr ""
-
-#: src/readelf.c:772
-#, c-format
-msgid " Machine: %s\n"
-msgstr ""
-
-#: src/readelf.c:774
-#, c-format
-msgid " Version: %d %s\n"
-msgstr ""
-
-#: src/readelf.c:778
-#, c-format
-msgid " Entry point address: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:781
-#, c-format
-msgid " Start of program headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:782 src/readelf.c:785
-msgid "(bytes into file)"
-msgstr ""
-
-#: src/readelf.c:784
-#, c-format
-msgid " Start of section headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:787
-#, c-format
-msgid " Flags: %s\n"
-msgstr ""
-
-#: src/readelf.c:790
-#, c-format
-msgid " Size of this header: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:791 src/readelf.c:794 src/readelf.c:811
-msgid "(bytes)"
-msgstr ""
-
-#: src/readelf.c:793
-#, c-format
-msgid " Size of program header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:796
-#, c-format
-msgid " Number of program headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:803
-#, c-format
-msgid " (%<PRIu32> in [0].sh_info)"
-msgstr ""
-
-#: src/readelf.c:806 src/readelf.c:823 src/readelf.c:837
-msgid " ([0] not available)"
-msgstr ""
-
-#: src/readelf.c:810
-#, c-format
-msgid " Size of section header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:813
-#, c-format
-msgid " Number of section headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:820
-#, c-format
-msgid " (%<PRIu32> in [0].sh_size)"
-msgstr ""
-
-#: src/readelf.c:833
-#, c-format
-msgid " (%<PRIu32> in [0].sh_link)"
-msgstr ""
-
-#: src/readelf.c:841
-#, c-format
-msgid ""
-" Section header string table index: XINDEX%s\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:845
-#, c-format
-msgid ""
-" Section header string table index: %<PRId16>\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:877
-#, c-format
-msgid ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:887
-msgid "Section Headers:"
-msgstr ""
-
-#: src/readelf.c:890
-msgid ""
-"[Nr] Name Type Addr Off Size ES Flags Lk "
-"Inf Al"
-msgstr ""
-
-#: src/readelf.c:892
-msgid ""
-"[Nr] Name Type Addr Off Size ES "
-"Flags Lk Inf Al"
-msgstr ""
-
-#: src/readelf.c:899 src/readelf.c:1052
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:906 src/readelf.c:1060 src/readelf.c:7554 src/unstrip.c:353
-#: src/unstrip.c:377 src/unstrip.c:427 src/unstrip.c:536 src/unstrip.c:553
-#: src/unstrip.c:591 src/unstrip.c:789 src/unstrip.c:1057 src/unstrip.c:1244
-#: src/unstrip.c:1305 src/unstrip.c:1427 src/unstrip.c:1480 src/unstrip.c:1588
-#: src/unstrip.c:1778
-#, c-format
-msgid "cannot get section header: %s"
-msgstr ""
-
-#: src/readelf.c:964
-msgid "Program Headers:"
-msgstr ""
-
-#: src/readelf.c:966
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:969
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz "
-"MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:1009
-#, c-format
-msgid "\t[Requesting program interpreter: %s]\n"
-msgstr ""
-
-#: src/readelf.c:1030
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-" Segment Sections..."
-msgstr ""
-
-#: src/readelf.c:1041 src/unstrip.c:1824 src/unstrip.c:1863 src/unstrip.c:1870
-#, c-format
-msgid "cannot get program header: %s"
-msgstr ""
-
-#: src/readelf.c:1175
-#, c-format
-msgid ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1180
-#, c-format
-msgid ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1188
-msgid "<INVALID SYMBOL>"
-msgstr ""
-
-#: src/readelf.c:1202
-msgid "<INVALID SECTION>"
-msgstr ""
-
-#: src/readelf.c:1353
-#, c-format
-msgid ""
-"\n"
-"Dynamic segment contains %lu entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Dynamic segment contains %lu entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1365
-msgid " Type Value\n"
-msgstr ""
-
-#: src/readelf.c:1389
-#, c-format
-msgid "Shared library: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1394
-#, c-format
-msgid "Library soname: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1399
-#, c-format
-msgid "Library rpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1404
-#, c-format
-msgid "Library runpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1424
-#, c-format
-msgid "%<PRId64> (bytes)\n"
-msgstr ""
-
-#: src/readelf.c:1534 src/readelf.c:1720
-#, c-format
-msgid ""
-"\n"
-"Invalid symbol table at offset %#0<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:1552 src/readelf.c:1737
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1567
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1577
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1579
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1632 src/readelf.c:1643 src/readelf.c:1656 src/readelf.c:1674
-#: src/readelf.c:1686 src/readelf.c:1805 src/readelf.c:1817 src/readelf.c:1831
-#: src/readelf.c:1850 src/readelf.c:1863
-msgid "<INVALID RELOC>"
-msgstr ""
-
-#: src/readelf.c:1749
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1751
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1952
-#, c-format
-msgid ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entry:\n"
-msgid_plural ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1958
-#, c-format
-msgid " %lu local symbol String table: [%2u] '%s'\n"
-msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1968
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1970
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1990
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr ""
-
-#: src/readelf.c:2078
-#, c-format
-msgid "bad dynamic symbol"
-msgstr ""
-
-#: src/readelf.c:2160
-msgid "none"
-msgstr ""
-
-#: src/readelf.c:2177
-msgid "| <unknown>"
-msgstr ""
-
-#: src/readelf.c:2202
-#, c-format
-msgid ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2225
-#, c-format
-msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2238
-#, c-format
-msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2269
-#, c-format
-msgid ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2299
-#, c-format
-msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
-msgstr ""
-
-#: src/readelf.c:2314
-#, c-format
-msgid " %#06x: Parent %d: %s\n"
-msgstr ""
-
-#: src/readelf.c:2546
-#, c-format
-msgid ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgid_plural ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2576
-msgid " 0 *local* "
-msgstr ""
-
-#: src/readelf.c:2581
-msgid " 1 *global* "
-msgstr ""
-
-#: src/readelf.c:2612
-#, c-format
-msgid ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"bucket):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"buckets):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2636
-#, no-c-format
-msgid " Length Number % of total Coverage\n"
-msgstr ""
-
-#: src/readelf.c:2638
-#, c-format
-msgid " 0 %6<PRIu32> %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2645
-#, c-format
-msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2658
-#, c-format
-msgid ""
-" Average number of tests: successful lookup: %f\n"
-" unsuccessful lookup: %f\n"
-msgstr ""
-
-#: src/readelf.c:2676 src/readelf.c:2718 src/readelf.c:2759
-#, c-format
-msgid "cannot get data for section %d: %s"
-msgstr ""
-
-#: src/readelf.c:2813
-#, c-format
-msgid ""
-" Symbol Bias: %u\n"
-" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
-msgstr ""
-
-#: src/readelf.c:2887
-#, c-format
-msgid ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2901
-msgid ""
-" Library Time Stamp Checksum Version "
-"Flags"
-msgstr ""
-
-#: src/readelf.c:2951
-#, c-format
-msgid ""
-"\n"
-"Object attributes section [%2zu] '%s' of %<PRIu64> bytes at offset %"
-"#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:2967
-msgid " Owner Size\n"
-msgstr ""
-
-#: src/readelf.c:2993
-#, c-format
-msgid " %-13s %4<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3025
-#, c-format
-msgid " %-4u %12<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3030
-#, c-format
-msgid " File: %11<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3065
-#, c-format
-msgid " %s: %<PRId64>, %s\n"
-msgstr ""
-
-#: src/readelf.c:3068
-#, c-format
-msgid " %s: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3071
-#, c-format
-msgid " %s: %s\n"
-msgstr ""
-
-#: src/readelf.c:3078
-#, c-format
-msgid " %u: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3081
-#, c-format
-msgid " %u: %s\n"
-msgstr ""
-
-#: src/readelf.c:3117
-#, c-format
-msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3120
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3125
-#, c-format
-msgid "%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3128
-#, c-format
-msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3134
-#, c-format
-msgid "%s+%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3137
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3141
-#, c-format
-msgid "%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3144
-#, c-format
-msgid "%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3149
-#, c-format
-msgid "%s+%#<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3152
-#, c-format
-msgid "%s+%#0*<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3260
-#, c-format
-msgid "unknown tag %hx"
-msgstr ""
-
-#: src/readelf.c:3262
-#, c-format
-msgid "unknown user tag %hx"
-msgstr ""
-
-#: src/readelf.c:3480
-#, c-format
-msgid "unknown attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3483
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3529
-#, c-format
-msgid "unknown form %<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3763
-msgid "empty block"
-msgstr ""
-
-#: src/readelf.c:3766
-#, c-format
-msgid "%zu byte block:"
-msgstr ""
-
-#: src/readelf.c:4175
-#, c-format
-msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-msgstr ""
-
-#: src/readelf.c:4188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [ Code]\n"
-msgstr ""
-
-#: src/readelf.c:4195
-#, c-format
-msgid ""
-"\n"
-"Abbreviation section at offset %<PRIu64>:\n"
-msgstr ""
-
-#: src/readelf.c:4208
-#, c-format
-msgid " *** error while reading abbreviation: %s\n"
-msgstr ""
-
-#: src/readelf.c:4224
-#, c-format
-msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "yes"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "no"
-msgstr ""
-
-#: src/readelf.c:4263
-#, c-format
-msgid "cannot get .debug_aranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4268
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:4298
-#, c-format
-msgid " [%*zu] ???\n"
-msgstr ""
-
-#: src/readelf.c:4300
-#, c-format
-msgid ""
-" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:4319
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4324 src/readelf.c:4810 src/readelf.c:5452 src/readelf.c:5897
-#: src/readelf.c:5992 src/readelf.c:6164
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4338 src/readelf.c:5911
-#, c-format
-msgid " [%6tx] <INVALID DATA>\n"
-msgstr ""
-
-#: src/readelf.c:4360 src/readelf.c:5933
-#, c-format
-msgid " [%6tx] base address %s\n"
-msgstr ""
-
-#: src/readelf.c:4371
-#, c-format
-msgid " [%6tx] %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4373
-#, c-format
-msgid " %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4799 src/readelf.c:6230 src/readelf.c:6332
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr ""
-
-#: src/readelf.c:4806
-#, c-format
-msgid ""
-"\n"
-"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4833 src/readelf.c:5486
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:4855
-#, c-format
-msgid ""
-"\n"
-" [%6tx] Zero terminator\n"
-msgstr ""
-
-#: src/readelf.c:4924
-#, c-format
-msgid "invalid augmentation length"
-msgstr ""
-
-#: src/readelf.c:4936
-msgid "FDE address encoding: "
-msgstr ""
-
-#: src/readelf.c:4942
-msgid "LSDA pointer encoding: "
-msgstr ""
-
-#: src/readelf.c:5034
-#, c-format
-msgid " (offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5041
-#, c-format
-msgid " (end offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5068
-#, c-format
-msgid " %-26sLSDA pointer: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:5114
-#, c-format
-msgid "cannot get attribute code: %s"
-msgstr ""
-
-#: src/readelf.c:5122
-#, c-format
-msgid "cannot get attribute form: %s"
-msgstr ""
-
-#: src/readelf.c:5135
-#, c-format
-msgid "cannot get attribute value: %s"
-msgstr ""
-
-#: src/readelf.c:5331
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [Offset]\n"
-msgstr ""
-
-#: src/readelf.c:5356
-#, c-format
-msgid ""
-" Compilation unit at offset %<PRIu64>:\n"
-" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: %"
-"<PRIu8>, Offset size: %<PRIu8>\n"
-msgstr ""
-
-#: src/readelf.c:5374
-#, c-format
-msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5385
-#, c-format
-msgid "cannot get DIE offset: %s"
-msgstr ""
-
-#: src/readelf.c:5393
-#, c-format
-msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5422
-#, c-format
-msgid "cannot get next DIE: %s\n"
-msgstr ""
-
-#: src/readelf.c:5429
-#, c-format
-msgid "cannot get next DIE: %s"
-msgstr ""
-
-#: src/readelf.c:5464
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr ""
-
-#: src/readelf.c:5477
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-
-#: src/readelf.c:5529
-#, c-format
-msgid ""
-"\n"
-" Length: %<PRIu64>\n"
-" DWARF version: %<PRIuFAST16>\n"
-" Prologue length: %<PRIu64>\n"
-" Minimum instruction length: %<PRIuFAST8>\n"
-" Initial value if '%s': %<PRIuFAST8>\n"
-" Line base: %<PRIdFAST8>\n"
-" Line range: %<PRIuFAST8>\n"
-" Opcode base: %<PRIuFAST8>\n"
-"\n"
-"Opcodes:\n"
-msgstr ""
-
-#: src/readelf.c:5548
-#, c-format
-msgid "invalid data at offset %tu in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:5563
-#, c-format
-msgid " [%*<PRIuFAST8>] %hhu argument\n"
-msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5571
-msgid ""
-"\n"
-"Directory table:"
-msgstr ""
-
-#: src/readelf.c:5587
-msgid ""
-"\n"
-"File name table:\n"
-" Entry Dir Time Size Name"
-msgstr ""
-
-#: src/readelf.c:5616
-msgid ""
-"\n"
-"Line number statements:"
-msgstr ""
-
-#: src/readelf.c:5677
-#, c-format
-msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
-msgstr ""
-
-#: src/readelf.c:5697
-#, c-format
-msgid " extended opcode %u: "
-msgstr ""
-
-#: src/readelf.c:5702
-msgid "end of sequence"
-msgstr ""
-
-#: src/readelf.c:5717
-#, c-format
-msgid "set address to %s\n"
-msgstr ""
-
-#: src/readelf.c:5738
-#, c-format
-msgid "define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
-msgstr ""
-
-#: src/readelf.c:5747
-msgid "unknown opcode"
-msgstr ""
-
-#: src/readelf.c:5759
-msgid " copy"
-msgstr ""
-
-#: src/readelf.c:5769
-#, c-format
-msgid "advance address by %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5780
-#, c-format
-msgid " advance line by constant %d to %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:5788
-#, c-format
-msgid " set file to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5798
-#, c-format
-msgid " set column to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5805
-#, c-format
-msgid " set '%s' to %<PRIuFAST8>\n"
-msgstr ""
-
-#: src/readelf.c:5811
-msgid " set basic block flag"
-msgstr ""
-
-#: src/readelf.c:5821
-#, c-format
-msgid "advance address by constant %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5837
-#, c-format
-msgid "advance address by fixed value %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5846
-msgid " set prologue end flag"
-msgstr ""
-
-#: src/readelf.c:5851
-msgid " set epilogue begin flag"
-msgstr ""
-
-#: src/readelf.c:5860
-#, c-format
-msgid " unknown opcode with %<PRIu8> parameter:"
-msgid_plural " unknown opcode with %<PRIu8> parameters:"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5892
-#, c-format
-msgid "cannot get .debug_loc content: %s"
-msgstr ""
-
-#: src/readelf.c:5947
-#, c-format
-msgid " [%6tx] %s..%s"
-msgstr ""
-
-#: src/readelf.c:5949
-#, c-format
-msgid " %s..%s"
-msgstr ""
-
-#: src/readelf.c:6002
-#, c-format
-msgid "cannot get macro information section data: %s"
-msgstr ""
-
-#: src/readelf.c:6081
-#, c-format
-msgid "%*s*** non-terminated string at end of section"
-msgstr ""
-
-#: src/readelf.c:6149
-#, c-format
-msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
-msgstr ""
-
-#: src/readelf.c:6188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" %*s String\n"
-msgstr ""
-
-#: src/readelf.c:6202
-#, c-format
-msgid " *** error while reading strings: %s\n"
-msgstr ""
-
-#: src/readelf.c:6222
-#, c-format
-msgid ""
-"\n"
-"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
-msgstr ""
-
-#: src/readelf.c:6324
-#, c-format
-msgid ""
-"\n"
-"Exception handling table section [%2zu] '.gcc_except_table':\n"
-msgstr ""
-
-#: src/readelf.c:6347
-#, c-format
-msgid " LPStart encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6359
-#, c-format
-msgid " TType encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6373
-#, c-format
-msgid " Call site encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6386
-msgid ""
-"\n"
-" Call site table:"
-msgstr ""
-
-#: src/readelf.c:6400
-#, c-format
-msgid ""
-" [%4u] Call site start: %#<PRIx64>\n"
-" Call site length: %<PRIu64>\n"
-" Landing pad: %#<PRIx64>\n"
-" Action: %u\n"
-msgstr ""
-
-#: src/readelf.c:6460
-#, c-format
-msgid "invalid TType encoding"
-msgstr ""
-
-#: src/readelf.c:6484
-#, c-format
-msgid "cannot get debug context descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:6620 src/readelf.c:7221
-#, c-format
-msgid "cannot convert core note data: %s"
-msgstr ""
-
-#: src/readelf.c:6961
-#, c-format
-msgid ""
-"\n"
-"%*s... <repeats %u more times> ..."
-msgstr ""
-
-#: src/readelf.c:7320
-msgid " Owner Data size Type\n"
-msgstr ""
-
-#: src/readelf.c:7338
-#, c-format
-msgid " %-13.*s %9<PRId32> %s\n"
-msgstr ""
-
-#: src/readelf.c:7372
-#, c-format
-msgid "cannot get content of note section: %s"
-msgstr ""
-
-#: src/readelf.c:7399
-#, c-format
-msgid ""
-"\n"
-"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7422
-#, c-format
-msgid ""
-"\n"
-"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7468
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no data to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7474 src/readelf.c:7497
-#, c-format
-msgid "cannot get data for section [%Zu] '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7478
-#, c-format
-msgid ""
-"\n"
-"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7491
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no strings to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7501
-#, c-format
-msgid ""
-"\n"
-"String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7549
-#, c-format
-msgid ""
-"\n"
-"section [%lu] does not exist"
-msgstr ""
-
-#: src/readelf.c:7576
-#, c-format
-msgid ""
-"\n"
-"section '%s' does not exist"
-msgstr ""
-
-#: src/readelf.c:7637
-#, c-format
-msgid "cannot get symbol index of archive '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7640
-#, c-format
-msgid ""
-"\n"
-"Archive '%s' has no symbol index\n"
-msgstr ""
-
-#: src/readelf.c:7644
-#, c-format
-msgid ""
-"\n"
-"Index of archive '%s' has %Zu entries:\n"
-msgstr ""
-
-#: src/readelf.c:7662
-#, c-format
-msgid "cannot extract member at offset %Zu in '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7667
-#, c-format
-msgid "Archive member '%s' contains:\n"
-msgstr ""
-
-#: src/size.c:68
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default "
-"is `bsd'"
-msgstr ""
-
-#: src/size.c:70
-msgid "Same as `--format=sysv'"
-msgstr ""
-
-#: src/size.c:71
-msgid "Same as `--format=bsd'"
-msgstr ""
-
-#: src/size.c:74
-msgid "Same as `--radix=10'"
-msgstr ""
-
-#: src/size.c:75
-msgid "Same as `--radix=8'"
-msgstr ""
-
-#: src/size.c:76
-msgid "Same as `--radix=16'"
-msgstr ""
-
-#: src/size.c:78
-msgid "Similar to `--format=sysv' output but in one line"
-msgstr ""
-
-#: src/size.c:82
-msgid "Print size and permission flags for loadable segments"
-msgstr ""
-
-#: src/size.c:83
-msgid "Display the total sizes (bsd only)"
-msgstr ""
-
-#: src/size.c:88
-msgid "List section sizes of FILEs (a.out by default)."
-msgstr ""
-
-#: src/size.c:269
-#, c-format
-msgid "Invalid format: %s"
-msgstr ""
-
-#: src/size.c:280
-#, c-format
-msgid "Invalid radix: %s"
-msgstr ""
-
-#: src/size.c:339
-#, c-format
-msgid "%s: file format not recognized"
-msgstr ""
-
-#: src/size.c:446 src/size.c:589
-#, c-format
-msgid " (ex %s)"
-msgstr ""
-
-#: src/size.c:614
-msgid "(TOTALS)\n"
-msgstr ""
-
-#: src/strings.c:70
-msgid "Output Selection:"
-msgstr ""
-
-#: src/strings.c:71
-msgid "Scan entire file, not only loaded sections"
-msgstr ""
-
-#: src/strings.c:73
-msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
-msgstr ""
-
-#: src/strings.c:74
-msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
-"{B,L} = 32-bit"
-msgstr ""
-
-#: src/strings.c:78
-msgid "Print name of the file before each string."
-msgstr ""
-
-#: src/strings.c:80
-msgid "Print location of the string in base 8, 10, or 16 respectively."
-msgstr ""
-
-#: src/strings.c:81
-msgid "Alias for --radix=o"
-msgstr ""
-
-#: src/strings.c:88
-msgid "Print the strings of printable characters in files."
-msgstr ""
-
-#: src/strings.c:268 src/strings.c:303
-#, c-format
-msgid "invalid value '%s' for %s parameter"
-msgstr ""
-
-#: src/strings.c:314
-#, c-format
-msgid "invalid minimum length of matched string size"
-msgstr ""
-
-#: src/strings.c:601
-#, c-format
-msgid "lseek64 failed"
-msgstr ""
-
-#: src/strings.c:616 src/strings.c:680
-#, c-format
-msgid "re-mmap failed"
-msgstr ""
-
-#: src/strings.c:653
-#, c-format
-msgid "mprotect failed"
-msgstr ""
-
-#: src/strip.c:74
-msgid "Place stripped output into FILE"
-msgstr ""
-
-#: src/strip.c:75
-msgid "Extract the removed sections into FILE"
-msgstr ""
-
-#: src/strip.c:76
-msgid "Embed name FILE instead of -f argument"
-msgstr ""
-
-#: src/strip.c:80
-msgid "Remove all debugging symbols"
-msgstr ""
-
-#: src/strip.c:84
-msgid "Copy modified/access timestamps to the output"
-msgstr ""
-
-#: src/strip.c:86
-msgid "Remove .comment section"
-msgstr ""
-
-#: src/strip.c:89
-msgid "Relax a few rules to handle slightly broken ELF files"
-msgstr ""
-
-#: src/strip.c:94
-msgid "Discard symbols from object files."
-msgstr ""
-
-#: src/strip.c:186
-#, c-format
-msgid "Only one input file allowed together with '-o' and '-f'"
-msgstr ""
-
-#: src/strip.c:222
-#, c-format
-msgid "-f option specified twice"
-msgstr ""
-
-#: src/strip.c:231
-#, c-format
-msgid "-F option specified twice"
-msgstr ""
-
-#: src/strip.c:240 src/unstrip.c:125
-#, c-format
-msgid "-o option specified twice"
-msgstr ""
-
-#: src/strip.c:260
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr ""
-
-#: src/strip.c:298 src/strip.c:322
-#, c-format
-msgid "cannot stat input file '%s'"
-msgstr ""
-
-#: src/strip.c:312
-#, c-format
-msgid "while opening '%s'"
-msgstr ""
-
-#: src/strip.c:350
-#, c-format
-msgid "%s: cannot use -o or -f when stripping archive"
-msgstr ""
-
-#: src/strip.c:448
-#, c-format
-msgid "cannot open EBL backend"
-msgstr ""
-
-#: src/strip.c:498 src/strip.c:522
-#, c-format
-msgid "cannot create new file '%s': %s"
-msgstr ""
-
-#: src/strip.c:582
-#, c-format
-msgid "illformed file '%s'"
-msgstr ""
-
-#: src/strip.c:869 src/strip.c:956
-#, c-format
-msgid "while generating output file: %s"
-msgstr ""
-
-#: src/strip.c:929 src/strip.c:1668
-#, c-format
-msgid "%s: error while creating ELF header: %s"
-msgstr ""
-
-#: src/strip.c:943
-#, c-format
-msgid "while preparing output for '%s'"
-msgstr ""
-
-#: src/strip.c:994 src/strip.c:1050
-#, c-format
-msgid "while create section header section: %s"
-msgstr ""
-
-#: src/strip.c:1000
-#, c-format
-msgid "cannot allocate section data: %s"
-msgstr ""
-
-#: src/strip.c:1059
-#, c-format
-msgid "while create section header string table: %s"
-msgstr ""
-
-#: src/strip.c:1593 src/strip.c:1690
-#, c-format
-msgid "while writing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1604
-#, c-format
-msgid "while creating '%s'"
-msgstr ""
-
-#: src/strip.c:1616
-#, c-format
-msgid "while computing checksum for debug information"
-msgstr ""
-
-#: src/strip.c:1676
-#, c-format
-msgid "%s: error while reading the file: %s"
-msgstr ""
-
-#: src/strip.c:1722 src/strip.c:1729
-#, c-format
-msgid "error while finishing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1752 src/strip.c:1809
-#, c-format
-msgid "cannot set access and modification date of '%s'"
-msgstr ""
-
-#: src/unstrip.c:78
-msgid "Match MODULE against file names, not module names"
-msgstr ""
-
-#: src/unstrip.c:79
-msgid "Silently skip unfindable files"
-msgstr ""
-
-#: src/unstrip.c:82
-msgid "Place output into FILE"
-msgstr ""
-
-#: src/unstrip.c:84
-msgid "Create multiple output files under DIRECTORY"
-msgstr ""
-
-#: src/unstrip.c:85
-msgid "Use module rather than file names"
-msgstr ""
-
-#: src/unstrip.c:87
-msgid "Create output for modules that have no separate debug information"
-msgstr ""
-
-#: src/unstrip.c:90
-msgid "Apply relocations to section contents in ET_REL files"
-msgstr ""
-
-#: src/unstrip.c:92
-msgid "Only list module and file names, build IDs"
-msgstr ""
-
-#: src/unstrip.c:134
-#, c-format
-msgid "-d option specified twice"
-msgstr ""
-
-#: src/unstrip.c:166
-#, c-format
-msgid "only one of -o or -d allowed"
-msgstr ""
-
-#: src/unstrip.c:175
-#, c-format
-msgid "-n cannot be used with explicit files or -o or -d"
-msgstr ""
-
-#: src/unstrip.c:190
-#, c-format
-msgid "output directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:199
-#, c-format
-msgid "exactly two file arguments are required"
-msgstr ""
-
-#: src/unstrip.c:205
-#, c-format
-msgid "-m, -a, -R, and -i options not allowed with explicit files"
-msgstr ""
-
-#: src/unstrip.c:218
-#, c-format
-msgid "-o or -d is required when using implicit files"
-msgstr ""
-
-#: src/unstrip.c:254
-#, c-format
-msgid "cannot create ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:259
-#, c-format
-msgid "cannot copy ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:264 src/unstrip.c:1817
-#, c-format
-msgid "cannot create program headers: %s"
-msgstr ""
-
-#: src/unstrip.c:270
-#, c-format
-msgid "cannot copy program header: %s"
-msgstr ""
-
-#: src/unstrip.c:280
-#, c-format
-msgid "cannot copy section header: %s"
-msgstr ""
-
-#: src/unstrip.c:283 src/unstrip.c:1505
-#, c-format
-msgid "cannot get section data: %s"
-msgstr ""
-
-#: src/unstrip.c:285 src/unstrip.c:1507
-#, c-format
-msgid "cannot copy section data: %s"
-msgstr ""
-
-#: src/unstrip.c:309
-#, c-format
-msgid "cannot create directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:349 src/unstrip.c:763 src/unstrip.c:1540
-#, c-format
-msgid "cannot get symbol table entry: %s"
-msgstr ""
-
-#: src/unstrip.c:365 src/unstrip.c:580 src/unstrip.c:601 src/unstrip.c:613
-#: src/unstrip.c:1561 src/unstrip.c:1691 src/unstrip.c:1715
-#, c-format
-msgid "cannot update symbol table: %s"
-msgstr ""
-
-#: src/unstrip.c:382 src/unstrip.c:432 src/unstrip.c:562 src/unstrip.c:1209
-#: src/unstrip.c:1525 src/unstrip.c:1720 src/unstrip.c:1791
-#, c-format
-msgid "cannot update section header: %s"
-msgstr ""
-
-#: src/unstrip.c:408 src/unstrip.c:419
-#, c-format
-msgid "cannot update relocation: %s"
-msgstr ""
-
-#: src/unstrip.c:507
-#, c-format
-msgid "cannot get symbol version: %s"
-msgstr ""
-
-#: src/unstrip.c:519
-#, c-format
-msgid "unexpected section type in [%Zu] with sh_link to symtab"
-msgstr ""
-
-#: src/unstrip.c:769
-#, c-format
-msgid "invalid string offset in symbol [%Zu]"
-msgstr ""
-
-#: src/unstrip.c:911 src/unstrip.c:1248
-#, c-format
-msgid "cannot read section [%Zu] name: %s"
-msgstr ""
-
-#: src/unstrip.c:952 src/unstrip.c:971 src/unstrip.c:1004
-#, c-format
-msgid "cannot read '.gnu.prelink_undo' section: %s"
-msgstr ""
-
-#: src/unstrip.c:992
-#, c-format
-msgid "invalid contents in '%s' section"
-msgstr ""
-
-#: src/unstrip.c:1047 src/unstrip.c:1370
-#, c-format
-msgid "cannot find matching section for [%Zu] '%s'"
-msgstr ""
-
-#: src/unstrip.c:1171 src/unstrip.c:1186 src/unstrip.c:1451
-#, c-format
-msgid "cannot add section name to string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1195
-#, c-format
-msgid "cannot update section header string table data: %s"
-msgstr ""
-
-#: src/unstrip.c:1223 src/unstrip.c:1227
-#, c-format
-msgid "cannot get section header string table section index: %s"
-msgstr ""
-
-#: src/unstrip.c:1231 src/unstrip.c:1235 src/unstrip.c:1466
-#, c-format
-msgid "cannot get section count: %s"
-msgstr ""
-
-#: src/unstrip.c:1293 src/unstrip.c:1385
-#, c-format
-msgid "cannot read section header string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1445
-#, c-format
-msgid "cannot add new section: %s"
-msgstr ""
-
-#: src/unstrip.c:1548
-#, c-format
-msgid "symbol [%Zu] has invalid section index"
-msgstr ""
-
-#: src/unstrip.c:1800
-#, c-format
-msgid "cannot get ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:1827
-#, c-format
-msgid "cannot update program header: %s"
-msgstr ""
-
-#: src/unstrip.c:1832 src/unstrip.c:1911
-#, c-format
-msgid "cannot write output file: %s"
-msgstr ""
-
-#: src/unstrip.c:1880
-#, c-format
-msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1883
-#, c-format
-msgid ""
-"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1902 src/unstrip.c:1942 src/unstrip.c:1954 src/unstrip.c:2034
-#, c-format
-msgid "cannot create ELF descriptor: %s"
-msgstr ""
-
-#: src/unstrip.c:1960
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr ""
-
-#: src/unstrip.c:1991
-#, c-format
-msgid "cannot find stripped file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:1995
-#, c-format
-msgid "cannot open stripped file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2010
-#, c-format
-msgid "cannot find debug file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2014
-#, c-format
-msgid "cannot open debug file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2027
-#, c-format
-msgid "module '%s' file '%s' is not stripped"
-msgstr ""
-
-#: src/unstrip.c:2058
-#, c-format
-msgid "cannot cache section addresses for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2191
-#, c-format
-msgid "no matching modules found"
-msgstr ""
-
-#: src/unstrip.c:2200
-#, c-format
-msgid "matched more than one module"
-msgstr ""
-
-#: src/unstrip.c:2247
-msgid ""
-"STRIPPED-FILE DEBUG-FILE\n"
-"[MODULE...]"
-msgstr ""
-
-#: src/unstrip.c:2248
-msgid ""
-"Combine stripped files with separate symbols and debug information.\n\nThe "
-"first form puts the result in DEBUG-FILE if -o was not given.\n"
-"\n"
-"MODULE arguments give file name patterns matching modules to process.\n"
-"With -f these match the file name of the main (stripped) file (slashes are "
-"never special), otherwise they match the simple module names. With no "
-"arguments, process all modules found.\n"
-"\n"
-"Multiple modules are written to files under OUTPUT-DIRECTORY, creating "
-"subdirectories as needed. With -m these files have simple module names, "
-"otherwise they have the name of the main file complete with directory "
-"underneath OUTPUT-DIRECTORY.\n"
-"\n"
-"With -n no files are written, but one line to standard output for each "
-"module:\n"
-"\tSTART+SIZE BUILDID FILE DEBUGFILE MODULENAME\n"
-"START and SIZE are hexadecimal giving the address bounds of the module. "
-"BUILDID is hexadecimal for the build ID bits, or - if no ID is known; the "
-"hexadecimal may be followed by @0xADDR giving the address where the ID "
-"resides if that is known. FILE is the file name found for the module, or - "
-"if none was found, or . if an ELF image is available but not from any named "
-"file. DEBUGFILE is the separate debuginfo file name, or - if no debuginfo "
-"was found, or . if FILE contains the debug information."
-msgstr ""
diff --git a/po/uk.po b/po/uk.po
index 0ca049e7..53d2898a 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -2,13 +2,13 @@
# Copyright (C) 2010 Free Software Foundation, Inc.
# This file is distributed under the same license as the elfutils package.
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2010, 2011, 2012, 2013, 2014, 2015.
+# Yuri Chornoivan <yurchor@ukr.net>, 2010, 2011, 2012, 2013, 2014, 2015, 2020.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2019-11-26 09:48+0100\n"
-"PO-Revision-Date: 2015-09-26 16:41+0300\n"
+"POT-Creation-Date: 2021-02-05 21:10+0100\n"
+"PO-Revision-Date: 2020-03-28 14:59+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Language: uk\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Lokalize 20.03.70\n"
#: lib/color.c:53
msgid ""
@@ -47,19 +47,19 @@ msgid "cannot allocate memory"
msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ пам’ÑÑ‚ÑŒ"
#: lib/printversion.c:40
-#, fuzzy, c-format
+#, c-format
msgid ""
"Copyright (C) %s The elfutils developers <%s>.\n"
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""
-"© Red Hat, Inc., %s\n"
+"© Розробники elfutils, %s <%s>.\n"
"Це програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ” вільним, умови ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð°Ð´ÐµÐ½Ð¾ у його "
"початкових кодах. Умовами Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ ÐЕ передбачено жодних "
"гарантій, зокрема гарантій працездатноÑÑ‚Ñ– або придатноÑÑ‚Ñ– Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ñ— мети.\n"
-#: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: lib/xmalloc.c:48 lib/xmalloc.c:61 lib/xmalloc.c:73 src/readelf.c:3453
+#: src/readelf.c:11501 src/unstrip.c:312 src/unstrip.c:2398 src/unstrip.c:2603
#, c-format
msgid "memory exhausted"
msgstr "пам’ÑÑ‚ÑŒ вичерпано"
@@ -172,19 +172,16 @@ msgid "no string data"
msgstr "немає Ñ€Ñдкових даних"
#: libdw/dwarf_error.c:75
-#, fuzzy
msgid ".debug_str section missing"
-msgstr "немає розділу .debug_ranges"
+msgstr "пропущено розділ .debug_str"
#: libdw/dwarf_error.c:76
-#, fuzzy
msgid ".debug_line_str section missing"
-msgstr "немає розділу .debug_line"
+msgstr "пропущено розділ .debug_line_str"
#: libdw/dwarf_error.c:77
-#, fuzzy
msgid ".debug_str_offsets section missing"
-msgstr "немає розділу .debug_ranges"
+msgstr "пропущено розділ .debug_str_offsets"
#: libdw/dwarf_error.c:78
msgid "no address value"
@@ -222,24 +219,21 @@ msgstr "некоректна верÑÑ–Ñ DWARF"
msgid "invalid directory index"
msgstr "некоректний покажчик каталогу"
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:72
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73
msgid "address out of range"
msgstr "некоректна адреÑа"
#: libdw/dwarf_error.c:88
-#, fuzzy
msgid ".debug_loc section missing"
-msgstr "немає розділу .debug_line"
+msgstr "пропущено розділ .debug_loc"
#: libdw/dwarf_error.c:89
-#, fuzzy
msgid ".debug_loclists section missing"
-msgstr "немає розділу .debug_line"
+msgstr "пропущено розділ .debug_loclists"
#: libdw/dwarf_error.c:90
-#, fuzzy
msgid "not a location list value"
-msgstr "немає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑпиÑку адреÑ"
+msgstr "не Ñ” значеннÑм ÑпиÑку адреÑ"
#: libdw/dwarf_error.c:91
msgid "no block data"
@@ -253,7 +247,7 @@ msgstr "некоректний номер Ñ€Ñдка"
msgid "invalid address range index"
msgstr "некоректний Ñ–Ð½Ð´ÐµÐºÑ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ адреÑ"
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:73
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:74
msgid "no matching address range"
msgstr "не виÑвлено відповідного діапазону адреÑ"
@@ -270,9 +264,8 @@ msgid ".debug_ranges section missing"
msgstr "немає розділу .debug_ranges"
#: libdw/dwarf_error.c:98
-#, fuzzy
msgid ".debug_rnglists section missing"
-msgstr "немає розділу .debug_ranges"
+msgstr "пропущено розділ .debug_rnglists"
#: libdw/dwarf_error.c:99
msgid "invalid CFI section"
@@ -291,32 +284,30 @@ msgid "not a CU (unit) DIE"
msgstr "не Ñ” DIE CU (модулÑ)"
#: libdw/dwarf_error.c:103
-#, fuzzy
msgid "unknown language code"
-msgstr " невідомий код операції"
+msgstr "невідомий код мови"
#: libdw/dwarf_error.c:104
-#, fuzzy
msgid ".debug_addr section missing"
-msgstr "немає розділу .debug_ranges"
+msgstr "пропущено розділ .debug_addr"
-#: libdwfl/argp-std.c:50 src/stack.c:638 src/unstrip.c:2540
+#: libdwfl/argp-std.c:47 src/stack.c:643 src/unstrip.c:2544
msgid "Input selection options:"
msgstr "Вибір параметрів Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…:"
-#: libdwfl/argp-std.c:51
+#: libdwfl/argp-std.c:48
msgid "Find addresses in FILE"
msgstr "Знайти адреÑи у ФÐЙЛІ"
-#: libdwfl/argp-std.c:53
+#: libdwfl/argp-std.c:50
msgid "Find addresses from signatures found in COREFILE"
msgstr "Знайти адреÑи за Ñигнатурами з файла COREFILE"
-#: libdwfl/argp-std.c:55
+#: libdwfl/argp-std.c:52
msgid "Find addresses in files mapped into process PID"
msgstr "Знайти адреÑи у файлах, відображених на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID"
-#: libdwfl/argp-std.c:57
+#: libdwfl/argp-std.c:54
msgid ""
"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
"format"
@@ -324,47 +315,46 @@ msgstr ""
"Знайти адреÑи у файлах, відображених Ñк read за ФÐЙЛОМ у форматі /proc/PID/"
"maps Linux"
-#: libdwfl/argp-std.c:59
+#: libdwfl/argp-std.c:56
msgid "Find addresses in the running kernel"
msgstr "Знайти адреÑи у запущеному Ñдрі"
-#: libdwfl/argp-std.c:61
+#: libdwfl/argp-std.c:58
msgid "Kernel with all modules"
msgstr "Ядро з уÑіма модулÑми"
-#: libdwfl/argp-std.c:63 src/stack.c:645
+#: libdwfl/argp-std.c:60 src/stack.c:650
msgid "Search path for separate debuginfo files"
msgstr "Шукати у вказаному каталозі окремі файли debuginfo"
-#: libdwfl/argp-std.c:164
+#: libdwfl/argp-std.c:161
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr ""
"можна викориÑтовувати лише один за параметрів: -e, -p, -k, -K або --core"
-#: libdwfl/argp-std.c:237
+#: libdwfl/argp-std.c:234
msgid "cannot load kernel symbols"
msgstr "не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñимволи Ñдра"
#. Non-fatal to have no modules since we do have the kernel.
-#: libdwfl/argp-std.c:241
+#: libdwfl/argp-std.c:238
msgid "cannot find kernel modules"
msgstr "не вдалоÑÑ Ð²Ð¸Ñвити модулі Ñдра"
-#: libdwfl/argp-std.c:258
+#: libdwfl/argp-std.c:255
msgid "cannot find kernel or modules"
msgstr "не вдалоÑÑ Ð²Ð¸Ñвити Ñдро або модулі"
-#: libdwfl/argp-std.c:297
+#: libdwfl/argp-std.c:294
#, c-format
msgid "cannot read ELF core file: %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл core ELF: %s"
-#: libdwfl/argp-std.c:320
-#, fuzzy
+#: libdwfl/argp-std.c:317
msgid "Not enough memory"
-msgstr "неÑтача пам'ÑÑ‚Ñ–"
+msgstr "Бракує пам'ÑÑ‚Ñ–"
-#: libdwfl/argp-std.c:330
+#: libdwfl/argp-std.c:327
msgid "No modules recognized in core file"
msgstr "Ðе вдалоÑÑ Ð²Ð¸Ñвити модулі у файлі core"
@@ -397,126 +387,131 @@ msgid "LZMA decompression failed"
msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð· LZMA"
#: libdwfl/libdwflP.h:61
+#, fuzzy
+msgid "zstd decompression failed"
+msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð· gzip"
+
+#: libdwfl/libdwflP.h:62
msgid "no support library found for machine"
msgstr "у ÑиÑтемі не виÑвлено бібліотеки підтримки"
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:63
msgid "Callbacks missing for ET_REL file"
msgstr "Ðемає зворотних викликів Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° ET_REL"
-#: libdwfl/libdwflP.h:63
+#: libdwfl/libdwflP.h:64
msgid "Unsupported relocation type"
msgstr "Ðепідтримуваний тип переÑуваннÑ"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:65
msgid "r_offset is bogus"
msgstr "r_offset є фіктивним"
-#: libdwfl/libdwflP.h:65 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:66 libelf/elf_error.c:115 libelf/elf_error.c:175
msgid "offset out of range"
msgstr "Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ð³Ð¾ зміщеннÑ"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:67
msgid "relocation refers to undefined symbol"
msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑилаєтьÑÑ Ð½Ð° невизначений Ñимвол."
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:68
msgid "Callback returned failure"
msgstr "Зворотним викликом повернуто помилку"
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:69
msgid "No DWARF information found"
msgstr "Ðе виÑвлено відомоÑтей DWARF"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
msgid "No symbol table found"
msgstr "Ðе виÑвлено таблиці Ñимволів"
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
msgid "No ELF program headers"
msgstr "Ðемає заголовків програми ELF"
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
msgid "address range overlaps an existing module"
msgstr "діапазон Ð°Ð´Ñ€ÐµÑ Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ð²Ð°Ñ” Ñ–Ñнуючий модуль"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
msgid "image truncated"
msgstr "образ обрізано"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:76
msgid "ELF file opened"
msgstr "Відкритий файл ELF"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:77
msgid "not a valid ELF file"
msgstr "не є коректним файлом ELF"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
msgid "cannot handle DWARF type description"
msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ð¾Ð¿Ð¸Ñ Ñ‚Ð¸Ð¿Ñƒ DWARF"
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
msgid "ELF file does not match build ID"
msgstr "Файл ELF не відповідає ідентифікатору збираннÑ"
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
msgid "corrupt .gnu.prelink_undo section data"
msgstr "дані розділу «.gnu.prelink_undo» пошкоджено"
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
msgid "Internal error due to ebl"
msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° через ebl"
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
msgid "Missing data in core file"
msgstr "У файлі Ñдра не виÑтачає даних"
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
msgid "Invalid register"
msgstr "Ðекоректний регіÑÑ‚Ñ€"
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
msgid "Error reading process memory"
msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ð¼â€™ÑÑ‚Ñ– процеÑу"
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
msgid "Couldn't find architecture of any ELF"
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ хоч ÑкуÑÑŒ архітектуру ELF"
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
msgid "Error parsing /proc filesystem"
msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби обробки файлової ÑиÑтеми /proc"
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
msgid "Invalid DWARF"
msgstr "Ðекоректний Ð·Ð°Ð¿Ð¸Ñ DWARF"
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
msgid "Unsupported DWARF"
msgstr "Ðепідтримуваний Ð·Ð°Ð¿Ð¸Ñ DWARF"
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
msgid "Unable to find more threads"
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ додаткові потоки"
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
msgid "Dwfl already has attached state"
msgstr "Dwfl уже перебуває у Ñтані Ð´Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ процеÑу"
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
msgid "Dwfl has no attached state"
msgstr "Dwfl не перебуває у Ñтані Ð´Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ процеÑу"
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
msgid "Unwinding not supported for this architecture"
msgstr "Ð”Ð»Ñ Ñ†Ñ–Ñ”Ñ— архітектури Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ðµ передбачено"
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
msgid "Invalid argument"
msgstr "Ðекоректний аргумент"
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
msgid "Not an ET_CORE ELF file"
msgstr "Ðе Ñ” файлом ET_CORE ELF"
@@ -527,7 +522,7 @@ msgstr "Ðемає Ñервера"
#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
#: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:79
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
msgid "<unknown>"
msgstr "<невідомо>"
@@ -587,7 +582,7 @@ msgstr " Ід. збираннÑ: "
msgid " Linker version: %.*s\n"
msgstr " ВерÑÑ–Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ°: %.*s\n"
-#: libebl/eblobjnote.c:571
+#: libebl/eblobjnote.c:638
#, c-format
msgid " OS: %s, ABI: "
msgstr " ОС: %s, ABI: "
@@ -621,7 +616,7 @@ msgstr "некоректна розмірніÑÑ‚ÑŒ вхідного парамÐ
msgid "invalid size of destination operand"
msgstr "некоректна розмірніÑÑ‚ÑŒ вихідного параметра"
-#: libelf/elf_error.c:87 src/readelf.c:6166
+#: libelf/elf_error.c:87 src/readelf.c:6209
#, c-format
msgid "invalid encoding"
msgstr "некоректне кодуваннÑ"
@@ -631,9 +626,8 @@ msgid "invalid file descriptor"
msgstr "некоректний деÑкриптор файла"
#: libelf/elf_error.c:99
-#, fuzzy
msgid "invalid ELF file data"
-msgstr "некоректний файл ELF"
+msgstr "некоректні дані щодо файла ELF"
#: libelf/elf_error.c:103
msgid "invalid operation"
@@ -707,8 +701,8 @@ msgstr "невідповідніÑÑ‚ÑŒ полів data/scn"
msgid "invalid section header"
msgstr "некоректний заголовок розділу"
-#: libelf/elf_error.c:191 src/readelf.c:9914 src/readelf.c:10514
-#: src/readelf.c:10615 src/readelf.c:10797
+#: libelf/elf_error.c:191 src/readelf.c:10012 src/readelf.c:10612
+#: src/readelf.c:10713 src/readelf.c:10895
#, c-format
msgid "invalid data"
msgstr "некоректні дані"
@@ -753,38 +747,32 @@ msgid "file has no program header"
msgstr "у файлі немає заголовка програми"
#: libelf/elf_error.c:241
-#, fuzzy
msgid "invalid section type"
-msgstr "некоректний розділ"
+msgstr "некоректний тип розділу"
#: libelf/elf_error.c:246
-#, fuzzy
msgid "invalid section flags"
-msgstr "некоректний розділ"
+msgstr "некоректні прапорці розділу"
#: libelf/elf_error.c:251
-#, fuzzy
msgid "section does not contain compressed data"
-msgstr "розділ хешу [%2zu] «%s» міÑтить недоÑтатньо даних\n"
+msgstr "розділ не міÑтить ÑтиÑнутих даних"
#: libelf/elf_error.c:256
msgid "section contains compressed data"
-msgstr ""
+msgstr "розділ міÑтить ÑтиÑнені дані"
#: libelf/elf_error.c:261
-#, fuzzy
msgid "unknown compression type"
-msgstr "невизначений тип"
+msgstr "невідомий тип ÑтиÑненнÑ"
#: libelf/elf_error.c:266
-#, fuzzy
msgid "cannot compress data"
-msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ DWARF"
+msgstr "неможливо ÑтиÑнути дані"
#: libelf/elf_error.c:271
-#, fuzzy
msgid "cannot decompress data"
-msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ DWARF"
+msgstr "неможливо розпакувати дані"
#: src/addr2line.c:57
msgid "Input format options:"
@@ -868,12 +856,12 @@ msgstr "СинтакÑÐ¸Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² вимагає точного одн
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr "Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %#<PRIxMAX> розташовано поза межами розділу «%s»"
-#: src/addr2line.c:632
+#: src/addr2line.c:652
#, c-format
msgid "cannot find symbol '%s'"
msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñимвол «%s»"
-#: src/addr2line.c:637
+#: src/addr2line.c:657
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr "Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %#<PRIxMAX> розташовано поза межами вміÑту «%s»"
@@ -1045,12 +1033,12 @@ msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані архіву «%s» за Ð
msgid "no entry %s in archive\n"
msgstr "у архіві немає запиÑу %s\n"
-#: src/ar.c:472 src/ar.c:923 src/ar.c:1127
+#: src/ar.c:472 src/ar.c:927 src/ar.c:1134
#, c-format
msgid "cannot create hash table"
msgstr "не вдалоÑÑ Ñтворити таблицю хешів"
-#: src/ar.c:479 src/ar.c:930 src/ar.c:1136
+#: src/ar.c:479 src/ar.c:934 src/ar.c:1143
#, c-format
msgid "cannot insert into hash table"
msgstr "не вдалоÑÑ Ð²Ñтавити Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ таблиці хешів"
@@ -1090,70 +1078,70 @@ msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ чаÑову мітку зміни %s
msgid "cannot rename temporary file to %.*s"
msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ файл тимчаÑових даних на %.*s"
-#: src/ar.c:764 src/ar.c:1015 src/ar.c:1416 src/ranlib.c:222
+#: src/ar.c:764 src/ar.c:1019 src/ar.c:1423 src/ranlib.c:222
#, c-format
msgid "cannot create new file"
msgstr "не вдалоÑÑ Ñтворити файл"
-#: src/ar.c:1218
+#: src/ar.c:1225
#, c-format
msgid "position member %s not found"
msgstr "не виÑвлено елемента позиції %s"
-#: src/ar.c:1228
+#: src/ar.c:1235
#, c-format
msgid "%s: no entry %s in archive!\n"
msgstr "%s: у архіві немає запиÑу %s!\n"
-#: src/ar.c:1257 src/objdump.c:241
+#: src/ar.c:1264 src/objdump.c:241
#, c-format
msgid "cannot open %s"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s"
-#: src/ar.c:1262
+#: src/ar.c:1269
#, c-format
msgid "cannot stat %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані %s за допомогою stat"
-#: src/ar.c:1268
+#: src/ar.c:1275
#, c-format
msgid "%s is no regular file"
msgstr "%s не є звичайним файлом"
-#: src/ar.c:1281
+#: src/ar.c:1288
#, c-format
msgid "cannot get ELF descriptor for %s: %s\n"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ деÑкриптор ELF Ð´Ð»Ñ %s: %s\n"
-#: src/ar.c:1301
+#: src/ar.c:1308
#, c-format
msgid "cannot read %s: %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ %s: %s"
-#: src/ar.c:1476
-#, fuzzy, c-format
+#: src/ar.c:1483
+#, c-format
msgid "cannot represent ar_date"
-msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ DWARF"
+msgstr "неможливо предÑтавити ar_date"
-#: src/ar.c:1482
-#, fuzzy, c-format
+#: src/ar.c:1489
+#, c-format
msgid "cannot represent ar_uid"
-msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ DWARF"
+msgstr "неможливо предÑтавити ar_uid"
-#: src/ar.c:1488
-#, fuzzy, c-format
+#: src/ar.c:1495
+#, c-format
msgid "cannot represent ar_gid"
-msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ DWARF"
+msgstr "неможливо предÑтавити ar_gid"
-#: src/ar.c:1494
-#, fuzzy, c-format
+#: src/ar.c:1501
+#, c-format
msgid "cannot represent ar_mode"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву розділу"
+msgstr "неможливо предÑтавити ar_mode"
-#: src/ar.c:1500
-#, fuzzy, c-format
+#: src/ar.c:1507
+#, c-format
msgid "cannot represent ar_size"
-msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s"
+msgstr "неможливо предÑтавити ar_size"
#: src/arlib-argp.c:32
msgid "Use zero for uid, gid, and date in archive members."
@@ -1165,7 +1153,7 @@ msgid "Use actual uid, gid, and date in archive members."
msgstr ""
"ВикориÑтовувати поточні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ uid, gid, та дати у елементах архіву."
-#: src/arlib-argp.c:65
+#: src/arlib-argp.c:63
#, c-format
msgid "%s (default)"
msgstr "%s (типово)"
@@ -1255,14 +1243,14 @@ msgid "%s %s diff: program header count"
msgstr "%s %s diff: кількіÑÑ‚ÑŒ заголовків програми"
#: src/elfcmp.c:241 src/elfcmp.c:244
-#, fuzzy, c-format
+#, c-format
msgid "cannot get hdrstrndx of '%s': %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок ELF «%s»: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ hdrstrndx «%s»: %s"
#: src/elfcmp.c:249
-#, fuzzy, c-format
+#, c-format
msgid "%s %s diff: shdr string index"
-msgstr "%s %s diff: кількіÑÑ‚ÑŒ розділів"
+msgstr "Ñ€Ñ–Ð·Ð½Ð¸Ñ†Ñ Ð¼Ñ–Ð¶ %s Ñ– %s: Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ñдків shdr"
#: src/elfcmp.c:307
#, c-format
@@ -1375,8 +1363,8 @@ msgid "Invalid value '%s' for --gaps parameter."
msgstr "Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» параметра --gaps."
#: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
-#: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2189 src/unstrip.c:2218
+#: src/size.c:272 src/strings.c:185 src/strip.c:1030 src/strip.c:1067
+#: src/unstrip.c:2194 src/unstrip.c:2223
#, c-format
msgid "cannot open '%s'"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ «%s»"
@@ -1406,37 +1394,35 @@ msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ розділу %zu: %s"
msgid "cannot get relocation: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ переÑуваннÑ: %s"
-#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:121
+#: src/elfcompress.c:115 src/strip.c:308 src/unstrip.c:117
#, c-format
msgid "-o option specified twice"
msgstr "параметр -o вказано двічі"
#: src/elfcompress.c:122
-#, fuzzy, c-format
+#, c-format
msgid "-t option specified twice"
-msgstr "параметр -f вказано двічі"
+msgstr "параметр -t вказано двічі"
#: src/elfcompress.c:131
-#, fuzzy, c-format
+#, c-format
msgid "unknown compression type '%s'"
-msgstr "невизначений тип"
+msgstr "невідомий тип ÑтиÑÐ½ÐµÐ½Ð½Ñ Â«%s»"
#. We need at least one input file.
#: src/elfcompress.c:143 src/elfcompress.c:1347
-#, fuzzy, c-format
+#, c-format
msgid "No input file given"
-msgstr "вхідний файл є порожнім"
+msgstr "Ðе надано файла вхідних даних"
#: src/elfcompress.c:149 src/elfcompress.c:1352
-#, fuzzy, c-format
+#, c-format
msgid "Only one input file allowed together with '-o'"
-msgstr ""
-"Разом з «-o» або «-f» можна викориÑтовувати лише один файл вхідних даних"
+msgstr "З параметром «-o» можна викориÑтовувати лише один файл вхідних даних"
#: src/elfcompress.c:1309
-#, fuzzy
msgid "Place (de)compressed output into FILE"
-msgstr "ВивеÑти дані піÑÐ»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ ФÐЙЛа"
+msgstr "ПоміÑтити результати Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ ÑтиÑÐºÐ°Ð½Ð½Ñ Ð´Ð¾ ФÐЙЛа"
#: src/elfcompress.c:1312
msgid ""
@@ -1444,22 +1430,31 @@ msgid ""
"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or 'zlib-"
"gnu' (.zdebug GNU style compression, 'gnu' is an alias)"
msgstr ""
+"Визначає тип ÑтиÑканнÑ, Ñкий Ñлід заÑтоÑувати. ТИПом може бути "
+"«none» (розпакувати), «zlib» (ÑтиÑÐºÐ°Ð½Ð½Ñ ELF ZLIB, типовий варіант, інша "
+"назва — «zlib-gabi») або «zlib-gnu» (ÑтиÑÐºÐ°Ð½Ð½Ñ Ñƒ Ñтилі GNU .zdebug, інша "
+"назва — «gnu»)"
#: src/elfcompress.c:1315
msgid ""
"SECTION name to (de)compress, SECTION is an extended wildcard pattern "
"(defaults to '.?(z)debug*')"
msgstr ""
+"назва РОЗДІЛу Ð´Ð»Ñ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ ÑтиÑканнÑ, РОЗДІЛ Ñ” розширеним взірцем із "
+"замінниками (типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ -- «.?(z)debug*»)"
#: src/elfcompress.c:1318
msgid "Print a message for each section being (de)compressed"
msgstr ""
+"ВивеÑти Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ розділу, Ñкий розпаковуєтьÑÑ Ñ‡Ð¸ ÑтиÑкаєтьÑÑ"
#: src/elfcompress.c:1321
msgid ""
"Force compression of section even if it would become larger or update/"
"rewrite the file even if no section would be (de)compressed"
msgstr ""
+"ПримуÑове ÑтиÑÐºÐ°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, навіть Ñкщо він Ñтане більшим, або Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð¸ "
+"Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°, навіть Ñкщо жодного розділу не буде розпаковано або ÑтиÑнено"
#: src/elfcompress.c:1324 src/strip.c:93
msgid "Relax a few rules to handle slightly broken ELF files"
@@ -1467,10 +1462,8 @@ msgstr ""
"Знехтувати декількома правилами Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ трохи пошкоджених файлів ELF"
#: src/elfcompress.c:1327
-#, fuzzy
msgid "Be silent when a section cannot be compressed"
-msgstr ""
-"розділ [%2zu] «%s»: адреÑа розділів локальних даних потоків не Ñ” нульовою\n"
+msgstr "Ðе Ñповіщати, Ñкщо розділ неможливо ÑтиÑнути"
#. Strings for arguments in help texts.
#: src/elfcompress.c:1336 src/elflint.c:77 src/readelf.c:158
@@ -1479,7 +1472,7 @@ msgstr "ФÐЙЛ..."
#: src/elfcompress.c:1337
msgid "Compress or decompress sections in an ELF file."
-msgstr ""
+msgstr "СтиÑнути або розпакувати розділи у файлі ELF."
#: src/elflint.c:63
msgid "Be extremely strict, flag level 2 features."
@@ -1508,14 +1501,14 @@ msgstr ""
"Педантична перевірка файлів ELF на ÑуміÑніÑÑ‚ÑŒ зі ÑпецифікаціÑми gABI/psABI."
#: src/elflint.c:154 src/readelf.c:368
-#, fuzzy, c-format
+#, c-format
msgid "cannot open input file '%s'"
-msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ вхідний файл."
+msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ вхідний файл «%s»"
#: src/elflint.c:161
-#, fuzzy, c-format
+#, c-format
msgid "cannot generate Elf descriptor for '%s': %s\n"
-msgstr "не вдалоÑÑ Ñтворити деÑкриптор Elf: %s\n"
+msgstr "не вдалоÑÑ Ñтворити деÑкриптор Elf Ð´Ð»Ñ Â«%s»: %s\n"
#: src/elflint.c:180
#, c-format
@@ -1526,7 +1519,7 @@ msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÐµÑкриÐ
msgid "No errors"
msgstr "Без помилок"
-#: src/elflint.c:219 src/readelf.c:575
+#: src/elflint.c:219 src/readelf.c:577
msgid "Missing file name.\n"
msgstr "Ðе вказано назви файла.\n"
@@ -1562,7 +1555,7 @@ msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr "непідтримуване ABI ОС e_ident[%d] == «%s»\n"
#: src/elflint.c:380
-#, fuzzy, c-format
+#, c-format
msgid "unsupported ABI version e_ident[%d] == %d\n"
msgstr "непідтримувана верÑÑ–Ñ ABI e_ident[%d] == %d\n"
@@ -1626,7 +1619,7 @@ msgstr "некоректний Ñ–Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу\n"
#: src/elflint.c:473
#, c-format
msgid "Can only check %u headers, shnum was %u\n"
-msgstr ""
+msgstr "Можна перевірити лише %u заголовків, значеннÑм же shnum було %u\n"
#: src/elflint.c:487
#, c-format
@@ -1636,7 +1629,7 @@ msgstr "некоректна кількіÑÑ‚ÑŒ запиÑів таблиці з
#: src/elflint.c:504
#, c-format
msgid "Can only check %u headers, phnum was %u\n"
-msgstr ""
+msgstr "Можна перевірити лише %u заголовків, значеннÑм же phnum було %u\n"
#: src/elflint.c:509
#, c-format
@@ -1685,14 +1678,14 @@ msgstr ""
"розділ [%2d] «%s»: групу розділів [%2zu] «%s» мало бути визначено до розділу-"
"елемента цієї групи\n"
-#: src/elflint.c:610 src/elflint.c:1494 src/elflint.c:1545 src/elflint.c:1651
-#: src/elflint.c:1987 src/elflint.c:2313 src/elflint.c:2932 src/elflint.c:3095
-#: src/elflint.c:3243 src/elflint.c:3433 src/elflint.c:4431
+#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
+#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
+#: src/elflint.c:3254 src/elflint.c:3444 src/elflint.c:4456
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу\n"
-#: src/elflint.c:623 src/elflint.c:1658
+#: src/elflint.c:623 src/elflint.c:1662
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1715,178 +1708,190 @@ msgstr ""
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr "розділ [%2u] «%s»: розмірніÑÑ‚ÑŒ запиÑу не відповідає ElfXX_Sym\n"
-#: src/elflint.c:667
+#: src/elflint.c:662
+#, c-format
+msgid ""
+"section [%2u] '%s': number of local entries in 'st_info' larger than table "
+"size\n"
+msgstr ""
+"розділ [%2u] «%s»: кількіÑÑ‚ÑŒ локальних запиÑів у «st_info» перевищує розмір "
+"таблиці\n"
+
+#: src/elflint.c:671
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñимвол %d: %s\n"
-#: src/elflint.c:672 src/elflint.c:675 src/elflint.c:678 src/elflint.c:681
-#: src/elflint.c:684 src/elflint.c:687
+#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
+#: src/elflint.c:688 src/elflint.c:691
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "розділ [%2d] «%s»: «%s» у нульовому запиÑÑ– не Ñ” нулем\n"
-#: src/elflint.c:690
+#: src/elflint.c:694
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "розділ [%2d] «%s»: XINDEX Ð´Ð»Ñ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ð³Ð¾ запиÑу не Ñ” нулем\n"
-#: src/elflint.c:700
+#: src/elflint.c:704
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñимвол %zu: %s\n"
-#: src/elflint.c:709
+#: src/elflint.c:713
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "розділ [%2d] «%s»: Ñимвол %zu: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸\n"
-#: src/elflint.c:724
-#, c-format
+#: src/elflint.c:728
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
+"section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
"section index section\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: занадто великий покажчик розділу за умови, що "
"не визначено розділу розширеного покажчика розділів\n"
-#: src/elflint.c:730
-#, c-format
+#: src/elflint.c:734
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
+"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
+"in st_shndx (%<PRIu32>)\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: XINDEX викориÑтано Ð´Ð»Ñ Ñ–Ð½Ð´ÐµÐºÑуваннÑ, Ñке не "
"відповідає st_shndx (%<PRIu32>)\n"
#. || sym->st_shndx > SHN_HIRESERVE always false
-#: src/elflint.c:742
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
+#: src/elflint.c:746
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
msgstr "розділ [%2d] «%s»: Ñимвол %zu: некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ\n"
-#: src/elflint.c:750
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
+#: src/elflint.c:754
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
msgstr "розділ [%2d] «%s»: Ñимвол %zu: невідомий тип\n"
-#: src/elflint.c:756
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
+#: src/elflint.c:760
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
msgstr "розділ [%2d] «%s»: Ñимвол %zu: невідома прив’Ñзка Ñимволу\n"
-#: src/elflint.c:761
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
+#: src/elflint.c:765
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: унікальний Ñимвол, що не належить до типу "
"об’єктів\n"
-#: src/elflint.c:769
-#, c-format
+#: src/elflint.c:773
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
+"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
+"files\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: COMMON можна викориÑтовувати лише у файлах, "
"придатних до переÑуваннÑ\n"
-#: src/elflint.c:773
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
+#: src/elflint.c:777
+#, fuzzy, c-format
+msgid ""
+"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: викориÑÑ‚Ð°Ð½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… Ñимволів COMMON "
"позбавлене ÑенÑу\n"
-#: src/elflint.c:777
-#, c-format
+#: src/elflint.c:781
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
+"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: викориÑÑ‚Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— у розділі COMMON "
"позбавлене ÑенÑу\n"
-#: src/elflint.c:828
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
+#: src/elflint.c:832
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ st_value поза можливим діапазоном\n"
-#: src/elflint.c:834 src/elflint.c:859 src/elflint.c:908
-#, c-format
+#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
+"section [%2d] '%s'\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu не повніÑÑ‚ÑŽ відповідає розділу, на Ñкий "
"поÑилаєтьÑÑ, [%2d] «%s»\n"
-#: src/elflint.c:843
-#, c-format
+#: src/elflint.c:847
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
+"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
+"have SHF_TLS flag set\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ поÑÐ¸Ð»Ð°Ð½Ð½Ñ [%2d] «%s» не "
"вÑтановлено прапорець SHF_TLS\n"
-#: src/elflint.c:853 src/elflint.c:901
-#, c-format
+#: src/elflint.c:857 src/elflint.c:905
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
+"section [%2d] '%s'\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ st_value поза межами розділу "
"поÑиланнÑ, [%2d] «%s»\n"
-#: src/elflint.c:880
-#, c-format
+#: src/elflint.c:884
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
+"entry\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: Ñимвол TLS без запиÑу заголовка програми TLS\n"
-#: src/elflint.c:886
-#, c-format
+#: src/elflint.c:890
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but couldn't get TLS program "
+"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
"header entry\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: маємо Ñимвол TLS, але не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ "
"Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° програми TLS\n"
-#: src/elflint.c:894
-#, c-format
+#: src/elflint.c:898
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
-"'%s'\n"
+"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
+"[%2d] '%s'\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ st_value перед розділом поÑиланнÑ, "
"[%2d] «%s»\n"
-#: src/elflint.c:921
-#, c-format
+#: src/elflint.c:925
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
+"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
"sh_info\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: у sh_info опиÑано локальний Ñимвол поза "
"діапазоном\n"
-#: src/elflint.c:928
-#, c-format
+#: src/elflint.c:932
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
+"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
+"described in sh_info\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: у sh_info опиÑано нелокальний Ñимвол поза "
"діапазоном\n"
-#: src/elflint.c:935
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
+#: src/elflint.c:939
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
msgstr "розділ [%2d] «%s»: Ñимвол %zu: нелокальний Ñимвол розділу\n"
-#: src/elflint.c:985
+#: src/elflint.c:989
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -1895,7 +1900,7 @@ msgstr ""
"розділ [%2d] «%s»: Ñимвол _GLOBAL_OFFSET_TABLE_ поÑилаєтьÑÑ Ð½Ð° помилковий "
"розділ, [%2d]\n"
-#: src/elflint.c:992
+#: src/elflint.c:996
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -1907,7 +1912,7 @@ msgstr ""
#. This test is more strict than the psABIs which
#. usually allow the symbol to be in the middle of
#. the .got section, allowing negative offsets.
-#: src/elflint.c:1008
+#: src/elflint.c:1012
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -1916,7 +1921,7 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñимволу _GLOBAL_OFFSET_TABLE_ %#<PRIx64> не "
"відповідає адреÑÑ– розділу %s %#<PRIx64>\n"
-#: src/elflint.c:1015
+#: src/elflint.c:1019
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -1925,7 +1930,7 @@ msgstr ""
"розділ [%2d] «%s»: розмір Ñимволу _GLOBAL_OFFSET_TABLE_ %<PRIu64> не "
"відповідає розміру розділу %s %<PRIu64>\n"
-#: src/elflint.c:1023
+#: src/elflint.c:1027
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -1934,7 +1939,7 @@ msgstr ""
"розділ [%2d] «%s»: виÑвлено Ñимвол _GLOBAL_OFFSET_TABLE_, але не виÑвлено "
"розділу .got\n"
-#: src/elflint.c:1039
+#: src/elflint.c:1043
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -1943,7 +1948,7 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñимволу _DYNAMIC_ %#<PRIx64> не відповідає "
"адреÑÑ– динамічного Ñегмента %#<PRIx64>\n"
-#: src/elflint.c:1046
+#: src/elflint.c:1050
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -1952,38 +1957,38 @@ msgstr ""
"розділ [%2d] «%s»: розмір Ñимволу _DYNAMIC %<PRIu64> не відповідає розміру "
"динамічного Ñегмента %<PRIu64>\n"
-#: src/elflint.c:1059
-#, c-format
+#: src/elflint.c:1063
+#, fuzzy, c-format
msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
+"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
"default visibility\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %zu: Ñимвол у динамічній таблиці Ñимволів з "
"нетиповою видиміÑÑ‚ÑŽ\n"
-#: src/elflint.c:1063
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
+#: src/elflint.c:1067
+#, fuzzy, c-format
+msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
msgstr "розділ [%2d] «%s»: Ñимвол %zu: невідомий набір бітів у st_other\n"
-#: src/elflint.c:1101
+#: src/elflint.c:1105
#, c-format
msgid "section [%2d] '%s': cannot get section data.\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу.\n"
-#: src/elflint.c:1117
+#: src/elflint.c:1121
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "розділ [%2d] «%s»: Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ розділу RELA викориÑтано DT_RELCOUNT\n"
-#: src/elflint.c:1128 src/elflint.c:1181
+#: src/elflint.c:1132 src/elflint.c:1185
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ DT_RELCOUNT %d Ñ” занадто виÑоким Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ "
"розділу\n"
-#: src/elflint.c:1153 src/elflint.c:1206
+#: src/elflint.c:1157 src/elflint.c:1210
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
@@ -1992,7 +1997,7 @@ msgstr ""
"розділ [%2d] «%s»: відноÑні переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ–ÑÐ»Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ— %d, вказаної за "
"допомогою DT_RELCOUNT\n"
-#: src/elflint.c:1159 src/elflint.c:1212
+#: src/elflint.c:1163 src/elflint.c:1216
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -2001,52 +2006,53 @@ msgstr ""
"розділ [%2d] «%s»: безвідноÑне переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° позиції %zu; DT_RELCOUNT "
"визначено %d відноÑних переÑуваннÑ\n"
-#: src/elflint.c:1171
+#: src/elflint.c:1175
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "розділ [%2d] «%s»: Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ розділу REL викориÑтано DT_RELACOUNT\n"
-#: src/elflint.c:1254
+#: src/elflint.c:1258
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "розділ [%2d] «%s»: некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ призначеннÑ\n"
-#: src/elflint.c:1266
+#: src/elflint.c:1270
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "розділ [%2d] «%s»: некоректний тип розділу призначеннÑ\n"
-#: src/elflint.c:1274
+#: src/elflint.c:1278
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "розділ [%2d] «%s»: sh_info має бути нульовим\n"
-#: src/elflint.c:1282
-#, fuzzy, c-format
+#: src/elflint.c:1286
+#, c-format
msgid ""
"section [%2d] '%s': no relocations for merge-able string sections possible\n"
msgstr ""
-"розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ придатних до Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð°Ñ… неможливе\n"
+"розділ [%2d] «%s»: неможливі переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ñ€Ñдків, Ñкі непридатні "
+"до об'єднаннÑ\n"
-#: src/elflint.c:1290
+#: src/elflint.c:1294
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
"розділ [%2d] «%s»: розмірніÑÑ‚ÑŒ запиÑу розділу не відповідає ElfXX_Rela\n"
-#: src/elflint.c:1350
+#: src/elflint.c:1354
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
"вÑтановлено прапорець переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту, але Ñегмент придатний лише до "
"читаннÑ\n"
-#: src/elflint.c:1377
+#: src/elflint.c:1381
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ %zu: некоректний тип\n"
-#: src/elflint.c:1385
+#: src/elflint.c:1389
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -2055,12 +2061,12 @@ msgstr ""
"розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ %zu: некоректний тип переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ñƒ "
"файла\n"
-#: src/elflint.c:1393
+#: src/elflint.c:1397
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr "розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ %zu: некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñимволу\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1415
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -2069,12 +2075,12 @@ msgstr ""
"розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ %zu: з %s можна викориÑтовувати лише Ñимвол "
"«_GLOBAL_OFFSET_TABLE_»\n"
-#: src/elflint.c:1428
+#: src/elflint.c:1432
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ %zu: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð° межі діапазону\n"
-#: src/elflint.c:1443
+#: src/elflint.c:1447
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -2083,7 +2089,7 @@ msgstr ""
"розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ %zu: переÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñимволу типу "
"%s\n"
-#: src/elflint.c:1464
+#: src/elflint.c:1468
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -2092,22 +2098,22 @@ msgstr ""
"розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ %zu: змінено придатний лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ "
"розділ, але не вÑтановлено прапорець переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту\n"
-#: src/elflint.c:1479
+#: src/elflint.c:1483
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr "розділ [%2d] «%s»: переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð¸Ñ… Ñ– незавантажених даних\n"
-#: src/elflint.c:1519 src/elflint.c:1570
+#: src/elflint.c:1523 src/elflint.c:1574
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: %s\n"
-#: src/elflint.c:1646
+#: src/elflint.c:1650
#, c-format
msgid "more than one dynamic section present\n"
msgstr "вказано більше одного динамічного розділу\n"
-#: src/elflint.c:1664
+#: src/elflint.c:1668
#, c-format
msgid ""
"section [%2d]: referenced as string table for section [%2d] '%s' but section "
@@ -2116,46 +2122,46 @@ msgstr ""
"розділ [%2d]: надано поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° таблицю Ñ€Ñдків розділу [%2d] «%s», але "
"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ Ñ” некоректним\n"
-#: src/elflint.c:1672
+#: src/elflint.c:1676
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
"розділ [%2d] «%s»: розмірніÑÑ‚ÑŒ запиÑу розділу не відповідає ElfXX_Dyn\n"
-#: src/elflint.c:1677 src/elflint.c:1966
+#: src/elflint.c:1681 src/elflint.c:1970
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr "розділ [%2d] «%s»: sh_info не є нульовим\n"
-#: src/elflint.c:1687
+#: src/elflint.c:1691
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
"розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ розділу %zu: %s\n"
-#: src/elflint.c:1695
+#: src/elflint.c:1699
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr ""
"розділ [%2d] «%s»: за запиÑом DT_NULL вказано запиÑи, що не належать до "
"DT_NULL\n"
-#: src/elflint.c:1702
+#: src/elflint.c:1706
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr "розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %zu: невідома мітка\n"
-#: src/elflint.c:1713
+#: src/elflint.c:1717
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr "розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %zu: декілька запиÑів з міткою %s\n"
-#: src/elflint.c:1723
+#: src/elflint.c:1727
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr "розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %zu: викориÑтано мітку Ñ€Ñ–Ð²Ð½Ñ 2 %s\n"
-#: src/elflint.c:1741
+#: src/elflint.c:1745
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -2163,7 +2169,7 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %zu: значеннÑм DT_PLTREL має бути DT_REL або "
"DT_RELA\n"
-#: src/elflint.c:1754
+#: src/elflint.c:1758
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -2172,7 +2178,7 @@ msgstr ""
"розділ [%2d] «%s»: розділ %zu: вказівник не відповідає адреÑÑ– розділу [%2d] "
"«%s», на Ñку поÑилаєтьÑÑ sh_link\n"
-#: src/elflint.c:1797
+#: src/elflint.c:1801
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
@@ -2180,7 +2186,7 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %zu: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s має вказувати на завантажений "
"Ñегмент\n"
-#: src/elflint.c:1812
+#: src/elflint.c:1816
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -2189,48 +2195,48 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %zu: значеннÑм %s має бути коректне Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ "
"розділі [%2d] «%s»\n"
-#: src/elflint.c:1832 src/elflint.c:1860
+#: src/elflint.c:1836 src/elflint.c:1864
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr "розділ [%2d] «%s»: міÑтить Ð·Ð°Ð¿Ð¸Ñ %s, але не %s\n"
-#: src/elflint.c:1844
+#: src/elflint.c:1848
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr "розділ [%2d] «%s»: немає обов’Ñзкової мітки %s\n"
-#: src/elflint.c:1853
+#: src/elflint.c:1857
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr "розділ [%2d] «%s»: не виÑвлено розділу хешів\n"
-#: src/elflint.c:1868 src/elflint.c:1875
+#: src/elflint.c:1872 src/elflint.c:1879
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr "розділ [%2d] «%s»: вказано не вÑÑ– зі значень %s, %s Ñ– %s\n"
-#: src/elflint.c:1885 src/elflint.c:1889
+#: src/elflint.c:1889 src/elflint.c:1893
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
"розділ [%2d] «%s»: у DSO, позначеному на кроці попереднього компонуваннÑ, "
"немає мітки %s\n"
-#: src/elflint.c:1895
+#: src/elflint.c:1899
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
"розділ [%2d] «%s»: під Ñ‡Ð°Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñк залежніÑÑ‚ÑŒ позначено "
"файл, Ñкий не Ñ” файлом DSO\n"
-#: src/elflint.c:1906 src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918
+#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
"розділ [%2d] «%s»: у попередньо Ñкомпонованому виконуваному файлі не "
"міÑтитьÑÑ Ð¼Ñ–Ñ‚ÐºÐ¸ %s\n"
-#: src/elflint.c:1930
+#: src/elflint.c:1934
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
@@ -2238,7 +2244,7 @@ msgstr ""
"розділ [%2d] «%s»: розширений розділ покажчика можуть мати лише файли, "
"придатні до переÑуваннÑ\n"
-#: src/elflint.c:1940
+#: src/elflint.c:1944
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
@@ -2246,29 +2252,29 @@ msgstr ""
"розділ [%2d] «%s»: розділ розширеного покажчика розділів не призначено Ð´Ð»Ñ "
"таблиць Ñимволів\n"
-#: src/elflint.c:1944
+#: src/elflint.c:1948
#, c-format
msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
msgstr ""
"розділ [%2d] «%s»: Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ð³Ð¾ розділу sh_link [%2d] Ñ” некоректним\n"
-#: src/elflint.c:1949
+#: src/elflint.c:1953
#, c-format
msgid "cannot get data for symbol section\n"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñимволів\n"
-#: src/elflint.c:1952
+#: src/elflint.c:1956
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr "розділ [%2d] «%s»: розмірніÑÑ‚ÑŒ запиÑу не відповідає Elf32_Word\n"
-#: src/elflint.c:1961
+#: src/elflint.c:1965
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
"розділ [%2d] «%s»: розширена Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° замала Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñимволів\n"
-#: src/elflint.c:1976
+#: src/elflint.c:1980
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -2277,24 +2283,24 @@ msgstr ""
"розділ [%2d] «%s»: розширений покажчик розділів у розділі [%2zu] «%s» "
"поÑилаєтьÑÑ Ð½Ð° ту Ñаму таблицю розділів\n"
-#: src/elflint.c:1994
+#: src/elflint.c:1998
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr "Ñимволу 0 має відповідати нульовий Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ð³Ð¾ розділу\n"
-#: src/elflint.c:2006
+#: src/elflint.c:2010
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñимволу %zu\n"
-#: src/elflint.c:2011
+#: src/elflint.c:2015
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
"Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ð³Ð¾ розділу дорівнює %<PRIu32>, але Ñ–Ð½Ð´ÐµÐºÑ Ñимволу не Ñ” "
"XINDEX\n"
-#: src/elflint.c:2028 src/elflint.c:2085
+#: src/elflint.c:2032 src/elflint.c:2089
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
@@ -2302,43 +2308,43 @@ msgstr ""
"розділ [%2d] «%s»: розділ таблиці хешів занадто малий (розмір %ld, мало бути "
"— %ld)\n"
-#: src/elflint.c:2042 src/elflint.c:2099
+#: src/elflint.c:2046 src/elflint.c:2103
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr "розділ [%2d] «%s»: маÑив ланцюжка занадто великий\n"
-#: src/elflint.c:2056 src/elflint.c:2113
+#: src/elflint.c:2060 src/elflint.c:2117
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° хеш блоку %zu лежить поза межами діапазону\n"
-#: src/elflint.c:2066
+#: src/elflint.c:2070
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ° хешів %zu лежить поза межами "
"діапазону\n"
-#: src/elflint.c:2123
+#: src/elflint.c:2127
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ° хешів %<PRIu64> лежить поза межами "
"діапазону\n"
-#: src/elflint.c:2136
+#: src/elflint.c:2140
#, c-format
msgid "section [%2d] '%s': not enough data\n"
msgstr "розділ [%2d] «%s»: недоÑтатньо даних\n"
-#: src/elflint.c:2148
+#: src/elflint.c:2152
#, c-format
msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
msgstr ""
"розділ [%2d] «%s»: розмір бітової маÑки Ñ” нульовим або не Ñ” Ñтепенем 2: %u\n"
-#: src/elflint.c:2164
+#: src/elflint.c:2168
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
@@ -2347,12 +2353,12 @@ msgstr ""
"розділ [%2d] «%s»: розділ таблиці хешів є надто малим (маємо %ld, мало бути "
"принаймні %ld)\n"
-#: src/elflint.c:2173
+#: src/elflint.c:2177
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr "розділ [%2d] «%s»: зÑув 2-ої функції Ñ…ÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ великий: %u\n"
-#: src/elflint.c:2207
+#: src/elflint.c:2211
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -2360,7 +2366,7 @@ msgstr ""
"розділ [%2d] '%s': ланцюжок хешів Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÑƒ %zu розташовано нижче за позицію "
"Ð²Ñ–Ð´Ñ…Ð¸Ð»ÐµÐ½Ð½Ñ Ñ–Ð½Ð´ÐµÐºÑу Ñимволу\n"
-#: src/elflint.c:2228
+#: src/elflint.c:2232
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -2369,7 +2375,7 @@ msgstr ""
"розділ [%2d] «%s»: Ñимвол %u, на Ñкий поÑилаєтьÑÑ Ð»Ð°Ð½Ñ†ÑŽÐ¶Ð¾Ðº у блоці %zu не "
"визначено\n"
-#: src/elflint.c:2241
+#: src/elflint.c:2245
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -2377,7 +2383,7 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ…ÐµÑˆÑƒ Ð´Ð»Ñ Ñимволу %u у ланцюжку Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÑƒ %zu Ñ” "
"помилковим\n"
-#: src/elflint.c:2250
+#: src/elflint.c:2254
#, c-format
msgid ""
"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
@@ -2385,14 +2391,14 @@ msgstr ""
"розділ [%2d] «%s»: Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð°Ñки Ð´Ð»Ñ Ñимволу %u у ланцюжку Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÑƒ %zu Ñ” "
"помилковим\n"
-#: src/elflint.c:2280
+#: src/elflint.c:2284
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: ланцюжок хешів Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÑƒ %zu лежить поза межами "
"діапазону\n"
-#: src/elflint.c:2285
+#: src/elflint.c:2289
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -2400,43 +2406,43 @@ msgstr ""
"розділ [%2d] «%s»: поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñимвол у ланцюжку Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÑƒ %zu лежить поза "
"межами діапазону\n"
-#: src/elflint.c:2291
+#: src/elflint.c:2295
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr "розділ [%2d] «%s»: бітова маÑка не відповідає назвам у таблиці хешів\n"
-#: src/elflint.c:2304
+#: src/elflint.c:2308
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
"розділ [%2d] «%s»: придатні до переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð¸ не можуть міÑтити таблиць "
"хешів\n"
-#: src/elflint.c:2322
+#: src/elflint.c:2326
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
"розділ [%2d] «%s»: таблицю хешів не призначено Ð´Ð»Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– "
"динамічних Ñимволів\n"
-#: src/elflint.c:2326
+#: src/elflint.c:2330
#, c-format
msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
msgstr ""
"розділ [%2d] «%s»: некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ таблиці Ñимволів sh_link "
"[%2d]\n"
-#: src/elflint.c:2336
+#: src/elflint.c:2340
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr "розділ [%2d] «%s»: розмірніÑÑ‚ÑŒ запиÑу таблиці хешів Ñ” некоректною\n"
-#: src/elflint.c:2341
+#: src/elflint.c:2345
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr "розділ [%2d] «%s»: не позначено Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑуваннÑ\n"
-#: src/elflint.c:2346
+#: src/elflint.c:2350
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2445,27 +2451,27 @@ msgstr ""
"розділ [%2d] «%s»: у таблиці хешів виÑвлено незвичайне Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ "
"початкових адмініÑтративних запиÑів\n"
-#: src/elflint.c:2395
+#: src/elflint.c:2399
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr "sh_link у розділах хешів [%2zu] «%s» Ñ– [%2zu] «%s» не збігаютьÑÑ\n"
-#: src/elflint.c:2419 src/elflint.c:2484 src/elflint.c:2519
+#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
#, c-format
msgid "hash section [%2zu] '%s' does not contain enough data\n"
msgstr "розділ хешу [%2zu] «%s» міÑтить недоÑтатньо даних\n"
-#: src/elflint.c:2440
+#: src/elflint.c:2444
#, c-format
msgid "hash section [%2zu] '%s' has zero bit mask words\n"
msgstr "розділ хешу [%2zu] «%s» міÑтить нульові Ñлова бітової маÑки\n"
-#: src/elflint.c:2451 src/elflint.c:2495 src/elflint.c:2532
+#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
#, c-format
msgid "hash section [%2zu] '%s' uses too much data\n"
msgstr "розділ хешу [%2zu] «%s» викориÑтовує надто багато даних\n"
-#: src/elflint.c:2466
+#: src/elflint.c:2470
#, c-format
msgid ""
"hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
@@ -2474,17 +2480,17 @@ msgstr ""
"розділ хешу [%2zu] «%s» некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñимволу %<PRIu32> (макÑ. к-Ñ‚ÑŒ "
"Ñимволів: %<PRIu32>, кількіÑÑ‚ÑŒ запиÑів: %<PRIu32>\n"
-#: src/elflint.c:2553
+#: src/elflint.c:2557
#, c-format
msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
msgstr "розділ хешу [%2zu] «%s» некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_entsize\n"
-#: src/elflint.c:2563 src/elflint.c:2567
+#: src/elflint.c:2567 src/elflint.c:2571
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr "розділ [%2zu] «%s»: поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñ–Ð½Ð´ÐµÐºÑ Ñимволів 0\n"
-#: src/elflint.c:2574
+#: src/elflint.c:2578
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2493,7 +2499,7 @@ msgstr ""
"виÑвлено поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñимвол %d у новій таблиці хешів у [%2zu] «%s», але "
"його немає у Ñтарій таблиці хешів у [%2zu] «%s»\n"
-#: src/elflint.c:2586
+#: src/elflint.c:2590
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2502,12 +2508,12 @@ msgstr ""
"виÑвлено поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñимвол %d у Ñтарій таблиці хешів у [%2zu] «%s», але "
"його немає у новій таблиці хешів у [%2zu] «%s»\n"
-#: src/elflint.c:2602
+#: src/elflint.c:2606
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr "розділ [%2d] «%s»: ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_%s Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ NULL\n"
-#: src/elflint.c:2622
+#: src/elflint.c:2626
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
@@ -2515,95 +2521,95 @@ msgstr ""
"розділ [%2d] «%s»: групи розділів передбачено лише Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ñ… до "
"переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… файлах\n"
-#: src/elflint.c:2633
+#: src/elflint.c:2637
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ таблицю Ñимволів: %s\n"
-#: src/elflint.c:2638
+#: src/elflint.c:2642
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
"розділ [%2d] «%s»: поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ у sh_link не має таблиці Ñимволів\n"
-#: src/elflint.c:2644
+#: src/elflint.c:2648
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr "розділ [%2d] «%s»: некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñимволу у sh_info\n"
-#: src/elflint.c:2649
+#: src/elflint.c:2653
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr "розділ [%2d] «%s»: sh_flags не є нульовим\n"
-#: src/elflint.c:2656
+#: src/elflint.c:2660
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñимвол Ð´Ð»Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñу\n"
-#: src/elflint.c:2660
+#: src/elflint.c:2664
#, c-format
msgid "section [%2d] '%s': cannot get symbol name for signature\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву Ñимволу Ð´Ð»Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñу\n"
-#: src/elflint.c:2665
+#: src/elflint.c:2669
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr "розділ [%2d] «%s»: Ñимвол підпиÑу не може бути порожнім Ñ€Ñдком\n"
-#: src/elflint.c:2671
+#: src/elflint.c:2675
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr "розділ [%2d] «%s»: Ð´Ð»Ñ sh_flags вÑтановлено помилкове значеннÑ\n"
-#: src/elflint.c:2677
+#: src/elflint.c:2681
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані: %s\n"
-#: src/elflint.c:2686
+#: src/elflint.c:2690
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr "розділ [%2d] «%s»: розмір розділу не є кратним до sizeof(Elf32_Word)\n"
-#: src/elflint.c:2692
+#: src/elflint.c:2696
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr "розділ [%2d] «%s»: група розділів без Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ word прапорців\n"
-#: src/elflint.c:2700
+#: src/elflint.c:2704
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr "розділ [%2d] «%s»: група розділів без елементів\n"
-#: src/elflint.c:2704
+#: src/elflint.c:2708
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr "розділ [%2d] «%s»: група розділів, що міÑтить лише один елемент\n"
-#: src/elflint.c:2715
+#: src/elflint.c:2719
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr "розділ [%2d] «%s»: невідомі прапорці групи розділів\n"
-#: src/elflint.c:2727
+#: src/elflint.c:2731
#, c-format
msgid "section [%2d] '%s': section index %zu out of range\n"
msgstr "розділ [%2d] «%s»: Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %zu поза межами діапазону\n"
-#: src/elflint.c:2736
+#: src/elflint.c:2740
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
"розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° %zu: "
"%s\n"
-#: src/elflint.c:2743
+#: src/elflint.c:2747
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr "розділ [%2d] «%s»: група розділів міÑтить іншу групу [%2d] «%s»\n"
-#: src/elflint.c:2749
+#: src/elflint.c:2753
#, c-format
msgid ""
"section [%2d] '%s': element %zu references section [%2d] '%s' without "
@@ -2612,12 +2618,12 @@ msgstr ""
"розділ [%2d] «%s»: елемент %zu поÑилаєтьÑÑ Ð½Ð° розділ [%2d] «%s» без "
"вÑтановленого Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ SHF_GROUP\n"
-#: src/elflint.c:2756
+#: src/elflint.c:2760
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr "розділ [%2d] «%s» міÑтитьÑÑ Ñƒ більше ніж одній групі розділів\n"
-#: src/elflint.c:2946
+#: src/elflint.c:2957
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2626,7 +2632,7 @@ msgstr ""
"розділ [%2d] «%s» поÑилаєтьÑÑ Ñƒ sh_link на розділ [%2d] «%s», Ñкий не має "
"динамічної таблиці Ñимволів\n"
-#: src/elflint.c:2958
+#: src/elflint.c:2969
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2635,28 +2641,28 @@ msgstr ""
"кількіÑÑ‚ÑŒ запиÑів у розділі [%2d] «%s» відрізнÑєтьÑÑ Ð²Ñ–Ð´ кількоÑÑ‚Ñ– у таблиці "
"Ñимволів [%2d] «%s»\n"
-#: src/elflint.c:2974
+#: src/elflint.c:2985
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr "розділ [%2d] «%s»: Ñимвол %d: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ дані щодо верÑÑ–Ñ—\n"
-#: src/elflint.c:2990
+#: src/elflint.c:3001
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
"розділ [%2d] «%s»: Ñимвол %d: локальний Ñимвол у загальному контекÑÑ‚Ñ–\n"
-#: src/elflint.c:2998
+#: src/elflint.c:3009
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr "розділ [%2d] «%s»: Ñимвол %d: локальний Ñимвол з верÑією\n"
-#: src/elflint.c:3012
+#: src/elflint.c:3023
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr "розділ [%2d] «%s»: Ñимвол %d: некоректний Ñ–Ð½Ð´ÐµÐºÑ Ð²ÐµÑ€ÑÑ–Ñ— %d\n"
-#: src/elflint.c:3017
+#: src/elflint.c:3028
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
@@ -2664,7 +2670,7 @@ msgstr ""
"розділ [%2d] «%s»: Ñимвол %d: індекÑи верÑÑ–Ñ— %d призначено до визначеної "
"верÑÑ–Ñ—\n"
-#: src/elflint.c:3027
+#: src/elflint.c:3038
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
@@ -2672,45 +2678,45 @@ msgstr ""
"розділ [%2d] «%s»: Ñимвол %d: Ñ–Ð½Ð´ÐµÐºÑ Ð²ÐµÑ€ÑÑ–Ñ— %d призначено Ð´Ð»Ñ Ð²ÐµÑ€ÑÑ–Ñ—, на Ñку "
"надійшов запит\n"
-#: src/elflint.c:3080
+#: src/elflint.c:3091
#, c-format
msgid "more than one version reference section present\n"
msgstr "виÑвлено більше за один розділ поÑилань на верÑÑ–Ñ—\n"
-#: src/elflint.c:3088 src/elflint.c:3235
+#: src/elflint.c:3099 src/elflint.c:3246
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr "розділ [%2d] «%s»: sh_link не поÑилаєтьÑÑ Ð½Ð° таблицю Ñ€Ñдків\n"
-#: src/elflint.c:3113 src/elflint.c:3289
+#: src/elflint.c:3124 src/elflint.c:3300
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr "розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d має помилкову верÑÑ–ÑŽ %d\n"
-#: src/elflint.c:3120 src/elflint.c:3296
+#: src/elflint.c:3131 src/elflint.c:3307
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d міÑтить помилкове Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ допоміжних даних\n"
-#: src/elflint.c:3130
+#: src/elflint.c:3141
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr "розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d міÑтить некоректне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° файл\n"
-#: src/elflint.c:3138
+#: src/elflint.c:3149
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr "розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d поÑилаєтьÑÑ Ð½Ð° невідому залежніÑÑ‚ÑŒ\n"
-#: src/elflint.c:3150
+#: src/elflint.c:3161
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
"розділ [%2d] «%s»: допоміжний Ð·Ð°Ð¿Ð¸Ñ %d запиÑу %d позначено невідомим "
"прапорцем\n"
-#: src/elflint.c:3158
+#: src/elflint.c:3169
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2719,7 +2725,7 @@ msgstr ""
"розділ [%2d] «%s»: допоміжний Ð·Ð°Ð¿Ð¸Ñ %d запиÑу %d міÑтить некоректне "
"поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° назву\n"
-#: src/elflint.c:3167
+#: src/elflint.c:3178
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2728,7 +2734,7 @@ msgstr ""
"розділ [%2d] «%s»: допоміжний Ð·Ð°Ð¿Ð¸Ñ %d запиÑу %d має помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
"хешу: %#x, мало бути %#x\n"
-#: src/elflint.c:3176
+#: src/elflint.c:3187
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -2737,7 +2743,7 @@ msgstr ""
"розділ [%2d] «%s»: допоміжний Ð·Ð°Ð¿Ð¸Ñ %d запиÑу %d міÑтить дублікати назви "
"верÑÑ–Ñ— «%s»\n"
-#: src/elflint.c:3187
+#: src/elflint.c:3198
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
@@ -2745,13 +2751,13 @@ msgstr ""
"розділ [%2d] «%s»: допоміжний Ð·Ð°Ð¿Ð¸Ñ %d запиÑу %d має помилкове наÑтупне "
"поле\n"
-#: src/elflint.c:3204 src/elflint.c:3380
+#: src/elflint.c:3215 src/elflint.c:3391
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d має некоректне Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ наÑтупного запиÑу\n"
-#: src/elflint.c:3212 src/elflint.c:3388
+#: src/elflint.c:3223 src/elflint.c:3399
#, c-format
msgid ""
"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
@@ -2760,44 +2766,44 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d має нульове Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ наÑтупного запиÑу, але "
"за sh_info можна зрозуміти, що запиÑів більше\n"
-#: src/elflint.c:3227
+#: src/elflint.c:3238
#, c-format
msgid "more than one version definition section present\n"
msgstr "виÑвлено більше за один розділ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€Ñій\n"
-#: src/elflint.c:3274
+#: src/elflint.c:3285
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr "розділ [%2d] «%s»: повторне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ BASE\n"
-#: src/elflint.c:3278
+#: src/elflint.c:3289
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
"розділ [%2d] «%s»: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ BASE повинно мати Ñ–Ð½Ð´ÐµÐºÑ VER_NDX_GLOBAL\n"
-#: src/elflint.c:3284
+#: src/elflint.c:3295
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr "розділ [%2d] «%s»: невідомий прапорець запиÑу %d\n"
-#: src/elflint.c:3311
+#: src/elflint.c:3322
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr "розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d міÑтить некоректне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° назву\n"
-#: src/elflint.c:3318
+#: src/elflint.c:3329
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d має помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ…ÐµÑˆÑƒ: %#x, мало бути %#x\n"
-#: src/elflint.c:3326
+#: src/elflint.c:3337
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr "розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d міÑтить дублікати назви верÑÑ–Ñ— «%s»\n"
-#: src/elflint.c:3346
+#: src/elflint.c:3357
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -2805,53 +2811,53 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð°Ð¿Ð¸Ñ %d міÑтить некоректне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° назву у "
"допоміжних даних\n"
-#: src/elflint.c:3363
+#: src/elflint.c:3374
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
"розділ [%2d] «%s»: у допоміжних даних запиÑу %d міÑтитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ поле "
"наÑтупного запиÑу\n"
-#: src/elflint.c:3396
+#: src/elflint.c:3407
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr "розділ [%2d] «%s»: немає Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ BASE\n"
-#: src/elflint.c:3412
+#: src/elflint.c:3423
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr "розділ [%2d] «%s»: невідома оÑновна верÑÑ–Ñ Â«%s»\n"
-#: src/elflint.c:3425
+#: src/elflint.c:3436
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr "розділ [%2d] «%s»: порожній розділ атрибутів об’єкта\n"
-#: src/elflint.c:3446
+#: src/elflint.c:3457
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ формат атрибутів\n"
-#: src/elflint.c:3462
+#: src/elflint.c:3473
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: поле нульового розміру у розділі атрибутів\n"
-#: src/elflint.c:3471
+#: src/elflint.c:3482
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: некоректна довжина у розділі атрибутів\n"
-#: src/elflint.c:3483
+#: src/elflint.c:3494
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: незавершений Ñ€Ñдок назви поÑтачальника\n"
-#: src/elflint.c:3500
+#: src/elflint.c:3511
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -2859,12 +2865,12 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: незавершене поле ULEB128 у тезі підрозділу "
"атрибутів\n"
-#: src/elflint.c:3509
+#: src/elflint.c:3520
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr "розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: обрізаний розділ атрибутів\n"
-#: src/elflint.c:3518
+#: src/elflint.c:3529
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
@@ -2872,7 +2878,7 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: поле нульового розміру у підрозділі "
"атрибутів\n"
-#: src/elflint.c:3533
+#: src/elflint.c:3544
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
@@ -2880,7 +2886,7 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: некоректна довжина у підрозділі атрибутів\n"
#. Tag_File
-#: src/elflint.c:3544
+#: src/elflint.c:3555
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -2888,35 +2894,35 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: підрозділ атрибутів міÑтить неочікуваний "
"теґ %u\n"
-#: src/elflint.c:3562
+#: src/elflint.c:3573
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: незавершене поле ULEB128 у тезі атрибуту\n"
-#: src/elflint.c:3573
+#: src/elflint.c:3584
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr "розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: незавершений Ñ€Ñдок у атрибуті\n"
-#: src/elflint.c:3586
+#: src/elflint.c:3597
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr "розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: незавершений теґ атрибуту %u\n"
-#: src/elflint.c:3590
+#: src/elflint.c:3601
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: невідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s атрибуту %<PRIu64>\n"
-#: src/elflint.c:3600
+#: src/elflint.c:3611
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr "розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: невідомий поÑтачальник «%s»\n"
-#: src/elflint.c:3606
+#: src/elflint.c:3617
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -2924,47 +2930,47 @@ msgstr ""
"розділ [%2d] «%s»: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %zu: зайві байти піÑÐ»Ñ Ð¾Ñтаннього розділу "
"атрибутів\n"
-#: src/elflint.c:3695
+#: src/elflint.c:3714
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок нульового розділу\n"
-#: src/elflint.c:3699
+#: src/elflint.c:3718
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr "нульовий розділ має ненульову назву\n"
-#: src/elflint.c:3701
+#: src/elflint.c:3720
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr "нульовий розділ має ненульовий тип\n"
-#: src/elflint.c:3703
+#: src/elflint.c:3722
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr "нульовий розділ має ненульові прапорці\n"
-#: src/elflint.c:3705
+#: src/elflint.c:3724
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr "нульовий розділ має ненульову адреÑу\n"
-#: src/elflint.c:3707
+#: src/elflint.c:3726
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr "нульовий розділ має ненульове зміщеннÑ\n"
-#: src/elflint.c:3709
+#: src/elflint.c:3728
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr "нульовий розділ має ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ\n"
-#: src/elflint.c:3711
+#: src/elflint.c:3730
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr "нульовий розділ має ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ запиÑу\n"
-#: src/elflint.c:3714
+#: src/elflint.c:3733
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -2973,7 +2979,7 @@ msgstr ""
"нульовий розділ має ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ, хоча заголовок ELF ман "
"ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ shnum\n"
-#: src/elflint.c:3718
+#: src/elflint.c:3737
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
@@ -2982,7 +2988,7 @@ msgstr ""
"нульовий розділ має ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ, хоча у заголовку ELF "
"немає Ñигналу Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñƒ shstrndx\n"
-#: src/elflint.c:3722
+#: src/elflint.c:3741
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
@@ -2991,28 +2997,28 @@ msgstr ""
"нульовий розділ має ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ, хоча у заголовку ELF "
"немає Ñигналу Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñƒ phnum\n"
-#: src/elflint.c:3740
+#: src/elflint.c:3759
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу [%2zu] «%s»: %s\n"
-#: src/elflint.c:3749
+#: src/elflint.c:3768
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr "розділ [%2zu]: некоректна назва\n"
-#: src/elflint.c:3776
+#: src/elflint.c:3795
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr ""
"розділ [%2d] «%s» належить до помилкового типу: мав бути %s, маємо %s\n"
-#: src/elflint.c:3794
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr "розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, маємо %s\n"
-#: src/elflint.c:3812
+#: src/elflint.c:3830
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
@@ -3020,12 +3026,12 @@ msgstr ""
"розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, можливо, %s, але "
"маємо %s\n"
-#: src/elflint.c:3830
+#: src/elflint.c:3847
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr "у об’єктному файлі виÑвлено розділ [%2zu] «%s»\n"
-#: src/elflint.c:3836 src/elflint.c:3868
+#: src/elflint.c:3853 src/elflint.c:3885
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
@@ -3033,7 +3039,7 @@ msgstr ""
"у розділ [%2zu] «%s» вÑтановлено прапорець SHF_ALLOC, але немає придатного "
"до Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñегмента\n"
-#: src/elflint.c:3841 src/elflint.c:3873
+#: src/elflint.c:3858 src/elflint.c:3890
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -3042,7 +3048,7 @@ msgstr ""
"у розділі [%2zu] «%s» не вÑтановлено прапорець SHF_ALLOC, але Ñ” придатні до "
"Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñегменти\n"
-#: src/elflint.c:3849
+#: src/elflint.c:3866
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -3050,22 +3056,22 @@ msgstr ""
"розділ [%2zu] «%s» Ñ” таблицею-покажчиком розділу розширень у файлі, Ñкий не "
"є об’єктним\n"
-#: src/elflint.c:3892
+#: src/elflint.c:3909
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr "розділ [%2zu] «%s»: розмір не Ñ” кратним до розміру запиÑу\n"
-#: src/elflint.c:3897
+#: src/elflint.c:3914
#, c-format
msgid "cannot get section header\n"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу\n"
-#: src/elflint.c:3907
+#: src/elflint.c:3924
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr "розділ [%2zu] «%s» належить до непідтримуваного типу %d\n"
-#: src/elflint.c:3922
+#: src/elflint.c:3944
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3073,74 +3079,74 @@ msgstr ""
"розділ [%2zu] «%s» міÑтить некоректні Ñпецифічні Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора прапорці "
"%#<PRIx64>\n"
-#: src/elflint.c:3929
+#: src/elflint.c:3954
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr "розділ [%2zu] «%s» міÑтить невідомі прапорці %#<PRIx64>\n"
-#: src/elflint.c:3937
+#: src/elflint.c:3962
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
"розділ [%2zu] «%s»: адреÑа розділів локальних даних потоків не Ñ” нульовою\n"
-#: src/elflint.c:3947
-#, fuzzy, c-format
+#: src/elflint.c:3972
+#, c-format
msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
msgstr ""
-"розділ [%2zu] «%s»: адреÑа розділів локальних даних потоків не Ñ” нульовою\n"
+"розділ [%2zu] «%s»: розміщений у пам'ÑÑ‚Ñ– розділ не може бути ÑтиÑнений\n"
-#: src/elflint.c:3952
-#, fuzzy, c-format
+#: src/elflint.c:3977
+#, c-format
msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
-msgstr "розділ [%2d] «%s»: не виÑвлено розділу хешів\n"
+msgstr "розділ [%2zu] «%s»: розділ nobits не може бути ÑтиÑнений\n"
-#: src/elflint.c:3958
-#, fuzzy, c-format
+#: src/elflint.c:3983
+#, c-format
msgid ""
"section [%2zu] '%s': compressed section with no compression header: %s\n"
-msgstr "розділ [%2d] «%s»: група розділів, що міÑтить лише один елемент\n"
+msgstr "розділ [%2zu] «%s»: ÑтиÑнений розділ без заголовка ÑтиÑненнÑ: %s\n"
-#: src/elflint.c:3964
+#: src/elflint.c:3989
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
"розділ [%2zu] «%s»: некоректне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ у значенні компонуваннÑ\n"
-#: src/elflint.c:3969
+#: src/elflint.c:3994
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
"розділ [%2zu] «%s»: некоректне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ у значенні відомоÑтей\n"
-#: src/elflint.c:3976
+#: src/elflint.c:4001
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr "розділ [%2zu] «%s»: вÑтановлено прапорець strings без Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ merge\n"
-#: src/elflint.c:3981
+#: src/elflint.c:4006
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
"розділ [%2zu] «%s»: вÑтановлено прапорець merge, але розмір запиÑу Ñ” "
"нульовим\n"
-#: src/elflint.c:4000
+#: src/elflint.c:4025
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr "розділ [%2zu] «%s» має неочікуваний тип %d Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ розділу\n"
-#: src/elflint.c:4009
-#, fuzzy, c-format
+#: src/elflint.c:4034
+#, c-format
msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
-msgstr "розділ [%2zu] «%s» не повинен бути придатним до запиÑу\n"
+msgstr "розділ [%2zu] «%s» у файлах debuginfo має належати до типу NOBITS\n"
-#: src/elflint.c:4016
+#: src/elflint.c:4041
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr "розділ [%2zu] «%s» Ñ” одночаÑно виконуваним Ñ– придатним до запиÑу\n"
-#: src/elflint.c:4047
+#: src/elflint.c:4072
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3149,7 +3155,7 @@ msgstr ""
"розділ [%2zu] «%s» не повніÑÑ‚ÑŽ міÑтитьÑÑ Ñƒ Ñегменті запиÑу заголовка "
"програми %d\n"
-#: src/elflint.c:4057
+#: src/elflint.c:4082
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3158,7 +3164,7 @@ msgstr ""
"розділ [%2zu] «%s» належить до типу NOBITS, але його Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑÑ Ð· "
"файла у Ñегментів запиÑу заголовка програми %d\n"
-#: src/elflint.c:4083
+#: src/elflint.c:4108
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3167,7 +3173,7 @@ msgstr ""
"розділ [%2zu] «%s» належить до типу NOBITS, але його Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑÑ Ð· "
"файла у Ñегментів запиÑу заголовка програми %d, а вміÑÑ‚ файла Ñ” ненульовим\n"
-#: src/elflint.c:4094
+#: src/elflint.c:4119
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3176,19 +3182,19 @@ msgstr ""
"розділ [%2zu] «%s» не належить до типу NOBITS, але його Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð½Ðµ "
"виконуєтьÑÑ Ð· файла у Ñегментів запиÑу заголовка програми %d\n"
-#: src/elflint.c:4105
+#: src/elflint.c:4130
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr "розділ [%2zu] «%s» Ñ” виконуваним у невиконуваному Ñегменті %d\n"
-#: src/elflint.c:4115
+#: src/elflint.c:4140
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
"розділ [%2zu] «%s» Ñ” придатним до запиÑу у непридатному до запиÑу Ñегменті "
"%d\n"
-#: src/elflint.c:4125
+#: src/elflint.c:4150
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3196,7 +3202,7 @@ msgstr ""
"розділ [%2zu] «%s»: вÑтановлено прапорець alloc, але розділ не перебуває у "
"жодному завантаженому Ñегменті\n"
-#: src/elflint.c:4131
+#: src/elflint.c:4156
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3205,7 +3211,7 @@ msgstr ""
"розділ [%2zu] «%s»: заголовок ELF повідомлÑÑ” про те, що це Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñ€Ñдків "
"заголовка розділу, але Ñ†Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð½Ðµ належить до типу SHT_TYPE\n"
-#: src/elflint.c:4139
+#: src/elflint.c:4164
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3213,17 +3219,17 @@ msgstr ""
"розділ [%2zu] «%s»: придатні до переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð¸ не можуть міÑтити "
"динамічних таблиць Ñимволів\n"
-#: src/elflint.c:4190
+#: src/elflint.c:4215
#, c-format
msgid "more than one version symbol table present\n"
msgstr "виÑвлено більше за одну таблицю Ñимволів верÑій\n"
-#: src/elflint.c:4213
+#: src/elflint.c:4238
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr "Ñ–Ñнує Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° програми INTERP, але не розділ .interp\n"
-#: src/elflint.c:4224
+#: src/elflint.c:4249
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
@@ -3231,14 +3237,14 @@ msgstr ""
"придатний до Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñегмент [%u] Ñ” виконуваним, але не міÑтить "
"виконуваних розділів\n"
-#: src/elflint.c:4230
+#: src/elflint.c:4255
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
"придатний до Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð» [%u] Ñ” придатним до запиÑу, але не міÑтить "
"придатних до запиÑу розділів\n"
-#: src/elflint.c:4241
+#: src/elflint.c:4266
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3247,24 +3253,24 @@ msgstr ""
"немає розділу .gnu.versym, хоча Ñ–Ñнує розділ .gnu.versym_d або .gnu."
"versym_r\n"
-#: src/elflint.c:4254
+#: src/elflint.c:4279
#, c-format
msgid "duplicate version index %d\n"
msgstr "дублікат індекÑу верÑÑ–Ñ— %d\n"
-#: src/elflint.c:4268
+#: src/elflint.c:4293
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
"Ñ–Ñнує розділ .gnu.versym, але немає розділу .gnu.versym_d або .gnu.versym_r\n"
-#: src/elflint.c:4317
+#: src/elflint.c:4342
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
"phdr[%d]: невідомий тип нотатки файла core %<PRIu32> за зміщеннÑм %<PRIu64>\n"
-#: src/elflint.c:4321
+#: src/elflint.c:4346
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3272,56 +3278,57 @@ msgstr ""
"розділ [%2d] «%s»: невідомий тип нотатки файла core %<PRIu32> за зміщеннÑм "
"%zu\n"
-#: src/elflint.c:4370
-#, fuzzy, c-format
+#: src/elflint.c:4395
+#, c-format
msgid ""
"phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
"offset %zu\n"
msgstr ""
-"phdr[%d]: невідомий тип нотатки об’єктного файла %<PRIu32> за зміщеннÑм %zu\n"
+"phdr[%d]: невідомий тип нотатки у файлі об'єктів, %<PRIu32>, із іменем "
+"влаÑника «%s» за зміщеннÑм %zu\n"
-#: src/elflint.c:4375
-#, fuzzy, c-format
+#: src/elflint.c:4400
+#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
"'%s' at offset %zu\n"
msgstr ""
-"розділ [%2d] «%s»: невідомий тип нотатки об’єктного файла %<PRIu32> за "
-"зміщеннÑм %zu\n"
+"розділ [%2d] «%s»: невідомий тип нотатки у файлі об'єктів, %<PRIu32>, із "
+"іменем влаÑника «%s» за зміщеннÑм %zu\n"
-#: src/elflint.c:4394
+#: src/elflint.c:4419
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr "phdr[%d]: Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ типу файлів не визначено запиÑів нотаток\n"
-#: src/elflint.c:4414
+#: src/elflint.c:4439
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr "phdr[%d]: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ розділу нотаток: %s\n"
-#: src/elflint.c:4417
+#: src/elflint.c:4442
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr "phdr[%d]: зайві %<PRIu64> байтів піÑÐ»Ñ Ð¾Ñтаннього запиÑу нотатки\n"
-#: src/elflint.c:4438
+#: src/elflint.c:4463
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
"розділ [%2d] «%s»: Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ типу файлів не визначено запиÑів нотаток\n"
-#: src/elflint.c:4445
+#: src/elflint.c:4470
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr "розділ [%2d] «%s»: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ розділу нотаток\n"
-#: src/elflint.c:4448
+#: src/elflint.c:4473
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr ""
"розділ [%2d] «%s»: додаткові %<PRIu64> байтів піÑÐ»Ñ Ð¾Ñтанньої нотатки\n"
-#: src/elflint.c:4466
+#: src/elflint.c:4491
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
@@ -3329,141 +3336,143 @@ msgstr ""
"заголовки програм можуть бути лише у виконуваних файлів, об’єктних файлів "
"Ñпільного викориÑÑ‚Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ файлів core\n"
-#: src/elflint.c:4481
+#: src/elflint.c:4506
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° програми %d: %s\n"
-#: src/elflint.c:4490
+#: src/elflint.c:4516
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
"Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° програми %d: невідомий тип запиÑу заголовка програми "
"%#<PRIx64>\n"
-#: src/elflint.c:4501
+#: src/elflint.c:4527
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr "більше за один Ð·Ð°Ð¿Ð¸Ñ INTERP у заголовку програми\n"
-#: src/elflint.c:4509
+#: src/elflint.c:4535
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr "більше за один Ð·Ð°Ð¿Ð¸Ñ TLS у заголовку програми\n"
-#: src/elflint.c:4516
+#: src/elflint.c:4542
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr "у Ñтатичному виконуваному файлі не може бути динамічних розділів\n"
-#: src/elflint.c:4530
+#: src/elflint.c:4556
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
"поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° динамічний розділ у заголовку програми має помилкове зміщеннÑ\n"
-#: src/elflint.c:4533
+#: src/elflint.c:4559
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
"розміри динамічного розділу у заголовку програми та у заголовку розділу не "
"збігаютьÑÑ\n"
-#: src/elflint.c:4543
+#: src/elflint.c:4569
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr "більше за один Ð·Ð°Ð¿Ð¸Ñ GNU_RELRO у заголовку програми\n"
-#: src/elflint.c:4564
+#: src/elflint.c:4590
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr ""
"придатний до Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñегмент, до Ñкого звертаєтьÑÑ GNU_RELRO, "
"непридатний до запиÑу\n"
-#: src/elflint.c:4575
+#: src/elflint.c:4601
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
"прапорці придатного до Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñегмента [%u] не відповідають прапорцÑм "
"GNU_RELRO [%u]\n"
-#: src/elflint.c:4582
+#: src/elflint.c:4608
#, c-format
msgid ""
"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
msgstr ""
+"прапорці GNU_RELRO [%u] не Ñ” підмножиною прапорців завантажуваного Ñегмента "
+"[%u]\n"
-#: src/elflint.c:4591 src/elflint.c:4614
+#: src/elflint.c:4617 src/elflint.c:4640
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr "Ñегмент %s не міÑтитьÑÑ Ñƒ завантаженому Ñегменті\n"
-#: src/elflint.c:4620
+#: src/elflint.c:4646
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr "Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° програми у заголовку ELF Ñ– Ð·Ð°Ð¿Ð¸Ñ PHDR не збігаютьÑÑ"
-#: src/elflint.c:4647
+#: src/elflint.c:4673
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
"поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° таблицю вікон викликів у заголовку програми має помилкове "
"зміщеннÑ\n"
-#: src/elflint.c:4650
+#: src/elflint.c:4676
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
"розміри таблиці пошуку вікон виклику у заголовку програми та у заголовку "
"розділу не збігаютьÑÑ\n"
-#: src/elflint.c:4663
+#: src/elflint.c:4689
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr "Ñ–Ñнує PT_GNU_EH_FRAME, хоча немає розділу .eh_frame_hdr\n"
-#: src/elflint.c:4671
+#: src/elflint.c:4697
#, c-format
msgid "call frame search table must be allocated\n"
msgstr "таблицю пошуку вікон викликів має бути розміщено у пам’ÑÑ‚Ñ–\n"
-#: src/elflint.c:4674
+#: src/elflint.c:4700
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr "розділ [%2zu] «%s» має бути розміщено у пам’ÑÑ‚Ñ–\n"
-#: src/elflint.c:4678
+#: src/elflint.c:4704
#, c-format
msgid "call frame search table must not be writable\n"
msgstr "Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ вікон викликів не повинна бути придатною до запиÑу\n"
-#: src/elflint.c:4681
+#: src/elflint.c:4707
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr "розділ [%2zu] «%s» не повинен бути придатним до запиÑу\n"
-#: src/elflint.c:4686
+#: src/elflint.c:4712
#, c-format
msgid "call frame search table must not be executable\n"
msgstr "Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ вікон викликів не повинна бути придатною до виконаннÑ\n"
-#: src/elflint.c:4689
+#: src/elflint.c:4715
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr "розділ [%2zu] «%s» не повинен бути придатним до виконаннÑ\n"
-#: src/elflint.c:4700
+#: src/elflint.c:4726
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° програми %d: розмір файла перевищує об’єм пам’ÑÑ‚Ñ–\n"
-#: src/elflint.c:4707
+#: src/elflint.c:4733
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° програми %d: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ðµ Ñ” Ñтепенем 2\n"
-#: src/elflint.c:4710
+#: src/elflint.c:4736
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
@@ -3472,7 +3481,7 @@ msgstr ""
"Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° програми %d: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ файлі Ñ– віртуальна адреÑа не "
"ÑпіввідноÑÑÑ‚ÑŒÑÑ Ð· вирівнюваннÑм\n"
-#: src/elflint.c:4723
+#: src/elflint.c:4749
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3481,12 +3490,17 @@ msgstr ""
"виконуваний модуль/DSO з розділом .eh_frame_hdr не міÑтить запиÑу заголовка "
"програми PT_GNU_EH_FRAME"
-#: src/elflint.c:4757
+#: src/elflint.c:4783
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ заголовок ELF: %s\n"
-#: src/elflint.c:4783
+#: src/elflint.c:4795
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "не вдалоÑÑ Ñтворити файл"
+
+#: src/elflint.c:4816
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr ""
@@ -3668,7 +3682,7 @@ msgstr "Позначати Ñпеціальні Ñимволи"
msgid "Print size of defined symbols"
msgstr "ВивеÑти розмір визначених Ñимволів"
-#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:73
+#: src/nm.c:91 src/size.c:68 src/strip.c:75 src/unstrip.c:69
msgid "Output options:"
msgstr "Параметри виводу:"
@@ -3703,12 +3717,12 @@ msgid "%s: INTERNAL ERROR %d (%s): %s"
msgstr "%s: Ð’ÐУТРІШÐЯ ПОМИЛКР%d (%s): %s"
#: src/nm.c:381 src/nm.c:393 src/size.c:288 src/size.c:297 src/size.c:308
-#: src/strip.c:2748
+#: src/strip.c:2763
#, c-format
msgid "while closing '%s'"
msgstr "під Ñ‡Ð°Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Â«%s»"
-#: src/nm.c:403 src/objdump.c:280 src/strip.c:797
+#: src/nm.c:403 src/objdump.c:280 src/strip.c:818
#, c-format
msgid "%s: File format not recognized"
msgstr "%s: не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ формат файла"
@@ -3747,13 +3761,13 @@ msgstr "%s%s%s: не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ формат файла
msgid "cannot create search tree"
msgstr "не вдалоÑÑ Ñтворити дерево пошуку"
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
-#: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
-#: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
-#: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
-#: src/strip.c:1038
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:637
+#: src/readelf.c:1451 src/readelf.c:1602 src/readelf.c:1803 src/readelf.c:2009
+#: src/readelf.c:2199 src/readelf.c:2377 src/readelf.c:2453 src/readelf.c:2711
+#: src/readelf.c:2787 src/readelf.c:2874 src/readelf.c:3472 src/readelf.c:3522
+#: src/readelf.c:3592 src/readelf.c:11328 src/readelf.c:12523
+#: src/readelf.c:12734 src/readelf.c:12803 src/size.c:398 src/size.c:470
+#: src/strip.c:1084
#, c-format
msgid "cannot get section header string table index"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків"
@@ -3782,28 +3796,28 @@ msgstr ""
"%*s%-*s %-*s ÐšÐ»Ð°Ñ Ð¢Ð¸Ð¿ %-*s %*s Розділ\n"
"\n"
-#: src/nm.c:1216
+#: src/nm.c:1250
#, c-format
msgid "%s: entry size in section %zd `%s' is not what we expect"
msgstr "%s: розмір запиÑу у розділі %zd «%s» не Ñ” очікуваним"
-#: src/nm.c:1221
+#: src/nm.c:1255
#, c-format
msgid "%s: size of section %zd `%s' is not multiple of entry size"
msgstr "%s: розмір розділу %zd «%s» не Ñ” кратним до розміру запиÑу"
-#: src/nm.c:1300
-#, fuzzy, c-format
+#: src/nm.c:1334
+#, c-format
msgid "%s: entries (%zd) in section %zd `%s' is too large"
-msgstr "%s: розмір запиÑу у розділі %zd «%s» не Ñ” очікуваним"
+msgstr "%s: запиÑи (%zd) у розділі %zd, «%s» Ñ” завеликим"
#. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: некоректна діÑ"
-#: src/nm.c:1584
+#: src/nm.c:1620
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: немає Ñимволів"
@@ -3837,7 +3851,7 @@ msgstr "Показати інформацію лише з розділу ÐÐЗÐ
msgid "Show information from FILEs (a.out by default)."
msgstr "Показати інформацію з ФÐЙЛів (типово a.out)."
-#: src/objdump.c:218 src/readelf.c:580
+#: src/objdump.c:218 src/readelf.c:582
msgid "No operation specified.\n"
msgstr "Ðе вказано дії.\n"
@@ -3846,11 +3860,11 @@ msgstr "Ðе вказано дії.\n"
msgid "while close `%s'"
msgstr "під Ñ‡Ð°Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Â«%s»"
-#: src/objdump.c:363 src/readelf.c:2100 src/readelf.c:2292
+#: src/objdump.c:363 src/readelf.c:2104 src/readelf.c:2296
msgid "INVALID SYMBOL"
msgstr "ÐЕКОРЕКТÐИЙ СИМВОЛ"
-#: src/objdump.c:378 src/readelf.c:2134 src/readelf.c:2328
+#: src/objdump.c:378 src/readelf.c:2138 src/readelf.c:2332
msgid "INVALID SECTION"
msgstr "ÐЕКОРЕКТÐИЙ РОЗДІЛ"
@@ -3879,6 +3893,11 @@ msgstr "ВміÑÑ‚ розділу %s:\n"
msgid "cannot disassemble"
msgstr "не вдалоÑÑ Ð´Ð¸Ð·Ð°Ñемблювати"
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "не вдалоÑÑ Ñтворити файл"
+
#. Short description of program.
#: src/ranlib.c:63
msgid "Generate an index to speed access to archives."
@@ -3920,6 +3939,8 @@ msgid ""
"Used with -w to find the skeleton Compile Units in FILE associated with the "
"Split Compile units in a .dwo input file"
msgstr ""
+"ВикориÑтовуєтьÑÑ Ð· -w Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ оÑнови компільованих модулів у ФÐЙЛі, "
+"пов'Ñзаному із модулÑми розділеної компілÑції у вхідному файлі .dwo"
#: src/readelf.c:104
msgid "ELF output selection:"
@@ -3950,23 +3971,20 @@ msgid "Display relocations"
msgstr "Показувати переÑуваннÑ"
#: src/readelf.c:114
-#, fuzzy
msgid "Display the section groups"
-msgstr "Показувати заголовки розділів"
+msgstr "Показувати групи розділів"
#: src/readelf.c:115
msgid "Display the sections' headers"
msgstr "Показувати заголовки розділів"
#: src/readelf.c:118
-#, fuzzy
msgid "Display the symbol table sections"
-msgstr "Показувати таблицю Ñимволів"
+msgstr "Показати розділи таблиці Ñимволів"
#: src/readelf.c:120
-#, fuzzy
msgid "Display (only) the dynamic symbol table"
-msgstr "Показувати лише зовнішні Ñимволи"
+msgstr "Показувати (лише) динамічну таблицю Ñимволів"
#: src/readelf.c:121
msgid "Display versioning information"
@@ -3989,15 +4007,14 @@ msgid "Additional output selection:"
msgstr "Додатковий вибір виводу:"
#: src/readelf.c:130
-#, fuzzy
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, addr, aranges, "
"decodedaranges, frame, gdb_index, info, info+, loc, line, decodedline, "
"ranges, pubnames, str, macinfo, macro or exception"
msgstr ""
-"Показати вміÑÑ‚ розділу DWARF. ЗначеннÑм РОЗДІЛ може бути abbrev, aranges, "
-"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
-"pubnames, str, macinfo, macro або exception"
+"Показати вміÑÑ‚ розділу DWARF. ЗначеннÑм РОЗДІЛ може бути abbrev, addr, "
+"aranges, decodedaranges, frame, gdb_index, info, info+, loc, line, "
+"decodedline, ranges, pubnames, str, macinfo, macro або exception"
#: src/readelf.c:134
msgid "Dump the uninterpreted contents of SECTION, by number or name"
@@ -4035,6 +4052,8 @@ msgid ""
"Show compression information for compressed sections (when used with -S); "
"decompress section before dumping data (when used with -p or -x)"
msgstr ""
+"Показати дані щодо ÑтиÑÐºÐ°Ð½Ð½Ñ Ð´Ð»Ñ ÑтиÑнених розділів (Ñкщо викориÑтано з -S); "
+"розпакувати розділ до ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð°Ð¼Ð¿Ñƒ даних (Ñкщо викориÑтано з -p або -x)"
#. Short description of program.
#: src/readelf.c:154
@@ -4050,143 +4069,143 @@ msgstr "так"
msgid "no"
msgstr "ні"
-#: src/readelf.c:548
+#: src/readelf.c:550
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "Ðевідомий діагноÑтичний розділ DWARF «%s».\n"
-#: src/readelf.c:619 src/readelf.c:730
+#: src/readelf.c:621 src/readelf.c:732
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "не вдалоÑÑ Ñтворити деÑкриптор Elf: %s"
-#: src/readelf.c:626 src/readelf.c:953 src/strip.c:1133
+#: src/readelf.c:628 src/readelf.c:955 src/strip.c:1179
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділів: %s"
-#: src/readelf.c:644 src/readelf.c:1263 src/readelf.c:1471
+#: src/readelf.c:646 src/readelf.c:1265 src/readelf.c:1475
#, c-format
msgid "cannot get section: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ розділ: %s"
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
-#: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
-#: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
-#: src/unstrip.c:1658 src/unstrip.c:1809 src/unstrip.c:1952 src/unstrip.c:2051
+#: src/readelf.c:655 src/readelf.c:1272 src/readelf.c:1483 src/readelf.c:12754
+#: src/unstrip.c:397 src/unstrip.c:428 src/unstrip.c:487 src/unstrip.c:608
+#: src/unstrip.c:629 src/unstrip.c:669 src/unstrip.c:885 src/unstrip.c:1216
+#: src/unstrip.c:1343 src/unstrip.c:1367 src/unstrip.c:1423 src/unstrip.c:1487
+#: src/unstrip.c:1662 src/unstrip.c:1813 src/unstrip.c:1956 src/unstrip.c:2055
#, c-format
msgid "cannot get section header: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу: %s"
-#: src/readelf.c:661
+#: src/readelf.c:663
#, c-format
msgid "cannot get section name"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву розділу"
-#: src/readelf.c:670 src/readelf.c:6576 src/readelf.c:10502 src/readelf.c:10604
-#: src/readelf.c:10782
+#: src/readelf.c:672 src/readelf.c:6628 src/readelf.c:10600 src/readelf.c:10702
+#: src/readelf.c:10880
#, c-format
msgid "cannot get %s content: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані %s: %s"
-#: src/readelf.c:686
+#: src/readelf.c:688
#, c-format
msgid "cannot create temp file '%s'"
msgstr "не вдалоÑÑ Ñтворити файл тимчаÑових даних «%s»"
-#: src/readelf.c:695
+#: src/readelf.c:697
#, c-format
msgid "cannot write section data"
msgstr "не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати дані розділу"
-#: src/readelf.c:701 src/readelf.c:718 src/readelf.c:747
+#: src/readelf.c:703 src/readelf.c:720 src/readelf.c:749
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÐµÑкриптора Elf: %s"
-#: src/readelf.c:708
+#: src/readelf.c:710
#, c-format
msgid "error while rewinding file descriptor"
msgstr "помилка під Ñ‡Ð°Ñ Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ початкового Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла"
-#: src/readelf.c:742
+#: src/readelf.c:744
#, c-format
msgid "'%s' is not an archive, cannot print archive index"
msgstr "«%s» не Ñ” архівом, Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° архіву неможливе"
-#: src/readelf.c:846
+#: src/readelf.c:848
#, c-format
msgid "cannot stat input file"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані з вхідного файла за допомогою stat"
-#: src/readelf.c:848
+#: src/readelf.c:850
#, c-format
msgid "input file is empty"
msgstr "вхідний файл є порожнім"
-#: src/readelf.c:850
+#: src/readelf.c:852
#, c-format
msgid "failed reading '%s': %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ «%s»: %s"
-#: src/readelf.c:879
+#: src/readelf.c:881
#, c-format
msgid "No such section '%s' in '%s'"
msgstr "У «%2$s» немає розділу «%1$s»"
-#: src/readelf.c:938
+#: src/readelf.c:940
#, c-format
msgid "cannot read ELF header: %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ заголовок ELF: %s"
-#: src/readelf.c:946
+#: src/readelf.c:948
#, c-format
msgid "cannot create EBL handle"
msgstr "не вдалоÑÑ Ñтворити деÑкриптор EBL"
-#: src/readelf.c:959
+#: src/readelf.c:961
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ заголовків програми: %s"
-#: src/readelf.c:991
-#, fuzzy, c-format
+#: src/readelf.c:993
+#, c-format
msgid "cannot read ELF: %s"
-msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ %s: %s"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ ELF: %s"
-#: src/readelf.c:1052
+#: src/readelf.c:1054
msgid "NONE (None)"
msgstr "NONE (Ðемає)"
-#: src/readelf.c:1053
+#: src/readelf.c:1055
msgid "REL (Relocatable file)"
msgstr "REL (Придатний до переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»)"
-#: src/readelf.c:1054
+#: src/readelf.c:1056
msgid "EXEC (Executable file)"
msgstr "EXEC (Виконуваний файл)"
-#: src/readelf.c:1055
+#: src/readelf.c:1057
msgid "DYN (Shared object file)"
msgstr "DYN (Файл об’єктів Ñпільного викориÑтаннÑ)"
-#: src/readelf.c:1056
+#: src/readelf.c:1058
msgid "CORE (Core file)"
msgstr "CORE (Файл Ñдра)"
-#: src/readelf.c:1061
+#: src/readelf.c:1063
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "ОС-Ñпецифічне: (%x)\n"
#. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1063
+#: src/readelf.c:1065
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "Специфічне Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора: (%x)\n"
-#: src/readelf.c:1073
+#: src/readelf.c:1075
msgid ""
"ELF Header:\n"
" Magic: "
@@ -4194,7 +4213,7 @@ msgstr ""
"Заголовок ELF:\n"
" Magic: "
-#: src/readelf.c:1077
+#: src/readelf.c:1079
#, c-format
msgid ""
"\n"
@@ -4203,123 +4222,123 @@ msgstr ""
"\n"
" КлаÑ: %s\n"
-#: src/readelf.c:1082
+#: src/readelf.c:1084
#, c-format
msgid " Data: %s\n"
msgstr " Дані: %s\n"
-#: src/readelf.c:1088
+#: src/readelf.c:1090
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " ВерÑÑ–Ñ Ident: %hhd %s\n"
-#: src/readelf.c:1090 src/readelf.c:1112
+#: src/readelf.c:1092 src/readelf.c:1114
msgid "(current)"
msgstr "(поточний)"
-#: src/readelf.c:1094
+#: src/readelf.c:1096
#, c-format
msgid " OS/ABI: %s\n"
msgstr " ОС/ABI: %s\n"
-#: src/readelf.c:1097
+#: src/readelf.c:1099
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " ВерÑÑ–Ñ ABI: %hhd\n"
-#: src/readelf.c:1100
+#: src/readelf.c:1102
msgid " Type: "
msgstr " Тип: "
-#: src/readelf.c:1105
+#: src/readelf.c:1107
#, c-format
msgid " Machine: %s\n"
msgstr " Ðрхітектура: %s\n"
-#: src/readelf.c:1107
-#, fuzzy, c-format
+#: src/readelf.c:1109
+#, c-format
msgid " Machine: <unknown>: 0x%x\n"
-msgstr " Ðрхітектура: %s\n"
+msgstr " Ðрхітектура: <невідома>: 0x%x\n"
-#: src/readelf.c:1110
+#: src/readelf.c:1112
#, c-format
msgid " Version: %d %s\n"
msgstr " ВерÑÑ–Ñ: %d %s\n"
-#: src/readelf.c:1114
+#: src/readelf.c:1116
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " ÐдреÑа вхідної точки: %#<PRIx64>\n"
-#: src/readelf.c:1117
+#: src/readelf.c:1119
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " Початок заголовків програм: %<PRId64> %s\n"
-#: src/readelf.c:1118 src/readelf.c:1121
+#: src/readelf.c:1120 src/readelf.c:1123
msgid "(bytes into file)"
msgstr "(байтів у файл)"
-#: src/readelf.c:1120
+#: src/readelf.c:1122
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " Початок заголовків розділів: %<PRId64> %s\n"
-#: src/readelf.c:1123
+#: src/readelf.c:1125
#, c-format
msgid " Flags: %s\n"
msgstr " Прапорці: %s\n"
-#: src/readelf.c:1126
+#: src/readelf.c:1128
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " Розмір цього заголовка: %<PRId16> %s\n"
-#: src/readelf.c:1127 src/readelf.c:1130 src/readelf.c:1147
+#: src/readelf.c:1129 src/readelf.c:1132 src/readelf.c:1149
msgid "(bytes)"
msgstr "(байтів)"
-#: src/readelf.c:1129
+#: src/readelf.c:1131
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr " Розмір запиÑів заголовка програми: %<PRId16> %s\n"
-#: src/readelf.c:1132
+#: src/readelf.c:1134
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " КількіÑÑ‚ÑŒ запиÑів заголовків програми: %<PRId16>"
-#: src/readelf.c:1139
+#: src/readelf.c:1141
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr " (%<PRIu32> у [0].sh_info)"
-#: src/readelf.c:1142 src/readelf.c:1159 src/readelf.c:1173
+#: src/readelf.c:1144 src/readelf.c:1161 src/readelf.c:1175
msgid " ([0] not available)"
msgstr " ([0] недоÑтупний)"
-#: src/readelf.c:1146
+#: src/readelf.c:1148
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr " Розмір запиÑів заголовків розділів: %<PRId16> %s\n"
-#: src/readelf.c:1149
+#: src/readelf.c:1151
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " КількіÑÑ‚ÑŒ запиÑів заголовків розділів: %<PRId16>"
-#: src/readelf.c:1156
+#: src/readelf.c:1158
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " (%<PRIu32> у [0].sh_size)"
#. We managed to get the zeroth section.
-#: src/readelf.c:1169
+#: src/readelf.c:1171
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr " (%<PRIu32> у [0].sh_link)"
-#: src/readelf.c:1177
+#: src/readelf.c:1179
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
@@ -4328,7 +4347,7 @@ msgstr ""
" Ð†Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків: XINDEX%s\n"
"\n"
-#: src/readelf.c:1181
+#: src/readelf.c:1183
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
@@ -4337,30 +4356,30 @@ msgstr ""
" Ð†Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків: %<PRId16>\n"
"\n"
-#: src/readelf.c:1228 src/readelf.c:1436
-#, fuzzy, c-format
+#: src/readelf.c:1230 src/readelf.c:1440
+#, c-format
msgid "cannot get number of sections: %s"
-msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділів: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділів: %s"
-#: src/readelf.c:1231
-#, fuzzy, c-format
+#: src/readelf.c:1233
+#, c-format
msgid ""
"There are %zd section headers, starting at offset %#<PRIx64>:\n"
"\n"
msgstr ""
-"ВиÑвлено %d заголовків розділів, Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ — %#<PRIx64>:\n"
+"ВиÑвлено %zd заголовків розділів, Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ — %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:1240
-#, fuzzy, c-format
+#: src/readelf.c:1242
+#, c-format
msgid "cannot get section header string table index: %s"
-msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків"
+msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° розділу у таблиці Ñ€Ñдків: %s"
-#: src/readelf.c:1243
+#: src/readelf.c:1245
msgid "Section Headers:"
msgstr "Заголовки розділів:"
-#: src/readelf.c:1246
+#: src/readelf.c:1248
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
@@ -4368,7 +4387,7 @@ msgstr ""
"[â„– ] Ðазва Тип Ðдр Змі Розмір ES Прап Lk "
"Інф Al"
-#: src/readelf.c:1248
+#: src/readelf.c:1250
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
@@ -4376,35 +4395,35 @@ msgstr ""
"[â„– ] Ðазва Тип Ðдр Змі Розмір ES "
"Прап Lk Інф Al"
-#: src/readelf.c:1253
+#: src/readelf.c:1255
msgid " [Compression Size Al]"
-msgstr ""
+msgstr " [СтиÑÐºÐ°Ð½Ð½Ñ Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ðл]"
-#: src/readelf.c:1255
+#: src/readelf.c:1257
msgid " [Compression Size Al]"
-msgstr ""
+msgstr " [СтиÑÐºÐ°Ð½Ð½Ñ Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ðл]"
-#: src/readelf.c:1331
-#, fuzzy, c-format
+#: src/readelf.c:1335
+#, c-format
msgid "bad compression header for section %zd: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу %zu: %s"
+msgstr "помилковий заголовок ÑтиÑÐ½ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %zd: %s"
-#: src/readelf.c:1342
-#, fuzzy, c-format
+#: src/readelf.c:1346
+#, c-format
msgid "bad gnu compressed size for section %zd: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d: %s"
+msgstr "помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑтиÑненого розміру gnu Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %zd: %s"
-#: src/readelf.c:1360
+#: src/readelf.c:1364
msgid "Program Headers:"
msgstr "Заголовки програми:"
-#: src/readelf.c:1362
+#: src/readelf.c:1366
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" Тип Зміщен ВіртÐдр ФізÐдр РозмФайл РозмПам Пра Вирів"
-#: src/readelf.c:1365
+#: src/readelf.c:1369
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
@@ -4412,12 +4431,12 @@ msgstr ""
" Тип Зміщен ВіртÐдр ФізÐдр "
"РозмФайлРозмПам Пра Вирів"
-#: src/readelf.c:1422
+#: src/readelf.c:1426
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[Запит щодо інтерпретатора програми: %s]\n"
-#: src/readelf.c:1449
+#: src/readelf.c:1453
msgid ""
"\n"
" Section to Segment mapping:\n"
@@ -4427,12 +4446,12 @@ msgstr ""
" Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² на Ñегмент:\n"
" Розділи Ñегмента..."
-#: src/readelf.c:1460 src/unstrip.c:2110 src/unstrip.c:2152 src/unstrip.c:2159
+#: src/readelf.c:1464 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
#, c-format
msgid "cannot get program header: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок програми: %s"
-#: src/readelf.c:1606
+#: src/readelf.c:1610
#, c-format
msgid ""
"\n"
@@ -4450,7 +4469,7 @@ msgstr[2] ""
"\n"
"Група розділів COMDAT [%2zu] «%s» з підпиÑом «%s» міÑтить %zu запиÑів:\n"
-#: src/readelf.c:1611
+#: src/readelf.c:1615
#, c-format
msgid ""
"\n"
@@ -4468,31 +4487,31 @@ msgstr[2] ""
"\n"
"Група розділів [%2zu] «%s» з підпиÑом «%s» міÑтить %zu запиÑів:\n"
-#: src/readelf.c:1619
+#: src/readelf.c:1623
msgid "<INVALID SYMBOL>"
msgstr "<ÐЕКОРЕКТÐИЙ СИМВОЛ>"
-#: src/readelf.c:1633
+#: src/readelf.c:1637
msgid "<INVALID SECTION>"
msgstr "<ÐЕКОРЕКТÐИЙ РОЗДІЛ>"
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1660 src/readelf.c:2387 src/readelf.c:3488 src/readelf.c:12625
+#: src/readelf.c:12632 src/readelf.c:12676 src/readelf.c:12683
msgid "Couldn't uncompress section"
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ розділ"
-#: src/readelf.c:1661 src/readelf.c:2388 src/readelf.c:3489
-#, fuzzy, c-format
+#: src/readelf.c:1665 src/readelf.c:2392 src/readelf.c:3493
+#, c-format
msgid "cannot get section [%zd] header: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу [%zd]: %s"
-#: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:1809 src/readelf.c:2459 src/readelf.c:2717 src/readelf.c:2793
+#: src/readelf.c:3097 src/readelf.c:3171 src/readelf.c:5401
#, c-format
msgid "invalid sh_link value in section %zu"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_link у розділі %zu"
-#: src/readelf.c:1808
+#: src/readelf.c:1812
#, c-format
msgid ""
"\n"
@@ -4515,36 +4534,36 @@ msgstr[2] ""
"Динамічний Ñегмент міÑтить %lu запиÑів:\n"
" Ðдр: %#0*<PRIx64> ЗміщеннÑ: %#08<PRIx64> ПоÑ. на розділ: [%2u] '%s'\n"
-#: src/readelf.c:1818
+#: src/readelf.c:1822
msgid " Type Value\n"
msgstr " Тип ЗначеннÑ\n"
-#: src/readelf.c:1842
+#: src/readelf.c:1846
#, c-format
msgid "Shared library: [%s]\n"
msgstr "Спільна бібліотека: [%s]\n"
-#: src/readelf.c:1847
+#: src/readelf.c:1851
#, c-format
msgid "Library soname: [%s]\n"
msgstr "Ðазва so бібліотеки: [%s]\n"
-#: src/readelf.c:1852
+#: src/readelf.c:1856
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "Rpath бібліотеки: [%s]\n"
-#: src/readelf.c:1857
+#: src/readelf.c:1861
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "Runpath бібліотеки: [%s]\n"
-#: src/readelf.c:1877
+#: src/readelf.c:1881
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (байт)\n"
-#: src/readelf.c:1990 src/readelf.c:2180
+#: src/readelf.c:1994 src/readelf.c:2184
#, c-format
msgid ""
"\n"
@@ -4553,7 +4572,7 @@ msgstr ""
"\n"
"Ðекоректна Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів за зміщеннÑм %#0<PRIx64>\n"
-#: src/readelf.c:2008 src/readelf.c:2198
+#: src/readelf.c:2012 src/readelf.c:2202
#, c-format
msgid ""
"\n"
@@ -4582,7 +4601,7 @@ msgstr[2] ""
#. The .rela.dyn section does not refer to a specific section but
#. instead of section index zero. Do not try to print a section
#. name.
-#: src/readelf.c:2023 src/readelf.c:2213
+#: src/readelf.c:2027 src/readelf.c:2217
#, c-format
msgid ""
"\n"
@@ -4600,30 +4619,30 @@ msgstr[2] ""
"\n"
"Розділ переÑÑƒÐ²Ð°Ð½Ð½Ñ [%2u] «%s» за зміщеннÑм %#0<PRIx64> міÑтить %d запиÑів:\n"
-#: src/readelf.c:2033
+#: src/readelf.c:2037
msgid " Offset Type Value Name\n"
msgstr " Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¢Ð¸Ð¿ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва\n"
-#: src/readelf.c:2035
+#: src/readelf.c:2039
msgid " Offset Type Value Name\n"
msgstr " Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¢Ð¸Ð¿ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва\n"
-#: src/readelf.c:2088 src/readelf.c:2099 src/readelf.c:2112 src/readelf.c:2133
-#: src/readelf.c:2145 src/readelf.c:2279 src/readelf.c:2291 src/readelf.c:2305
-#: src/readelf.c:2327 src/readelf.c:2340
+#: src/readelf.c:2092 src/readelf.c:2103 src/readelf.c:2116 src/readelf.c:2137
+#: src/readelf.c:2149 src/readelf.c:2283 src/readelf.c:2295 src/readelf.c:2309
+#: src/readelf.c:2331 src/readelf.c:2344
msgid "<INVALID RELOC>"
msgstr "<ÐЕКОРЕКТÐЕ ПЕРЕМІЩЕÐÐЯ>"
-#: src/readelf.c:2223
+#: src/readelf.c:2227
msgid " Offset Type Value Addend Name\n"
msgstr " Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¢Ð¸Ð¿ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва додатка\n"
-#: src/readelf.c:2225
+#: src/readelf.c:2229
msgid " Offset Type Value Addend Name\n"
msgstr ""
" Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¢Ð¸Ð¿ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва додатка\n"
-#: src/readelf.c:2463
+#: src/readelf.c:2467
#, c-format
msgid ""
"\n"
@@ -4641,7 +4660,7 @@ msgstr[2] ""
"\n"
"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів [%2u] «%s» міÑтить %u запиÑів:\n"
-#: src/readelf.c:2468
+#: src/readelf.c:2472
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
@@ -4649,33 +4668,33 @@ msgstr[0] " %lu лок. Ñимвол Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів: [%2u] «
msgstr[1] " %lu лок. Ñимволи Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів: [%2u] «%s»\n"
msgstr[2] " %lu лок. Ñимволів Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів: [%2u] «%s»\n"
-#: src/readelf.c:2476
+#: src/readelf.c:2480
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " â„–â„– Знач. Роз. Тип Зв’Ñз Вид. Інд Ðазва\n"
-#: src/readelf.c:2478
+#: src/readelf.c:2482
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " â„–â„– Знач. Роз. Тип Зв’Ñз Вид. Інд Ðазва\n"
-#: src/readelf.c:2498
+#: src/readelf.c:2502
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2586
+#: src/readelf.c:2590
#, c-format
msgid "bad dynamic symbol"
msgstr "помилковий динамічний Ñимвол"
-#: src/readelf.c:2668
+#: src/readelf.c:2672
msgid "none"
msgstr "немає"
-#: src/readelf.c:2685
+#: src/readelf.c:2689
msgid "| <unknown>"
msgstr "| <невідомо>"
-#: src/readelf.c:2716
+#: src/readelf.c:2720
#, c-format
msgid ""
"\n"
@@ -4698,17 +4717,17 @@ msgstr[2] ""
"Розділ потреби у верÑÑ–ÑÑ… [%2u] «%s», що міÑтить %d запиÑів:\n"
" Ðдр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: [%2u] «%s»\n"
-#: src/readelf.c:2737
+#: src/readelf.c:2741
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: ВерÑÑ–Ñ: %hu Файл: %s Кть: %hu\n"
-#: src/readelf.c:2750
+#: src/readelf.c:2754
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Ðазва: %s Прап: %s ВерÑÑ–Ñ: %hu\n"
-#: src/readelf.c:2793
+#: src/readelf.c:2797
#, c-format
msgid ""
"\n"
@@ -4731,18 +4750,18 @@ msgstr[2] ""
"Розділ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— [%2u] «%s», що міÑтить %d запиÑів:\n"
" Ðдр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: [%2u] «%s»\n"
-#: src/readelf.c:2821
+#: src/readelf.c:2825
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr " %#06x: ВерÑÑ–Ñ: %hd Прап.: %s ІндекÑ: %hd К-Ñ‚ÑŒ: %hd Ðазва: %s\n"
-#: src/readelf.c:2836
+#: src/readelf.c:2840
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: батьківÑький %d: %s\n"
#. Print the header.
-#: src/readelf.c:3097
+#: src/readelf.c:3101
#, c-format
msgid ""
"\n"
@@ -4765,15 +4784,15 @@ msgstr[2] ""
"Розділ Ñимволів верÑій [%2u] «%s», що міÑтить %d запиÑів:\n"
" Ðдр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: [%2u] «%s»"
-#: src/readelf.c:3125
+#: src/readelf.c:3129
msgid " 0 *local* "
msgstr " 0 *локальний* "
-#: src/readelf.c:3130
+#: src/readelf.c:3134
msgid " 1 *global* "
msgstr " 1 *загальний* "
-#: src/readelf.c:3172
+#: src/readelf.c:3176
#, c-format
msgid ""
"\n"
@@ -4801,22 +4820,22 @@ msgstr[2] ""
"блоками):\n"
" Ðдр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: [%2u] «%s»\n"
-#: src/readelf.c:3194
+#: src/readelf.c:3198
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " Довжина Ðомер % від загал. ПокриттÑ\n"
-#: src/readelf.c:3196
+#: src/readelf.c:3200
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:3203
+#: src/readelf.c:3207
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:3216
+#: src/readelf.c:3220
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
@@ -4825,37 +4844,37 @@ msgstr ""
" Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ÐºÑ–Ð»ÑŒÐºÑ–ÑÑ‚ÑŒ теÑтів: уÑпішний пошук: %f\n"
"\t\t\t неуÑпішний пошук: %f\n"
-#: src/readelf.c:3234 src/readelf.c:3298 src/readelf.c:3364
+#: src/readelf.c:3238 src/readelf.c:3302 src/readelf.c:3368
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d: %s"
-#: src/readelf.c:3242
+#: src/readelf.c:3246
#, c-format
msgid "invalid data in sysv.hash section %d"
msgstr "некоректні дані у розділі sysv.hash %d"
-#: src/readelf.c:3271
-#, fuzzy, c-format
+#: src/readelf.c:3275
+#, c-format
msgid "invalid chain in sysv.hash section %d"
-msgstr "некоректні дані у розділі sysv.hash %d"
+msgstr "некоректний ланцюжок у розділі sysv.hash %d"
-#: src/readelf.c:3306
+#: src/readelf.c:3310
#, c-format
msgid "invalid data in sysv.hash64 section %d"
msgstr "некоректні дані у розділі sysv.hash64 %d"
-#: src/readelf.c:3337
-#, fuzzy, c-format
+#: src/readelf.c:3341
+#, c-format
msgid "invalid chain in sysv.hash64 section %d"
-msgstr "некоректні дані у розділі sysv.hash64 %d"
+msgstr "некоректний ланцюжок у розділі sysv.hash64 %d"
-#: src/readelf.c:3373
+#: src/readelf.c:3377
#, c-format
msgid "invalid data in gnu.hash section %d"
msgstr "некоректні дані у розділі gnu.hash %d"
-#: src/readelf.c:3440
+#: src/readelf.c:3444
#, c-format
msgid ""
" Symbol Bias: %u\n"
@@ -4865,7 +4884,7 @@ msgstr ""
" Розмір бітової маÑки: %zu байтів %<PRIuFAST32>%% вÑтановлених бітів зÑув "
"2-го хешу: %u\n"
-#: src/readelf.c:3529
+#: src/readelf.c:3533
#, c-format
msgid ""
"\n"
@@ -4886,7 +4905,7 @@ msgstr[2] ""
"Розділ ÑпиÑку бібліотек [%2zu] «%s» за зміщеннÑм %#0<PRIx64> міÑтить %d "
"запиÑів:\n"
-#: src/readelf.c:3543
+#: src/readelf.c:3547
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
@@ -4894,7 +4913,7 @@ msgstr ""
" Бібліотека ЧаÑовий штамп ВерÑÑ–Ñ Ñуми "
"Прапорці"
-#: src/readelf.c:3595
+#: src/readelf.c:3606
#, c-format
msgid ""
"\n"
@@ -4905,102 +4924,102 @@ msgstr ""
"Розділ атрибутів об’єктів [%2zu] «%s» з %<PRIu64> байтів за зміщеннÑм "
"%#0<PRIx64>:\n"
-#: src/readelf.c:3612
+#: src/readelf.c:3623
msgid " Owner Size\n"
msgstr " ВлаÑник Розмір\n"
-#: src/readelf.c:3641
+#: src/readelf.c:3647
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
#. Unknown subsection, print and skip.
-#: src/readelf.c:3680
+#: src/readelf.c:3686
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
#. Tag_File
-#: src/readelf.c:3685
+#: src/readelf.c:3691
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " Файл: %11<PRIu32>\n"
-#: src/readelf.c:3734
+#: src/readelf.c:3740
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3737
+#: src/readelf.c:3743
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3740
+#: src/readelf.c:3746
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3750
+#: src/readelf.c:3756
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3753
+#: src/readelf.c:3759
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3823
-#, fuzzy, c-format
+#: src/readelf.c:3829
+#, c-format
msgid "sprintf failure"
-msgstr "помилка mprotect"
+msgstr "помилка sprintf"
-#: src/readelf.c:4305
+#: src/readelf.c:4311
msgid "empty block"
msgstr "порожній блок"
-#: src/readelf.c:4308
+#: src/readelf.c:4314
#, c-format
msgid "%zu byte block:"
msgstr "%zu-байтовий блок:"
-#: src/readelf.c:4786
-#, fuzzy, c-format
+#: src/readelf.c:4792
+#, c-format
msgid "%*s[%2<PRIuMAX>] %s <TRUNCATED>\n"
-msgstr "%*s[%4<PRIuMAX>] %s <ОБРІЗÐÐО>\n"
+msgstr "%*s[%2<PRIuMAX>] %s <ОБРІЗÐÐО>\n"
-#: src/readelf.c:4850
+#: src/readelf.c:4859
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> викориÑтано з різними розмірами адреÑ"
-#: src/readelf.c:4857
+#: src/readelf.c:4866
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> викориÑтано з різними розмірами зміщень"
-#: src/readelf.c:4864
+#: src/readelf.c:4873
#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
msgstr "%s %#<PRIx64> викориÑтано з різними базовими адреÑами"
-#: src/readelf.c:4871
-#, fuzzy, c-format
+#: src/readelf.c:4880
+#, c-format
msgid "%s %#<PRIx64> used with different attribute %s and %s"
-msgstr "%s %#<PRIx64> викориÑтано з різними розмірами адреÑ"
+msgstr "%s %#<PRIx64> викориÑтано з різними атрибутами, %s Ñ– %s"
-#: src/readelf.c:4968
+#: src/readelf.c:4980
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <ÐЕВИКОРИСТОВУВÐÐІ ДÐÐІ У РЕШТІ РОЗДІЛУ>\n"
-#: src/readelf.c:4976
+#: src/readelf.c:4988
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <ÐЕВИКОРИСТОВУВÐÐІ ДÐÐІ> ... %<PRIu64> байтів ...\n"
-#: src/readelf.c:5054
+#: src/readelf.c:5091
#, c-format
msgid ""
"\n"
@@ -5011,7 +5030,7 @@ msgstr ""
"Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n"
" [ Код]\n"
-#: src/readelf.c:5062
+#: src/readelf.c:5099
#, c-format
msgid ""
"\n"
@@ -5020,20 +5039,20 @@ msgstr ""
"\n"
"Розділ Ñкорочень за зміщеннÑм %<PRIu64>:\n"
-#: src/readelf.c:5075
+#: src/readelf.c:5112
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ ÑкороченнÑ: %s\n"
-#: src/readelf.c:5091
+#: src/readelf.c:5128
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] зміщеннÑ: %<PRId64>, дочірній: %s, мітка: %s\n"
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6586 src/readelf.c:8323 src/readelf.c:9009 src/readelf.c:9445
-#: src/readelf.c:9690 src/readelf.c:9856 src/readelf.c:10243
-#: src/readelf.c:10303
+#: src/readelf.c:5161 src/readelf.c:5470 src/readelf.c:5637 src/readelf.c:6022
+#: src/readelf.c:6638 src/readelf.c:8375 src/readelf.c:9064 src/readelf.c:9537
+#: src/readelf.c:9788 src/readelf.c:9954 src/readelf.c:10341
+#: src/readelf.c:10401
#, c-format
msgid ""
"\n"
@@ -5042,56 +5061,54 @@ msgstr ""
"\n"
"Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n"
-#: src/readelf.c:5137
-#, fuzzy, c-format
+#: src/readelf.c:5174
+#, c-format
msgid "cannot get .debug_addr section data: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу .debug_addr: %s"
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9054
-#, fuzzy, c-format
+#: src/readelf.c:5274 src/readelf.c:5298 src/readelf.c:5682 src/readelf.c:9109
+#, c-format
msgid " Length: %8<PRIu64>\n"
-msgstr ""
-"\n"
-" Довжина: %6<PRIu64>\n"
+msgstr " Довжина: %8<PRIu64>\n"
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9067
-#, fuzzy, c-format
+#: src/readelf.c:5276 src/readelf.c:5313 src/readelf.c:5695 src/readelf.c:9122
+#, c-format
msgid " DWARF version: %8<PRIu16>\n"
-msgstr " верÑÑ–Ñ DWARF: %6<PRIuFAST16>\n"
+msgstr " верÑÑ–Ñ DWARF: %8<PRIu16>\n"
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9076
-#, fuzzy, c-format
+#: src/readelf.c:5277 src/readelf.c:5322 src/readelf.c:5704 src/readelf.c:9131
+#, c-format
msgid " Address size: %8<PRIu64>\n"
-msgstr " Розмір адреÑи: %6<PRIu64>\n"
+msgstr " Розмір адреÑи: %8<PRIu64>\n"
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9086
-#, fuzzy, c-format
+#: src/readelf.c:5279 src/readelf.c:5332 src/readelf.c:5714 src/readelf.c:9141
+#, c-format
msgid " Segment size: %8<PRIu64>\n"
msgstr ""
-" Розмір Ñегмента: %6<PRIu64>\n"
+" Розмір Ñегмента: %8<PRIu64>\n"
"\n"
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9071 src/readelf.c:10435
-#, fuzzy, c-format
+#: src/readelf.c:5317 src/readelf.c:5699 src/readelf.c:9126 src/readelf.c:10533
+#, c-format
msgid "Unknown version"
-msgstr "невідома верÑÑ–Ñ"
+msgstr "Ðевідома верÑÑ–Ñ"
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9081
+#: src/readelf.c:5327 src/readelf.c:5540 src/readelf.c:5709 src/readelf.c:9136
#, c-format
msgid "unsupported address size"
msgstr "непідтримуваний розмір адреÑи"
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9091
+#: src/readelf.c:5338 src/readelf.c:5551 src/readelf.c:5719 src/readelf.c:9146
#, c-format
msgid "unsupported segment size"
msgstr "непідтримуваний розмір Ñегмента"
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5391 src/readelf.c:5465
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані get .debug_aranges: %s"
-#: src/readelf.c:5369
+#: src/readelf.c:5406
#, c-format
msgid ""
"\n"
@@ -5109,12 +5126,12 @@ msgstr[2] ""
"\n"
"Розділ DWARF [%2zu] «%s» за зміщеннÑм %#<PRIx64> міÑтить %zu запиÑів:\n"
-#: src/readelf.c:5400
+#: src/readelf.c:5437
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:5402
+#: src/readelf.c:5439
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5122,7 +5139,7 @@ msgstr ""
" [%*zu] початок: %0#*<PRIx64>, довжина: %5<PRIu64>, Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:5446 src/readelf.c:8350
+#: src/readelf.c:5483 src/readelf.c:8402
#, c-format
msgid ""
"\n"
@@ -5131,13 +5148,13 @@ msgstr ""
"\n"
"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð·Ð° зміщеннÑм %zu:\n"
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6610 src/readelf.c:8361
-#: src/readelf.c:9035
+#: src/readelf.c:5487 src/readelf.c:5663 src/readelf.c:6662 src/readelf.c:8413
+#: src/readelf.c:9090
#, c-format
msgid "invalid data in section [%zu] '%s'"
msgstr "некоректні дані у розділі [%zu] «%s»"
-#: src/readelf.c:5466
+#: src/readelf.c:5503
#, c-format
msgid ""
"\n"
@@ -5146,27 +5163,27 @@ msgstr ""
"\n"
" Довжина: %6<PRIu64>\n"
-#: src/readelf.c:5478
+#: src/readelf.c:5515
#, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
msgstr " верÑÑ–Ñ DWARF: %6<PRIuFAST16>\n"
-#: src/readelf.c:5482
+#: src/readelf.c:5519
#, c-format
msgid "unsupported aranges version"
msgstr "непідтримувана верÑÑ–Ñ aranges"
-#: src/readelf.c:5493
+#: src/readelf.c:5530
#, c-format
msgid " CU offset: %6<PRIx64>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU: %6<PRIx64>\n"
-#: src/readelf.c:5499
+#: src/readelf.c:5536
#, c-format
msgid " Address size: %6<PRIu64>\n"
msgstr " Розмір адреÑи: %6<PRIu64>\n"
-#: src/readelf.c:5510
+#: src/readelf.c:5547
#, c-format
msgid ""
" Segment size: %6<PRIu64>\n"
@@ -5175,111 +5192,117 @@ msgstr ""
" Розмір Ñегмента: %6<PRIu64>\n"
"\n"
-#: src/readelf.c:5565
+#: src/readelf.c:5602
#, c-format
msgid " %zu padding bytes\n"
msgstr " %zu байтів доповненнÑ\n"
-#: src/readelf.c:5609
-#, fuzzy, c-format
+#: src/readelf.c:5646
+#, c-format
msgid "cannot get .debug_rnglists content: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані .debug_ranges: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ .debug_rnglists: %s"
-#: src/readelf.c:5632 src/readelf.c:9041
-#, fuzzy, c-format
+#: src/readelf.c:5669 src/readelf.c:9096
+#, c-format
msgid ""
"Table at Offset 0x%<PRIx64>:\n"
"\n"
-msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ .debug_line: 0x%<PRIx64>\n"
+msgstr ""
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð·Ð° зміщеннÑм 0x%<PRIx64>:\n"
+"\n"
-#: src/readelf.c:5687 src/readelf.c:9096
-#, fuzzy, c-format
+#: src/readelf.c:5724 src/readelf.c:9151
+#, c-format
msgid " Offset entries: %8<PRIu64>\n"
-msgstr " Довжина зміщеннÑ: %<PRIu8>\n"
+msgstr " ЗапиÑи зміщеннÑ: %8<PRIu64>\n"
-#: src/readelf.c:5703 src/readelf.c:9112
+#: src/readelf.c:5740 src/readelf.c:9167
#, c-format
msgid " Unknown CU base: "
-msgstr ""
+msgstr " Ðевідома оÑнова CU: "
-#: src/readelf.c:5705 src/readelf.c:9114
+#: src/readelf.c:5742 src/readelf.c:9169
#, c-format
msgid " CU [%6<PRIx64>] base: "
-msgstr ""
+msgstr " ОÑнова CU [%6<PRIx64>]: "
-#: src/readelf.c:5711 src/readelf.c:9120
+#: src/readelf.c:5748 src/readelf.c:9175
#, c-format
msgid " Not associated with a CU.\n"
-msgstr ""
+msgstr " Ðе пов'Ñзано із CU.\n"
-#: src/readelf.c:5722 src/readelf.c:9131
+#: src/readelf.c:5759 src/readelf.c:9186
#, c-format
msgid "too many offset entries for unit length"
-msgstr ""
+msgstr "забагато запиÑів зÑуву Ð´Ð»Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ модулÑ"
-#: src/readelf.c:5726 src/readelf.c:9135
-#, fuzzy, c-format
+#: src/readelf.c:5763 src/readelf.c:9190
+#, c-format
msgid " Offsets starting at 0x%<PRIx64>:\n"
-msgstr " ЗміщеннÑ: 0x%<PRIx64>\n"
+msgstr " ЗміщеннÑ, що починаютьÑÑ Ð· 0x%<PRIx64>:\n"
-#: src/readelf.c:5778
-#, fuzzy, c-format
+#: src/readelf.c:5815
+#, c-format
msgid "invalid range list data"
-msgstr "некоректні дані"
+msgstr "некоректні дані ÑпиÑку діапазонів"
-#: src/readelf.c:5963 src/readelf.c:9423
-#, fuzzy, c-format
+#: src/readelf.c:6000 src/readelf.c:9515
+#, c-format
msgid ""
" %zu padding bytes\n"
"\n"
-msgstr " %zu байтів доповненнÑ\n"
+msgstr ""
+" %zu байтів доповненнÑ\n"
+"\n"
-#: src/readelf.c:5980
+#: src/readelf.c:6017
#, c-format
msgid "cannot get .debug_ranges content: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані .debug_ranges: %s"
-#: src/readelf.c:6016 src/readelf.c:9478
+#: src/readelf.c:6053 src/readelf.c:9570
#, c-format
msgid ""
"\n"
" Unknown CU base: "
msgstr ""
+"\n"
+" Ðевідома оÑнова CU: "
-#: src/readelf.c:6018 src/readelf.c:9480
+#: src/readelf.c:6055 src/readelf.c:9572
#, c-format
msgid ""
"\n"
" CU [%6<PRIx64>] base: "
msgstr ""
+"\n"
+" ОÑнова CU [%6<PRIx64>]: "
-#: src/readelf.c:6027 src/readelf.c:9506 src/readelf.c:9532
+#: src/readelf.c:6064 src/readelf.c:9598 src/readelf.c:9624
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <ÐЕКОРЕКТÐІ ДÐÐІ>\n"
-#: src/readelf.c:6048 src/readelf.c:9612
-#, fuzzy, c-format
-msgid ""
-" [%6tx] base address\n"
-" "
-msgstr " [%6tx] базова адреÑа %s\n"
+#: src/readelf.c:6089 src/readelf.c:9708
+#, fuzzy
+msgid "base address"
+msgstr " вÑтановити адреÑу у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
-#: src/readelf.c:6056 src/readelf.c:9620
-#, fuzzy, c-format
+#: src/readelf.c:6099 src/readelf.c:9718
+#, c-format
msgid " [%6tx] empty list\n"
-msgstr " [%6tx] порожній ÑпиÑок\n"
+msgstr " [%6tx] порожній ÑпиÑок\n"
-#: src/readelf.c:6311
+#: src/readelf.c:6359
msgid " <INVALID DATA>\n"
msgstr " <ÐЕКОРЕКТÐІ ДÐÐІ>\n"
-#: src/readelf.c:6564
+#: src/readelf.c:6616
#, c-format
msgid "cannot get ELF: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ELF: %s"
-#: src/readelf.c:6582
+#: src/readelf.c:6634
#, c-format
msgid ""
"\n"
@@ -5288,7 +5311,7 @@ msgstr ""
"\n"
"Розділ відомоÑтей щодо вікна викликів [%2zu] «%s» за зміщеннÑм %#<PRIx64>:\n"
-#: src/readelf.c:6632
+#: src/readelf.c:6684
#, c-format
msgid ""
"\n"
@@ -5297,65 +5320,65 @@ msgstr ""
"\n"
" [%6tx] нульовий переривач\n"
-#: src/readelf.c:6733 src/readelf.c:6887
+#: src/readelf.c:6785 src/readelf.c:6939
#, c-format
msgid "invalid augmentation length"
msgstr "некоректна довжина збільшеннÑ"
-#: src/readelf.c:6748
+#: src/readelf.c:6800
msgid "FDE address encoding: "
msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð´Ñ€ÐµÑи FDE: "
-#: src/readelf.c:6754
+#: src/readelf.c:6806
msgid "LSDA pointer encoding: "
msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° LSDA: "
-#: src/readelf.c:6864
+#: src/readelf.c:6916
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (зміщеннÑ: %#<PRIx64>)"
-#: src/readelf.c:6871
+#: src/readelf.c:6923
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ кінцÑ: %#<PRIx64>)"
-#: src/readelf.c:6908
+#: src/readelf.c:6960
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sвказівник LSDA: %#<PRIx64>\n"
-#: src/readelf.c:6993
-#, fuzzy, c-format
+#: src/readelf.c:7045
+#, c-format
msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ код атрибута: %s"
+msgstr "DIE [%<PRIx64>] не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ код атрибута: %s"
-#: src/readelf.c:7003
-#, fuzzy, c-format
+#: src/readelf.c:7055
+#, c-format
msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ форму атрибута: %s"
+msgstr "DIE [%<PRIx64>] не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ форму атрибута: %s"
-#: src/readelf.c:7025
-#, fuzzy, c-format
+#: src/readelf.c:7077
+#, c-format
msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°: %s"
+msgstr "DIE [%<PRIx64>] не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° «%s» (%s): %s"
-#: src/readelf.c:7355
-#, fuzzy, c-format
+#: src/readelf.c:7407
+#, c-format
msgid "invalid file (%<PRId64>): %s"
-msgstr "некоректний файл"
+msgstr "некоректний файл (%<PRId64>): %s"
-#: src/readelf.c:7359
-#, fuzzy, c-format
+#: src/readelf.c:7411
+#, c-format
msgid "no srcfiles for CU [%<PRIx64>]"
-msgstr " вÑтановити файл у %<PRIu64>\n"
+msgstr "немає srcfiles Ð´Ð»Ñ CU [%<PRIx64>]"
-#: src/readelf.c:7363
-#, fuzzy, c-format
+#: src/readelf.c:7415
+#, c-format
msgid "couldn't get DWARF CU: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ELF: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ CU DWARF: %s"
-#: src/readelf.c:7676
+#: src/readelf.c:7728
#, c-format
msgid ""
"\n"
@@ -5366,13 +5389,13 @@ msgstr ""
"Розділ DWARF [%2zu] «%s» за зміщеннÑм %#<PRIx64>:\n"
" [ЗміщеннÑ]\n"
-#: src/readelf.c:7726
-#, fuzzy, c-format
+#: src/readelf.c:7778
+#, c-format
msgid "cannot get next unit: %s"
-msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ наÑтупний DIE: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ наÑтупний модуль: %s"
-#: src/readelf.c:7745
-#, fuzzy, c-format
+#: src/readelf.c:7797
+#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: "
@@ -5380,11 +5403,11 @@ msgid ""
" Type signature: %#<PRIx64>, Type offset: %#<PRIx64> [%<PRIx64>]\n"
msgstr ""
" Модуль типів за зміщеннÑм %<PRIu64>:\n"
-" ВерÑÑ–Ñ: %<PRIu16>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñкорочень: %<PRIu64>, ÐдреÑа: %<PRIu8>, "
-"ЗміщеннÑ: %<PRIu8>\n"
-" ÐŸÑ–Ð´Ð¿Ð¸Ñ Ñ‚Ð¸Ð¿Ñƒ: %#<PRIx64>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ: %#<PRIx64>\n"
+" ВерÑÑ–Ñ: %<PRIu16>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñкорочень: %<PRIu64>, Розмір адреÑи: "
+"%<PRIu8>, Розмір зміщеннÑ: %<PRIu8>\n"
+" ÐŸÑ–Ð´Ð¿Ð¸Ñ Ñ‚Ð¸Ð¿Ñƒ: %#<PRIx64>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ: %#<PRIx64> [%<PRIx64>]\n"
-#: src/readelf.c:7757
+#: src/readelf.c:7809
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
@@ -5395,49 +5418,49 @@ msgstr ""
" ВерÑÑ–Ñ: %<PRIu16>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñкорочень: %<PRIu64>, ÐдреÑа: %<PRIu8>, "
"ЗміщеннÑ: %<PRIu8>\n"
-#: src/readelf.c:7767 src/readelf.c:7930
+#: src/readelf.c:7819 src/readelf.c:7982
#, c-format
msgid " Unit type: %s (%<PRIu8>)"
-msgstr ""
+msgstr " Тип модулÑ: %s (%<PRIu8>)"
-#: src/readelf.c:7794
+#: src/readelf.c:7846
#, c-format
msgid "unknown version (%d) or unit type (%d)"
-msgstr ""
+msgstr "невідома верÑÑ–Ñ (%d) або тип Ð¼Ð¾Ð´ÑƒÐ»Ñ (%d)"
-#: src/readelf.c:7823
+#: src/readelf.c:7875
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ DIE: %s"
-#: src/readelf.c:7832
-#, fuzzy, c-format
+#: src/readelf.c:7884
+#, c-format
msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
msgstr ""
-"не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ мітку DIE за зміщеннÑм %<PRIu64> у розділі «%s»: %s"
+"не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ мітку DIE за зміщеннÑм [%<PRIu64>] у розділі «%s»: %s"
-#: src/readelf.c:7870
+#: src/readelf.c:7922
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ наÑтупний DIE: %s\n"
-#: src/readelf.c:7878
+#: src/readelf.c:7930
#, c-format
msgid "cannot get next DIE: %s"
msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ наÑтупний DIE: %s"
-#: src/readelf.c:7922
-#, fuzzy, c-format
+#: src/readelf.c:7974
+#, c-format
msgid ""
" Split compilation unit at offset %<PRIu64>:\n"
" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: "
"%<PRIu8>, Offset size: %<PRIu8>\n"
msgstr ""
-" Модуль компілÑції за зміщеннÑм %<PRIu64>:\n"
+" Модуль розділеної компілÑції за зміщеннÑм %<PRIu64>:\n"
" ВерÑÑ–Ñ: %<PRIu16>, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñкорочень: %<PRIu64>, ÐдреÑа: %<PRIu8>, "
"ЗміщеннÑ: %<PRIu8>\n"
-#: src/readelf.c:7974
+#: src/readelf.c:8026
#, c-format
msgid ""
"\n"
@@ -5448,19 +5471,19 @@ msgstr ""
"Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:8306
-#, fuzzy, c-format
+#: src/readelf.c:8358
+#, c-format
msgid "unknown form: %s"
-msgstr "невідома форма %#<PRIx64>"
+msgstr "невідома форма: %s"
-#: src/readelf.c:8337
+#: src/readelf.c:8389
#, c-format
msgid "cannot get line data section data: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу лінійних даних: %s"
#. Print what we got so far.
-#: src/readelf.c:8439
-#, fuzzy, c-format
+#: src/readelf.c:8491
+#, c-format
msgid ""
"\n"
" Length: %<PRIu64>\n"
@@ -5481,36 +5504,38 @@ msgstr ""
" Довжина: %<PRIu64>\n"
" ВерÑÑ–Ñ DWARF: %<PRIuFAST16>\n"
" Довжина вÑтупу: %<PRIu64>\n"
+" Розмір адреÑи: %zd\n"
+" Розмір Ñелектора Ñегментів: %zd\n"
" Мінімальна довж. інÑÑ‚Ñ€.: %<PRIuFAST8>\n"
" МакÑ. к-Ñ‚ÑŒ операцій на інÑтрукцію: %<PRIuFAST8>\n"
-" Поч. значеннÑ, Ñкщо «%s»: %<PRIuFAST8>\n"
+" Поч. значеннÑ, Ñкщо «is_stmt»: %<PRIuFAST8>\n"
" ОÑнова Ñ€Ñдків: %<PRIdFAST8>\n"
" Діапазон Ñ€Ñдків: %<PRIuFAST8>\n"
" ОÑнова кодів операцій: %<PRIuFAST8>\n"
"\n"
"Коди операцій:\n"
-#: src/readelf.c:8461
-#, fuzzy, c-format
+#: src/readelf.c:8513
+#, c-format
msgid "cannot handle .debug_line version: %u\n"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ верÑÑ–ÑŽ Ñимволу: %s"
+msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ верÑÑ–ÑŽ .debug_line: %u\n"
-#: src/readelf.c:8469
-#, fuzzy, c-format
+#: src/readelf.c:8521
+#, c-format
msgid "cannot handle address size: %u\n"
-msgstr "непідтримуваний розмір адреÑи"
+msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ розмір адреÑи: %u\n"
-#: src/readelf.c:8477
-#, fuzzy, c-format
+#: src/readelf.c:8529
+#, c-format
msgid "cannot handle segment selector size: %u\n"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ розділ: %s"
+msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ розмір Ñелектора Ñегментів: %u\n"
-#: src/readelf.c:8487
+#: src/readelf.c:8539
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "некоректні дані зі зміщеннÑм %tu у розділі [%zu] «%s»"
-#: src/readelf.c:8502
+#: src/readelf.c:8554
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
@@ -5518,7 +5543,7 @@ msgstr[0] " [%*<PRIuFAST8>] %hhu аргумент\n"
msgstr[1] " [%*<PRIuFAST8>] %hhu аргументи\n"
msgstr[2] " [%*<PRIuFAST8>] %hhu аргументів\n"
-#: src/readelf.c:8513
+#: src/readelf.c:8565
msgid ""
"\n"
"Directory table:"
@@ -5526,29 +5551,33 @@ msgstr ""
"\n"
"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ:"
-#: src/readelf.c:8519 src/readelf.c:8596
-#, fuzzy, c-format
+#: src/readelf.c:8571 src/readelf.c:8648
+#, c-format
msgid " ["
-msgstr " PC: "
+msgstr " ["
-#: src/readelf.c:8590
-#, fuzzy
+#: src/readelf.c:8642
msgid ""
"\n"
"File name table:"
msgstr ""
"\n"
-" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¼Ñ–ÑÑ†Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ:"
+" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð½Ð°Ð·Ð² файлів:"
-#: src/readelf.c:8651
-#, fuzzy
+#: src/readelf.c:8703
msgid " Entry Dir Time Size Name"
+msgstr " Ð—Ð°Ð¿Ð¸Ñ ÐšÐ°Ñ‚ Ð§Ð°Ñ Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ðазва"
+
+#: src/readelf.c:8742
+#, fuzzy
+msgid ""
+"\n"
+"No line number statements."
msgstr ""
"\n"
-"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð½Ð°Ð·Ð² файлів:\n"
-" Ð—Ð°Ð¿Ð¸Ñ ÐšÐ°Ñ‚ Ð§Ð°Ñ Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ðазва"
+"Оператори номерів Ñ€Ñдків:"
-#: src/readelf.c:8688
+#: src/readelf.c:8746
msgid ""
"\n"
"Line number statements:"
@@ -5556,120 +5585,118 @@ msgstr ""
"\n"
"Оператори номерів Ñ€Ñдків:"
-#: src/readelf.c:8711
+#: src/readelf.c:8766
#, c-format
msgid "invalid maximum operations per instruction is zero"
msgstr "некоректну кількіÑÑ‚ÑŒ операцій на інÑтрукцію прирівнÑно до нулÑ"
-#: src/readelf.c:8745
-#, fuzzy, c-format
+#: src/readelf.c:8800
+#, c-format
msgid " special opcode %u: address+%u = "
-msgstr " Ñпеціальний код операції %u: адреÑа+%u = %s, Ñ€Ñдок%+d = %zu\n"
+msgstr " Ñпеціальний код операції %u: адреÑа+%u = "
-#: src/readelf.c:8749
-#, fuzzy, c-format
+#: src/readelf.c:8804
+#, c-format
msgid ", op_index = %u, line%+d = %zu\n"
-msgstr ""
-" Ñпеціальний код операції %u: адреÑа+%u = %s, індекÑ_оп = %u, Ñ€Ñдок%+d = "
-"%zu\n"
+msgstr ", індекÑ_оп = %u, Ñ€Ñдок%+d = %zu\n"
-#: src/readelf.c:8752
+#: src/readelf.c:8807
#, c-format
msgid ", line%+d = %zu\n"
-msgstr ""
+msgstr ", Ñ€Ñдок%+d = %zu\n"
-#: src/readelf.c:8770
+#: src/readelf.c:8825
#, c-format
msgid " extended opcode %u: "
msgstr " розширений код операції %u: "
-#: src/readelf.c:8775
+#: src/readelf.c:8830
msgid " end of sequence"
msgstr " кінець поÑлідовноÑÑ‚Ñ–"
-#: src/readelf.c:8793
-#, fuzzy, c-format
+#: src/readelf.c:8848
+#, c-format
msgid " set address to "
-msgstr " вÑтановити адреÑу у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s\n"
+msgstr " вÑтановити адреÑу у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
-#: src/readelf.c:8821
+#: src/readelf.c:8876
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
" Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ файла: dir=%u, mtime=%<PRIu64>, довжина=%<PRIu64>, назва="
"%s\n"
-#: src/readelf.c:8835
+#: src/readelf.c:8890
#, c-format
msgid " set discriminator to %u\n"
msgstr " вÑтановити Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ %u\n"
#. Unknown, ignore it.
-#: src/readelf.c:8840
+#: src/readelf.c:8895
msgid " unknown opcode"
msgstr " невідомий код операції"
#. Takes no argument.
-#: src/readelf.c:8852
+#: src/readelf.c:8907
msgid " copy"
msgstr " копіÑ"
-#: src/readelf.c:8863
-#, fuzzy, c-format
+#: src/readelf.c:8918
+#, c-format
msgid " advance address by %u to "
-msgstr " Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи на %u до %s\n"
+msgstr " Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи на %u до "
-#: src/readelf.c:8867 src/readelf.c:8928
+#: src/readelf.c:8922 src/readelf.c:8983
#, c-format
msgid ", op_index to %u"
-msgstr ""
+msgstr ", op_index до %u"
-#: src/readelf.c:8879
+#: src/readelf.c:8934
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " проÑувати Ñ€Ñдок на Ñталу %d до %<PRId64>\n"
-#: src/readelf.c:8889
+#: src/readelf.c:8944
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " вÑтановити файл у %<PRIu64>\n"
-#: src/readelf.c:8900
+#: src/readelf.c:8955
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñтовпчика %<PRIu64>\n"
-#: src/readelf.c:8907
+#: src/readelf.c:8962
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " вÑтановити «%s» у %<PRIuFAST8>\n"
#. Takes no argument.
-#: src/readelf.c:8913
+#: src/readelf.c:8968
msgid " set basic block flag"
msgstr " вÑтановити прапорець базового блоку"
-#: src/readelf.c:8924
-#, fuzzy, c-format
+#: src/readelf.c:8979
+#, c-format
msgid " advance address by constant %u to "
-msgstr " збільшити адреÑу на Ñталу величину %u до %s\n"
+msgstr " збільшити адреÑу на Ñталу величину %u до "
-#: src/readelf.c:8944
-#, fuzzy, c-format
+#: src/readelf.c:8999
+#, c-format
msgid " advance address by fixed value %u to \n"
-msgstr " збільшити адреÑу на фікÑовану величину %u до %s\n"
+msgstr " збільшити адреÑу на фікÑовану величину %u до \n"
#. Takes no argument.
-#: src/readelf.c:8954
+#: src/readelf.c:9009
msgid " set prologue end flag"
msgstr " вÑтановити прапорець ÐºÑ–Ð½Ñ†Ñ Ð²Ñтупу"
#. Takes no argument.
-#: src/readelf.c:8959
+#: src/readelf.c:9014
msgid " set epilogue begin flag"
msgstr " вÑтановити прапорець початку епілогу"
-#: src/readelf.c:8969
+#: src/readelf.c:9024
#, c-format
msgid " set isa to %u\n"
msgstr " вÑтановити isa у %u\n"
@@ -5677,7 +5704,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:8978
+#: src/readelf.c:9033
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -5685,97 +5712,102 @@ msgstr[0] " невідомий код операції з %<PRIu8> парамеÑ
msgstr[1] " невідомий код операції з %<PRIu8> параметрами:"
msgstr[2] " невідомий код операції з %<PRIu8> параметрами:"
-#: src/readelf.c:9018
-#, fuzzy, c-format
+#: src/readelf.c:9073
+#, c-format
msgid "cannot get .debug_loclists content: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ .debug_loc: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ .debug_loclists: %s"
-#: src/readelf.c:9187
+#: src/readelf.c:9239
#, fuzzy, c-format
+msgid " <INVALID DATA>\n"
+msgstr " <ÐЕКОРЕКТÐІ ДÐÐІ>\n"
+
+#: src/readelf.c:9279
+#, c-format
msgid "invalid loclists data"
-msgstr "некоректні дані"
+msgstr "некоректні дані loclists"
-#: src/readelf.c:9440
+#: src/readelf.c:9532
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ .debug_loc: %s"
-#: src/readelf.c:9647 src/readelf.c:10691
+#: src/readelf.c:9745 src/readelf.c:10789
msgid " <INVALID DATA>\n"
msgstr " <ÐЕКОРЕКТÐІ ДÐÐІ>\n"
-#: src/readelf.c:9702 src/readelf.c:9865
+#: src/readelf.c:9800 src/readelf.c:9963
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу відомоÑтей щодо макроÑів: %s"
-#: src/readelf.c:9782
+#: src/readelf.c:9880
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** незавершений Ñ€Ñдок наприкінці розділу"
-#: src/readelf.c:9805
+#: src/readelf.c:9903
#, c-format
msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
msgstr "%*s*** пропущено аргумент DW_MACINFO_start_file наприкінці розділу"
-#: src/readelf.c:9906
+#: src/readelf.c:10004
#, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " ЗміщеннÑ: 0x%<PRIx64>\n"
-#: src/readelf.c:9918
+#: src/readelf.c:10016
#, c-format
msgid " Version: %<PRIu16>\n"
msgstr " ВерÑÑ–Ñ: %<PRIu16>\n"
-#: src/readelf.c:9924 src/readelf.c:10811
+#: src/readelf.c:10022 src/readelf.c:10909
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr " невідома верÑÑ–Ñ, не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ розділ\n"
-#: src/readelf.c:9931
-#, fuzzy, c-format
+#: src/readelf.c:10029
+#, c-format
msgid " Flag: 0x%<PRIx8>"
-msgstr " Прапорець: 0x%<PRIx8>\n"
+msgstr " Прапорець: 0x%<PRIx8>"
-#: src/readelf.c:9960
+#: src/readelf.c:10058
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " Довжина зміщеннÑ: %<PRIu8>\n"
-#: src/readelf.c:9968
+#: src/readelf.c:10066
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ .debug_line: 0x%<PRIx64>\n"
-#: src/readelf.c:9993
+#: src/readelf.c:10091
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ¾Ð´Ñ–Ð² операцій розширень, запиÑів — %<PRIu8>:\n"
-#: src/readelf.c:10000
+#: src/readelf.c:10098
#, c-format
msgid " [%<PRIx8>]"
msgstr " [%<PRIx8>]"
-#: src/readelf.c:10012
+#: src/readelf.c:10110
#, c-format
msgid " %<PRIu8> arguments:"
msgstr " %<PRIu8> аргументів:"
-#: src/readelf.c:10027
+#: src/readelf.c:10125
#, c-format
msgid " no arguments."
msgstr " немає аргументів."
-#: src/readelf.c:10228
+#: src/readelf.c:10326
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
" [%5d] Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ DIE: %6<PRId64>, Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU DIE: %6<PRId64>, назва: %s\n"
-#: src/readelf.c:10272
+#: src/readelf.c:10370
#, c-format
msgid ""
"\n"
@@ -5786,41 +5818,37 @@ msgstr ""
"Розділ DWARF [%2zu] «%s» зі зміщеннÑм %#<PRIx64>:\n"
" %*s РÑдок\n"
-#: src/readelf.c:10287
-#, fuzzy, c-format
+#: src/readelf.c:10385
+#, c-format
msgid " *** error, missing string terminator\n"
-msgstr " *** помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ€Ñдків: %s\n"
+msgstr " *** помилка, пропущено роздільник Ñ€Ñдків\n"
-#: src/readelf.c:10316
-#, fuzzy, c-format
+#: src/readelf.c:10414
+#, c-format
msgid "cannot get .debug_str_offsets section data: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу .debug_str_offsets: %s"
-#: src/readelf.c:10415
-#, fuzzy, c-format
+#: src/readelf.c:10513
+#, c-format
msgid " Length: %8<PRIu64>\n"
-msgstr ""
-"\n"
-" Довжина: %6<PRIu64>\n"
+msgstr " Довжина: %8<PRIu64>\n"
-#: src/readelf.c:10417
-#, fuzzy, c-format
+#: src/readelf.c:10515
+#, c-format
msgid " Offset size: %8<PRIu8>\n"
-msgstr " Довжина зміщеннÑ: %<PRIu8>\n"
+msgstr " Розмір зÑуву: %8<PRIu8>\n"
-#: src/readelf.c:10431
-#, fuzzy, c-format
+#: src/readelf.c:10529
+#, c-format
msgid " DWARF version: %8<PRIu16>\n"
-msgstr " верÑÑ–Ñ DWARF: %6<PRIuFAST16>\n"
+msgstr " верÑÑ–Ñ DWARF: %8<PRIu16>\n"
-#: src/readelf.c:10440
-#, fuzzy, c-format
+#: src/readelf.c:10538
+#, c-format
msgid " Padding: %8<PRIx16>\n"
-msgstr ""
-"\n"
-" Довжина: %6<PRIu64>\n"
+msgstr " ЗаповненнÑ: %8<PRIx16>\n"
-#: src/readelf.c:10494
+#: src/readelf.c:10592
#, c-format
msgid ""
"\n"
@@ -5829,7 +5857,7 @@ msgstr ""
"\n"
"Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:10596
+#: src/readelf.c:10694
#, c-format
msgid ""
"\n"
@@ -5838,22 +5866,22 @@ msgstr ""
"\n"
"Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:10619
+#: src/readelf.c:10717
#, c-format
msgid " LPStart encoding: %#x "
msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ LPStart: %#x "
-#: src/readelf.c:10631
+#: src/readelf.c:10729
#, c-format
msgid " TType encoding: %#x "
msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ TType: %#x "
-#: src/readelf.c:10646
+#: src/readelf.c:10744
#, c-format
msgid " Call site encoding: %#x "
msgstr " ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–ÑÑ†Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ:%#x "
-#: src/readelf.c:10659
+#: src/readelf.c:10757
msgid ""
"\n"
" Call site table:"
@@ -5861,7 +5889,7 @@ msgstr ""
"\n"
" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¼Ñ–ÑÑ†Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ:"
-#: src/readelf.c:10673
+#: src/readelf.c:10771
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
@@ -5874,12 +5902,12 @@ msgstr ""
" МіÑце заÑтоÑуваннÑ: %#<PRIx64>\n"
" ДіÑ: %u\n"
-#: src/readelf.c:10746
+#: src/readelf.c:10844
#, c-format
msgid "invalid TType encoding"
msgstr "некоректне ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ TType"
-#: src/readelf.c:10773
+#: src/readelf.c:10871
#, c-format
msgid ""
"\n"
@@ -5888,37 +5916,37 @@ msgstr ""
"\n"
"Розділ GDB [%2zu] «%s» за зміщеннÑм %#<PRIx64> міÑтить %<PRId64> байтів:\n"
-#: src/readelf.c:10802
+#: src/readelf.c:10900
#, c-format
msgid " Version: %<PRId32>\n"
msgstr " ВерÑÑ–Ñ: %<PRId32>\n"
-#: src/readelf.c:10820
+#: src/readelf.c:10918
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ CU: %#<PRIx32>\n"
-#: src/readelf.c:10827
+#: src/readelf.c:10925
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ TU: %#<PRIx32>\n"
-#: src/readelf.c:10834
+#: src/readelf.c:10932
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи: %#<PRIx32>\n"
-#: src/readelf.c:10841
+#: src/readelf.c:10939
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñимволу: %#<PRIx32>\n"
-#: src/readelf.c:10848
+#: src/readelf.c:10946
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " Ñтале зміщеннÑ: %#<PRIx32>\n"
-#: src/readelf.c:10862
+#: src/readelf.c:10960
#, c-format
msgid ""
"\n"
@@ -5927,7 +5955,7 @@ msgstr ""
"\n"
" СпиÑок CU зі зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n"
-#: src/readelf.c:10887
+#: src/readelf.c:10985
#, c-format
msgid ""
"\n"
@@ -5936,7 +5964,7 @@ msgstr ""
"\n"
" СпиÑок TU зі зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n"
-#: src/readelf.c:10916
+#: src/readelf.c:11014
#, c-format
msgid ""
"\n"
@@ -5945,7 +5973,7 @@ msgstr ""
"\n"
" СпиÑок Ð°Ð´Ñ€ÐµÑ Ð·Ñ– зміщеннÑм %#<PRIx32> міÑтить %zu запиÑів:\n"
-#: src/readelf.c:10948
+#: src/readelf.c:11046
#, c-format
msgid ""
"\n"
@@ -5954,18 +5982,18 @@ msgstr ""
"\n"
" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів за зміщеннÑм %#<PRIx32> міÑтить %zu позицій:\n"
-#: src/readelf.c:11086
+#: src/readelf.c:11184
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ деÑкриптор контекÑту зневаджуваннÑ: %s"
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11552 src/readelf.c:12179 src/readelf.c:12290
+#: src/readelf.c:12348
#, c-format
msgid "cannot convert core note data: %s"
msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ дані запиÑу Ñдра: %s"
-#: src/readelf.c:11812
+#: src/readelf.c:11915
#, c-format
msgid ""
"\n"
@@ -5974,21 +6002,21 @@ msgstr ""
"\n"
"%*s... <повторюєтьÑÑ %u разів> ..."
-#: src/readelf.c:12319
+#: src/readelf.c:12427
msgid " Owner Data size Type\n"
msgstr " ВлаÑник Розм. даних Тип\n"
-#: src/readelf.c:12348
+#: src/readelf.c:12456
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:12400
-#, fuzzy, c-format
+#: src/readelf.c:12508
+#, c-format
msgid "cannot get content of note: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ розділу запиÑів: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ вміÑÑ‚ нотатки: %s"
-#: src/readelf.c:12434
+#: src/readelf.c:12542
#, c-format
msgid ""
"\n"
@@ -5998,7 +6026,7 @@ msgstr ""
"Розділ запиÑів (note) [%2zu] «%s» з %<PRIu64> байтів за зміщеннÑм "
"%#0<PRIx64>:\n"
-#: src/readelf.c:12457
+#: src/readelf.c:12565
#, c-format
msgid ""
"\n"
@@ -6007,7 +6035,7 @@ msgstr ""
"\n"
"Сегмент запиÑів з %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:12504
+#: src/readelf.c:12612
#, c-format
msgid ""
"\n"
@@ -6016,12 +6044,12 @@ msgstr ""
"\n"
"У розділі [%zu] «%s» не міÑтитьÑÑ Ð´Ð°Ð½Ð¸Ñ… Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð°Ð¼Ð¿Ñƒ.\n"
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12639 src/readelf.c:12690
#, c-format
msgid "cannot get data for section [%zu] '%s': %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ [%zu] «%s»: %s"
-#: src/readelf.c:12536
+#: src/readelf.c:12644
#, c-format
msgid ""
"\n"
@@ -6030,17 +6058,18 @@ msgstr ""
"\n"
"ШіÑÑ‚. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:12541
-#, fuzzy, c-format
+#: src/readelf.c:12649
+#, c-format
msgid ""
"\n"
"Hex dump of section [%zu] '%s', %<PRIu64> bytes (%zd uncompressed) at offset "
"%#0<PRIx64>:\n"
msgstr ""
"\n"
-"ШіÑÑ‚. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
+"ШіÑÑ‚. дамп розділу [%zu] «%s», %<PRIu64> байтів (%zd неÑтиÑнено) за "
+"зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:12555
+#: src/readelf.c:12663
#, c-format
msgid ""
"\n"
@@ -6049,7 +6078,7 @@ msgstr ""
"\n"
"У розділі [%zu] «%s» не міÑтитьÑÑ Ñ€Ñдків Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð°Ð¼Ð¿Ñƒ.\n"
-#: src/readelf.c:12587
+#: src/readelf.c:12695
#, c-format
msgid ""
"\n"
@@ -6058,17 +6087,18 @@ msgstr ""
"\n"
"Розділ Ñ€Ñдків [%zu] «%s» міÑтить %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
-#: src/readelf.c:12592
-#, fuzzy, c-format
+#: src/readelf.c:12700
+#, c-format
msgid ""
"\n"
"String section [%zu] '%s' contains %<PRIu64> bytes (%zd uncompressed) at "
"offset %#0<PRIx64>:\n"
msgstr ""
"\n"
-"Розділ Ñ€Ñдків [%zu] «%s» міÑтить %<PRIu64> байтів за зміщеннÑм %#0<PRIx64>:\n"
+"РÑдок розділу [%zu] «%s» міÑтить %<PRIu64> байти (%zd неÑтиÑнено) на "
+"зміщенні %#0<PRIx64>:\n"
-#: src/readelf.c:12641
+#: src/readelf.c:12749
#, c-format
msgid ""
"\n"
@@ -6077,7 +6107,7 @@ msgstr ""
"\n"
"розділу [%lu] не Ñ–Ñнує"
-#: src/readelf.c:12671
+#: src/readelf.c:12779
#, c-format
msgid ""
"\n"
@@ -6086,12 +6116,12 @@ msgstr ""
"\n"
"розділу «%s» не Ñ–Ñнує"
-#: src/readelf.c:12728
+#: src/readelf.c:12836
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ покажчик Ñимволів архіву «%s»: %s"
-#: src/readelf.c:12731
+#: src/readelf.c:12839
#, c-format
msgid ""
"\n"
@@ -6100,7 +6130,7 @@ msgstr ""
"\n"
"У архіві «%s» немає покажчика Ñимволів\n"
-#: src/readelf.c:12735
+#: src/readelf.c:12843
#, c-format
msgid ""
"\n"
@@ -6109,12 +6139,12 @@ msgstr ""
"\n"
"Покажчик архіву «%s» міÑтить %zu запиÑів:\n"
-#: src/readelf.c:12753
+#: src/readelf.c:12861
#, c-format
msgid "cannot extract member at offset %zu in '%s': %s"
msgstr "не вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ елемент за зміщеннÑм %zu у «%s»: %s"
-#: src/readelf.c:12758
+#: src/readelf.c:12866
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Елемент архіву «%s» міÑтить:\n"
@@ -6181,77 +6211,77 @@ msgstr "Ðекоректна оÑнова чиÑленнÑ: %s"
msgid "%s: file format not recognized"
msgstr "%s: не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ формат файла"
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
#, c-format
msgid " (ex %s)"
msgstr " (прикл. %s)"
#: src/size.c:482
-#, fuzzy, c-format
+#, c-format
msgid "cannot get section header"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу\n"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу"
-#: src/size.c:582
+#: src/size.c:585
msgid "(TOTALS)\n"
msgstr "(ЗÐГÐЛОМ)\n"
-#: src/stack.c:482
+#: src/stack.c:487
#, c-format
msgid "-p PID should be a positive process id."
msgstr "PID у -p PID має бути додатним значеннÑм ідентифікатора процеÑу."
-#: src/stack.c:488
+#: src/stack.c:493
#, c-format
msgid "Cannot open core file '%s'"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл дампу Ñдра «%s»"
-#: src/stack.c:548
+#: src/stack.c:553
#, c-format
msgid "-n MAXFRAMES should be 0 or higher."
msgstr "MAXFRAMES у -n має бути значеннÑм рівним 0 або більшим."
-#: src/stack.c:560
+#: src/stack.c:565
#, c-format
msgid "-e EXEC needs a core given by --core."
msgstr "Ð”Ð»Ñ -e EXEC Ñлід вказати Ñдро за допомогою --core."
-#: src/stack.c:564
+#: src/stack.c:569
#, c-format
msgid "-1 needs a thread id given by -p."
msgstr "-1 Ñлід передати ідентифікатор потоку виконаннÑ, заданого -p."
-#: src/stack.c:568
+#: src/stack.c:573
#, c-format
msgid "One of -p PID or --core COREFILE should be given."
msgstr "Слід вказати -p PID або --core COREFILE."
-#: src/stack.c:640
+#: src/stack.c:645
msgid "Show stack of process PID"
msgstr "ВивеÑти Ñтек PID процеÑу"
-#: src/stack.c:642
+#: src/stack.c:647
msgid "Show stack found in COREFILE"
msgstr "ВивеÑти Ñтек, знайдений у COREFILE"
-#: src/stack.c:643
+#: src/stack.c:648
msgid "(optional) EXECUTABLE that produced COREFILE"
msgstr "(необов’Ñзковий) EXECUTABLE, Ñким Ñтворено COREFILE"
-#: src/stack.c:647
+#: src/stack.c:652
msgid "Output selection options:"
msgstr "Параметри вибору виведених даних:"
-#: src/stack.c:649
+#: src/stack.c:654
msgid "Additionally show frame activation"
msgstr "Додатково вивеÑти активацію вікна"
-#: src/stack.c:651
+#: src/stack.c:656
msgid "Additionally try to lookup DWARF debuginfo name for frame address"
msgstr ""
"Додатково Ñпробувати визначити назву файла даних діагноÑтики DWARF Ð´Ð»Ñ "
"адреÑи вікна"
-#: src/stack.c:654
+#: src/stack.c:659
msgid ""
"Additionally show inlined function frames using DWARF debuginfo if available "
"(implies -d)"
@@ -6259,15 +6289,15 @@ msgstr ""
"Додатково вивеÑти вікна вбудованих функцій за допомогою даних діагноÑтики "
"DWARF, Ñкщо такі Ñ” (викориÑтовуєтьÑÑ Ñ– -d)"
-#: src/stack.c:656
+#: src/stack.c:661
msgid "Additionally show module file information"
msgstr "Додатково вивеÑти дані щодо файла модулÑ"
-#: src/stack.c:658
+#: src/stack.c:663
msgid "Additionally show source file information"
msgstr "Додатково вивеÑти дані щодо файла початкового коду"
-#: src/stack.c:660
+#: src/stack.c:665
msgid ""
"Show all additional information (activation, debugname, inlines, module and "
"source)"
@@ -6275,44 +6305,43 @@ msgstr ""
"ВивеÑти уÑÑ– додаткові дані (активацію, назву у ÑиÑтемі діагноÑтики, "
"вбудовані функції, модуль і початковий файл)"
-#: src/stack.c:662
+#: src/stack.c:667
msgid "Do not resolve address to function symbol name"
msgstr "Ðе розгортати адреÑу до назви Ñимволу функції"
-#: src/stack.c:664
+#: src/stack.c:669
msgid "Show raw function symbol names, do not try to demangle names"
msgstr ""
"ВивеÑти назви Ñимволів функцій без обробки, не намагатиÑÑ Ñ€Ð¾Ð·ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ñ‚Ð¸ назви"
-#: src/stack.c:666
+#: src/stack.c:671
msgid "Show module build-id, load address and pc offset"
msgstr "Виводити ідентифікатор збираннÑ, адреÑу Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° зÑув модулÑ"
-#: src/stack.c:668
+#: src/stack.c:673
msgid "Show the backtrace of only one thread"
msgstr "Виводити зворотне траÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ одного потоку"
-#: src/stack.c:670
+#: src/stack.c:675
msgid "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)"
msgstr ""
"Виводити не більше MAXFRAMES на потік Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 256, 0 — не "
"обмежувати)"
-#: src/stack.c:672
+#: src/stack.c:677
msgid "Show module memory map with build-id, elf and debug files detected"
msgstr ""
"ВивеÑти карту пам’ÑÑ‚Ñ– Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñ–Ð· виÑвленими ідентифікатором збираннÑ, elf та "
"файлами діагноÑтичних даних"
-#: src/stack.c:680
-#, fuzzy
+#: src/stack.c:685
msgid ""
"Print a stack for each thread in a process or core file.\n"
"\n"
"Program exits with return code 0 if all frames were shown without any "
"errors. If some frames were shown, but there were some non-fatal errors, "
"possibly causing an incomplete backtrace, the program exits with return code "
-"1. If no frames could be shown, or a fatal error occured the program exits "
+"1. If no frames could be shown, or a fatal error occurred the program exits "
"with return code 2. If the program was invoked with bad or missing "
"arguments it will exit with return code 64."
msgstr ""
@@ -6326,7 +6355,7 @@ msgstr ""
"програму було викликано з помилковими або пропущеними аргументами, програма "
"завершить роботу з кодом виходу 64."
-#: src/stack.c:755
+#: src/stack.c:760
#, c-format
msgid "Couldn't show any frames."
msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð²ÐµÑти жодного вікна."
@@ -6347,7 +6376,7 @@ msgstr ""
#: src/strings.c:69
msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
+"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
"{B,L} = 32-bit"
msgstr ""
"Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð½Ð¾ÑÑ‚Ñ– та порÑдку бітів Ñимволів: s = 7-бітові, S = 8-"
@@ -6381,9 +6410,9 @@ msgid "invalid minimum length of matched string size"
msgstr "некоректна мінімальна довжина розмірноÑÑ‚Ñ– Ñ€Ñдка Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ–Ð²Ð½ÑннÑ"
#: src/strings.c:585
-#, fuzzy, c-format
+#, c-format
msgid "lseek failed"
-msgstr "помилка lseek64"
+msgstr "помилка lseek"
#: src/strings.c:602 src/strings.c:666
#, c-format
@@ -6428,7 +6457,7 @@ msgstr "Скопіювати чаÑові позначки зміни/доÑту
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)"
+"operation is not reversible, needs -f)"
msgstr ""
"Розв’Ñзати вÑÑ– очевидні переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–Ð¶ діагноÑтичними розділами, Ñкщо "
"вилучені розділи було розташовано у діагноÑтичному файлі (ÑтоÑуєтьÑÑ Ð»Ð¸ÑˆÐµ "
@@ -6438,9 +6467,13 @@ msgstr ""
msgid ""
"Similar to --reloc-debug-sections, but resolve all trivial relocations "
"between debug sections in place. No other stripping is performed (operation "
-"is not reversable, incompatible with -f, -g, --remove-comment and --remove-"
+"is not reversible, incompatible with -f, -g, --remove-comment and --remove-"
"section)"
msgstr ""
+"Подібний до --reloc-debug-sections, або уÑÑ– тривіальні Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¼Ñ–Ð¶ "
+"розділами діагноÑтики вирішуютьÑÑ Ð½Ð° міÑці. Додаткове Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð½Ðµ "
+"виконуєтьÑÑ (дію неможливо ÑкаÑувати, параметр неÑуміÑний із -f, -g, --"
+"remove-comment та --remove-section)"
#: src/strip.c:89
msgid "Remove .comment section"
@@ -6451,12 +6484,17 @@ 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:91
msgid ""
"Keep the named section. SECTION is an extended wildcard pattern. May be "
"given more than once."
msgstr ""
+"Зберегти іменований розділ. РОЗДІЛ Ñ” розширеним взірцем із Ñимволами-"
+"замінниками. Можна вказувати декілька розділів."
#. Short description of program.
#: src/strip.c:98
@@ -6474,6 +6512,8 @@ msgid ""
"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --"
"remove-section"
msgstr ""
+"--reloc-debug-sections-only Ñ” неÑуміÑним із -f, -g, --remove-comment та --"
+"remove-section"
#: src/strip.c:267
#, c-format
@@ -6492,26 +6532,26 @@ msgid "-F option specified twice"
msgstr "параметр -F вказано двічі"
#: src/strip.c:362
-#, fuzzy, c-format
+#, c-format
msgid "cannot both keep and remove .comment section"
-msgstr "Вилучити розділ .comment"
+msgstr "неможливо одночаÑно зберегти Ñ– вилучити розділ .comment"
-#: src/strip.c:574
+#: src/strip.c:481
#, c-format
msgid "bad relocation"
msgstr "помилкове переÑуваннÑ"
-#: src/strip.c:726 src/strip.c:750
+#: src/strip.c:747 src/strip.c:771
#, c-format
msgid "cannot stat input file '%s'"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані з вхідного файла «%s» за допомогою stat"
-#: src/strip.c:740
+#: src/strip.c:761
#, c-format
msgid "while opening '%s'"
msgstr "під Ñ‡Ð°Ñ Ñпроби Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Â«%s»"
-#: src/strip.c:778
+#: src/strip.c:799
#, c-format
msgid "%s: cannot use -o or -f when stripping archive"
msgstr ""
@@ -6524,270 +6564,271 @@ msgstr ""
#. result = handle_ar (fd, elf, NULL, fname,
#. preserve_dates ? tv : NULL);
#.
-#: src/strip.c:790
+#: src/strip.c:811
#, c-format
msgid "%s: no support for stripping archive"
msgstr "%s: підтримки Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ вміÑту з архіву не передбачено"
-#: src/strip.c:1001
+#: src/strip.c:1047
#, c-format
msgid "cannot open EBL backend"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ канал Ñервера EBL"
-#: src/strip.c:1046
+#: src/strip.c:1092
#, c-format
msgid "cannot get number of phdrs"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ кількіÑÑ‚ÑŒ phdr"
-#: src/strip.c:1060 src/strip.c:1103
-#, fuzzy, c-format
+#: src/strip.c:1106 src/strip.c:1149
+#, c-format
msgid "cannot create new ehdr for file '%s': %s"
-msgstr "не вдалоÑÑ Ñтворити файл «%s»: %s"
+msgstr "не вдалоÑÑ Ñтворити ehdr Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»: %s"
-#: src/strip.c:1070 src/strip.c:1113
-#, fuzzy, c-format
+#: src/strip.c:1116 src/strip.c:1159
+#, c-format
msgid "cannot create new phdr for file '%s': %s"
-msgstr "не вдалоÑÑ Ñтворити файл «%s»: %s"
+msgstr "не вдалоÑÑ Ñтворити phdr Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»: %s"
-#: src/strip.c:1194
+#: src/strip.c:1240
#, c-format
msgid "illformed file '%s'"
msgstr "помилкове Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»"
-#: src/strip.c:1204
-#, fuzzy, c-format
+#: src/strip.c:1250
+#, c-format
msgid "Cannot remove allocated section '%s'"
-msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити PLT-розділ: %s"
+msgstr "Ðеможливо вилучити розміщений у пам'ÑÑ‚Ñ– розділ «%s»"
-#: src/strip.c:1213
-#, fuzzy, c-format
+#: src/strip.c:1259
+#, c-format
msgid "Cannot both keep and remove section '%s'"
-msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ новий розділ: %s"
+msgstr "Ðеможливо одночаÑно зберегти та вилучити розділ «%s»"
-#: src/strip.c:1573 src/strip.c:1688
+#: src/strip.c:1624 src/strip.c:1739
#, c-format
msgid "while generating output file: %s"
msgstr "під Ñ‡Ð°Ñ Ñпроби ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° з виведеними даними: %s"
-#: src/strip.c:1637
-#, fuzzy, c-format
+#: src/strip.c:1688
+#, c-format
msgid "%s: error while updating ELF header: %s"
-msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s"
+msgstr "%s: помилка під Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s"
-#: src/strip.c:1646
-#, fuzzy, c-format
+#: src/strip.c:1697
+#, c-format
msgid "%s: error while getting shdrstrndx: %s"
-msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s"
+msgstr "%s: помилка під Ñ‡Ð°Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ shdrstrndx: %s"
-#: src/strip.c:1654 src/strip.c:2535
-#, fuzzy, c-format
+#: src/strip.c:1705 src/strip.c:2550
+#, c-format
msgid "%s: error updating shdrstrndx: %s"
-msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s"
+msgstr "%s: помилка під Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ shdrstrndx: %s"
-#: src/strip.c:1671
+#: src/strip.c:1722
#, c-format
msgid "while preparing output for '%s'"
msgstr "під Ñ‡Ð°Ñ Ð¿Ñ€Ð¸Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ… даних Ð´Ð»Ñ Â«%s»"
-#: src/strip.c:1733 src/strip.c:1796
+#: src/strip.c:1784 src/strip.c:1847
#, c-format
msgid "while create section header section: %s"
msgstr "під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ заголовка розділу: %s"
-#: src/strip.c:1742
+#: src/strip.c:1793
#, c-format
msgid "cannot allocate section data: %s"
msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити дані розділу: %s"
-#: src/strip.c:1808
+#: src/strip.c:1859
#, c-format
msgid "while create section header string table: %s"
msgstr "під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків заголовка розділу: %s"
-#: src/strip.c:1815
-#, fuzzy, c-format
+#: src/strip.c:1866
+#, c-format
msgid "no memory to create section header string table"
-msgstr "під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків заголовка розділу: %s"
+msgstr "недоÑтатньо пам'ÑÑ‚Ñ– Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків заголовка розділу"
-#: src/strip.c:2028
+#: src/strip.c:2079
#, c-format
msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
msgstr ""
+"Ðеможливо вилучити Ñимвол [%zd] з розміщеної у пам'ÑÑ‚Ñ– таблиці Ñимволів [%zd]"
-#: src/strip.c:2451 src/strip.c:2559
+#: src/strip.c:2466 src/strip.c:2574
#, c-format
msgid "while writing '%s': %s"
msgstr "під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу «%s»: %s"
-#: src/strip.c:2462
+#: src/strip.c:2477
#, c-format
msgid "while creating '%s'"
msgstr "під Ñ‡Ð°Ñ Ñпроби ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Â«%s»"
-#: src/strip.c:2485
+#: src/strip.c:2500
#, c-format
msgid "while computing checksum for debug information"
msgstr "під Ñ‡Ð°Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ñ— Ñуми Ð´Ð»Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичних даних"
-#: src/strip.c:2526
+#: src/strip.c:2541
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF: %s"
-#: src/strip.c:2544
+#: src/strip.c:2559
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°: %s"
-#: src/strip.c:2584 src/strip.c:2604
+#: src/strip.c:2599 src/strip.c:2619
#, c-format
msgid "while writing '%s'"
msgstr "під Ñ‡Ð°Ñ Ñпроби запиÑу «%s»"
-#: src/strip.c:2641 src/strip.c:2648
+#: src/strip.c:2656 src/strip.c:2663
#, c-format
msgid "error while finishing '%s': %s"
msgstr "помилка під Ñ‡Ð°Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Â«%s»: %s"
-#: src/strip.c:2665 src/strip.c:2741
+#: src/strip.c:2680 src/strip.c:2756
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "не вдалоÑÑ Ð²Ñтановити права доÑтупу та дату зміни «%s»"
-#: src/unstrip.c:70
+#: src/unstrip.c:66
msgid "Match MODULE against file names, not module names"
msgstr ""
"Ð’Ñтановити відповідніÑÑ‚ÑŒ МОДУЛЯ назвам файлів, а не назвам модулів names"
-#: src/unstrip.c:71
+#: src/unstrip.c:67
msgid "Silently skip unfindable files"
msgstr "ПропуÑтити незнайдені файли без додаткових повідомлень"
-#: src/unstrip.c:74
+#: src/unstrip.c:70
msgid "Place output into FILE"
msgstr "ВивеÑти дані у ФÐЙЛ"
-#: src/unstrip.c:76
+#: src/unstrip.c:72
msgid "Create multiple output files under DIRECTORY"
msgstr "Створити декілька файлів виведених даних у КÐТÐЛОЗІ"
-#: src/unstrip.c:77
+#: src/unstrip.c:73
msgid "Use module rather than file names"
msgstr "ВикориÑтовувати назви модулів, а не файлів"
-#: src/unstrip.c:79
+#: src/unstrip.c:75
msgid "Create output for modules that have no separate debug information"
msgstr ""
"ВивеÑти дані Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð², Ñкі не міÑÑ‚ÑÑ‚ÑŒ окремих діагноÑтичних відомоÑтей"
-#: src/unstrip.c:82
+#: src/unstrip.c:78
msgid "Apply relocations to section contents in ET_REL files"
msgstr "ЗаÑтоÑувати переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ вміÑту розділів у файлах ET_REL"
-#: src/unstrip.c:84
+#: src/unstrip.c:80
msgid "Only list module and file names, build IDs"
msgstr "ВивеÑти лише ÑпиÑок назв модулів, файлів, побудувати ідентифікатори"
-#: src/unstrip.c:86
+#: src/unstrip.c:82
msgid "Force combining files even if some ELF headers don't seem to match"
msgstr ""
"ПримуÑово поєднати файли, навіть Ñкщо буде вÑтановлено невідповідніÑÑ‚ÑŒ "
"ÑкихоÑÑŒ із заголовків ELF"
-#: src/unstrip.c:130
+#: src/unstrip.c:126
#, c-format
msgid "-d option specified twice"
msgstr "параметр -d вказано двічі"
-#: src/unstrip.c:165
+#: src/unstrip.c:161
#, c-format
msgid "only one of -o or -d allowed"
msgstr "можна викориÑтовувати лише один з параметрів: -o або -d"
-#: src/unstrip.c:174
+#: src/unstrip.c:170
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr ""
"-n не можна викориÑтовувати з файлами, заданими Ñвно, або параметрами -o Ñ– -d"
-#: src/unstrip.c:189
+#: src/unstrip.c:185
#, c-format
msgid "output directory '%s'"
msgstr "каталог Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… «%s»"
-#: src/unstrip.c:198
+#: src/unstrip.c:194
#, c-format
msgid "exactly two file arguments are required"
msgstr "Ñк аргументи має бути вказано точно два файла"
-#: src/unstrip.c:204
+#: src/unstrip.c:200
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr ""
"Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², заданих Ñвно, не можна викориÑтовувати параметри -m, -a, -R Ñ– -i"
-#: src/unstrip.c:217
+#: src/unstrip.c:213
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr ""
"Ñкщо викориÑтовуютьÑÑ Ñ„Ð°Ð¹Ð»Ð¸, задані неÑвно, Ñлід додавати параметр -o або -d"
-#: src/unstrip.c:240
+#: src/unstrip.c:236
#, c-format
msgid "cannot create ELF header: %s"
msgstr "не вдалоÑÑ Ñтворити заголовок ELF: %s"
-#: src/unstrip.c:244
-#, fuzzy, c-format
+#: src/unstrip.c:240
+#, c-format
msgid "cannot get shdrstrndx:%s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ розділ: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ shdrstrndx:%s"
-#: src/unstrip.c:248 src/unstrip.c:2081
+#: src/unstrip.c:244 src/unstrip.c:2085
#, c-format
msgid "cannot get ELF header: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок ELF: %s"
-#: src/unstrip.c:258
-#, fuzzy, c-format
+#: src/unstrip.c:254
+#, c-format
msgid "cannot get new zero section: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ розділ: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ новий нульовий розділ: %s"
-#: src/unstrip.c:261
-#, fuzzy, c-format
+#: src/unstrip.c:257
+#, c-format
msgid "cannot update new zero section: %s"
-msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ переÑуваннÑ: %s"
+msgstr "неможливо оновити новий нульовий розділ: %s"
-#: src/unstrip.c:265
+#: src/unstrip.c:261
#, c-format
msgid "cannot copy ELF header: %s"
msgstr "не вдалоÑÑ Ñкопіювати заголовок ELF: %s"
-#: src/unstrip.c:269 src/unstrip.c:2099 src/unstrip.c:2142
+#: src/unstrip.c:265 src/unstrip.c:2103 src/unstrip.c:2146
#, c-format
msgid "cannot get number of program headers: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ кількіÑÑ‚ÑŒ заголовків програми: %s"
-#: src/unstrip.c:274 src/unstrip.c:2103
+#: src/unstrip.c:270 src/unstrip.c:2107
#, c-format
msgid "cannot create program headers: %s"
msgstr "не вдалоÑÑ Ñтворити заголовки програми: %s"
-#: src/unstrip.c:280
+#: src/unstrip.c:276
#, c-format
msgid "cannot copy program header: %s"
msgstr "не вдалоÑÑ Ñкопіювати заголовок програми: %s"
-#: src/unstrip.c:290
+#: src/unstrip.c:286
#, c-format
msgid "cannot copy section header: %s"
msgstr "не вдалоÑÑ Ñкопіювати заголовок розділу: %s"
-#: src/unstrip.c:293 src/unstrip.c:1703
+#: src/unstrip.c:289 src/unstrip.c:1707
#, c-format
msgid "cannot get section data: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу: %s"
-#: src/unstrip.c:295 src/unstrip.c:1705
+#: src/unstrip.c:291 src/unstrip.c:1709
#, c-format
msgid "cannot copy section data: %s"
msgstr "не вдалоÑÑ Ñкопіювати дані розділу: %s"
@@ -6797,184 +6838,184 @@ msgstr "не вдалоÑÑ Ñкопіювати дані розділу: %s"
msgid "cannot create directory '%s'"
msgstr "не вдалоÑÑ Ñтворити каталог «%s»"
-#: src/unstrip.c:391 src/unstrip.c:651 src/unstrip.c:685 src/unstrip.c:853
-#: src/unstrip.c:1745
+#: src/unstrip.c:393 src/unstrip.c:655 src/unstrip.c:689 src/unstrip.c:857
+#: src/unstrip.c:1749
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñимволів: %s"
-#: src/unstrip.c:407 src/unstrip.c:654 src/unstrip.c:675 src/unstrip.c:688
-#: src/unstrip.c:1766 src/unstrip.c:1961 src/unstrip.c:1985
+#: src/unstrip.c:409 src/unstrip.c:658 src/unstrip.c:679 src/unstrip.c:692
+#: src/unstrip.c:1770 src/unstrip.c:1965 src/unstrip.c:1989
#, c-format
msgid "cannot update symbol table: %s"
msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ таблицю Ñимволів: %s"
-#: src/unstrip.c:417
+#: src/unstrip.c:419
#, c-format
msgid "cannot update section header: %s"
msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ заголовок розділу: %s"
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:465 src/unstrip.c:479
#, c-format
msgid "cannot update relocation: %s"
msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ переÑуваннÑ: %s"
-#: src/unstrip.c:574
+#: src/unstrip.c:578
#, c-format
msgid "cannot get symbol version: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ верÑÑ–ÑŽ Ñимволу: %s"
-#: src/unstrip.c:587
+#: src/unstrip.c:591
#, c-format
msgid "unexpected section type in [%zu] with sh_link to symtab"
msgstr "неочікуваний тип розділу у [%zu] з поÑиланнÑм sh_link на symtab"
-#: src/unstrip.c:842
-#, fuzzy, c-format
+#: src/unstrip.c:846
+#, c-format
msgid "cannot get symbol section data: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу Ñимволів: %s"
-#: src/unstrip.c:844
-#, fuzzy, c-format
+#: src/unstrip.c:848
+#, c-format
msgid "cannot get string section data: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані розділу Ñ€Ñдків: %s"
-#: src/unstrip.c:861
+#: src/unstrip.c:865
#, c-format
msgid "invalid string offset in symbol [%zu]"
msgstr "некоректне Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ñдка у Ñимволі [%zu]"
-#: src/unstrip.c:1019 src/unstrip.c:1423
+#: src/unstrip.c:1023 src/unstrip.c:1427
#, c-format
msgid "cannot read section [%zu] name: %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ назву розділу [%zu]: %s"
-#: src/unstrip.c:1034
-#, fuzzy, c-format
+#: src/unstrip.c:1038
+#, c-format
msgid "bad sh_link for group section: %s"
-msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_link у розділі %zu"
+msgstr "помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_link Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ груп: %s"
-#: src/unstrip.c:1040
-#, fuzzy, c-format
+#: src/unstrip.c:1044
+#, c-format
msgid "couldn't get shdr for group section: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок 0-го розділу: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ shdr Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ груп: %s"
-#: src/unstrip.c:1045
-#, fuzzy, c-format
+#: src/unstrip.c:1049
+#, c-format
msgid "bad data for group symbol section: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñимволів\n"
+msgstr "помилкові дані Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñимволів груп: %s"
-#: src/unstrip.c:1051
-#, fuzzy, c-format
+#: src/unstrip.c:1055
+#, c-format
msgid "couldn't get symbol for group section: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ верÑÑ–ÑŽ Ñимволу: %s"
+msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñимвол Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ груп: %s"
-#: src/unstrip.c:1056
-#, fuzzy, c-format
+#: src/unstrip.c:1060
+#, c-format
msgid "bad symbol name for group section: %s"
-msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ заголовок розділу %zu: %s"
+msgstr "помилкова назва Ñимволу Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ груп: %s"
-#: src/unstrip.c:1098 src/unstrip.c:1117 src/unstrip.c:1155
+#: src/unstrip.c:1102 src/unstrip.c:1121 src/unstrip.c:1159
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ розділ «.gnu.prelink_undo»: %s"
-#: src/unstrip.c:1135
+#: src/unstrip.c:1139
#, c-format
msgid "overflow with shnum = %zu in '%s' section"
-msgstr ""
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð· shnum = %zu у розділі «%s»"
-#: src/unstrip.c:1146
+#: src/unstrip.c:1150
#, c-format
msgid "invalid contents in '%s' section"
msgstr "некоректний вміÑÑ‚ розділу «%s»"
-#: src/unstrip.c:1202 src/unstrip.c:1549
+#: src/unstrip.c:1206 src/unstrip.c:1553
#, c-format
msgid "cannot find matching section for [%zu] '%s'"
msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідний розділ Ð´Ð»Ñ [%zu] «%s»"
-#: src/unstrip.c:1327 src/unstrip.c:1343 src/unstrip.c:1629 src/unstrip.c:1920
+#: src/unstrip.c:1331 src/unstrip.c:1347 src/unstrip.c:1633 src/unstrip.c:1924
#, c-format
msgid "cannot add section name to string table: %s"
msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ назву розділу до таблиці Ñ€Ñдків: %s"
-#: src/unstrip.c:1352
+#: src/unstrip.c:1356
#, c-format
msgid "cannot update section header string table data: %s"
msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ дані заголовка розділу у таблиці Ñ€Ñдків: %s"
-#: src/unstrip.c:1381 src/unstrip.c:1385
+#: src/unstrip.c:1385 src/unstrip.c:1389
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
"не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ заголовка розділу у таблиці Ñ€Ñдків: %s"
-#: src/unstrip.c:1389 src/unstrip.c:1393 src/unstrip.c:1644
+#: src/unstrip.c:1393 src/unstrip.c:1397 src/unstrip.c:1648
#, c-format
msgid "cannot get section count: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ кількіÑÑ‚ÑŒ розділів: %s"
-#: src/unstrip.c:1396
+#: src/unstrip.c:1400
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
"у очищеному файлі більше розділів ніж у файлі з даними Ð´Ð»Ñ Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ â€” "
"помилковий порÑдок параметрів?"
-#: src/unstrip.c:1400
+#: src/unstrip.c:1404
#, c-format
msgid "no sections in stripped file"
-msgstr ""
+msgstr "у очищеному файлі немає розділів"
-#: src/unstrip.c:1471 src/unstrip.c:1564
+#: src/unstrip.c:1475 src/unstrip.c:1568
#, c-format
msgid "cannot read section header string table: %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ таблицю Ñ€Ñдків заголовка розділу: %s"
-#: src/unstrip.c:1623
+#: src/unstrip.c:1627
#, c-format
msgid "cannot add new section: %s"
msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ новий розділ: %s"
-#: src/unstrip.c:1753
+#: src/unstrip.c:1757
#, c-format
msgid "symbol [%zu] has invalid section index"
msgstr "Ñимвол [%zu] має некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
-#: src/unstrip.c:1785
-#, fuzzy, c-format
+#: src/unstrip.c:1789
+#, c-format
msgid "group has invalid section index [%zd]"
-msgstr "Ñимвол [%zu] має некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
+msgstr "група міÑтить некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ [%zd]"
-#: src/unstrip.c:2060
+#: src/unstrip.c:2064
#, c-format
msgid "cannot read section data: %s"
msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ дані розділу: %s"
-#: src/unstrip.c:2089
+#: src/unstrip.c:2093
#, c-format
msgid "cannot update ELF header: %s"
msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ заголовок ELF: %s"
-#: src/unstrip.c:2113
+#: src/unstrip.c:2117
#, c-format
msgid "cannot update program header: %s"
msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ заголовок програми: %s"
-#: src/unstrip.c:2118 src/unstrip.c:2200
+#: src/unstrip.c:2122 src/unstrip.c:2205
#, c-format
msgid "cannot write output file: %s"
msgstr "не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл виведених даних: %s"
-#: src/unstrip.c:2169
+#: src/unstrip.c:2173
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
"Дані DWARF не Ñкориговано відповідно до Ð²Ñ–Ð´Ñ…Ð¸Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ компонуваннÑм; "
"Ñпробуйте виправити це командою prelink -u"
-#: src/unstrip.c:2172
+#: src/unstrip.c:2176
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6982,76 +7023,76 @@ msgstr ""
"Дані DWARF у «%s» не Ñкориговано відповідно до Ð²Ñ–Ð´Ñ…Ð¸Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ "
"компонуваннÑм; Ñпробуйте виправити це командою prelink -u"
-#: src/unstrip.c:2191 src/unstrip.c:2242 src/unstrip.c:2254 src/unstrip.c:2340
+#: src/unstrip.c:2196 src/unstrip.c:2247 src/unstrip.c:2259 src/unstrip.c:2345
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr "не вдалоÑÑ Ñтворити деÑкриптор ELF: %s"
-#: src/unstrip.c:2233
+#: src/unstrip.c:2238
msgid "WARNING: "
msgstr "УВÐГÐ: "
-#: src/unstrip.c:2235
+#: src/unstrip.c:2240
msgid ", use --force"
msgstr ", ÑкориÑтайтеÑÑ --force"
-#: src/unstrip.c:2258
+#: src/unstrip.c:2263
msgid "ELF header identification (e_ident) different"
msgstr "Різні ідентифікатори заголовків ELF (e_ident)"
-#: src/unstrip.c:2261
+#: src/unstrip.c:2266
msgid "ELF header type (e_type) different"
msgstr "Різні типи заголовків ELF (e_type)"
-#: src/unstrip.c:2264
+#: src/unstrip.c:2269
msgid "ELF header machine type (e_machine) different"
msgstr "Різні типи архітектур заголовків ELF (e_machine)"
-#: src/unstrip.c:2267
+#: src/unstrip.c:2272
msgid "stripped program header (e_phnum) smaller than unstripped"
msgstr "очищений заголовок програми (e_phnum) є меншим за неочищений"
-#: src/unstrip.c:2297
+#: src/unstrip.c:2302
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ очищений файл Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s"
-#: src/unstrip.c:2301
+#: src/unstrip.c:2306
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ очищений файл «%s» Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s"
-#: src/unstrip.c:2316
+#: src/unstrip.c:2321
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ файл діагноÑтичних даних Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s"
-#: src/unstrip.c:2320
+#: src/unstrip.c:2325
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл діагноÑтичних даних «%s» Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s"
-#: src/unstrip.c:2333
+#: src/unstrip.c:2338
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr "у модулі «%s» файл «%s» не очищено strip"
-#: src/unstrip.c:2364
+#: src/unstrip.c:2369
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr "не вдалоÑÑ ÐºÐµÑˆÑƒÐ²Ð°Ñ‚Ð¸ адреÑи розділів Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»: %s"
-#: src/unstrip.c:2497
+#: src/unstrip.c:2501
#, c-format
msgid "no matching modules found"
msgstr "відповідних модулів не виÑвлено"
-#: src/unstrip.c:2506
+#: src/unstrip.c:2510
#, c-format
msgid "matched more than one module"
msgstr "вÑтановлено відповідніÑÑ‚ÑŒ декількох модулів"
-#: src/unstrip.c:2550
+#: src/unstrip.c:2554
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
@@ -7059,8 +7100,7 @@ msgstr ""
"ОЧИЩЕÐИЙ-ФÐЙЛ ФÐЙЛ-DEBUG\n"
"[МОДУЛЬ...]"
-#: src/unstrip.c:2551
-#, fuzzy
+#: src/unstrip.c:2555
msgid ""
"Combine stripped files with separate symbols and debug information.\n"
"\n"
@@ -7123,14 +7163,21 @@ msgstr ""
msgid "Run executable"
msgstr "ЗапуÑтити виконуваний файл"
-#: tests/dwflmodtest.c:213
+#: tests/dwflmodtest.c:209
msgid "Additionally show function names"
msgstr "Додатково вивеÑти назви функцій"
-#: tests/dwflmodtest.c:214
+#: tests/dwflmodtest.c:210
msgid "Show instances of inlined functions"
msgstr "ВивеÑти екземплÑри вбудованих функцій"
+#~ msgid ""
+#~ " [%6tx] base address\n"
+#~ " "
+#~ msgstr ""
+#~ " [%6tx] базова адреÑа\n"
+#~ " "
+
#, fuzzy
#~ msgid "%s: error getting zero section: %s"
#~ msgstr "%s: помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°: %s"
diff --git a/po/zh_CN.po b/po/zh_CN.po
deleted file mode 100644
index 0c6ec564..00000000
--- a/po/zh_CN.po
+++ /dev/null
@@ -1,5666 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2010-04-21 07:41-0700\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: lib/xmalloc.c:51 lib/xmalloc.c:65 lib/xmalloc.c:79 src/readelf.c:2822
-#: src/readelf.c:3161 src/unstrip.c:2087 src/unstrip.c:2295
-#, c-format
-msgid "memory exhausted"
-msgstr ""
-
-#: libasm/asm_error.c:62 libdw/dwarf_error.c:79 libdwfl/libdwflP.h:70
-#: libelf/elf_error.c:81
-msgid "no error"
-msgstr ""
-
-#: libasm/asm_error.c:63 libdw/dwarf_error.c:88 libdwfl/libdwflP.h:72
-#: libelf/elf_error.c:112
-msgid "out of memory"
-msgstr ""
-
-#: libasm/asm_error.c:64 src/ldgeneric.c:2687
-#, c-format
-msgid "cannot create output file"
-msgstr ""
-
-#: libasm/asm_error.c:65
-msgid "invalid parameter"
-msgstr ""
-
-#: libasm/asm_error.c:66
-msgid "cannot change mode of output file"
-msgstr ""
-
-#: libasm/asm_error.c:67 src/ldgeneric.c:7001
-#, c-format
-msgid "cannot rename output file"
-msgstr ""
-
-#: libasm/asm_error.c:68
-msgid "duplicate symbol"
-msgstr ""
-
-#: libasm/asm_error.c:69
-msgid "invalid section type for operation"
-msgstr ""
-
-#: libasm/asm_error.c:70
-msgid "error during output of data"
-msgstr ""
-
-#: libasm/asm_error.c:71
-msgid "no backend support available"
-msgstr ""
-
-#: libasm/asm_error.c:81 libdw/dwarf_error.c:80 libdwfl/libdwflP.h:71
-#: libelf/elf_error.c:84
-msgid "unknown error"
-msgstr ""
-
-#: libdw/dwarf_error.c:81
-msgid "invalid access"
-msgstr ""
-
-#: libdw/dwarf_error.c:82
-msgid "no regular file"
-msgstr ""
-
-#: libdw/dwarf_error.c:83
-msgid "I/O error"
-msgstr ""
-
-#: libdw/dwarf_error.c:84
-msgid "invalid ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:85
-msgid "no DWARF information"
-msgstr ""
-
-#: libdw/dwarf_error.c:86
-msgid "no ELF file"
-msgstr ""
-
-#: libdw/dwarf_error.c:87
-msgid "cannot get ELF header"
-msgstr ""
-
-#: libdw/dwarf_error.c:89
-msgid "not implemented"
-msgstr ""
-
-#: libdw/dwarf_error.c:90 libelf/elf_error.c:128 libelf/elf_error.c:176
-msgid "invalid command"
-msgstr ""
-
-#: libdw/dwarf_error.c:91
-msgid "invalid version"
-msgstr ""
-
-#: libdw/dwarf_error.c:92
-msgid "invalid file"
-msgstr ""
-
-#: libdw/dwarf_error.c:93
-msgid "no entries found"
-msgstr ""
-
-#: libdw/dwarf_error.c:94
-msgid "invalid DWARF"
-msgstr ""
-
-#: libdw/dwarf_error.c:95
-msgid "no string data"
-msgstr ""
-
-#: libdw/dwarf_error.c:96
-msgid "no address value"
-msgstr ""
-
-#: libdw/dwarf_error.c:97
-msgid "no constant value"
-msgstr ""
-
-#: libdw/dwarf_error.c:98
-msgid "no reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:99
-msgid "invalid reference value"
-msgstr ""
-
-#: libdw/dwarf_error.c:100
-msgid ".debug_line section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:101
-msgid "invalid .debug_line section"
-msgstr ""
-
-#: libdw/dwarf_error.c:102
-msgid "debug information too big"
-msgstr ""
-
-#: libdw/dwarf_error.c:103
-msgid "invalid DWARF version"
-msgstr ""
-
-#: libdw/dwarf_error.c:104
-msgid "invalid directory index"
-msgstr ""
-
-#: libdw/dwarf_error.c:105 libdwfl/libdwflP.h:91
-msgid "address out of range"
-msgstr ""
-
-#: libdw/dwarf_error.c:106
-msgid "no location list value"
-msgstr ""
-
-#: libdw/dwarf_error.c:107
-msgid "no block data"
-msgstr ""
-
-#: libdw/dwarf_error.c:108
-msgid "invalid line index"
-msgstr ""
-
-#: libdw/dwarf_error.c:109
-msgid "invalid address range index"
-msgstr ""
-
-#: libdw/dwarf_error.c:110 libdwfl/libdwflP.h:92
-msgid "no matching address range"
-msgstr ""
-
-#: libdw/dwarf_error.c:111
-msgid "no flag value"
-msgstr ""
-
-#: libdw/dwarf_error.c:112 libelf/elf_error.c:253
-msgid "invalid offset"
-msgstr ""
-
-#: libdw/dwarf_error.c:113
-msgid ".debug_ranges section missing"
-msgstr ""
-
-#: libdw/dwarf_error.c:114
-msgid "invalid CFI section"
-msgstr ""
-
-#: libdwfl/argp-std.c:67 src/unstrip.c:2237
-msgid "Input selection options:"
-msgstr ""
-
-#: libdwfl/argp-std.c:68
-msgid "Find addresses in FILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:70
-msgid "Find addresses from signatures found in COREFILE"
-msgstr ""
-
-#: libdwfl/argp-std.c:72
-msgid "Find addresses in files mapped into process PID"
-msgstr ""
-
-#: libdwfl/argp-std.c:74
-msgid ""
-"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps "
-"format"
-msgstr ""
-
-#: libdwfl/argp-std.c:76
-msgid "Find addresses in the running kernel"
-msgstr ""
-
-#: libdwfl/argp-std.c:78
-msgid "Kernel with all modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:80
-msgid "Search path for separate debuginfo files"
-msgstr ""
-
-#: libdwfl/argp-std.c:163
-msgid "only one of -e, -p, -k, -K, or --core allowed"
-msgstr ""
-
-#: libdwfl/argp-std.c:223
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr ""
-
-#: libdwfl/argp-std.c:241
-msgid "No modules recognized in core file"
-msgstr ""
-
-#: libdwfl/argp-std.c:253
-msgid "cannot load kernel symbols"
-msgstr ""
-
-#: libdwfl/argp-std.c:257
-msgid "cannot find kernel modules"
-msgstr ""
-
-#: libdwfl/argp-std.c:271
-msgid "cannot find kernel or modules"
-msgstr ""
-
-#: libdwfl/libdwflP.h:73
-msgid "See errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:74
-msgid "See elf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:75
-msgid "See dwarf_errno"
-msgstr ""
-
-#: libdwfl/libdwflP.h:76
-msgid "See ebl_errno (XXX missing)"
-msgstr ""
-
-#: libdwfl/libdwflP.h:77
-msgid "gzip decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:78
-msgid "bzip2 decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:79
-msgid "LZMA decompression failed"
-msgstr ""
-
-#: libdwfl/libdwflP.h:80
-msgid "no support library found for machine"
-msgstr ""
-
-#: libdwfl/libdwflP.h:81
-msgid "Callbacks missing for ET_REL file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:82
-msgid "Unsupported relocation type"
-msgstr ""
-
-#: libdwfl/libdwflP.h:83
-msgid "r_offset is bogus"
-msgstr ""
-
-#: libdwfl/libdwflP.h:84 libelf/elf_error.c:132 libelf/elf_error.c:192
-msgid "offset out of range"
-msgstr ""
-
-#: libdwfl/libdwflP.h:85
-msgid "relocation refers to undefined symbol"
-msgstr ""
-
-#: libdwfl/libdwflP.h:86
-msgid "Callback returned failure"
-msgstr ""
-
-#: libdwfl/libdwflP.h:87
-msgid "No DWARF information found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:88
-msgid "No symbol table found"
-msgstr ""
-
-#: libdwfl/libdwflP.h:89
-msgid "No ELF program headers"
-msgstr ""
-
-#: libdwfl/libdwflP.h:90
-msgid "address range overlaps an existing module"
-msgstr ""
-
-#: libdwfl/libdwflP.h:93
-msgid "image truncated"
-msgstr ""
-
-#: libdwfl/libdwflP.h:94
-msgid "ELF file opened"
-msgstr ""
-
-#: libdwfl/libdwflP.h:95
-msgid "not a valid ELF file"
-msgstr ""
-
-#: libdwfl/libdwflP.h:96
-msgid "cannot handle DWARF type description"
-msgstr ""
-
-#: libebl/eblbackendname.c:63
-msgid "No backend"
-msgstr ""
-
-#: libebl/eblcorenotetypename.c:107 libebl/eblobjecttypename.c:78
-#: libebl/eblobjnotetypename.c:86 libebl/eblosabiname.c:98
-#: libebl/eblsectionname.c:110 libebl/eblsectiontypename.c:140
-#: libebl/eblsegmenttypename.c:104
-msgid "<unknown>"
-msgstr ""
-
-#: libebl/ebldynamictagname.c:126
-#, c-format
-msgid "<unknown>: %#<PRIx64>"
-msgstr ""
-
-#: libebl/eblobjnote.c:76
-#, c-format
-msgid " Build ID: "
-msgstr ""
-
-#: libebl/eblobjnote.c:87
-#, c-format
-msgid " Linker version: %.*s\n"
-msgstr ""
-
-#: libebl/eblobjnote.c:136
-#, c-format
-msgid " OS: %s, ABI: "
-msgstr ""
-
-#: libebl/eblosabiname.c:95
-msgid "Stand alone"
-msgstr ""
-
-#: libebl/eblsymbolbindingname.c:92 libebl/eblsymboltypename.c:98
-#, c-format
-msgid "<unknown>: %d"
-msgstr ""
-
-#: libelf/elf_error.c:88
-msgid "unknown version"
-msgstr ""
-
-#: libelf/elf_error.c:92
-msgid "unknown type"
-msgstr ""
-
-#: libelf/elf_error.c:96
-msgid "invalid `Elf' handle"
-msgstr ""
-
-#: libelf/elf_error.c:100
-msgid "invalid size of source operand"
-msgstr ""
-
-#: libelf/elf_error.c:104
-msgid "invalid size of destination operand"
-msgstr ""
-
-#: libelf/elf_error.c:108 src/readelf.c:4779
-#, c-format
-msgid "invalid encoding"
-msgstr ""
-
-#: libelf/elf_error.c:116
-msgid "invalid file descriptor"
-msgstr ""
-
-#: libelf/elf_error.c:120
-msgid "invalid operation"
-msgstr ""
-
-#: libelf/elf_error.c:124
-msgid "ELF version not set"
-msgstr ""
-
-#: libelf/elf_error.c:136
-msgid "invalid fmag field in archive header"
-msgstr ""
-
-#: libelf/elf_error.c:140
-msgid "invalid archive file"
-msgstr ""
-
-#: libelf/elf_error.c:144
-msgid "descriptor is not for an archive"
-msgstr ""
-
-#: libelf/elf_error.c:148
-msgid "no index available"
-msgstr ""
-
-#: libelf/elf_error.c:152
-msgid "cannot read data from file"
-msgstr ""
-
-#: libelf/elf_error.c:156
-msgid "cannot write data to file"
-msgstr ""
-
-#: libelf/elf_error.c:160
-msgid "invalid binary class"
-msgstr ""
-
-#: libelf/elf_error.c:164
-msgid "invalid section index"
-msgstr ""
-
-#: libelf/elf_error.c:168
-msgid "invalid operand"
-msgstr ""
-
-#: libelf/elf_error.c:172
-msgid "invalid section"
-msgstr ""
-
-#: libelf/elf_error.c:180
-msgid "executable header not created first"
-msgstr ""
-
-#: libelf/elf_error.c:184
-msgid "file descriptor disabled"
-msgstr ""
-
-#: libelf/elf_error.c:188
-msgid "archive/member file descriptor mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:196
-msgid "cannot manipulate null section"
-msgstr ""
-
-#: libelf/elf_error.c:200
-msgid "data/scn mismatch"
-msgstr ""
-
-#: libelf/elf_error.c:204
-msgid "invalid section header"
-msgstr ""
-
-#: libelf/elf_error.c:208 src/readelf.c:6242 src/readelf.c:6343
-#, c-format
-msgid "invalid data"
-msgstr ""
-
-#: libelf/elf_error.c:212
-msgid "unknown data encoding"
-msgstr ""
-
-#: libelf/elf_error.c:216
-msgid "section `sh_size' too small for data"
-msgstr ""
-
-#: libelf/elf_error.c:220
-msgid "invalid section alignment"
-msgstr ""
-
-#: libelf/elf_error.c:224
-msgid "invalid section entry size"
-msgstr ""
-
-#: libelf/elf_error.c:228
-msgid "update() for write on read-only file"
-msgstr ""
-
-#: libelf/elf_error.c:232
-msgid "no such file"
-msgstr ""
-
-#: libelf/elf_error.c:236
-msgid "only relocatable files can contain section groups"
-msgstr ""
-
-#: libelf/elf_error.c:241
-msgid ""
-"program header only allowed in executables, shared objects, and core files"
-msgstr ""
-
-#: libelf/elf_error.c:248
-msgid "file has no program header"
-msgstr ""
-
-#: src/addr2line.c:66
-msgid "Output selection options:"
-msgstr ""
-
-#: src/addr2line.c:67
-msgid "Show only base names of source files"
-msgstr ""
-
-#: src/addr2line.c:69
-msgid "Show absolute file names using compilation directory"
-msgstr ""
-
-#: src/addr2line.c:70
-msgid "Also show function names"
-msgstr ""
-
-#: src/addr2line.c:71
-msgid "Also show symbol or section names"
-msgstr ""
-
-#: src/addr2line.c:73
-msgid "Treat addresses as offsets relative to NAME section."
-msgstr ""
-
-#: src/addr2line.c:75 src/elfcmp.c:75 src/findtextrel.c:75 src/nm.c:103
-#: src/strings.c:83
-msgid "Miscellaneous:"
-msgstr ""
-
-#: src/addr2line.c:84
-msgid ""
-"Locate source files and line information for ADDRs (in a.out by default)."
-msgstr ""
-
-#: src/addr2line.c:88
-msgid "[ADDR...]"
-msgstr ""
-
-#: src/addr2line.c:185 src/ar.c:289 src/elfcmp.c:555 src/elflint.c:239
-#: src/findtextrel.c:170 src/ld.c:957 src/nm.c:253 src/objdump.c:181
-#: src/ranlib.c:136 src/readelf.c:449 src/size.c:219 src/strings.c:227
-#: src/strip.c:204 src/unstrip.c:234
-#, c-format
-msgid ""
-"Copyright (C) %s Red Hat, Inc.\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-msgstr ""
-
-#: src/addr2line.c:190 src/ar.c:294 src/elfcmp.c:560 src/elflint.c:244
-#: src/findtextrel.c:175 src/ld.c:962 src/nm.c:258 src/objdump.c:186
-#: src/ranlib.c:141 src/readelf.c:454 src/size.c:224 src/strings.c:232
-#: src/strip.c:209 src/unstrip.c:239
-#, c-format
-msgid "Written by %s.\n"
-msgstr ""
-
-#: src/addr2line.c:405
-#, c-format
-msgid "Section syntax requires exactly one module"
-msgstr ""
-
-#: src/addr2line.c:428
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside section '%s'"
-msgstr ""
-
-#: src/addr2line.c:461
-#, c-format
-msgid "cannot find symbol '%s'"
-msgstr ""
-
-#: src/addr2line.c:466
-#, c-format
-msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
-msgstr ""
-
-#: src/ar.c:76
-msgid "Commands:"
-msgstr ""
-
-#: src/ar.c:77
-msgid "Delete files from archive."
-msgstr ""
-
-#: src/ar.c:78
-msgid "Move files in archive."
-msgstr ""
-
-#: src/ar.c:79
-msgid "Print files in archive."
-msgstr ""
-
-#: src/ar.c:80
-msgid "Quick append files to archive."
-msgstr ""
-
-#: src/ar.c:82
-msgid "Replace existing or insert new file into archive."
-msgstr ""
-
-#: src/ar.c:83
-msgid "Display content of archive."
-msgstr ""
-
-#: src/ar.c:84
-msgid "Extract files from archive."
-msgstr ""
-
-#: src/ar.c:86
-msgid "Command Modifiers:"
-msgstr ""
-
-#: src/ar.c:87
-msgid "Preserve original dates."
-msgstr ""
-
-#: src/ar.c:88
-msgid "Use instance [COUNT] of name."
-msgstr ""
-
-#: src/ar.c:90
-msgid "Do not replace existing files with extracted files."
-msgstr ""
-
-#: src/ar.c:91
-msgid "Allow filename to be truncated if necessary."
-msgstr ""
-
-#: src/ar.c:93
-msgid "Provide verbose output."
-msgstr ""
-
-#: src/ar.c:94
-msgid "Force regeneration of symbol table."
-msgstr ""
-
-#: src/ar.c:95
-msgid "Insert file after [MEMBER]."
-msgstr ""
-
-#: src/ar.c:96
-msgid "Insert file before [MEMBER]."
-msgstr ""
-
-#: src/ar.c:97
-msgid "Same as -b."
-msgstr ""
-
-#: src/ar.c:98
-msgid "Suppress message when library has to be created."
-msgstr ""
-
-#: src/ar.c:100
-msgid "Use full path for file matching."
-msgstr ""
-
-#: src/ar.c:101
-msgid "Update only older files in archive."
-msgstr ""
-
-#: src/ar.c:107
-msgid "Create, modify, and extract from archives."
-msgstr ""
-
-#: src/ar.c:110
-msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]"
-msgstr ""
-
-#: src/ar.c:192
-#, c-format
-msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"
-msgstr ""
-
-#: src/ar.c:197
-#, c-format
-msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers"
-msgstr ""
-
-#: src/ar.c:213
-#, c-format
-msgid "'N' is only meaningful with the 'x' and 'd' options"
-msgstr ""
-
-#: src/ar.c:218
-#, c-format
-msgid "COUNT parameter required"
-msgstr ""
-
-#: src/ar.c:230
-#, c-format
-msgid "invalid COUNT parameter %s"
-msgstr ""
-
-#: src/ar.c:237
-#, c-format
-msgid "'%c' is only meaningful with the 'x' option"
-msgstr ""
-
-#: src/ar.c:243
-#, c-format
-msgid "archive name required"
-msgstr ""
-
-#: src/ar.c:314
-#, c-format
-msgid "More than one operation specified"
-msgstr ""
-
-#: src/ar.c:404
-#, c-format
-msgid "cannot open archive '%s'"
-msgstr ""
-
-#: src/ar.c:414
-#, c-format
-msgid "cannot open archive '%s': %s"
-msgstr ""
-
-#: src/ar.c:418
-#, c-format
-msgid "%s: not an archive file"
-msgstr ""
-
-#: src/ar.c:422
-#, c-format
-msgid "cannot stat archive '%s'"
-msgstr ""
-
-#: src/ar.c:434
-#, c-format
-msgid "no entry %s in archive\n"
-msgstr ""
-
-#: src/ar.c:487 src/ar.c:929 src/ar.c:1129
-#, c-format
-msgid "cannot create hash table"
-msgstr ""
-
-#: src/ar.c:494 src/ar.c:936 src/ar.c:1138
-#, c-format
-msgid "cannot insert into hash table"
-msgstr ""
-
-#: src/ar.c:502 src/ranlib.c:176
-#, c-format
-msgid "cannot stat '%s'"
-msgstr ""
-
-#: src/ar.c:598
-#, c-format
-msgid "cannot read content of %s: %s"
-msgstr ""
-
-#: src/ar.c:641
-#, c-format
-msgid "cannot open %.*s"
-msgstr ""
-
-#: src/ar.c:663
-#, c-format
-msgid "failed to write %s"
-msgstr ""
-
-#: src/ar.c:675
-#, c-format
-msgid "cannot change mode of %s"
-msgstr ""
-
-#: src/ar.c:691
-#, c-format
-msgid "cannot change modification time of %s"
-msgstr ""
-
-#: src/ar.c:737
-#, c-format
-msgid "cannot rename temporary file to %.*s"
-msgstr ""
-
-#: src/ar.c:773 src/ar.c:1021 src/ar.c:1419 src/ranlib.c:250
-#, c-format
-msgid "cannot create new file"
-msgstr ""
-
-#: src/ar.c:1220
-#, c-format
-msgid "position member %s not found"
-msgstr ""
-
-#: src/ar.c:1230
-#, c-format
-msgid "%s: no entry %s in archive!\n"
-msgstr ""
-
-#: src/ar.c:1259 src/ldgeneric.c:519 src/objdump.c:257
-#, c-format
-msgid "cannot open %s"
-msgstr ""
-
-#: src/ar.c:1264
-#, c-format
-msgid "cannot stat %s"
-msgstr ""
-
-#: src/ar.c:1270
-#, c-format
-msgid "%s is no regular file"
-msgstr ""
-
-#: src/ar.c:1283
-#, c-format
-msgid "cannot get ELF descriptor for %s: %s\n"
-msgstr ""
-
-#: src/ar.c:1302
-#, c-format
-msgid "cannot read %s: %s"
-msgstr ""
-
-#: src/arlib.c:215
-#, c-format
-msgid "the archive '%s' is too large"
-msgstr ""
-
-#: src/arlib.c:228
-#, c-format
-msgid "cannot read ELF header of %s(%s): %s"
-msgstr ""
-
-#: src/elfcmp.c:69
-msgid "Control options:"
-msgstr ""
-
-#: src/elfcmp.c:70
-msgid ""
-"Control treatment of gaps in loadable segments [ignore|match] (default: "
-"ignore)"
-msgstr ""
-
-#: src/elfcmp.c:72
-msgid "Ignore permutation of buckets in SHT_HASH section"
-msgstr ""
-
-#: src/elfcmp.c:73
-msgid "Output nothing; yield exit status only"
-msgstr ""
-
-#: src/elfcmp.c:80
-msgid "Compare relevant parts of two ELF files for equality."
-msgstr ""
-
-#: src/elfcmp.c:84
-msgid "FILE1 FILE2"
-msgstr ""
-
-#: src/elfcmp.c:140
-msgid "Invalid number of parameters.\n"
-msgstr ""
-
-#: src/elfcmp.c:168 src/elfcmp.c:173
-#, c-format
-msgid "cannot get ELF header of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:190
-#, c-format
-msgid "%s %s diff: ELF header"
-msgstr ""
-
-#: src/elfcmp.c:198 src/elfcmp.c:201
-#, c-format
-msgid "cannot get section count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:206
-#, c-format
-msgid "%s %s diff: section count"
-msgstr ""
-
-#: src/elfcmp.c:214 src/elfcmp.c:217
-#, c-format
-msgid "cannot get program header count of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:222
-#, c-format
-msgid "%s %s diff: program header count"
-msgstr ""
-
-#: src/elfcmp.c:281
-#, c-format
-msgid "%s %s differ: section header"
-msgstr ""
-
-#: src/elfcmp.c:309 src/elfcmp.c:315
-#, c-format
-msgid "cannot get content of section %zu in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:331 src/elfcmp.c:337
-#, c-format
-msgid "cannot get symbol in '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:358
-#, c-format
-msgid "%s %s differ: symbol table [%zu]"
-msgstr ""
-
-#: src/elfcmp.c:361
-#, c-format
-msgid "%s %s differ: symbol table [%zu,%zu]"
-msgstr ""
-
-#: src/elfcmp.c:409
-#, c-format
-msgid "%s %s differ: section [%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:413
-#, c-format
-msgid "%s %s differ: section [%zu,%zu] '%s' content"
-msgstr ""
-
-#: src/elfcmp.c:429
-#, c-format
-msgid "%s %s differ: unequal amount of important sections"
-msgstr ""
-
-#: src/elfcmp.c:463 src/elfcmp.c:468
-#, c-format
-msgid "cannot load data of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:487 src/elfcmp.c:493
-#, c-format
-msgid "cannot get program header entry %d of '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:499
-#, c-format
-msgid "%s %s differ: program header %d"
-msgstr ""
-
-#: src/elfcmp.c:524
-#, c-format
-msgid "%s %s differ: gap"
-msgstr ""
-
-#: src/elfcmp.c:583
-#, c-format
-msgid "Invalid value '%s' for --gaps parameter."
-msgstr ""
-
-#: src/elfcmp.c:607 src/findtextrel.c:229 src/ldgeneric.c:1767
-#: src/ldgeneric.c:4257 src/nm.c:363 src/ranlib.c:169 src/size.c:301
-#: src/strings.c:183 src/strip.c:433 src/strip.c:468 src/unstrip.c:1900
-#: src/unstrip.c:1929
-#, c-format
-msgid "cannot open '%s'"
-msgstr ""
-
-#: src/elfcmp.c:611 src/findtextrel.c:236 src/ranlib.c:186
-#, c-format
-msgid "cannot create ELF descriptor for '%s': %s"
-msgstr ""
-
-#: src/elfcmp.c:616
-#, c-format
-msgid "cannot create EBL descriptor for '%s'"
-msgstr ""
-
-#: src/elfcmp.c:634
-#, c-format
-msgid "cannot get section header of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:644
-#, c-format
-msgid "cannot get content of section %zu: %s"
-msgstr ""
-
-#: src/elfcmp.c:654 src/elfcmp.c:668
-#, c-format
-msgid "cannot get relocation: %s"
-msgstr ""
-
-#: src/elflint.c:72
-msgid "Be extremely strict, flag level 2 features."
-msgstr ""
-
-#: src/elflint.c:73
-msgid "Do not print anything if successful"
-msgstr ""
-
-#: src/elflint.c:74
-msgid "Binary is a separate debuginfo file"
-msgstr ""
-
-#: src/elflint.c:76
-msgid ""
-"Binary has been created with GNU ld and is therefore known to be broken in "
-"certain ways"
-msgstr ""
-
-#: src/elflint.c:82
-msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
-msgstr ""
-
-#: src/elflint.c:86 src/readelf.c:118
-msgid "FILE..."
-msgstr ""
-
-#: src/elflint.c:159 src/readelf.c:272
-#, c-format
-msgid "cannot open input file"
-msgstr ""
-
-#: src/elflint.c:166
-#, c-format
-msgid "cannot generate Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:185
-#, c-format
-msgid "error while closing Elf descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:189
-msgid "No errors"
-msgstr ""
-
-#: src/elflint.c:223 src/readelf.c:425
-msgid "Missing file name.\n"
-msgstr ""
-
-#: src/elflint.c:302
-#, c-format
-msgid " error while freeing sub-ELF descriptor: %s\n"
-msgstr ""
-
-#: src/elflint.c:310
-#, c-format
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr ""
-
-#: src/elflint.c:370
-#, c-format
-msgid "e_ident[%d] == %d is no known class\n"
-msgstr ""
-
-#: src/elflint.c:375
-#, c-format
-msgid "e_ident[%d] == %d is no known data encoding\n"
-msgstr ""
-
-#: src/elflint.c:379
-#, c-format
-msgid "unknown ELF header version number e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:385
-#, c-format
-msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
-msgstr ""
-
-#: src/elflint.c:391
-#, c-format
-msgid "unsupport ABI version e_ident[%d] == %d\n"
-msgstr ""
-
-#: src/elflint.c:396
-#, c-format
-msgid "e_ident[%zu] is not zero\n"
-msgstr ""
-
-#: src/elflint.c:401
-#, c-format
-msgid "unknown object file type %d\n"
-msgstr ""
-
-#: src/elflint.c:408
-#, c-format
-msgid "unknown machine type %d\n"
-msgstr ""
-
-#: src/elflint.c:412
-#, c-format
-msgid "unknown object file version\n"
-msgstr ""
-
-#: src/elflint.c:418
-#, c-format
-msgid "invalid program header offset\n"
-msgstr ""
-
-#: src/elflint.c:420
-#, c-format
-msgid "executables and DSOs cannot have zero program header offset\n"
-msgstr ""
-
-#: src/elflint.c:424
-#, c-format
-msgid "invalid number of program header entries\n"
-msgstr ""
-
-#: src/elflint.c:432
-#, c-format
-msgid "invalid section header table offset\n"
-msgstr ""
-
-#: src/elflint.c:435
-#, c-format
-msgid "section header table must be present\n"
-msgstr ""
-
-#: src/elflint.c:449
-#, c-format
-msgid "invalid number of section header table entries\n"
-msgstr ""
-
-#: src/elflint.c:466
-#, c-format
-msgid "invalid section header index\n"
-msgstr ""
-
-#: src/elflint.c:480
-#, c-format
-msgid "invalid number of program header table entries\n"
-msgstr ""
-
-#: src/elflint.c:489
-#, c-format
-msgid "invalid machine flags: %s\n"
-msgstr ""
-
-#: src/elflint.c:496 src/elflint.c:513
-#, c-format
-msgid "invalid ELF header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:499 src/elflint.c:516
-#, c-format
-msgid "invalid program header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:502 src/elflint.c:519
-#, c-format
-msgid "invalid program header position or size\n"
-msgstr ""
-
-#: src/elflint.c:505 src/elflint.c:522
-#, c-format
-msgid "invalid section header size: %hd\n"
-msgstr ""
-
-#: src/elflint.c:508 src/elflint.c:525
-#, c-format
-msgid "invalid section header position or size\n"
-msgstr ""
-
-#: src/elflint.c:569
-#, c-format
-msgid ""
-"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
-"group\n"
-msgstr ""
-
-#: src/elflint.c:573
-#, c-format
-msgid ""
-"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
-msgstr ""
-
-#: src/elflint.c:589 src/elflint.c:1432 src/elflint.c:1482 src/elflint.c:1591
-#: src/elflint.c:2185 src/elflint.c:2699 src/elflint.c:2860 src/elflint.c:2990
-#: src/elflint.c:3162 src/elflint.c:4062
-#, c-format
-msgid "section [%2d] '%s': cannot get section data\n"
-msgstr ""
-
-#: src/elflint.c:602 src/elflint.c:1598
-#, c-format
-msgid ""
-"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
-"type is not SHT_STRTAB\n"
-msgstr ""
-
-#: src/elflint.c:625
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol table cannot have more than one extended index "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:636
-#, c-format
-msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
-msgstr ""
-
-#: src/elflint.c:645
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:650 src/elflint.c:653 src/elflint.c:656 src/elflint.c:659
-#: src/elflint.c:662 src/elflint.c:665
-#, c-format
-msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:668
-#, c-format
-msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
-msgstr ""
-
-#: src/elflint.c:678
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:687
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
-msgstr ""
-
-#: src/elflint.c:700
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: too large section index but no extended "
-"section index section\n"
-msgstr ""
-
-#: src/elflint.c:706
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
-"st_shndx (%<PRIu32>)\n"
-msgstr ""
-
-#: src/elflint.c:718
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
-msgstr ""
-
-#: src/elflint.c:726
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown type\n"
-msgstr ""
-
-#: src/elflint.c:732
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
-msgstr ""
-
-#: src/elflint.c:737
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
-msgstr ""
-
-#: src/elflint.c:745
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
-msgstr ""
-
-#: src/elflint.c:749
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
-msgstr ""
-
-#: src/elflint.c:753
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
-msgstr ""
-
-#: src/elflint.c:785
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:791 src/elflint.c:816 src/elflint.c:859
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:800
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
-"SHF_TLS flag set\n"
-msgstr ""
-
-#: src/elflint.c:810 src/elflint.c:852
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
-"[%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:837
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
-msgstr ""
-
-#: src/elflint.c:845
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:872
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:879
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
-"sh_info\n"
-msgstr ""
-
-#: src/elflint.c:886
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
-msgstr ""
-
-#: src/elflint.c:936
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section [%"
-"2d]\n"
-msgstr ""
-
-#: src/elflint.c:943
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:959
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
-"match %s section address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:966
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
-"match %s section size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:974
-#, c-format
-msgid ""
-"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
-"section\n"
-msgstr ""
-
-#: src/elflint.c:990
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
-"segment address %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:997
-#, c-format
-msgid ""
-"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
-"segment size %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:1010
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
-"default visibility\n"
-msgstr ""
-
-#: src/elflint.c:1014
-#, c-format
-msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
-msgstr ""
-
-#: src/elflint.c:1059
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
-msgstr ""
-
-#: src/elflint.c:1068 src/elflint.c:1120
-#, c-format
-msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
-msgstr ""
-
-#: src/elflint.c:1093 src/elflint.c:1145
-#, c-format
-msgid ""
-"section [%2d] '%s': relative relocations after index %d as specified by "
-"DT_RELCOUNT\n"
-msgstr ""
-
-#: src/elflint.c:1099 src/elflint.c:1151
-#, c-format
-msgid ""
-"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
-"specified %d relative relocations\n"
-msgstr ""
-
-#: src/elflint.c:1111
-#, c-format
-msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
-msgstr ""
-
-#: src/elflint.c:1193
-#, c-format
-msgid "section [%2d] '%s': invalid destination section index\n"
-msgstr ""
-
-#: src/elflint.c:1206
-#, c-format
-msgid "section [%2d] '%s': invalid destination section type\n"
-msgstr ""
-
-#: src/elflint.c:1214
-#, c-format
-msgid "section [%2d] '%s': sh_info should be zero\n"
-msgstr ""
-
-#: src/elflint.c:1221
-#, c-format
-msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
-msgstr ""
-
-#: src/elflint.c:1228
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-
-#: src/elflint.c:1288
-#, c-format
-msgid "text relocation flag set but there is no read-only segment\n"
-msgstr ""
-
-#: src/elflint.c:1315
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid type\n"
-msgstr ""
-
-#: src/elflint.c:1323
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
-"type\n"
-msgstr ""
-
-#: src/elflint.c:1331
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
-msgstr ""
-
-#: src/elflint.c:1349
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
-"be used with %s\n"
-msgstr ""
-
-#: src/elflint.c:1366
-#, c-format
-msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1381
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: copy relocation against symbol of type %"
-"s\n"
-msgstr ""
-
-#: src/elflint.c:1402
-#, c-format
-msgid ""
-"section [%2d] '%s': relocation %zu: read-only section modified but text "
-"relocation flag not set\n"
-msgstr ""
-
-#: src/elflint.c:1417
-#, c-format
-msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
-msgstr ""
-
-#: src/elflint.c:1456 src/elflint.c:1506
-#, c-format
-msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1586
-#, c-format
-msgid "more than one dynamic section present\n"
-msgstr ""
-
-#: src/elflint.c:1604
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
-msgstr ""
-
-#: src/elflint.c:1609 src/elflint.c:1901
-#, c-format
-msgid "section [%2d] '%s': sh_info not zero\n"
-msgstr ""
-
-#: src/elflint.c:1619
-#, c-format
-msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:1627
-#, c-format
-msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
-msgstr ""
-
-#: src/elflint.c:1634
-#, c-format
-msgid "section [%2d] '%s': entry %zu: unknown tag\n"
-msgstr ""
-
-#: src/elflint.c:1645
-#, c-format
-msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
-msgstr ""
-
-#: src/elflint.c:1655
-#, c-format
-msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
-msgstr ""
-
-#: src/elflint.c:1673
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
-msgstr ""
-
-#: src/elflint.c:1695
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: pointer does not match address of section [%"
-"2d] '%s' referenced by sh_link\n"
-msgstr ""
-
-#: src/elflint.c:1738
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:1753
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %zu: %s value must be valid offset in section [%"
-"2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:1773 src/elflint.c:1801
-#, c-format
-msgid "section [%2d] '%s': contains %s entry but not %s\n"
-msgstr ""
-
-#: src/elflint.c:1785
-#, c-format
-msgid "section [%2d] '%s': mandatory tag %s not present\n"
-msgstr ""
-
-#: src/elflint.c:1794
-#, c-format
-msgid "section [%2d] '%s': no hash section present\n"
-msgstr ""
-
-#: src/elflint.c:1809 src/elflint.c:1816
-#, c-format
-msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
-msgstr ""
-
-#: src/elflint.c:1826 src/elflint.c:1830
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
-msgstr ""
-
-#: src/elflint.c:1836
-#, c-format
-msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
-msgstr ""
-
-#: src/elflint.c:1847 src/elflint.c:1851 src/elflint.c:1855 src/elflint.c:1859
-#, c-format
-msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
-msgstr ""
-
-#: src/elflint.c:1871
-#, c-format
-msgid ""
-"section [%2d] '%s': only relocatable files can have extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1881
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index section not for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1886
-#, c-format
-msgid "cannot get data for symbol section\n"
-msgstr ""
-
-#: src/elflint.c:1889
-#, c-format
-msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
-msgstr ""
-
-#: src/elflint.c:1896
-#, c-format
-msgid "section [%2d] '%s': extended index table too small for symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1911
-#, c-format
-msgid ""
-"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
-"same symbol table\n"
-msgstr ""
-
-#: src/elflint.c:1922
-#, c-format
-msgid "symbol 0 should have zero extended section index\n"
-msgstr ""
-
-#: src/elflint.c:1934
-#, c-format
-msgid "cannot get data for symbol %zu\n"
-msgstr ""
-
-#: src/elflint.c:1939
-#, c-format
-msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
-msgstr ""
-
-#: src/elflint.c:1955 src/elflint.c:1996
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
-msgstr ""
-
-#: src/elflint.c:1967 src/elflint.c:2008
-#, c-format
-msgid "section [%2d] '%s': chain array too large\n"
-msgstr ""
-
-#: src/elflint.c:1976 src/elflint.c:2017
-#, c-format
-msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:1982
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2023
-#, c-format
-msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2038
-#, c-format
-msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
-msgstr ""
-
-#: src/elflint.c:2049
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
-msgstr ""
-
-#: src/elflint.c:2057
-#, c-format
-msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
-msgstr ""
-
-#: src/elflint.c:2089
-#, c-format
-msgid ""
-"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
-msgstr ""
-
-#: src/elflint.c:2110
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
-"undefined\n"
-msgstr ""
-
-#: src/elflint.c:2121
-#, c-format
-msgid ""
-"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
-msgstr ""
-
-#: src/elflint.c:2152
-#, c-format
-msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2157
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
-msgstr ""
-
-#: src/elflint.c:2163
-#, c-format
-msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
-msgstr ""
-
-#: src/elflint.c:2176
-#, c-format
-msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
-msgstr ""
-
-#: src/elflint.c:2194
-#, c-format
-msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2202
-#, c-format
-msgid "section [%2d] '%s': hash table entry size incorrect\n"
-msgstr ""
-
-#: src/elflint.c:2207
-#, c-format
-msgid "section [%2d] '%s': not marked to be allocated\n"
-msgstr ""
-
-#: src/elflint.c:2212
-#, c-format
-msgid ""
-"section [%2d] '%s': hash table has not even room for initial administrative "
-"entries\n"
-msgstr ""
-
-#: src/elflint.c:2260
-#, c-format
-msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
-msgstr ""
-
-#: src/elflint.c:2338 src/elflint.c:2342
-#, c-format
-msgid "section [%2zu] '%s': reference to symbol index 0\n"
-msgstr ""
-
-#: src/elflint.c:2349
-#, c-format
-msgid ""
-"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2361
-#, c-format
-msgid ""
-"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
-"table in [%2zu] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2377
-#, c-format
-msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
-msgstr ""
-
-#: src/elflint.c:2397
-#, c-format
-msgid ""
-"section [%2d] '%s': section groups only allowed in relocatable object files\n"
-msgstr ""
-
-#: src/elflint.c:2408
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol table: %s\n"
-msgstr ""
-
-#: src/elflint.c:2413
-#, c-format
-msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2419
-#, c-format
-msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
-msgstr ""
-
-#: src/elflint.c:2424
-#, c-format
-msgid "section [%2d] '%s': sh_flags not zero\n"
-msgstr ""
-
-#: src/elflint.c:2431
-#, c-format
-msgid "section [%2d] '%s': cannot get symbol for signature\n"
-msgstr ""
-
-#: src/elflint.c:2436
-#, c-format
-msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
-msgstr ""
-
-#: src/elflint.c:2442
-#, c-format
-msgid "section [%2d] '%s': sh_flags not set correctly\n"
-msgstr ""
-
-#: src/elflint.c:2448
-#, c-format
-msgid "section [%2d] '%s': cannot get data: %s\n"
-msgstr ""
-
-#: src/elflint.c:2457
-#, c-format
-msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
-msgstr ""
-
-#: src/elflint.c:2462
-#, c-format
-msgid "section [%2d] '%s': section group without flags word\n"
-msgstr ""
-
-#: src/elflint.c:2468
-#, c-format
-msgid "section [%2d] '%s': section group without member\n"
-msgstr ""
-
-#: src/elflint.c:2472
-#, c-format
-msgid "section [%2d] '%s': section group with only one member\n"
-msgstr ""
-
-#: src/elflint.c:2483
-#, c-format
-msgid "section [%2d] '%s': unknown section group flags\n"
-msgstr ""
-
-#: src/elflint.c:2495
-#, c-format
-msgid "section [%2d] '%s': section index %Zu out of range\n"
-msgstr ""
-
-#: src/elflint.c:2504
-#, c-format
-msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
-msgstr ""
-
-#: src/elflint.c:2511
-#, c-format
-msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2517
-#, c-format
-msgid ""
-"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
-"SHF_GROUP flag set\n"
-msgstr ""
-
-#: src/elflint.c:2524
-#, c-format
-msgid "section [%2d] '%s' is contained in more than one section group\n"
-msgstr ""
-
-#: src/elflint.c:2713
-#, c-format
-msgid ""
-"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
-"dynamic symbol table\n"
-msgstr ""
-
-#: src/elflint.c:2724
-#, c-format
-msgid ""
-"section [%2d] '%s' has different number of entries than symbol table [%2d] '%"
-"s'\n"
-msgstr ""
-
-#: src/elflint.c:2740
-#, c-format
-msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
-msgstr ""
-
-#: src/elflint.c:2756
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
-msgstr ""
-
-#: src/elflint.c:2764
-#, c-format
-msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
-msgstr ""
-
-#: src/elflint.c:2778
-#, c-format
-msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
-msgstr ""
-
-#: src/elflint.c:2783
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
-msgstr ""
-
-#: src/elflint.c:2793
-#, c-format
-msgid ""
-"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
-msgstr ""
-
-#: src/elflint.c:2845
-#, c-format
-msgid "more than one version reference section present\n"
-msgstr ""
-
-#: src/elflint.c:2853 src/elflint.c:2982
-#, c-format
-msgid "section [%2d] '%s': sh_link does not link to string table\n"
-msgstr ""
-
-#: src/elflint.c:2876 src/elflint.c:3034
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong version %d\n"
-msgstr ""
-
-#: src/elflint.c:2882 src/elflint.c:3040
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:2890
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid file reference\n"
-msgstr ""
-
-#: src/elflint.c:2898
-#, c-format
-msgid "section [%2d] '%s': entry %d references unknown dependency\n"
-msgstr ""
-
-#: src/elflint.c:2910
-#, c-format
-msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:2917
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
-"reference\n"
-msgstr ""
-
-#: src/elflint.c:2924
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: %"
-"#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:2934
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
-"name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:2945
-#, c-format
-msgid ""
-"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
-msgstr ""
-
-#: src/elflint.c:2961 src/elflint.c:3119
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
-msgstr ""
-
-#: src/elflint.c:2974
-#, c-format
-msgid "more than one version definition section present\n"
-msgstr ""
-
-#: src/elflint.c:3019
-#, c-format
-msgid "section [%2d] '%s': more than one BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3023
-#, c-format
-msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
-msgstr ""
-
-#: src/elflint.c:3029
-#, c-format
-msgid "section [%2d] '%s': entry %d has unknown flag\n"
-msgstr ""
-
-#: src/elflint.c:3053
-#, c-format
-msgid "section [%2d] '%s': entry %d has invalid name reference\n"
-msgstr ""
-
-#: src/elflint.c:3060
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
-msgstr ""
-
-#: src/elflint.c:3069
-#, c-format
-msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3088
-#, c-format
-msgid ""
-"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3103
-#, c-format
-msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
-msgstr ""
-
-#: src/elflint.c:3125
-#, c-format
-msgid "section [%2d] '%s': no BASE definition\n"
-msgstr ""
-
-#: src/elflint.c:3141
-#, c-format
-msgid "section [%2d] '%s': unknown parent version '%s'\n"
-msgstr ""
-
-#: src/elflint.c:3154
-#, c-format
-msgid "section [%2d] '%s': empty object attributes section\n"
-msgstr ""
-
-#: src/elflint.c:3175
-#, c-format
-msgid "section [%2d] '%s': unrecognized attribute format\n"
-msgstr ""
-
-#: src/elflint.c:3191
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3200
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3212
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
-#: src/elflint.c:3229
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-msgstr ""
-
-#: src/elflint.c:3238
-#, c-format
-msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3247
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3260
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
-msgstr ""
-
-#: src/elflint.c:3271
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3289
-#, c-format
-msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
-msgstr ""
-
-#: src/elflint.c:3300
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
-msgstr ""
-
-#: src/elflint.c:3313
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
-msgstr ""
-
-#: src/elflint.c:3317
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3327
-#, c-format
-msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
-msgstr ""
-
-#: src/elflint.c:3333
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3422
-#, c-format
-msgid "cannot get section header of zeroth section\n"
-msgstr ""
-
-#: src/elflint.c:3426
-#, c-format
-msgid "zeroth section has nonzero name\n"
-msgstr ""
-
-#: src/elflint.c:3428
-#, c-format
-msgid "zeroth section has nonzero type\n"
-msgstr ""
-
-#: src/elflint.c:3430
-#, c-format
-msgid "zeroth section has nonzero flags\n"
-msgstr ""
-
-#: src/elflint.c:3432
-#, c-format
-msgid "zeroth section has nonzero address\n"
-msgstr ""
-
-#: src/elflint.c:3434
-#, c-format
-msgid "zeroth section has nonzero offset\n"
-msgstr ""
-
-#: src/elflint.c:3436
-#, c-format
-msgid "zeroth section has nonzero align value\n"
-msgstr ""
-
-#: src/elflint.c:3438
-#, c-format
-msgid "zeroth section has nonzero entry size value\n"
-msgstr ""
-
-#: src/elflint.c:3441
-#, c-format
-msgid ""
-"zeroth section has nonzero size value while ELF header has nonzero shnum "
-"value\n"
-msgstr ""
-
-#: src/elflint.c:3445
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in shstrndx\n"
-msgstr ""
-
-#: src/elflint.c:3449
-#, c-format
-msgid ""
-"zeroth section has nonzero link value while ELF header does not signal "
-"overflow in phnum\n"
-msgstr ""
-
-#: src/elflint.c:3466
-#, c-format
-msgid "cannot get section header for section [%2zu] '%s': %s\n"
-msgstr ""
-
-#: src/elflint.c:3475
-#, c-format
-msgid "section [%2zu]: invalid name\n"
-msgstr ""
-
-#: src/elflint.c:3502
-#, c-format
-msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3518
-#, c-format
-msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3535
-#, c-format
-msgid ""
-"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
-msgstr ""
-
-#: src/elflint.c:3553
-#, c-format
-msgid "section [%2zu] '%s' present in object file\n"
-msgstr ""
-
-#: src/elflint.c:3559 src/elflint.c:3591
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
-msgstr ""
-
-#: src/elflint.c:3564 src/elflint.c:3596
-#, c-format
-msgid ""
-"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
-"segments\n"
-msgstr ""
-
-#: src/elflint.c:3572
-#, c-format
-msgid ""
-"section [%2zu] '%s' is extension section index table in non-object file\n"
-msgstr ""
-
-#: src/elflint.c:3615
-#, c-format
-msgid "section [%2zu] '%s': size not multiple of entry size\n"
-msgstr ""
-
-#: src/elflint.c:3620
-#, c-format
-msgid "cannot get section header\n"
-msgstr ""
-
-#: src/elflint.c:3630
-#, c-format
-msgid "section [%2zu] '%s' has unsupported type %d\n"
-msgstr ""
-
-#: src/elflint.c:3644
-#, c-format
-msgid ""
-"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3651
-#, c-format
-msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:3659
-#, c-format
-msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
-msgstr ""
-
-#: src/elflint.c:3667
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in link value\n"
-msgstr ""
-
-#: src/elflint.c:3672
-#, c-format
-msgid "section [%2zu] '%s': invalid section reference in info value\n"
-msgstr ""
-
-#: src/elflint.c:3679
-#, c-format
-msgid "section [%2zu] '%s': strings flag set without merge flag\n"
-msgstr ""
-
-#: src/elflint.c:3684
-#, c-format
-msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
-msgstr ""
-
-#: src/elflint.c:3702
-#, c-format
-msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
-msgstr ""
-
-#: src/elflint.c:3711
-#, c-format
-msgid "section [%2zu] '%s' is both executable and writable\n"
-msgstr ""
-
-#: src/elflint.c:3738
-#, c-format
-msgid ""
-"section [%2zu] '%s' not fully contained in segment of program header entry %"
-"d\n"
-msgstr ""
-
-#: src/elflint.c:3746
-#, c-format
-msgid ""
-"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
-"program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3755
-#, c-format
-msgid ""
-"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
-"segment of program header entry %d\n"
-msgstr ""
-
-#: src/elflint.c:3766
-#, c-format
-msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3776
-#, c-format
-msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
-msgstr ""
-
-#: src/elflint.c:3786
-#, c-format
-msgid ""
-"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:3792
-#, c-format
-msgid ""
-"section [%2zu] '%s': ELF header says this is the section header string table "
-"but type is not SHT_TYPE\n"
-msgstr ""
-
-#: src/elflint.c:3800
-#, c-format
-msgid ""
-"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
-msgstr ""
-
-#: src/elflint.c:3851
-#, c-format
-msgid "more than one version symbol table present\n"
-msgstr ""
-
-#: src/elflint.c:3874
-#, c-format
-msgid "INTERP program header entry but no .interp section\n"
-msgstr ""
-
-#: src/elflint.c:3885
-#, c-format
-msgid ""
-"loadable segment [%u] is executable but contains no executable sections\n"
-msgstr ""
-
-#: src/elflint.c:3891
-#, c-format
-msgid "loadable segment [%u] is writable but contains no writable sections\n"
-msgstr ""
-
-#: src/elflint.c:3902
-#, c-format
-msgid ""
-"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
-"exist\n"
-msgstr ""
-
-#: src/elflint.c:3915
-#, c-format
-msgid "duplicate version index %d\n"
-msgstr ""
-
-#: src/elflint.c:3929
-#, c-format
-msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
-msgstr ""
-
-#: src/elflint.c:3978
-#, c-format
-msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
-msgstr ""
-
-#: src/elflint.c:3982
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4005
-#, c-format
-msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4009
-#, c-format
-msgid ""
-"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
-msgstr ""
-
-#: src/elflint.c:4026
-#, c-format
-msgid "phdr[%d]: no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4045
-#, c-format
-msgid "phdr[%d]: cannot get content of note section: %s\n"
-msgstr ""
-
-#: src/elflint.c:4048
-#, c-format
-msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4069
-#, c-format
-msgid "section [%2d] '%s': no note entries defined for the type of file\n"
-msgstr ""
-
-#: src/elflint.c:4076
-#, c-format
-msgid "section [%2d] '%s': cannot get content of note section\n"
-msgstr ""
-
-#: src/elflint.c:4079
-#, c-format
-msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
-msgstr ""
-
-#: src/elflint.c:4097
-#, c-format
-msgid ""
-"only executables, shared objects, and core files can have program headers\n"
-msgstr ""
-
-#: src/elflint.c:4112
-#, c-format
-msgid "cannot get program header entry %d: %s\n"
-msgstr ""
-
-#: src/elflint.c:4121
-#, c-format
-msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
-msgstr ""
-
-#: src/elflint.c:4132
-#, c-format
-msgid "more than one INTERP entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4140
-#, c-format
-msgid "more than one TLS entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4147
-#, c-format
-msgid "static executable cannot have dynamic sections\n"
-msgstr ""
-
-#: src/elflint.c:4161
-#, c-format
-msgid "dynamic section reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4164
-#, c-format
-msgid "dynamic section size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4174
-#, c-format
-msgid "more than one GNU_RELRO entry in program header\n"
-msgstr ""
-
-#: src/elflint.c:4195
-#, c-format
-msgid "loadable segment GNU_RELRO applies to is not writable\n"
-msgstr ""
-
-#: src/elflint.c:4198
-#, c-format
-msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
-msgstr ""
-
-#: src/elflint.c:4206 src/elflint.c:4229
-#, c-format
-msgid "%s segment not contained in a loaded segment\n"
-msgstr ""
-
-#: src/elflint.c:4235
-#, c-format
-msgid "program header offset in ELF header and PHDR entry do not match"
-msgstr ""
-
-#: src/elflint.c:4259
-#, c-format
-msgid "call frame search table reference in program header has wrong offset\n"
-msgstr ""
-
-#: src/elflint.c:4262
-#, c-format
-msgid "call frame search table size mismatch in program and section header\n"
-msgstr ""
-
-#: src/elflint.c:4275
-#, c-format
-msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
-msgstr ""
-
-#: src/elflint.c:4283
-#, c-format
-msgid "call frame search table must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4286
-#, c-format
-msgid "section [%2zu] '%s' must be allocated\n"
-msgstr ""
-
-#: src/elflint.c:4290
-#, c-format
-msgid "call frame search table must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4293
-#, c-format
-msgid "section [%2zu] '%s' must not be writable\n"
-msgstr ""
-
-#: src/elflint.c:4298
-#, c-format
-msgid "call frame search table must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4301
-#, c-format
-msgid "section [%2zu] '%s' must not be executable\n"
-msgstr ""
-
-#: src/elflint.c:4312
-#, c-format
-msgid "program header entry %d: file size greater than memory size\n"
-msgstr ""
-
-#: src/elflint.c:4319
-#, c-format
-msgid "program header entry %d: alignment not a power of 2\n"
-msgstr ""
-
-#: src/elflint.c:4322
-#, c-format
-msgid ""
-"program header entry %d: file offset and virtual address not module of "
-"alignment\n"
-msgstr ""
-
-#: src/elflint.c:4335
-#, c-format
-msgid ""
-"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
-"program header entry"
-msgstr ""
-
-#: src/elflint.c:4369
-#, c-format
-msgid "cannot read ELF header: %s\n"
-msgstr ""
-
-#: src/elflint.c:4395
-#, c-format
-msgid "text relocation flag set but not needed\n"
-msgstr ""
-
-#: src/findtextrel.c:70
-msgid "Input Selection:"
-msgstr ""
-
-#: src/findtextrel.c:71
-msgid "Prepend PATH to all file names"
-msgstr ""
-
-#: src/findtextrel.c:73
-msgid "Use PATH as root of debuginfo hierarchy"
-msgstr ""
-
-#: src/findtextrel.c:80
-msgid "Locate source of text relocations in FILEs (a.out by default)."
-msgstr ""
-
-#: src/findtextrel.c:84 src/nm.c:111 src/objdump.c:80 src/size.c:92
-#: src/strings.c:92 src/strip.c:97
-msgid "[FILE...]"
-msgstr ""
-
-#: src/findtextrel.c:246
-#, c-format
-msgid "cannot get ELF header '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:257
-#, c-format
-msgid "'%s' is not a DSO or PIE"
-msgstr ""
-
-#: src/findtextrel.c:274
-#, c-format
-msgid "getting get section header of section %zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:292
-#, c-format
-msgid "cannot read dynamic section: %s"
-msgstr ""
-
-#: src/findtextrel.c:307
-#, c-format
-msgid "no text relocations reported in '%s'"
-msgstr ""
-
-#: src/findtextrel.c:319
-#, c-format
-msgid "while reading ELF file"
-msgstr ""
-
-#: src/findtextrel.c:328 src/findtextrel.c:345
-#, c-format
-msgid "cannot get program header index at offset %d: %s"
-msgstr ""
-
-#: src/findtextrel.c:397
-#, c-format
-msgid "cannot get section header of section %Zu: %s"
-msgstr ""
-
-#: src/findtextrel.c:409
-#, c-format
-msgid "cannot get symbol table section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:429 src/findtextrel.c:452
-#, c-format
-msgid "cannot get relocation at index %d in section %zu in '%s': %s"
-msgstr ""
-
-#: src/findtextrel.c:517
-#, c-format
-msgid "%s not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:570
-#, c-format
-msgid ""
-"the file containing the function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:577 src/findtextrel.c:597
-#, c-format
-msgid ""
-"the file containing the function '%s' might not be compiled with -fpic/-"
-"fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:585
-#, c-format
-msgid ""
-"either the file containing the function '%s' or the file containing the "
-"function '%s' is not compiled with -fpic/-fPIC\n"
-msgstr ""
-
-#: src/findtextrel.c:605
-#, c-format
-msgid ""
-"a relocation modifies memory at offset %llu in a write-protected segment\n"
-msgstr ""
-
-#: src/i386_ld.c:210
-#, c-format
-msgid "cannot allocate PLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:232
-#, c-format
-msgid "cannot allocate PLTREL section: %s"
-msgstr ""
-
-#: src/i386_ld.c:253
-#, c-format
-msgid "cannot allocate GOT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:274
-#, c-format
-msgid "cannot allocate GOTPLT section: %s"
-msgstr ""
-
-#: src/i386_ld.c:661
-#, c-format
-msgid "initial-executable TLS relocation cannot be used "
-msgstr ""
-
-#: src/ld.c:87
-msgid "Input File Control:"
-msgstr ""
-
-#: src/ld.c:89
-msgid "Include whole archives in the output from now on."
-msgstr ""
-
-#: src/ld.c:91
-msgid "Stop including the whole archives in the output."
-msgstr ""
-
-#: src/ld.c:92 src/ld.c:106 src/ld.c:184
-msgid "FILE"
-msgstr ""
-
-#: src/ld.c:93
-msgid "Start a group."
-msgstr ""
-
-#: src/ld.c:94
-msgid "End a group."
-msgstr ""
-
-#: src/ld.c:95
-msgid "PATH"
-msgstr ""
-
-#: src/ld.c:96
-msgid "Add PATH to list of directories files are searched in."
-msgstr ""
-
-#: src/ld.c:98
-msgid "Only set DT_NEEDED for following dynamic libs if actually used"
-msgstr ""
-
-#: src/ld.c:100
-msgid "Always set DT_NEEDED for following dynamic libs"
-msgstr ""
-
-#: src/ld.c:102
-msgid "Ignore LD_LIBRARY_PATH environment variable."
-msgstr ""
-
-#: src/ld.c:105
-msgid "Output File Control:"
-msgstr ""
-
-#: src/ld.c:106
-msgid "Place output in FILE."
-msgstr ""
-
-#: src/ld.c:109
-msgid "Object is marked to not use default search path at runtime."
-msgstr ""
-
-#: src/ld.c:111
-msgid "Same as --whole-archive."
-msgstr ""
-
-#: src/ld.c:112
-msgid ""
-"Default rules of extracting from archive; weak references are not enough."
-msgstr ""
-
-#: src/ld.c:116
-msgid "Weak references cause extraction from archive."
-msgstr ""
-
-#: src/ld.c:118
-msgid "Allow multiple definitions; first is used."
-msgstr ""
-
-#: src/ld.c:120
-msgid "Disallow/allow undefined symbols in DSOs."
-msgstr ""
-
-#: src/ld.c:123
-msgid "Object requires immediate handling of $ORIGIN."
-msgstr ""
-
-#: src/ld.c:125
-msgid "Relocation will not be processed lazily."
-msgstr ""
-
-#: src/ld.c:127
-msgid "Object cannot be unloaded at runtime."
-msgstr ""
-
-#: src/ld.c:129
-msgid "Mark object to be initialized first."
-msgstr ""
-
-#: src/ld.c:131
-msgid "Enable/disable lazy-loading flag for following dependencies."
-msgstr ""
-
-#: src/ld.c:133
-msgid "Mark object as not loadable with 'dlopen'."
-msgstr ""
-
-#: src/ld.c:135
-msgid "Ignore/record dependencies on unused DSOs."
-msgstr ""
-
-#: src/ld.c:137
-msgid "Generated DSO will be a system library."
-msgstr ""
-
-#: src/ld.c:138
-msgid "ADDRESS"
-msgstr ""
-
-#: src/ld.c:138
-msgid "Set entry point address."
-msgstr ""
-
-#: src/ld.c:141
-msgid "Do not link against shared libraries."
-msgstr ""
-
-#: src/ld.c:144
-msgid "Prefer linking against shared libraries."
-msgstr ""
-
-#: src/ld.c:145
-msgid "Export all dynamic symbols."
-msgstr ""
-
-#: src/ld.c:146
-msgid "Strip all symbols."
-msgstr ""
-
-#: src/ld.c:147
-msgid "Strip debugging symbols."
-msgstr ""
-
-#: src/ld.c:149
-msgid "Assume pagesize for the target system to be SIZE."
-msgstr ""
-
-#: src/ld.c:151
-msgid "Set runtime DSO search path."
-msgstr ""
-
-#: src/ld.c:154
-msgid "Set link time DSO search path."
-msgstr ""
-
-#: src/ld.c:155
-msgid "Generate dynamic shared object."
-msgstr ""
-
-#: src/ld.c:156
-msgid "Generate relocatable object."
-msgstr ""
-
-#: src/ld.c:159
-msgid "Causes symbol not assigned to a version be reduced to local."
-msgstr ""
-
-#: src/ld.c:160
-msgid "Remove unused sections."
-msgstr ""
-
-#: src/ld.c:163
-msgid "Don't remove unused sections."
-msgstr ""
-
-#: src/ld.c:164
-msgid "Set soname of shared object."
-msgstr ""
-
-#: src/ld.c:165
-msgid "Set the dynamic linker name."
-msgstr ""
-
-#: src/ld.c:168
-msgid "Add/suppress addition indentifying link-editor to .comment section."
-msgstr ""
-
-#: src/ld.c:171
-msgid "Create .eh_frame_hdr section"
-msgstr ""
-
-#: src/ld.c:173
-msgid "Set hash style to sysv, gnu or both."
-msgstr ""
-
-#: src/ld.c:175
-msgid "Generate build ID note (md5, sha1 (default), uuid)."
-msgstr ""
-
-#: src/ld.c:177
-msgid "Linker Operation Control:"
-msgstr ""
-
-#: src/ld.c:178
-msgid "Verbose messages."
-msgstr ""
-
-#: src/ld.c:179
-msgid "Trace file opens."
-msgstr ""
-
-#: src/ld.c:181
-msgid "Trade speed for less memory usage"
-msgstr ""
-
-#: src/ld.c:182
-msgid "LEVEL"
-msgstr ""
-
-#: src/ld.c:183
-msgid "Set optimization level to LEVEL."
-msgstr ""
-
-#: src/ld.c:184
-msgid "Use linker script in FILE."
-msgstr ""
-
-#: src/ld.c:187
-msgid "Select to get parser debug information"
-msgstr ""
-
-#: src/ld.c:190
-msgid "Read version information from FILE."
-msgstr ""
-
-#: src/ld.c:191
-msgid "Set emulation to NAME."
-msgstr ""
-
-#: src/ld.c:197
-msgid "Combine object and archive files."
-msgstr ""
-
-#: src/ld.c:200
-msgid "[FILE]..."
-msgstr ""
-
-#: src/ld.c:333
-#, c-format
-msgid "At least one input file needed"
-msgstr ""
-
-#: src/ld.c:349
-#, c-format
-msgid "error while preparing linking"
-msgstr ""
-
-#: src/ld.c:356
-#, c-format
-msgid "cannot open linker script '%s'"
-msgstr ""
-
-#: src/ld.c:397
-#, c-format
-msgid "-( without matching -)"
-msgstr ""
-
-#: src/ld.c:572 src/ld.c:610
-#, c-format
-msgid "only one option of -G and -r is allowed"
-msgstr ""
-
-#: src/ld.c:594
-#, c-format
-msgid "more than one '-m' parameter"
-msgstr ""
-
-#: src/ld.c:604 src/ld.c:1013
-#, c-format
-msgid "unknown option `-%c %s'"
-msgstr ""
-
-#: src/ld.c:646
-#, c-format
-msgid "invalid page size value '%s': ignored"
-msgstr ""
-
-#: src/ld.c:687
-#, c-format
-msgid "invalid hash style '%s'"
-msgstr ""
-
-#: src/ld.c:697
-#, c-format
-msgid "invalid build-ID style '%s'"
-msgstr ""
-
-#: src/ld.c:785
-#, c-format
-msgid "More than one output file name given."
-msgstr ""
-
-#: src/ld.c:802
-#, c-format
-msgid "Invalid optimization level `%s'"
-msgstr ""
-
-#: src/ld.c:850
-#, c-format
-msgid "nested -( -) groups are not allowed"
-msgstr ""
-
-#: src/ld.c:869
-#, c-format
-msgid "-) without matching -("
-msgstr ""
-
-#: src/ld.c:1046
-#, c-format
-msgid "unknown option '-%c %s'"
-msgstr ""
-
-#: src/ld.c:1150
-#, c-format
-msgid "could not find input file to determine output file format"
-msgstr ""
-
-#: src/ld.c:1152
-#, c-format
-msgid "try again with an appropriate '-m' parameter"
-msgstr ""
-
-#: src/ld.c:1446
-#, c-format
-msgid "cannot read version script '%s'"
-msgstr ""
-
-#: src/ld.c:1512 src/ld.c:1551
-#, c-format
-msgid "duplicate definition of '%s' in linker script"
-msgstr ""
-
-#: src/ldgeneric.c:209 src/ldgeneric.c:5151
-#, c-format
-msgid "cannot create string table"
-msgstr ""
-
-#: src/ldgeneric.c:255
-#, c-format
-msgid "cannot load ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:265
-#, c-format
-msgid "cannot find init function in ld backend library '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:310
-#, c-format
-msgid "%s listed more than once as input"
-msgstr ""
-
-#: src/ldgeneric.c:424
-#, c-format
-msgid "%s (for -l%s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:425
-#, c-format
-msgid "%s (for DT_NEEDED %s)\n"
-msgstr ""
-
-#: src/ldgeneric.c:573
-#, c-format
-msgid "Warning: type of `%s' changed from %s in %s to %s in %s"
-msgstr ""
-
-#: src/ldgeneric.c:586
-#, c-format
-msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
-msgstr ""
-
-#: src/ldgeneric.c:661 src/ldgeneric.c:1122 src/readelf.c:629 src/strip.c:543
-#, c-format
-msgid "cannot determine number of sections: %s"
-msgstr ""
-
-#: src/ldgeneric.c:677
-#, c-format
-msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n"
-msgstr ""
-
-#: src/ldgeneric.c:700
-#, c-format
-msgid "(%s+%#<PRIx64>): first defined here\n"
-msgstr ""
-
-#: src/ldgeneric.c:819
-#, c-format
-msgid "%s: cannot get section group data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:840
-#, c-format
-msgid "%s: section '%s' with group flag set does not belong to any group"
-msgstr ""
-
-#: src/ldgeneric.c:885
-#, c-format
-msgid "%s: section [%2d] '%s' is not in the correct section group"
-msgstr ""
-
-#: src/ldgeneric.c:1156 src/ldgeneric.c:1413 src/ldgeneric.c:1422
-#: src/ldgeneric.c:1481 src/ldgeneric.c:1490 src/ldgeneric.c:1753
-#: src/ldgeneric.c:2005
-#, c-format
-msgid "%s: invalid ELF file (%s:%d)\n"
-msgstr ""
-
-#: src/ldgeneric.c:1250
-#, c-format
-msgid "%s: only files of type ET_REL might contain section groups"
-msgstr ""
-
-#: src/ldgeneric.c:1302
-#, c-format
-msgid "%s: cannot determine signature of section group [%2zd] '%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:1314
-#, c-format
-msgid "%s: cannot get content of section group [%2zd] '%s': %s'"
-msgstr ""
-
-#: src/ldgeneric.c:1328
-#, c-format
-msgid ""
-"%s: group member %zu of section group [%2zd] '%s' has too high index: %"
-"<PRIu32>"
-msgstr ""
-
-#: src/ldgeneric.c:1350
-#, c-format
-msgid "%s: section '%s' has unknown type: %d"
-msgstr ""
-
-#: src/ldgeneric.c:1729
-#, c-format
-msgid "cannot get descriptor for ELF file (%s:%d): %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:1899
-#, c-format
-msgid "cannot read archive `%s': %s"
-msgstr ""
-
-#: src/ldgeneric.c:2020
-#, c-format
-msgid "file of type %s cannot be linked in\n"
-msgstr ""
-
-#: src/ldgeneric.c:2032
-#, c-format
-msgid "%s: input file incompatible with ELF machine type %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2044
-#, c-format
-msgid "%s: cannot get section header string table index: %s\n"
-msgstr ""
-
-#: src/ldgeneric.c:2073
-#, c-format
-msgid "cannot use DSO '%s' when generating relocatable object file"
-msgstr ""
-
-#: src/ldgeneric.c:2158
-#, c-format
-msgid "input file '%s' ignored"
-msgstr ""
-
-#: src/ldgeneric.c:2372
-#, c-format
-msgid "undefined symbol `%s' in %s"
-msgstr ""
-
-#: src/ldgeneric.c:2702
-#, c-format
-msgid "cannot create ELF descriptor for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:2709
-#, c-format
-msgid "could not create ELF header for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3224 src/ldgeneric.c:3294 src/ldgeneric.c:3330
-#: src/ldgeneric.c:4457 src/ldgeneric.c:4506 src/ldgeneric.c:4538
-#: src/ldgeneric.c:4773 src/ldgeneric.c:4828 src/ldgeneric.c:5075
-#: src/ldgeneric.c:5131 src/ldgeneric.c:5600 src/ldgeneric.c:5612
-#, c-format
-msgid "cannot create section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:3444
-#, c-format
-msgid "address computation expression contains variable '%s'"
-msgstr ""
-
-#: src/ldgeneric.c:3489
-#, c-format
-msgid ""
-"argument '%<PRIuMAX>' of ALIGN in address computation expression is no power "
-"of two"
-msgstr ""
-
-#: src/ldgeneric.c:3684
-#, c-format
-msgid "cannot find entry symbol '%s': defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3690
-#, c-format
-msgid "no entry symbol specified: defaulting to %#0*<PRIx64>"
-msgstr ""
-
-#: src/ldgeneric.c:3920
-#, c-format
-msgid "cannot create GNU hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4071
-#, c-format
-msgid "cannot create hash table section for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4114
-#, c-format
-msgid "cannot create build ID section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4191
-#, c-format
-msgid "cannot convert section data to file format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4200
-#, c-format
-msgid "cannot convert section data to memory format: %s"
-msgstr ""
-
-#: src/ldgeneric.c:4261
-#, c-format
-msgid "cannot read enough data for UUID"
-msgstr ""
-
-#: src/ldgeneric.c:4358 src/ldgeneric.c:4379 src/ldgeneric.c:4408
-#: src/ldgeneric.c:6062
-#, c-format
-msgid "cannot create symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5300 src/ldgeneric.c:5852
-#, c-format
-msgid "section index too large in dynamic symbol table"
-msgstr ""
-
-#: src/ldgeneric.c:5745
-#, c-format
-msgid "cannot create versioning section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5818
-#, c-format
-msgid "cannot create dynamic symbol table for output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:5994
-#, c-format
-msgid "cannot create versioning data: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6094 src/ldgeneric.c:6107 src/ldgeneric.c:6171
-#: src/ldgeneric.c:6179
-#, c-format
-msgid "cannot create section header string section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6101
-#, c-format
-msgid "cannot create section header string section"
-msgstr ""
-
-#: src/ldgeneric.c:6259
-#, c-format
-msgid "cannot create program header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6267
-#, c-format
-msgid "while determining file layout: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6388
-#, c-format
-msgid "internal error: non-nobits section follows nobits section"
-msgstr ""
-
-#: src/ldgeneric.c:6925
-#, c-format
-msgid "cannot get header of 0th section: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6941 src/unstrip.c:1808
-#, c-format
-msgid "cannot update ELF header: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6972
-#, c-format
-msgid "linker backend didn't specify function to relocate section"
-msgstr ""
-
-#: src/ldgeneric.c:6984
-#, c-format
-msgid "while writing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6989
-#, c-format
-msgid "while finishing output file: %s"
-msgstr ""
-
-#: src/ldgeneric.c:6995
-#, c-format
-msgid "cannot stat output file"
-msgstr ""
-
-#: src/ldgeneric.c:7011
-#, c-format
-msgid "WARNING: temporary output file overwritten before linking finished"
-msgstr ""
-
-#: src/ldgeneric.c:7064 src/ldgeneric.c:7075 src/ldgeneric.c:7086
-#: src/ldgeneric.c:7097 src/ldgeneric.c:7116 src/ldgeneric.c:7129
-#: src/ldgeneric.c:7141
-#, c-format
-msgid "no machine specific '%s' implementation"
-msgstr ""
-
-#: src/ldscript.y:178
-msgid "mode for segment invalid\n"
-msgstr ""
-
-#: src/ldscript.y:465
-#, c-format
-msgid "while reading version script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:466
-#, c-format
-msgid "while reading linker script '%s': %s at line %d"
-msgstr ""
-
-#: src/ldscript.y:745
-#, c-format
-msgid "symbol '%s' is declared both local and global for unnamed version"
-msgstr ""
-
-#: src/ldscript.y:747
-#, c-format
-msgid "symbol '%s' is declared both local and global for version '%s'"
-msgstr ""
-
-#: src/ldscript.y:767 src/ldscript.y:774
-#, c-format
-msgid "default visibility set as local and global"
-msgstr ""
-
-#: src/nm.c:74 src/strip.c:73
-msgid "Output selection:"
-msgstr ""
-
-#: src/nm.c:75
-msgid "Display debugger-only symbols"
-msgstr ""
-
-#: src/nm.c:76
-msgid "Display only defined symbols"
-msgstr ""
-
-#: src/nm.c:79
-msgid "Display dynamic symbols instead of normal symbols"
-msgstr ""
-
-#: src/nm.c:80
-msgid "Display only external symbols"
-msgstr ""
-
-#: src/nm.c:81
-msgid "Display only undefined symbols"
-msgstr ""
-
-#: src/nm.c:83
-msgid "Include index for symbols from archive members"
-msgstr ""
-
-#: src/nm.c:85 src/size.c:66
-msgid "Output format:"
-msgstr ""
-
-#: src/nm.c:87
-msgid "Print name of the input file before every symbol"
-msgstr ""
-
-#: src/nm.c:90
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The "
-"default is `sysv'"
-msgstr ""
-
-#: src/nm.c:92
-msgid "Same as --format=bsd"
-msgstr ""
-
-#: src/nm.c:93
-msgid "Same as --format=posix"
-msgstr ""
-
-#: src/nm.c:94 src/size.c:72
-msgid "Use RADIX for printing symbol values"
-msgstr ""
-
-#: src/nm.c:95
-msgid "Mark weak symbols"
-msgstr ""
-
-#: src/nm.c:96
-msgid "Print size of defined symbols"
-msgstr ""
-
-#: src/nm.c:98 src/size.c:80 src/strip.c:78 src/unstrip.c:81
-msgid "Output options:"
-msgstr ""
-
-#: src/nm.c:99
-msgid "Sort symbols numerically by address"
-msgstr ""
-
-#: src/nm.c:101
-msgid "Do not sort the symbols"
-msgstr ""
-
-#: src/nm.c:102
-msgid "Reverse the sense of the sort"
-msgstr ""
-
-#: src/nm.c:108
-msgid "List symbols from FILEs (a.out by default)."
-msgstr ""
-
-#: src/nm.c:136 src/objdump.c:105 src/size.c:117 src/strip.c:121
-#, c-format
-msgid "%s: INTERNAL ERROR %d (%s-%s): %s"
-msgstr ""
-
-#: src/nm.c:380 src/nm.c:392 src/size.c:317 src/size.c:326 src/size.c:337
-#: src/strip.c:1816
-#, c-format
-msgid "while closing '%s'"
-msgstr ""
-
-#: src/nm.c:402 src/objdump.c:296 src/strip.c:359
-#, c-format
-msgid "%s: File format not recognized"
-msgstr ""
-
-#: src/nm.c:442
-msgid ""
-"\n"
-"Archive index:"
-msgstr ""
-
-#: src/nm.c:451
-#, c-format
-msgid "invalid offset %zu for symbol %s"
-msgstr ""
-
-#: src/nm.c:456
-#, c-format
-msgid "%s in %s\n"
-msgstr ""
-
-#: src/nm.c:464
-#, c-format
-msgid "cannot reset archive offset to beginning"
-msgstr ""
-
-#: src/nm.c:488 src/objdump.c:344
-#, c-format
-msgid "%s%s%s: file format not recognized"
-msgstr ""
-
-#: src/nm.c:700
-#, c-format
-msgid "cannot create search tree"
-msgstr ""
-
-#: src/nm.c:740 src/nm.c:1002 src/objdump.c:744 src/readelf.c:885
-#: src/readelf.c:1028 src/readelf.c:1169 src/readelf.c:1351 src/readelf.c:1549
-#: src/readelf.c:1735 src/readelf.c:1945 src/readelf.c:2199 src/readelf.c:2265
-#: src/readelf.c:2343 src/readelf.c:2841 src/readelf.c:2877 src/readelf.c:2939
-#: src/readelf.c:6493 src/readelf.c:7387 src/readelf.c:7534 src/readelf.c:7604
-#: src/size.c:425 src/size.c:499 src/strip.c:483
-#, c-format
-msgid "cannot get section header string table index"
-msgstr ""
-
-#: src/nm.c:766
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:768
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:771
-#, c-format
-msgid ""
-"%*s%-*s %-*s Class Type %-*s %*s Section\n"
-"\n"
-msgstr ""
-
-#: src/nm.c:1012
-#, c-format
-msgid "%s: entry size in section `%s' is not what we expect"
-msgstr ""
-
-#: src/nm.c:1016
-#, c-format
-msgid "%s: size of section `%s' is not multiple of entry size"
-msgstr ""
-
-#: src/nm.c:1255
-#, c-format
-msgid "%s%s%s%s: Invalid operation"
-msgstr ""
-
-#: src/nm.c:1312
-#, c-format
-msgid "%s%s%s: no symbols"
-msgstr ""
-
-#: src/objdump.c:61
-msgid "Mode selection:"
-msgstr ""
-
-#: src/objdump.c:62
-msgid "Display relocation information."
-msgstr ""
-
-#: src/objdump.c:64
-msgid "Display the full contents of all sections requested"
-msgstr ""
-
-#: src/objdump.c:66
-msgid "Display assembler code of executable sections"
-msgstr ""
-
-#: src/objdump.c:68
-msgid "Output option selection:"
-msgstr ""
-
-#: src/objdump.c:70
-msgid "Only display information for section NAME."
-msgstr ""
-
-#: src/objdump.c:76
-msgid "Show information from FILEs (a.out by default)."
-msgstr ""
-
-#: src/objdump.c:236 src/readelf.c:430
-msgid "No operation specified.\n"
-msgstr ""
-
-#: src/objdump.c:274 src/objdump.c:286
-#, c-format
-msgid "while close `%s'"
-msgstr ""
-
-#: src/objdump.c:379 src/readelf.c:1644 src/readelf.c:1818
-msgid "INVALID SYMBOL"
-msgstr ""
-
-#: src/objdump.c:394 src/readelf.c:1675 src/readelf.c:1851
-msgid "INVALID SECTION"
-msgstr ""
-
-#: src/objdump.c:510
-#, c-format
-msgid ""
-"\n"
-"RELOCATION RECORDS FOR [%s]:\n"
-"%-*s TYPE VALUE\n"
-msgstr ""
-
-#: src/objdump.c:513
-msgid "OFFSET"
-msgstr ""
-
-#: src/objdump.c:576
-#, c-format
-msgid "Contents of section %s:\n"
-msgstr ""
-
-#: src/objdump.c:676
-#, c-format
-msgid "cannot disassemble"
-msgstr ""
-
-#: src/ranlib.c:74
-msgid "Generate an index to speed access to archives."
-msgstr ""
-
-#: src/ranlib.c:77
-msgid "ARCHIVE"
-msgstr ""
-
-#: src/ranlib.c:116
-#, c-format
-msgid "Archive name required"
-msgstr ""
-
-#: src/ranlib.c:194
-#, c-format
-msgid "'%s' is no archive"
-msgstr ""
-
-#: src/ranlib.c:229
-#, c-format
-msgid "error while freeing sub-ELF descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:73
-msgid "ELF output selection:"
-msgstr ""
-
-#: src/readelf.c:75
-msgid "All these plus -p .strtab -p .dynstr -p .comment"
-msgstr ""
-
-#: src/readelf.c:76
-msgid "Display the dynamic segment"
-msgstr ""
-
-#: src/readelf.c:77
-msgid "Display the ELF file header"
-msgstr ""
-
-#: src/readelf.c:79
-msgid "Display histogram of bucket list lengths"
-msgstr ""
-
-#: src/readelf.c:80
-msgid "Display the program headers"
-msgstr ""
-
-#: src/readelf.c:82
-msgid "Display relocations"
-msgstr ""
-
-#: src/readelf.c:83
-msgid "Display the sections' headers"
-msgstr ""
-
-#: src/readelf.c:85
-msgid "Display the symbol table"
-msgstr ""
-
-#: src/readelf.c:86
-msgid "Display versioning information"
-msgstr ""
-
-#: src/readelf.c:87
-msgid "Display the ELF notes"
-msgstr ""
-
-#: src/readelf.c:89
-msgid "Display architecture specific information, if any"
-msgstr ""
-
-#: src/readelf.c:91
-msgid "Display sections for exception handling"
-msgstr ""
-
-#: src/readelf.c:93
-msgid "Additional output selection:"
-msgstr ""
-
-#: src/readelf.c:95
-msgid ""
-"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, info, loc, line, ranges, pubnames, str, macinfo, or exception"
-msgstr ""
-
-#: src/readelf.c:99
-msgid "Dump the uninterpreted contents of SECTION, by number or name"
-msgstr ""
-
-#: src/readelf.c:101
-msgid "Print string contents of sections"
-msgstr ""
-
-#: src/readelf.c:104
-msgid "Display the symbol index of an archive"
-msgstr ""
-
-#: src/readelf.c:106
-msgid "Output control:"
-msgstr ""
-
-#: src/readelf.c:108
-msgid "Do not find symbol names for addresses in DWARF data"
-msgstr ""
-
-#: src/readelf.c:114
-msgid "Print information from ELF file in human-readable form."
-msgstr ""
-
-#: src/readelf.c:401
-#, c-format
-msgid "Unknown DWARF debug section `%s'.\n"
-msgstr ""
-
-#: src/readelf.c:465
-#, c-format
-msgid "cannot generate Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:477
-#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr ""
-
-#: src/readelf.c:482
-#, c-format
-msgid "error while closing Elf descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:574
-#, c-format
-msgid "cannot stat input file"
-msgstr ""
-
-#: src/readelf.c:576
-#, c-format
-msgid "input file is empty"
-msgstr ""
-
-#: src/readelf.c:578
-#, c-format
-msgid "failed reading '%s': %s"
-msgstr ""
-
-#: src/readelf.c:614
-#, c-format
-msgid "cannot read ELF header: %s"
-msgstr ""
-
-#: src/readelf.c:622
-#, c-format
-msgid "cannot create EBL handle"
-msgstr ""
-
-#: src/readelf.c:635
-#, c-format
-msgid "cannot determine number of program headers: %s"
-msgstr ""
-
-#: src/readelf.c:721
-msgid "NONE (None)"
-msgstr ""
-
-#: src/readelf.c:722
-msgid "REL (Relocatable file)"
-msgstr ""
-
-#: src/readelf.c:723
-msgid "EXEC (Executable file)"
-msgstr ""
-
-#: src/readelf.c:724
-msgid "DYN (Shared object file)"
-msgstr ""
-
-#: src/readelf.c:725
-msgid "CORE (Core file)"
-msgstr ""
-
-#: src/readelf.c:730
-#, c-format
-msgid "OS Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:732
-#, c-format
-msgid "Processor Specific: (%x)\n"
-msgstr ""
-
-#: src/readelf.c:742
-msgid ""
-"ELF Header:\n"
-" Magic: "
-msgstr ""
-
-#: src/readelf.c:746
-#, c-format
-msgid ""
-"\n"
-" Class: %s\n"
-msgstr ""
-
-#: src/readelf.c:751
-#, c-format
-msgid " Data: %s\n"
-msgstr ""
-
-#: src/readelf.c:757
-#, c-format
-msgid " Ident Version: %hhd %s\n"
-msgstr ""
-
-#: src/readelf.c:759 src/readelf.c:776
-msgid "(current)"
-msgstr ""
-
-#: src/readelf.c:763
-#, c-format
-msgid " OS/ABI: %s\n"
-msgstr ""
-
-#: src/readelf.c:766
-#, c-format
-msgid " ABI Version: %hhd\n"
-msgstr ""
-
-#: src/readelf.c:769
-msgid " Type: "
-msgstr ""
-
-#: src/readelf.c:772
-#, c-format
-msgid " Machine: %s\n"
-msgstr ""
-
-#: src/readelf.c:774
-#, c-format
-msgid " Version: %d %s\n"
-msgstr ""
-
-#: src/readelf.c:778
-#, c-format
-msgid " Entry point address: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:781
-#, c-format
-msgid " Start of program headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:782 src/readelf.c:785
-msgid "(bytes into file)"
-msgstr ""
-
-#: src/readelf.c:784
-#, c-format
-msgid " Start of section headers: %<PRId64> %s\n"
-msgstr ""
-
-#: src/readelf.c:787
-#, c-format
-msgid " Flags: %s\n"
-msgstr ""
-
-#: src/readelf.c:790
-#, c-format
-msgid " Size of this header: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:791 src/readelf.c:794 src/readelf.c:811
-msgid "(bytes)"
-msgstr ""
-
-#: src/readelf.c:793
-#, c-format
-msgid " Size of program header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:796
-#, c-format
-msgid " Number of program headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:803
-#, c-format
-msgid " (%<PRIu32> in [0].sh_info)"
-msgstr ""
-
-#: src/readelf.c:806 src/readelf.c:823 src/readelf.c:837
-msgid " ([0] not available)"
-msgstr ""
-
-#: src/readelf.c:810
-#, c-format
-msgid " Size of section header entries: %<PRId16> %s\n"
-msgstr ""
-
-#: src/readelf.c:813
-#, c-format
-msgid " Number of section headers entries: %<PRId16>"
-msgstr ""
-
-#: src/readelf.c:820
-#, c-format
-msgid " (%<PRIu32> in [0].sh_size)"
-msgstr ""
-
-#: src/readelf.c:833
-#, c-format
-msgid " (%<PRIu32> in [0].sh_link)"
-msgstr ""
-
-#: src/readelf.c:841
-#, c-format
-msgid ""
-" Section header string table index: XINDEX%s\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:845
-#, c-format
-msgid ""
-" Section header string table index: %<PRId16>\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:877
-#, c-format
-msgid ""
-"There are %d section headers, starting at offset %#<PRIx64>:\n"
-"\n"
-msgstr ""
-
-#: src/readelf.c:887
-msgid "Section Headers:"
-msgstr ""
-
-#: src/readelf.c:890
-msgid ""
-"[Nr] Name Type Addr Off Size ES Flags Lk "
-"Inf Al"
-msgstr ""
-
-#: src/readelf.c:892
-msgid ""
-"[Nr] Name Type Addr Off Size ES "
-"Flags Lk Inf Al"
-msgstr ""
-
-#: src/readelf.c:899 src/readelf.c:1052
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:906 src/readelf.c:1060 src/readelf.c:7554 src/unstrip.c:353
-#: src/unstrip.c:377 src/unstrip.c:427 src/unstrip.c:536 src/unstrip.c:553
-#: src/unstrip.c:591 src/unstrip.c:789 src/unstrip.c:1057 src/unstrip.c:1244
-#: src/unstrip.c:1305 src/unstrip.c:1427 src/unstrip.c:1480 src/unstrip.c:1588
-#: src/unstrip.c:1778
-#, c-format
-msgid "cannot get section header: %s"
-msgstr ""
-
-#: src/readelf.c:964
-msgid "Program Headers:"
-msgstr ""
-
-#: src/readelf.c:966
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:969
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz "
-"MemSiz Flg Align"
-msgstr ""
-
-#: src/readelf.c:1009
-#, c-format
-msgid "\t[Requesting program interpreter: %s]\n"
-msgstr ""
-
-#: src/readelf.c:1030
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-" Segment Sections..."
-msgstr ""
-
-#: src/readelf.c:1041 src/unstrip.c:1824 src/unstrip.c:1863 src/unstrip.c:1870
-#, c-format
-msgid "cannot get program header: %s"
-msgstr ""
-
-#: src/readelf.c:1175
-#, c-format
-msgid ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1180
-#, c-format
-msgid ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"Section group [%2zu] '%s' with signature '%s' contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1188
-msgid "<INVALID SYMBOL>"
-msgstr ""
-
-#: src/readelf.c:1202
-msgid "<INVALID SECTION>"
-msgstr ""
-
-#: src/readelf.c:1353
-#, c-format
-msgid ""
-"\n"
-"Dynamic segment contains %lu entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Dynamic segment contains %lu entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1365
-msgid " Type Value\n"
-msgstr ""
-
-#: src/readelf.c:1389
-#, c-format
-msgid "Shared library: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1394
-#, c-format
-msgid "Library soname: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1399
-#, c-format
-msgid "Library rpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1404
-#, c-format
-msgid "Library runpath: [%s]\n"
-msgstr ""
-
-#: src/readelf.c:1424
-#, c-format
-msgid "%<PRId64> (bytes)\n"
-msgstr ""
-
-#: src/readelf.c:1534 src/readelf.c:1720
-#, c-format
-msgid ""
-"\n"
-"Invalid symbol table at offset %#0<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:1552 src/readelf.c:1737
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> "
-"contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1567
-#, c-format
-msgid ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1577
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1579
-msgid " Offset Type Value Name\n"
-msgstr ""
-
-#: src/readelf.c:1632 src/readelf.c:1643 src/readelf.c:1656 src/readelf.c:1674
-#: src/readelf.c:1686 src/readelf.c:1805 src/readelf.c:1817 src/readelf.c:1831
-#: src/readelf.c:1850 src/readelf.c:1863
-msgid "<INVALID RELOC>"
-msgstr ""
-
-#: src/readelf.c:1749
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1751
-msgid " Offset Type Value Addend Name\n"
-msgstr ""
-
-#: src/readelf.c:1952
-#, c-format
-msgid ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entry:\n"
-msgid_plural ""
-"\n"
-"Symbol table [%2u] '%s' contains %u entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1958
-#, c-format
-msgid " %lu local symbol String table: [%2u] '%s'\n"
-msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:1968
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1970
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: src/readelf.c:1990
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr ""
-
-#: src/readelf.c:2078
-#, c-format
-msgid "bad dynamic symbol"
-msgstr ""
-
-#: src/readelf.c:2160
-msgid "none"
-msgstr ""
-
-#: src/readelf.c:2177
-msgid "| <unknown>"
-msgstr ""
-
-#: src/readelf.c:2202
-#, c-format
-msgid ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version needs section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2225
-#, c-format
-msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2238
-#, c-format
-msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
-msgstr ""
-
-#: src/readelf.c:2269
-#, c-format
-msgid ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Version definition section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2299
-#, c-format
-msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
-msgstr ""
-
-#: src/readelf.c:2314
-#, c-format
-msgid " %#06x: Parent %d: %s\n"
-msgstr ""
-
-#: src/readelf.c:2546
-#, c-format
-msgid ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgid_plural ""
-"\n"
-"Version symbols section [%2u] '%s' contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2576
-msgid " 0 *local* "
-msgstr ""
-
-#: src/readelf.c:2581
-msgid " 1 *global* "
-msgstr ""
-
-#: src/readelf.c:2612
-#, c-format
-msgid ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"bucket):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgid_plural ""
-"\n"
-"Histogram for bucket list length in section [%2u] '%s' (total of %d "
-"buckets):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2636
-#, no-c-format
-msgid " Length Number % of total Coverage\n"
-msgstr ""
-
-#: src/readelf.c:2638
-#, c-format
-msgid " 0 %6<PRIu32> %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2645
-#, c-format
-msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-msgstr ""
-
-#: src/readelf.c:2658
-#, c-format
-msgid ""
-" Average number of tests: successful lookup: %f\n"
-" unsuccessful lookup: %f\n"
-msgstr ""
-
-#: src/readelf.c:2676 src/readelf.c:2718 src/readelf.c:2759
-#, c-format
-msgid "cannot get data for section %d: %s"
-msgstr ""
-
-#: src/readelf.c:2813
-#, c-format
-msgid ""
-" Symbol Bias: %u\n"
-" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
-msgstr ""
-
-#: src/readelf.c:2887
-#, c-format
-msgid ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entry:\n"
-msgid_plural ""
-"\n"
-"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:2901
-msgid ""
-" Library Time Stamp Checksum Version "
-"Flags"
-msgstr ""
-
-#: src/readelf.c:2951
-#, c-format
-msgid ""
-"\n"
-"Object attributes section [%2zu] '%s' of %<PRIu64> bytes at offset %"
-"#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:2967
-msgid " Owner Size\n"
-msgstr ""
-
-#: src/readelf.c:2993
-#, c-format
-msgid " %-13s %4<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3025
-#, c-format
-msgid " %-4u %12<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3030
-#, c-format
-msgid " File: %11<PRIu32>\n"
-msgstr ""
-
-#: src/readelf.c:3065
-#, c-format
-msgid " %s: %<PRId64>, %s\n"
-msgstr ""
-
-#: src/readelf.c:3068
-#, c-format
-msgid " %s: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3071
-#, c-format
-msgid " %s: %s\n"
-msgstr ""
-
-#: src/readelf.c:3078
-#, c-format
-msgid " %u: %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:3081
-#, c-format
-msgid " %u: %s\n"
-msgstr ""
-
-#: src/readelf.c:3117
-#, c-format
-msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3120
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3125
-#, c-format
-msgid "%#<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3128
-#, c-format
-msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
-msgstr ""
-
-#: src/readelf.c:3134
-#, c-format
-msgid "%s+%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3137
-#, c-format
-msgid "%s+%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3141
-#, c-format
-msgid "%#<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3144
-#, c-format
-msgid "%#0*<PRIx64> <%s>"
-msgstr ""
-
-#: src/readelf.c:3149
-#, c-format
-msgid "%s+%#<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3152
-#, c-format
-msgid "%s+%#0*<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3260
-#, c-format
-msgid "unknown tag %hx"
-msgstr ""
-
-#: src/readelf.c:3262
-#, c-format
-msgid "unknown user tag %hx"
-msgstr ""
-
-#: src/readelf.c:3480
-#, c-format
-msgid "unknown attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3483
-#, c-format
-msgid "unknown user attribute %hx"
-msgstr ""
-
-#: src/readelf.c:3529
-#, c-format
-msgid "unknown form %<PRIx64>"
-msgstr ""
-
-#: src/readelf.c:3763
-msgid "empty block"
-msgstr ""
-
-#: src/readelf.c:3766
-#, c-format
-msgid "%zu byte block:"
-msgstr ""
-
-#: src/readelf.c:4175
-#, c-format
-msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-msgstr ""
-
-#: src/readelf.c:4188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [ Code]\n"
-msgstr ""
-
-#: src/readelf.c:4195
-#, c-format
-msgid ""
-"\n"
-"Abbreviation section at offset %<PRIu64>:\n"
-msgstr ""
-
-#: src/readelf.c:4208
-#, c-format
-msgid " *** error while reading abbreviation: %s\n"
-msgstr ""
-
-#: src/readelf.c:4224
-#, c-format
-msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "yes"
-msgstr ""
-
-#: src/readelf.c:4227
-msgid "no"
-msgstr ""
-
-#: src/readelf.c:4263
-#, c-format
-msgid "cannot get .debug_aranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4268
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entry:\n"
-msgid_plural ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64> contains %zu entries:\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:4298
-#, c-format
-msgid " [%*zu] ???\n"
-msgstr ""
-
-#: src/readelf.c:4300
-#, c-format
-msgid ""
-" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:4319
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ""
-
-#: src/readelf.c:4324 src/readelf.c:4810 src/readelf.c:5452 src/readelf.c:5897
-#: src/readelf.c:5992 src/readelf.c:6164
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4338 src/readelf.c:5911
-#, c-format
-msgid " [%6tx] <INVALID DATA>\n"
-msgstr ""
-
-#: src/readelf.c:4360 src/readelf.c:5933
-#, c-format
-msgid " [%6tx] base address %s\n"
-msgstr ""
-
-#: src/readelf.c:4371
-#, c-format
-msgid " [%6tx] %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4373
-#, c-format
-msgid " %s..%s\n"
-msgstr ""
-
-#: src/readelf.c:4799 src/readelf.c:6230 src/readelf.c:6332
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr ""
-
-#: src/readelf.c:4806
-#, c-format
-msgid ""
-"\n"
-"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:4833 src/readelf.c:5486
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:4855
-#, c-format
-msgid ""
-"\n"
-" [%6tx] Zero terminator\n"
-msgstr ""
-
-#: src/readelf.c:4924
-#, c-format
-msgid "invalid augmentation length"
-msgstr ""
-
-#: src/readelf.c:4936
-msgid "FDE address encoding: "
-msgstr ""
-
-#: src/readelf.c:4942
-msgid "LSDA pointer encoding: "
-msgstr ""
-
-#: src/readelf.c:5034
-#, c-format
-msgid " (offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5041
-#, c-format
-msgid " (end offset: %#<PRIx64>)"
-msgstr ""
-
-#: src/readelf.c:5068
-#, c-format
-msgid " %-26sLSDA pointer: %#<PRIx64>\n"
-msgstr ""
-
-#: src/readelf.c:5114
-#, c-format
-msgid "cannot get attribute code: %s"
-msgstr ""
-
-#: src/readelf.c:5122
-#, c-format
-msgid "cannot get attribute form: %s"
-msgstr ""
-
-#: src/readelf.c:5135
-#, c-format
-msgid "cannot get attribute value: %s"
-msgstr ""
-
-#: src/readelf.c:5331
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" [Offset]\n"
-msgstr ""
-
-#: src/readelf.c:5356
-#, c-format
-msgid ""
-" Compilation unit at offset %<PRIu64>:\n"
-" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: %"
-"<PRIu8>, Offset size: %<PRIu8>\n"
-msgstr ""
-
-#: src/readelf.c:5374
-#, c-format
-msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5385
-#, c-format
-msgid "cannot get DIE offset: %s"
-msgstr ""
-
-#: src/readelf.c:5393
-#, c-format
-msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
-msgstr ""
-
-#: src/readelf.c:5422
-#, c-format
-msgid "cannot get next DIE: %s\n"
-msgstr ""
-
-#: src/readelf.c:5429
-#, c-format
-msgid "cannot get next DIE: %s"
-msgstr ""
-
-#: src/readelf.c:5464
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr ""
-
-#: src/readelf.c:5477
-#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
-msgstr ""
-
-#: src/readelf.c:5529
-#, c-format
-msgid ""
-"\n"
-" Length: %<PRIu64>\n"
-" DWARF version: %<PRIuFAST16>\n"
-" Prologue length: %<PRIu64>\n"
-" Minimum instruction length: %<PRIuFAST8>\n"
-" Initial value if '%s': %<PRIuFAST8>\n"
-" Line base: %<PRIdFAST8>\n"
-" Line range: %<PRIuFAST8>\n"
-" Opcode base: %<PRIuFAST8>\n"
-"\n"
-"Opcodes:\n"
-msgstr ""
-
-#: src/readelf.c:5548
-#, c-format
-msgid "invalid data at offset %tu in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:5563
-#, c-format
-msgid " [%*<PRIuFAST8>] %hhu argument\n"
-msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5571
-msgid ""
-"\n"
-"Directory table:"
-msgstr ""
-
-#: src/readelf.c:5587
-msgid ""
-"\n"
-"File name table:\n"
-" Entry Dir Time Size Name"
-msgstr ""
-
-#: src/readelf.c:5616
-msgid ""
-"\n"
-"Line number statements:"
-msgstr ""
-
-#: src/readelf.c:5677
-#, c-format
-msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
-msgstr ""
-
-#: src/readelf.c:5697
-#, c-format
-msgid " extended opcode %u: "
-msgstr ""
-
-#: src/readelf.c:5702
-msgid "end of sequence"
-msgstr ""
-
-#: src/readelf.c:5717
-#, c-format
-msgid "set address to %s\n"
-msgstr ""
-
-#: src/readelf.c:5738
-#, c-format
-msgid "define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
-msgstr ""
-
-#: src/readelf.c:5747
-msgid "unknown opcode"
-msgstr ""
-
-#: src/readelf.c:5759
-msgid " copy"
-msgstr ""
-
-#: src/readelf.c:5769
-#, c-format
-msgid "advance address by %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5780
-#, c-format
-msgid " advance line by constant %d to %<PRId64>\n"
-msgstr ""
-
-#: src/readelf.c:5788
-#, c-format
-msgid " set file to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5798
-#, c-format
-msgid " set column to %<PRIu64>\n"
-msgstr ""
-
-#: src/readelf.c:5805
-#, c-format
-msgid " set '%s' to %<PRIuFAST8>\n"
-msgstr ""
-
-#: src/readelf.c:5811
-msgid " set basic block flag"
-msgstr ""
-
-#: src/readelf.c:5821
-#, c-format
-msgid "advance address by constant %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5837
-#, c-format
-msgid "advance address by fixed value %u to %s\n"
-msgstr ""
-
-#: src/readelf.c:5846
-msgid " set prologue end flag"
-msgstr ""
-
-#: src/readelf.c:5851
-msgid " set epilogue begin flag"
-msgstr ""
-
-#: src/readelf.c:5860
-#, c-format
-msgid " unknown opcode with %<PRIu8> parameter:"
-msgid_plural " unknown opcode with %<PRIu8> parameters:"
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/readelf.c:5892
-#, c-format
-msgid "cannot get .debug_loc content: %s"
-msgstr ""
-
-#: src/readelf.c:5947
-#, c-format
-msgid " [%6tx] %s..%s"
-msgstr ""
-
-#: src/readelf.c:5949
-#, c-format
-msgid " %s..%s"
-msgstr ""
-
-#: src/readelf.c:6002
-#, c-format
-msgid "cannot get macro information section data: %s"
-msgstr ""
-
-#: src/readelf.c:6081
-#, c-format
-msgid "%*s*** non-terminated string at end of section"
-msgstr ""
-
-#: src/readelf.c:6149
-#, c-format
-msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
-msgstr ""
-
-#: src/readelf.c:6188
-#, c-format
-msgid ""
-"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-" %*s String\n"
-msgstr ""
-
-#: src/readelf.c:6202
-#, c-format
-msgid " *** error while reading strings: %s\n"
-msgstr ""
-
-#: src/readelf.c:6222
-#, c-format
-msgid ""
-"\n"
-"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
-msgstr ""
-
-#: src/readelf.c:6324
-#, c-format
-msgid ""
-"\n"
-"Exception handling table section [%2zu] '.gcc_except_table':\n"
-msgstr ""
-
-#: src/readelf.c:6347
-#, c-format
-msgid " LPStart encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6359
-#, c-format
-msgid " TType encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6373
-#, c-format
-msgid " Call site encoding: %#x "
-msgstr ""
-
-#: src/readelf.c:6386
-msgid ""
-"\n"
-" Call site table:"
-msgstr ""
-
-#: src/readelf.c:6400
-#, c-format
-msgid ""
-" [%4u] Call site start: %#<PRIx64>\n"
-" Call site length: %<PRIu64>\n"
-" Landing pad: %#<PRIx64>\n"
-" Action: %u\n"
-msgstr ""
-
-#: src/readelf.c:6460
-#, c-format
-msgid "invalid TType encoding"
-msgstr ""
-
-#: src/readelf.c:6484
-#, c-format
-msgid "cannot get debug context descriptor: %s"
-msgstr ""
-
-#: src/readelf.c:6620 src/readelf.c:7221
-#, c-format
-msgid "cannot convert core note data: %s"
-msgstr ""
-
-#: src/readelf.c:6961
-#, c-format
-msgid ""
-"\n"
-"%*s... <repeats %u more times> ..."
-msgstr ""
-
-#: src/readelf.c:7320
-msgid " Owner Data size Type\n"
-msgstr ""
-
-#: src/readelf.c:7338
-#, c-format
-msgid " %-13.*s %9<PRId32> %s\n"
-msgstr ""
-
-#: src/readelf.c:7372
-#, c-format
-msgid "cannot get content of note section: %s"
-msgstr ""
-
-#: src/readelf.c:7399
-#, c-format
-msgid ""
-"\n"
-"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7422
-#, c-format
-msgid ""
-"\n"
-"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7468
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no data to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7474 src/readelf.c:7497
-#, c-format
-msgid "cannot get data for section [%Zu] '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7478
-#, c-format
-msgid ""
-"\n"
-"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7491
-#, c-format
-msgid ""
-"\n"
-"Section [%Zu] '%s' has no strings to dump.\n"
-msgstr ""
-
-#: src/readelf.c:7501
-#, c-format
-msgid ""
-"\n"
-"String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-msgstr ""
-
-#: src/readelf.c:7549
-#, c-format
-msgid ""
-"\n"
-"section [%lu] does not exist"
-msgstr ""
-
-#: src/readelf.c:7576
-#, c-format
-msgid ""
-"\n"
-"section '%s' does not exist"
-msgstr ""
-
-#: src/readelf.c:7637
-#, c-format
-msgid "cannot get symbol index of archive '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7640
-#, c-format
-msgid ""
-"\n"
-"Archive '%s' has no symbol index\n"
-msgstr ""
-
-#: src/readelf.c:7644
-#, c-format
-msgid ""
-"\n"
-"Index of archive '%s' has %Zu entries:\n"
-msgstr ""
-
-#: src/readelf.c:7662
-#, c-format
-msgid "cannot extract member at offset %Zu in '%s': %s"
-msgstr ""
-
-#: src/readelf.c:7667
-#, c-format
-msgid "Archive member '%s' contains:\n"
-msgstr ""
-
-#: src/size.c:68
-msgid ""
-"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default "
-"is `bsd'"
-msgstr ""
-
-#: src/size.c:70
-msgid "Same as `--format=sysv'"
-msgstr ""
-
-#: src/size.c:71
-msgid "Same as `--format=bsd'"
-msgstr ""
-
-#: src/size.c:74
-msgid "Same as `--radix=10'"
-msgstr ""
-
-#: src/size.c:75
-msgid "Same as `--radix=8'"
-msgstr ""
-
-#: src/size.c:76
-msgid "Same as `--radix=16'"
-msgstr ""
-
-#: src/size.c:78
-msgid "Similar to `--format=sysv' output but in one line"
-msgstr ""
-
-#: src/size.c:82
-msgid "Print size and permission flags for loadable segments"
-msgstr ""
-
-#: src/size.c:83
-msgid "Display the total sizes (bsd only)"
-msgstr ""
-
-#: src/size.c:88
-msgid "List section sizes of FILEs (a.out by default)."
-msgstr ""
-
-#: src/size.c:269
-#, c-format
-msgid "Invalid format: %s"
-msgstr ""
-
-#: src/size.c:280
-#, c-format
-msgid "Invalid radix: %s"
-msgstr ""
-
-#: src/size.c:339
-#, c-format
-msgid "%s: file format not recognized"
-msgstr ""
-
-#: src/size.c:446 src/size.c:589
-#, c-format
-msgid " (ex %s)"
-msgstr ""
-
-#: src/size.c:614
-msgid "(TOTALS)\n"
-msgstr ""
-
-#: src/strings.c:70
-msgid "Output Selection:"
-msgstr ""
-
-#: src/strings.c:71
-msgid "Scan entire file, not only loaded sections"
-msgstr ""
-
-#: src/strings.c:73
-msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed"
-msgstr ""
-
-#: src/strings.c:74
-msgid ""
-"Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, "
-"{B,L} = 32-bit"
-msgstr ""
-
-#: src/strings.c:78
-msgid "Print name of the file before each string."
-msgstr ""
-
-#: src/strings.c:80
-msgid "Print location of the string in base 8, 10, or 16 respectively."
-msgstr ""
-
-#: src/strings.c:81
-msgid "Alias for --radix=o"
-msgstr ""
-
-#: src/strings.c:88
-msgid "Print the strings of printable characters in files."
-msgstr ""
-
-#: src/strings.c:268 src/strings.c:303
-#, c-format
-msgid "invalid value '%s' for %s parameter"
-msgstr ""
-
-#: src/strings.c:314
-#, c-format
-msgid "invalid minimum length of matched string size"
-msgstr ""
-
-#: src/strings.c:601
-#, c-format
-msgid "lseek64 failed"
-msgstr ""
-
-#: src/strings.c:616 src/strings.c:680
-#, c-format
-msgid "re-mmap failed"
-msgstr ""
-
-#: src/strings.c:653
-#, c-format
-msgid "mprotect failed"
-msgstr ""
-
-#: src/strip.c:74
-msgid "Place stripped output into FILE"
-msgstr ""
-
-#: src/strip.c:75
-msgid "Extract the removed sections into FILE"
-msgstr ""
-
-#: src/strip.c:76
-msgid "Embed name FILE instead of -f argument"
-msgstr ""
-
-#: src/strip.c:80
-msgid "Remove all debugging symbols"
-msgstr ""
-
-#: src/strip.c:84
-msgid "Copy modified/access timestamps to the output"
-msgstr ""
-
-#: src/strip.c:86
-msgid "Remove .comment section"
-msgstr ""
-
-#: src/strip.c:89
-msgid "Relax a few rules to handle slightly broken ELF files"
-msgstr ""
-
-#: src/strip.c:94
-msgid "Discard symbols from object files."
-msgstr ""
-
-#: src/strip.c:186
-#, c-format
-msgid "Only one input file allowed together with '-o' and '-f'"
-msgstr ""
-
-#: src/strip.c:222
-#, c-format
-msgid "-f option specified twice"
-msgstr ""
-
-#: src/strip.c:231
-#, c-format
-msgid "-F option specified twice"
-msgstr ""
-
-#: src/strip.c:240 src/unstrip.c:125
-#, c-format
-msgid "-o option specified twice"
-msgstr ""
-
-#: src/strip.c:260
-#, c-format
-msgid "-R option supports only .comment section"
-msgstr ""
-
-#: src/strip.c:298 src/strip.c:322
-#, c-format
-msgid "cannot stat input file '%s'"
-msgstr ""
-
-#: src/strip.c:312
-#, c-format
-msgid "while opening '%s'"
-msgstr ""
-
-#: src/strip.c:350
-#, c-format
-msgid "%s: cannot use -o or -f when stripping archive"
-msgstr ""
-
-#: src/strip.c:448
-#, c-format
-msgid "cannot open EBL backend"
-msgstr ""
-
-#: src/strip.c:498 src/strip.c:522
-#, c-format
-msgid "cannot create new file '%s': %s"
-msgstr ""
-
-#: src/strip.c:582
-#, c-format
-msgid "illformed file '%s'"
-msgstr ""
-
-#: src/strip.c:869 src/strip.c:956
-#, c-format
-msgid "while generating output file: %s"
-msgstr ""
-
-#: src/strip.c:929 src/strip.c:1668
-#, c-format
-msgid "%s: error while creating ELF header: %s"
-msgstr ""
-
-#: src/strip.c:943
-#, c-format
-msgid "while preparing output for '%s'"
-msgstr ""
-
-#: src/strip.c:994 src/strip.c:1050
-#, c-format
-msgid "while create section header section: %s"
-msgstr ""
-
-#: src/strip.c:1000
-#, c-format
-msgid "cannot allocate section data: %s"
-msgstr ""
-
-#: src/strip.c:1059
-#, c-format
-msgid "while create section header string table: %s"
-msgstr ""
-
-#: src/strip.c:1593 src/strip.c:1690
-#, c-format
-msgid "while writing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1604
-#, c-format
-msgid "while creating '%s'"
-msgstr ""
-
-#: src/strip.c:1616
-#, c-format
-msgid "while computing checksum for debug information"
-msgstr ""
-
-#: src/strip.c:1676
-#, c-format
-msgid "%s: error while reading the file: %s"
-msgstr ""
-
-#: src/strip.c:1722 src/strip.c:1729
-#, c-format
-msgid "error while finishing '%s': %s"
-msgstr ""
-
-#: src/strip.c:1752 src/strip.c:1809
-#, c-format
-msgid "cannot set access and modification date of '%s'"
-msgstr ""
-
-#: src/unstrip.c:78
-msgid "Match MODULE against file names, not module names"
-msgstr ""
-
-#: src/unstrip.c:79
-msgid "Silently skip unfindable files"
-msgstr ""
-
-#: src/unstrip.c:82
-msgid "Place output into FILE"
-msgstr ""
-
-#: src/unstrip.c:84
-msgid "Create multiple output files under DIRECTORY"
-msgstr ""
-
-#: src/unstrip.c:85
-msgid "Use module rather than file names"
-msgstr ""
-
-#: src/unstrip.c:87
-msgid "Create output for modules that have no separate debug information"
-msgstr ""
-
-#: src/unstrip.c:90
-msgid "Apply relocations to section contents in ET_REL files"
-msgstr ""
-
-#: src/unstrip.c:92
-msgid "Only list module and file names, build IDs"
-msgstr ""
-
-#: src/unstrip.c:134
-#, c-format
-msgid "-d option specified twice"
-msgstr ""
-
-#: src/unstrip.c:166
-#, c-format
-msgid "only one of -o or -d allowed"
-msgstr ""
-
-#: src/unstrip.c:175
-#, c-format
-msgid "-n cannot be used with explicit files or -o or -d"
-msgstr ""
-
-#: src/unstrip.c:190
-#, c-format
-msgid "output directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:199
-#, c-format
-msgid "exactly two file arguments are required"
-msgstr ""
-
-#: src/unstrip.c:205
-#, c-format
-msgid "-m, -a, -R, and -i options not allowed with explicit files"
-msgstr ""
-
-#: src/unstrip.c:218
-#, c-format
-msgid "-o or -d is required when using implicit files"
-msgstr ""
-
-#: src/unstrip.c:254
-#, c-format
-msgid "cannot create ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:259
-#, c-format
-msgid "cannot copy ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:264 src/unstrip.c:1817
-#, c-format
-msgid "cannot create program headers: %s"
-msgstr ""
-
-#: src/unstrip.c:270
-#, c-format
-msgid "cannot copy program header: %s"
-msgstr ""
-
-#: src/unstrip.c:280
-#, c-format
-msgid "cannot copy section header: %s"
-msgstr ""
-
-#: src/unstrip.c:283 src/unstrip.c:1505
-#, c-format
-msgid "cannot get section data: %s"
-msgstr ""
-
-#: src/unstrip.c:285 src/unstrip.c:1507
-#, c-format
-msgid "cannot copy section data: %s"
-msgstr ""
-
-#: src/unstrip.c:309
-#, c-format
-msgid "cannot create directory '%s'"
-msgstr ""
-
-#: src/unstrip.c:349 src/unstrip.c:763 src/unstrip.c:1540
-#, c-format
-msgid "cannot get symbol table entry: %s"
-msgstr ""
-
-#: src/unstrip.c:365 src/unstrip.c:580 src/unstrip.c:601 src/unstrip.c:613
-#: src/unstrip.c:1561 src/unstrip.c:1691 src/unstrip.c:1715
-#, c-format
-msgid "cannot update symbol table: %s"
-msgstr ""
-
-#: src/unstrip.c:382 src/unstrip.c:432 src/unstrip.c:562 src/unstrip.c:1209
-#: src/unstrip.c:1525 src/unstrip.c:1720 src/unstrip.c:1791
-#, c-format
-msgid "cannot update section header: %s"
-msgstr ""
-
-#: src/unstrip.c:408 src/unstrip.c:419
-#, c-format
-msgid "cannot update relocation: %s"
-msgstr ""
-
-#: src/unstrip.c:507
-#, c-format
-msgid "cannot get symbol version: %s"
-msgstr ""
-
-#: src/unstrip.c:519
-#, c-format
-msgid "unexpected section type in [%Zu] with sh_link to symtab"
-msgstr ""
-
-#: src/unstrip.c:769
-#, c-format
-msgid "invalid string offset in symbol [%Zu]"
-msgstr ""
-
-#: src/unstrip.c:911 src/unstrip.c:1248
-#, c-format
-msgid "cannot read section [%Zu] name: %s"
-msgstr ""
-
-#: src/unstrip.c:952 src/unstrip.c:971 src/unstrip.c:1004
-#, c-format
-msgid "cannot read '.gnu.prelink_undo' section: %s"
-msgstr ""
-
-#: src/unstrip.c:992
-#, c-format
-msgid "invalid contents in '%s' section"
-msgstr ""
-
-#: src/unstrip.c:1047 src/unstrip.c:1370
-#, c-format
-msgid "cannot find matching section for [%Zu] '%s'"
-msgstr ""
-
-#: src/unstrip.c:1171 src/unstrip.c:1186 src/unstrip.c:1451
-#, c-format
-msgid "cannot add section name to string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1195
-#, c-format
-msgid "cannot update section header string table data: %s"
-msgstr ""
-
-#: src/unstrip.c:1223 src/unstrip.c:1227
-#, c-format
-msgid "cannot get section header string table section index: %s"
-msgstr ""
-
-#: src/unstrip.c:1231 src/unstrip.c:1235 src/unstrip.c:1466
-#, c-format
-msgid "cannot get section count: %s"
-msgstr ""
-
-#: src/unstrip.c:1293 src/unstrip.c:1385
-#, c-format
-msgid "cannot read section header string table: %s"
-msgstr ""
-
-#: src/unstrip.c:1445
-#, c-format
-msgid "cannot add new section: %s"
-msgstr ""
-
-#: src/unstrip.c:1548
-#, c-format
-msgid "symbol [%Zu] has invalid section index"
-msgstr ""
-
-#: src/unstrip.c:1800
-#, c-format
-msgid "cannot get ELF header: %s"
-msgstr ""
-
-#: src/unstrip.c:1827
-#, c-format
-msgid "cannot update program header: %s"
-msgstr ""
-
-#: src/unstrip.c:1832 src/unstrip.c:1911
-#, c-format
-msgid "cannot write output file: %s"
-msgstr ""
-
-#: src/unstrip.c:1880
-#, c-format
-msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1883
-#, c-format
-msgid ""
-"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
-msgstr ""
-
-#: src/unstrip.c:1902 src/unstrip.c:1942 src/unstrip.c:1954 src/unstrip.c:2034
-#, c-format
-msgid "cannot create ELF descriptor: %s"
-msgstr ""
-
-#: src/unstrip.c:1960
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr ""
-
-#: src/unstrip.c:1991
-#, c-format
-msgid "cannot find stripped file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:1995
-#, c-format
-msgid "cannot open stripped file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2010
-#, c-format
-msgid "cannot find debug file for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2014
-#, c-format
-msgid "cannot open debug file '%s' for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2027
-#, c-format
-msgid "module '%s' file '%s' is not stripped"
-msgstr ""
-
-#: src/unstrip.c:2058
-#, c-format
-msgid "cannot cache section addresses for module '%s': %s"
-msgstr ""
-
-#: src/unstrip.c:2191
-#, c-format
-msgid "no matching modules found"
-msgstr ""
-
-#: src/unstrip.c:2200
-#, c-format
-msgid "matched more than one module"
-msgstr ""
-
-#: src/unstrip.c:2247
-msgid ""
-"STRIPPED-FILE DEBUG-FILE\n"
-"[MODULE...]"
-msgstr ""
-
-#: src/unstrip.c:2248
-msgid ""
-"Combine stripped files with separate symbols and debug information.\n\nThe "
-"first form puts the result in DEBUG-FILE if -o was not given.\n"
-"\n"
-"MODULE arguments give file name patterns matching modules to process.\n"
-"With -f these match the file name of the main (stripped) file (slashes are "
-"never special), otherwise they match the simple module names. With no "
-"arguments, process all modules found.\n"
-"\n"
-"Multiple modules are written to files under OUTPUT-DIRECTORY, creating "
-"subdirectories as needed. With -m these files have simple module names, "
-"otherwise they have the name of the main file complete with directory "
-"underneath OUTPUT-DIRECTORY.\n"
-"\n"
-"With -n no files are written, but one line to standard output for each "
-"module:\n"
-"\tSTART+SIZE BUILDID FILE DEBUGFILE MODULENAME\n"
-"START and SIZE are hexadecimal giving the address bounds of the module. "
-"BUILDID is hexadecimal for the build ID bits, or - if no ID is known; the "
-"hexadecimal may be followed by @0xADDR giving the address where the ID "
-"resides if that is known. FILE is the file name found for the module, or - "
-"if none was found, or . if an ELF image is available but not from any named "
-"file. DEBUGFILE is the separate debuginfo file name, or - if no debuginfo "
-"was found, or . if FILE contains the debug information."
-msgstr ""
diff --git a/post_update.sh b/post_update.sh
new file mode 100755
index 00000000..7072c8f4
--- /dev/null
+++ b/post_update.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# $1 Path to the new version.
+# $2 Path to the old version.
+
+set -x
+set -e
+
+# if called from the external_updater, change to the new dir first
+if [ "$1" != "" ]; then
+ cd $1
+fi
+
+autoreconf -i && ./configure --enable-maintainer-mode --disable-debuginfod --disable-libdebuginfod --without-lzma --without-bzlib --without-zstd
+
+# if called from the external_updater, do not apply any patches as it will do
+# that for us
+if [ "$2" == "" ]; then
+ git apply patches/*
+fi
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 00000000..f7252a4a
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,17 @@
+/addr2line
+/ar
+/elfclassify
+/elfcmp
+/elfcompress
+/elflint
+/findtextrel
+/make-debug-archive
+/nm
+/objdump
+/ranlib
+/readelf
+/size
+/stack
+/strings
+/strip
+/unstrip
diff --git a/src/ChangeLog b/src/ChangeLog
index 6af977ed..e65620fd 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,262 @@
+2021-02-03 Timm Bäder <tbaeder@redhat.com>
+
+ * ar.c (do_oper_extract): Extract should_truncate_fname function
+ to...
+ (should_truncate_fname): ...here. New file scope function taking
+ size_t pointer to be read and/or set.
+
+2021-02-02 Timm Bäder <tbaeder@redhat.com>
+
+ * readelf.c (print_debug_line_section): Remove unnecessary
+ show_op_index variable, replace with (op_index > 0).
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * readelf.c (print_cfa_program): Lift regname function to...
+ (regname): ...here. New file scope function add ebl and regnamebuf
+ as arguments.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * readelf.c (print_attributes): Lift left function to...
+ (left): ...here. New file scope function taking Elf_Data and char
+ pointers.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * readelf.c (handle_core_registers): Lift same_set function to...
+ (same_set): ...here. New file scope function adding regs and
+ maxnreg arguments.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * readelf.c (parse_opt): Lift add_dump_section function to...
+ (add_dump_section): ...here. New top level function. Added key
+ argument.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * arlib-argp.c (help_filter): Lift text_for_default function to...
+ (text_for_default): ... here. New file scope function taking text
+ as argument.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * addr2line.c (handle_address): Move show_note and show_int up to
+ file scope.
+ (show_note: New static inline function.
+ (show_int): Likewise.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * strip.c (handle_elf): Remove no_symtab_updates function and
+ calls inside the switch statement. Add checks and (possibly)
+ continue, before switch statement is called.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * strip.c (handle_elf): Move inlined update_section_size function
+ to...
+ (update_section_size): ...here. New static function that takes as
+ extra arguments the Elf_Scn, debug_elf, section cnt and fname.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * strip.c (remove_debug_relocations): Rewrite inlined relocate
+ function to file static. Do R_*_NONE, reloc_simple_type and
+ ebl_debug_scn_p checks before calling new relocate function.
+ (relocate): New file static function from
+ remove_debug_relocate. Remove R_*_NONE, reloc_simple_type and
+ ebl_debugscn_p checks.
+
+2021-01-08 Timm Bäder <tbaeder@redhat.com>
+
+ * strip.c (handle_elf): Expand inlined function check_preserved.
+
+2021-01-12 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (EXTRA_SHFLAGS): New define.
+ (check_sections): Use EXTRA_SHFLAGS. Add SHF_GNU_RETAIN to
+ ALL_SH_FLAGS.
+
+2020-12-31 Sergei Trofimovich <slyfox@gentoo.org>
+
+ * elflint.c (section_flags_string): Add NEWFLAG for GNU_RETAIN,
+ ORDERED and EXCLUDE.
+
+2020-12-31 Sergei Trofimovich <slyfox@gentoo.org>
+
+ * elflint.c (section_flags_string): Update cp pointer after
+ snprintf for unknown flags.
+
+2020-12-16 Érico Nogueira <ericonr@disroot.org>
+
+ * readelf.c (qsort_r): Use qsort for improved portability.
+
+2020-12-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * .gitignore: New file.
+
+2020-12-12 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (check_sections): Handle SHF_GNU_RETAIN.
+ * readelf.c (print_shdr): Likewise.
+
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * *.c: Replace gettext(...) with _(...).
+
+ * unstrip.c (_): Remove.
+
+2020-12-15 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (check_symtab): Always print symbol name (if known)
+ in error messages.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * ar.c (write_member, do_oper_insert): Fix spelling typo in comment.
+ * elfclassify.c (issue, elf_issue, is_unstripped): Likewise.
+ * elfcompress.c (process_file): Likewise.
+ * elflint.c (be_quiet, check_gnu_hash): Likewise.
+ * readelf.c (print_phdr, handle_gnu_hash,
+ dwarf_locexpr_opcode_string): Likewise.
+ * size.c (totals_class): Likewise.
+ * strings.c (read_elf): Likewise.
+ * strip.c (handle_elf): Likewise.
+
+ * readelf.c (print_debug_addr_section): Fix spelling typo in error
+ diagnostics.
+ * strip.c (options): Fix spelling typos in argp help text.
+ * strings.c (options): Likewise.
+ * stack.c (options): Likewise.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+
+ * unstrip.c (make_directories): Use ACCESSPERMS for mkdir.
+ (handle_file): Use DEFFILEMODE for open with O_CREAT for ET_REL
+ files, ACCESSPERMS otherwise.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+
+ * Makefile.am (nm_LDADD): Add obstack_LIBS.
+ (ranlib_LDADD): Likewise.
+ (ar_LDADD): Likewise.
+
+2020-10-27 Érico N. Rolim <erico.erc@gmail.com>
+
+ * unstrip.c (make_directories): Use strndup, not strndupa.
+
+2020-09-28 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (next_listptr_offset): Take idx as pointer, to be updated
+ and use new Dwarf_Off as offset to match.
+ (listptr_attr): New function.
+ (print_debug_loclists_section): Check for DW_AT_GNU_locviews to show
+ view pairs.
+ (print_debug_loc_section): Adjust next_listptr_offset call.
+
+2020-09-03 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (print_cfa_program): Take ehdr as argument. Use it to
+ recognize DW_CFA_AARCH64_negate_ra_state.
+ (print_debug_frame_section): Pass ehdr to print_cfa_program.
+ (print_debug): Don't warn if we dump frames, but cannot get dbg.
+
+2020-09-01 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (print_debug_ranges_section): Base address entry can
+ be first.
+ (print_debug_loc_section): Likewise.
+
+2020-09-04 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (special_sections): Add .debug_line_str.
+
+2020-08-26 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (print_debug_line_section): It is not an error if there
+ are no line number statements at the end of a debug line section.
+
+2020-07-19 Mark Wielaard <mark@klomp.org>
+
+ * elfclassify.c (process_current_path): Handle fwrite failing.
+
+2020-07-05 Mark Wielaard <mark@klomp.org>
+
+ * stack.c (module_callback): Don't assert if dwfl_module_info fails.
+ * unstrip.c (adjust_relocs): Produce a proper error when HAS
+ section has inconsistent size or entsize.
+ (match_module): Don't assert if dwfl_module_info fails.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * ar.c (do_oper_extract): Split large if statement. Call fchown
+ before fchmod and explicitly ignore the return value.
+ (do_oper_delete): Likewise.
+ (do_oper_insert): Likewise.
+ * ranlib.c (handle_file): Likewise.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (check_elf_header): Explicitly check and ignore
+ any error from elf_compress.
+
+2020-06-07 Mark Wielaard <mark@klomp.org>
+
+ * nm.c (sort_by_name_strtab): Replace by...
+ (sort_by_name_elf): New static Elf pointer and ...
+ (sort_by_name_ndx): New static size_t index.
+ (sort_by_name): Use elf_strptr to get symbol string.
+ (show_symbols): Set sort_by_name_elf and sort_by_name_ndx.
+
+2020-06-06 Mark Wielaard <mark@klomp.org>
+
+ * nm.c (show_symbols_sysv): Skip no name and STT_FILE symbols.
+ When not printing address and size pad strings. Strip "GNU_"
+ prefix from binding name.
+ (class_type_char): Use 'V' for weak symbols, 'C' for common
+ symbols and 'T' for weak functions.
+ (show_symbols_posix): Skip STT_FILE symbols. Don't print value and
+ size when undefined.
+
+2020-06-04 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (check_program_header): Remove PT_GNU_PROPERTY define.
+
+2020-05-14 Mark Wielaard <mark@klomp.org>
+
+ * size.c (show_bsd): Set printf format based on radix.
+
+2020-05-09 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (process_elf_file): Error out if ebl_openbackend fails.
+ * objdump.c (handle_elf): Likewise.
+ * nm.c (handle_elf): Likewise. Move full name string construction
+ forward, so it can be used in the error message.
+
+2020-04-17 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (print_debug): Check .gnu.debuglto_ prefix.
+
+2020-04-16 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (check_sections): Mask out SHF_EXCLUDE from processor
+ specific section flags when --gnu is given.
+
+2020-02-08 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (check_program_header): Handle PT_GNU_PROPERTY.
+
+2020-02-07 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (check_symtab): Check st_info isn't too big.
+
+2020-01-16 Mark Wielaard <mark@klomp.org>
+
+ * nm.c (show_symbols_sysv): Iterate over all symbols starting
+ at index zero.
+
2019-11-26 Mark Wielaard <mark@klomp.org>
* Makefile.am (BUILD_STATIC): Add libraries needed for libdw.
@@ -2664,7 +2923,7 @@
(show_symbols_posix): Likewise.
(show_symbols): Adjust calls to show_symbols_bsd and
show_symbols_posix.
- (show_symbols_sysv): Avoid printing adress and size for undefined
+ (show_symbols_sysv): Avoid printing address and size for undefined
symbols. Don't print initial special entry and section entries.
2011-10-02 Ulrich Drepper <drepper@gmail.com>
@@ -3500,7 +3759,7 @@
* elflint.c (check_group): Check that signature symbol for section
group is not an empty string.
- * ldgeneric.c: Remove magic assignment of indeces in the dynsym
+ * ldgeneric.c: Remove magic assignment of indices in the dynsym
section. Start implementation of --hash-style.
* i386_ld.c: Likewise.
* ld.c: Recognize --hash-style.
diff --git a/src/Makefile.am b/src/Makefile.am
index e462e7d7..88d0ac8f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -69,7 +69,7 @@ ar_no_Wstack_usage = yes
unstrip_no_Wstack_usage = yes
readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD)
-nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) \
+nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) $(obstack_LIBS) \
$(demanglelib)
size_LDADD = $(libelf) $(libeu) $(argp_LDADD)
strip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
@@ -78,9 +78,9 @@ findtextrel_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD)
addr2line_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) $(demanglelib)
elfcmp_LDADD = $(libebl) $(libdw) $(libelf) $(libeu) $(argp_LDADD)
objdump_LDADD = $(libasm) $(libebl) $(libdw) $(libelf) $(libeu) $(argp_LDADD)
-ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD)
+ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LIBS)
strings_LDADD = $(libelf) $(libeu) $(argp_LDADD)
-ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD)
+ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LIBS)
unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(demanglelib)
elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
diff --git a/src/addr2line.c b/src/addr2line.c
index 69d8d995..34945046 100644
--- a/src/addr2line.c
+++ b/src/addr2line.c
@@ -516,7 +516,7 @@ adjust_to_section (const char *name, uintmax_t *addr, Dwfl *dwfl)
Dwfl_Module *mod = NULL;
if (dwfl_getmodules (dwfl, &see_one_module, &mod, 0) != 0
|| mod == NULL)
- error (EXIT_FAILURE, 0, gettext ("Section syntax requires"
+ error (EXIT_FAILURE, 0, _("Section syntax requires"
" exactly one module"));
int nscn = dwfl_module_relocations (mod);
@@ -539,7 +539,7 @@ adjust_to_section (const char *name, uintmax_t *addr, Dwfl *dwfl)
if (*addr >= shdr->sh_size)
error (0, 0,
- gettext ("offset %#" PRIxMAX " lies outside"
+ _("offset %#" PRIxMAX " lies outside"
" section '%s'"),
*addr, scn);
@@ -598,6 +598,26 @@ get_addr_width (Dwfl_Module *mod)
return width;
}
+static inline void
+show_note (int (*get) (Dwarf_Line *, bool *),
+ Dwarf_Line *info,
+ const char *note)
+{
+ bool flag;
+ if ((*get) (info, &flag) == 0 && flag)
+ fputs (note, stdout);
+}
+
+static inline void
+show_int (int (*get) (Dwarf_Line *, unsigned int *),
+ Dwarf_Line *info,
+ const char *name)
+{
+ unsigned int val;
+ if ((*get) (info, &val) == 0 && val != 0)
+ printf (" (%s %u)", name, val);
+}
+
static int
handle_address (const char *string, Dwfl *dwfl)
{
@@ -629,12 +649,12 @@ handle_address (const char *string, Dwfl *dwfl)
void *arg[3] = { name, &sym, &value };
(void) dwfl_getmodules (dwfl, &find_symbol, arg, 0);
if (arg[0] != NULL)
- error (0, 0, gettext ("cannot find symbol '%s'"), name);
+ error (0, 0, _("cannot find symbol '%s'"), name);
else
{
if (sym.st_size != 0 && addr >= sym.st_size)
error (0, 0,
- gettext ("offset %#" PRIxMAX " lies outside"
+ _("offset %#" PRIxMAX " lies outside"
" contents of '%s'"),
addr, name);
addr += value;
@@ -692,27 +712,12 @@ handle_address (const char *string, Dwfl *dwfl)
Dwarf_Line *info = dwfl_dwarf_line (line, &bias);
assert (info != NULL);
- inline void show (int (*get) (Dwarf_Line *, bool *),
- const char *note)
- {
- bool flag;
- if ((*get) (info, &flag) == 0 && flag)
- fputs (note, stdout);
- }
- inline void show_int (int (*get) (Dwarf_Line *, unsigned int *),
- const char *name)
- {
- unsigned int val;
- if ((*get) (info, &val) == 0 && val != 0)
- printf (" (%s %u)", name, val);
- }
-
- show (&dwarf_linebeginstatement, " (is_stmt)");
- show (&dwarf_lineblock, " (basic_block)");
- show (&dwarf_lineprologueend, " (prologue_end)");
- show (&dwarf_lineepiloguebegin, " (epilogue_begin)");
- show_int (&dwarf_lineisa, "isa");
- show_int (&dwarf_linediscriminator, "discriminator");
+ show_note (&dwarf_linebeginstatement, info, " (is_stmt)");
+ show_note (&dwarf_lineblock, info, " (basic_block)");
+ show_note (&dwarf_lineprologueend, info, " (prologue_end)");
+ show_note (&dwarf_lineepiloguebegin, info, " (epilogue_begin)");
+ show_int (&dwarf_lineisa, info, "isa");
+ show_int (&dwarf_linediscriminator, info, "discriminator");
}
putchar ('\n');
}
diff --git a/src/ar.c b/src/ar.c
index d70f1f46..66b2c4fd 100644
--- a/src/ar.c
+++ b/src/ar.c
@@ -177,12 +177,12 @@ main (int argc, char *argv[])
{
/* Only valid for certain operations. */
if (operation != oper_move && operation != oper_replace)
- error (1, 0, gettext ("\
+ error (1, 0, _("\
'a', 'b', and 'i' are only allowed with the 'm' and 'r' options"));
if (remaining == argc)
{
- error (0, 0, gettext ("\
+ error (0, 0, _("\
MEMBER parameter required for 'a', 'b', and 'i' modifiers"));
argp_help (&argp, stderr, ARGP_HELP_USAGE | ARGP_HELP_SEE,
program_invocation_short_name);
@@ -198,12 +198,12 @@ MEMBER parameter required for 'a', 'b', and 'i' modifiers"));
{
/* Only valid for certain operations. */
if (operation != oper_extract && operation != oper_delete)
- error (1, 0, gettext ("\
+ error (1, 0, _("\
'N' is only meaningful with the 'x' and 'd' options"));
if (remaining == argc)
{
- error (0, 0, gettext ("COUNT parameter required"));
+ error (0, 0, _("COUNT parameter required"));
argp_help (&argp, stderr, ARGP_HELP_SEE,
program_invocation_short_name);
exit (EXIT_FAILURE);
@@ -215,20 +215,20 @@ MEMBER parameter required for 'a', 'b', and 'i' modifiers"));
&& errno == ERANGE)
|| instance <= 0
|| *endp != '\0')
- error (1, 0, gettext ("invalid COUNT parameter %s"), argv[remaining]);
+ error (1, 0, _("invalid COUNT parameter %s"), argv[remaining]);
++remaining;
}
if ((dont_replace_existing || allow_truncate_fname)
&& unlikely (operation != oper_extract))
- error (1, 0, gettext ("'%c' is only meaningful with the 'x' option"),
+ error (1, 0, _("'%c' is only meaningful with the 'x' option"),
dont_replace_existing ? 'C' : 'T');
/* There must at least be one more parameter specifying the archive. */
if (remaining == argc)
{
- error (0, 0, gettext ("archive name required"));
+ error (0, 0, _("archive name required"));
argp_help (&argp, stderr, ARGP_HELP_SEE, program_invocation_short_name);
exit (EXIT_FAILURE);
}
@@ -241,7 +241,7 @@ MEMBER parameter required for 'a', 'b', and 'i' modifiers"));
switch (operation)
{
case oper_none:
- error (0, 0, gettext ("command option required"));
+ error (0, 0, _("command option required"));
argp_help (&argp, stderr, ARGP_HELP_STD_ERR,
program_invocation_short_name);
status = 1;
@@ -292,7 +292,7 @@ parse_opt (int key, char *arg __attribute__ ((unused)),
case 'x':
if (operation != oper_none)
{
- error (0, 0, gettext ("More than one operation specified"));
+ error (0, 0, _("More than one operation specified"));
argp_help (&argp, stderr, ARGP_HELP_SEE,
program_invocation_short_name);
exit (EXIT_FAILURE);
@@ -386,7 +386,7 @@ open_archive (const char *arfname, int flags, int mode, Elf **elf,
if (miss_allowed)
return -1;
- error (EXIT_FAILURE, errno, gettext ("cannot open archive '%s'"),
+ error (EXIT_FAILURE, errno, _("cannot open archive '%s'"),
arfname);
}
@@ -396,15 +396,15 @@ open_archive (const char *arfname, int flags, int mode, Elf **elf,
*elf = elf_begin (fd, cmd, NULL);
if (*elf == NULL)
- error (EXIT_FAILURE, 0, gettext ("cannot open archive '%s': %s"),
+ error (EXIT_FAILURE, 0, _("cannot open archive '%s': %s"),
arfname, elf_errmsg (-1));
if (flags == O_RDONLY && elf_kind (*elf) != ELF_K_AR)
- error (EXIT_FAILURE, 0, gettext ("%s: not an archive file"), arfname);
+ error (EXIT_FAILURE, 0, _("%s: not an archive file"), arfname);
}
if (st != NULL && fstat (fd, st) != 0)
- error (EXIT_FAILURE, errno, gettext ("cannot stat archive '%s'"),
+ error (EXIT_FAILURE, errno, _("cannot stat archive '%s'"),
arfname);
return fd;
@@ -416,7 +416,7 @@ not_found (int argc, char *argv[argc], bool found[argc])
{
for (int i = 0; i < argc; ++i)
if (!found[i])
- printf (gettext ("no entry %s in archive\n"), argv[i]);
+ printf (_("no entry %s in archive\n"), argv[i]);
}
@@ -436,6 +436,21 @@ copy_content (Elf *elf, int newfd, off_t off, size_t n)
return write_retry (newfd, rawfile + off, n) != (ssize_t) n;
}
+static inline bool
+should_truncate_fname (size_t *name_max)
+{
+ if (errno == ENAMETOOLONG && allow_truncate_fname)
+ {
+ if (*name_max == 0)
+ {
+ long int len = pathconf (".", _PC_NAME_MAX);
+ if (len > 0)
+ *name_max = len;
+ }
+ return *name_max != 0;
+ }
+ return false;
+}
static int
do_oper_extract (int oper, const char *arfname, char **argv, int argc,
@@ -445,21 +460,6 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
memset (found, '\0', sizeof (found));
size_t name_max = 0;
- inline bool should_truncate_fname (void)
- {
- if (errno == ENAMETOOLONG && allow_truncate_fname)
- {
- if (name_max == 0)
- {
- long int len = pathconf (".", _PC_NAME_MAX);
- if (len > 0)
- name_max = len;
- }
- return name_max != 0;
- }
- return false;
- }
-
off_t index_off = -1;
size_t index_size = 0;
off_t cur_off = SARMAG;
@@ -469,14 +469,14 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
int fd = open_archive (arfname, O_RDONLY, 0, &elf, NULL, false);
if (hcreate (2 * argc) == 0)
- error (EXIT_FAILURE, errno, gettext ("cannot create hash table"));
+ error (EXIT_FAILURE, errno, _("cannot create hash table"));
for (int cnt = 0; cnt < argc; ++cnt)
{
ENTRY entry = { .key = argv[cnt], .data = &argv[cnt] };
if (hsearch (entry, ENTER) == NULL)
error (EXIT_FAILURE, errno,
- gettext ("cannot insert into hash table"));
+ _("cannot insert into hash table"));
}
struct stat st;
@@ -484,7 +484,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
{
if (fstat (fd, &st) != 0)
{
- error (0, errno, gettext ("cannot stat '%s'"), arfname);
+ error (0, errno, _("cannot stat '%s'"), arfname);
close (fd);
return 1;
}
@@ -586,7 +586,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
char *data = elf_rawfile (subelf, &nleft);
if (data == NULL)
{
- error (0, 0, gettext ("cannot read content of %s: %s"),
+ error (0, 0, _("cannot read content of %s: %s"),
arhdr->ar_name, elf_errmsg (-1));
status = 1;
goto next;
@@ -615,7 +615,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
{
int printlen = INT_MAX;
- if (should_truncate_fname ())
+ if (should_truncate_fname (&name_max))
{
/* Try to truncate the name. First find out by how
much. */
@@ -629,7 +629,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
if (xfd == -1)
{
- error (0, errno, gettext ("cannot open %.*s"),
+ error (0, errno, _("cannot open %.*s"),
(int) printlen, arhdr->ar_name);
status = 1;
goto next;
@@ -651,7 +651,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
if (unlikely (n == -1))
{
- error (0, errno, gettext ("failed to write %s"), arhdr->ar_name);
+ error (0, errno, _("failed to write %s"), arhdr->ar_name);
status = 1;
unlink (tempfname);
close (xfd);
@@ -663,7 +663,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
/* Fix up the mode. */
if (unlikely (fchmod (xfd, arhdr->ar_mode) != 0))
{
- error (0, errno, gettext ("cannot change mode of %s"),
+ error (0, errno, _("cannot change mode of %s"),
arhdr->ar_name);
status = 0;
}
@@ -679,7 +679,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
if (unlikely (futimens (xfd, tv) != 0))
{
error (0, errno,
- gettext ("cannot change modification time of %s"),
+ _("cannot change modification time of %s"),
arhdr->ar_name);
status = 1;
}
@@ -704,7 +704,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
{
int printlen = INT_MAX;
- if (should_truncate_fname ())
+ if (should_truncate_fname (&name_max))
{
/* Try to truncate the name. First find out by how
much. */
@@ -725,7 +725,7 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc,
if (r != 0)
{
- error (0, errno, gettext ("\
+ error (0, errno, _("\
cannot rename temporary file to %.*s"),
printlen, arhdr->ar_name);
unlink (tempfname);
@@ -761,7 +761,7 @@ cannot rename temporary file to %.*s"),
if (unlikely (newfd == -1))
{
nonew:
- error (0, errno, gettext ("cannot create new file"));
+ error (0, errno, _("cannot create new file"));
status = 1;
}
else
@@ -787,26 +787,30 @@ cannot rename temporary file to %.*s"),
else
rest_off = SARMAG;
- if ((symtab.symsnamelen != 0
+ if (symtab.symsnamelen != 0
&& ((write_retry (newfd, symtab.symsoff,
symtab.symsofflen)
!= (ssize_t) symtab.symsofflen)
|| (write_retry (newfd, symtab.symsname,
symtab.symsnamelen)
!= (ssize_t) symtab.symsnamelen)))
- /* Even if the original file had content before the
- symbol table, we write it in the correct order. */
- || (index_off != SARMAG
- && copy_content (elf, newfd, SARMAG, index_off - SARMAG))
- || copy_content (elf, newfd, rest_off, st.st_size - rest_off)
- /* Set the mode of the new file to the same values the
- original file has. */
- || fchmod (newfd, st.st_mode & ALLPERMS) != 0
- /* Never complain about fchown failing. */
- || (({asm ("" :: "r" (fchown (newfd, st.st_uid,
- st.st_gid))); }),
- close (newfd) != 0)
- || (newfd = -1, rename (tmpfname, arfname) != 0))
+ goto nonew_unlink;
+ /* Even if the original file had content before the
+ symbol table, we write it in the correct order. */
+ if ((index_off != SARMAG
+ && copy_content (elf, newfd, SARMAG, index_off - SARMAG))
+ || copy_content (elf, newfd, rest_off, st.st_size - rest_off))
+ goto nonew_unlink;
+
+ /* Never complain about fchown failing. */
+ if (fchown (newfd, st.st_uid, st.st_gid) != 0) { ; }
+ /* Set the mode of the new file to the same values the
+ original file has. */
+ if (fchmod (newfd, st.st_mode & ALLPERMS) != 0
+ || close (newfd) != 0)
+ goto nonew_unlink;
+ newfd = -1;
+ if (rename (tmpfname, arfname) != 0)
goto nonew_unlink;
}
}
@@ -844,7 +848,7 @@ write_member (struct armem *memb, off_t *startp, off_t *lenp, Elf *elf,
off_t end_off, int newfd)
{
struct ar_hdr arhdr;
- /* The ar_name is not actually zero teminated, but we need that for
+ /* The ar_name is not actually zero terminated, but we need that for
snprintf. Also if the name is too long, then the string starts
with '/' plus an index off number (decimal). */
char tmpbuf[sizeof (arhdr.ar_name) + 2];
@@ -920,14 +924,14 @@ do_oper_delete (const char *arfname, char **argv, int argc,
int fd = open_archive (arfname, O_RDONLY, 0, &elf, &st, false);
if (hcreate (2 * argc) == 0)
- error (EXIT_FAILURE, errno, gettext ("cannot create hash table"));
+ error (EXIT_FAILURE, errno, _("cannot create hash table"));
for (int cnt = 0; cnt < argc; ++cnt)
{
ENTRY entry = { .key = argv[cnt], .data = &argv[cnt] };
if (hsearch (entry, ENTER) == NULL)
error (EXIT_FAILURE, errno,
- gettext ("cannot insert into hash table"));
+ _("cannot insert into hash table"));
}
arlib_init ();
@@ -1012,7 +1016,7 @@ do_oper_delete (const char *arfname, char **argv, int argc,
if (newfd != -1)
close (newfd);
nonew:
- error (0, errno, gettext ("cannot create new file"));
+ error (0, errno, _("cannot create new file"));
status = 1;
goto errout;
}
@@ -1052,12 +1056,15 @@ do_oper_delete (const char *arfname, char **argv, int argc,
}
/* Set the mode of the new file to the same values the original file
- has. */
+ has. Never complain about fchown failing. But do it before
+ setting the mode (which might be reset/ignored if the owner is
+ wrong. */
+ if (fchown (newfd, st.st_uid, st.st_gid) != 0) { ; }
if (fchmod (newfd, st.st_mode & ALLPERMS) != 0
- /* Never complain about fchown failing. */
- || (({asm ("" :: "r" (fchown (newfd, st.st_uid, st.st_gid))); }),
- close (newfd) != 0)
- || (newfd = -1, rename (tmpfname, arfname) != 0))
+ || close (newfd) != 0)
+ goto nonew_unlink;
+ newfd = -1;
+ if (rename (tmpfname, arfname) != 0)
goto nonew_unlink;
errout:
@@ -1124,7 +1131,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
if (oper != oper_qappend)
{
if (hcreate (2 * argc) == 0)
- error (EXIT_FAILURE, errno, gettext ("cannot create hash table"));
+ error (EXIT_FAILURE, errno, _("cannot create hash table"));
for (int cnt = 0; cnt < argc; ++cnt)
{
@@ -1133,7 +1140,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
entry.data = &argv[cnt];
if (hsearch (entry, ENTER) == NULL)
error (EXIT_FAILURE, errno,
- gettext ("cannot insert into hash table"));
+ _("cannot insert into hash table"));
}
}
@@ -1215,7 +1222,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
no_old:
if (member != NULL)
- error (EXIT_FAILURE, 0, gettext ("position member %s not found"),
+ error (EXIT_FAILURE, 0, _("position member %s not found"),
member);
if (oper == oper_move)
@@ -1225,7 +1232,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
{
if (found[cnt] == NULL)
{
- fprintf (stderr, gettext ("%s: no entry %s in archive!\n"),
+ fprintf (stderr, _("%s: no entry %s in archive!\n"),
program_invocation_short_name, argv[cnt]);
status = 1;
}
@@ -1254,18 +1261,18 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
int newfd = open (argv[cnt], O_RDONLY);
if (newfd == -1)
{
- error (0, errno, gettext ("cannot open %s"), argv[cnt]);
+ error (0, errno, _("cannot open %s"), argv[cnt]);
status = 1;
}
else if (fstat (newfd, &newst) == -1)
{
- error (0, errno, gettext ("cannot stat %s"), argv[cnt]);
+ error (0, errno, _("cannot stat %s"), argv[cnt]);
close (newfd);
status = 1;
}
else if (!S_ISREG (newst.st_mode))
{
- error (0, errno, gettext ("%s is no regular file"), argv[cnt]);
+ error (0, errno, _("%s is no regular file"), argv[cnt]);
close (newfd);
status = 1;
}
@@ -1278,7 +1285,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
== NULL)
{
fprintf (stderr,
- gettext ("cannot get ELF descriptor for %s: %s\n"),
+ _("cannot get ELF descriptor for %s: %s\n"),
argv[cnt], elf_errmsg (-1));
status = 1;
}
@@ -1298,7 +1305,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
found[cnt]->mem = elf_rawfile (newelf, &found[cnt]->size);
if (found[cnt]->mem == NULL
|| elf_cntl (newelf, ELF_C_FDDONE) != 0)
- error (EXIT_FAILURE, 0, gettext ("cannot read %s: %s"),
+ error (EXIT_FAILURE, 0, _("cannot read %s: %s"),
argv[cnt], elf_errmsg (-1));
close (newfd);
@@ -1413,7 +1420,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
close (newfd);
}
nonew:
- error (0, errno, gettext ("cannot create new file"));
+ error (0, errno, _("cannot create new file"));
status = 1;
goto errout;
}
@@ -1451,7 +1458,7 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
/* Create the header. */
struct ar_hdr arhdr;
- /* The ar_name is not actually zero teminated, but we
+ /* The ar_name is not actually zero terminated, but we
need that for snprintf. Also if the name is too
long, then the string starts with '/' plus an index
off number (decimal). */
@@ -1473,31 +1480,31 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
if (! no0print (false, arhdr.ar_date, sizeof (arhdr.ar_date),
all->sec))
{
- error (0, errno, gettext ("cannot represent ar_date"));
+ error (0, errno, _("cannot represent ar_date"));
goto nonew_unlink;
}
if (! no0print (false, arhdr.ar_uid, sizeof (arhdr.ar_uid),
all->uid))
{
- error (0, errno, gettext ("cannot represent ar_uid"));
+ error (0, errno, _("cannot represent ar_uid"));
goto nonew_unlink;
}
if (! no0print (false, arhdr.ar_gid, sizeof (arhdr.ar_gid),
all->gid))
{
- error (0, errno, gettext ("cannot represent ar_gid"));
+ error (0, errno, _("cannot represent ar_gid"));
goto nonew_unlink;
}
if (! no0print (true, arhdr.ar_mode, sizeof (arhdr.ar_mode),
all->mode))
{
- error (0, errno, gettext ("cannot represent ar_mode"));
+ error (0, errno, _("cannot represent ar_mode"));
goto nonew_unlink;
}
if (! no0print (false, arhdr.ar_size, sizeof (arhdr.ar_size),
all->size))
{
- error (0, errno, gettext ("cannot represent ar_size"));
+ error (0, errno, _("cannot represent ar_size"));
goto nonew_unlink;
}
memcpy (arhdr.ar_fmag, ARFMAG, sizeof (arhdr.ar_fmag));
@@ -1534,13 +1541,19 @@ do_oper_insert (int oper, const char *arfname, char **argv, int argc,
/* Set the mode of the new file to the same values the original file
has. */
- if (fd != -1
- && (fchmod (newfd, st.st_mode & ALLPERMS) != 0
- /* Never complain about fchown failing. */
- || (({asm ("" :: "r" (fchown (newfd, st.st_uid, st.st_gid))); }),
- close (newfd) != 0)
- || (newfd = -1, rename (tmpfname, arfname) != 0)))
- goto nonew_unlink;
+ if (fd != -1)
+ {
+ /* Never complain about fchown failing. But do it before
+ setting the modes, or they might be reset/ignored if the
+ owner is wrong. */
+ if (fchown (newfd, st.st_uid, st.st_gid) != 0) { ; }
+ if (fchmod (newfd, st.st_mode & ALLPERMS) != 0
+ || close (newfd) != 0)
+ goto nonew_unlink;
+ newfd = -1;
+ if (rename (tmpfname, arfname) != 0)
+ goto nonew_unlink;
+ }
errout:
for (int cnt = 0; cnt < argc; ++cnt)
diff --git a/src/arlib-argp.c b/src/arlib-argp.c
index 1bdd8d0b..a3c12e4d 100644
--- a/src/arlib-argp.c
+++ b/src/arlib-argp.c
@@ -57,25 +57,26 @@ parse_opt (int key, char *arg __attribute__ ((unused)),
}
static char *
-help_filter (int key, const char *text, void *input __attribute__ ((unused)))
+text_for_default (const char *text)
{
- inline char *text_for_default (void)
- {
- char *new_text;
- if (unlikely (asprintf (&new_text, gettext ("%s (default)"), text) < 0))
- return (char *) text;
- return new_text;
- }
+ char *new_text;
+ if (unlikely (asprintf (&new_text, _("%s (default)"), text) < 0))
+ return (char *) text;
+ return new_text;
+}
+static char *
+help_filter (int key, const char *text, void *input __attribute__ ((unused)))
+{
switch (key)
{
case 'D':
if (DEFAULT_AR_DETERMINISTIC)
- return text_for_default ();
+ return text_for_default (text);
break;
case 'U':
if (! DEFAULT_AR_DETERMINISTIC)
- return text_for_default ();
+ return text_for_default (text);
break;
}
diff --git a/src/arlib.c b/src/arlib.c
index a6521e30..a14c44d3 100644
--- a/src/arlib.c
+++ b/src/arlib.c
@@ -210,7 +210,7 @@ arlib_add_symbols (Elf *elf, const char *arfname, const char *membername,
{
if (sizeof (off) > sizeof (uint32_t) && off > ~((uint32_t) 0))
/* The archive is too big. */
- error (EXIT_FAILURE, 0, gettext ("the archive '%s' is too large"),
+ error (EXIT_FAILURE, 0, _("the archive '%s' is too large"),
arfname);
/* We only add symbol tables for ELF files. It makes not much sense
@@ -223,7 +223,7 @@ arlib_add_symbols (Elf *elf, const char *arfname, const char *membername,
GElf_Ehdr ehdr_mem;
GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
if (ehdr == NULL)
- error (EXIT_FAILURE, 0, gettext ("cannot read ELF header of %s(%s): %s"),
+ error (EXIT_FAILURE, 0, _("cannot read ELF header of %s(%s): %s"),
arfname, membername, elf_errmsg (-1));
GElf_Word symtype;
diff --git a/src/elfclassify.c b/src/elfclassify.c
index 535cc49f..ae626bb1 100644
--- a/src/elfclassify.c
+++ b/src/elfclassify.c
@@ -51,7 +51,7 @@ static int file_fd = -1;
/* Set by issue or elf_issue. */
static bool issue_found;
-/* Non-fatal issue occured while processing the current_path. */
+/* Non-fatal issue occurred while processing the current_path. */
static void
issue (int e, const char *msg)
{
@@ -65,7 +65,7 @@ issue (int e, const char *msg)
issue_found = true;
}
-/* Non-fatal issue occured while processing the current ELF. */
+/* Non-fatal issue occurred while processing the current ELF. */
static void
elf_issue (const char *msg)
{
@@ -464,7 +464,7 @@ is_loadable (void)
}
/* Return true if the file is an ELF file which has a symbol table or
- .debug_* sections (and thus can be stripped futher). */
+ .debug_* sections (and thus can be stripped further). */
static bool
is_unstripped (void)
{
@@ -827,7 +827,8 @@ process_current_path (int *status)
break;
case do_print0:
if (checks_passed == flag_print_matching)
- fwrite (current_path, strlen (current_path) + 1, 1, stdout);
+ if (fwrite (current_path, strlen (current_path) + 1, 1, stdout) < 1)
+ issue (errno, N_("writing to standard output"));
break;
case no_print:
if (!checks_passed)
diff --git a/src/elfcmp.c b/src/elfcmp.c
index c07fdfd7..21d8d9dc 100644
--- a/src/elfcmp.c
+++ b/src/elfcmp.c
@@ -138,7 +138,7 @@ main (int argc, char *argv[])
/* We expect exactly two non-option parameters. */
if (unlikely (remaining + 2 != argc))
{
- fputs (gettext ("Invalid number of parameters.\n"), stderr);
+ fputs (_("Invalid number of parameters.\n"), stderr);
argp_help (&argp, stderr, ARGP_HELP_SEE, program_invocation_short_name);
exit (1);
}
@@ -169,12 +169,12 @@ main (int argc, char *argv[])
GElf_Ehdr ehdr1_mem;
GElf_Ehdr *ehdr1 = gelf_getehdr (elf1, &ehdr1_mem);
if (ehdr1 == NULL)
- error (2, 0, gettext ("cannot get ELF header of '%s': %s"),
+ error (2, 0, _("cannot get ELF header of '%s': %s"),
fname1, elf_errmsg (-1));
GElf_Ehdr ehdr2_mem;
GElf_Ehdr *ehdr2 = gelf_getehdr (elf2, &ehdr2_mem);
if (ehdr2 == NULL)
- error (2, 0, gettext ("cannot get ELF header of '%s': %s"),
+ error (2, 0, _("cannot get ELF header of '%s': %s"),
fname2, elf_errmsg (-1));
#define DIFFERENCE \
@@ -200,37 +200,37 @@ main (int argc, char *argv[])
|| ehdr1->e_shentsize != ehdr2->e_shentsize))
{
if (! quiet)
- error (0, 0, gettext ("%s %s diff: ELF header"), fname1, fname2);
+ error (0, 0, _("%s %s diff: ELF header"), fname1, fname2);
DIFFERENCE;
}
size_t shnum1;
size_t shnum2;
if (unlikely (elf_getshdrnum (elf1, &shnum1) != 0))
- error (2, 0, gettext ("cannot get section count of '%s': %s"),
+ error (2, 0, _("cannot get section count of '%s': %s"),
fname1, elf_errmsg (-1));
if (unlikely (elf_getshdrnum (elf2, &shnum2) != 0))
- error (2, 0, gettext ("cannot get section count of '%s': %s"),
+ error (2, 0, _("cannot get section count of '%s': %s"),
fname2, elf_errmsg (-1));
if (unlikely (shnum1 != shnum2))
{
if (! quiet)
- error (0, 0, gettext ("%s %s diff: section count"), fname1, fname2);
+ error (0, 0, _("%s %s diff: section count"), fname1, fname2);
DIFFERENCE;
}
size_t phnum1;
size_t phnum2;
if (unlikely (elf_getphdrnum (elf1, &phnum1) != 0))
- error (2, 0, gettext ("cannot get program header count of '%s': %s"),
+ error (2, 0, _("cannot get program header count of '%s': %s"),
fname1, elf_errmsg (-1));
if (unlikely (elf_getphdrnum (elf2, &phnum2) != 0))
- error (2, 0, gettext ("cannot get program header count of '%s': %s"),
+ error (2, 0, _("cannot get program header count of '%s': %s"),
fname2, elf_errmsg (-1));
if (unlikely (phnum1 != phnum2))
{
if (! quiet)
- error (0, 0, gettext ("%s %s diff: program header count"),
+ error (0, 0, _("%s %s diff: program header count"),
fname1, fname2);
DIFFERENCE;
}
@@ -238,15 +238,15 @@ main (int argc, char *argv[])
size_t shstrndx1;
size_t shstrndx2;
if (elf_getshdrstrndx (elf1, &shstrndx1) != 0)
- error (2, 0, gettext ("cannot get hdrstrndx of '%s': %s"),
+ error (2, 0, _("cannot get hdrstrndx of '%s': %s"),
fname1, elf_errmsg (-1));
if (elf_getshdrstrndx (elf2, &shstrndx2) != 0)
- error (2, 0, gettext ("cannot get hdrstrndx of '%s': %s"),
+ error (2, 0, _("cannot get hdrstrndx of '%s': %s"),
fname2, elf_errmsg (-1));
if (shstrndx1 != shstrndx2)
{
if (! quiet)
- error (0, 0, gettext ("%s %s diff: shdr string index"),
+ error (0, 0, _("%s %s diff: shdr string index"),
fname1, fname2);
DIFFERENCE;
}
@@ -304,7 +304,7 @@ main (int argc, char *argv[])
if (unlikely (sname1 == NULL || sname2 == NULL
|| strcmp (sname1, sname2) != 0))
{
- error (0, 0, gettext ("%s %s differ: section [%zu], [%zu] name"),
+ error (0, 0, _("%s %s differ: section [%zu], [%zu] name"),
fname1, fname2, elf_ndxscn (scn1), elf_ndxscn (scn2));
DIFFERENCE;
}
@@ -327,7 +327,7 @@ main (int argc, char *argv[])
|| shdr1->sh_addralign != shdr2->sh_addralign
|| shdr1->sh_entsize != shdr2->sh_entsize)
{
- error (0, 0, gettext ("%s %s differ: section [%zu] '%s' header"),
+ error (0, 0, _("%s %s differ: section [%zu] '%s' header"),
fname1, fname2, elf_ndxscn (scn1), sname1);
DIFFERENCE;
}
@@ -335,13 +335,13 @@ main (int argc, char *argv[])
Elf_Data *data1 = elf_getdata (scn1, NULL);
if (data1 == NULL)
error (2, 0,
- gettext ("cannot get content of section %zu in '%s': %s"),
+ _("cannot get content of section %zu in '%s': %s"),
elf_ndxscn (scn1), fname1, elf_errmsg (-1));
Elf_Data *data2 = elf_getdata (scn2, NULL);
if (data2 == NULL)
error (2, 0,
- gettext ("cannot get content of section %zu in '%s': %s"),
+ _("cannot get content of section %zu in '%s': %s"),
elf_ndxscn (scn2), fname2, elf_errmsg (-1));
switch (shdr1->sh_type)
@@ -350,7 +350,7 @@ main (int argc, char *argv[])
case SHT_SYMTAB:
if (shdr1->sh_entsize == 0)
error (2, 0,
- gettext ("symbol table [%zu] in '%s' has zero sh_entsize"),
+ _("symbol table [%zu] in '%s' has zero sh_entsize"),
elf_ndxscn (scn1), fname1);
/* Iterate over the symbol table. We ignore the st_size
@@ -362,13 +362,13 @@ main (int argc, char *argv[])
GElf_Sym *sym1 = gelf_getsym (data1, ndx, &sym1_mem);
if (sym1 == NULL)
error (2, 0,
- gettext ("cannot get symbol in '%s': %s"),
+ _("cannot get symbol in '%s': %s"),
fname1, elf_errmsg (-1));
GElf_Sym sym2_mem;
GElf_Sym *sym2 = gelf_getsym (data2, ndx, &sym2_mem);
if (sym2 == NULL)
error (2, 0,
- gettext ("cannot get symbol in '%s': %s"),
+ _("cannot get symbol in '%s': %s"),
fname2, elf_errmsg (-1));
const char *name1 = elf_strptr (elf1, shdr1->sh_link,
@@ -390,10 +390,10 @@ main (int argc, char *argv[])
{
if (elf_ndxscn (scn1) == elf_ndxscn (scn2))
error (0, 0,
- gettext ("%s %s differ: symbol table [%zu]"),
+ _("%s %s differ: symbol table [%zu]"),
fname1, fname2, elf_ndxscn (scn1));
else
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: symbol table [%zu,%zu]"),
fname1, fname2, elf_ndxscn (scn1),
elf_ndxscn (scn2));
@@ -440,7 +440,7 @@ main (int argc, char *argv[])
if (off2 >= data2->d_size)
{
if (! quiet)
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: section [%zu] '%s' number of notes"),
fname1, fname2, elf_ndxscn (scn1), sname1);
DIFFERENCE;
@@ -448,7 +448,7 @@ main (int argc, char *argv[])
off2 = gelf_getnote (data2, off2, &note2,
&name_offset, &desc_offset);
if (off2 == 0)
- error (2, 0, gettext ("\
+ error (2, 0, _("\
cannot read note section [%zu] '%s' in '%s': %s"),
elf_ndxscn (scn2), sname2, fname2, elf_errmsg (-1));
const char *name2 = (note2.n_namesz == 0
@@ -459,7 +459,7 @@ cannot read note section [%zu] '%s' in '%s': %s"),
|| memcmp (name1, name2, note1.n_namesz))
{
if (! quiet)
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: section [%zu] '%s' note name"),
fname1, fname2, elf_ndxscn (scn1), sname1);
DIFFERENCE;
@@ -467,7 +467,7 @@ cannot read note section [%zu] '%s' in '%s': %s"),
if (note1.n_type != note2.n_type)
{
if (! quiet)
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: section [%zu] '%s' note '%s' type"),
fname1, fname2, elf_ndxscn (scn1), sname1, name1);
DIFFERENCE;
@@ -482,7 +482,7 @@ cannot read note section [%zu] '%s' in '%s': %s"),
if (note1.n_descsz != note2.n_descsz)
{
if (! quiet)
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: build ID length"),
fname1, fname2);
DIFFERENCE;
@@ -490,7 +490,7 @@ cannot read note section [%zu] '%s' in '%s': %s"),
else if (! ignore_build_id)
{
if (! quiet)
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: build ID content"),
fname1, fname2);
DIFFERENCE;
@@ -499,7 +499,7 @@ cannot read note section [%zu] '%s' in '%s': %s"),
else
{
if (! quiet)
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: section [%zu] '%s' note '%s' content"),
fname1, fname2, elf_ndxscn (scn1), sname1,
name1);
@@ -510,7 +510,7 @@ cannot read note section [%zu] '%s' in '%s': %s"),
if (off2 < data2->d_size)
{
if (! quiet)
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: section [%zu] '%s' number of notes"),
fname1, fname2, elf_ndxscn (scn1), sname1);
DIFFERENCE;
@@ -540,11 +540,11 @@ cannot read note section [%zu] '%s' in '%s': %s"),
if (! quiet)
{
if (elf_ndxscn (scn1) == elf_ndxscn (scn2))
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: section [%zu] '%s' content"),
fname1, fname2, elf_ndxscn (scn1), sname1);
else
- error (0, 0, gettext ("\
+ error (0, 0, _("\
%s %s differ: section [%zu,%zu] '%s' content"),
fname1, fname2, elf_ndxscn (scn1),
elf_ndxscn (scn2), sname1);
@@ -559,7 +559,7 @@ cannot read note section [%zu] '%s' in '%s': %s"),
{
if (! quiet)
error (0, 0,
- gettext ("%s %s differ: unequal amount of important sections"),
+ _("%s %s differ: unequal amount of important sections"),
fname1, fname2);
DIFFERENCE;
}
@@ -592,12 +592,12 @@ cannot read note section [%zu] '%s' in '%s': %s"),
{
raw1 = elf_rawfile (elf1, &size1);
if (raw1 == NULL )
- error (2, 0, gettext ("cannot load data of '%s': %s"),
+ error (2, 0, _("cannot load data of '%s': %s"),
fname1, elf_errmsg (-1));
raw2 = elf_rawfile (elf2, &size2);
if (raw2 == NULL )
- error (2, 0, gettext ("cannot load data of '%s': %s"),
+ error (2, 0, _("cannot load data of '%s': %s"),
fname2, elf_errmsg (-1));
for (size_t cnt = 0; cnt < nregions; ++cnt)
@@ -616,19 +616,19 @@ cannot read note section [%zu] '%s' in '%s': %s"),
GElf_Phdr *phdr1 = gelf_getphdr (elf1, ndx, &phdr1_mem);
if (phdr1 == NULL)
error (2, 0,
- gettext ("cannot get program header entry %d of '%s': %s"),
+ _("cannot get program header entry %d of '%s': %s"),
ndx, fname1, elf_errmsg (-1));
GElf_Phdr phdr2_mem;
GElf_Phdr *phdr2 = gelf_getphdr (elf2, ndx, &phdr2_mem);
if (phdr2 == NULL)
error (2, 0,
- gettext ("cannot get program header entry %d of '%s': %s"),
+ _("cannot get program header entry %d of '%s': %s"),
ndx, fname2, elf_errmsg (-1));
if (unlikely (memcmp (phdr1, phdr2, sizeof (GElf_Phdr)) != 0))
{
if (! quiet)
- error (0, 0, gettext ("%s %s differ: program header %d"),
+ error (0, 0, _("%s %s differ: program header %d"),
fname1, fname2, ndx);
DIFFERENCE;
}
@@ -652,7 +652,7 @@ cannot read note section [%zu] '%s' in '%s': %s"),
{
gapmismatch:
if (!quiet)
- error (0, 0, gettext ("%s %s differ: gap"),
+ error (0, 0, _("%s %s differ: gap"),
fname1, fname2);
DIFFERENCE;
break;
@@ -703,7 +703,7 @@ parse_opt (int key, char *arg,
else
{
fprintf (stderr,
- gettext ("Invalid value '%s' for --gaps parameter."),
+ _("Invalid value '%s' for --gaps parameter."),
arg);
argp_help (&argp, stderr, ARGP_HELP_SEE,
program_invocation_short_name);
@@ -731,16 +731,16 @@ open_file (const char *fname, int *fdp, Ebl **eblp)
{
int fd = open (fname, O_RDONLY);
if (unlikely (fd == -1))
- error (2, errno, gettext ("cannot open '%s'"), fname);
+ error (2, errno, _("cannot open '%s'"), fname);
Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
if (elf == NULL)
error (2, 0,
- gettext ("cannot create ELF descriptor for '%s': %s"),
+ _("cannot create ELF descriptor for '%s': %s"),
fname, elf_errmsg (-1));
Ebl *ebl = ebl_openbackend (elf);
if (ebl == NULL)
error (2, 0,
- gettext ("cannot create EBL descriptor for '%s'"), fname);
+ _("cannot create EBL descriptor for '%s'"), fname);
*fdp = fd;
*eblp = ebl;
@@ -758,7 +758,7 @@ search_for_copy_reloc (Ebl *ebl, size_t scnndx, int symndx)
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
if (shdr == NULL)
error (2, 0,
- gettext ("cannot get section header of section %zu: %s"),
+ _("cannot get section header of section %zu: %s"),
elf_ndxscn (scn), elf_errmsg (-1));
if ((shdr->sh_type != SHT_REL && shdr->sh_type != SHT_RELA)
@@ -768,7 +768,7 @@ search_for_copy_reloc (Ebl *ebl, size_t scnndx, int symndx)
Elf_Data *data = elf_getdata (scn, NULL);
if (data == NULL)
error (2, 0,
- gettext ("cannot get content of section %zu: %s"),
+ _("cannot get content of section %zu: %s"),
elf_ndxscn (scn), elf_errmsg (-1));
if (shdr->sh_type == SHT_REL && shdr->sh_entsize != 0)
@@ -778,7 +778,7 @@ search_for_copy_reloc (Ebl *ebl, size_t scnndx, int symndx)
GElf_Rel rel_mem;
GElf_Rel *rel = gelf_getrel (data, ndx, &rel_mem);
if (rel == NULL)
- error (2, 0, gettext ("cannot get relocation: %s"),
+ error (2, 0, _("cannot get relocation: %s"),
elf_errmsg (-1));
if ((int) GELF_R_SYM (rel->r_info) == symndx
@@ -792,7 +792,7 @@ search_for_copy_reloc (Ebl *ebl, size_t scnndx, int symndx)
GElf_Rela rela_mem;
GElf_Rela *rela = gelf_getrela (data, ndx, &rela_mem);
if (rela == NULL)
- error (2, 0, gettext ("cannot get relocation: %s"),
+ error (2, 0, _("cannot get relocation: %s"),
elf_errmsg (-1));
if ((int) GELF_R_SYM (rela->r_info) == symndx
diff --git a/src/elfcompress.c b/src/elfcompress.c
index 6ba6af41..1b5b1e36 100644
--- a/src/elfcompress.c
+++ b/src/elfcompress.c
@@ -345,7 +345,7 @@ process_file (const char *fname)
return cleanup (-1);
}
- /* We dont' handle ar files (or anything else), we probably should. */
+ /* We don't handle ar files (or anything else), we probably should. */
Elf_Kind kind = elf_kind (elf);
if (kind != ELF_K_ELF)
{
diff --git a/src/elflint.c b/src/elflint.c
index 684b794e..6a946838 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -107,7 +107,7 @@ static unsigned int error_count;
/* True if we should perform very strict testing. */
static bool be_strict;
-/* True if no message is to be printed if the run is succesful. */
+/* True if no message is to be printed if the run is successful. */
static bool be_quiet;
/* True if binary is from strip -f, not a normal ELF file. */
@@ -177,11 +177,11 @@ main (int argc, char *argv[])
/* Now we can close the descriptor. */
if (elf_end (elf) != 0)
- ERROR (gettext ("error while closing Elf descriptor: %s\n"),
+ ERROR (_("error while closing Elf descriptor: %s\n"),
elf_errmsg (-1));
if (prev_error_count == error_count && !be_quiet)
- puts (gettext ("No errors"));
+ puts (_("No errors"));
}
close (fd);
@@ -216,7 +216,7 @@ parse_opt (int key, char *arg __attribute__ ((unused)),
break;
case ARGP_KEY_NO_ARGS:
- fputs (gettext ("Missing file name.\n"), stderr);
+ fputs (_("Missing file name.\n"), stderr);
argp_help (&argp, stderr, ARGP_HELP_SEE, program_invocation_short_name);
exit (EXIT_FAILURE);
@@ -281,7 +281,7 @@ process_file (int fd, Elf *elf, const char *prefix, const char *suffix,
/* Get next archive element. */
cmd = elf_next (subelf);
if (elf_end (subelf) != 0)
- ERROR (gettext (" error while freeing sub-ELF descriptor: %s\n"),
+ ERROR (_(" error while freeing sub-ELF descriptor: %s\n"),
elf_errmsg (-1));
}
}
@@ -289,7 +289,7 @@ process_file (int fd, Elf *elf, const char *prefix, const char *suffix,
default:
/* We cannot do anything. */
- ERROR (gettext ("\
+ ERROR (_("\
Not an ELF file - it has the wrong magic bytes at the start\n"));
break;
}
@@ -354,16 +354,16 @@ check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size)
if (ehdr->e_ident[EI_CLASS] != ELFCLASS32
&& ehdr->e_ident[EI_CLASS] != ELFCLASS64)
- ERROR (gettext ("e_ident[%d] == %d is no known class\n"),
+ ERROR (_("e_ident[%d] == %d is no known class\n"),
EI_CLASS, ehdr->e_ident[EI_CLASS]);
if (ehdr->e_ident[EI_DATA] != ELFDATA2LSB
&& ehdr->e_ident[EI_DATA] != ELFDATA2MSB)
- ERROR (gettext ("e_ident[%d] == %d is no known data encoding\n"),
+ ERROR (_("e_ident[%d] == %d is no known data encoding\n"),
EI_DATA, ehdr->e_ident[EI_DATA]);
if (ehdr->e_ident[EI_VERSION] != EV_CURRENT)
- ERROR (gettext ("unknown ELF header version number e_ident[%d] == %d\n"),
+ ERROR (_("unknown ELF header version number e_ident[%d] == %d\n"),
EI_VERSION, ehdr->e_ident[EI_VERSION]);
/* We currently don't handle any OS ABIs other than Linux and the
@@ -371,46 +371,46 @@ check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size)
if (ehdr->e_ident[EI_OSABI] != ELFOSABI_NONE
&& ehdr->e_ident[EI_OSABI] != ELFOSABI_LINUX
&& ehdr->e_ident[EI_OSABI] != ELFOSABI_FREEBSD)
- ERROR (gettext ("unsupported OS ABI e_ident[%d] == '%s'\n"),
+ ERROR (_("unsupported OS ABI e_ident[%d] == '%s'\n"),
EI_OSABI,
ebl_osabi_name (ebl, ehdr->e_ident[EI_OSABI], buf, sizeof (buf)));
/* No ABI versions other than zero are supported either. */
if (ehdr->e_ident[EI_ABIVERSION] != 0)
- ERROR (gettext ("unsupported ABI version e_ident[%d] == %d\n"),
+ ERROR (_("unsupported ABI version e_ident[%d] == %d\n"),
EI_ABIVERSION, ehdr->e_ident[EI_ABIVERSION]);
for (cnt = EI_PAD; cnt < EI_NIDENT; ++cnt)
if (ehdr->e_ident[cnt] != 0)
- ERROR (gettext ("e_ident[%zu] is not zero\n"), cnt);
+ ERROR (_("e_ident[%zu] is not zero\n"), cnt);
/* Check the e_type field. */
if (ehdr->e_type != ET_REL && ehdr->e_type != ET_EXEC
&& ehdr->e_type != ET_DYN && ehdr->e_type != ET_CORE)
- ERROR (gettext ("unknown object file type %d\n"), ehdr->e_type);
+ ERROR (_("unknown object file type %d\n"), ehdr->e_type);
/* Check the e_machine field. */
for (cnt = 0; cnt < nvalid_e_machine; ++cnt)
if (valid_e_machine[cnt] == ehdr->e_machine)
break;
if (cnt == nvalid_e_machine)
- ERROR (gettext ("unknown machine type %d\n"), ehdr->e_machine);
+ ERROR (_("unknown machine type %d\n"), ehdr->e_machine);
/* Check the e_version field. */
if (ehdr->e_version != EV_CURRENT)
- ERROR (gettext ("unknown object file version\n"));
+ ERROR (_("unknown object file version\n"));
/* Check the e_phoff and e_phnum fields. */
if (ehdr->e_phoff == 0)
{
if (ehdr->e_phnum != 0)
- ERROR (gettext ("invalid program header offset\n"));
+ ERROR (_("invalid program header offset\n"));
else if (ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN)
- ERROR (gettext ("\
+ ERROR (_("\
executables and DSOs cannot have zero program header offset\n"));
}
else if (ehdr->e_phnum == 0)
- ERROR (gettext ("invalid number of program header entries\n"));
+ ERROR (_("invalid number of program header entries\n"));
/* Check the e_shoff field. */
shnum = ehdr->e_shnum;
@@ -418,10 +418,10 @@ executables and DSOs cannot have zero program header offset\n"));
if (ehdr->e_shoff == 0)
{
if (ehdr->e_shnum != 0)
- ERROR (gettext ("invalid section header table offset\n"));
+ ERROR (_("invalid section header table offset\n"));
else if (ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN
&& ehdr->e_type != ET_CORE)
- ERROR (gettext ("section header table must be present\n"));
+ ERROR (_("section header table must be present\n"));
}
else
{
@@ -435,7 +435,7 @@ executables and DSOs cannot have zero program header offset\n"));
{
/* The error will be reported later. */
if (shdr->sh_size == 0)
- ERROR (gettext ("\
+ ERROR (_("\
invalid number of section header table entries\n"));
else
shnum = shdr->sh_size;
@@ -452,7 +452,7 @@ invalid number of section header table entries\n"));
shstrndx = shdr->sh_link;
}
else if (shstrndx >= shnum)
- ERROR (gettext ("invalid section header index\n"));
+ ERROR (_("invalid section header index\n"));
}
/* Check the shdrs actually exist. And uncompress them before
@@ -467,10 +467,10 @@ invalid number of section header table entries\n"));
break;
/* If the section wasn't compressed this does nothing, but
returns an error. We don't care. */
- elf_compress (scn, 0, 0);
+ if (elf_compress (scn, 0, 0) < 0) { ; }
}
if (scnt < shnum)
- ERROR (gettext ("Can only check %u headers, shnum was %u\n"), scnt, shnum);
+ ERROR (_("Can only check %u headers, shnum was %u\n"), scnt, shnum);
shnum = scnt;
phnum = ehdr->e_phnum;
@@ -484,7 +484,7 @@ invalid number of section header table entries\n"));
{
/* The error will be reported later. */
if (shdr->sh_info < PN_XNUM)
- ERROR (gettext ("\
+ ERROR (_("\
invalid number of program header table entries\n"));
else
phnum = shdr->sh_info;
@@ -501,48 +501,48 @@ invalid number of program header table entries\n"));
break;
}
if (pcnt < phnum)
- ERROR (gettext ("Can only check %u headers, phnum was %u\n"), pcnt, phnum);
+ ERROR (_("Can only check %u headers, phnum was %u\n"), pcnt, phnum);
phnum = pcnt;
/* Check the e_flags field. */
if (!ebl_machine_flag_check (ebl, ehdr->e_flags))
- ERROR (gettext ("invalid machine flags: %s\n"),
+ ERROR (_("invalid machine flags: %s\n"),
ebl_machine_flag_name (ebl, ehdr->e_flags, buf, sizeof (buf)));
/* Check e_ehsize, e_phentsize, and e_shentsize fields. */
if (gelf_getclass (ebl->elf) == ELFCLASS32)
{
if (ehdr->e_ehsize != 0 && ehdr->e_ehsize != sizeof (Elf32_Ehdr))
- ERROR (gettext ("invalid ELF header size: %hd\n"), ehdr->e_ehsize);
+ ERROR (_("invalid ELF header size: %hd\n"), ehdr->e_ehsize);
if (ehdr->e_phentsize != 0 && ehdr->e_phentsize != sizeof (Elf32_Phdr))
- ERROR (gettext ("invalid program header size: %hd\n"),
+ ERROR (_("invalid program header size: %hd\n"),
ehdr->e_phentsize);
else if (ehdr->e_phoff + phnum * ehdr->e_phentsize > size)
- ERROR (gettext ("invalid program header position or size\n"));
+ ERROR (_("invalid program header position or size\n"));
if (ehdr->e_shentsize != 0 && ehdr->e_shentsize != sizeof (Elf32_Shdr))
- ERROR (gettext ("invalid section header size: %hd\n"),
+ ERROR (_("invalid section header size: %hd\n"),
ehdr->e_shentsize);
else if (ehdr->e_shoff + shnum * ehdr->e_shentsize > size)
- ERROR (gettext ("invalid section header position or size\n"));
+ ERROR (_("invalid section header position or size\n"));
}
else if (gelf_getclass (ebl->elf) == ELFCLASS64)
{
if (ehdr->e_ehsize != 0 && ehdr->e_ehsize != sizeof (Elf64_Ehdr))
- ERROR (gettext ("invalid ELF header size: %hd\n"), ehdr->e_ehsize);
+ ERROR (_("invalid ELF header size: %hd\n"), ehdr->e_ehsize);
if (ehdr->e_phentsize != 0 && ehdr->e_phentsize != sizeof (Elf64_Phdr))
- ERROR (gettext ("invalid program header size: %hd\n"),
+ ERROR (_("invalid program header size: %hd\n"),
ehdr->e_phentsize);
else if (ehdr->e_phoff + phnum * ehdr->e_phentsize > size)
- ERROR (gettext ("invalid program header position or size\n"));
+ ERROR (_("invalid program header position or size\n"));
if (ehdr->e_shentsize != 0 && ehdr->e_shentsize != sizeof (Elf64_Shdr))
- ERROR (gettext ("invalid section header size: %hd\n"),
+ ERROR (_("invalid section header size: %hd\n"),
ehdr->e_shentsize);
else if (ehdr->e_shoff + shnum * ehdr->e_shentsize > size)
- ERROR (gettext ("invalid section header position or size\n"));
+ ERROR (_("invalid section header position or size\n"));
}
}
@@ -587,11 +587,11 @@ check_scn_group (Ebl *ebl, int idx)
out:
if (cnt == shnum)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section with SHF_GROUP flag set not part of a section group\n"),
idx, section_name (ebl, idx));
else
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"),
idx, section_name (ebl, idx),
cnt, section_name (ebl, cnt));
@@ -607,7 +607,7 @@ check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
@@ -620,7 +620,7 @@ check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
if (strshdr->sh_type != SHT_STRTAB)
{
- ERROR (gettext ("section [%2d] '%s': referenced as string table for section [%2d] '%s' but type is not SHT_STRTAB\n"),
+ ERROR (_("section [%2d] '%s': referenced as string table for section [%2d] '%s' but type is not SHT_STRTAB\n"),
shdr->sh_link, section_name (ebl, shdr->sh_link),
idx, section_name (ebl, idx));
strshdr = NULL;
@@ -643,7 +643,7 @@ check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
&& xndxshdr->sh_link == (GElf_Word) idx)
{
if (found_xndx)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol table cannot have more than one extended index section\n"),
idx, section_name (ebl, idx));
@@ -655,39 +655,43 @@ section [%2d] '%s': symbol table cannot have more than one extended index sectio
size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT);
if (shdr->sh_entsize != sh_entsize)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2u] '%s': entry size is does not match ElfXX_Sym\n"),
idx, section_name (ebl, idx));
+ else if (shdr->sh_info > shdr->sh_size / sh_entsize)
+ ERROR (_("\
+section [%2u] '%s': number of local entries in 'st_info' larger than table size\n"),
+ idx, section_name (ebl, idx));
/* Test the zeroth entry. */
GElf_Sym sym_mem;
Elf32_Word xndx;
GElf_Sym *sym = gelf_getsymshndx (data, xndxdata, 0, &sym_mem, &xndx);
if (sym == NULL)
- ERROR (gettext ("section [%2d] '%s': cannot get symbol %d: %s\n"),
+ ERROR (_("section [%2d] '%s': cannot get symbol %d: %s\n"),
idx, section_name (ebl, idx), 0, elf_errmsg (-1));
else
{
if (sym->st_name != 0)
- ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
+ ERROR (_("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
idx, section_name (ebl, idx), "st_name");
if (sym->st_value != 0)
- ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
+ ERROR (_("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
idx, section_name (ebl, idx), "st_value");
if (sym->st_size != 0)
- ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
+ ERROR (_("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
idx, section_name (ebl, idx), "st_size");
if (sym->st_info != 0)
- ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
+ ERROR (_("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
idx, section_name (ebl, idx), "st_info");
if (sym->st_other != 0)
- ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
+ ERROR (_("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
idx, section_name (ebl, idx), "st_other");
if (sym->st_shndx != 0)
- ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
+ ERROR (_("section [%2d] '%s': '%s' in zeroth entry not zero\n"),
idx, section_name (ebl, idx), "st_shndx");
if (xndxdata != NULL && xndx != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': XINDEX for zeroth entry not zero\n"),
xndxscnidx, section_name (ebl, xndxscnidx));
}
@@ -697,16 +701,16 @@ section [%2d] '%s': XINDEX for zeroth entry not zero\n"),
sym = gelf_getsymshndx (data, xndxdata, cnt, &sym_mem, &xndx);
if (sym == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get symbol %zu: %s\n"),
+ ERROR (_("section [%2d] '%s': cannot get symbol %zu: %s\n"),
idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
continue;
}
- const char *name = NULL;
+ const char *name = "<invalid>";
if (strshdr == NULL)
name = "";
else if (sym->st_name >= strshdr->sh_size)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol %zu: invalid name value\n"),
idx, section_name (ebl, idx), cnt);
else
@@ -721,15 +725,15 @@ section [%2d] '%s': symbol %zu: invalid name value\n"),
if (xndxdata == NULL)
{
if (!no_xndx_warned)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: too large section index but no extended section index section\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): too large section index but no extended section index section\n"),
+ idx, section_name (ebl, idx), cnt, name);
no_xndx_warned = true;
}
else if (xndx < SHN_LORESERVE)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in st_shndx (%" PRIu32 ")\n"),
- xndxscnidx, section_name (ebl, xndxscnidx), cnt,
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit in st_shndx (%" PRIu32 ")\n"),
+ xndxscnidx, section_name (ebl, xndxscnidx), cnt, name,
xndx);
}
else if ((sym->st_shndx >= SHN_LORESERVE
@@ -739,44 +743,44 @@ section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in st_shnd
|| (sym->st_shndx >= shnum
&& (sym->st_shndx < SHN_LORESERVE
/* || sym->st_shndx > SHN_HIRESERVE always false */)))
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: invalid section index\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): invalid section index\n"),
+ idx, section_name (ebl, idx), cnt, name);
else
xndx = sym->st_shndx;
if (GELF_ST_TYPE (sym->st_info) >= STT_NUM
&& !ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), NULL, 0))
- ERROR (gettext ("section [%2d] '%s': symbol %zu: unknown type\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("section [%2d] '%s': symbol %zu (%s): unknown type\n"),
+ idx, section_name (ebl, idx), cnt, name);
if (GELF_ST_BIND (sym->st_info) >= STB_NUM
&& !ebl_symbol_binding_name (ebl, GELF_ST_BIND (sym->st_info), NULL,
0))
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: unknown symbol binding\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"),
+ idx, section_name (ebl, idx), cnt, name);
if (GELF_ST_BIND (sym->st_info) == STB_GNU_UNIQUE
&& GELF_ST_TYPE (sym->st_info) != STT_OBJECT)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: unique symbol not of object type\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"),
+ idx, section_name (ebl, idx), cnt, name);
if (xndx == SHN_COMMON)
{
/* Common symbols can only appear in relocatable files. */
if (ehdr->e_type != ET_REL)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable files\n"),
+ idx, section_name (ebl, idx), cnt, name);
if (cnt < shdr->sh_info)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"),
+ idx, section_name (ebl, idx), cnt, name);
if (GELF_R_TYPE (sym->st_info) == STT_FUNC)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"),
+ idx, section_name (ebl, idx), cnt, name);
}
else if (xndx > 0 && xndx < shnum)
{
@@ -825,24 +829,24 @@ section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"),
&& strcmp (name, "__edata") != 0
&& strcmp (name, "_end") != 0
&& strcmp (name, "__end") != 0))
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: st_value out of bounds\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"),
+ idx, section_name (ebl, idx), cnt, name);
}
else if ((st_value - sh_addr
+ sym->st_size) > destshdr->sh_size)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"),
- idx, section_name (ebl, idx), cnt,
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced section [%2d] '%s'\n"),
+ idx, section_name (ebl, idx), cnt, name,
(int) xndx, section_name (ebl, xndx));
}
}
else
{
if ((destshdr->sh_flags & SHF_TLS) == 0)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have SHF_TLS flag set\n"),
- idx, section_name (ebl, idx), cnt,
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not have SHF_TLS flag set\n"),
+ idx, section_name (ebl, idx), cnt, name,
(int) xndx, section_name (ebl, xndx));
if (ehdr->e_type == ET_REL)
@@ -850,15 +854,15 @@ section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have SHF_
/* For object files the symbol value must fall
into the section. */
if (st_value > destshdr->sh_size)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section [%2d] '%s'\n"),
- idx, section_name (ebl, idx), cnt,
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced section [%2d] '%s'\n"),
+ idx, section_name (ebl, idx), cnt, name,
(int) xndx, section_name (ebl, xndx));
else if (st_value + sym->st_size
> destshdr->sh_size)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"),
- idx, section_name (ebl, idx), cnt,
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced section [%2d] '%s'\n"),
+ idx, section_name (ebl, idx), cnt, name,
(int) xndx, section_name (ebl, xndx));
}
else
@@ -877,37 +881,37 @@ section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2
if (pcnt == phnum)
{
if (no_pt_tls++ == 0)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header entry\n"),
+ idx, section_name (ebl, idx), cnt, name);
}
else if (phdr == NULL)
{
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: TLS symbol but couldn't get TLS program header entry\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program header entry\n"),
+ idx, section_name (ebl, idx), cnt, name);
}
else if (!is_debuginfo)
{
if (st_value
< destshdr->sh_offset - phdr->p_offset)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%s'\n"),
- idx, section_name (ebl, idx), cnt,
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): st_value short of referenced section [%2d] '%s'\n"),
+ idx, section_name (ebl, idx), cnt, name,
(int) xndx, section_name (ebl, xndx));
else if (st_value
> (destshdr->sh_offset - phdr->p_offset
+ destshdr->sh_size))
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section [%2d] '%s'\n"),
- idx, section_name (ebl, idx), cnt,
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced section [%2d] '%s'\n"),
+ idx, section_name (ebl, idx), cnt, name,
(int) xndx, section_name (ebl, xndx));
else if (st_value + sym->st_size
> (destshdr->sh_offset - phdr->p_offset
+ destshdr->sh_size))
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"),
- idx, section_name (ebl, idx), cnt,
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced section [%2d] '%s'\n"),
+ idx, section_name (ebl, idx), cnt, name,
(int) xndx, section_name (ebl, xndx));
}
}
@@ -918,23 +922,23 @@ section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2
if (GELF_ST_BIND (sym->st_info) == STB_LOCAL)
{
if (cnt >= shdr->sh_info)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: local symbol outside range described in sh_info\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): local symbol outside range described in sh_info\n"),
+ idx, section_name (ebl, idx), cnt, name);
}
else
{
if (cnt < shdr->sh_info)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: non-local symbol outside range described in sh_info\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): non-local symbol outside range described in sh_info\n"),
+ idx, section_name (ebl, idx), cnt, name);
}
if (GELF_ST_TYPE (sym->st_info) == STT_SECTION
&& GELF_ST_BIND (sym->st_info) != STB_LOCAL)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: non-local section symbol\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"),
+ idx, section_name (ebl, idx), cnt, name);
if (name != NULL)
{
@@ -982,14 +986,14 @@ section [%2d] '%s': symbol %zu: non-local section symbol\n"),
if (sname == NULL)
{
if (xndx != SHN_UNDEF || ehdr->e_type != ET_REL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to \
bad section [%2d]\n"),
idx, section_name (ebl, idx), xndx);
}
else if (strcmp (sname, ".got.plt") != 0
&& strcmp (sname, ".got") != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to \
section [%2d] '%s'\n"),
idx, section_name (ebl, idx), xndx, sname);
@@ -1005,14 +1009,14 @@ section [%2d] '%s'\n"),
/* This test is more strict than the psABIs which
usually allow the symbol to be in the middle of
the .got section, allowing negative offsets. */
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#" PRIx64 " does not match %s section address %#" PRIx64 "\n"),
idx, section_name (ebl, idx),
(uint64_t) sym->st_value,
sname, (uint64_t) destshdr->sh_addr);
if (!gnuld && sym->st_size != destshdr->sh_size)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %" PRIu64 " does not match %s section size %" PRIu64 "\n"),
idx, section_name (ebl, idx),
(uint64_t) sym->st_size,
@@ -1020,7 +1024,7 @@ section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %" PRIu64 " does not match
}
}
else
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got section\n"),
idx, section_name (ebl, idx));
}
@@ -1036,14 +1040,14 @@ section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got section\n"
if (phdr != NULL && phdr->p_type == PT_DYNAMIC)
{
if (sym->st_value != phdr->p_vaddr)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': _DYNAMIC_ symbol value %#" PRIx64 " does not match dynamic segment address %#" PRIx64 "\n"),
idx, section_name (ebl, idx),
(uint64_t) sym->st_value,
(uint64_t) phdr->p_vaddr);
if (!gnuld && sym->st_size != phdr->p_memsz)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': _DYNAMIC symbol size %" PRIu64 " does not match dynamic segment size %" PRIu64 "\n"),
idx, section_name (ebl, idx),
(uint64_t) sym->st_size,
@@ -1056,13 +1060,13 @@ section [%2d] '%s': _DYNAMIC symbol size %" PRIu64 " does not match dynamic segm
if (GELF_ST_VISIBILITY (sym->st_other) != STV_DEFAULT
&& shdr->sh_type == SHT_DYNSYM)
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-default visibility\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-default visibility\n"),
+ idx, section_name (ebl, idx), cnt, name);
if (! ebl_check_st_other_bits (ebl, sym->st_other))
- ERROR (gettext ("\
-section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"),
- idx, section_name (ebl, idx), cnt);
+ ERROR (_("\
+section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"),
+ idx, section_name (ebl, idx), cnt, name);
}
}
@@ -1098,7 +1102,7 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *ehdr, int idx, const GElf_Shdr *shdr,
size_t cnt;
if (d == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': cannot get section data.\n"),
idx, section_name (ebl, idx));
@@ -1114,7 +1118,7 @@ section [%2d] '%s': cannot get section data.\n"),
{
/* Found it. Does the type match. */
if (is_rela)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"),
idx, section_name (ebl, idx));
else
@@ -1125,7 +1129,7 @@ section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"),
if (shdr->sh_entsize != 0
&& dyn->d_un.d_val > (shdr->sh_size
/ shdr->sh_entsize))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
idx, section_name (ebl, idx),
(int) dyn->d_un.d_val);
@@ -1150,13 +1154,13 @@ section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
GELF_R_TYPE (rel->r_info)))
{
if (inner >= dyn->d_un.d_val)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': relative relocations after index %d as specified by DT_RELCOUNT\n"),
idx, section_name (ebl, idx),
(int) dyn->d_un.d_val);
}
else if (inner < dyn->d_un.d_val)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT specified %d relative relocations\n"),
idx, section_name (ebl, idx),
inner, (int) dyn->d_un.d_val);
@@ -1168,7 +1172,7 @@ section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT specified
{
/* Found it. Does the type match. */
if (!is_rela)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': DT_RELACOUNT used for this REL section\n"),
idx, section_name (ebl, idx));
else
@@ -1178,7 +1182,7 @@ section [%2d] '%s': DT_RELACOUNT used for this REL section\n"),
relocations? */
if (shdr->sh_entsize != 0
&& dyn->d_un.d_val > shdr->sh_size / shdr->sh_entsize)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
idx, section_name (ebl, idx),
(int) dyn->d_un.d_val);
@@ -1203,13 +1207,13 @@ section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
GELF_R_TYPE (rela->r_info)))
{
if (inner >= dyn->d_un.d_val)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': relative relocations after index %d as specified by DT_RELCOUNT\n"),
idx, section_name (ebl, idx),
(int) dyn->d_un.d_val);
}
else if (inner < dyn->d_un.d_val)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT specified %d relative relocations\n"),
idx, section_name (ebl, idx),
inner, (int) dyn->d_un.d_val);
@@ -1251,7 +1255,7 @@ check_reloc_shdr (Ebl *ebl, const GElf_Ehdr *ehdr, const GElf_Shdr *shdr,
/* Check whether the link to the section we relocate is reasonable. */
if (shdr->sh_info >= shnum)
- ERROR (gettext ("section [%2d] '%s': invalid destination section index\n"),
+ ERROR (_("section [%2d] '%s': invalid destination section index\n"),
idx, section_name (ebl, idx));
else if (shdr->sh_info != 0)
{
@@ -1263,7 +1267,7 @@ check_reloc_shdr (Ebl *ebl, const GElf_Ehdr *ehdr, const GElf_Shdr *shdr,
{
reldyn = is_rel_dyn (ebl, ehdr, idx, shdr, true);
if (!reldyn)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': invalid destination section type\n"),
idx, section_name (ebl, idx));
else
@@ -1271,7 +1275,7 @@ section [%2d] '%s': invalid destination section type\n"),
/* There is no standard, but we require that .rel{,a}.dyn
sections have a sh_info value of zero. */
if (shdr->sh_info != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': sh_info should be zero\n"),
idx, section_name (ebl, idx));
}
@@ -1279,7 +1283,7 @@ section [%2d] '%s': sh_info should be zero\n"),
if ((((*destshdrp)->sh_flags & SHF_MERGE) != 0)
&& ((*destshdrp)->sh_flags & SHF_STRINGS) != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': no relocations for merge-able string sections possible\n"),
idx, section_name (ebl, idx));
}
@@ -1287,7 +1291,7 @@ section [%2d] '%s': no relocations for merge-able string sections possible\n"),
size_t sh_entsize = gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT);
if (shdr->sh_entsize != sh_entsize)
- ERROR (gettext (reltype == ELF_T_RELA ? "\
+ ERROR (_(reltype == ELF_T_RELA ? "\
section [%2d] '%s': section entry size does not match ElfXX_Rela\n" : "\
section [%2d] '%s': section entry size does not match ElfXX_Rel\n"),
idx, section_name (ebl, idx));
@@ -1347,7 +1351,7 @@ section [%2d] '%s': section entry size does not match ElfXX_Rel\n"),
while (seg != NULL && !seg->read_only)
seg = seg->next;
if (seg == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
text relocation flag set but there is no read-only segment\n"));
}
@@ -1374,7 +1378,7 @@ check_one_reloc (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *relshdr, int idx,
bool known_broken = gnuld;
if (!ebl_reloc_type_check (ebl, GELF_R_TYPE (r_info)))
- ERROR (gettext ("section [%2d] '%s': relocation %zu: invalid type\n"),
+ ERROR (_("section [%2d] '%s': relocation %zu: invalid type\n"),
idx, section_name (ebl, idx), cnt);
else if (((ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN)
/* The executable/DSO can contain relocation sections with
@@ -1382,7 +1386,7 @@ check_one_reloc (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *relshdr, int idx,
are marked non-loaded, though. */
|| (relshdr->sh_flags & SHF_ALLOC) != 0)
&& !ebl_reloc_valid_use (ebl, GELF_R_TYPE (r_info)))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': relocation %zu: relocation type invalid for the file type\n"),
idx, section_name (ebl, idx), cnt);
@@ -1390,7 +1394,7 @@ section [%2d] '%s': relocation %zu: relocation type invalid for the file type\n"
&& ((GELF_R_SYM (r_info) + 1)
* gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT)
> symshdr->sh_size))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': relocation %zu: invalid symbol index\n"),
idx, section_name (ebl, idx), cnt);
@@ -1408,7 +1412,7 @@ section [%2d] '%s': relocation %zu: invalid symbol index\n"),
/* Get the name for the symbol. */
&& (name = elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name))
&& strcmp (name, "_GLOBAL_OFFSET_TABLE_") !=0 )
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can be used with %s\n"),
idx, section_name (ebl, idx), cnt,
ebl_reloc_type_name (ebl, GELF_R_SYM (r_info),
@@ -1425,7 +1429,7 @@ section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can be u
&& GELF_R_TYPE (r_info) != 0
&& (r_offset - (ehdr->e_type == ET_REL ? 0
: destshdr->sh_addr)) >= destshdr->sh_size)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': relocation %zu: offset out of bounds\n"),
idx, section_name (ebl, idx), cnt);
}
@@ -1440,7 +1444,7 @@ section [%2d] '%s': relocation %zu: offset out of bounds\n"),
&& GELF_ST_TYPE (sym->st_info) != STT_OBJECT)
{
char buf[64];
- ERROR (gettext ("section [%2d] '%s': relocation %zu: copy relocation against symbol of type %s\n"),
+ ERROR (_("section [%2d] '%s': relocation %zu: copy relocation against symbol of type %s\n"),
idx, section_name (ebl, idx), cnt,
ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info),
buf, sizeof (buf)));
@@ -1461,7 +1465,7 @@ section [%2d] '%s': relocation %zu: offset out of bounds\n"),
if (textrel)
needed_textrel = true;
else
- ERROR (gettext ("section [%2d] '%s': relocation %zu: read-only section modified but text relocation flag not set\n"),
+ ERROR (_("section [%2d] '%s': relocation %zu: read-only section modified but text relocation flag not set\n"),
idx, section_name (ebl, idx), cnt);
}
@@ -1476,7 +1480,7 @@ section [%2d] '%s': relocation %zu: offset out of bounds\n"),
else if ((*statep == state_unloaded && in_loaded_seg)
|| (*statep == state_loaded && !in_loaded_seg))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': relocations are against loaded and unloaded data\n"),
idx, section_name (ebl, idx));
*statep = state_error;
@@ -1491,7 +1495,7 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
@@ -1516,7 +1520,7 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem);
if (rela == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': cannot get relocation %zu: %s\n"),
idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
continue;
@@ -1542,7 +1546,7 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
@@ -1567,7 +1571,7 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem);
if (rel == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': cannot get relocation %zu: %s\n"),
idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
continue;
@@ -1643,25 +1647,25 @@ check_dynamic (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
memset (has_addr_dt, '\0', sizeof (has_addr_dt));
if (++ndynamic == 2)
- ERROR (gettext ("more than one dynamic section present\n"));
+ ERROR (_("more than one dynamic section present\n"));
data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &strshdr_mem);
if (strshdr != NULL && strshdr->sh_type != SHT_STRTAB)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': referenced as string table for section [%2d] '%s' but type is not SHT_STRTAB\n"),
shdr->sh_link, section_name (ebl, shdr->sh_link),
idx, section_name (ebl, idx));
else if (strshdr == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d]: referenced as string table for section [%2d] '%s' but section link value is invalid\n"),
shdr->sh_link, idx, section_name (ebl, idx));
return;
@@ -1669,12 +1673,12 @@ section [%2d]: referenced as string table for section [%2d] '%s' but section lin
size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT);
if (shdr->sh_entsize != sh_entsize)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"),
idx, section_name (ebl, idx));
if (shdr->sh_info != 0)
- ERROR (gettext ("section [%2d] '%s': sh_info not zero\n"),
+ ERROR (_("section [%2d] '%s': sh_info not zero\n"),
idx, section_name (ebl, idx));
bool non_null_warned = false;
@@ -1684,7 +1688,7 @@ section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"),
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dyn_mem);
if (dyn == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"),
idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
continue;
@@ -1692,14 +1696,14 @@ section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"),
if (has_dt[DT_NULL] && dyn->d_tag != DT_NULL && ! non_null_warned)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"),
idx, section_name (ebl, idx));
non_null_warned = true;
}
if (!ebl_dynamic_tag_check (ebl, dyn->d_tag))
- ERROR (gettext ("section [%2d] '%s': entry %zu: unknown tag\n"),
+ ERROR (_("section [%2d] '%s': entry %zu: unknown tag\n"),
idx, section_name (ebl, idx), cnt);
if (dyn->d_tag >= 0 && dyn->d_tag < DT_NUM)
@@ -1710,7 +1714,7 @@ section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"),
&& dyn->d_tag != DT_POSFLAG_1)
{
char buf[50];
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %zu: more than one entry with tag %s\n"),
idx, section_name (ebl, idx), cnt,
ebl_dynamic_tag_name (ebl, dyn->d_tag,
@@ -1720,7 +1724,7 @@ section [%2d] '%s': entry %zu: more than one entry with tag %s\n"),
if (be_strict && level2[dyn->d_tag])
{
char buf[50];
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %zu: level 2 tag %s used\n"),
idx, section_name (ebl, idx), cnt,
ebl_dynamic_tag_name (ebl, dyn->d_tag,
@@ -1738,7 +1742,7 @@ section [%2d] '%s': entry %zu: level 2 tag %s used\n"),
if (dyn->d_tag == DT_PLTREL && dyn->d_un.d_val != DT_REL
&& dyn->d_un.d_val != DT_RELA)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"),
idx, section_name (ebl, idx), cnt);
@@ -1751,7 +1755,7 @@ section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"),
specified in sh_link. */
if (strshdr->sh_addr != dyn->d_un.d_val)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %zu: pointer does not match address of section [%2d] '%s' referenced by sh_link\n"),
idx, section_name (ebl, idx), cnt,
shdr->sh_link, section_name (ebl, shdr->sh_link));
@@ -1794,7 +1798,7 @@ section [%2d] '%s': entry %zu: pointer does not match address of section [%2d] '
if (unlikely (n >= phnum))
{
char buf[50];
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"),
idx, section_name (ebl, idx), cnt,
ebl_dynamic_tag_name (ebl, dyn->d_tag, buf,
@@ -1809,7 +1813,7 @@ section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"),
if (dyn->d_un.d_ptr >= strshdr->sh_size)
{
char buf[50];
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %zu: %s value must be valid offset in section [%2d] '%s'\n"),
idx, section_name (ebl, idx), cnt,
ebl_dynamic_tag_name (ebl, dyn->d_tag, buf,
@@ -1829,7 +1833,7 @@ section [%2d] '%s': entry %zu: %s value must be valid offset in section [%2d] '%
char buf1[50];
char buf2[50];
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': contains %s entry but not %s\n"),
idx, section_name (ebl, idx),
ebl_dynamic_tag_name (ebl, cnt, buf1, sizeof (buf1)),
@@ -1841,7 +1845,7 @@ section [%2d] '%s': contains %s entry but not %s\n"),
if (mandatory[cnt])
{
char buf[50];
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': mandatory tag %s not present\n"),
idx, section_name (ebl, idx),
ebl_dynamic_tag_name (ebl, cnt, buf, sizeof (buf)));
@@ -1850,14 +1854,14 @@ section [%2d] '%s': mandatory tag %s not present\n"),
/* Make sure we have an hash table. */
if (!has_dt[DT_HASH] && !has_addr_dt[DT_ADDRTAGIDX (DT_GNU_HASH)])
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': no hash section present\n"),
idx, section_name (ebl, idx));
/* The GNU-style hash table also needs a symbol table. */
if (!has_dt[DT_HASH] && has_addr_dt[DT_ADDRTAGIDX (DT_GNU_HASH)]
&& !has_dt[DT_SYMTAB])
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': contains %s entry but not %s\n"),
idx, section_name (ebl, idx),
"DT_GNU_HASH", "DT_SYMTAB");
@@ -1865,14 +1869,14 @@ section [%2d] '%s': contains %s entry but not %s\n"),
/* Check the rel/rela tags. At least one group must be available. */
if ((has_dt[DT_RELA] || has_dt[DT_RELASZ] || has_dt[DT_RELAENT])
&& (!has_dt[DT_RELA] || !has_dt[DT_RELASZ] || !has_dt[DT_RELAENT]))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': not all of %s, %s, and %s are present\n"),
idx, section_name (ebl, idx),
"DT_RELA", "DT_RELASZ", "DT_RELAENT");
if ((has_dt[DT_REL] || has_dt[DT_RELSZ] || has_dt[DT_RELENT])
&& (!has_dt[DT_REL] || !has_dt[DT_RELSZ] || !has_dt[DT_RELENT]))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': not all of %s, %s, and %s are present\n"),
idx, section_name (ebl, idx),
"DT_REL", "DT_RELSZ", "DT_RELENT");
@@ -1882,17 +1886,17 @@ section [%2d] '%s': not all of %s, %s, and %s are present\n"),
|| has_val_dt[DT_VALTAGIDX (DT_CHECKSUM)])
{
if (!has_val_dt[DT_VALTAGIDX (DT_GNU_PRELINKED)])
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"),
idx, section_name (ebl, idx), "DT_GNU_PRELINKED");
if (!has_val_dt[DT_VALTAGIDX (DT_CHECKSUM)])
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"),
idx, section_name (ebl, idx), "DT_CHECKSUM");
/* Only DSOs can be marked like this. */
if (ehdr->e_type != ET_DYN)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': non-DSO file marked as dependency during prelink\n"),
idx, section_name (ebl, idx));
}
@@ -1903,19 +1907,19 @@ section [%2d] '%s': non-DSO file marked as dependency during prelink\n"),
|| has_addr_dt[DT_ADDRTAGIDX (DT_GNU_LIBLIST)])
{
if (!has_val_dt[DT_VALTAGIDX (DT_GNU_CONFLICTSZ)])
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': %s tag missing in prelinked executable\n"),
idx, section_name (ebl, idx), "DT_GNU_CONFLICTSZ");
if (!has_val_dt[DT_VALTAGIDX (DT_GNU_LIBLISTSZ)])
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': %s tag missing in prelinked executable\n"),
idx, section_name (ebl, idx), "DT_GNU_LIBLISTSZ");
if (!has_addr_dt[DT_ADDRTAGIDX (DT_GNU_CONFLICT)])
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': %s tag missing in prelinked executable\n"),
idx, section_name (ebl, idx), "DT_GNU_CONFLICT");
if (!has_addr_dt[DT_ADDRTAGIDX (DT_GNU_LIBLIST)])
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': %s tag missing in prelinked executable\n"),
idx, section_name (ebl, idx), "DT_GNU_LIBLIST");
}
@@ -1927,7 +1931,7 @@ check_symtab_shndx (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
{
if (ehdr->e_type != ET_REL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': only relocatable files can have extended section index\n"),
idx, section_name (ebl, idx));
return;
@@ -1937,19 +1941,19 @@ section [%2d] '%s': only relocatable files can have extended section index\n"),
GElf_Shdr symshdr_mem;
GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem);
if (symshdr != NULL && symshdr->sh_type != SHT_SYMTAB)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': extended section index section not for symbol table\n"),
idx, section_name (ebl, idx));
else if (symshdr == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"),
idx, section_name (ebl, idx), shdr->sh_link);
Elf_Data *symdata = elf_getdata (symscn, NULL);
if (symdata == NULL)
- ERROR (gettext ("cannot get data for symbol section\n"));
+ ERROR (_("cannot get data for symbol section\n"));
if (shdr->sh_entsize != sizeof (Elf32_Word))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry size does not match Elf32_Word\n"),
idx, section_name (ebl, idx));
@@ -1958,12 +1962,12 @@ section [%2d] '%s': entry size does not match Elf32_Word\n"),
&& symshdr->sh_entsize != 0
&& (shdr->sh_size / shdr->sh_entsize
< symshdr->sh_size / symshdr->sh_entsize))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': extended index table too small for symbol table\n"),
idx, section_name (ebl, idx));
if (shdr->sh_info != 0)
- ERROR (gettext ("section [%2d] '%s': sh_info not zero\n"),
+ ERROR (_("section [%2d] '%s': sh_info not zero\n"),
idx, section_name (ebl, idx));
for (size_t cnt = idx + 1; cnt < shnum; ++cnt)
@@ -1973,7 +1977,7 @@ section [%2d] '%s': extended index table too small for symbol table\n"),
if (rshdr != NULL && rshdr->sh_type == SHT_SYMTAB_SHNDX
&& rshdr->sh_link == shdr->sh_link)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': extended section index in section [%2zu] '%s' refers to same symbol table\n"),
idx, section_name (ebl, idx),
cnt, section_name (ebl, cnt));
@@ -1984,14 +1988,14 @@ section [%2d] '%s': extended section index in section [%2zu] '%s' refers to same
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL || data->d_buf == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
if (data->d_size < sizeof (Elf32_Word)
|| *((Elf32_Word *) data->d_buf) != 0)
- ERROR (gettext ("symbol 0 should have zero extended section index\n"));
+ ERROR (_("symbol 0 should have zero extended section index\n"));
for (size_t cnt = 1; cnt < data->d_size / sizeof (Elf32_Word); ++cnt)
{
@@ -2003,12 +2007,12 @@ section [%2d] '%s': extended section index in section [%2zu] '%s' refers to same
GElf_Sym *sym = gelf_getsym (symdata, cnt, &sym_data);
if (sym == NULL)
{
- ERROR (gettext ("cannot get data for symbol %zu\n"), cnt);
+ ERROR (_("cannot get data for symbol %zu\n"), cnt);
continue;
}
if (sym->st_shndx != SHN_XINDEX)
- ERROR (gettext ("\
+ ERROR (_("\
extended section index is %" PRIu32 " but symbol index is not XINDEX\n"),
(uint32_t) xndx);
}
@@ -2025,7 +2029,7 @@ check_sysv_hash (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
if (shdr->sh_size < (2ULL + nbucket + nchain) * sizeof (Elf32_Word))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"),
idx, section_name (ebl, idx), (long int) shdr->sh_size,
(long int) ((2 + nbucket + nchain) * sizeof (Elf32_Word)));
@@ -2039,7 +2043,7 @@ section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"),
size_t symsize = symshdr->sh_size / symshdr->sh_entsize;
if (nchain > symshdr->sh_size / symshdr->sh_entsize)
- ERROR (gettext ("section [%2d] '%s': chain array too large\n"),
+ ERROR (_("section [%2d] '%s': chain array too large\n"),
idx, section_name (ebl, idx));
maxidx = symsize;
@@ -2053,7 +2057,7 @@ section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"),
if (buf + cnt >= end)
break;
else if (buf[cnt] >= maxidx)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash bucket reference %zu out of bounds\n"),
idx, section_name (ebl, idx), cnt - 2);
}
@@ -2063,7 +2067,7 @@ section [%2d] '%s': hash bucket reference %zu out of bounds\n"),
if (buf + cnt >= end)
break;
else if (buf[cnt] >= maxidx)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash chain reference %zu out of bounds\n"),
idx, section_name (ebl, idx), cnt - 2 - nbucket);
}
@@ -2082,7 +2086,7 @@ check_sysv_hash64 (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
|| maxwords - 2 < nbucket
|| maxwords - 2 - nbucket < nchain)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"),
idx, section_name (ebl, idx), (long int) shdr->sh_size,
(long int) ((2 + nbucket + nchain) * sizeof (Elf64_Xword)));
@@ -2096,7 +2100,7 @@ section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"),
size_t symsize = symshdr->sh_size / symshdr->sh_entsize;
if (nchain > symshdr->sh_size / symshdr->sh_entsize)
- ERROR (gettext ("section [%2d] '%s': chain array too large\n"),
+ ERROR (_("section [%2d] '%s': chain array too large\n"),
idx, section_name (ebl, idx));
maxidx = symsize;
@@ -2110,7 +2114,7 @@ section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"),
if (buf + cnt >= end)
break;
else if (buf[cnt] >= maxidx)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash bucket reference %zu out of bounds\n"),
idx, section_name (ebl, idx), cnt - 2);
}
@@ -2120,7 +2124,7 @@ section [%2d] '%s': hash bucket reference %zu out of bounds\n"),
if (buf + cnt >= end)
break;
else if (buf[cnt] >= maxidx)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash chain reference %" PRIu64 " out of bounds\n"),
idx, section_name (ebl, idx), (uint64_t) cnt - 2 - nbucket);
}
@@ -2133,7 +2137,7 @@ check_gnu_hash (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
{
if (data->d_size < 4 * sizeof (Elf32_Word))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': not enough data\n"),
idx, section_name (ebl, idx));
return;
@@ -2145,7 +2149,7 @@ section [%2d] '%s': not enough data\n"),
if (bitmask_words == 0 || !powerof2 (bitmask_words))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': bitmask size zero or not power of 2: %u\n"),
idx, section_name (ebl, idx), bitmask_words);
return;
@@ -2157,11 +2161,11 @@ section [%2d] '%s': bitmask size zero or not power of 2: %u\n"),
Elf32_Word shift = ((Elf32_Word *) data->d_buf)[3];
/* Is there still room for the sym chain?
- Use uint64_t calculation to prevent 32bit overlow. */
+ Use uint64_t calculation to prevent 32bit overflow. */
uint64_t used_buf = (4ULL + bitmask_words + nbuckets) * sizeof (Elf32_Word);
if (used_buf > data->d_size)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash table section is too small (is %ld, expected at least %ld)\n"),
idx, section_name (ebl, idx), (long int) shdr->sh_size,
(long int) used_buf);
@@ -2170,7 +2174,7 @@ section [%2d] '%s': hash table section is too small (is %ld, expected at least %
if (shift > 31)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': 2nd hash function shift too big: %u\n"),
idx, section_name (ebl, idx), shift);
return;
@@ -2204,7 +2208,7 @@ section [%2d] '%s': 2nd hash function shift too big: %u\n"),
if (symidx < symbias)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"),
idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
continue;
@@ -2225,7 +2229,7 @@ section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"),
GElf_Sym *sym = gelf_getsym (symdata, symidx, &sym_mem);
if (sym != NULL && sym->st_shndx == SHN_UNDEF
&& GELF_ST_TYPE (sym->st_info) != STT_FUNC)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol %u referenced in chain for bucket %zu is undefined\n"),
idx, section_name (ebl, idx), symidx,
cnt - (4 + bitmask_words));
@@ -2238,7 +2242,7 @@ section [%2d] '%s': symbol %u referenced in chain for bucket %zu is undefined\n"
{
Elf32_Word hval = elf_gnu_hash (symname);
if ((hval & ~1u) != (chainhash & ~1u))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"),
idx, section_name (ebl, idx), symidx,
cnt - (4 + bitmask_words));
@@ -2247,7 +2251,7 @@ section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"),
size_t maskidx = (hval / classbits) & bitmask_idxmask;
if (maskidx >= bitmask_words)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"),
idx, section_name (ebl, idx), symidx,
cnt - (4 + bitmask_words));
@@ -2277,18 +2281,18 @@ section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"),
}
if (symidx - symbias >= maxidx)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash chain for bucket %zu out of bounds\n"),
idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
else if (symshdr != NULL && symshdr->sh_entsize != 0
&& symidx > symshdr->sh_size / symshdr->sh_entsize)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"),
idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
}
if (memcmp (collected.p32, bitmask.p32, bitmask_words * sizeof (Elf32_Word)))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': bitmask does not match names in the hash table\n"),
idx, section_name (ebl, idx));
@@ -2301,7 +2305,7 @@ check_hash (int tag, Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
{
if (ehdr->e_type == ET_REL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': relocatable files cannot have hash tables\n"),
idx, section_name (ebl, idx));
return;
@@ -2310,7 +2314,7 @@ section [%2d] '%s': relocatable files cannot have hash tables\n"),
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL || data->d_buf == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
@@ -2319,11 +2323,11 @@ section [%2d] '%s': relocatable files cannot have hash tables\n"),
GElf_Shdr *symshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
&symshdr_mem);
if (symshdr != NULL && symshdr->sh_type != SHT_DYNSYM)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash table not for dynamic symbol table\n"),
idx, section_name (ebl, idx));
else if (symshdr == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"),
idx, section_name (ebl, idx), shdr->sh_link);
@@ -2333,17 +2337,17 @@ section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"),
: (size_t) ebl_sysvhash_entrysize (ebl));
if (shdr->sh_entsize != expect_entsize)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash table entry size incorrect\n"),
idx, section_name (ebl, idx));
if ((shdr->sh_flags & SHF_ALLOC) == 0)
- ERROR (gettext ("section [%2d] '%s': not marked to be allocated\n"),
+ ERROR (_("section [%2d] '%s': not marked to be allocated\n"),
idx, section_name (ebl, idx));
if (shdr->sh_size < (tag == SHT_GNU_HASH ? 4 : 2) * (expect_entsize ?: 4))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': hash table has not even room for initial administrative entries\n"),
idx, section_name (ebl, idx));
return;
@@ -2392,7 +2396,7 @@ compare_hash_gnu_hash (Ebl *ebl, GElf_Ehdr *ehdr, size_t hash_idx,
/* The link must point to the same symbol table. */
if (hash_shdr->sh_link != gnu_hash_shdr->sh_link)
{
- ERROR (gettext ("\
+ ERROR (_("\
sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"),
hash_idx, elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name),
gnu_hash_idx,
@@ -2416,7 +2420,7 @@ sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"),
if (gnu_hash_data->d_size < 4 * sizeof (Elf32_Word))
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' does not contain enough data\n"),
gnu_hash_idx, gnu_hash_name);
return;
@@ -2437,7 +2441,7 @@ hash section [%2zu] '%s' does not contain enough data\n"),
if (gnu_hasharr[2] == 0)
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' has zero bit mask words\n"),
gnu_hash_idx, gnu_hash_name);
return;
@@ -2448,7 +2452,7 @@ hash section [%2zu] '%s' has zero bit mask words\n"),
uint32_t max_nsyms = (gnu_hash_data->d_size - used_buf) / sizeof (Elf32_Word);
if (used_buf > gnu_hash_data->d_size)
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' uses too much data\n"),
gnu_hash_idx, gnu_hash_name);
return;
@@ -2463,7 +2467,7 @@ hash section [%2zu] '%s' uses too much data\n"),
{
if (symidx >= max_nsyms || symidx + gnu_symbias >= nentries)
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' invalid symbol index %" PRIu32 " (max_nsyms: %" PRIu32 ", nentries: %" PRIu32 "\n"),
gnu_hash_idx, gnu_hash_name, symidx, max_nsyms, nentries);
return;
@@ -2481,7 +2485,7 @@ hash section [%2zu] '%s' invalid symbol index %" PRIu32 " (max_nsyms: %" PRIu32
const Elf32_Word *hasharr = (Elf32_Word *) hash_data->d_buf;
if (hash_data->d_size < 2 * sizeof (Elf32_Word))
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' does not contain enough data\n"),
hash_idx, hash_name);
return;
@@ -2492,7 +2496,7 @@ hash section [%2zu] '%s' does not contain enough data\n"),
uint64_t hash_used = (2ULL + nchain + nbucket) * sizeof (Elf32_Word);
if (hash_used > hash_data->d_size)
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' uses too much data\n"),
hash_idx, hash_name);
return;
@@ -2516,7 +2520,7 @@ hash section [%2zu] '%s' uses too much data\n"),
const Elf64_Xword *hasharr = (Elf64_Xword *) hash_data->d_buf;
if (hash_data->d_size < 2 * sizeof (Elf32_Word))
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' does not contain enough data\n"),
hash_idx, hash_name);
return;
@@ -2529,7 +2533,7 @@ hash section [%2zu] '%s' does not contain enough data\n"),
|| maxwords - 2 < nbucket
|| maxwords - 2 - nbucket < nchain)
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' uses too much data\n"),
hash_idx, hash_name);
return;
@@ -2550,7 +2554,7 @@ hash section [%2zu] '%s' uses too much data\n"),
}
else
{
- ERROR (gettext ("\
+ ERROR (_("\
hash section [%2zu] '%s' invalid sh_entsize\n"),
hash_idx, hash_name);
return;
@@ -2560,18 +2564,18 @@ hash section [%2zu] '%s' invalid sh_entsize\n"),
(unless the symbol is undefined in which case it can be omitted
in the new table format). */
if ((used[0] & 1) != 0)
- ERROR (gettext ("section [%2zu] '%s': reference to symbol index 0\n"),
+ ERROR (_("section [%2zu] '%s': reference to symbol index 0\n"),
gnu_hash_idx,
elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name));
if ((used[0] & 2) != 0)
- ERROR (gettext ("section [%2zu] '%s': reference to symbol index 0\n"),
+ ERROR (_("section [%2zu] '%s': reference to symbol index 0\n"),
hash_idx, elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name));
for (uint32_t cnt = 1; cnt < nentries; ++cnt)
if (used[cnt] != 0 && used[cnt] != 3)
{
if (used[cnt] == 1)
- ERROR (gettext ("\
+ ERROR (_("\
symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash table in [%2zu] '%s'\n"),
cnt, gnu_hash_idx,
elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name),
@@ -2583,7 +2587,7 @@ symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash table
GElf_Sym *sym = gelf_getsym (sym_data, cnt, &sym_mem);
if (sym != NULL && sym->st_shndx != STN_UNDEF)
- ERROR (gettext ("\
+ ERROR (_("\
symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash table in [%2zu] '%s'\n"),
cnt, hash_idx,
elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name),
@@ -2599,7 +2603,7 @@ check_null (Ebl *ebl, GElf_Shdr *shdr, int idx)
{
#define TEST(name, extra) \
if (extra && shdr->sh_##name != 0) \
- ERROR (gettext ("section [%2d] '%s': nonzero sh_%s for NULL section\n"), \
+ ERROR (_("section [%2d] '%s': nonzero sh_%s for NULL section\n"), \
idx, section_name (ebl, idx), #name)
TEST (name, 1);
@@ -2619,7 +2623,7 @@ check_group (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
{
if (ehdr->e_type != ET_REL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section groups only allowed in relocatable object files\n"),
idx, section_name (ebl, idx));
return;
@@ -2630,51 +2634,51 @@ section [%2d] '%s': section groups only allowed in relocatable object files\n"),
GElf_Shdr symshdr_mem;
GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem);
if (symshdr == NULL)
- ERROR (gettext ("section [%2d] '%s': cannot get symbol table: %s\n"),
+ ERROR (_("section [%2d] '%s': cannot get symbol table: %s\n"),
idx, section_name (ebl, idx), elf_errmsg (-1));
else
{
if (symshdr->sh_type != SHT_SYMTAB)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section reference in sh_link is no symbol table\n"),
idx, section_name (ebl, idx));
if (shdr->sh_info >= symshdr->sh_size / gelf_fsize (ebl->elf, ELF_T_SYM,
1, EV_CURRENT))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': invalid symbol index in sh_info\n"),
idx, section_name (ebl, idx));
if (shdr->sh_flags != 0)
- ERROR (gettext ("section [%2d] '%s': sh_flags not zero\n"),
+ ERROR (_("section [%2d] '%s': sh_flags not zero\n"),
idx, section_name (ebl, idx));
GElf_Sym sym_data;
GElf_Sym *sym = gelf_getsym (elf_getdata (symscn, NULL), shdr->sh_info,
&sym_data);
if (sym == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': cannot get symbol for signature\n"),
idx, section_name (ebl, idx));
else if (elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name) == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': cannot get symbol name for signature\n"),
idx, section_name (ebl, idx));
else if (strcmp (elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name),
"") == 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': signature symbol cannot be empty string\n"),
idx, section_name (ebl, idx));
if (be_strict
&& shdr->sh_entsize != elf32_fsize (ELF_T_WORD, 1, EV_CURRENT))
- ERROR (gettext ("section [%2d] '%s': sh_flags not set correctly\n"),
+ ERROR (_("section [%2d] '%s': sh_flags not set correctly\n"),
idx, section_name (ebl, idx));
}
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL || data->d_buf == NULL)
- ERROR (gettext ("section [%2d] '%s': cannot get data: %s\n"),
+ ERROR (_("section [%2d] '%s': cannot get data: %s\n"),
idx, section_name (ebl, idx), elf_errmsg (-1));
else
{
@@ -2683,13 +2687,13 @@ section [%2d] '%s': signature symbol cannot be empty string\n"),
Elf32_Word val;
if (data->d_size % elsize != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"),
idx, section_name (ebl, idx));
if (data->d_size < elsize)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section group without flags word\n"),
idx, section_name (ebl, idx));
return;
@@ -2697,11 +2701,11 @@ section [%2d] '%s': section group without flags word\n"),
else if (be_strict)
{
if (data->d_size < 2 * elsize)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section group without member\n"),
idx, section_name (ebl, idx));
else if (data->d_size < 3 * elsize)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section group with only one member\n"),
idx, section_name (ebl, idx));
}
@@ -2712,7 +2716,7 @@ section [%2d] '%s': section group with only one member\n"),
memcpy (&val, data->d_buf, elsize);
#endif
if ((val & ~GRP_COMDAT) != 0)
- ERROR (gettext ("section [%2d] '%s': unknown section group flags\n"),
+ ERROR (_("section [%2d] '%s': unknown section group flags\n"),
idx, section_name (ebl, idx));
for (cnt = elsize; cnt + elsize <= data->d_size; cnt += elsize)
@@ -2724,7 +2728,7 @@ section [%2d] '%s': section group with only one member\n"),
#endif
if (val > shnum)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section index %zu out of range\n"),
idx, section_name (ebl, idx), cnt / elsize);
else
@@ -2733,27 +2737,27 @@ section [%2d] '%s': section index %zu out of range\n"),
GElf_Shdr *refshdr = gelf_getshdr (elf_getscn (ebl->elf, val),
&refshdr_mem);
if (refshdr == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': cannot get section header for element %zu: %s\n"),
idx, section_name (ebl, idx), cnt / elsize,
elf_errmsg (-1));
else
{
if (refshdr->sh_type == SHT_GROUP)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': section group contains another group [%2d] '%s'\n"),
idx, section_name (ebl, idx),
val, section_name (ebl, val));
if ((refshdr->sh_flags & SHF_GROUP) == 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': element %zu references section [%2d] '%s' without SHF_GROUP flag set\n"),
idx, section_name (ebl, idx), cnt / elsize,
val, section_name (ebl, val));
}
if (val < shnum && ++scnref[val] == 2)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s' is contained in more than one section group\n"),
val, section_name (ebl, val));
}
@@ -2785,7 +2789,10 @@ section_flags_string (GElf_Word flags, char *buf, size_t len)
NEWFLAG (OS_NONCONFORMING),
NEWFLAG (GROUP),
NEWFLAG (TLS),
- NEWFLAG (COMPRESSED)
+ NEWFLAG (COMPRESSED),
+ NEWFLAG (GNU_RETAIN),
+ NEWFLAG (ORDERED),
+ NEWFLAG (EXCLUDE)
};
#undef NEWFLAG
const size_t nknown_flags = sizeof (known_flags) / sizeof (known_flags[0]);
@@ -2809,8 +2816,12 @@ section_flags_string (GElf_Word flags, char *buf, size_t len)
}
if (flags != 0 || cp == buf)
- snprintf (cp, len - 1, "%" PRIx64, (uint64_t) flags);
-
+ {
+ int r = snprintf (cp, len - 1, "%s%" PRIx64,
+ (cp == buf) ? "" : "|", (uint64_t) flags);
+ if (r > 0)
+ cp += r;
+ }
*cp = '\0';
return buf;
@@ -2929,7 +2940,7 @@ check_versym (Ebl *ebl, int idx)
Elf_Data *data = elf_getdata (scn, NULL);
if (data == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
@@ -2943,7 +2954,7 @@ check_versym (Ebl *ebl, int idx)
if (symshdr->sh_type != SHT_DYNSYM)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no dynamic symbol table\n"),
idx, section_name (ebl, idx),
shdr->sh_link, section_name (ebl, shdr->sh_link));
@@ -2955,7 +2966,7 @@ section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no dynamic s
if (shdr->sh_entsize != 0 && symshdr->sh_entsize != 0
&& (shdr->sh_size / shdr->sh_entsize
!= symshdr->sh_size / symshdr->sh_entsize))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s' has different number of entries than symbol table [%2d] '%s'\n"),
idx, section_name (ebl, idx),
shdr->sh_link, section_name (ebl, shdr->sh_link));
@@ -2971,7 +2982,7 @@ section [%2d] '%s' has different number of entries than symbol table [%2d] '%s'\
GElf_Versym *versym = gelf_getversym (data, cnt, &versym_mem);
if (versym == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol %d: cannot read version data\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -2987,7 +2998,7 @@ section [%2d] '%s': symbol %d: cannot read version data\n"),
{
/* Global symbol. Make sure it is not defined as local. */
if (GELF_ST_BIND (sym->st_info) == STB_LOCAL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol %d: local symbol with global scope\n"),
idx, section_name (ebl, idx), cnt);
}
@@ -2995,7 +3006,7 @@ section [%2d] '%s': symbol %d: local symbol with global scope\n"),
{
/* Versioned symbol. Make sure it is not defined as local. */
if (!gnuld && GELF_ST_BIND (sym->st_info) == STB_LOCAL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol %d: local symbol with version\n"),
idx, section_name (ebl, idx), cnt);
@@ -3009,12 +3020,12 @@ section [%2d] '%s': symbol %d: local symbol with version\n"),
runp = runp->next;
if (runp == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol %d: invalid version index %d\n"),
idx, section_name (ebl, idx), cnt, (int) *versym);
else if (sym->st_shndx == SHN_UNDEF
&& runp->type == ver_def)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol %d: version index %d is for defined version\n"),
idx, section_name (ebl, idx), cnt, (int) *versym);
else if (sym->st_shndx != SHN_UNDEF
@@ -3024,7 +3035,7 @@ section [%2d] '%s': symbol %d: version index %d is for defined version\n"),
this must not happen. */
if (!has_copy_reloc (ebl, shdr->sh_link, cnt)
&& !in_nobits_scn (ebl, sym->st_shndx))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': symbol %d: version index %d is for requested version\n"),
idx, section_name (ebl, idx), cnt, (int) *versym);
}
@@ -3077,7 +3088,7 @@ static void
check_verneed (Ebl *ebl, GElf_Shdr *shdr, int idx)
{
if (++nverneed == 2)
- ERROR (gettext ("more than one version reference section present\n"));
+ ERROR (_("more than one version reference section present\n"));
GElf_Shdr strshdr_mem;
GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
@@ -3085,14 +3096,14 @@ check_verneed (Ebl *ebl, GElf_Shdr *shdr, int idx)
if (strshdr == NULL)
return;
if (strshdr->sh_type != SHT_STRTAB)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': sh_link does not link to string table\n"),
idx, section_name (ebl, idx));
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
@@ -3110,14 +3121,14 @@ section [%2d] '%s': sh_link does not link to string table\n"),
unsigned int auxoffset = offset + need->vn_aux;
if (need->vn_version != EV_CURRENT)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has wrong version %d\n"),
idx, section_name (ebl, idx), cnt, (int) need->vn_version);
if (need->vn_cnt > 0 && need->vn_aux < gelf_fsize (ebl->elf, ELF_T_VNEED,
1, EV_CURRENT))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -3127,7 +3138,7 @@ section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"),
need->vn_file);
if (libname == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has invalid file reference\n"),
idx, section_name (ebl, idx), cnt);
goto next_need;
@@ -3135,7 +3146,7 @@ section [%2d] '%s': entry %d has invalid file reference\n"),
/* Check that there is a DT_NEEDED entry for the referenced library. */
if (unknown_dependency_p (ebl->elf, libname))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d references unknown dependency\n"),
idx, section_name (ebl, idx), cnt);
@@ -3147,7 +3158,7 @@ section [%2d] '%s': entry %d references unknown dependency\n"),
break;
if ((aux->vna_flags & ~VER_FLG_WEAK) != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"),
idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
@@ -3155,7 +3166,7 @@ section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"),
aux->vna_name);
if (verstr == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': auxiliary entry %d of entry %d has invalid name reference\n"),
idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
break;
@@ -3164,7 +3175,7 @@ section [%2d] '%s': auxiliary entry %d of entry %d has invalid name reference\n"
{
GElf_Word hashval = elf_hash (verstr);
if (hashval != aux->vna_hash)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: %#x, expected %#x\n"),
idx, section_name (ebl, idx), need->vn_cnt - cnt2,
cnt, (int) hashval, (int) aux->vna_hash);
@@ -3173,7 +3184,7 @@ section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: %#x, ex
ver_need);
if (unlikely (res !=0))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version name '%s'\n"),
idx, section_name (ebl, idx), need->vn_cnt - cnt2,
cnt, verstr);
@@ -3184,7 +3195,7 @@ section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version name '%
&& aux->vna_next < gelf_fsize (ebl->elf, ELF_T_VNAUX, 1,
EV_CURRENT))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"),
idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
break;
@@ -3201,7 +3212,7 @@ section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"),
if ((need->vn_next != 0 || cnt > 0)
&& offset < auxoffset)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has invalid offset to next entry\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -3209,7 +3220,7 @@ section [%2d] '%s': entry %d has invalid offset to next entry\n"),
if (need->vn_next == 0 && cnt > 0)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says there are more entries\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -3224,7 +3235,7 @@ static void
check_verdef (Ebl *ebl, GElf_Shdr *shdr, int idx)
{
if (++nverdef == 2)
- ERROR (gettext ("more than one version definition section present\n"));
+ ERROR (_("more than one version definition section present\n"));
GElf_Shdr strshdr_mem;
GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
@@ -3232,7 +3243,7 @@ check_verdef (Ebl *ebl, GElf_Shdr *shdr, int idx)
if (strshdr == NULL)
return;
if (strshdr->sh_type != SHT_STRTAB)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': sh_link does not link to string table\n"),
idx, section_name (ebl, idx));
@@ -3240,7 +3251,7 @@ section [%2d] '%s': sh_link does not link to string table\n"),
if (data == NULL)
{
no_data:
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
@@ -3271,29 +3282,29 @@ section [%2d] '%s': sh_link does not link to string table\n"),
if ((def->vd_flags & VER_FLG_BASE) != 0)
{
if (has_base)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': more than one BASE definition\n"),
idx, section_name (ebl, idx));
if (def->vd_ndx != VER_NDX_GLOBAL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"),
idx, section_name (ebl, idx));
has_base = true;
}
if ((def->vd_flags & ~(VER_FLG_BASE|VER_FLG_WEAK)) != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has unknown flag\n"),
idx, section_name (ebl, idx), cnt);
if (def->vd_version != EV_CURRENT)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has wrong version %d\n"),
idx, section_name (ebl, idx), cnt, (int) def->vd_version);
if (def->vd_cnt > 0 && def->vd_aux < gelf_fsize (ebl->elf, ELF_T_VDEF,
1, EV_CURRENT))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -3308,14 +3319,14 @@ section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"),
const char *name = elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name);
if (name == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has invalid name reference\n"),
idx, section_name (ebl, idx), cnt);
goto next_def;
}
GElf_Word hashval = elf_hash (name);
if (def->vd_hash != hashval)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"),
idx, section_name (ebl, idx), cnt, (int) hashval,
(int) def->vd_hash);
@@ -3323,7 +3334,7 @@ section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"),
int res = add_version (NULL, name, def->vd_ndx, ver_def);
if (unlikely (res !=0))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has duplicate version name '%s'\n"),
idx, section_name (ebl, idx), cnt, name);
}
@@ -3343,7 +3354,7 @@ section [%2d] '%s': entry %d has duplicate version name '%s'\n"),
name = elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name);
if (name == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -3360,7 +3371,7 @@ section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"),
&& aux->vda_next < gelf_fsize (ebl->elf, ELF_T_VDAUX, 1,
EV_CURRENT))
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -3377,7 +3388,7 @@ section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"),
if ((def->vd_next != 0 || cnt > 0)
&& offset < auxoffset)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has invalid offset to next entry\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -3385,7 +3396,7 @@ section [%2d] '%s': entry %d has invalid offset to next entry\n"),
if (def->vd_next == 0 && cnt > 0)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says there are more entries\n"),
idx, section_name (ebl, idx), cnt);
break;
@@ -3393,7 +3404,7 @@ section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says the
}
if (!has_base)
- ERROR (gettext ("section [%2d] '%s': no BASE definition\n"),
+ ERROR (_("section [%2d] '%s': no BASE definition\n"),
idx, section_name (ebl, idx));
/* Check whether the referenced names are available. */
@@ -3409,7 +3420,7 @@ section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says the
}
if (runp == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': unknown parent version '%s'\n"),
idx, section_name (ebl, idx), namelist->name);
@@ -3422,7 +3433,7 @@ check_attributes (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
{
if (shdr->sh_size == 0)
{
- ERROR (gettext ("section [%2d] '%s': empty object attributes section\n"),
+ ERROR (_("section [%2d] '%s': empty object attributes section\n"),
idx, section_name (ebl, idx));
return;
}
@@ -3430,7 +3441,7 @@ check_attributes (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
Elf_Data *data = elf_rawdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL || data->d_size == 0 || data->d_buf == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
@@ -3443,7 +3454,7 @@ check_attributes (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
const unsigned char *p = data->d_buf;
if (*p++ != 'A')
{
- ERROR (gettext ("section [%2d] '%s': unrecognized attribute format\n"),
+ ERROR (_("section [%2d] '%s': unrecognized attribute format\n"),
idx, section_name (ebl, idx));
return;
}
@@ -3459,7 +3470,7 @@ check_attributes (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
memcpy (&len, p, sizeof len);
if (len == 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: zero length field in attribute section\n"),
idx, section_name (ebl, idx), pos (p));
@@ -3468,7 +3479,7 @@ section [%2d] '%s': offset %zu: zero length field in attribute section\n"),
if (len > left ())
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: invalid length in attribute section\n"),
idx, section_name (ebl, idx), pos (p));
break;
@@ -3480,7 +3491,7 @@ section [%2d] '%s': offset %zu: invalid length in attribute section\n"),
unsigned const char *q = memchr (name, '\0', len);
if (q == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: unterminated vendor name string\n"),
idx, section_name (ebl, idx), pos (p));
break;
@@ -3497,7 +3508,7 @@ section [%2d] '%s': offset %zu: unterminated vendor name string\n"),
if (q >= p)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"),
idx, section_name (ebl, idx), pos (chunk));
break;
@@ -3506,7 +3517,7 @@ section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"),
uint32_t subsection_len;
if (p - q < (ptrdiff_t) sizeof subsection_len)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: truncated attribute section\n"),
idx, section_name (ebl, idx), pos (q));
break;
@@ -3515,7 +3526,7 @@ section [%2d] '%s': offset %zu: truncated attribute section\n"),
memcpy (&subsection_len, q, sizeof subsection_len);
if (subsection_len == 0)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"),
idx, section_name (ebl, idx), pos (q));
@@ -3530,7 +3541,7 @@ section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"),
if (p - chunk < (ptrdiff_t) subsection_len
|| subsection_len >= (uint32_t) PTRDIFF_MAX)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"),
idx, section_name (ebl, idx), pos (q));
break;
@@ -3541,7 +3552,7 @@ section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"),
q = subsection_end;
if (subsection_tag != 1) /* Tag_File */
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"),
idx, section_name (ebl, idx), pos (chunk), subsection_tag);
else
@@ -3559,7 +3570,7 @@ section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"),
get_uleb128 (value, r, q);
if (r > q)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"),
idx, section_name (ebl, idx), pos (chunk));
break;
@@ -3570,7 +3581,7 @@ section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"),
r = memchr (r, '\0', q - r);
if (r == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: unterminated string in attribute\n"),
idx, section_name (ebl, idx), pos (chunk));
break;
@@ -3583,11 +3594,11 @@ section [%2d] '%s': offset %zu: unterminated string in attribute\n"),
if (!ebl_check_object_attribute (ebl, (const char *) name,
tag, value,
&tag_name, &value_name))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"),
idx, section_name (ebl, idx), pos (chunk), tag);
else if ((tag & 1) == 0 && value_name == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: unrecognized %s attribute value %" PRIu64 "\n"),
idx, section_name (ebl, idx), pos (chunk),
tag_name, value);
@@ -3597,13 +3608,13 @@ section [%2d] '%s': offset %zu: unrecognized %s attribute value %" PRIu64 "\n"),
}
}
else
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: vendor '%s' unknown\n"),
idx, section_name (ebl, idx), pos (p), name);
}
if (left () != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"),
idx, section_name (ebl, idx), pos (p));
}
@@ -3627,6 +3638,7 @@ static const struct
{ ".data", 6, SHT_PROGBITS, exact, SHF_ALLOC | SHF_WRITE, 0 },
{ ".data1", 7, SHT_PROGBITS, exact, SHF_ALLOC | SHF_WRITE, 0 },
{ ".debug_str", 11, SHT_PROGBITS, exact_or_gnuld, SHF_MERGE | SHF_STRINGS, 0 },
+ { ".debug_line_str", 16, SHT_PROGBITS, exact_or_gnuld, SHF_MERGE | SHF_STRINGS, 0 },
{ ".debug", 6, SHT_PROGBITS, exact, 0, 0 },
{ ".dynamic", 9, SHT_DYNAMIC, atleast, SHF_ALLOC, SHF_WRITE },
{ ".dynstr", 8, SHT_STRTAB, exact, SHF_ALLOC, 0 },
@@ -3669,8 +3681,15 @@ static const struct
&& !memcmp (special_sections[idx].name, string, \
sizeof string - (prefix ? 1 : 0)))
+/* Extra section flags that might or might not be added to the section
+ and have to be ignored. */
+#define EXTRA_SHFLAGS (SHF_LINK_ORDER \
+ | SHF_GNU_RETAIN \
+ | SHF_GROUP \
+ | SHF_COMPRESSED)
+
-/* Indeces of some sections we need later. */
+/* Indices of some sections we need later. */
static size_t eh_frame_hdr_scnndx;
static size_t eh_frame_scnndx;
static size_t gcc_except_table_scnndx;
@@ -3692,34 +3711,34 @@ check_sections (Ebl *ebl, GElf_Ehdr *ehdr)
GElf_Shdr shdr_mem;
GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
if (shdr == NULL)
- ERROR (gettext ("cannot get section header of zeroth section\n"));
+ ERROR (_("cannot get section header of zeroth section\n"));
else
{
if (shdr->sh_name != 0)
- ERROR (gettext ("zeroth section has nonzero name\n"));
+ ERROR (_("zeroth section has nonzero name\n"));
if (shdr->sh_type != 0)
- ERROR (gettext ("zeroth section has nonzero type\n"));
+ ERROR (_("zeroth section has nonzero type\n"));
if (shdr->sh_flags != 0)
- ERROR (gettext ("zeroth section has nonzero flags\n"));
+ ERROR (_("zeroth section has nonzero flags\n"));
if (shdr->sh_addr != 0)
- ERROR (gettext ("zeroth section has nonzero address\n"));
+ ERROR (_("zeroth section has nonzero address\n"));
if (shdr->sh_offset != 0)
- ERROR (gettext ("zeroth section has nonzero offset\n"));
+ ERROR (_("zeroth section has nonzero offset\n"));
if (shdr->sh_addralign != 0)
- ERROR (gettext ("zeroth section has nonzero align value\n"));
+ ERROR (_("zeroth section has nonzero align value\n"));
if (shdr->sh_entsize != 0)
- ERROR (gettext ("zeroth section has nonzero entry size value\n"));
+ ERROR (_("zeroth section has nonzero entry size value\n"));
if (shdr->sh_size != 0 && ehdr->e_shnum != 0)
- ERROR (gettext ("\
+ ERROR (_("\
zeroth section has nonzero size value while ELF header has nonzero shnum value\n"));
if (shdr->sh_link != 0 && ehdr->e_shstrndx != SHN_XINDEX)
- ERROR (gettext ("\
+ ERROR (_("\
zeroth section has nonzero link value while ELF header does not signal overflow in shstrndx\n"));
if (shdr->sh_info != 0 && ehdr->e_phnum != PN_XNUM)
- ERROR (gettext ("\
+ ERROR (_("\
zeroth section has nonzero link value while ELF header does not signal overflow in phnum\n"));
}
@@ -3737,7 +3756,7 @@ zeroth section has nonzero link value while ELF header does not signal overflow
shdr = gelf_getshdr (scn, &shdr_mem);
if (shdr == NULL)
{
- ERROR (gettext ("\
+ ERROR (_("\
cannot get section header for section [%2zu] '%s': %s\n"),
cnt, section_name (ebl, cnt), elf_errmsg (-1));
continue;
@@ -3746,7 +3765,7 @@ cannot get section header for section [%2zu] '%s': %s\n"),
const char *scnname = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
if (scnname == NULL)
- ERROR (gettext ("section [%2zu]: invalid name\n"), cnt);
+ ERROR (_("section [%2zu]: invalid name\n"), cnt);
else
{
/* Check whether it is one of the special sections defined in
@@ -3773,7 +3792,7 @@ cannot get section header for section [%2zu] '%s': %s\n"),
|| IS_KNOWN_SPECIAL (s, ".debug_str", false)
|| IS_KNOWN_SPECIAL (s, ".debug", true)
|| IS_KNOWN_SPECIAL (s, ".shstrtab", false)))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s' has wrong type: expected %s, is %s\n"),
(int) cnt, scnname,
ebl_section_type_name (ebl, special_sections[s].type,
@@ -3784,20 +3803,19 @@ section [%2d] '%s' has wrong type: expected %s, is %s\n"),
if (special_sections[s].attrflag == exact
|| special_sections[s].attrflag == exact_or_gnuld)
{
- /* Except for the link order, group bit and
+ /* Except for the link order, retain, group bit and
compression flag all the other bits should
match exactly. */
- if ((shdr->sh_flags
- & ~(SHF_LINK_ORDER | SHF_GROUP | SHF_COMPRESSED))
+ if ((shdr->sh_flags & ~EXTRA_SHFLAGS)
!= special_sections[s].attr
&& (special_sections[s].attrflag == exact || !gnuld))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has wrong flags: expected %s, is %s\n"),
cnt, scnname,
section_flags_string (special_sections[s].attr,
stbuf1, sizeof (stbuf1)),
section_flags_string (shdr->sh_flags
- & ~SHF_LINK_ORDER,
+ & ~EXTRA_SHFLAGS,
stbuf2, sizeof (stbuf2)));
}
else if (special_sections[s].attrflag == atleast)
@@ -3805,11 +3823,11 @@ section [%2zu] '%s' has wrong flags: expected %s, is %s\n"),
if ((shdr->sh_flags & special_sections[s].attr)
!= special_sections[s].attr
|| ((shdr->sh_flags
- & ~(SHF_LINK_ORDER | SHF_GROUP | SHF_COMPRESSED
+ & ~(EXTRA_SHFLAGS
| special_sections[s].attr
| special_sections[s].attr2))
!= 0))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"),
cnt, scnname,
section_flags_string (special_sections[s].attr,
@@ -3817,8 +3835,7 @@ section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"),
section_flags_string (special_sections[s].attr2,
stbuf2, sizeof (stbuf2)),
section_flags_string (shdr->sh_flags
- & ~(SHF_LINK_ORDER
- | SHF_GROUP),
+ & ~EXTRA_SHFLAGS,
stbuf3, sizeof (stbuf3)));
}
@@ -3827,18 +3844,18 @@ section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"),
dot_interp_section = true;
if (ehdr->e_type == ET_REL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' present in object file\n"),
cnt, scnname);
if ((shdr->sh_flags & SHF_ALLOC) != 0
&& !has_loadable_segment)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"),
cnt, scnname);
else if ((shdr->sh_flags & SHF_ALLOC) == 0
&& has_loadable_segment)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable segments\n"),
cnt, scnname);
}
@@ -3846,7 +3863,7 @@ section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable segments\n
{
if (strcmp (scnname, ".symtab_shndx") == 0
&& ehdr->e_type != ET_REL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' is extension section index table in non-object file\n"),
cnt, scnname);
@@ -3865,12 +3882,12 @@ section [%2zu] '%s' is extension section index table in non-object file\n"),
// XXX TODO
if ((shdr->sh_flags & SHF_ALLOC) != 0
&& !has_loadable_segment)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"),
cnt, scnname);
else if ((shdr->sh_flags & SHF_ALLOC) == 0
&& has_loadable_segment)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable segments\n"),
cnt, scnname);
#endif
@@ -3889,12 +3906,12 @@ section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable segments\n
}
if (shdr->sh_entsize != 0 && shdr->sh_size % shdr->sh_entsize)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': size not multiple of entry size\n"),
cnt, section_name (ebl, cnt));
if (elf_strptr (ebl->elf, shstrndx, shdr->sh_name) == NULL)
- ERROR (gettext ("cannot get section header\n"));
+ ERROR (_("cannot get section header\n"));
if (shdr->sh_type >= SHT_NUM
&& shdr->sh_type != SHT_GNU_ATTRIBUTES
@@ -3904,29 +3921,37 @@ section [%2zu] '%s': size not multiple of entry size\n"),
&& shdr->sh_type != SHT_GNU_verneed
&& shdr->sh_type != SHT_GNU_versym
&& ebl_section_type_name (ebl, shdr->sh_type, NULL, 0) == NULL)
- ERROR (gettext ("section [%2zu] '%s' has unsupported type %d\n"),
+ ERROR (_("section [%2zu] '%s' has unsupported type %d\n"),
cnt, section_name (ebl, cnt),
(int) shdr->sh_type);
#define ALL_SH_FLAGS (SHF_WRITE | SHF_ALLOC | SHF_EXECINSTR | SHF_MERGE \
| SHF_STRINGS | SHF_INFO_LINK | SHF_LINK_ORDER \
| SHF_OS_NONCONFORMING | SHF_GROUP | SHF_TLS \
- | SHF_COMPRESSED)
+ | SHF_COMPRESSED | SHF_GNU_RETAIN)
if (shdr->sh_flags & ~(GElf_Xword) ALL_SH_FLAGS)
{
GElf_Xword sh_flags = shdr->sh_flags & ~(GElf_Xword) ALL_SH_FLAGS;
if (sh_flags & SHF_MASKPROC)
{
+ /* Strictly speaking SHF_EXCLUDE is a processor specific
+ section flag, but it is used generically in the GNU
+ toolchain. */
+ if (gnuld)
+ sh_flags &= ~(GElf_Xword) SHF_EXCLUDE;
if (!ebl_machine_section_flag_check (ebl,
sh_flags & SHF_MASKPROC))
- ERROR (gettext ("section [%2zu] '%s'"
+ ERROR (_("section [%2zu] '%s'"
" contains invalid processor-specific flag(s)"
" %#" PRIx64 "\n"),
cnt, section_name (ebl, cnt), sh_flags & SHF_MASKPROC);
sh_flags &= ~(GElf_Xword) SHF_MASKPROC;
}
+ if (sh_flags & SHF_MASKOS)
+ if (gnuld)
+ sh_flags &= ~(GElf_Xword) SHF_GNU_RETAIN;
if (sh_flags != 0)
- ERROR (gettext ("section [%2zu] '%s' contains unknown flag(s)"
+ ERROR (_("section [%2zu] '%s' contains unknown flag(s)"
" %#" PRIx64 "\n"),
cnt, section_name (ebl, cnt), sh_flags);
}
@@ -3934,7 +3959,7 @@ section [%2zu] '%s': size not multiple of entry size\n"),
{
// XXX Correct?
if (shdr->sh_addr != 0 && !gnuld)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': thread-local data sections address not zero\n"),
cnt, section_name (ebl, cnt));
@@ -3944,41 +3969,41 @@ section [%2zu] '%s': thread-local data sections address not zero\n"),
if (shdr->sh_flags & SHF_COMPRESSED)
{
if (shdr->sh_flags & SHF_ALLOC)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': allocated section cannot be compressed\n"),
cnt, section_name (ebl, cnt));
if (shdr->sh_type == SHT_NOBITS)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': nobits section cannot be compressed\n"),
cnt, section_name (ebl, cnt));
GElf_Chdr chdr;
if (gelf_getchdr (scn, &chdr) == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': compressed section with no compression header: %s\n"),
cnt, section_name (ebl, cnt), elf_errmsg (-1));
}
if (shdr->sh_link >= shnum)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': invalid section reference in link value\n"),
cnt, section_name (ebl, cnt));
if (SH_INFO_LINK_P (shdr) && shdr->sh_info >= shnum)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': invalid section reference in info value\n"),
cnt, section_name (ebl, cnt));
if ((shdr->sh_flags & SHF_MERGE) == 0
&& (shdr->sh_flags & SHF_STRINGS) != 0
&& be_strict)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': strings flag set without merge flag\n"),
cnt, section_name (ebl, cnt));
if ((shdr->sh_flags & SHF_MERGE) != 0 && shdr->sh_entsize == 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': merge flag set but entry size is zero\n"),
cnt, section_name (ebl, cnt));
@@ -3997,7 +4022,7 @@ section [%2zu] '%s': merge flag set but entry size is zero\n"),
break;
FALLTHROUGH;
default:
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has unexpected type %d for an executable section\n"),
cnt, section_name (ebl, cnt), shdr->sh_type);
break;
@@ -4006,14 +4031,14 @@ section [%2zu] '%s' has unexpected type %d for an executable section\n"),
if (shdr->sh_flags & SHF_WRITE)
{
if (is_debuginfo && shdr->sh_type != SHT_NOBITS)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"),
cnt, section_name (ebl, cnt));
if (!is_debuginfo
&& !ebl_check_special_section (ebl, cnt, shdr,
section_name (ebl, cnt)))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' is both executable and writable\n"),
cnt, section_name (ebl, cnt));
}
@@ -4044,7 +4069,7 @@ section [%2zu] '%s' is both executable and writable\n"),
/* Found the segment. */
if (phdr->p_offset + phdr->p_memsz
< shdr->sh_offset + shdr->sh_size)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' not fully contained in segment of program header entry %d\n"),
cnt, section_name (ebl, cnt), pcnt);
@@ -4054,7 +4079,7 @@ section [%2zu] '%s' not fully contained in segment of program header entry %d\n"
&& !is_debuginfo)
{
if (!gnuld)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has type NOBITS but is read from the file in segment of program header entry %d\n"),
cnt, section_name (ebl, cnt), pcnt);
else
@@ -4080,7 +4105,7 @@ section [%2zu] '%s' has type NOBITS but is read from the file in segment of prog
bad = ((char *) databits->d_buf)[idx] != 0;
if (bad)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has type NOBITS but is read from the file in segment of program header entry %d and file contents is non-zero\n"),
cnt, section_name (ebl, cnt), pcnt);
}
@@ -4091,7 +4116,7 @@ section [%2zu] '%s' has type NOBITS but is read from the file in segment of prog
const GElf_Off end = phdr->p_offset + phdr->p_filesz;
if (shdr->sh_offset > end ||
(shdr->sh_offset == end && shdr->sh_size != 0))
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' has not type NOBITS but is not read from the file in segment of program header entry %d\n"),
cnt, section_name (ebl, cnt), pcnt);
}
@@ -4102,7 +4127,7 @@ section [%2zu] '%s' has not type NOBITS but is not read from the file in segment
{
segment_flags[pcnt] |= PF_X;
if ((phdr->p_flags & PF_X) == 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' is executable in nonexecutable segment %d\n"),
cnt, section_name (ebl, cnt), pcnt);
}
@@ -4112,7 +4137,7 @@ section [%2zu] '%s' is executable in nonexecutable segment %d\n"),
segment_flags[pcnt] |= PF_W;
if (0 /* XXX vdso images have this */
&& (phdr->p_flags & PF_W) == 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' is writable in unwritable segment %d\n"),
cnt, section_name (ebl, cnt), pcnt);
}
@@ -4122,13 +4147,13 @@ section [%2zu] '%s' is writable in unwritable segment %d\n"),
}
if (pcnt == phnum)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"),
cnt, section_name (ebl, cnt));
}
if (cnt == shstrndx && shdr->sh_type != SHT_STRTAB)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': ELF header says this is the section header string table but type is not SHT_TYPE\n"),
cnt, section_name (ebl, cnt));
@@ -4136,7 +4161,7 @@ section [%2zu] '%s': ELF header says this is the section header string table but
{
case SHT_DYNSYM:
if (ehdr->e_type == ET_REL)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"),
cnt, section_name (ebl, cnt));
FALLTHROUGH;
@@ -4187,7 +4212,7 @@ section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"),
that the verneed and verdef sections have already been read.
Just remember the section index. */
if (versym_scnndx != 0)
- ERROR (gettext ("more than one version symbol table present\n"));
+ ERROR (_("more than one version symbol table present\n"));
versym_scnndx = cnt;
break;
@@ -4210,7 +4235,7 @@ section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"),
}
if (has_interp_segment && !dot_interp_section)
- ERROR (gettext ("INTERP program header entry but no .interp section\n"));
+ ERROR (_("INTERP program header entry but no .interp section\n"));
if (!is_debuginfo)
for (unsigned int pcnt = 0; pcnt < phnum; ++pcnt)
@@ -4221,13 +4246,13 @@ section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"),
{
if ((phdr->p_flags & PF_X) != 0
&& (segment_flags[pcnt] & PF_X) == 0)
- ERROR (gettext ("\
+ ERROR (_("\
loadable segment [%u] is executable but contains no executable sections\n"),
pcnt);
if ((phdr->p_flags & PF_W) != 0
&& (segment_flags[pcnt] & PF_W) == 0)
- ERROR (gettext ("\
+ ERROR (_("\
loadable segment [%u] is writable but contains no writable sections\n"),
pcnt);
}
@@ -4238,7 +4263,7 @@ loadable segment [%u] is writable but contains no writable sections\n"),
if (version_namelist != NULL)
{
if (versym_scnndx == 0)
- ERROR (gettext ("\
+ ERROR (_("\
no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section exist\n"));
else
check_versym (ebl, versym_scnndx);
@@ -4251,7 +4276,7 @@ no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section exist\
{
if (version_namelist->ndx == runp->ndx)
{
- ERROR (gettext ("duplicate version index %d\n"),
+ ERROR (_("duplicate version index %d\n"),
(int) version_namelist->ndx);
break;
}
@@ -4265,7 +4290,7 @@ no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section exist\
while (version_namelist != NULL);
}
else if (versym_scnndx != 0)
- ERROR (gettext ("\
+ ERROR (_("\
.gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"));
if (hash_idx != 0 && gnu_hash_idx != 0)
@@ -4314,11 +4339,11 @@ check_note_data (Ebl *ebl, const GElf_Ehdr *ehdr,
default:
if (shndx == 0)
- ERROR (gettext ("\
+ ERROR (_("\
phdr[%d]: unknown core file note type %" PRIu32 " at offset %" PRIu64 "\n"),
phndx, (uint32_t) nhdr.n_type, start + offset);
else
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': unknown core file note type %" PRIu32
" at offset %zu\n"),
shndx, section_name (ebl, shndx),
@@ -4367,12 +4392,12 @@ section [%2d] '%s': unknown core file note type %" PRIu32
{
unknown_note:
if (shndx == 0)
- ERROR (gettext ("\
+ ERROR (_("\
phdr[%d]: unknown object file note type %" PRIu32 " with owner name '%s' at offset %zu\n"),
phndx, (uint32_t) nhdr.n_type,
(char *) data->d_buf + name_offset, offset);
else
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': unknown object file note type %" PRIu32
" with owner name '%s' at offset %zu\n"),
shndx, section_name (ebl, shndx),
@@ -4391,7 +4416,7 @@ check_note (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Phdr *phdr, int cnt)
{
if (ehdr->e_type != ET_CORE && ehdr->e_type != ET_REL
&& ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN)
- ERROR (gettext ("\
+ ERROR (_("\
phdr[%d]: no note entries defined for the type of file\n"),
cnt);
@@ -4411,10 +4436,10 @@ phdr[%d]: no note entries defined for the type of file\n"),
notes_size = check_note_data (ebl, ehdr, data, 0, cnt, phdr->p_offset);
if (notes_size == 0)
- ERROR (gettext ("phdr[%d]: cannot get content of note section: %s\n"),
+ ERROR (_("phdr[%d]: cannot get content of note section: %s\n"),
cnt, elf_errmsg (-1));
else if (notes_size != phdr->p_filesz)
- ERROR (gettext ("phdr[%d]: extra %" PRIu64 " bytes after last note\n"),
+ ERROR (_("phdr[%d]: extra %" PRIu64 " bytes after last note\n"),
cnt, phdr->p_filesz - notes_size);
}
@@ -4428,24 +4453,24 @@ check_note_section (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
if (data == NULL || data->d_buf == NULL)
{
- ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ ERROR (_("section [%2d] '%s': cannot get section data\n"),
idx, section_name (ebl, idx));
return;
}
if (ehdr->e_type != ET_CORE && ehdr->e_type != ET_REL
&& ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2d] '%s': no note entries defined for the type of file\n"),
idx, section_name (ebl, idx));
GElf_Off notes_size = check_note_data (ebl, ehdr, data, idx, 0, 0);
if (notes_size == 0)
- ERROR (gettext ("section [%2d] '%s': cannot get content of note section\n"),
+ ERROR (_("section [%2d] '%s': cannot get content of note section\n"),
idx, section_name (ebl, idx));
else if (notes_size != shdr->sh_size)
- ERROR (gettext ("section [%2d] '%s': extra %" PRIu64
+ ERROR (_("section [%2d] '%s': extra %" PRIu64
" bytes after last note\n"),
idx, section_name (ebl, idx), shdr->sh_size - notes_size);
}
@@ -4463,7 +4488,7 @@ check_program_header (Ebl *ebl, GElf_Ehdr *ehdr)
if (ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN
&& ehdr->e_type != ET_CORE)
- ERROR (gettext ("\
+ ERROR (_("\
only executables, shared objects, and core files can have program headers\n"));
int num_pt_interp = 0;
@@ -4478,16 +4503,17 @@ only executables, shared objects, and core files can have program headers\n"));
phdr = gelf_getphdr (ebl->elf, cnt, &phdr_mem);
if (phdr == NULL)
{
- ERROR (gettext ("cannot get program header entry %d: %s\n"),
+ ERROR (_("cannot get program header entry %d: %s\n"),
cnt, elf_errmsg (-1));
continue;
}
if (phdr->p_type >= PT_NUM && phdr->p_type != PT_GNU_EH_FRAME
&& phdr->p_type != PT_GNU_STACK && phdr->p_type != PT_GNU_RELRO
+ && phdr->p_type != PT_GNU_PROPERTY
/* Check for a known machine-specific type. */
&& ebl_segment_type_name (ebl, phdr->p_type, NULL, 0) == NULL)
- ERROR (gettext ("\
+ ERROR (_("\
program header entry %d: unknown program header entry type %#" PRIx64 "\n"),
cnt, (uint64_t) phdr->p_type);
@@ -4498,7 +4524,7 @@ program header entry %d: unknown program header entry type %#" PRIx64 "\n"),
if (++num_pt_interp != 1)
{
if (num_pt_interp == 2)
- ERROR (gettext ("\
+ ERROR (_("\
more than one INTERP entry in program header\n"));
}
has_interp_segment = true;
@@ -4506,14 +4532,14 @@ more than one INTERP entry in program header\n"));
else if (phdr->p_type == PT_TLS)
{
if (++num_pt_tls == 2)
- ERROR (gettext ("more than one TLS entry in program header\n"));
+ ERROR (_("more than one TLS entry in program header\n"));
}
else if (phdr->p_type == PT_NOTE)
check_note (ebl, ehdr, phdr, cnt);
else if (phdr->p_type == PT_DYNAMIC)
{
if (ehdr->e_type == ET_EXEC && ! has_interp_segment)
- ERROR (gettext ("\
+ ERROR (_("\
static executable cannot have dynamic sections\n"));
else
{
@@ -4527,10 +4553,10 @@ static executable cannot have dynamic sections\n"));
if (shdr != NULL && shdr->sh_type == SHT_DYNAMIC)
{
if (phdr->p_offset != shdr->sh_offset)
- ERROR (gettext ("\
+ ERROR (_("\
dynamic section reference in program header has wrong offset\n"));
if (phdr->p_memsz != shdr->sh_size)
- ERROR (gettext ("\
+ ERROR (_("\
dynamic section size mismatch in program and section header\n"));
break;
}
@@ -4540,7 +4566,7 @@ dynamic section size mismatch in program and section header\n"));
else if (phdr->p_type == PT_GNU_RELRO)
{
if (++num_pt_relro == 2)
- ERROR (gettext ("\
+ ERROR (_("\
more than one GNU_RELRO entry in program header\n"));
else
{
@@ -4561,7 +4587,7 @@ more than one GNU_RELRO entry in program header\n"));
<= phdr2->p_vaddr + phdr2->p_memsz))
{
if ((phdr2->p_flags & PF_W) == 0)
- ERROR (gettext ("\
+ ERROR (_("\
loadable segment GNU_RELRO applies to is not writable\n"));
/* Unless fully covered, relro flags could be a
subset of the phdrs2 flags. For example the load
@@ -4572,14 +4598,14 @@ loadable segment GNU_RELRO applies to is not writable\n"));
{
if ((phdr2->p_flags & ~PF_W)
!= (phdr->p_flags & ~PF_W))
- ERROR (gettext ("\
+ ERROR (_("\
loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"),
cnt, inner);
}
else
{
if ((phdr->p_flags & ~phdr2->p_flags) != 0)
- ERROR (gettext ("\
+ ERROR (_("\
GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"),
inner, cnt);
}
@@ -4588,7 +4614,7 @@ GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"),
}
if (inner >= phnum)
- ERROR (gettext ("\
+ ERROR (_("\
%s segment not contained in a loaded segment\n"), "GNU_RELRO");
}
}
@@ -4611,13 +4637,13 @@ GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"),
}
if (inner >= phnum)
- ERROR (gettext ("\
+ ERROR (_("\
%s segment not contained in a loaded segment\n"), "PHDR");
/* Check that offset in segment corresponds to offset in ELF
header. */
if (phdr->p_offset != ehdr->e_phoff)
- ERROR (gettext ("\
+ ERROR (_("\
program header offset in ELF header and PHDR entry do not match"));
}
else if (phdr->p_type == PT_GNU_EH_FRAME)
@@ -4644,10 +4670,10 @@ program header offset in ELF header and PHDR entry do not match"));
if (! is_debuginfo)
{
if (phdr->p_offset != shdr->sh_offset)
- ERROR (gettext ("\
+ ERROR (_("\
call frame search table reference in program header has wrong offset\n"));
if (phdr->p_memsz != shdr->sh_size)
- ERROR (gettext ("\
+ ERROR (_("\
call frame search table size mismatch in program and section header\n"));
}
break;
@@ -4660,7 +4686,7 @@ call frame search table size mismatch in program and section header\n"));
complain. But if there is one there should be an
entry for .eh_frame_hdr. */
if (any)
- ERROR (gettext ("\
+ ERROR (_("\
PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"));
}
else
@@ -4668,25 +4694,25 @@ PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"));
/* The section must be allocated and not be writable and
executable. */
if ((phdr->p_flags & PF_R) == 0)
- ERROR (gettext ("\
+ ERROR (_("\
call frame search table must be allocated\n"));
else if (shdr != NULL && (shdr->sh_flags & SHF_ALLOC) == 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' must be allocated\n"), elf_ndxscn (scn), ".eh_frame_hdr");
if ((phdr->p_flags & PF_W) != 0)
- ERROR (gettext ("\
+ ERROR (_("\
call frame search table must not be writable\n"));
else if (shdr != NULL && (shdr->sh_flags & SHF_WRITE) != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' must not be writable\n"),
elf_ndxscn (scn), ".eh_frame_hdr");
if ((phdr->p_flags & PF_X) != 0)
- ERROR (gettext ("\
+ ERROR (_("\
call frame search table must not be executable\n"));
else if (shdr != NULL && (shdr->sh_flags & SHF_EXECINSTR) != 0)
- ERROR (gettext ("\
+ ERROR (_("\
section [%2zu] '%s' must not be executable\n"),
elf_ndxscn (scn), ".eh_frame_hdr");
}
@@ -4697,17 +4723,17 @@ section [%2zu] '%s' must not be executable\n"),
if (phdr->p_filesz > phdr->p_memsz
&& (phdr->p_memsz != 0 || phdr->p_type != PT_NOTE))
- ERROR (gettext ("\
+ ERROR (_("\
program header entry %d: file size greater than memory size\n"),
cnt);
if (phdr->p_align > 1)
{
if (!powerof2 (phdr->p_align))
- ERROR (gettext ("\
+ ERROR (_("\
program header entry %d: alignment not a power of 2\n"), cnt);
else if ((phdr->p_vaddr - phdr->p_offset) % phdr->p_align != 0)
- ERROR (gettext ("\
+ ERROR (_("\
program header entry %d: file offset and virtual address not module of alignment\n"), cnt);
}
}
@@ -4720,7 +4746,7 @@ check_exception_data (Ebl *ebl __attribute__ ((unused)),
{
if ((ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN)
&& pt_gnu_eh_frame_pndx == 0 && eh_frame_hdr_scnndx != 0)
- ERROR (gettext ("executable/DSO with .eh_frame_hdr section does not have "
+ ERROR (_("executable/DSO with .eh_frame_hdr section does not have "
"a PT_GNU_EH_FRAME program header entry"));
}
@@ -4754,14 +4780,21 @@ process_elf_file (Elf *elf, const char *prefix, const char *suffix,
if (ehdr == NULL)
{
- ERROR (gettext ("cannot read ELF header: %s\n"), elf_errmsg (-1));
+ ERROR (_("cannot read ELF header: %s\n"), elf_errmsg (-1));
return;
}
ebl = ebl_openbackend (elf);
/* If there is no appropriate backend library we cannot test
architecture and OS specific features. Any encountered extension
- is an error. */
+ is an error. Often we'll get a "dummy" ebl, except if something
+ really bad happen, like a totally corrupted ELF file or out of
+ memory situation. */
+ if (ebl == NULL)
+ {
+ ERROR (_("cannot create backend for ELF file\n"));
+ return;
+ }
/* Go straight by the gABI, check all the parts in turn. */
check_elf_header (ebl, ehdr, size);
@@ -4780,7 +4813,7 @@ process_elf_file (Elf *elf, const char *prefix, const char *suffix,
/* Report if no relocation section needed the text relocation flag. */
if (textrel && !needed_textrel)
- ERROR (gettext ("text relocation flag set but not needed\n"));
+ ERROR (_("text relocation flag set but not needed\n"));
/* Free the resources. */
ebl_closebackend (ebl);
diff --git a/src/findtextrel.c b/src/findtextrel.c
index f48752e5..220ee909 100644
--- a/src/findtextrel.c
+++ b/src/findtextrel.c
@@ -202,14 +202,14 @@ process_file (const char *fname, bool more_than_one)
int fd = open (real_fname, O_RDONLY);
if (fd == -1)
{
- error (0, errno, gettext ("cannot open '%s'"), fname);
+ error (0, errno, _("cannot open '%s'"), fname);
return 1;
}
Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
if (elf == NULL)
{
- error (0, 0, gettext ("cannot create ELF descriptor for '%s': %s"),
+ error (0, 0, _("cannot create ELF descriptor for '%s': %s"),
fname, elf_errmsg (-1));
goto err_close;
}
@@ -219,7 +219,7 @@ process_file (const char *fname, bool more_than_one)
GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
if (ehdr == NULL)
{
- error (0, 0, gettext ("cannot get ELF header '%s': %s"),
+ error (0, 0, _("cannot get ELF header '%s': %s"),
fname, elf_errmsg (-1));
err_elf_close:
elf_end (elf);
@@ -230,7 +230,7 @@ process_file (const char *fname, bool more_than_one)
if (ehdr->e_type != ET_DYN)
{
- error (0, 0, gettext ("'%s' is not a DSO or PIE"), fname);
+ error (0, 0, _("'%s' is not a DSO or PIE"), fname);
goto err_elf_close;
}
@@ -250,7 +250,7 @@ process_file (const char *fname, bool more_than_one)
if (shdr == NULL)
{
error (0, 0,
- gettext ("getting get section header of section %zu: %s"),
+ _("getting get section header of section %zu: %s"),
elf_ndxscn (scn), elf_errmsg (-1));
goto err_elf_close;
}
@@ -274,7 +274,7 @@ process_file (const char *fname, bool more_than_one)
dyn = gelf_getdyn (data, cnt, &dynmem);
if (dyn == NULL)
{
- error (0, 0, gettext ("cannot read dynamic section: %s"),
+ error (0, 0, _("cannot read dynamic section: %s"),
elf_errmsg (-1));
goto err_elf_close;
}
@@ -295,7 +295,7 @@ process_file (const char *fname, bool more_than_one)
if (!have_textrel)
{
- error (0, 0, gettext ("no text relocations reported in '%s'"), fname);
+ error (0, 0, _("no text relocations reported in '%s'"), fname);
goto err_elf_close;
}
@@ -307,11 +307,11 @@ process_file (const char *fname, bool more_than_one)
struct segments *segments
= (struct segments *) malloc (nsegments_max * sizeof (segments[0]));
if (segments == NULL)
- error (1, errno, gettext ("while reading ELF file"));
+ error (1, errno, _("while reading ELF file"));
size_t phnum;
if (elf_getphdrnum (elf, &phnum) != 0)
- error (1, 0, gettext ("cannot get program header count: %s"),
+ error (1, 0, _("cannot get program header count: %s"),
elf_errmsg (-1));
@@ -322,7 +322,7 @@ process_file (const char *fname, bool more_than_one)
if (phdr == NULL)
{
error (0, 0,
- gettext ("cannot get program header index at offset %zd: %s"),
+ _("cannot get program header index at offset %zd: %s"),
i, elf_errmsg (-1));
result = 1;
goto next;
@@ -339,7 +339,7 @@ process_file (const char *fname, bool more_than_one)
* sizeof (segments[0]));
if (segments == NULL)
{
- error (0, 0, gettext ("\
+ error (0, 0, _("\
cannot get program header index at offset %zd: %s"),
i, elf_errmsg (-1));
result = 1;
@@ -391,7 +391,7 @@ cannot get program header index at offset %zd: %s"),
if (shdr == NULL)
{
error (0, 0,
- gettext ("cannot get section header of section %zu: %s"),
+ _("cannot get section header of section %zu: %s"),
elf_ndxscn (scn), elf_errmsg (-1));
result = 1;
goto next;
@@ -403,7 +403,7 @@ cannot get program header index at offset %zd: %s"),
symscn = elf_getscn (elf, shdr->sh_link);
if (symscn == NULL)
{
- error (0, 0, gettext ("\
+ error (0, 0, _("\
cannot get symbol table section %zu in '%s': %s"),
(size_t) shdr->sh_link, fname, elf_errmsg (-1));
result = 1;
@@ -424,7 +424,7 @@ cannot get symbol table section %zu in '%s': %s"),
GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem);
if (rel == NULL)
{
- error (0, 0, gettext ("\
+ error (0, 0, _("\
cannot get relocation at index %d in section %zu in '%s': %s"),
cnt, elf_ndxscn (scn), fname, elf_errmsg (-1));
result = 1;
@@ -447,7 +447,7 @@ cannot get relocation at index %d in section %zu in '%s': %s"),
GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem);
if (rela == NULL)
{
- error (0, 0, gettext ("\
+ error (0, 0, _("\
cannot get relocation at index %d in section %zu in '%s': %s"),
cnt, elf_ndxscn (scn), fname, elf_errmsg (-1));
result = 1;
@@ -513,7 +513,7 @@ check_rel (size_t nsegments, struct segments segments[nsegments],
pointer comparison. */
if (tfind (src, knownsrcs, ptrcompare) == NULL)
{
- printf (gettext ("%s not compiled with -fpic/-fPIC\n"), src);
+ printf (_("%s not compiled with -fpic/-fPIC\n"), src);
tsearch (src, knownsrcs, ptrcompare);
}
return;
@@ -567,14 +567,14 @@ check_rel (size_t nsegments, struct segments segments[nsegments],
/* It is this function. */
if (tfind (lowstr, knownsrcs, ptrcompare) == NULL)
{
- printf (gettext ("\
+ printf (_("\
the file containing the function '%s' is not compiled with -fpic/-fPIC\n"),
lowstr);
tsearch (lowstr, knownsrcs, ptrcompare);
}
}
else if (highidx == -1)
- printf (gettext ("\
+ printf (_("\
the file containing the function '%s' might not be compiled with -fpic/-fPIC\n"),
lowstr);
else
@@ -582,7 +582,7 @@ the file containing the function '%s' might not be compiled with -fpic/-fPIC\n")
sym = gelf_getsym (symdata, highidx, &sym_mem);
assert (sym != NULL);
- printf (gettext ("\
+ printf (_("\
either the file containing the function '%s' or the file containing the function '%s' is not compiled with -fpic/-fPIC\n"),
lowstr, elf_strptr (elf, shdr->sh_link,
sym->st_name));
@@ -594,7 +594,7 @@ either the file containing the function '%s' or the file containing the function
sym = gelf_getsym (symdata, highidx, &sym_mem);
assert (sym != NULL);
- printf (gettext ("\
+ printf (_("\
the file containing the function '%s' might not be compiled with -fpic/-fPIC\n"),
elf_strptr (elf, shdr->sh_link, sym->st_name));
return;
@@ -602,7 +602,7 @@ the file containing the function '%s' might not be compiled with -fpic/-fPIC\n")
}
}
- printf (gettext ("\
+ printf (_("\
a relocation modifies memory at offset %llu in a write-protected segment\n"),
(unsigned long long int) addr);
break;
diff --git a/src/nm.c b/src/nm.c
index 7f6cf2a2..fb761ef3 100644
--- a/src/nm.c
+++ b/src/nm.c
@@ -1,5 +1,5 @@
/* Print symbol information from ELF file in human-readable form.
- Copyright (C) 2000-2008, 2009, 2011, 2012, 2014, 2015 Red Hat, Inc.
+ Copyright (C) 2000-2008, 2009, 2011, 2012, 2014, 2015, 2020 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
@@ -137,7 +137,7 @@ static int handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
#define INTERNAL_ERROR(fname) \
- error (EXIT_FAILURE, 0, gettext ("%s: INTERNAL ERROR %d (%s): %s"), \
+ error (EXIT_FAILURE, 0, _("%s: INTERNAL ERROR %d (%s): %s"), \
fname, __LINE__, PACKAGE_VERSION, elf_errmsg (-1))
@@ -361,7 +361,7 @@ process_file (const char *fname, bool more_than_one)
int fd = open (fname, O_RDONLY);
if (fd == -1)
{
- error (0, errno, gettext ("cannot open '%s'"), fname);
+ error (0, errno, _("cannot open '%s'"), fname);
return 1;
}
@@ -378,7 +378,7 @@ process_file (const char *fname, bool more_than_one)
INTERNAL_ERROR (fname);
if (close (fd) != 0)
- error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname);
+ error (EXIT_FAILURE, errno, _("while closing '%s'"), fname);
return result;
}
@@ -390,7 +390,7 @@ process_file (const char *fname, bool more_than_one)
INTERNAL_ERROR (fname);
if (close (fd) != 0)
- error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname);
+ error (EXIT_FAILURE, errno, _("while closing '%s'"), fname);
return result;
}
@@ -400,7 +400,7 @@ process_file (const char *fname, bool more_than_one)
INTERNAL_ERROR (fname);
}
- error (0, 0, gettext ("%s: File format not recognized"), fname);
+ error (0, 0, _("%s: File format not recognized"), fname);
return 1;
}
@@ -440,7 +440,7 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname,
Elf_Arhdr *arhdr = NULL;
size_t arhdr_off = 0; /* Note: 0 is no valid offset. */
- fputs_unlocked (gettext("\nArchive index:\n"), stdout);
+ fputs_unlocked (_("\nArchive index:\n"), stdout);
while (arsym->as_off != 0)
{
@@ -449,12 +449,12 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname,
|| (subelf = elf_begin (fd, cmd, elf)) == NULL
|| (arhdr = elf_getarhdr (subelf)) == NULL))
{
- error (0, 0, gettext ("invalid offset %zu for symbol %s"),
+ error (0, 0, _("invalid offset %zu for symbol %s"),
arsym->as_off, arsym->as_name);
break;
}
- printf (gettext ("%s in %s\n"), arsym->as_name, arhdr->ar_name);
+ printf (_("%s in %s\n"), arsym->as_name, arhdr->ar_name);
++arsym;
}
@@ -462,7 +462,7 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname,
if (elf_rand (elf, SARMAG) != SARMAG)
{
error (0, 0,
- gettext ("cannot reset archive offset to beginning"));
+ _("cannot reset archive offset to beginning"));
return 1;
}
}
@@ -487,7 +487,7 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname,
new_suffix);
else
{
- error (0, 0, gettext ("%s%s%s: file format not recognized"),
+ error (0, 0, _("%s%s%s: file format not recognized"),
new_prefix, arhdr->ar_name, new_suffix);
result = 1;
}
@@ -702,7 +702,7 @@ get_local_names (Dwarf *dbg)
local_compare);
if (tres == NULL)
error (EXIT_FAILURE, errno,
- gettext ("cannot create search tree"));
+ _("cannot create search tree"));
else if (*tres != newp)
free (newp);
}
@@ -743,7 +743,7 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname,
size_t shstrndx;
if (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
/* Cache the section names. */
Elf_Scn *scn = NULL;
@@ -768,10 +768,10 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname,
int digits = length_map[gelf_getclass (ebl->elf) - 1][radix];
/* We always print this prolog. */
- printf (gettext ("\n\nSymbols from %s:\n\n"), fullname);
+ printf (_("\n\nSymbols from %s:\n\n"), fullname);
/* The header line. */
- printf (gettext ("%*s%-*s %-*s Class Type %-*s %*s Section\n\n"),
+ printf (_("%*s%-*s %-*s Class Type %-*s %*s Section\n\n"),
print_file_name ? (int) strlen (fullname) + 1: 0, "",
longest_name, sgettext ("sysv|Name"),
/* TRANS: the "sysv|" parts makes the string unique. */
@@ -787,7 +787,7 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname,
#endif
/* Iterate over all symbols. */
- for (cnt = 1; cnt < nsyms; ++cnt)
+ for (cnt = 0; cnt < nsyms; ++cnt)
{
/* In this format SECTION entries are not printed. */
if (GELF_ST_TYPE (syms[cnt].sym.st_info) == STT_SECTION)
@@ -797,6 +797,16 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname,
const char *symstr = sym_name (ebl->elf, strndx, syms[cnt].sym.st_name,
symstrbuf, sizeof symstrbuf);
+ /* Printing entries with a zero-length name makes the output
+ not very well parseable. Since these entries don't carry
+ much information we leave them out. */
+ if (symstr[0] == '\0')
+ continue;
+
+ /* We do not print the entries for files. */
+ if (GELF_ST_TYPE (syms[cnt].sym.st_info) == STT_FILE)
+ continue;
+
#ifdef USE_DEMANGLE
/* Demangle if necessary. Require GNU v3 ABI by the "_Z" prefix. */
if (demangle && symstr[0] == '_' && symstr[1] == 'Z')
@@ -825,7 +835,10 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname,
/* Covert the address. */
if (syms[cnt].sym.st_shndx == SHN_UNDEF)
- addressbuf[0] = sizebuf[0] = '\0';
+ {
+ sprintf (addressbuf, "%*c", digits, ' ');
+ sprintf (sizebuf, "%*c", digits, ' ');
+ }
else
{
snprintf (addressbuf, sizeof (addressbuf),
@@ -841,11 +854,14 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname,
}
/* Print the actual string. */
+ const char *bind;
+ bind = ebl_symbol_binding_name (ebl,
+ GELF_ST_BIND (syms[cnt].sym.st_info),
+ symbindbuf, sizeof (symbindbuf));
+ if (bind != NULL && strncmp (bind, "GNU_", strlen ("GNU_")) == 0)
+ bind += strlen ("GNU_");
printf ("%-*s|%s|%-6s|%-8s|%s|%*s|%s\n",
- longest_name, symstr, addressbuf,
- ebl_symbol_binding_name (ebl,
- GELF_ST_BIND (syms[cnt].sym.st_info),
- symbindbuf, sizeof (symbindbuf)),
+ longest_name, symstr, addressbuf, bind,
ebl_symbol_type_name (ebl, GELF_ST_TYPE (syms[cnt].sym.st_info),
symtypebuf, sizeof (symtypebuf)),
sizebuf, longest_where, syms[cnt].where,
@@ -884,6 +900,10 @@ class_type_char (Elf *elf, const GElf_Ehdr *ehdr, GElf_Sym *sym)
if (ehdr->e_ident[EI_OSABI] == ELFOSABI_LINUX
&& GELF_ST_BIND (sym->st_info) == STB_GNU_UNIQUE)
result = 'u';
+ else if (GELF_ST_BIND (sym->st_info) == STB_WEAK)
+ result = 'V';
+ else if (sym->st_shndx == SHN_COMMON)
+ result = 'C';
else
{
GElf_Shdr shdr_mem;
@@ -898,6 +918,11 @@ class_type_char (Elf *elf, const GElf_Ehdr *ehdr, GElf_Sym *sym)
}
}
}
+ else if (result == 'T')
+ {
+ if (GELF_ST_BIND (sym->st_info) == STB_WEAK)
+ result = 'W';
+ }
return local_p ? tolower (result) : result;
}
@@ -1063,6 +1088,10 @@ show_symbols_posix (Elf *elf, const GElf_Ehdr *ehdr, GElf_Word strndx,
if (symstr[0] == '\0')
continue;
+ /* We do not print the entries for files. */
+ if (GELF_ST_TYPE (syms[cnt].sym.st_info) == STT_FILE)
+ continue;
+
#ifdef USE_DEMANGLE
/* Demangle if necessary. Require GNU v3 ABI by the "_Z" prefix. */
if (demangle && symstr[0] == '_' && symstr[1] == 'Z')
@@ -1084,21 +1113,23 @@ show_symbols_posix (Elf *elf, const GElf_Ehdr *ehdr, GElf_Word strndx,
putchar_unlocked (' ');
}
- printf ((radix == radix_hex
- ? "%s %c%s %0*" PRIx64 " %0*" PRIx64 "\n"
- : (radix == radix_decimal
- ? "%s %c%s %*" PRId64 " %*" PRId64 "\n"
- : "%s %c%s %0*" PRIo64 " %0*" PRIo64 "\n")),
- symstr,
+ printf ("%s %c%s", symstr,
class_type_char (elf, ehdr, &syms[cnt].sym),
mark_special
? (GELF_ST_TYPE (syms[cnt].sym.st_info) == STT_TLS
? "@"
: (GELF_ST_BIND (syms[cnt].sym.st_info) == STB_WEAK
? "*" : " "))
- : "",
- digits, syms[cnt].sym.st_value,
- digits, syms[cnt].sym.st_size);
+ : "");
+ if (syms[cnt].sym.st_shndx != SHN_UNDEF)
+ printf ((radix == radix_hex
+ ? " %0*" PRIx64 " %0*" PRIx64
+ : (radix == radix_decimal
+ ? " %*" PRId64 " %*" PRId64
+ : " %0*" PRIo64 " %0*" PRIo64)),
+ digits, syms[cnt].sym.st_value,
+ digits, syms[cnt].sym.st_size);
+ putchar ('\n');
}
#ifdef USE_DEMANGLE
@@ -1122,7 +1153,8 @@ sort_by_address (const void *p1, const void *p2)
return reverse_sort ? -result : result;
}
-static Elf_Data *sort_by_name_strtab;
+static Elf *sort_by_name_elf;
+static size_t sort_by_name_ndx;
static int
sort_by_name (const void *p1, const void *p2)
@@ -1130,8 +1162,10 @@ sort_by_name (const void *p1, const void *p2)
GElf_SymX *s1 = (GElf_SymX *) p1;
GElf_SymX *s2 = (GElf_SymX *) p2;
- const char *n1 = sort_by_name_strtab->d_buf + s1->sym.st_name;
- const char *n2 = sort_by_name_strtab->d_buf + s2->sym.st_name;
+ const char *n1 = elf_strptr (sort_by_name_elf, sort_by_name_ndx,
+ s1->sym.st_name) ?: "";
+ const char *n2 = elf_strptr (sort_by_name_elf, sort_by_name_ndx,
+ s2->sym.st_name) ?: "";
int result = strcmp (n1, n2);
@@ -1202,7 +1236,7 @@ show_symbols (int fd, Ebl *ebl, GElf_Ehdr *ehdr,
size_t shstrndx;
if (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
/* The section is that large. */
size_t size = shdr->sh_size;
@@ -1213,12 +1247,12 @@ show_symbols (int fd, Ebl *ebl, GElf_Ehdr *ehdr,
if (entsize == 0
|| entsize != gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT))
error (0, 0,
- gettext ("%s: entry size in section %zd `%s' is not what we expect"),
+ _("%s: entry size in section %zd `%s' is not what we expect"),
fullname, elf_ndxscn (scn),
elf_strptr (ebl->elf, shstrndx, shdr->sh_name));
else if (size % entsize != 0)
error (0, 0,
- gettext ("%s: size of section %zd `%s' is not multiple of entry size"),
+ _("%s: size of section %zd `%s' is not multiple of entry size"),
fullname, elf_ndxscn (scn),
elf_strptr (ebl->elf, shstrndx, shdr->sh_name));
@@ -1297,7 +1331,7 @@ show_symbols (int fd, Ebl *ebl, GElf_Ehdr *ehdr,
is a 64 bit file. */
if (nentries > SIZE_MAX / sizeof (GElf_SymX))
error (EXIT_FAILURE, 0,
- gettext ("%s: entries (%zd) in section %zd `%s' is too large"),
+ _("%s: entries (%zd) in section %zd `%s' is too large"),
fullname, nentries, elf_ndxscn (scn),
elf_strptr (ebl->elf, shstrndx, shdr->sh_name));
GElf_SymX *sym_mem;
@@ -1444,8 +1478,8 @@ show_symbols (int fd, Ebl *ebl, GElf_Ehdr *ehdr,
/* Sort the entries according to the users wishes. */
if (sort == sort_name)
{
- sort_by_name_strtab = elf_getdata (elf_getscn (ebl->elf, shdr->sh_link),
- NULL);
+ sort_by_name_elf = ebl->elf;
+ sort_by_name_ndx = shdr->sh_link;
qsort (sym_mem, nentries, sizeof (GElf_SymX), sort_by_name);
}
else if (sort == sort_numeric)
@@ -1510,8 +1544,17 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
GElf_Ehdr *ehdr;
Ebl *ebl;
+ /* Create the full name of the file. */
+ if (prefix != NULL)
+ cp = mempcpy (cp, prefix, prefix_len);
+ cp = mempcpy (cp, fname, fname_len);
+ if (suffix != NULL)
+ memcpy (cp - 1, suffix, suffix_len + 1);
+
/* Get the backend for this object file type. */
ebl = ebl_openbackend (elf);
+ if (ebl == NULL)
+ INTERNAL_ERROR (fullname);
/* We need the ELF header in a few places. */
ehdr = gelf_getehdr (elf, &ehdr_mem);
@@ -1524,19 +1567,12 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
&& ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN)
{
/* XXX Add machine specific object file types. */
- error (0, 0, gettext ("%s%s%s%s: Invalid operation"),
+ error (0, 0, _("%s%s%s%s: Invalid operation"),
prefix ?: "", prefix ? "(" : "", fname, prefix ? ")" : "");
result = 1;
goto out;
}
- /* Create the full name of the file. */
- if (prefix != NULL)
- cp = mempcpy (cp, prefix, prefix_len);
- cp = mempcpy (cp, fname, fname_len);
- if (suffix != NULL)
- memcpy (cp - 1, suffix, suffix_len + 1);
-
/* Find the symbol table.
XXX Can there be more than one? Do we print all? Currently we do. */
@@ -1581,7 +1617,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (! any)
{
- error (0, 0, gettext ("%s%s%s: no symbols"),
+ error (0, 0, _("%s%s%s: no symbols"),
prefix ?: "", prefix ? ":" : "", fname);
result = 1;
}
diff --git a/src/objdump.c b/src/objdump.c
index a619674f..3a93248c 100644
--- a/src/objdump.c
+++ b/src/objdump.c
@@ -100,7 +100,7 @@ static int handle_elf (Elf *elf, const char *prefix, const char *fname,
#define INTERNAL_ERROR(fname) \
- error (EXIT_FAILURE, 0, gettext ("%s: INTERNAL ERROR %d (%s): %s"), \
+ error (EXIT_FAILURE, 0, _("%s: INTERNAL ERROR %d (%s): %s"), \
fname, __LINE__, PACKAGE_VERSION, elf_errmsg (-1))
@@ -215,7 +215,7 @@ parse_opt (int key, char *arg,
case ARGP_KEY_FINI:
if (! any_control_option)
{
- fputs (gettext ("No operation specified.\n"), stderr);
+ fputs (_("No operation specified.\n"), stderr);
argp_help (&argp, stderr, ARGP_HELP_SEE,
program_invocation_short_name);
exit (EXIT_FAILURE);
@@ -238,7 +238,7 @@ process_file (const char *fname, bool more_than_one)
int fd = open (fname, O_RDONLY);
if (fd == -1)
{
- error (0, errno, gettext ("cannot open %s"), fname);
+ error (0, errno, _("cannot open %s"), fname);
return 1;
}
@@ -255,7 +255,7 @@ process_file (const char *fname, bool more_than_one)
INTERNAL_ERROR (fname);
if (close (fd) != 0)
- error (EXIT_FAILURE, errno, gettext ("while close `%s'"), fname);
+ error (EXIT_FAILURE, errno, _("while close `%s'"), fname);
return result;
}
@@ -267,7 +267,7 @@ process_file (const char *fname, bool more_than_one)
INTERNAL_ERROR (fname);
if (close (fd) != 0)
- error (EXIT_FAILURE, errno, gettext ("while close `%s'"), fname);
+ error (EXIT_FAILURE, errno, _("while close `%s'"), fname);
return result;
}
@@ -277,7 +277,7 @@ process_file (const char *fname, bool more_than_one)
INTERNAL_ERROR (fname);
}
- error (0, 0, gettext ("%s: File format not recognized"), fname);
+ error (0, 0, _("%s: File format not recognized"), fname);
return 1;
}
@@ -325,7 +325,7 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname,
new_suffix);
else
{
- error (0, 0, gettext ("%s%s%s: file format not recognized"),
+ error (0, 0, _("%s%s%s: file format not recognized"),
new_prefix, arhdr->ar_name, new_suffix);
result = 1;
}
@@ -360,7 +360,7 @@ show_relocs_x (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *symdata,
if (sym == NULL)
printf ("<%s %ld>",
- gettext ("INVALID SYMBOL"), (long int) GELF_R_SYM (r_info));
+ _("INVALID SYMBOL"), (long int) GELF_R_SYM (r_info));
else if (GELF_ST_TYPE (sym->st_info) != STT_SECTION)
printf ("%s",
elf_strptr (ebl->elf, symstrndx, sym->st_name));
@@ -375,7 +375,7 @@ show_relocs_x (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *symdata,
if (shdr == NULL || destshdr == NULL)
printf ("<%s %ld>",
- gettext ("INVALID SECTION"),
+ _("INVALID SECTION"),
(long int) (sym->st_shndx == SHN_XINDEX
? xndx : sym->st_shndx));
else
@@ -495,10 +495,10 @@ show_relocs (Ebl *ebl, const char *fname, uint32_t shstrndx)
if (unlikely (destshdr == NULL))
continue;
- printf (gettext ("\nRELOCATION RECORDS FOR [%s]:\n"
+ printf (_("\nRELOCATION RECORDS FOR [%s]:\n"
"%-*s TYPE VALUE\n"),
elf_strptr (ebl->elf, shstrndx, destshdr->sh_name),
- elfclass == ELFCLASS32 ? 8 : 16, gettext ("OFFSET"));
+ elfclass == ELFCLASS32 ? 8 : 16, _("OFFSET"));
/* Get the data of the section. */
Elf_Data *data = elf_getdata (scn, NULL);
@@ -563,7 +563,7 @@ show_full_content (Ebl *ebl, const char *fname, uint32_t shstrndx)
if (! section_match (ebl->elf, elf_ndxscn (scn), shdr, shstrndx))
continue;
- printf (gettext ("Contents of section %s:\n"),
+ printf (_("Contents of section %s:\n"),
elf_strptr (ebl->elf, shstrndx, shdr->sh_name));
/* Get the data of the section. */
@@ -684,7 +684,7 @@ show_disasm (Ebl *ebl, const char *fname, uint32_t shstrndx)
{
DisasmCtx_t *ctx = disasm_begin (ebl, ebl->elf, NULL /* XXX TODO */);
if (ctx == NULL)
- error (EXIT_FAILURE, 0, gettext ("cannot disassemble"));
+ error (EXIT_FAILURE, 0, _("cannot disassemble"));
Elf_Scn *scn = NULL;
while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
@@ -755,6 +755,9 @@ handle_elf (Elf *elf, const char *prefix, const char *fname,
/* Get the backend for this object file type. */
Ebl *ebl = ebl_openbackend (elf);
+ if (ebl == NULL)
+ error (EXIT_FAILURE, 0,
+ _("cannot create backend for elf file"));
printf ("%s: elf%d-%s\n\n",
fname, gelf_getclass (elf) == ELFCLASS32 ? 32 : 64,
@@ -776,7 +779,7 @@ handle_elf (Elf *elf, const char *prefix, const char *fname,
size_t shstrndx;
if (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
int result = 0;
if (print_disasm)
diff --git a/src/ranlib.c b/src/ranlib.c
index b9083484..bd7e1d8a 100644
--- a/src/ranlib.c
+++ b/src/ranlib.c
@@ -99,7 +99,7 @@ main (int argc, char *argv[])
/* There must at least be one more parameter specifying the archive. */
if (remaining == argc)
{
- error (0, 0, gettext ("Archive name required"));
+ error (0, 0, _("Archive name required"));
argp_help (&argp, stderr, ARGP_HELP_SEE, "ranlib");
exit (EXIT_FAILURE);
}
@@ -138,14 +138,14 @@ handle_file (const char *fname)
int fd = open (fname, O_RDONLY);
if (fd == -1)
{
- error (0, errno, gettext ("cannot open '%s'"), fname);
+ error (0, errno, _("cannot open '%s'"), fname);
return 1;
}
struct stat st;
if (fstat (fd, &st) != 0)
{
- error (0, errno, gettext ("cannot stat '%s'"), fname);
+ error (0, errno, _("cannot stat '%s'"), fname);
close (fd);
return 1;
}
@@ -155,7 +155,7 @@ handle_file (const char *fname)
Elf *arelf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
if (arelf == NULL)
{
- error (0, 0, gettext ("cannot create ELF descriptor for '%s': %s"),
+ error (0, 0, _("cannot create ELF descriptor for '%s': %s"),
fname, elf_errmsg (-1));
close (fd);
return 1;
@@ -163,7 +163,7 @@ handle_file (const char *fname)
if (elf_kind (arelf) != ELF_K_AR)
{
- error (0, 0, gettext ("'%s' is no archive"), fname);
+ error (0, 0, _("'%s' is no archive"), fname);
elf_end (arelf);
close (fd);
return 1;
@@ -198,7 +198,7 @@ handle_file (const char *fname)
/* Get next archive element. */
cmd = elf_next (elf);
if (elf_end (elf) != 0)
- error (0, 0, gettext ("error while freeing sub-ELF descriptor: %s"),
+ error (0, 0, _("error while freeing sub-ELF descriptor: %s"),
elf_errmsg (-1));
}
@@ -219,7 +219,7 @@ handle_file (const char *fname)
if (unlikely (newfd == -1))
{
nonew:
- error (0, errno, gettext ("cannot create new file"));
+ error (0, errno, _("cannot create new file"));
status = 1;
}
else
@@ -245,25 +245,31 @@ handle_file (const char *fname)
else
rest_off = SARMAG;
- if ((symtab.symsnamelen != 0
- && ((write_retry (newfd, symtab.symsoff,
- symtab.symsofflen)
- != (ssize_t) symtab.symsofflen)
- || (write_retry (newfd, symtab.symsname,
- symtab.symsnamelen)
- != (ssize_t) symtab.symsnamelen)))
- /* Even if the original file had content before the
- symbol table, we write it in the correct order. */
- || (index_off > SARMAG
- && copy_content (arelf, newfd, SARMAG, index_off - SARMAG))
- || copy_content (arelf, newfd, rest_off, st.st_size - rest_off)
- /* Set the mode of the new file to the same values the
- original file has. */
- || fchmod (newfd, st.st_mode & ALLPERMS) != 0
- /* Never complain about fchown failing. */
- || (({asm ("" :: "r" (fchown (newfd, st.st_uid, st.st_gid))); }),
- close (newfd) != 0)
- || (newfd = -1, rename (tmpfname, fname) != 0))
+ if (symtab.symsnamelen != 0
+ && ((write_retry (newfd, symtab.symsoff,
+ symtab.symsofflen)
+ != (ssize_t) symtab.symsofflen)
+ || (write_retry (newfd, symtab.symsname,
+ symtab.symsnamelen)
+ != (ssize_t) symtab.symsnamelen)))
+ goto nonew_unlink;
+
+ /* Even if the original file had content before the
+ symbol table, we write it in the correct order. */
+ if ((index_off > SARMAG
+ && copy_content (arelf, newfd, SARMAG, index_off - SARMAG))
+ || copy_content (arelf, newfd, rest_off, st.st_size - rest_off))
+ goto nonew_unlink;
+
+ /* Never complain about fchown failing. */
+ if (fchown (newfd, st.st_uid, st.st_gid) != 0) { ; }
+ /* Set the mode of the new file to the same values the
+ original file has. */
+ if (fchmod (newfd, st.st_mode & ALLPERMS) != 0
+ || close (newfd) != 0)
+ goto nonew_unlink;
+ newfd = -1;
+ if (rename (tmpfname, fname) != 0)
goto nonew_unlink;
}
}
diff --git a/src/readelf.c b/src/readelf.c
index cbb519d1..11692bb5 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -347,8 +347,8 @@ main (int argc, char *argv[])
textdomain (PACKAGE_TARNAME);
/* Look up once. */
- yes_str = gettext ("yes");
- no_str = gettext ("no");
+ yes_str = _("yes");
+ no_str = _("no");
/* Parse and process arguments. */
int remaining;
@@ -381,24 +381,26 @@ main (int argc, char *argv[])
return error_message_count != 0;
}
+static void
+add_dump_section (const char *name,
+ int key,
+ bool implicit)
+{
+ struct section_argument *a = xmalloc (sizeof *a);
+ a->arg = name;
+ a->next = NULL;
+ a->implicit = implicit;
+ struct section_argument ***tailp
+ = key == 'x' ? &dump_data_sections_tail : &string_sections_tail;
+ **tailp = a;
+ *tailp = &a->next;
+}
/* Handle program arguments. */
static error_t
parse_opt (int key, char *arg,
struct argp_state *state __attribute__ ((unused)))
{
- void add_dump_section (const char *name, bool implicit)
- {
- struct section_argument *a = xmalloc (sizeof *a);
- a->arg = name;
- a->next = NULL;
- a->implicit = implicit;
- struct section_argument ***tailp
- = key == 'x' ? &dump_data_sections_tail : &string_sections_tail;
- **tailp = a;
- *tailp = &a->next;
- }
-
switch (key)
{
case 'a':
@@ -414,9 +416,9 @@ parse_opt (int key, char *arg,
print_arch = true;
print_notes = true;
implicit_debug_sections |= section_exception;
- add_dump_section (".strtab", true);
- add_dump_section (".dynstr", true);
- add_dump_section (".comment", true);
+ add_dump_section (".strtab", key, true);
+ add_dump_section (".dynstr", key, true);
+ add_dump_section (".comment", key, true);
any_control_option = true;
break;
case 'A':
@@ -545,7 +547,7 @@ parse_opt (int key, char *arg,
print_debug_sections |= section_gdb_index;
else
{
- fprintf (stderr, gettext ("Unknown DWARF debug section `%s'.\n"),
+ fprintf (stderr, _("Unknown DWARF debug section `%s'.\n"),
arg);
argp_help (&argp, stderr, ARGP_HELP_SEE,
program_invocation_short_name);
@@ -562,7 +564,7 @@ parse_opt (int key, char *arg,
}
FALLTHROUGH;
case 'x':
- add_dump_section (arg, false);
+ add_dump_section (arg, key, false);
any_control_option = true;
break;
case 'N':
@@ -572,12 +574,12 @@ parse_opt (int key, char *arg,
print_unresolved_addresses = true;
break;
case ARGP_KEY_NO_ARGS:
- fputs (gettext ("Missing file name.\n"), stderr);
+ fputs (_("Missing file name.\n"), stderr);
goto do_argp_help;
case ARGP_KEY_FINI:
if (! any_control_option && ! print_archive_index)
{
- fputs (gettext ("No operation specified.\n"), stderr);
+ fputs (_("No operation specified.\n"), stderr);
do_argp_help:
argp_help (&argp, stderr, ARGP_HELP_SEE,
program_invocation_short_name);
@@ -616,14 +618,14 @@ open_input_section (int fd)
Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
if (elf == NULL)
{
- error (0, 0, gettext ("cannot generate Elf descriptor: %s"),
+ error (0, 0, _("cannot generate Elf descriptor: %s"),
elf_errmsg (-1));
return -1;
}
if (elf_getshdrnum (elf, &shnums) < 0)
{
- error (0, 0, gettext ("cannot determine number of sections: %s"),
+ error (0, 0, _("cannot determine number of sections: %s"),
elf_errmsg (-1));
open_error:
elf_end (elf);
@@ -632,7 +634,7 @@ open_input_section (int fd)
if (elf_getshdrstrndx (elf, &shstrndx) < 0)
{
- error (0, 0, gettext ("cannot get section header string table index"));
+ error (0, 0, _("cannot get section header string table index"));
goto open_error;
}
@@ -641,7 +643,7 @@ open_input_section (int fd)
Elf_Scn *scn = elf_getscn (elf, cnt);
if (scn == NULL)
{
- error (0, 0, gettext ("cannot get section: %s"),
+ error (0, 0, _("cannot get section: %s"),
elf_errmsg (-1));
goto open_error;
}
@@ -650,7 +652,7 @@ open_input_section (int fd)
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
if (unlikely (shdr == NULL))
{
- error (0, 0, gettext ("cannot get section header: %s"),
+ error (0, 0, _("cannot get section header: %s"),
elf_errmsg (-1));
goto open_error;
}
@@ -658,7 +660,7 @@ open_input_section (int fd)
const char *sname = elf_strptr (elf, shstrndx, shdr->sh_name);
if (sname == NULL)
{
- error (0, 0, gettext ("cannot get section name"));
+ error (0, 0, _("cannot get section name"));
goto open_error;
}
@@ -667,7 +669,7 @@ open_input_section (int fd)
Elf_Data *data = elf_rawdata (scn, NULL);
if (data == NULL)
{
- error (0, 0, gettext ("cannot get %s content: %s"),
+ error (0, 0, _("cannot get %s content: %s"),
sname, elf_errmsg (-1));
goto open_error;
}
@@ -683,7 +685,7 @@ open_input_section (int fd)
int sfd = mkstemp (tempname);
if (sfd == -1)
{
- error (0, 0, gettext ("cannot create temp file '%s'"),
+ error (0, 0, _("cannot create temp file '%s'"),
tempname);
goto open_error;
}
@@ -692,20 +694,20 @@ open_input_section (int fd)
ssize_t size = data->d_size;
if (write_retry (sfd, data->d_buf, size) != size)
{
- error (0, 0, gettext ("cannot write section data"));
+ error (0, 0, _("cannot write section data"));
goto open_error;
}
if (elf_end (elf) != 0)
{
- error (0, 0, gettext ("error while closing Elf descriptor: %s"),
+ error (0, 0, _("error while closing Elf descriptor: %s"),
elf_errmsg (-1));
return -1;
}
if (lseek (sfd, 0, SEEK_SET) == -1)
{
- error (0, 0, gettext ("error while rewinding file descriptor"));
+ error (0, 0, _("error while rewinding file descriptor"));
return -1;
}
@@ -715,7 +717,7 @@ open_input_section (int fd)
/* Named section not found. */
if (elf_end (elf) != 0)
- error (0, 0, gettext ("error while closing Elf descriptor: %s"),
+ error (0, 0, _("error while closing Elf descriptor: %s"),
elf_errmsg (-1));
return -1;
}
@@ -727,7 +729,7 @@ check_archive_index (int fd, const char *fname, bool only_one)
/* Create an `Elf' descriptor. */
Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
if (elf == NULL)
- error (0, 0, gettext ("cannot generate Elf descriptor: %s"),
+ error (0, 0, _("cannot generate Elf descriptor: %s"),
elf_errmsg (-1));
else
{
@@ -739,12 +741,12 @@ check_archive_index (int fd, const char *fname, bool only_one)
}
else
error (0, 0,
- gettext ("'%s' is not an archive, cannot print archive index"),
+ _("'%s' is not an archive, cannot print archive index"),
fname);
/* Now we can close the descriptor. */
if (elf_end (elf) != 0)
- error (0, 0, gettext ("error while closing Elf descriptor: %s"),
+ error (0, 0, _("error while closing Elf descriptor: %s"),
elf_errmsg (-1));
}
}
@@ -843,11 +845,11 @@ create_dwfl (int fd, const char *fname)
{
struct stat st;
if (fstat (dwfl_fd, &st) != 0)
- error (0, errno, gettext ("cannot stat input file"));
+ error (0, errno, _("cannot stat input file"));
else if (unlikely (st.st_size == 0))
- error (0, 0, gettext ("input file is empty"));
+ error (0, 0, _("input file is empty"));
else
- error (0, 0, gettext ("failed reading '%s': %s"),
+ error (0, 0, _("failed reading '%s': %s"),
fname, dwfl_errmsg (-1));
close (dwfl_fd); /* Consumed on success, not on failure. */
dwfl = NULL;
@@ -876,7 +878,7 @@ process_file (int fd, const char *fname, bool only_one)
fd = open_input_section (fd);
if (fd == -1)
{
- error (0, 0, gettext ("No such section '%s' in '%s'"),
+ error (0, 0, _("No such section '%s' in '%s'"),
elf_input_section, fname);
return;
}
@@ -935,7 +937,7 @@ process_elf_file (Dwfl_Module *dwflmod, int fd)
if (ehdr == NULL)
{
- error (0, 0, gettext ("cannot read ELF header: %s"), elf_errmsg (-1));
+ error (0, 0, _("cannot read ELF header: %s"), elf_errmsg (-1));
return;
}
@@ -943,20 +945,20 @@ process_elf_file (Dwfl_Module *dwflmod, int fd)
if (unlikely (ebl == NULL))
{
ebl_error:
- error (0, errno, gettext ("cannot create EBL handle"));
+ error (0, errno, _("cannot create EBL handle"));
return;
}
/* Determine the number of sections. */
if (unlikely (elf_getshdrnum (ebl->elf, &shnum) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot determine number of sections: %s"),
+ _("cannot determine number of sections: %s"),
elf_errmsg (-1));
/* Determine the number of phdrs. */
if (unlikely (elf_getphdrnum (ebl->elf, &phnum) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot determine number of program headers: %s"),
+ _("cannot determine number of program headers: %s"),
elf_errmsg (-1));
/* For an ET_REL file, libdwfl has adjusted the in-core shdrs and
@@ -988,7 +990,7 @@ process_elf_file (Dwfl_Module *dwflmod, int fd)
}
if (pure_elf == NULL)
{
- error (0, 0, gettext ("cannot read ELF: %s"), elf_errmsg (-1));
+ error (0, 0, _("cannot read ELF: %s"), elf_errmsg (-1));
return;
}
pure_ebl = ebl_openbackend (pure_elf);
@@ -1055,12 +1057,12 @@ print_file_type (unsigned short int e_type)
N_("DYN (Shared object file)"),
N_("CORE (Core file)")
};
- puts (gettext (knowntypes[e_type]));
+ puts (_(knowntypes[e_type]));
}
else if (e_type >= ET_LOOS && e_type <= ET_HIOS)
- printf (gettext ("OS Specific: (%x)\n"), e_type);
+ printf (_("OS Specific: (%x)\n"), e_type);
else if (e_type >= ET_LOPROC /* && e_type <= ET_HIPROC always true */)
- printf (gettext ("Processor Specific: (%x)\n"), e_type);
+ printf (_("Processor Specific: (%x)\n"), e_type);
else
puts ("???");
}
@@ -1070,93 +1072,93 @@ print_file_type (unsigned short int e_type)
static void
print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr)
{
- fputs_unlocked (gettext ("ELF Header:\n Magic: "), stdout);
+ fputs_unlocked (_("ELF Header:\n Magic: "), stdout);
for (size_t cnt = 0; cnt < EI_NIDENT; ++cnt)
printf (" %02hhx", ehdr->e_ident[cnt]);
- printf (gettext ("\n Class: %s\n"),
+ printf (_("\n Class: %s\n"),
ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? "ELF32"
: ehdr->e_ident[EI_CLASS] == ELFCLASS64 ? "ELF64"
: "\?\?\?");
- printf (gettext (" Data: %s\n"),
+ printf (_(" Data: %s\n"),
ehdr->e_ident[EI_DATA] == ELFDATA2LSB
? "2's complement, little endian"
: ehdr->e_ident[EI_DATA] == ELFDATA2MSB
? "2's complement, big endian" : "\?\?\?");
- printf (gettext (" Ident Version: %hhd %s\n"),
+ printf (_(" Ident Version: %hhd %s\n"),
ehdr->e_ident[EI_VERSION],
- ehdr->e_ident[EI_VERSION] == EV_CURRENT ? gettext ("(current)")
+ ehdr->e_ident[EI_VERSION] == EV_CURRENT ? _("(current)")
: "(\?\?\?)");
char buf[512];
- printf (gettext (" OS/ABI: %s\n"),
+ printf (_(" OS/ABI: %s\n"),
ebl_osabi_name (ebl, ehdr->e_ident[EI_OSABI], buf, sizeof (buf)));
- printf (gettext (" ABI Version: %hhd\n"),
+ printf (_(" ABI Version: %hhd\n"),
ehdr->e_ident[EI_ABIVERSION]);
- fputs_unlocked (gettext (" Type: "), stdout);
+ fputs_unlocked (_(" Type: "), stdout);
print_file_type (ehdr->e_type);
const char *machine = dwelf_elf_e_machine_string (ehdr->e_machine);
if (machine != NULL)
- printf (gettext (" Machine: %s\n"), machine);
+ printf (_(" Machine: %s\n"), machine);
else
- printf (gettext (" Machine: <unknown>: 0x%x\n"),
+ printf (_(" Machine: <unknown>: 0x%x\n"),
ehdr->e_machine);
- printf (gettext (" Version: %d %s\n"),
+ printf (_(" Version: %d %s\n"),
ehdr->e_version,
- ehdr->e_version == EV_CURRENT ? gettext ("(current)") : "(\?\?\?)");
+ ehdr->e_version == EV_CURRENT ? _("(current)") : "(\?\?\?)");
- printf (gettext (" Entry point address: %#" PRIx64 "\n"),
+ printf (_(" Entry point address: %#" PRIx64 "\n"),
ehdr->e_entry);
- printf (gettext (" Start of program headers: %" PRId64 " %s\n"),
- ehdr->e_phoff, gettext ("(bytes into file)"));
+ printf (_(" Start of program headers: %" PRId64 " %s\n"),
+ ehdr->e_phoff, _("(bytes into file)"));
- printf (gettext (" Start of section headers: %" PRId64 " %s\n"),
- ehdr->e_shoff, gettext ("(bytes into file)"));
+ printf (_(" Start of section headers: %" PRId64 " %s\n"),
+ ehdr->e_shoff, _("(bytes into file)"));
- printf (gettext (" Flags: %s\n"),
+ printf (_(" Flags: %s\n"),
ebl_machine_flag_name (ebl, ehdr->e_flags, buf, sizeof (buf)));
- printf (gettext (" Size of this header: %" PRId16 " %s\n"),
- ehdr->e_ehsize, gettext ("(bytes)"));
+ printf (_(" Size of this header: %" PRId16 " %s\n"),
+ ehdr->e_ehsize, _("(bytes)"));
- printf (gettext (" Size of program header entries: %" PRId16 " %s\n"),
- ehdr->e_phentsize, gettext ("(bytes)"));
+ printf (_(" Size of program header entries: %" PRId16 " %s\n"),
+ ehdr->e_phentsize, _("(bytes)"));
- printf (gettext (" Number of program headers entries: %" PRId16),
+ printf (_(" Number of program headers entries: %" PRId16),
ehdr->e_phnum);
if (ehdr->e_phnum == PN_XNUM)
{
GElf_Shdr shdr_mem;
GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
if (shdr != NULL)
- printf (gettext (" (%" PRIu32 " in [0].sh_info)"),
+ printf (_(" (%" PRIu32 " in [0].sh_info)"),
(uint32_t) shdr->sh_info);
else
- fputs_unlocked (gettext (" ([0] not available)"), stdout);
+ fputs_unlocked (_(" ([0] not available)"), stdout);
}
fputc_unlocked ('\n', stdout);
- printf (gettext (" Size of section header entries: %" PRId16 " %s\n"),
- ehdr->e_shentsize, gettext ("(bytes)"));
+ printf (_(" Size of section header entries: %" PRId16 " %s\n"),
+ ehdr->e_shentsize, _("(bytes)"));
- printf (gettext (" Number of section headers entries: %" PRId16),
+ printf (_(" Number of section headers entries: %" PRId16),
ehdr->e_shnum);
if (ehdr->e_shnum == 0)
{
GElf_Shdr shdr_mem;
GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
if (shdr != NULL)
- printf (gettext (" (%" PRIu32 " in [0].sh_size)"),
+ printf (_(" (%" PRIu32 " in [0].sh_size)"),
(uint32_t) shdr->sh_size);
else
- fputs_unlocked (gettext (" ([0] not available)"), stdout);
+ fputs_unlocked (_(" ([0] not available)"), stdout);
}
fputc_unlocked ('\n', stdout);
@@ -1166,19 +1168,19 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr)
GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
if (shdr != NULL)
/* We managed to get the zeroth section. */
- snprintf (buf, sizeof (buf), gettext (" (%" PRIu32 " in [0].sh_link)"),
+ snprintf (buf, sizeof (buf), _(" (%" PRIu32 " in [0].sh_link)"),
(uint32_t) shdr->sh_link);
else
{
- strncpy (buf, gettext (" ([0] not available)"), sizeof (buf));
+ strncpy (buf, _(" ([0] not available)"), sizeof (buf));
buf[sizeof (buf) - 1] = '\0';
}
- printf (gettext (" Section header string table index: XINDEX%s\n\n"),
+ printf (_(" Section header string table index: XINDEX%s\n\n"),
buf);
}
else
- printf (gettext (" Section header string table index: %" PRId16 "\n\n"),
+ printf (_(" Section header string table index: %" PRId16 "\n\n"),
ehdr->e_shstrndx);
}
@@ -1225,10 +1227,10 @@ print_shdr (Ebl *ebl, GElf_Ehdr *ehdr)
size_t sections;
if (unlikely (elf_getshdrnum (ebl->elf, &sections) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get number of sections: %s"),
+ _("cannot get number of sections: %s"),
elf_errmsg (-1));
- printf (gettext ("\
+ printf (_("\
There are %zd section headers, starting at offset %#" PRIx64 ":\n\
\n"),
sections, ehdr->e_shoff);
@@ -1237,22 +1239,22 @@ There are %zd section headers, starting at offset %#" PRIx64 ":\n\
/* Get the section header string table index. */
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index: %s"),
+ _("cannot get section header string table index: %s"),
elf_errmsg (-1));
- puts (gettext ("Section Headers:"));
+ puts (_("Section Headers:"));
if (ehdr->e_ident[EI_CLASS] == ELFCLASS32)
- puts (gettext ("[Nr] Name Type Addr Off Size ES Flags Lk Inf Al"));
+ puts (_("[Nr] Name Type Addr Off Size ES Flags Lk Inf Al"));
else
- puts (gettext ("[Nr] Name Type Addr Off Size ES Flags Lk Inf Al"));
+ puts (_("[Nr] Name Type Addr Off Size ES Flags Lk Inf Al"));
if (print_decompress)
{
if (ehdr->e_ident[EI_CLASS] == ELFCLASS32)
- puts (gettext (" [Compression Size Al]"));
+ puts (_(" [Compression Size Al]"));
else
- puts (gettext (" [Compression Size Al]"));
+ puts (_(" [Compression Size Al]"));
}
for (cnt = 0; cnt < shnum; ++cnt)
@@ -1260,14 +1262,14 @@ There are %zd section headers, starting at offset %#" PRIx64 ":\n\
Elf_Scn *scn = elf_getscn (ebl->elf, cnt);
if (unlikely (scn == NULL))
- error (EXIT_FAILURE, 0, gettext ("cannot get section: %s"),
+ error (EXIT_FAILURE, 0, _("cannot get section: %s"),
elf_errmsg (-1));
/* Get the section header. */
GElf_Shdr shdr_mem;
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
if (unlikely (shdr == NULL))
- error (EXIT_FAILURE, 0, gettext ("cannot get section header: %s"),
+ error (EXIT_FAILURE, 0, _("cannot get section header: %s"),
elf_errmsg (-1));
char flagbuf[20];
@@ -1298,6 +1300,8 @@ There are %zd section headers, starting at offset %#" PRIx64 ":\n\
*cp++ = 'O';
if (shdr->sh_flags & SHF_EXCLUDE)
*cp++ = 'E';
+ if (shdr->sh_flags & SHF_GNU_RETAIN)
+ *cp++ = 'R';
*cp = '\0';
const char *sname;
@@ -1328,7 +1332,7 @@ There are %zd section headers, starting at offset %#" PRIx64 ":\n\
chdr.ch_size, chdr.ch_addralign);
else
error (0, 0,
- gettext ("bad compression header for section %zd: %s"),
+ _("bad compression header for section %zd: %s"),
elf_ndxscn (scn), elf_errmsg (-1));
}
else if (strncmp(".zdebug", sname, strlen (".zdebug")) == 0)
@@ -1339,7 +1343,7 @@ There are %zd section headers, starting at offset %#" PRIx64 ":\n\
ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 6 : 8, size);
else
error (0, 0,
- gettext ("bad gnu compressed size for section %zd: %s"),
+ _("bad gnu compressed size for section %zd: %s"),
elf_ndxscn (scn), elf_errmsg (-1));
}
}
@@ -1357,12 +1361,12 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
/* No program header, this is OK in relocatable objects. */
return;
- puts (gettext ("Program Headers:"));
+ puts (_("Program Headers:"));
if (ehdr->e_ident[EI_CLASS] == ELFCLASS32)
- puts (gettext ("\
+ puts (_("\
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"));
else
- puts (gettext ("\
+ puts (_("\
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"));
/* Process all program headers. */
@@ -1419,7 +1423,7 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
&& phdr->p_filesz <= maxsize - phdr->p_offset
&& memchr (filedata + phdr->p_offset, '\0',
phdr->p_filesz) != NULL)
- printf (gettext ("\t[Requesting program interpreter: %s]\n"),
+ printf (_("\t[Requesting program interpreter: %s]\n"),
filedata + phdr->p_offset);
}
else if (phdr->p_type == PT_GNU_RELRO)
@@ -1433,7 +1437,7 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
size_t sections;
if (unlikely (elf_getshdrnum (ebl->elf, &sections) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get number of sections: %s"),
+ _("cannot get number of sections: %s"),
elf_errmsg (-1));
if (sections == 0)
@@ -1444,9 +1448,9 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
- puts (gettext ("\n Section to Segment mapping:\n Segment Sections..."));
+ puts (_("\n Section to Segment mapping:\n Segment Sections..."));
for (size_t cnt = 0; cnt < phnum; ++cnt)
{
@@ -1457,7 +1461,7 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
GElf_Phdr *phdr = gelf_getphdr (ebl->elf, cnt, &phdr_mem);
/* This must not happen. */
if (unlikely (phdr == NULL))
- error (EXIT_FAILURE, 0, gettext ("cannot get program header: %s"),
+ error (EXIT_FAILURE, 0, _("cannot get program header: %s"),
elf_errmsg (-1));
/* Iterate over the sections. */
@@ -1468,7 +1472,7 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
Elf_Scn *scn = elf_getscn (ebl->elf, inner);
/* This should not happen. */
if (unlikely (scn == NULL))
- error (EXIT_FAILURE, 0, gettext ("cannot get section: %s"),
+ error (EXIT_FAILURE, 0, _("cannot get section: %s"),
elf_errmsg (-1));
/* Get the section header. */
@@ -1476,7 +1480,7 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
if (unlikely (shdr == NULL))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header: %s"),
+ _("cannot get section header: %s"),
elf_errmsg (-1));
if (shdr->sh_size > 0
@@ -1548,7 +1552,7 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr)
printf (" %s",
elf_strptr (ebl->elf, shstrndx, shdr->sh_name));
- /* Signal that this sectin is only partially covered. */
+ /* Signal that this section is only partially covered. */
if (has_relro && in_relro
&& shdr->sh_addr + shdr->sh_size > relro_to)
{
@@ -1595,7 +1599,7 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
Elf32_Word *grpref = (Elf32_Word *) data->d_buf;
@@ -1616,7 +1620,7 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
(sym == NULL ? NULL
: elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name))
- ?: gettext ("<INVALID SYMBOL>"),
+ ?: _("<INVALID SYMBOL>"),
data->d_size / sizeof (Elf32_Word) - 1);
for (size_t cnt = 1; cnt < data->d_size / sizeof (Elf32_Word); ++cnt)
@@ -1630,7 +1634,7 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
grpref[cnt],
grpshdr != NULL
&& (str = elf_strptr (ebl->elf, shstrndx, grpshdr->sh_name))
- ? str : gettext ("<INVALID SECTION>"));
+ ? str : _("<INVALID SECTION>"));
}
}
@@ -1653,12 +1657,12 @@ print_scngrp (Ebl *ebl)
{
if (elf_compress (scn, 0, 0) < 0)
printf ("WARNING: %s [%zd]\n",
- gettext ("Couldn't uncompress section"),
+ _("Couldn't uncompress section"),
elf_ndxscn (scn));
shdr = gelf_getshdr (scn, &shdr_mem);
if (unlikely (shdr == NULL))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section [%zd] header: %s"),
+ _("cannot get section [%zd] header: %s"),
elf_ndxscn (scn),
elf_errmsg (-1));
}
@@ -1796,13 +1800,13 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
/* Get the section header string table index. */
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
sh_entsize = gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT);
glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &glink_mem);
if (glink == NULL)
- error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %zu"),
+ error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"),
elf_ndxscn (scn));
printf (ngettext ("\
@@ -1815,7 +1819,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
shdr->sh_offset,
(int) shdr->sh_link,
elf_strptr (ebl->elf, shstrndx, glink->sh_name));
- fputs_unlocked (gettext (" Type Value\n"), stdout);
+ fputs_unlocked (_(" Type Value\n"), stdout);
for (cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
{
@@ -1839,22 +1843,22 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
break;
case DT_NEEDED:
- printf (gettext ("Shared library: [%s]\n"),
+ printf (_("Shared library: [%s]\n"),
elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val));
break;
case DT_SONAME:
- printf (gettext ("Library soname: [%s]\n"),
+ printf (_("Library soname: [%s]\n"),
elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val));
break;
case DT_RPATH:
- printf (gettext ("Library rpath: [%s]\n"),
+ printf (_("Library rpath: [%s]\n"),
elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val));
break;
case DT_RUNPATH:
- printf (gettext ("Library runpath: [%s]\n"),
+ printf (_("Library runpath: [%s]\n"),
elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val));
break;
@@ -1874,7 +1878,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
case DT_SYMINENT:
case DT_GNU_CONFLICTSZ:
case DT_GNU_LIBLISTSZ:
- printf (gettext ("%" PRId64 " (bytes)\n"), dyn->d_un.d_val);
+ printf (_("%" PRId64 " (bytes)\n"), dyn->d_un.d_val);
break;
case DT_VERDEFNUM:
@@ -1987,7 +1991,7 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
if (unlikely (symshdr == NULL || symdata == NULL || destshdr == NULL))
{
- printf (gettext ("\nInvalid symbol table at offset %#0" PRIx64 "\n"),
+ printf (_("\nInvalid symbol table at offset %#0" PRIx64 "\n"),
shdr->sh_offset);
return;
}
@@ -2002,7 +2006,7 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
if (shdr->sh_info != 0)
printf (ngettext ("\
@@ -2030,9 +2034,9 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
shdr->sh_offset,
nentries);
fputs_unlocked (class == ELFCLASS32
- ? gettext ("\
+ ? _("\
Offset Type Value Name\n")
- : gettext ("\
+ : _("\
Offset Type Value Name\n"),
stdout);
@@ -2085,7 +2089,7 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
+ : _("<INVALID RELOC>"),
class == ELFCLASS32 ? 10 : 18, "",
elf_strptr (ebl->elf, shstrndx, destshdr->sh_name));
else
@@ -2096,8 +2100,8 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
- gettext ("INVALID SYMBOL"),
+ : _("<INVALID RELOC>"),
+ _("INVALID SYMBOL"),
(long int) GELF_R_SYM (rel->r_info));
}
else if (GELF_ST_TYPE (sym->st_info) != STT_SECTION)
@@ -2109,7 +2113,7 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
+ : _("<INVALID RELOC>"),
class == ELFCLASS32 ? 10 : 18, sym->st_value,
elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name));
else
@@ -2130,8 +2134,8 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
- gettext ("INVALID SECTION"),
+ : _("<INVALID RELOC>"),
+ _("INVALID SECTION"),
(long int) (sym->st_shndx == SHN_XINDEX
? xndx : sym->st_shndx));
else
@@ -2142,7 +2146,7 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
+ : _("<INVALID RELOC>"),
class == ELFCLASS32 ? 10 : 18, sym->st_value,
elf_strptr (ebl->elf, shstrndx, secshdr->sh_name));
}
@@ -2177,7 +2181,7 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
if (unlikely (symshdr == NULL || symdata == NULL || destshdr == NULL))
{
- printf (gettext ("\nInvalid symbol table at offset %#0" PRIx64 "\n"),
+ printf (_("\nInvalid symbol table at offset %#0" PRIx64 "\n"),
shdr->sh_offset);
return;
}
@@ -2192,7 +2196,7 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
if (shdr->sh_info != 0)
printf (ngettext ("\
@@ -2220,9 +2224,9 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
shdr->sh_offset,
nentries);
fputs_unlocked (class == ELFCLASS32
- ? gettext ("\
+ ? _("\
Offset Type Value Addend Name\n")
- : gettext ("\
+ : _("\
Offset Type Value Addend Name\n"),
stdout);
@@ -2276,7 +2280,7 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
+ : _("<INVALID RELOC>"),
class == ELFCLASS32 ? 10 : 18, "",
rel->r_addend,
elf_strptr (ebl->elf, shstrndx, destshdr->sh_name));
@@ -2288,8 +2292,8 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
- gettext ("INVALID SYMBOL"),
+ : _("<INVALID RELOC>"),
+ _("INVALID SYMBOL"),
(long int) GELF_R_SYM (rel->r_info));
}
else if (GELF_ST_TYPE (sym->st_info) != STT_SECTION)
@@ -2302,7 +2306,7 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
+ : _("<INVALID RELOC>"),
class == ELFCLASS32 ? 10 : 18, sym->st_value,
rel->r_addend,
elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name));
@@ -2324,8 +2328,8 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
- gettext ("INVALID SECTION"),
+ : _("<INVALID RELOC>"),
+ _("INVALID SECTION"),
(long int) (sym->st_shndx == SHN_XINDEX
? xndx : sym->st_shndx));
else
@@ -2337,7 +2341,7 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
information. */
? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info),
buf, sizeof (buf)) + 2
- : gettext ("<INVALID RELOC>"),
+ : _("<INVALID RELOC>"),
class == ELFCLASS32 ? 10 : 18, sym->st_value,
rel->r_addend,
elf_strptr (ebl->elf, shstrndx, secshdr->sh_name));
@@ -2370,7 +2374,7 @@ print_symtab (Ebl *ebl, int type)
const char *sname;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
sname = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
if (sname == NULL || strcmp (sname, symbol_table_section) != 0)
continue;
@@ -2380,12 +2384,12 @@ print_symtab (Ebl *ebl, int type)
{
if (elf_compress (scn, 0, 0) < 0)
printf ("WARNING: %s [%zd]\n",
- gettext ("Couldn't uncompress section"),
+ _("Couldn't uncompress section"),
elf_ndxscn (scn));
shdr = gelf_getshdr (scn, &shdr_mem);
if (unlikely (shdr == NULL))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section [%zd] header: %s"),
+ _("cannot get section [%zd] header: %s"),
elf_ndxscn (scn), elf_errmsg (-1));
}
handle_symtab (ebl, scn, shdr);
@@ -2446,13 +2450,13 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
GElf_Shdr glink_mem;
GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
&glink_mem);
if (glink == NULL)
- error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %zu"),
+ error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"),
elf_ndxscn (scn));
/* Now we can compute the number of entries in the section. */
@@ -2473,9 +2477,9 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
elf_strptr (ebl->elf, shstrndx, glink->sh_name));
fputs_unlocked (class == ELFCLASS32
- ? gettext ("\
+ ? _("\
Num: Value Size Type Bind Vis Ndx Name\n")
- : gettext ("\
+ : _("\
Num: Value Size Type Bind Vis Ndx Name\n"),
stdout);
@@ -2495,7 +2499,7 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
if (likely (sym->st_shndx != SHN_XINDEX))
xndx = sym->st_shndx;
- printf (gettext ("\
+ printf (_("\
%5u: %0*" PRIx64 " %6" PRId64 " %-7s %-6s %-9s %6s %s"),
cnt,
class == ELFCLASS32 ? 8 : 16,
@@ -2583,7 +2587,7 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
check_def = 0;
}
else if (unlikely (! is_nobits))
- error (0, 0, gettext ("bad dynamic symbol"));
+ error (0, 0, _("bad dynamic symbol"));
else
check_def = 1;
}
@@ -2665,7 +2669,7 @@ get_ver_flags (unsigned int flags)
char *endp;
if (flags == 0)
- return gettext ("none");
+ return _("none");
if (flags & VER_FLG_BASE)
endp = stpcpy (buf, "BASE ");
@@ -2682,7 +2686,7 @@ get_ver_flags (unsigned int flags)
if (unlikely (flags & ~(VER_FLG_BASE | VER_FLG_WEAK)))
{
- strncpy (endp, gettext ("| <unknown>"), buf + sizeof (buf) - endp);
+ strncpy (endp, _("| <unknown>"), buf + sizeof (buf) - endp);
buf[sizeof (buf) - 1] = '\0';
}
@@ -2704,13 +2708,13 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
GElf_Shdr glink_mem;
GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
&glink_mem);
if (glink == NULL)
- error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %zu"),
+ error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"),
elf_ndxscn (scn));
printf (ngettext ("\
@@ -2734,7 +2738,7 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
if (unlikely (need == NULL))
break;
- printf (gettext (" %#06x: Version: %hu File: %s Cnt: %hu\n"),
+ printf (_(" %#06x: Version: %hu File: %s Cnt: %hu\n"),
offset, (unsigned short int) need->vn_version,
elf_strptr (ebl->elf, shdr->sh_link, need->vn_file),
(unsigned short int) need->vn_cnt);
@@ -2747,7 +2751,7 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
if (unlikely (aux == NULL))
break;
- printf (gettext (" %#06x: Name: %s Flags: %s Version: %hu\n"),
+ printf (_(" %#06x: Name: %s Flags: %s Version: %hu\n"),
auxoffset,
elf_strptr (ebl->elf, shdr->sh_link, aux->vna_name),
get_ver_flags (aux->vna_flags),
@@ -2780,13 +2784,13 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
GElf_Shdr glink_mem;
GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
&glink_mem);
if (glink == NULL)
- error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %zu"),
+ error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"),
elf_ndxscn (scn));
int class = gelf_getclass (ebl->elf);
@@ -2818,7 +2822,7 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
if (unlikely (aux == NULL))
break;
- printf (gettext ("\
+ printf (_("\
%#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"),
offset, def->vd_version,
get_ver_flags (def->vd_flags),
@@ -2833,7 +2837,7 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
if (unlikely (aux == NULL))
break;
- printf (gettext (" %#06x: Parent %d: %s\n"),
+ printf (_(" %#06x: Parent %d: %s\n"),
auxoffset, cnt2,
elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name));
@@ -2867,7 +2871,7 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
/* We have to find the version definition section and extract the
version names. */
@@ -3090,7 +3094,7 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
&glink_mem);
size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_HALF, 1, EV_CURRENT);
if (glink == NULL)
- error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %zu"),
+ error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"),
elf_ndxscn (scn));
/* Print the header. */
@@ -3122,12 +3126,12 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
{
ssize_t n;
case 0:
- fputs_unlocked (gettext (" 0 *local* "),
+ fputs_unlocked (_(" 0 *local* "),
stdout);
break;
case 1:
- fputs_unlocked (gettext (" 1 *global* "),
+ fputs_unlocked (_(" 1 *global* "),
stdout);
break;
@@ -3164,7 +3168,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx,
&glink_mem);
if (glink == NULL)
{
- error (0, 0, gettext ("invalid sh_link value in section %zu"),
+ error (0, 0, _("invalid sh_link value in section %zu"),
elf_ndxscn (scn));
return;
}
@@ -3191,16 +3195,16 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx,
uint64_t success = 0;
/* xgettext:no-c-format */
- fputs_unlocked (gettext ("\
+ fputs_unlocked (_("\
Length Number % of total Coverage\n"), stdout);
- printf (gettext (" 0 %6" PRIu32 " %5.1f%%\n"),
+ printf (_(" 0 %6" PRIu32 " %5.1f%%\n"),
counts[0], (counts[0] * 100.0) / nbucket);
uint64_t nzero_counts = 0;
for (Elf32_Word cnt = 1; cnt <= maxlength; ++cnt)
{
nzero_counts += counts[cnt] * cnt;
- printf (gettext ("\
+ printf (_("\
%7d %6" PRIu32 " %5.1f%% %5.1f%%\n"),
(int) cnt, counts[cnt], (counts[cnt] * 100.0) / nbucket,
(nzero_counts * 100.0) / nsyms);
@@ -3213,7 +3217,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx,
success += counts[cnt] * acc;
}
- printf (gettext ("\
+ printf (_("\
Average number of tests: successful lookup: %f\n\
unsuccessful lookup: %f\n"),
(double) success / (double) nzero_counts,
@@ -3231,7 +3235,7 @@ handle_sysv_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
Elf_Data *data = elf_getdata (scn, NULL);
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get data for section %d: %s"),
+ error (0, 0, _("cannot get data for section %d: %s"),
(int) elf_ndxscn (scn), elf_errmsg (-1));
return;
}
@@ -3239,7 +3243,7 @@ handle_sysv_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
if (unlikely (data->d_size < 2 * sizeof (Elf32_Word)))
{
invalid_data:
- error (0, 0, gettext ("invalid data in sysv.hash section %d"),
+ error (0, 0, _("invalid data in sysv.hash section %d"),
(int) elf_ndxscn (scn));
return;
}
@@ -3268,7 +3272,7 @@ handle_sysv_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
++chain_len;
if (chain_len > nchain)
{
- error (0, 0, gettext ("invalid chain in sysv.hash section %d"),
+ error (0, 0, _("invalid chain in sysv.hash section %d"),
(int) elf_ndxscn (scn));
free (lengths);
return;
@@ -3295,7 +3299,7 @@ handle_sysv_hash64 (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
Elf_Data *data = elf_getdata (scn, NULL);
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get data for section %d: %s"),
+ error (0, 0, _("cannot get data for section %d: %s"),
(int) elf_ndxscn (scn), elf_errmsg (-1));
return;
}
@@ -3303,7 +3307,7 @@ handle_sysv_hash64 (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
if (unlikely (data->d_size < 2 * sizeof (Elf64_Xword)))
{
invalid_data:
- error (0, 0, gettext ("invalid data in sysv.hash64 section %d"),
+ error (0, 0, _("invalid data in sysv.hash64 section %d"),
(int) elf_ndxscn (scn));
return;
}
@@ -3334,7 +3338,7 @@ handle_sysv_hash64 (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
++chain_len;
if (chain_len > nchain)
{
- error (0, 0, gettext ("invalid chain in sysv.hash64 section %d"),
+ error (0, 0, _("invalid chain in sysv.hash64 section %d"),
(int) elf_ndxscn (scn));
free (lengths);
return;
@@ -3361,7 +3365,7 @@ handle_gnu_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
Elf_Data *data = elf_getdata (scn, NULL);
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get data for section %d: %s"),
+ error (0, 0, _("cannot get data for section %d: %s"),
(int) elf_ndxscn (scn), elf_errmsg (-1));
return;
}
@@ -3370,7 +3374,7 @@ handle_gnu_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
{
invalid_data:
free (lengths);
- error (0, 0, gettext ("invalid data in gnu.hash section %d"),
+ error (0, 0, _("invalid data in gnu.hash section %d"),
(int) elf_ndxscn (scn));
return;
}
@@ -3392,7 +3396,7 @@ handle_gnu_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
Elf32_Word shift = ((Elf32_Word *) data->d_buf)[3];
/* Is there still room for the sym chain?
- Use uint64_t calculation to prevent 32bit overlow. */
+ Use uint64_t calculation to prevent 32bit overflow. */
uint64_t used_buf = (4ULL + bitmask_words + nbucket) * sizeof (Elf32_Word);
uint32_t max_nsyms = (data->d_size - used_buf) / sizeof (Elf32_Word);
if (used_buf > data->d_size)
@@ -3437,7 +3441,7 @@ handle_gnu_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
}
char *str;
- if (unlikely (asprintf (&str, gettext ("\
+ if (unlikely (asprintf (&str, _("\
Symbol Bias: %u\n\
Bitmask Size: %zu bytes %" PRIuFAST32 "%% bits set 2nd hash shift: %u\n"),
(unsigned int) symbias,
@@ -3446,7 +3450,7 @@ handle_gnu_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
/ (uint_fast32_t) (bitmask_words
* sizeof (Elf32_Word) * 8)),
(unsigned int) shift) == -1))
- error (EXIT_FAILURE, 0, gettext ("memory exhausted"));
+ error (EXIT_FAILURE, 0, _("memory exhausted"));
print_hash_info (ebl, scn, shdr, shstrndx, maxlength, nbucket, nsyms,
lengths, str);
@@ -3465,7 +3469,7 @@ handle_hash (Ebl *ebl)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
Elf_Scn *scn = NULL;
while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
@@ -3481,12 +3485,12 @@ handle_hash (Ebl *ebl)
{
if (elf_compress (scn, 0, 0) < 0)
printf ("WARNING: %s [%zd]\n",
- gettext ("Couldn't uncompress section"),
+ _("Couldn't uncompress section"),
elf_ndxscn (scn));
shdr = gelf_getshdr (scn, &shdr_mem);
if (unlikely (shdr == NULL))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section [%zd] header: %s"),
+ _("cannot get section [%zd] header: %s"),
elf_ndxscn (scn), elf_errmsg (-1));
}
@@ -3515,7 +3519,7 @@ print_liblist (Ebl *ebl)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
{
@@ -3540,7 +3544,7 @@ print_liblist (Ebl *ebl)
if (data == NULL)
return;
- puts (gettext ("\
+ puts (_("\
Library Time Stamp Checksum Version Flags"));
for (int cnt = 0; cnt < nentries; ++cnt)
@@ -3567,6 +3571,13 @@ print_liblist (Ebl *ebl)
}
}
+static inline size_t
+left (Elf_Data *data,
+ const unsigned char *p)
+{
+ return (const unsigned char *) data->d_buf + data->d_size - p;
+}
+
static void
print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
{
@@ -3578,7 +3589,7 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
{
@@ -3592,7 +3603,7 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
|| ehdr->e_machine != EM_CSKY)))
continue;
- printf (gettext ("\
+ printf (_("\
\nObject attributes section [%2zu] '%s' of %" PRIu64
" bytes at offset %#0" PRIx64 ":\n"),
elf_ndxscn (scn),
@@ -3609,15 +3620,10 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
if (unlikely (*p++ != 'A'))
return;
- fputs_unlocked (gettext (" Owner Size\n"), stdout);
-
- inline size_t left (void)
- {
- return (const unsigned char *) data->d_buf + data->d_size - p;
- }
+ fputs_unlocked (_(" Owner Size\n"), stdout);
/* Loop over the sections. */
- while (left () >= 4)
+ while (left (data, p) >= 4)
{
/* Section length. */
uint32_t len;
@@ -3626,7 +3632,7 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
if (MY_ELFDATA != ehdr->e_ident[EI_DATA])
CONVERT (len);
- if (unlikely (len > left ()))
+ if (unlikely (len > left (data, p)))
break;
/* Section vendor name. */
@@ -3638,7 +3644,7 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
break;
++q;
- printf (gettext (" %-13s %4" PRIu32 "\n"), name, len);
+ printf (_(" %-13s %4" PRIu32 "\n"), name, len);
bool gnu_vendor = (q - name == sizeof "gnu"
&& !memcmp (name, "gnu", sizeof "gnu"));
@@ -3677,12 +3683,12 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
{
default:
/* Unknown subsection, print and skip. */
- printf (gettext (" %-4u %12" PRIu32 "\n"),
+ printf (_(" %-4u %12" PRIu32 "\n"),
subsection_tag, subsection_len);
break;
case 1: /* Tag_File */
- printf (gettext (" File: %11" PRIu32 "\n"),
+ printf (_(" File: %11" PRIu32 "\n"),
subsection_len);
while (r < q)
@@ -3731,13 +3737,13 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
if (tag_name != NULL)
{
if (tag == 32)
- printf (gettext (" %s: %" PRId64 ", %s\n"),
+ printf (_(" %s: %" PRId64 ", %s\n"),
tag_name, value, string);
else if (string == NULL && value_name == NULL)
- printf (gettext (" %s: %" PRId64 "\n"),
+ printf (_(" %s: %" PRId64 "\n"),
tag_name, value);
else
- printf (gettext (" %s: %s\n"),
+ printf (_(" %s: %s\n"),
tag_name, string ?: value_name);
}
else
@@ -3747,10 +3753,10 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr)
assert (tag != 32
|| strcmp ((const char *) name, "gnu"));
if (string == NULL)
- printf (gettext (" %u: %" PRId64 "\n"),
+ printf (_(" %u: %" PRId64 "\n"),
tag, value);
else
- printf (gettext (" %u: %s\n"),
+ printf (_(" %u: %s\n"),
tag, string);
}
}
@@ -4055,7 +4061,7 @@ dwarf_locexpr_opcode_string (unsigned int code)
{
static const char *const known[] =
{
- /* Normally we can't affort building huge table of 64K entries,
+ /* Normally we can't afford building huge table of 64K entries,
most of them zero, just because there are a couple defined
values at the far end. In case of opcodes, it's OK. */
#define DWARF_ONE_KNOWN_DW_OP(NAME, CODE) [CODE] = #NAME,
@@ -4783,7 +4789,7 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest,
continue;
invalid:
- printf (gettext ("%*s[%2" PRIuMAX "] %s <TRUNCATED>\n"),
+ printf (_("%*s[%2" PRIuMAX "] %s <TRUNCATED>\n"),
indent, "", (uintmax_t) offset, op_name);
break;
}
@@ -4829,10 +4835,13 @@ listptr_base (struct listptr *p)
return cudie_base (&cu);
}
+/* To store the name used in compare_listptr */
+static const char *sort_listptr_name;
+
static int
-compare_listptr (const void *a, const void *b, void *arg)
+compare_listptr (const void *a, const void *b)
{
- const char *name = arg;
+ const char *name = sort_listptr_name;
struct listptr *p1 = (void *) a;
struct listptr *p2 = (void *) b;
@@ -4847,28 +4856,28 @@ compare_listptr (const void *a, const void *b, void *arg)
{
p1->warned = p2->warned = true;
error (0, 0,
- gettext ("%s %#" PRIx64 " used with different address sizes"),
+ _("%s %#" PRIx64 " used with different address sizes"),
name, (uint64_t) p1->offset);
}
if (p1->dwarf64 != p2->dwarf64)
{
p1->warned = p2->warned = true;
error (0, 0,
- gettext ("%s %#" PRIx64 " used with different offset sizes"),
+ _("%s %#" PRIx64 " used with different offset sizes"),
name, (uint64_t) p1->offset);
}
if (listptr_base (p1) != listptr_base (p2))
{
p1->warned = p2->warned = true;
error (0, 0,
- gettext ("%s %#" PRIx64 " used with different base addresses"),
+ _("%s %#" PRIx64 " used with different base addresses"),
name, (uint64_t) p1->offset);
}
if (p1->attr != p2 ->attr)
{
p1->warned = p2->warned = true;
error (0, 0,
- gettext ("%s %#" PRIx64
+ _("%s %#" PRIx64
" used with different attribute %s and %s"),
name, (uint64_t) p1->offset, dwarf_attr_name (p2->attr),
dwarf_attr_name (p2->attr));
@@ -4942,8 +4951,11 @@ static void
sort_listptr (struct listptr_table *table, const char *name)
{
if (table->n > 0)
- qsort_r (table->table, table->n, sizeof table->table[0],
- &compare_listptr, (void *) name);
+ {
+ sort_listptr_name = name;
+ qsort (table->table, table->n, sizeof table->table[0],
+ &compare_listptr);
+ }
}
static bool
@@ -4965,7 +4977,7 @@ skip_listptr_hole (struct listptr_table *table, size_t *idxp,
|| p->offset >= (Dwarf_Off) (endp - *readp + offset))
{
*readp = endp;
- printf (gettext (" [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"),
+ printf (_(" [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"),
offset);
return true;
}
@@ -4973,7 +4985,7 @@ skip_listptr_hole (struct listptr_table *table, size_t *idxp,
if (p->offset != (Dwarf_Off) offset)
{
*readp += p->offset - offset;
- printf (gettext (" [%6tx] <UNUSED GARBAGE> ... %" PRIu64 " bytes ...\n"),
+ printf (_(" [%6tx] <UNUSED GARBAGE> ... %" PRIu64 " bytes ...\n"),
offset, (Dwarf_Off) p->offset - offset);
return true;
}
@@ -4993,17 +5005,19 @@ skip_listptr_hole (struct listptr_table *table, size_t *idxp,
}
static Dwarf_Off
-next_listptr_offset (struct listptr_table *table, size_t idx)
+next_listptr_offset (struct listptr_table *table, size_t *idxp, Dwarf_Off off)
{
/* Note that multiple attributes could in theory point to the same loclist
offset, so make sure we pick one that is bigger than the current one.
The table is sorted on offset. */
- Dwarf_Off offset = table->table[idx].offset;
- while (++idx < table->n)
+ if (*idxp < table->n)
{
- Dwarf_Off next = table->table[idx].offset;
- if (next > offset)
- return next;
+ while (++*idxp < table->n)
+ {
+ Dwarf_Off next = table->table[*idxp].offset;
+ if (next > off)
+ return next;
+ }
}
return 0;
}
@@ -5036,13 +5050,36 @@ listptr_cu (struct listptr_table *table, size_t *idxp,
struct listptr *p = &table->table[*idxp];
*base = listptr_base (p);
*cu = p->cu;
- ++*idxp;
return true;
}
return false;
}
+/* Returns the next index with the current CU for the given attribute.
+ If there is none false is returned, otherwise true. Assumes the
+ table has been sorted. */
+static bool
+listptr_attr (struct listptr_table *table, size_t idxp,
+ Dwarf_Off offset, unsigned int attr)
+{
+ struct listptr *listptr;
+ do
+ {
+ listptr = get_listptr (table, idxp);
+ if (listptr == NULL)
+ return false;
+
+ if (listptr->offset == offset && listptr->attr == attr)
+ return true;
+
+ idxp++;
+ }
+ while (listptr->offset <= offset);
+
+ return false;
+}
+
static void
print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
Ebl *ebl, GElf_Ehdr *ehdr __attribute__ ((unused)),
@@ -5051,7 +5088,7 @@ print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
const size_t sh_size = (dbg->sectiondata[IDX_debug_abbrev] ?
dbg->sectiondata[IDX_debug_abbrev]->d_size : 0);
- printf (gettext ("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"
+ printf (_("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"
" [ Code]\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -5059,7 +5096,7 @@ print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
Dwarf_Off offset = 0;
while (offset < sh_size)
{
- printf (gettext ("\nAbbreviation section at offset %" PRIu64 ":\n"),
+ printf (_("\nAbbreviation section at offset %" PRIu64 ":\n"),
offset);
while (1)
@@ -5072,7 +5109,7 @@ print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
{
if (unlikely (res < 0))
{
- printf (gettext ("\
+ printf (_("\
*** error while reading abbreviation: %s\n"),
dwarf_errmsg (-1));
return;
@@ -5088,7 +5125,7 @@ print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
unsigned int tag = dwarf_getabbrevtag (&abbrev);
int has_children = dwarf_abbrevhaschildren (&abbrev);
- printf (gettext (" [%5u] offset: %" PRId64
+ printf (_(" [%5u] offset: %" PRId64
", children: %s, tag: %s\n"),
code, (int64_t) offset,
has_children ? yes_str : no_str,
@@ -5121,7 +5158,7 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
Ebl *ebl, GElf_Ehdr *ehdr,
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -5134,7 +5171,7 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
?: elf_rawdata (scn, NULL));
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get .debug_addr section data: %s"),
+ error (0, 0, _("cannot get .debug_addr section data: %s"),
elf_errmsg (-1));
return;
}
@@ -5226,7 +5263,7 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
{
error (0, 0,
"Warning: Couldn't calculate .debug_addr "
- " unit lenght at %" PRIx64, off);
+ " unit length at %" PRIx64, off);
next_unitp = readendp;
}
}
@@ -5234,12 +5271,12 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
/* Pretend we have a header. */
printf ("\n");
- printf (gettext (" Length: %8" PRIu64 "\n"),
+ printf (_(" Length: %8" PRIu64 "\n"),
unit_length);
- printf (gettext (" DWARF version: %8" PRIu16 "\n"), version);
- printf (gettext (" Address size: %8" PRIu64 "\n"),
+ printf (_(" DWARF version: %8" PRIu16 "\n"), version);
+ printf (_(" Address size: %8" PRIu64 "\n"),
(uint64_t) address_size);
- printf (gettext (" Segment size: %8" PRIu64 "\n"),
+ printf (_(" Segment size: %8" PRIu64 "\n"),
(uint64_t) segment_size);
printf ("\n");
}
@@ -5258,7 +5295,7 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
unit_length = read_8ubyte_unaligned_inc (dbg, readp);
}
printf ("\n");
- printf (gettext (" Length: %8" PRIu64 "\n"),
+ printf (_(" Length: %8" PRIu64 "\n"),
unit_length);
/* We need at least 2-bytes (version) + 1-byte
@@ -5273,32 +5310,32 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
next_unitp = readp + unit_length;
version = read_2ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" DWARF version: %8" PRIu16 "\n"), version);
+ printf (_(" DWARF version: %8" PRIu16 "\n"), version);
if (version != 5)
{
- error (0, 0, gettext ("Unknown version"));
+ error (0, 0, _("Unknown version"));
goto next_unit;
}
address_size = *readp++;
- printf (gettext (" Address size: %8" PRIu64 "\n"),
+ printf (_(" Address size: %8" PRIu64 "\n"),
(uint64_t) address_size);
if (address_size != 4 && address_size != 8)
{
- error (0, 0, gettext ("unsupported address size"));
+ error (0, 0, _("unsupported address size"));
goto next_unit;
}
segment_size = *readp++;
- printf (gettext (" Segment size: %8" PRIu64 "\n"),
+ printf (_(" Segment size: %8" PRIu64 "\n"),
(uint64_t) segment_size);
printf ("\n");
if (segment_size != 0)
{
- error (0, 0, gettext ("unsupported segment size"));
+ error (0, 0, _("unsupported segment size"));
goto next_unit;
}
@@ -5351,7 +5388,7 @@ print_decoded_aranges_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn,
size_t cnt;
if (unlikely (dwarf_getaranges (dbg, &aranges, &cnt) != 0))
{
- error (0, 0, gettext ("cannot get .debug_aranges content: %s"),
+ error (0, 0, _("cannot get .debug_aranges content: %s"),
dwarf_errmsg (-1));
return;
}
@@ -5361,7 +5398,7 @@ print_decoded_aranges_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn,
glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &glink_mem);
if (glink == NULL)
{
- error (0, 0, gettext ("invalid sh_link value in section %zu"),
+ error (0, 0, _("invalid sh_link value in section %zu"),
elf_ndxscn (scn));
return;
}
@@ -5397,9 +5434,9 @@ print_decoded_aranges_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn,
Dwarf_Off offset;
if (unlikely (dwarf_getarangeinfo (runp, &start, &length, &offset) != 0))
- printf (gettext (" [%*zu] ???\n"), digits, n);
+ printf (_(" [%*zu] ???\n"), digits, n);
else
- printf (gettext (" [%*zu] start: %0#*" PRIx64
+ printf (_(" [%*zu] start: %0#*" PRIx64
", length: %5" PRIu64 ", CU DIE offset: %6"
PRId64 "\n"),
digits, n, ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 10 : 18,
@@ -5425,12 +5462,12 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get .debug_aranges content: %s"),
+ error (0, 0, _("cannot get .debug_aranges content: %s"),
elf_errmsg (-1));
return;
}
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -5443,11 +5480,11 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
const unsigned char *hdrstart = readp;
size_t start_offset = hdrstart - (const unsigned char *) data->d_buf;
- printf (gettext ("\nTable at offset %zu:\n"), start_offset);
+ printf (_("\nTable at offset %zu:\n"), start_offset);
if (readp + 4 > readendp)
{
invalid_data:
- error (0, 0, gettext ("invalid data in section [%zu] '%s'"),
+ error (0, 0, _("invalid data in section [%zu] '%s'"),
elf_ndxscn (scn), section_name (ebl, shdr));
return;
}
@@ -5463,7 +5500,7 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
}
const unsigned char *nexthdr = readp + length;
- printf (gettext ("\n Length: %6" PRIu64 "\n"),
+ printf (_("\n Length: %6" PRIu64 "\n"),
(uint64_t) length);
if (unlikely (length > (size_t) (readendp - readp)))
@@ -5475,11 +5512,11 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (readp + 2 > readendp)
goto invalid_data;
uint_fast16_t version = read_2ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" DWARF version: %6" PRIuFAST16 "\n"),
+ printf (_(" DWARF version: %6" PRIuFAST16 "\n"),
version);
if (version != 2)
{
- error (0, 0, gettext ("unsupported aranges version"));
+ error (0, 0, _("unsupported aranges version"));
goto next_table;
}
@@ -5490,28 +5527,28 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
offset = read_8ubyte_unaligned_inc (dbg, readp);
else
offset = read_4ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" CU offset: %6" PRIx64 "\n"),
+ printf (_(" CU offset: %6" PRIx64 "\n"),
(uint64_t) offset);
if (readp + 1 > readendp)
goto invalid_data;
unsigned int address_size = *readp++;
- printf (gettext (" Address size: %6" PRIu64 "\n"),
+ printf (_(" Address size: %6" PRIu64 "\n"),
(uint64_t) address_size);
if (address_size != 4 && address_size != 8)
{
- error (0, 0, gettext ("unsupported address size"));
+ error (0, 0, _("unsupported address size"));
goto next_table;
}
if (readp + 1 > readendp)
goto invalid_data;
unsigned int segment_size = *readp++;
- printf (gettext (" Segment size: %6" PRIu64 "\n\n"),
+ printf (_(" Segment size: %6" PRIu64 "\n\n"),
(uint64_t) segment_size);
if (segment_size != 0 && segment_size != 4 && segment_size != 8)
{
- error (0, 0, gettext ("unsupported segment size"));
+ error (0, 0, _("unsupported segment size"));
goto next_table;
}
@@ -5562,7 +5599,7 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (readp != nexthdr)
{
size_t padding = nexthdr - readp;
- printf (gettext (" %zu padding bytes\n"), padding);
+ printf (_(" %zu padding bytes\n"), padding);
readp = nexthdr;
}
}
@@ -5597,7 +5634,7 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
Elf_Scn *scn, GElf_Shdr *shdr,
Dwarf *dbg __attribute__((unused)))
{
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -5606,7 +5643,7 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
?: elf_rawdata (scn, NULL));
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get .debug_rnglists content: %s"),
+ error (0, 0, _("cannot get .debug_rnglists content: %s"),
elf_errmsg (-1));
return;
}
@@ -5623,13 +5660,13 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
if (unlikely (readp > dataend - 4))
{
invalid_data:
- error (0, 0, gettext ("invalid data in section [%zu] '%s'"),
+ error (0, 0, _("invalid data in section [%zu] '%s'"),
elf_ndxscn (scn), section_name (ebl, shdr));
return;
}
ptrdiff_t offset = readp - (unsigned char *) data->d_buf;
- printf (gettext ("Table at Offset 0x%" PRIx64 ":\n\n"),
+ printf (_("Table at Offset 0x%" PRIx64 ":\n\n"),
(uint64_t) offset);
uint64_t unit_length = read_4ubyte_unaligned_inc (dbg, readp);
@@ -5642,7 +5679,7 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
unit_length = read_8ubyte_unaligned_inc (dbg, readp);
offset_size = 8;
}
- printf (gettext (" Length: %8" PRIu64 "\n"), unit_length);
+ printf (_(" Length: %8" PRIu64 "\n"), unit_length);
/* We need at least 2-bytes + 1-byte + 1-byte + 4-bytes = 8
bytes to complete the header. And this unit cannot go beyond
@@ -5655,36 +5692,36 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
const unsigned char *nexthdr = readp + unit_length;
uint16_t version = read_2ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" DWARF version: %8" PRIu16 "\n"), version);
+ printf (_(" DWARF version: %8" PRIu16 "\n"), version);
if (version != 5)
{
- error (0, 0, gettext ("Unknown version"));
+ error (0, 0, _("Unknown version"));
goto next_table;
}
uint8_t address_size = *readp++;
- printf (gettext (" Address size: %8" PRIu64 "\n"),
+ printf (_(" Address size: %8" PRIu64 "\n"),
(uint64_t) address_size);
if (address_size != 4 && address_size != 8)
{
- error (0, 0, gettext ("unsupported address size"));
+ error (0, 0, _("unsupported address size"));
goto next_table;
}
uint8_t segment_size = *readp++;
- printf (gettext (" Segment size: %8" PRIu64 "\n"),
+ printf (_(" Segment size: %8" PRIu64 "\n"),
(uint64_t) segment_size);
if (segment_size != 0 && segment_size != 4 && segment_size != 8)
{
- error (0, 0, gettext ("unsupported segment size"));
+ error (0, 0, _("unsupported segment size"));
goto next_table;
}
uint32_t offset_entry_count = read_4ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" Offset entries: %8" PRIu64 "\n"),
+ printf (_(" Offset entries: %8" PRIu64 "\n"),
(uint64_t) offset_entry_count);
/* We need the CU that uses this unit to get the initial base address. */
@@ -5700,15 +5737,15 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
if (dwarf_cu_die (cu, &cudie,
NULL, NULL, NULL, NULL,
NULL, NULL) == NULL)
- printf (gettext (" Unknown CU base: "));
+ printf (_(" Unknown CU base: "));
else
- printf (gettext (" CU [%6" PRIx64 "] base: "),
+ printf (_(" CU [%6" PRIx64 "] base: "),
dwarf_dieoffset (&cudie));
print_dwarf_addr (dwflmod, address_size, cu_base, cu_base);
printf ("\n");
}
else
- printf (gettext (" Not associated with a CU.\n"));
+ printf (_(" Not associated with a CU.\n"));
printf ("\n");
@@ -5719,11 +5756,11 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
if (offset_entry_count > max_entries)
{
error (0, 0,
- gettext ("too many offset entries for unit length"));
+ _("too many offset entries for unit length"));
offset_entry_count = max_entries;
}
- printf (gettext (" Offsets starting at 0x%" PRIx64 ":\n"),
+ printf (_(" Offsets starting at 0x%" PRIx64 ":\n"),
(uint64_t) (offset_array_start
- (unsigned char *) data->d_buf));
for (uint32_t idx = 0; idx < offset_entry_count; idx++)
@@ -5775,7 +5812,7 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
if ((uint64_t) (nexthdr - readp) < 1)
{
invalid_range:
- error (0, 0, gettext ("invalid range list data"));
+ error (0, 0, _("invalid range list data"));
goto next_table;
}
get_uleb128 (op1, readp, nexthdr);
@@ -5960,7 +5997,7 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod,
if (readp != nexthdr)
{
size_t padding = nexthdr - readp;
- printf (gettext (" %zu padding bytes\n\n"), padding);
+ printf (_(" %zu padding bytes\n\n"), padding);
readp = nexthdr;
}
}
@@ -5977,12 +6014,12 @@ print_debug_ranges_section (Dwfl_Module *dwflmod,
?: elf_rawdata (scn, NULL));
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get .debug_ranges content: %s"),
+ error (0, 0, _("cannot get .debug_ranges content: %s"),
elf_errmsg (-1));
return;
}
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -6013,9 +6050,9 @@ print_debug_ranges_section (Dwfl_Module *dwflmod,
if (dwarf_cu_die (cu, &cudie,
NULL, NULL, NULL, NULL,
NULL, NULL) == NULL)
- printf (gettext ("\n Unknown CU base: "));
+ printf (_("\n Unknown CU base: "));
else
- printf (gettext ("\n CU [%6" PRIx64 "] base: "),
+ printf (_("\n CU [%6" PRIx64 "] base: "),
dwarf_dieoffset (&cudie));
print_dwarf_addr (dwflmod, address_size, base, base);
printf ("\n");
@@ -6024,7 +6061,7 @@ print_debug_ranges_section (Dwfl_Module *dwflmod,
if (unlikely (data->d_size - offset < (size_t) address_size * 2))
{
- printf (gettext (" [%6tx] <INVALID DATA>\n"), offset);
+ printf (_(" [%6tx] <INVALID DATA>\n"), offset);
break;
}
@@ -6045,15 +6082,21 @@ print_debug_ranges_section (Dwfl_Module *dwflmod,
if (begin == (Dwarf_Addr) -1l) /* Base address entry. */
{
- printf (gettext (" [%6tx] base address\n "), offset);
+ if (first)
+ printf (" [%6tx] ", offset);
+ else
+ printf (" ");
+ puts (_("base address"));
+ printf (" ");
print_dwarf_addr (dwflmod, address_size, end, end);
printf ("\n");
base = end;
+ first = false;
}
else if (begin == 0 && end == 0) /* End of list entry. */
{
if (first)
- printf (gettext (" [%6tx] empty list\n"), offset);
+ printf (_(" [%6tx] empty list\n"), offset);
first = true;
}
else
@@ -6163,12 +6206,19 @@ read_encoded (unsigned int encoding, const unsigned char *readp,
default:
invalid:
error (1, 0,
- gettext ("invalid encoding"));
+ _("invalid encoding"));
}
return readp;
}
+static const char *
+regname (Ebl *ebl, unsigned int regno, char *regnamebuf)
+{
+ register_info (ebl, regno, NULL, regnamebuf, NULL, NULL);
+
+ return regnamebuf;
+}
static void
print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
@@ -6176,14 +6226,9 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
int data_align,
unsigned int version, unsigned int ptr_size,
unsigned int encoding,
- Dwfl_Module *dwflmod, Ebl *ebl, Dwarf *dbg)
+ Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, Dwarf *dbg)
{
char regnamebuf[REGNAMESZ];
- const char *regname (unsigned int regno)
- {
- register_info (ebl, regno, NULL, regnamebuf, NULL, NULL);
- return regnamebuf;
- }
puts ("\n Program:");
Dwarf_Word pc = vma_base;
@@ -6240,26 +6285,28 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
get_uleb128 (op2, readp, endp);
printf (" offset_extended r%" PRIu64 " (%s) at cfa%+" PRId64
"\n",
- op1, regname (op1), op2 * data_align);
+ op1, regname (ebl, op1, regnamebuf), op2 * data_align);
break;
case DW_CFA_restore_extended:
if ((uint64_t) (endp - readp) < 1)
goto invalid;
get_uleb128 (op1, readp, endp);
printf (" restore_extended r%" PRIu64 " (%s)\n",
- op1, regname (op1));
+ op1, regname (ebl, op1, regnamebuf));
break;
case DW_CFA_undefined:
if ((uint64_t) (endp - readp) < 1)
goto invalid;
get_uleb128 (op1, readp, endp);
- printf (" undefined r%" PRIu64 " (%s)\n", op1, regname (op1));
+ printf (" undefined r%" PRIu64 " (%s)\n", op1,
+ regname (ebl, op1, regnamebuf));
break;
case DW_CFA_same_value:
if ((uint64_t) (endp - readp) < 1)
goto invalid;
get_uleb128 (op1, readp, endp);
- printf (" same_value r%" PRIu64 " (%s)\n", op1, regname (op1));
+ printf (" same_value r%" PRIu64 " (%s)\n", op1,
+ regname (ebl, op1, regnamebuf));
break;
case DW_CFA_register:
if ((uint64_t) (endp - readp) < 1)
@@ -6269,7 +6316,8 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
goto invalid;
get_uleb128 (op2, readp, endp);
printf (" register r%" PRIu64 " (%s) in r%" PRIu64 " (%s)\n",
- op1, regname (op1), op2, regname (op2));
+ op1, regname (ebl, op1, regnamebuf), op2,
+ regname (ebl, op2, regnamebuf));
break;
case DW_CFA_remember_state:
puts (" remember_state");
@@ -6285,14 +6333,14 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
goto invalid;
get_uleb128 (op2, readp, endp);
printf (" def_cfa r%" PRIu64 " (%s) at offset %" PRIu64 "\n",
- op1, regname (op1), op2);
+ op1, regname (ebl, op1, regnamebuf), op2);
break;
case DW_CFA_def_cfa_register:
if ((uint64_t) (endp - readp) < 1)
goto invalid;
get_uleb128 (op1, readp, endp);
printf (" def_cfa_register r%" PRIu64 " (%s)\n",
- op1, regname (op1));
+ op1, regname (ebl, op1, regnamebuf));
break;
case DW_CFA_def_cfa_offset:
if ((uint64_t) (endp - readp) < 1)
@@ -6308,7 +6356,7 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
if ((uint64_t) (endp - readp) < op1)
{
invalid:
- fputs (gettext (" <INVALID DATA>\n"), stdout);
+ fputs (_(" <INVALID DATA>\n"), stdout);
return;
}
print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, NULL,
@@ -6323,7 +6371,7 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
goto invalid;
get_uleb128 (op2, readp, endp); /* Length of DW_FORM_block. */
printf (" expression r%" PRIu64 " (%s) \n",
- op1, regname (op1));
+ op1, regname (ebl, op1, regnamebuf));
if ((uint64_t) (endp - readp) < op2)
goto invalid;
print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, NULL,
@@ -6339,7 +6387,7 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
get_sleb128 (sop2, readp, endp);
printf (" offset_extended_sf r%" PRIu64 " (%s) at cfa%+"
PRId64 "\n",
- op1, regname (op1), sop2 * data_align);
+ op1, regname (ebl, op1, regnamebuf), sop2 * data_align);
break;
case DW_CFA_def_cfa_sf:
if ((uint64_t) (endp - readp) < 1)
@@ -6349,7 +6397,7 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
goto invalid;
get_sleb128 (sop2, readp, endp);
printf (" def_cfa_sf r%" PRIu64 " (%s) at offset %" PRId64 "\n",
- op1, regname (op1), sop2 * data_align);
+ op1, regname (ebl, op1, regnamebuf), sop2 * data_align);
break;
case DW_CFA_def_cfa_offset_sf:
if ((uint64_t) (endp - readp) < 1)
@@ -6385,7 +6433,7 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
goto invalid;
get_uleb128 (op2, readp, endp); /* Length of DW_FORM_block. */
printf (" val_expression r%" PRIu64 " (%s)\n",
- op1, regname (op1));
+ op1, regname (ebl, op1, regnamebuf));
if ((uint64_t) (endp - readp) < op2)
goto invalid;
print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0,
@@ -6399,8 +6447,11 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
printf (" MIPS_advance_loc8 %" PRIu64 " to %#" PRIx64 "\n",
op1, pc += op1 * code_align);
break;
- case DW_CFA_GNU_window_save:
- puts (" GNU_window_save");
+ case DW_CFA_GNU_window_save: /* DW_CFA_AARCH64_negate_ra_state */
+ if (ehdr->e_machine == EM_AARCH64)
+ puts (" AARCH64_negate_ra_state");
+ else
+ puts (" GNU_window_save");
break;
case DW_CFA_GNU_args_size:
if ((uint64_t) (endp - readp) < 1)
@@ -6422,11 +6473,12 @@ print_cfa_program (const unsigned char *readp, const unsigned char *const endp,
goto invalid;
get_uleb128 (offset, readp, endp);
printf (" offset r%u (%s) at cfa%+" PRId64 "\n",
- opcode & 0x3f, regname (opcode & 0x3f), offset * data_align);
+ opcode & 0x3f, regname (ebl, opcode & 0x3f, regnamebuf),
+ offset * data_align);
}
else
printf (" restore r%u (%s)\n",
- opcode & 0x3f, regname (opcode & 0x3f));
+ opcode & 0x3f, regname (ebl, opcode & 0x3f, regnamebuf));
}
}
@@ -6561,7 +6613,7 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
GElf_Addr bias;
if (dwfl_module_getelf (dwflmod, &bias) == NULL)
{
- error (0, 0, gettext ("cannot get ELF: %s"), dwfl_errmsg (-1));
+ error (0, 0, _("cannot get ELF: %s"), dwfl_errmsg (-1));
return;
}
@@ -6573,17 +6625,17 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get %s content: %s"),
+ error (0, 0, _("cannot get %s content: %s"),
scnname, elf_errmsg (-1));
return;
}
if (is_eh_frame)
- printf (gettext ("\
+ printf (_("\
\nCall frame information section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), scnname, (uint64_t) shdr->sh_offset);
else
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), scnname, (uint64_t) shdr->sh_offset);
@@ -6607,7 +6659,7 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (unlikely (readp + 4 > dataend))
{
invalid_data:
- error (0, 0, gettext ("invalid data in section [%zu] '%s'"),
+ error (0, 0, _("invalid data in section [%zu] '%s'"),
elf_ndxscn (scn), scnname);
return;
}
@@ -6629,7 +6681,7 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (unlikely (unit_length == 0))
{
- printf (gettext ("\n [%6tx] Zero terminator\n"), offset);
+ printf (_("\n [%6tx] Zero terminator\n"), offset);
continue;
}
@@ -6730,7 +6782,7 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (augmentationlen > (size_t) (cieend - readp))
{
- error (0, 0, gettext ("invalid augmentation length"));
+ error (0, 0, _("invalid augmentation length"));
readp = cieend;
continue;
}
@@ -6745,13 +6797,13 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (*cp == 'R')
{
fde_encoding = *readp++;
- print_encoding_base (gettext ("FDE address encoding: "),
+ print_encoding_base (_("FDE address encoding: "),
fde_encoding);
}
else if (*cp == 'L')
{
lsda_encoding = *readp++;
- print_encoding_base (gettext ("LSDA pointer encoding: "),
+ print_encoding_base (_("LSDA pointer encoding: "),
lsda_encoding);
}
else if (*cp == 'P')
@@ -6861,14 +6913,14 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
& (ptr_size == 4
? UINT64_C (0xffffffff)
: UINT64_C (0xffffffffffffffff)));
- printf (gettext (" (offset: %#" PRIx64 ")"),
+ printf (_(" (offset: %#" PRIx64 ")"),
(uint64_t) vma_base);
}
printf ("\n address_range: %#" PRIx64,
(uint64_t) address_range);
if ((fde_encoding & 0x70) == DW_EH_PE_pcrel)
- printf (gettext (" (end offset: %#" PRIx64 ")"),
+ printf (_(" (end offset: %#" PRIx64 ")"),
((uint64_t) vma_base + (uint64_t) address_range)
& (ptr_size == 4
? UINT64_C (0xffffffff)
@@ -6884,7 +6936,7 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (augmentationlen > (size_t) (cieend - readp))
{
- error (0, 0, gettext ("invalid augmentation length"));
+ error (0, 0, _("invalid augmentation length"));
readp = cieend;
continue;
}
@@ -6905,7 +6957,7 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
&readp[augmentationlen],
&lsda_pointer, dbg);
u = p - readp;
- printf (gettext ("\
+ printf (_("\
%-26sLSDA pointer: %#" PRIx64 "\n"),
hdr, lsda_pointer);
hdr = "";
@@ -6930,7 +6982,7 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
else
print_cfa_program (readp, cieend, vma_base, code_alignment_factor,
data_alignment_factor, version, ptr_size,
- fde_encoding, dwflmod, ebl, dbg);
+ fde_encoding, dwflmod, ebl, ehdr, dbg);
readp = cieend;
}
}
@@ -6990,7 +7042,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
if (unlikely (attr == 0))
{
if (!cbargs->silent)
- error (0, 0, gettext ("DIE [%" PRIx64 "] "
+ error (0, 0, _("DIE [%" PRIx64 "] "
"cannot get attribute code: %s"),
dwarf_dieoffset (die), dwarf_errmsg (-1));
return DWARF_CB_ABORT;
@@ -7000,7 +7052,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
if (unlikely (form == 0))
{
if (!cbargs->silent)
- error (0, 0, gettext ("DIE [%" PRIx64 "] "
+ error (0, 0, _("DIE [%" PRIx64 "] "
"cannot get attribute form: %s"),
dwarf_dieoffset (die), dwarf_errmsg (-1));
return DWARF_CB_ABORT;
@@ -7022,7 +7074,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
{
attrval_out:
if (!cbargs->silent)
- error (0, 0, gettext ("DIE [%" PRIx64 "] "
+ error (0, 0, _("DIE [%" PRIx64 "] "
"cannot get attribute '%s' (%s) value: "
"%s"),
dwarf_dieoffset (die),
@@ -7352,15 +7404,15 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
valuestr = filename + 1;
}
else
- error (0, 0, gettext ("invalid file (%" PRId64 "): %s"),
+ error (0, 0, _("invalid file (%" PRId64 "): %s"),
num, dwarf_errmsg (-1));
}
else
- error (0, 0, gettext ("no srcfiles for CU [%" PRIx64 "]"),
+ error (0, 0, _("no srcfiles for CU [%" PRIx64 "]"),
dwarf_dieoffset (&cudie));
}
else
- error (0, 0, gettext ("couldn't get DWARF CU: %s"),
+ error (0, 0, _("couldn't get DWARF CU: %s"),
dwarf_errmsg (-1));
if (valuestr == NULL)
valuestr = "???";
@@ -7673,7 +7725,7 @@ print_debug_units (Dwfl_Module *dwflmod,
const char *secname = section_name (ebl, shdr);
if (!silent)
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n [Offset]\n"),
elf_ndxscn (scn), secname, (uint64_t) shdr->sh_offset);
@@ -7723,7 +7775,7 @@ print_debug_units (Dwfl_Module *dwflmod,
if (unit_res == -1)
{
if (!silent)
- error (0, 0, gettext ("cannot get next unit: %s"), dwarf_errmsg (-1));
+ error (0, 0, _("cannot get next unit: %s"), dwarf_errmsg (-1));
goto do_return;
}
@@ -7742,7 +7794,7 @@ print_debug_units (Dwfl_Module *dwflmod,
Dwarf_Off dieoffset;
dieoffset = dwarf_dieoffset (dwarf_offdie_types (dbg, subdie_off,
&typedie));
- printf (gettext (" Type unit at offset %" PRIu64 ":\n"
+ printf (_(" Type unit at offset %" PRIu64 ":\n"
" Version: %" PRIu16
", Abbreviation section offset: %" PRIu64
", Address size: %" PRIu8
@@ -7754,7 +7806,7 @@ print_debug_units (Dwfl_Module *dwflmod,
}
else
{
- printf (gettext (" Compilation unit at offset %" PRIu64 ":\n"
+ printf (_(" Compilation unit at offset %" PRIu64 ":\n"
" Version: %" PRIu16
", Abbreviation section offset: %" PRIu64
", Address size: %" PRIu8
@@ -7764,7 +7816,7 @@ print_debug_units (Dwfl_Module *dwflmod,
if (version >= 5 || (unit_type != DW_UT_compile
&& unit_type != DW_UT_partial))
{
- printf (gettext (" Unit type: %s (%" PRIu8 ")"),
+ printf (_(" Unit type: %s (%" PRIu8 ")"),
dwarf_unit_name (unit_type), unit_type);
if (unit_type == DW_UT_type
|| unit_type == DW_UT_skeleton
@@ -7791,7 +7843,7 @@ print_debug_units (Dwfl_Module *dwflmod,
|| unit_type < DW_UT_compile || unit_type > DW_UT_split_type)
{
if (!silent)
- error (0, 0, gettext ("unknown version (%d) or unit type (%d)"),
+ error (0, 0, _("unknown version (%d) or unit type (%d)"),
version, unit_type);
goto next_cu;
}
@@ -7820,7 +7872,7 @@ print_debug_units (Dwfl_Module *dwflmod,
if (unlikely (offset == (Dwarf_Off) -1))
{
if (!silent)
- error (0, 0, gettext ("cannot get DIE offset: %s"),
+ error (0, 0, _("cannot get DIE offset: %s"),
dwarf_errmsg (-1));
goto do_return;
}
@@ -7829,7 +7881,7 @@ print_debug_units (Dwfl_Module *dwflmod,
if (unlikely (tag == DW_TAG_invalid))
{
if (!silent)
- error (0, 0, gettext ("cannot get tag of DIE at offset [%" PRIx64
+ error (0, 0, _("cannot get tag of DIE at offset [%" PRIx64
"] in section '%s': %s"),
(uint64_t) offset, secname, dwarf_errmsg (-1));
goto do_return;
@@ -7867,7 +7919,7 @@ print_debug_units (Dwfl_Module *dwflmod,
if (unlikely (res == -1))
{
if (!silent)
- error (0, 0, gettext ("cannot get next DIE: %s\n"),
+ error (0, 0, _("cannot get next DIE: %s\n"),
dwarf_errmsg (-1));
goto do_return;
}
@@ -7875,7 +7927,7 @@ print_debug_units (Dwfl_Module *dwflmod,
else if (unlikely (res < 0))
{
if (!silent)
- error (0, 0, gettext ("cannot get next DIE: %s"),
+ error (0, 0, _("cannot get next DIE: %s"),
dwarf_errmsg (-1));
goto do_return;
}
@@ -7919,7 +7971,7 @@ print_debug_units (Dwfl_Module *dwflmod,
if (!silent)
{
- printf (gettext (" Split compilation unit at offset %"
+ printf (_(" Split compilation unit at offset %"
PRIu64 ":\n"
" Version: %" PRIu16
", Abbreviation section offset: %" PRIu64
@@ -7927,7 +7979,7 @@ print_debug_units (Dwfl_Module *dwflmod,
", Offset size: %" PRIu8 "\n"),
(uint64_t) offset, version, abbroffset,
addrsize, offsize);
- printf (gettext (" Unit type: %s (%" PRIu8 ")"),
+ printf (_(" Unit type: %s (%" PRIu8 ")"),
dwarf_unit_name (unit_type), unit_type);
printf (", Unit id: 0x%.16" PRIx64 "", unit_id);
printf ("\n");
@@ -7971,7 +8023,7 @@ print_decoded_line_section (Dwfl_Module *dwflmod, Ebl *ebl,
GElf_Ehdr *ehdr __attribute__ ((unused)),
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -8303,7 +8355,7 @@ print_form_data (Dwarf *dbg, int form, const unsigned char *readp,
goto strx_val;
default:
- error (0, 0, gettext ("unknown form: %s"), dwarf_form_name (form));
+ error (0, 0, _("unknown form: %s"), dwarf_form_name (form));
return readendp;
}
@@ -8320,7 +8372,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
return;
}
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -8334,7 +8386,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
?: elf_rawdata (scn, NULL));
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get line data section data: %s"),
+ error (0, 0, _("cannot get line data section data: %s"),
elf_errmsg (-1));
return;
}
@@ -8347,7 +8399,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
{
size_t start_offset = linep - (const unsigned char *) data->d_buf;
- printf (gettext ("\nTable at offset %zu:\n"), start_offset);
+ printf (_("\nTable at offset %zu:\n"), start_offset);
if (unlikely (linep + 4 > lineendp))
goto invalid_data;
@@ -8358,7 +8410,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (unlikely (linep + 8 > lineendp))
{
invalid_data:
- error (0, 0, gettext ("invalid data in section [%zu] '%s'"),
+ error (0, 0, _("invalid data in section [%zu] '%s'"),
elf_ndxscn (scn), section_name (ebl, shdr));
return;
}
@@ -8436,7 +8488,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
uint_fast8_t opcode_base = *linep++;
/* Print what we got so far. */
- printf (gettext ("\n"
+ printf (_("\n"
" Length: %" PRIu64 "\n"
" DWARF version: %" PRIuFAST16 "\n"
" Prologue length: %" PRIu64 "\n"
@@ -8458,7 +8510,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (version < 2 || version > 5)
{
- error (0, 0, gettext ("cannot handle .debug_line version: %u\n"),
+ error (0, 0, _("cannot handle .debug_line version: %u\n"),
(unsigned int) version);
linep = lineendp;
continue;
@@ -8466,7 +8518,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (address_size != 4 && address_size != 8)
{
- error (0, 0, gettext ("cannot handle address size: %u\n"),
+ error (0, 0, _("cannot handle address size: %u\n"),
(unsigned int) address_size);
linep = lineendp;
continue;
@@ -8474,7 +8526,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (segment_selector_size != 0)
{
- error (0, 0, gettext ("cannot handle segment selector size: %u\n"),
+ error (0, 0, _("cannot handle segment selector size: %u\n"),
(unsigned int) segment_selector_size);
linep = lineendp;
continue;
@@ -8484,7 +8536,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
{
invalid_unit:
error (0, 0,
- gettext ("invalid data at offset %tu in section [%zu] '%s'"),
+ _("invalid data at offset %tu in section [%zu] '%s'"),
linep - (const unsigned char *) data->d_buf,
elf_ndxscn (scn), section_name (ebl, shdr));
linep = lineendp;
@@ -8510,13 +8562,13 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
Dwarf_Off str_offsets_base = str_offsets_base_off (dbg, NULL);
- puts (gettext ("\nDirectory table:"));
+ puts (_("\nDirectory table:"));
if (version > 4)
{
struct encpair { uint16_t desc; uint16_t form; };
struct encpair enc[256];
- printf (gettext (" ["));
+ printf (_(" ["));
if ((size_t) (lineendp - linep) < 1)
goto invalid_data;
unsigned char directory_entry_format_count = *linep++;
@@ -8587,13 +8639,13 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (unlikely (linep >= lineendp))
goto invalid_unit;
- puts (gettext ("\nFile name table:"));
+ puts (_("\nFile name table:"));
if (version > 4)
{
struct encpair { uint16_t desc; uint16_t form; };
struct encpair enc[256];
- printf (gettext (" ["));
+ printf (_(" ["));
if ((size_t) (lineendp - linep) < 1)
goto invalid_data;
unsigned char file_name_format_count = *linep++;
@@ -8642,13 +8694,13 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
printf (", ");
}
printf ("\n");
- if (linep >= lineendp)
+ if (linep > lineendp)
goto invalid_unit;
}
}
else
{
- puts (gettext (" Entry Dir Time Size Name"));
+ puts (_(" Entry Dir Time Size Name"));
for (unsigned int cnt = 1; linep < lineendp && *linep != 0; ++cnt)
{
/* First comes the file name. */
@@ -8685,7 +8737,13 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
++linep;
}
- puts (gettext ("\nLine number statements:"));
+ if (linep == lineendp)
+ {
+ puts (_("\nNo line number statements."));
+ return;
+ }
+
+ puts (_("\nLine number statements:"));
Dwarf_Word address = 0;
unsigned int op_index = 0;
size_t line = 1;
@@ -8694,21 +8752,18 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
/* Apply the "operation advance" from a special opcode
or DW_LNS_advance_pc (as per DWARF4 6.2.5.1). */
unsigned int op_addr_advance;
- bool show_op_index;
inline void advance_pc (unsigned int op_advance)
{
op_addr_advance = minimum_instr_len * ((op_index + op_advance)
/ max_ops_per_instr);
address += op_addr_advance;
- show_op_index = (op_index > 0 ||
- (op_index + op_advance) % max_ops_per_instr > 0);
op_index = (op_index + op_advance) % max_ops_per_instr;
}
if (max_ops_per_instr == 0)
{
error (0, 0,
- gettext ("invalid maximum operations per instruction is zero"));
+ _("invalid maximum operations per instruction is zero"));
linep = lineendp;
continue;
}
@@ -8742,14 +8797,14 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
line += line_increment;
advance_pc ((opcode - opcode_base) / line_range);
- printf (gettext (" special opcode %u: address+%u = "),
+ printf (_(" special opcode %u: address+%u = "),
opcode, op_addr_advance);
print_dwarf_addr (dwflmod, 0, address, address);
- if (show_op_index)
- printf (gettext (", op_index = %u, line%+d = %zu\n"),
+ if (op_index > 0)
+ printf (_(", op_index = %u, line%+d = %zu\n"),
op_index, line_increment, line);
else
- printf (gettext (", line%+d = %zu\n"),
+ printf (_(", line%+d = %zu\n"),
line_increment, line);
}
else if (opcode == 0)
@@ -8767,12 +8822,12 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
/* The sub-opcode. */
opcode = *linep++;
- printf (gettext (" extended opcode %u: "), opcode);
+ printf (_(" extended opcode %u: "), opcode);
switch (opcode)
{
case DW_LNE_end_sequence:
- puts (gettext (" end of sequence"));
+ puts (_(" end of sequence"));
/* Reset the registers we care about. */
address = 0;
@@ -8790,7 +8845,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
else
address = read_8ubyte_unaligned_inc (dbg, linep);
{
- printf (gettext (" set address to "));
+ printf (_(" set address to "));
print_dwarf_addr (dwflmod, 0, address, address);
printf ("\n");
}
@@ -8818,7 +8873,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
goto invalid_unit;
get_uleb128 (filelength, linep, lineendp);
- printf (gettext ("\
+ printf (_("\
define new file: dir=%u, mtime=%" PRIu64 ", length=%" PRIu64 ", name=%s\n"),
diridx, (uint64_t) mtime, (uint64_t) filelength,
fname);
@@ -8832,12 +8887,12 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
goto invalid_unit;
get_uleb128 (u128, linep, lineendp);
- printf (gettext (" set discriminator to %u\n"), u128);
+ printf (_(" set discriminator to %u\n"), u128);
break;
default:
/* Unknown, ignore it. */
- puts (gettext (" unknown opcode"));
+ puts (_(" unknown opcode"));
linep += len - 1;
break;
}
@@ -8849,7 +8904,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
{
case DW_LNS_copy:
/* Takes no argument. */
- puts (gettext (" copy"));
+ puts (_(" copy"));
break;
case DW_LNS_advance_pc:
@@ -8860,11 +8915,11 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
get_uleb128 (u128, linep, lineendp);
advance_pc (u128);
{
- printf (gettext (" advance address by %u to "),
+ printf (_(" advance address by %u to "),
op_addr_advance);
print_dwarf_addr (dwflmod, 0, address, address);
- if (show_op_index)
- printf (gettext (", op_index to %u"), op_index);
+ if (op_index > 0)
+ printf (_(", op_index to %u"), op_index);
printf ("\n");
}
break;
@@ -8876,7 +8931,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
goto invalid_unit;
get_sleb128 (s128, linep, lineendp);
line += s128;
- printf (gettext ("\
+ printf (_("\
advance line by constant %d to %" PRId64 "\n"),
s128, (int64_t) line);
break;
@@ -8886,7 +8941,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
if (lineendp - linep < 1)
goto invalid_unit;
get_uleb128 (u128, linep, lineendp);
- printf (gettext (" set file to %" PRIu64 "\n"),
+ printf (_(" set file to %" PRIu64 "\n"),
(uint64_t) u128);
break;
@@ -8897,20 +8952,20 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
goto invalid_unit;
get_uleb128 (u128, linep, lineendp);
- printf (gettext (" set column to %" PRIu64 "\n"),
+ printf (_(" set column to %" PRIu64 "\n"),
(uint64_t) u128);
break;
case DW_LNS_negate_stmt:
/* Takes no argument. */
is_stmt = 1 - is_stmt;
- printf (gettext (" set '%s' to %" PRIuFAST8 "\n"),
+ printf (_(" set '%s' to %" PRIuFAST8 "\n"),
"is_stmt", is_stmt);
break;
case DW_LNS_set_basic_block:
/* Takes no argument. */
- puts (gettext (" set basic block flag"));
+ puts (_(" set basic block flag"));
break;
case DW_LNS_const_add_pc:
@@ -8921,11 +8976,11 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
advance_pc ((255 - opcode_base) / line_range);
{
- printf (gettext (" advance address by constant %u to "),
+ printf (_(" advance address by constant %u to "),
op_addr_advance);
print_dwarf_addr (dwflmod, 0, address, address);
- if (show_op_index)
- printf (gettext (", op_index to %u"), op_index);
+ if (op_index > 0)
+ printf (_(", op_index to %u"), op_index);
printf ("\n");
}
break;
@@ -8941,7 +8996,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
address += u128;
op_index = 0;
{
- printf (gettext ("\
+ printf (_("\
advance address by fixed value %u to \n"),
u128);
print_dwarf_addr (dwflmod, 0, address, address);
@@ -8951,12 +9006,12 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
case DW_LNS_set_prologue_end:
/* Takes no argument. */
- puts (gettext (" set prologue end flag"));
+ puts (_(" set prologue end flag"));
break;
case DW_LNS_set_epilogue_begin:
/* Takes no argument. */
- puts (gettext (" set epilogue begin flag"));
+ puts (_(" set epilogue begin flag"));
break;
case DW_LNS_set_isa:
@@ -8966,7 +9021,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
goto invalid_unit;
get_uleb128 (u128, linep, lineendp);
- printf (gettext (" set isa to %u\n"), u128);
+ printf (_(" set isa to %u\n"), u128);
break;
}
}
@@ -9006,7 +9061,7 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
Elf_Scn *scn, GElf_Shdr *shdr,
Dwarf *dbg)
{
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -9015,7 +9070,7 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
?: elf_rawdata (scn, NULL));
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get .debug_loclists content: %s"),
+ error (0, 0, _("cannot get .debug_loclists content: %s"),
elf_errmsg (-1));
return;
}
@@ -9032,13 +9087,13 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
if (unlikely (readp > dataend - 4))
{
invalid_data:
- error (0, 0, gettext ("invalid data in section [%zu] '%s'"),
+ error (0, 0, _("invalid data in section [%zu] '%s'"),
elf_ndxscn (scn), section_name (ebl, shdr));
return;
}
ptrdiff_t offset = readp - (unsigned char *) data->d_buf;
- printf (gettext ("Table at Offset 0x%" PRIx64 ":\n\n"),
+ printf (_("Table at Offset 0x%" PRIx64 ":\n\n"),
(uint64_t) offset);
uint64_t unit_length = read_4ubyte_unaligned_inc (dbg, readp);
@@ -9051,7 +9106,7 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
unit_length = read_8ubyte_unaligned_inc (dbg, readp);
offset_size = 8;
}
- printf (gettext (" Length: %8" PRIu64 "\n"), unit_length);
+ printf (_(" Length: %8" PRIu64 "\n"), unit_length);
/* We need at least 2-bytes + 1-byte + 1-byte + 4-bytes = 8
bytes to complete the header. And this unit cannot go beyond
@@ -9064,36 +9119,36 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
const unsigned char *nexthdr = readp + unit_length;
uint16_t version = read_2ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" DWARF version: %8" PRIu16 "\n"), version);
+ printf (_(" DWARF version: %8" PRIu16 "\n"), version);
if (version != 5)
{
- error (0, 0, gettext ("Unknown version"));
+ error (0, 0, _("Unknown version"));
goto next_table;
}
uint8_t address_size = *readp++;
- printf (gettext (" Address size: %8" PRIu64 "\n"),
+ printf (_(" Address size: %8" PRIu64 "\n"),
(uint64_t) address_size);
if (address_size != 4 && address_size != 8)
{
- error (0, 0, gettext ("unsupported address size"));
+ error (0, 0, _("unsupported address size"));
goto next_table;
}
uint8_t segment_size = *readp++;
- printf (gettext (" Segment size: %8" PRIu64 "\n"),
+ printf (_(" Segment size: %8" PRIu64 "\n"),
(uint64_t) segment_size);
if (segment_size != 0)
{
- error (0, 0, gettext ("unsupported segment size"));
+ error (0, 0, _("unsupported segment size"));
goto next_table;
}
uint32_t offset_entry_count = read_4ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" Offset entries: %8" PRIu64 "\n"),
+ printf (_(" Offset entries: %8" PRIu64 "\n"),
(uint64_t) offset_entry_count);
/* We need the CU that uses this unit to get the initial base address. */
@@ -9109,15 +9164,15 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
if (dwarf_cu_die (cu, &cudie,
NULL, NULL, NULL, NULL,
NULL, NULL) == NULL)
- printf (gettext (" Unknown CU base: "));
+ printf (_(" Unknown CU base: "));
else
- printf (gettext (" CU [%6" PRIx64 "] base: "),
+ printf (_(" CU [%6" PRIx64 "] base: "),
dwarf_dieoffset (&cudie));
print_dwarf_addr (dwflmod, address_size, cu_base, cu_base);
printf ("\n");
}
else
- printf (gettext (" Not associated with a CU.\n"));
+ printf (_(" Not associated with a CU.\n"));
printf ("\n");
@@ -9128,11 +9183,11 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
if (offset_entry_count > max_entries)
{
error (0, 0,
- gettext ("too many offset entries for unit length"));
+ _("too many offset entries for unit length"));
offset_entry_count = max_entries;
}
- printf (gettext (" Offsets starting at 0x%" PRIx64 ":\n"),
+ printf (_(" Offsets starting at 0x%" PRIx64 ":\n"),
(uint64_t) (offset_array_start
- (unsigned char *) data->d_buf));
for (uint32_t idx = 0; idx < offset_entry_count; idx++)
@@ -9156,6 +9211,43 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
bool start_of_list = true;
while (readp < nexthdr)
{
+ Dwarf_Off off = (Dwarf_Off) (readp - (unsigned char *) data->d_buf);
+ if (listptr_attr (&known_loclistsptr, listptr_idx, off,
+ DW_AT_GNU_locviews))
+ {
+ Dwarf_Off next_off = next_listptr_offset (&known_loclistsptr,
+ &listptr_idx, off);
+ const unsigned char *locp = readp;
+ const unsigned char *locendp;
+ if (next_off == 0
+ || next_off > (size_t) (nexthdr - ((const unsigned char *)
+ data->d_buf)))
+ locendp = nexthdr;
+ else
+ locendp = (const unsigned char *) data->d_buf + next_off;
+
+ printf (" Offset: %" PRIx64 ", Index: %" PRIx64 "\n",
+ (uint64_t) (readp - (unsigned char *) data->d_buf),
+ (uint64_t) (readp - offset_array_start));
+
+ while (locp < locendp)
+ {
+ uint64_t v1, v2;
+ get_uleb128 (v1, locp, locendp);
+ if (locp >= locendp)
+ {
+ printf (_(" <INVALID DATA>\n"));
+ break;
+ }
+ get_uleb128 (v2, locp, locendp);
+ printf (" view pair %" PRId64 ", %" PRId64 "\n", v1, v2);
+ }
+
+ printf ("\n");
+ readp = (unsigned char *) locendp;
+ continue;
+ }
+
uint8_t kind = *readp++;
uint64_t op1, op2, len;
@@ -9184,7 +9276,7 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
if ((uint64_t) (nexthdr - readp) < 1)
{
invalid_entry:
- error (0, 0, gettext ("invalid loclists data"));
+ error (0, 0, _("invalid loclists data"));
goto next_table;
}
get_uleb128 (op1, readp, nexthdr);
@@ -9420,7 +9512,7 @@ print_debug_loclists_section (Dwfl_Module *dwflmod,
if (readp != nexthdr)
{
size_t padding = nexthdr - readp;
- printf (gettext (" %zu padding bytes\n\n"), padding);
+ printf (_(" %zu padding bytes\n\n"), padding);
readp = nexthdr;
}
}
@@ -9437,12 +9529,12 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get .debug_loc content: %s"),
+ error (0, 0, _("cannot get .debug_loc content: %s"),
elf_errmsg (-1));
return;
}
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -9475,9 +9567,9 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
if (dwarf_cu_die (cu, &cudie,
NULL, NULL, NULL, NULL,
NULL, NULL) == NULL)
- printf (gettext ("\n Unknown CU base: "));
+ printf (_("\n Unknown CU base: "));
else
- printf (gettext ("\n CU [%6" PRIx64 "] base: "),
+ printf (_("\n CU [%6" PRIx64 "] base: "),
dwarf_dieoffset (&cudie));
print_dwarf_addr (dwflmod, address_size, base, base);
printf ("\n");
@@ -9487,7 +9579,7 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
if (attr == DW_AT_GNU_locviews)
{
Dwarf_Off next_off = next_listptr_offset (&known_locsptr,
- listptr_idx);
+ &listptr_idx, offset);
const unsigned char *locp = readp;
const unsigned char *locendp;
if (next_off == 0
@@ -9503,7 +9595,7 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
get_uleb128 (v1, locp, locendp);
if (locp >= locendp)
{
- printf (gettext (" [%6tx] <INVALID DATA>\n"), offset);
+ printf (_(" [%6tx] <INVALID DATA>\n"), offset);
break;
}
get_uleb128 (v2, locp, locendp);
@@ -9529,7 +9621,7 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
&& unlikely (data->d_size - offset < (size_t) address_size * 2))
{
invalid_data:
- printf (gettext (" [%6tx] <INVALID DATA>\n"), offset);
+ printf (_(" [%6tx] <INVALID DATA>\n"), offset);
break;
}
@@ -9609,15 +9701,21 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
if (begin == (Dwarf_Addr) -1l) /* Base address entry. */
{
- printf (gettext (" [%6tx] base address\n "), offset);
+ if (first)
+ printf (" [%6tx] ", offset);
+ else
+ printf (" ");
+ puts (_("base address"));
+ printf (" ");
print_dwarf_addr (dwflmod, address_size, end, end);
printf ("\n");
base = end;
+ first = false;
}
else if (begin == 0 && end == 0) /* End of list entry. */
{
if (first)
- printf (gettext (" [%6tx] empty list\n"), offset);
+ printf (_(" [%6tx] empty list\n"), offset);
first = true;
}
else
@@ -9644,7 +9742,7 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
if (endp - readp <= (ptrdiff_t) len)
{
- fputs (gettext (" <INVALID DATA>\n"), stdout);
+ fputs (_(" <INVALID DATA>\n"), stdout);
break;
}
@@ -9687,7 +9785,7 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
GElf_Ehdr *ehdr __attribute__ ((unused)),
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -9699,7 +9797,7 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
?: elf_rawdata (scn, NULL));
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get macro information section data: %s"),
+ error (0, 0, _("cannot get macro information section data: %s"),
elf_errmsg (-1));
return;
}
@@ -9779,7 +9877,7 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
endp = memchr (readp, '\0', readendp - readp);
if (unlikely (endp == NULL))
{
- printf (gettext ("\
+ printf (_("\
%*s*** non-terminated string at end of section"),
level, "");
return;
@@ -9802,7 +9900,7 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
get_uleb128 (u128, readp, readendp);
if (readendp - readp < 1)
{
- printf (gettext ("\
+ printf (_("\
%*s*** missing DW_MACINFO_start_file argument at end of section"),
level, "");
return;
@@ -9853,7 +9951,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
GElf_Ehdr *ehdr __attribute__ ((unused)),
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -9862,7 +9960,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
Elf_Data *data = elf_getdata (scn, NULL);
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get macro information section data: %s"),
+ error (0, 0, _("cannot get macro information section data: %s"),
elf_errmsg (-1));
return;
}
@@ -9903,7 +10001,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
while (readp < readendp)
{
- printf (gettext (" Offset: 0x%" PRIx64 "\n"),
+ printf (_(" Offset: 0x%" PRIx64 "\n"),
(uint64_t) (readp - (const unsigned char *) data->d_buf));
// Header, 2 byte version, 1 byte flag, optional .debug_line offset,
@@ -9911,24 +10009,24 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (readp + 2 > readendp)
{
invalid_data:
- error (0, 0, gettext ("invalid data"));
+ error (0, 0, _("invalid data"));
return;
}
const uint16_t vers = read_2ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" Version: %" PRIu16 "\n"), vers);
+ printf (_(" Version: %" PRIu16 "\n"), vers);
// Version 4 is the GNU extension for DWARF4. DWARF5 will use version
// 5 when it gets standardized.
if (vers != 4 && vers != 5)
{
- printf (gettext (" unknown version, cannot parse section\n"));
+ printf (_(" unknown version, cannot parse section\n"));
return;
}
if (readp + 1 > readendp)
goto invalid_data;
const unsigned char flag = *readp++;
- printf (gettext (" Flag: 0x%" PRIx8), flag);
+ printf (_(" Flag: 0x%" PRIx8), flag);
if (flag != 0)
{
printf (" (");
@@ -9957,7 +10055,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
printf ("\n");
unsigned int offset_len = (flag & 0x01) ? 8 : 4;
- printf (gettext (" Offset length: %" PRIu8 "\n"), offset_len);
+ printf (_(" Offset length: %" PRIu8 "\n"), offset_len);
Dwarf_Off line_offset = -1;
if (flag & 0x02)
{
@@ -9965,7 +10063,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
line_offset = read_8ubyte_unaligned_inc (dbg, readp);
else
line_offset = read_4ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" .debug_line offset: 0x%" PRIx64 "\n"),
+ printf (_(" .debug_line offset: 0x%" PRIx64 "\n"),
line_offset);
}
@@ -9990,14 +10088,14 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (readp + 1 > readendp)
goto invalid_data;
unsigned int tlen = *readp++;
- printf (gettext (" extension opcode table, %" PRIu8 " items:\n"),
+ printf (_(" extension opcode table, %" PRIu8 " items:\n"),
tlen);
for (unsigned int i = 0; i < tlen; i++)
{
if (readp + 1 > readendp)
goto invalid_data;
unsigned int opcode = *readp++;
- printf (gettext (" [%" PRIx8 "]"), opcode);
+ printf (_(" [%" PRIx8 "]"), opcode);
if (opcode < DW_MACRO_lo_user
|| opcode > DW_MACRO_hi_user)
goto invalid_data;
@@ -10009,7 +10107,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
unsigned int args = *readp++;
if (args > 0)
{
- printf (gettext (" %" PRIu8 " arguments:"), args);
+ printf (_(" %" PRIu8 " arguments:"), args);
while (args > 0)
{
if (readp + 1 > readendp)
@@ -10024,7 +10122,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
}
}
else
- printf (gettext (" no arguments."));
+ printf (_(" no arguments."));
putchar_unlocked ('\n');
}
}
@@ -10225,7 +10323,7 @@ print_pubnames (Dwarf *dbg __attribute__ ((unused)), Dwarf_Global *global,
{
int *np = (int *) arg;
- printf (gettext (" [%5d] DIE offset: %6" PRId64
+ printf (_(" [%5d] DIE offset: %6" PRId64
", CU DIE offset: %6" PRId64 ", name: %s\n"),
(*np)++, global->die_offset, global->cu_offset, global->name);
@@ -10240,7 +10338,7 @@ print_debug_pubnames_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
GElf_Ehdr *ehdr __attribute__ ((unused)),
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- printf (gettext ("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
+ printf (_("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -10269,7 +10367,7 @@ print_debug_str_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
}
digits = MAX (4, digits);
- printf (gettext ("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"
+ printf (_("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"
" %*s String\n"),
elf_ndxscn (scn),
section_name (ebl, shdr), (uint64_t) shdr->sh_offset,
@@ -10284,7 +10382,7 @@ print_debug_str_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
const char *endp = memchr (str, '\0', sh_size - offset);
if (unlikely (endp == NULL))
{
- printf (gettext (" *** error, missing string terminator\n"));
+ printf (_(" *** error, missing string terminator\n"));
break;
}
@@ -10300,7 +10398,7 @@ print_debug_str_offsets_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
GElf_Ehdr *ehdr __attribute__ ((unused)),
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- printf (gettext ("\
+ printf (_("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset);
@@ -10313,7 +10411,7 @@ print_debug_str_offsets_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
?: elf_rawdata (scn, NULL));
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get .debug_str_offsets section data: %s"),
+ error (0, 0, _("cannot get .debug_str_offsets section data: %s"),
elf_errmsg (-1));
return;
}
@@ -10412,9 +10510,9 @@ print_debug_str_offsets_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
offset_size = 4;
printf ("\n");
- printf (gettext (" Length: %8" PRIu64 "\n"),
+ printf (_(" Length: %8" PRIu64 "\n"),
unit_length);
- printf (gettext (" Offset size: %8" PRIu8 "\n"),
+ printf (_(" Offset size: %8" PRIu8 "\n"),
offset_size);
/* We need at least 2-bytes (version) + 2-bytes (padding) =
@@ -10428,16 +10526,16 @@ print_debug_str_offsets_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
next_unitp = readp + unit_length;
version = read_2ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" DWARF version: %8" PRIu16 "\n"), version);
+ printf (_(" DWARF version: %8" PRIu16 "\n"), version);
if (version != 5)
{
- error (0, 0, gettext ("Unknown version"));
+ error (0, 0, _("Unknown version"));
goto next_unit;
}
padding = read_2ubyte_unaligned_inc (dbg, readp);
- printf (gettext (" Padding: %8" PRIx16 "\n"), padding);
+ printf (_(" Padding: %8" PRIx16 "\n"), padding);
if (listptr != NULL
&& listptr->offset != (Dwarf_Off) (readp - start))
@@ -10491,7 +10589,7 @@ print_debug_frame_hdr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
GElf_Ehdr *ehdr __attribute__ ((unused)),
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- printf (gettext ("\
+ printf (_("\
\nCall frame search table section [%2zu] '.eh_frame_hdr':\n"),
elf_ndxscn (scn));
@@ -10499,7 +10597,7 @@ print_debug_frame_hdr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get %s content: %s"),
+ error (0, 0, _("cannot get %s content: %s"),
".eh_frame_hdr", elf_errmsg (-1));
return;
}
@@ -10511,7 +10609,7 @@ print_debug_frame_hdr_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (unlikely (readp + 4 > dataend))
{
invalid_data:
- error (0, 0, gettext ("invalid data"));
+ error (0, 0, _("invalid data"));
return;
}
@@ -10593,7 +10691,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
GElf_Shdr *shdr __attribute__ ((unused)),
Dwarf *dbg __attribute__ ((unused)))
{
- printf (gettext ("\
+ printf (_("\
\nException handling table section [%2zu] '.gcc_except_table':\n"),
elf_ndxscn (scn));
@@ -10601,7 +10699,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get %s content: %s"),
+ error (0, 0, _("cannot get %s content: %s"),
".gcc_except_table", elf_errmsg (-1));
return;
}
@@ -10612,11 +10710,11 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (unlikely (readp + 1 > dataend))
{
invalid_data:
- error (0, 0, gettext ("invalid data"));
+ error (0, 0, _("invalid data"));
return;
}
unsigned int lpstart_encoding = *readp++;
- printf (gettext (" LPStart encoding: %#x "), lpstart_encoding);
+ printf (_(" LPStart encoding: %#x "), lpstart_encoding);
print_encoding_base ("", lpstart_encoding);
if (lpstart_encoding != DW_EH_PE_omit)
{
@@ -10628,7 +10726,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (unlikely (readp + 1 > dataend))
goto invalid_data;
unsigned int ttype_encoding = *readp++;
- printf (gettext (" TType encoding: %#x "), ttype_encoding);
+ printf (_(" TType encoding: %#x "), ttype_encoding);
print_encoding_base ("", ttype_encoding);
const unsigned char *ttype_base = NULL;
if (ttype_encoding != DW_EH_PE_omit)
@@ -10643,7 +10741,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (unlikely (readp + 1 > dataend))
goto invalid_data;
unsigned int call_site_encoding = *readp++;
- printf (gettext (" Call site encoding: %#x "), call_site_encoding);
+ printf (_(" Call site encoding: %#x "), call_site_encoding);
print_encoding_base ("", call_site_encoding);
unsigned int call_site_table_len;
get_uleb128 (call_site_table_len, readp, dataend);
@@ -10656,7 +10754,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
while (readp < action_table)
{
if (u == 0)
- puts (gettext ("\n Call site table:"));
+ puts (_("\n Call site table:"));
uint64_t call_site_start;
readp = read_encoded (call_site_encoding, readp, dataend,
@@ -10670,7 +10768,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
unsigned int action;
get_uleb128 (action, readp, dataend);
max_action = MAX (action, max_action);
- printf (gettext (" [%4u] Call site start: %#" PRIx64 "\n"
+ printf (_(" [%4u] Call site start: %#" PRIx64 "\n"
" Call site length: %" PRIu64 "\n"
" Landing pad: %#" PRIx64 "\n"
" Action: %u\n"),
@@ -10688,7 +10786,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
if (max_action > maxdata || maxdata - max_action < 1)
{
invalid_action_table:
- fputs (gettext (" <INVALID DATA>\n"), stdout);
+ fputs (_(" <INVALID DATA>\n"), stdout);
return;
}
@@ -10743,7 +10841,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)),
break;
default:
dsize = 0;
- error (1, 0, gettext ("invalid TType encoding"));
+ error (1, 0, _("invalid TType encoding"));
}
if (max_ar_filter
@@ -10770,7 +10868,7 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
GElf_Ehdr *ehdr __attribute__ ((unused)),
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- printf (gettext ("\nGDB section [%2zu] '%s' at offset %#" PRIx64
+ printf (_("\nGDB section [%2zu] '%s' at offset %#" PRIx64
" contains %" PRId64 " bytes :\n"),
elf_ndxscn (scn), section_name (ebl, shdr),
(uint64_t) shdr->sh_offset, (uint64_t) shdr->sh_size);
@@ -10779,7 +10877,7 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
if (unlikely (data == NULL))
{
- error (0, 0, gettext ("cannot get %s content: %s"),
+ error (0, 0, _("cannot get %s content: %s"),
".gdb_index", elf_errmsg (-1));
return;
}
@@ -10794,12 +10892,12 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
if (unlikely (readp + 4 > dataend))
{
invalid_data:
- error (0, 0, gettext ("invalid data"));
+ error (0, 0, _("invalid data"));
return;
}
int32_t vers = read_4ubyte_unaligned (dbg, readp);
- printf (gettext (" Version: %" PRId32 "\n"), vers);
+ printf (_(" Version: %" PRId32 "\n"), vers);
// The only difference between version 4 and version 5 is the
// hash used for generating the table. Version 6 contains symbols
@@ -10808,7 +10906,7 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
// TUs for symbols.
if (vers < 4 || vers > 8)
{
- printf (gettext (" unknown version, cannot parse section\n"));
+ printf (_(" unknown version, cannot parse section\n"));
return;
}
@@ -10817,35 +10915,35 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
goto invalid_data;
uint32_t cu_off = read_4ubyte_unaligned (dbg, readp);
- printf (gettext (" CU offset: %#" PRIx32 "\n"), cu_off);
+ printf (_(" CU offset: %#" PRIx32 "\n"), cu_off);
readp += 4;
if (unlikely (readp + 4 > dataend))
goto invalid_data;
uint32_t tu_off = read_4ubyte_unaligned (dbg, readp);
- printf (gettext (" TU offset: %#" PRIx32 "\n"), tu_off);
+ printf (_(" TU offset: %#" PRIx32 "\n"), tu_off);
readp += 4;
if (unlikely (readp + 4 > dataend))
goto invalid_data;
uint32_t addr_off = read_4ubyte_unaligned (dbg, readp);
- printf (gettext (" address offset: %#" PRIx32 "\n"), addr_off);
+ printf (_(" address offset: %#" PRIx32 "\n"), addr_off);
readp += 4;
if (unlikely (readp + 4 > dataend))
goto invalid_data;
uint32_t sym_off = read_4ubyte_unaligned (dbg, readp);
- printf (gettext (" symbol offset: %#" PRIx32 "\n"), sym_off);
+ printf (_(" symbol offset: %#" PRIx32 "\n"), sym_off);
readp += 4;
if (unlikely (readp + 4 > dataend))
goto invalid_data;
uint32_t const_off = read_4ubyte_unaligned (dbg, readp);
- printf (gettext (" constant offset: %#" PRIx32 "\n"), const_off);
+ printf (_(" constant offset: %#" PRIx32 "\n"), const_off);
if (unlikely ((size_t) (dataend - (const unsigned char *) data->d_buf)
< const_off))
@@ -10859,7 +10957,7 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
size_t cu_nr = (nextp - readp) / 16;
- printf (gettext ("\n CU list at offset %#" PRIx32
+ printf (_("\n CU list at offset %#" PRIx32
" contains %zu entries:\n"),
cu_off, cu_nr);
@@ -10884,7 +10982,7 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
size_t tu_nr = (nextp - readp) / 24;
- printf (gettext ("\n TU list at offset %#" PRIx32
+ printf (_("\n TU list at offset %#" PRIx32
" contains %zu entries:\n"),
tu_off, tu_nr);
@@ -10913,7 +11011,7 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
size_t addr_nr = (nextp - readp) / 20;
- printf (gettext ("\n Address list at offset %#" PRIx32
+ printf (_("\n Address list at offset %#" PRIx32
" contains %zu entries:\n"),
addr_off, addr_nr);
@@ -10945,7 +11043,7 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl,
nextp = const_start;
size_t sym_nr = (nextp - readp) / 8;
- printf (gettext ("\n Symbol table at offset %#" PRIx32
+ printf (_("\n Symbol table at offset %#" PRIx32
" contains %zu slots:\n"),
addr_off, sym_nr);
@@ -11082,8 +11180,8 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr)
};
if (dbg == NULL)
{
- if ((print_debug_sections & ~section_exception) != 0)
- error (0, 0, gettext ("cannot get debug context descriptor: %s"),
+ if ((print_debug_sections & ~(section_exception|section_frame)) != 0)
+ error (0, 0, _("cannot get debug context descriptor: %s"),
dwfl_errmsg (-1));
dbg = &dummy_dbg;
}
@@ -11227,7 +11325,7 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
/* If the .debug_info section is listed as implicitly required then
we must make sure to handle it before handling any other debug
@@ -11253,7 +11351,8 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr)
if (strcmp (name, ".debug_info") == 0
|| strcmp (name, ".debug_info.dwo") == 0
|| strcmp (name, ".zdebug_info") == 0
- || strcmp (name, ".zdebug_info.dwo") == 0)
+ || strcmp (name, ".zdebug_info.dwo") == 0
+ || strcmp (name, ".gnu.debuglto_.debug_info") == 0)
{
print_debug_info_section (dwflmod, ebl, ehdr,
scn, shdr, dbg);
@@ -11339,7 +11438,11 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr)
dbglen - 1) == 0
&& (scnlen == dbglen + 1
|| (scnlen == dbglen + 5
- && strstr (name, ".dwo") == name + dbglen + 1))))
+ && strstr (name, ".dwo") == name + dbglen + 1)))
+ || (scnlen > 14 /* .gnu.debuglto_ prefix. */
+ && strncmp (name, ".gnu.debuglto_", 14) == 0
+ && strcmp (&name[14], debug_sections[n].name) == 0)
+)
{
if ((print_debug_sections | implicit_debug_sections)
& debug_sections[n].bitmask)
@@ -11446,7 +11549,7 @@ convert (Elf *core, Elf_Type type, uint_fast16_t count,
(&valuedata, &indata, elf_getident (core, NULL)[EI_DATA]);
if (d == NULL)
error (EXIT_FAILURE, 0,
- gettext ("cannot convert core note data: %s"), elf_errmsg (-1));
+ _("cannot convert core note data: %s"), elf_errmsg (-1));
return data + indata.d_size;
}
@@ -11809,7 +11912,7 @@ handle_core_items (Elf *core, const void *desc, size_t descsz,
descsz += eltsz;
}
else if (reps > 1)
- printf (gettext ("\n%*s... <repeats %u more times> ..."),
+ printf (_("\n%*s... <repeats %u more times> ..."),
ITEM_INDENT, "", reps);
last = desc;
@@ -11980,6 +12083,18 @@ compare_register_sets (const void *a, const void *b)
return compare_sets_by_info (*p1, *p2);
}
+static inline bool
+same_set (const struct register_info *a,
+ const struct register_info *b,
+ const struct register_info *regs,
+ size_t maxnreg)
+{
+ return (a < &regs[maxnreg] && a->regloc != NULL
+ && b < &regs[maxnreg] && b->regloc != NULL
+ && a->bits == b->bits
+ && (a->set == b->set || !strcmp (a->set, b->set)));
+}
+
static unsigned int
handle_core_registers (Ebl *ebl, Elf *core, const void *desc,
const Ebl_Register_Location *reglocs, size_t nregloc)
@@ -12018,19 +12133,12 @@ handle_core_registers (Ebl *ebl, Elf *core, const void *desc,
qsort (regs, maxreg + 1, sizeof regs[0], &compare_registers);
/* Collect the unique sets and sort them. */
- inline bool same_set (const struct register_info *a,
- const struct register_info *b)
- {
- return (a < &regs[maxnreg] && a->regloc != NULL
- && b < &regs[maxnreg] && b->regloc != NULL
- && a->bits == b->bits
- && (a->set == b->set || !strcmp (a->set, b->set)));
- }
struct register_info *sets[maxreg + 1];
sets[0] = &regs[0];
size_t nsets = 1;
for (int i = 1; i <= maxreg; ++i)
- if (regs[i].regloc != NULL && !same_set (&regs[i], &regs[i - 1]))
+ if (regs[i].regloc != NULL
+ && !same_set (&regs[i], &regs[i - 1], regs, maxnreg))
sets[nsets++] = &regs[i];
qsort (sets, nsets, sizeof sets[0], &compare_register_sets);
@@ -12041,7 +12149,7 @@ handle_core_registers (Ebl *ebl, Elf *core, const void *desc,
/* Find the longest name of a register in this set. */
size_t maxname = 0;
const struct register_info *end;
- for (end = sets[i]; same_set (sets[i], end); ++end)
+ for (end = sets[i]; same_set (sets[i], end, regs, maxnreg); ++end)
{
size_t len = strlen (end->name);
if (len > maxname)
@@ -12068,7 +12176,7 @@ handle_auxv_note (Ebl *ebl, Elf *core, GElf_Word descsz, GElf_Off desc_pos)
if (data == NULL)
elf_error:
error (EXIT_FAILURE, 0,
- gettext ("cannot convert core note data: %s"), elf_errmsg (-1));
+ _("cannot convert core note data: %s"), elf_errmsg (-1));
const size_t nauxv = descsz / gelf_fsize (core, ELF_T_AUXV, 1, EV_CURRENT);
for (size_t i = 0; i < nauxv; ++i)
@@ -12179,7 +12287,7 @@ handle_siginfo_note (Elf *core, GElf_Word descsz, GElf_Off desc_pos)
Elf_Data *data = elf_getdata_rawchunk (core, desc_pos, descsz, ELF_T_BYTE);
if (data == NULL)
error (EXIT_FAILURE, 0,
- gettext ("cannot convert core note data: %s"), elf_errmsg (-1));
+ _("cannot convert core note data: %s"), elf_errmsg (-1));
unsigned char const *ptr = data->d_buf;
unsigned char const *const end = data->d_buf + data->d_size;
@@ -12237,7 +12345,7 @@ handle_file_note (Elf *core, GElf_Word descsz, GElf_Off desc_pos)
Elf_Data *data = elf_getdata_rawchunk (core, desc_pos, descsz, ELF_T_BYTE);
if (data == NULL)
error (EXIT_FAILURE, 0,
- gettext ("cannot convert core note data: %s"), elf_errmsg (-1));
+ _("cannot convert core note data: %s"), elf_errmsg (-1));
unsigned char const *ptr = data->d_buf;
unsigned char const *const end = data->d_buf + data->d_size;
@@ -12316,7 +12424,7 @@ static void
handle_notes_data (Ebl *ebl, const GElf_Ehdr *ehdr,
GElf_Off start, Elf_Data *data)
{
- fputs_unlocked (gettext (" Owner Data size Type\n"), stdout);
+ fputs_unlocked (_(" Owner Data size Type\n"), stdout);
if (data == NULL)
goto bad_note;
@@ -12345,7 +12453,7 @@ handle_notes_data (Ebl *ebl, const GElf_Ehdr *ehdr,
char buf[100];
char buf2[100];
- printf (gettext (" %-13.*s %9" PRId32 " %s\n"),
+ printf (_(" %-13.*s %9" PRId32 " %s\n"),
(int) print_namesz, print_name, nhdr.n_descsz,
ehdr->e_type == ET_CORE
? ebl_core_note_type_name (ebl, nhdr.n_type,
@@ -12397,7 +12505,7 @@ handle_notes_data (Ebl *ebl, const GElf_Ehdr *ehdr,
bad_note:
error (0, 0,
- gettext ("cannot get content of note: %s"),
+ _("cannot get content of note: %s"),
data != NULL ? "garbage data" : elf_errmsg (-1));
}
@@ -12412,7 +12520,7 @@ handle_notes (Ebl *ebl, GElf_Ehdr *ehdr)
size_t shstrndx;
if (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
Elf_Scn *scn = NULL;
while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
@@ -12431,7 +12539,7 @@ handle_notes (Ebl *ebl, GElf_Ehdr *ehdr)
continue;
}
- printf (gettext ("\
+ printf (_("\
\nNote section [%2zu] '%s' of %" PRIu64 " bytes at offset %#0" PRIx64 ":\n"),
elf_ndxscn (scn),
elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
@@ -12454,7 +12562,7 @@ handle_notes (Ebl *ebl, GElf_Ehdr *ehdr)
/* Not what we are looking for. */
continue;
- printf (gettext ("\
+ printf (_("\
\nNote segment of %" PRIu64 " bytes at offset %#0" PRIx64 ":\n"),
phdr->p_filesz, phdr->p_offset);
@@ -12501,7 +12609,7 @@ static void
dump_data_section (Elf_Scn *scn, const GElf_Shdr *shdr, const char *name)
{
if (shdr->sh_size == 0 || shdr->sh_type == SHT_NOBITS)
- printf (gettext ("\nSection [%zu] '%s' has no data to dump.\n"),
+ printf (_("\nSection [%zu] '%s' has no data to dump.\n"),
elf_ndxscn (scn), name);
else
{
@@ -12514,31 +12622,31 @@ dump_data_section (Elf_Scn *scn, const GElf_Shdr *shdr, const char *name)
{
if (elf_compress (scn, 0, 0) < 0)
printf ("WARNING: %s [%zd]\n",
- gettext ("Couldn't uncompress section"),
+ _("Couldn't uncompress section"),
elf_ndxscn (scn));
}
else if (strncmp (name, ".zdebug", strlen (".zdebug")) == 0)
{
if (elf_compress_gnu (scn, 0, 0) < 0)
printf ("WARNING: %s [%zd]\n",
- gettext ("Couldn't uncompress section"),
+ _("Couldn't uncompress section"),
elf_ndxscn (scn));
}
}
Elf_Data *data = elf_rawdata (scn, NULL);
if (data == NULL)
- error (0, 0, gettext ("cannot get data for section [%zu] '%s': %s"),
+ error (0, 0, _("cannot get data for section [%zu] '%s': %s"),
elf_ndxscn (scn), name, elf_errmsg (-1));
else
{
if (data->d_size == shdr->sh_size)
- printf (gettext ("\nHex dump of section [%zu] '%s', %" PRIu64
+ printf (_("\nHex dump of section [%zu] '%s', %" PRIu64
" bytes at offset %#0" PRIx64 ":\n"),
elf_ndxscn (scn), name,
shdr->sh_size, shdr->sh_offset);
else
- printf (gettext ("\nHex dump of section [%zu] '%s', %" PRIu64
+ printf (_("\nHex dump of section [%zu] '%s', %" PRIu64
" bytes (%zd uncompressed) at offset %#0"
PRIx64 ":\n"),
elf_ndxscn (scn), name,
@@ -12552,7 +12660,7 @@ static void
print_string_section (Elf_Scn *scn, const GElf_Shdr *shdr, const char *name)
{
if (shdr->sh_size == 0 || shdr->sh_type == SHT_NOBITS)
- printf (gettext ("\nSection [%zu] '%s' has no strings to dump.\n"),
+ printf (_("\nSection [%zu] '%s' has no strings to dump.\n"),
elf_ndxscn (scn), name);
else
{
@@ -12565,31 +12673,31 @@ print_string_section (Elf_Scn *scn, const GElf_Shdr *shdr, const char *name)
{
if (elf_compress (scn, 0, 0) < 0)
printf ("WARNING: %s [%zd]\n",
- gettext ("Couldn't uncompress section"),
+ _("Couldn't uncompress section"),
elf_ndxscn (scn));
}
else if (strncmp (name, ".zdebug", strlen (".zdebug")) == 0)
{
if (elf_compress_gnu (scn, 0, 0) < 0)
printf ("WARNING: %s [%zd]\n",
- gettext ("Couldn't uncompress section"),
+ _("Couldn't uncompress section"),
elf_ndxscn (scn));
}
}
Elf_Data *data = elf_rawdata (scn, NULL);
if (data == NULL)
- error (0, 0, gettext ("cannot get data for section [%zu] '%s': %s"),
+ error (0, 0, _("cannot get data for section [%zu] '%s': %s"),
elf_ndxscn (scn), name, elf_errmsg (-1));
else
{
if (data->d_size == shdr->sh_size)
- printf (gettext ("\nString section [%zu] '%s' contains %" PRIu64
+ printf (_("\nString section [%zu] '%s' contains %" PRIu64
" bytes at offset %#0" PRIx64 ":\n"),
elf_ndxscn (scn), name,
shdr->sh_size, shdr->sh_offset);
else
- printf (gettext ("\nString section [%zu] '%s' contains %" PRIu64
+ printf (_("\nString section [%zu] '%s' contains %" PRIu64
" bytes (%zd uncompressed) at offset %#0"
PRIx64 ":\n"),
elf_ndxscn (scn), name,
@@ -12623,7 +12731,7 @@ for_each_section_argument (Elf *elf, const struct section_argument *list,
size_t shstrndx;
if (elf_getshdrstrndx (elf, &shstrndx) < 0)
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
for (const struct section_argument *a = list; a != NULL; a = a->next)
{
@@ -12638,12 +12746,12 @@ for_each_section_argument (Elf *elf, const struct section_argument *list,
scn = elf_getscn (elf, shndx);
if (scn == NULL)
{
- error (0, 0, gettext ("\nsection [%lu] does not exist"), shndx);
+ error (0, 0, _("\nsection [%lu] does not exist"), shndx);
continue;
}
if (gelf_getshdr (scn, &shdr_mem) == NULL)
- error (EXIT_FAILURE, 0, gettext ("cannot get section header: %s"),
+ error (EXIT_FAILURE, 0, _("cannot get section header: %s"),
elf_errmsg (-1));
name = elf_strptr (elf, shstrndx, shdr_mem.sh_name);
(*dump) (scn, &shdr_mem, name);
@@ -12668,7 +12776,7 @@ for_each_section_argument (Elf *elf, const struct section_argument *list,
}
if (unlikely (!found) && !a->implicit)
- error (0, 0, gettext ("\nsection '%s' does not exist"), a->arg);
+ error (0, 0, _("\nsection '%s' does not exist"), a->arg);
}
}
}
@@ -12692,7 +12800,7 @@ print_strings (Ebl *ebl)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
Elf_Scn *scn;
GElf_Shdr shdr_mem;
@@ -12725,14 +12833,14 @@ dump_archive_index (Elf *elf, const char *fname)
int result = elf_errno ();
if (unlikely (result != ELF_E_NO_INDEX))
error (EXIT_FAILURE, 0,
- gettext ("cannot get symbol index of archive '%s': %s"),
+ _("cannot get symbol index of archive '%s': %s"),
fname, elf_errmsg (result));
else
- printf (gettext ("\nArchive '%s' has no symbol index\n"), fname);
+ printf (_("\nArchive '%s' has no symbol index\n"), fname);
return;
}
- printf (gettext ("\nIndex of archive '%s' has %zu entries:\n"),
+ printf (_("\nIndex of archive '%s' has %zu entries:\n"),
fname, narsym);
size_t as_off = 0;
@@ -12750,12 +12858,12 @@ dump_archive_index (Elf *elf, const char *fname)
while (1)
#endif
error (EXIT_FAILURE, 0,
- gettext ("cannot extract member at offset %zu in '%s': %s"),
+ _("cannot extract member at offset %zu in '%s': %s"),
as_off, fname, elf_errmsg (-1));
const Elf_Arhdr *h = elf_getarhdr (subelf);
- printf (gettext ("Archive member '%s' contains:\n"), h->ar_name);
+ printf (_("Archive member '%s' contains:\n"), h->ar_name);
elf_end (subelf);
}
diff --git a/src/size.c b/src/size.c
index a25d4471..322ff53e 100644
--- a/src/size.c
+++ b/src/size.c
@@ -102,7 +102,7 @@ static void handle_elf (Elf *elf, const char *fullname, const char *fname);
static void show_bsd_totals (void);
#define INTERNAL_ERROR(fname) \
- error (EXIT_FAILURE, 0, gettext ("%s: INTERNAL ERROR %d (%s): %s"), \
+ error (EXIT_FAILURE, 0, _("%s: INTERNAL ERROR %d (%s): %s"), \
fname, __LINE__, PACKAGE_VERSION, elf_errmsg (-1))
@@ -145,7 +145,7 @@ static const int length_map[2][3] =
/* True if total sizes should be printed. */
static bool totals;
-/* To print the total sizes in a reasonable format remember the higest
+/* To print the total sizes in a reasonable format remember the highest
"class" of ELF binaries processed. */
static int totals_class;
@@ -237,7 +237,7 @@ parse_opt (int key, char *arg,
else if (likely (strcmp (arg, "sysv") == 0))
format = format_sysv;
else
- error (EXIT_FAILURE, 0, gettext ("Invalid format: %s"), arg);
+ error (EXIT_FAILURE, 0, _("Invalid format: %s"), arg);
break;
case OPT_RADIX:
@@ -248,7 +248,7 @@ parse_opt (int key, char *arg,
else if (strcmp (arg, "o") == 0 || strcmp (arg, "8") == 0)
radix = radix_octal;
else
- error (EXIT_FAILURE, 0, gettext ("Invalid radix: %s"), arg);
+ error (EXIT_FAILURE, 0, _("Invalid radix: %s"), arg);
break;
case 't':
@@ -269,7 +269,7 @@ process_file (const char *fname)
int fd = open (fname, O_RDONLY);
if (unlikely (fd == -1))
{
- error (0, errno, gettext ("cannot open '%s'"), fname);
+ error (0, errno, _("cannot open '%s'"), fname);
return 1;
}
@@ -285,7 +285,7 @@ process_file (const char *fname)
INTERNAL_ERROR (fname);
if (unlikely (close (fd) != 0))
- error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname);
+ error (EXIT_FAILURE, errno, _("while closing '%s'"), fname);
return 0;
}
@@ -294,7 +294,7 @@ process_file (const char *fname)
int result = handle_ar (fd, elf, NULL, fname);
if (unlikely (close (fd) != 0))
- error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname);
+ error (EXIT_FAILURE, errno, _("while closing '%s'"), fname);
return result;
}
@@ -305,9 +305,9 @@ process_file (const char *fname)
}
if (unlikely (close (fd) != 0))
- error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname);
+ error (EXIT_FAILURE, errno, _("while closing '%s'"), fname);
- error (0, 0, gettext ("%s: file format not recognized"), fname);
+ error (0, 0, _("%s: file format not recognized"), fname);
return 1;
}
@@ -395,7 +395,7 @@ show_sysv (Elf *elf, const char *prefix, const char *fname,
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
/* First round over the sections: determine the longest section name. */
Elf_Scn *scn = NULL;
@@ -415,7 +415,7 @@ show_sysv (Elf *elf, const char *prefix, const char *fname,
fputs_unlocked (fname, stdout);
if (prefix != NULL)
- printf (gettext (" (ex %s)"), prefix);
+ printf (_(" (ex %s)"), prefix);
printf (":\n%-*s %*s %*s\n",
maxlen, sgettext ("sysv|section"),
digits - 2, sgettext ("sysv|size"),
@@ -467,7 +467,7 @@ show_sysv_one_line (Elf *elf)
size_t shstrndx;
if (unlikely (elf_getshdrstrndx (elf, &shstrndx) < 0))
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
/* Iterate over all sections. */
GElf_Off total = 0;
@@ -479,7 +479,7 @@ show_sysv_one_line (Elf *elf)
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
if (unlikely (shdr == NULL))
- error (EXIT_FAILURE, 0, gettext ("cannot get section header"));
+ error (EXIT_FAILURE, 0, _("cannot get section header"));
/* Ignore all sections which are not used at runtime. */
if ((shdr->sh_flags & SHF_ALLOC) == 0)
@@ -545,8 +545,11 @@ show_bsd (Elf *elf, const char *prefix, const char *fname,
datasize += shdr->sh_size;
}
- printf ("%*" PRId64 " %*" PRId64 " %*" PRId64 " %*" PRId64 " %*"
- PRIx64 " %s",
+ printf (radix == radix_decimal
+ ? "%*" PRId64 " %*" PRId64 " %*" PRId64 " %*" PRId64 " %*" PRIx64 " %s"
+ : radix == radix_hex
+ ? "%#*" PRIx64 " %#*" PRIx64 " %#*" PRIx64 " %*" PRId64 " %*" PRIx64 " %s"
+ : "%#*" PRIo64 " %#*" PRIo64 " %#*" PRIo64 " %*" PRId64 " %*" PRIx64 " %s",
ddigits - 2, textsize,
ddigits - 2, datasize,
ddigits - 2, bsssize,
@@ -554,7 +557,7 @@ show_bsd (Elf *elf, const char *prefix, const char *fname,
xdigits - 2, textsize + datasize + bsssize,
fname);
if (prefix != NULL)
- printf (gettext (" (ex %s)"), prefix);
+ printf (_(" (ex %s)"), prefix);
fputs_unlocked ("\n", stdout);
total_textsize += textsize;
@@ -579,7 +582,7 @@ show_bsd_totals (void)
ddigits - 2, total_bsssize,
ddigits - 2, total_textsize + total_datasize + total_bsssize,
xdigits - 2, total_textsize + total_datasize + total_bsssize,
- gettext ("(TOTALS)\n"));
+ _("(TOTALS)\n"));
}
diff --git a/src/stack.c b/src/stack.c
index 4daabce7..534aa93c 100644
--- a/src/stack.c
+++ b/src/stack.c
@@ -143,7 +143,12 @@ module_callback (Dwfl_Module *mod, void **userdata __attribute__((unused)),
const char *debugfile;
const char *modname = dwfl_module_info (mod, NULL, NULL, &end, NULL,
NULL, &mainfile, &debugfile);
- assert (strcmp (modname, name) == 0);
+ if (modname == NULL || strcmp (modname, name) != 0)
+ {
+ end = start + 1;
+ mainfile = NULL;
+ debugfile = NULL;
+ }
int width = get_addr_width (mod);
printf ("0x%0*" PRIx64 "-0x%0*" PRIx64 " %s\n",
@@ -683,7 +688,7 @@ Program exits with return code 0 if all frames were shown without \
any errors. If some frames were shown, but there were some non-fatal \
errors, possibly causing an incomplete backtrace, the program exits \
with return code 1. If no frames could be shown, or a fatal error \
-occured the program exits with return code 2. If the program was \
+occurred the program exits with return code 2. If the program was \
invoked with bad or missing arguments it will exit with return code 64.")
};
diff --git a/src/strings.c b/src/strings.c
index ef40d5ec..eb278f8e 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -67,7 +67,7 @@ static const struct argp_option options[] =
{ "bytes", 'n', "MIN-LEN", 0,
N_("Only NUL-terminated sequences of MIN-LEN characters or more are printed"), 0 },
{ "encoding", 'e', "SELECTOR", 0, N_("\
-Select character size and endianess: s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit"),
+Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit"),
0},
{ "print-file-name", 'f', NULL, 0,
N_("Print name of the file before each string."), 0 },
@@ -182,7 +182,7 @@ main (int argc, char *argv[])
? STDIN_FILENO : open (argv[remaining], O_RDONLY));
if (unlikely (fd == -1))
{
- error (0, errno, gettext ("cannot open '%s'"), argv[remaining]);
+ error (0, errno, _("cannot open '%s'"), argv[remaining]);
result = 1;
}
else
@@ -253,7 +253,7 @@ parse_opt (int key, char *arg,
break;
default:
- error (0, 0, gettext ("invalid value '%s' for %s parameter"),
+ error (0, 0, _("invalid value '%s' for %s parameter"),
arg, "-e");
argp_help (&argp, stderr, ARGP_HELP_SEE, "strings");
return ARGP_ERR_UNKNOWN;
@@ -288,7 +288,7 @@ parse_opt (int key, char *arg,
break;
default:
- error (0, 0, gettext ("invalid value '%s' for %s parameter"),
+ error (0, 0, _("invalid value '%s' for %s parameter"),
arg, "-t");
argp_help (&argp, stderr, ARGP_HELP_SEE, "strings");
return ARGP_ERR_UNKNOWN;
@@ -299,7 +299,7 @@ parse_opt (int key, char *arg,
/* Compute the length in bytes of any match. */
if (min_len <= 0 || min_len > INT_MAX / bytes_per_char)
error (EXIT_FAILURE, 0,
- gettext ("invalid minimum length of matched string size"));
+ _("invalid minimum length of matched string size"));
min_len_bytes = min_len * bytes_per_char;
break;
@@ -582,7 +582,7 @@ read_block (int fd, const char *fname, off_t fdlen, off_t from, off_t to)
// XXX Eventually add flag which avoids this if the position
// XXX is known to match.
if (from != 0 && lseek (fd, from, SEEK_SET) != from)
- error (EXIT_FAILURE, errno, gettext ("lseek failed"));
+ error (EXIT_FAILURE, errno, _("lseek failed"));
return read_block_no_mmap (fd, fname, from, to - from);
}
@@ -599,7 +599,7 @@ read_block (int fd, const char *fname, off_t fdlen, off_t from, off_t to)
if (mmap (elfmap, elfmap_size, PROT_READ,
MAP_PRIVATE | MAP_POPULATE | MAP_FIXED, fd, from)
== MAP_FAILED)
- error (EXIT_FAILURE, errno, gettext ("re-mmap failed"));
+ error (EXIT_FAILURE, errno, _("re-mmap failed"));
elfmap_base = elfmap;
}
@@ -636,7 +636,7 @@ read_block (int fd, const char *fname, off_t fdlen, off_t from, off_t to)
and for this we have to make the data writable. */
if (unlikely (mprotect (elfmap, keep_area, PROT_READ | PROT_WRITE)
!= 0))
- error (EXIT_FAILURE, errno, gettext ("mprotect failed"));
+ error (EXIT_FAILURE, errno, _("mprotect failed"));
elfmap_base = elfmap + keep_area;
}
@@ -663,7 +663,7 @@ read_block (int fd, const char *fname, off_t fdlen, off_t from, off_t to)
if (mmap (remap_base, read_now, PROT_READ,
MAP_PRIVATE | MAP_POPULATE | MAP_FIXED, fd, handled_to)
== MAP_FAILED)
- error (EXIT_FAILURE, errno, gettext ("re-mmap failed"));
+ error (EXIT_FAILURE, errno, _("re-mmap failed"));
elfmap_off = handled_to;
process_chunk (fname, remap_base - to_keep,
@@ -698,7 +698,7 @@ read_elf (Elf *elf, int fd, const char *fname, off_t fdlen)
/* We will look at each section separately. The ELF file is not
mmapped. The libelf implementation will load the needed parts on
- demand. Since we only interate over the section header table the
+ demand. Since we only iterate over the section header table the
memory consumption at this stage is kept minimal. */
Elf_Scn *scn = elf_nextscn (elf, NULL);
if (scn == NULL)
@@ -725,7 +725,7 @@ read_elf (Elf *elf, int fd, const char *fname, off_t fdlen)
else
sname = elf_strptr (elf, strndx, shdr->sh_name) ?: "<unknown>";
error (0, 0,
- gettext ("Skipping section %zd '%s' data outside file"),
+ _("Skipping section %zd '%s' data outside file"),
elf_ndxscn (scn), sname);
result = 1;
}
diff --git a/src/strip.c b/src/strip.c
index 48792a70..7a5d4e4c 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -82,9 +82,9 @@ static const struct argp_option options[] =
{ "preserve-dates", 'p', NULL, 0,
N_("Copy modified/access timestamps to the output"), 0 },
{ "reloc-debug-sections", OPT_RELOC_DEBUG, NULL, 0,
- N_("Resolve all trivial relocations between debug sections if the removed sections are placed in a debug file (only relevant for ET_REL files, operation is not reversable, needs -f)"), 0 },
+ 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 reversible, needs -f)"), 0 },
{ "reloc-debug-sections-only", OPT_RELOC_DEBUG_ONLY, NULL, 0,
- N_("Similar to --reloc-debug-sections, but resolve all trivial relocations between debug sections in place. No other stripping is performed (operation is not reversable, incompatible with -f, -g, --remove-comment and --remove-section)"), 0 },
+ N_("Similar to --reloc-debug-sections, but resolve all trivial relocations between debug sections in place. No other stripping is performed (operation is not reversible, incompatible with -f, -g, --remove-comment and --remove-section)"), 0 },
{ "remove-comment", OPT_REMOVE_COMMENT, NULL, 0,
N_("Remove .comment section"), 0 },
{ "remove-section", 'R', "SECTION", 0, N_("Remove the named section. SECTION is an extended wildcard pattern. May be given more than once. Only non-allocated sections can be removed."), 0 },
@@ -130,7 +130,7 @@ static void cleanup_debug (void);
#define INTERNAL_ERROR(fname) \
do { \
cleanup_debug (); \
- error (EXIT_FAILURE, 0, gettext ("%s: INTERNAL ERROR %d (%s): %s"), \
+ error (EXIT_FAILURE, 0, _("%s: INTERNAL ERROR %d (%s): %s"), \
fname, __LINE__, PACKAGE_VERSION, elf_errmsg (-1)); \
} while (0)
@@ -244,13 +244,13 @@ main (int argc, char *argv[])
if (reloc_debug && debug_fname == NULL)
error (EXIT_FAILURE, 0,
- gettext ("--reloc-debug-sections used without -f"));
+ _("--reloc-debug-sections used without -f"));
if (reloc_debug_only &&
(debug_fname != NULL || remove_secs != NULL
|| remove_comment == true || remove_debug == true))
error (EXIT_FAILURE, 0,
- gettext ("--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --remove-section"));
+ _("--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --remove-section"));
/* Tell the library which version we are expecting. */
elf_version (EV_CURRENT);
@@ -264,7 +264,7 @@ main (int argc, char *argv[])
input file. */
if ((output_fname != NULL || debug_fname != NULL)
&& remaining + 1 < argc)
- error (EXIT_FAILURE, 0, gettext ("\
+ error (EXIT_FAILURE, 0, _("\
Only one input file allowed together with '-o' and '-f'"));
/* Process all the remaining files. */
@@ -287,7 +287,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
case 'f':
if (debug_fname != NULL)
{
- error (0, 0, gettext ("-f option specified twice"));
+ error (0, 0, _("-f option specified twice"));
return EINVAL;
}
debug_fname = arg;
@@ -296,7 +296,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
case 'F':
if (debug_fname_embed != NULL)
{
- error (0, 0, gettext ("-F option specified twice"));
+ error (0, 0, _("-F option specified twice"));
return EINVAL;
}
debug_fname_embed = arg;
@@ -305,7 +305,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
case 'o':
if (output_fname != NULL)
{
- error (0, 0, gettext ("-o option specified twice"));
+ error (0, 0, _("-o option specified twice"));
return EINVAL;
}
output_fname = arg;
@@ -359,7 +359,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
&& section_name_matches (keep_secs, ".comment"))
{
argp_error (state,
- gettext ("cannot both keep and remove .comment section"));
+ _("cannot both keep and remove .comment section"));
return EINVAL;
}
break;
@@ -442,6 +442,127 @@ update_shdrstrndx (Elf *elf, size_t shdrstrndx)
return 0;
}
+
+/* Apply one relocation. Returns true when trivial
+ relocation actually done. */
+static bool
+relocate (Elf *elf, GElf_Addr offset, const GElf_Sxword addend,
+ Elf_Data *tdata, unsigned int ei_data, const char *fname,
+ bool is_rela, GElf_Sym *sym, int addsub, Elf_Type type)
+{
+ /* These are the types we can relocate. */
+#define TYPES DO_TYPE (BYTE, Byte); DO_TYPE (HALF, Half); \
+ DO_TYPE (WORD, Word); DO_TYPE (SWORD, Sword); \
+ DO_TYPE (XWORD, Xword); DO_TYPE (SXWORD, Sxword)
+
+ size_t size;
+
+#define DO_TYPE(NAME, Name) GElf_##Name Name;
+ union { TYPES; } tmpbuf;
+#undef DO_TYPE
+
+ switch (type)
+ {
+#define DO_TYPE(NAME, Name) \
+ case ELF_T_##NAME: \
+ size = sizeof (GElf_##Name); \
+ tmpbuf.Name = 0; \
+ break;
+ TYPES;
+#undef DO_TYPE
+ default:
+ return false;
+ }
+
+ if (offset > tdata->d_size
+ || tdata->d_size - offset < size)
+ {
+ cleanup_debug ();
+ error (EXIT_FAILURE, 0, _("bad relocation"));
+ }
+
+ /* When the symbol value is zero then for SHT_REL
+ sections this is all that needs to be checked.
+ The addend is contained in the original data at
+ the offset already. So if the (section) symbol
+ address is zero and the given addend is zero
+ just remove the relocation, it isn't needed
+ anymore. */
+ if (addend == 0 && sym->st_value == 0)
+ return true;
+
+ Elf_Data tmpdata =
+ {
+ .d_type = type,
+ .d_buf = &tmpbuf,
+ .d_size = size,
+ .d_version = EV_CURRENT,
+ };
+ Elf_Data rdata =
+ {
+ .d_type = type,
+ .d_buf = tdata->d_buf + offset,
+ .d_size = size,
+ .d_version = EV_CURRENT,
+ };
+
+ GElf_Addr value = sym->st_value;
+ if (is_rela)
+ {
+ /* For SHT_RELA sections we just take the
+ given addend and add it to the value. */
+ value += addend;
+ /* For ADD/SUB relocations we need to fetch the
+ current section contents. */
+ if (addsub != 0)
+ {
+ Elf_Data *d = gelf_xlatetom (elf, &tmpdata,
+ &rdata,
+ ei_data);
+ if (d == NULL)
+ INTERNAL_ERROR (fname);
+ assert (d == &tmpdata);
+ }
+ }
+ else
+ {
+ /* For SHT_REL sections we have to peek at
+ what is already in the section at the given
+ offset to get the addend. */
+ Elf_Data *d = gelf_xlatetom (elf, &tmpdata,
+ &rdata,
+ ei_data);
+ if (d == NULL)
+ INTERNAL_ERROR (fname);
+ assert (d == &tmpdata);
+ }
+
+ switch (type)
+ {
+#define DO_TYPE(NAME, Name) \
+ case ELF_T_##NAME: \
+ if (addsub < 0) \
+ tmpbuf.Name -= (GElf_##Name) value; \
+ else \
+ tmpbuf.Name += (GElf_##Name) value; \
+ break;
+ TYPES;
+#undef DO_TYPE
+ default:
+ abort ();
+ }
+
+ /* Now finally put in the new value. */
+ Elf_Data *s = gelf_xlatetof (elf, &rdata,
+ &tmpdata,
+ ei_data);
+ if (s == NULL)
+ INTERNAL_ERROR (fname);
+ assert (s == &rdata);
+
+ return true;
+}
+
/* 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. */
@@ -517,180 +638,80 @@ remove_debug_relocations (Ebl *ebl, Elf *elf, GElf_Ehdr *ehdr,
if (symdata == NULL)
INTERNAL_ERROR (fname);
- /* Apply one relocation. Returns true when trivial
- relocation actually done. */
- bool relocate (GElf_Addr offset, const GElf_Sxword addend,
- bool is_rela, int rtype, int symndx)
- {
- /* R_*_NONE relocs can always just be removed. */
- if (rtype == 0)
- return true;
+ if (shdr->sh_entsize == 0)
+ INTERNAL_ERROR (fname);
- /* We only do simple absolute relocations. */
- int addsub = 0;
- Elf_Type type = ebl_reloc_simple_type (ebl, rtype, &addsub);
- if (type == ELF_T_NUM)
- return false;
+ size_t nrels = shdr->sh_size / shdr->sh_entsize;
+ size_t next = 0;
+ const bool is_rela = (shdr->sh_type == SHT_RELA);
+ const unsigned int ei_data = ehdr->e_ident[EI_DATA];
- /* These are the types we can relocate. */
-#define TYPES DO_TYPE (BYTE, Byte); DO_TYPE (HALF, Half); \
- DO_TYPE (WORD, Word); DO_TYPE (SWORD, Sword); \
- DO_TYPE (XWORD, Xword); DO_TYPE (SXWORD, Sxword)
-
- /* And only for relocations against other debug sections. */
- GElf_Sym sym_mem;
- Elf32_Word xndx;
- GElf_Sym *sym = gelf_getsymshndx (symdata, xndxdata,
- symndx, &sym_mem,
- &xndx);
- Elf32_Word sec = (sym->st_shndx == SHN_XINDEX
- ? xndx : sym->st_shndx);
-
- if (ebl_debugscn_p (ebl, secndx_name (elf, sec)))
- {
- size_t size;
+ for (size_t relidx = 0; relidx < nrels; ++relidx)
+ {
+ int rtype, symndx, offset, addend;
+ union { GElf_Rela rela; GElf_Rel rel; } mem;
+ void *rel_p; /* Pointer to either rela or rel above */
-#define DO_TYPE(NAME, Name) GElf_##Name Name;
- union { TYPES; } tmpbuf;
-#undef DO_TYPE
+ if (is_rela)
+ {
+ GElf_Rela *r = gelf_getrela (reldata, relidx, &mem.rela);
+ offset = r->r_offset;
+ addend = r->r_addend;
+ rtype = GELF_R_TYPE (r->r_info);
+ symndx = GELF_R_SYM (r->r_info);
+ rel_p = r;
+ }
+ else
+ {
+ GElf_Rel *r = gelf_getrel (reldata, relidx, &mem.rel);
+ offset = r->r_offset;
+ addend = 0;
+ rtype = GELF_R_TYPE (r->r_info);
+ symndx = GELF_R_SYM (r->r_info);
+ rel_p = r;
+ }
- switch (type)
- {
-#define DO_TYPE(NAME, Name) \
- case ELF_T_##NAME: \
- size = sizeof (GElf_##Name); \
- tmpbuf.Name = 0; \
- break;
- TYPES;
-#undef DO_TYPE
- default:
- return false;
- }
+ /* R_*_NONE relocs can always just be removed. */
+ if (rtype == 0)
+ continue;
- if (offset > tdata->d_size
- || tdata->d_size - offset < size)
- {
- cleanup_debug ();
- error (EXIT_FAILURE, 0, gettext ("bad relocation"));
- }
+ /* We only do simple absolute relocations. */
+ int addsub = 0;
+ Elf_Type type = ebl_reloc_simple_type (ebl, rtype, &addsub);
+ if (type == ELF_T_NUM)
+ goto relocate_failed;
- /* When the symbol value is zero then for SHT_REL
- sections this is all that needs to be checked.
- The addend is contained in the original data at
- the offset already. So if the (section) symbol
- address is zero and the given addend is zero
- just remove the relocation, it isn't needed
- anymore. */
- if (addend == 0 && sym->st_value == 0)
- return true;
-
- Elf_Data tmpdata =
- {
- .d_type = type,
- .d_buf = &tmpbuf,
- .d_size = size,
- .d_version = EV_CURRENT,
- };
- Elf_Data rdata =
- {
- .d_type = type,
- .d_buf = tdata->d_buf + offset,
- .d_size = size,
- .d_version = EV_CURRENT,
- };
-
- GElf_Addr value = sym->st_value;
- if (is_rela)
- {
- /* For SHT_RELA sections we just take the
- given addend and add it to the value. */
- value += addend;
- /* For ADD/SUB relocations we need to fetch the
- current section contents. */
- if (addsub != 0)
- {
- Elf_Data *d = gelf_xlatetom (elf, &tmpdata,
- &rdata,
- ehdr->e_ident[EI_DATA]);
- if (d == NULL)
- INTERNAL_ERROR (fname);
- assert (d == &tmpdata);
- }
- }
- else
- {
- /* For SHT_REL sections we have to peek at
- what is already in the section at the given
- offset to get the addend. */
- Elf_Data *d = gelf_xlatetom (elf, &tmpdata,
- &rdata,
- ehdr->e_ident[EI_DATA]);
- if (d == NULL)
- INTERNAL_ERROR (fname);
- assert (d == &tmpdata);
- }
+ /* And only for relocations against other debug sections. */
+ GElf_Sym sym_mem;
+ Elf32_Word xndx;
+ GElf_Sym *sym = gelf_getsymshndx (symdata, xndxdata,
+ symndx, &sym_mem,
+ &xndx);
+ Elf32_Word sec = (sym->st_shndx == SHN_XINDEX
+ ? xndx : sym->st_shndx);
- switch (type)
- {
-#define DO_TYPE(NAME, Name) \
- case ELF_T_##NAME: \
- if (addsub < 0) \
- tmpbuf.Name -= (GElf_##Name) value; \
- else \
- tmpbuf.Name += (GElf_##Name) value; \
- break;
- TYPES;
-#undef DO_TYPE
- default:
- abort ();
- }
+ bool dbg_scn = ebl_debugscn_p (ebl, secndx_name (elf, sec));
- /* Now finally put in the new value. */
- Elf_Data *s = gelf_xlatetof (elf, &rdata,
- &tmpdata,
- ehdr->e_ident[EI_DATA]);
- if (s == NULL)
- INTERNAL_ERROR (fname);
- assert (s == &rdata);
+ if (!dbg_scn)
+ goto relocate_failed;
- return true;
- }
- return false;
- }
+ if (! relocate (elf, offset, addend,
+ tdata, ei_data, fname, is_rela,
+ sym, addsub, type))
+ goto relocate_failed;
- if (shdr->sh_entsize == 0)
- INTERNAL_ERROR (fname);
+ continue; /* Next */
- size_t nrels = shdr->sh_size / shdr->sh_entsize;
- size_t next = 0;
- if (shdr->sh_type == SHT_REL)
- for (size_t relidx = 0; relidx < nrels; ++relidx)
- {
- GElf_Rel rel_mem;
- GElf_Rel *r = gelf_getrel (reldata, relidx, &rel_mem);
- if (! relocate (r->r_offset, 0, false,
- GELF_R_TYPE (r->r_info),
- GELF_R_SYM (r->r_info)))
- {
- if (relidx != next)
- gelf_update_rel (reldata, next, r);
- ++next;
- }
- }
- else
- for (size_t relidx = 0; relidx < nrels; ++relidx)
- {
- GElf_Rela rela_mem;
- GElf_Rela *r = gelf_getrela (reldata, relidx, &rela_mem);
- if (! relocate (r->r_offset, r->r_addend, true,
- GELF_R_TYPE (r->r_info),
- GELF_R_SYM (r->r_info)))
- {
- if (relidx != next)
- gelf_update_rela (reldata, next, r);
- ++next;
- }
- }
+relocate_failed:
+ if (relidx != next)
+ {
+ if (is_rela)
+ gelf_update_rela (reldata, next, rel_p);
+ else
+ gelf_update_rel (reldata, next, rel_p);
+ }
+ ++next;
+ }
nrels = next;
shdr->sh_size = reldata->d_size = nrels * shdr->sh_entsize;
@@ -723,7 +744,7 @@ process_file (const char *fname)
{
if (stat (fname, &pre_st) != 0)
{
- error (0, errno, gettext ("cannot stat input file '%s'"), fname);
+ error (0, errno, _("cannot stat input file '%s'"), fname);
return 1;
}
@@ -737,7 +758,7 @@ process_file (const char *fname)
int fd = open (fname, output_fname == NULL ? O_RDWR : O_RDONLY);
if (fd == -1)
{
- error (0, errno, gettext ("while opening '%s'"), fname);
+ error (0, errno, _("while opening '%s'"), fname);
return 1;
}
@@ -747,7 +768,7 @@ process_file (const char *fname)
struct stat st;
if (fstat (fd, &st) != 0)
{
- error (0, errno, gettext ("cannot stat input file '%s'"), fname);
+ error (0, errno, _("cannot stat input file '%s'"), fname);
return 1;
}
/* Paranoid mode on. */
@@ -775,7 +796,7 @@ process_file (const char *fname)
the output to a specific file. */
if (unlikely (output_fname != NULL || debug_fname != NULL))
{
- error (0, 0, gettext ("%s: cannot use -o or -f when stripping archive"),
+ error (0, 0, _("%s: cannot use -o or -f when stripping archive"),
fname);
result = 1;
}
@@ -787,14 +808,14 @@ process_file (const char *fname)
result = handle_ar (fd, elf, NULL, fname,
preserve_dates ? tv : NULL);
*/
- error (0, 0, gettext ("%s: no support for stripping archive"),
+ error (0, 0, _("%s: no support for stripping archive"),
fname);
result = 1;
}
break;
default:
- error (0, 0, gettext ("%s: File format not recognized"), fname);
+ error (0, 0, _("%s: File format not recognized"), fname);
result = 1;
break;
}
@@ -918,6 +939,31 @@ handle_debug_relocs (Elf *elf, Ebl *ebl, Elf *new_elf,
return 0;
}
+/* Update section headers when the data size has changed.
+ We also update the SHT_NOBITS section in the debug
+ file so that the section headers match in sh_size. */
+static inline void
+update_section_size (Elf_Scn *scn,
+ const Elf_Data *newdata,
+ Elf *debugelf,
+ size_t cnt,
+ const char *fname)
+{
+ GElf_Shdr shdr_mem;
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+ shdr->sh_size = newdata->d_size;
+ (void) gelf_update_shdr (scn, shdr);
+ if (debugelf != NULL)
+ {
+ /* libelf will use d_size to set sh_size. */
+ Elf_Data *debugdata = elf_getdata (elf_getscn (debugelf,
+ cnt), NULL);
+ if (debugdata == NULL)
+ INTERNAL_ERROR (fname);
+ debugdata->d_size = newdata->d_size;
+ }
+}
+
/* Maximum size of array allocated on stack. */
#define MAX_STACK_ALLOC (400 * 1024)
@@ -981,7 +1027,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
fd = open (output_fname, O_RDWR | O_CREAT, mode);
if (unlikely (fd == -1))
{
- error (0, errno, gettext ("cannot open '%s'"), output_fname);
+ error (0, errno, _("cannot open '%s'"), output_fname);
return 1;
}
}
@@ -998,7 +1044,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
ebl = ebl_openbackend (elf);
if (ebl == NULL)
{
- error (0, errno, gettext ("cannot open EBL backend"));
+ error (0, errno, _("cannot open EBL backend"));
result = 1;
goto fail;
}
@@ -1018,7 +1064,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
debug_fd = mkstemp (tmp_debug_fname);
if (unlikely (debug_fd == -1))
{
- error (0, errno, gettext ("cannot open '%s'"), debug_fname);
+ error (0, errno, _("cannot open '%s'"), debug_fname);
result = 1;
goto fail;
}
@@ -1035,7 +1081,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
{
cleanup_debug ();
error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
+ _("cannot get section header string table index"));
}
/* Get the number of phdrs in the old file. */
@@ -1043,7 +1089,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (elf_getphdrnum (elf, &phnum) != 0)
{
cleanup_debug ();
- error (EXIT_FAILURE, 0, gettext ("cannot get number of phdrs"));
+ error (EXIT_FAILURE, 0, _("cannot get number of phdrs"));
}
/* We now create a new ELF descriptor for the same file. We
@@ -1057,7 +1103,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (unlikely (gelf_newehdr (newelf, gelf_getclass (elf)) == 0))
{
- error (0, 0, gettext ("cannot create new ehdr for file '%s': %s"),
+ error (0, 0, _("cannot create new ehdr for file '%s': %s"),
output_fname ?: fname, elf_errmsg (-1));
goto fail;
}
@@ -1067,7 +1113,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
{
if (unlikely (gelf_newphdr (newelf, phnum) == 0))
{
- error (0, 0, gettext ("cannot create new phdr for file '%s': %s"),
+ error (0, 0, _("cannot create new phdr for file '%s': %s"),
output_fname ?: fname, elf_errmsg (-1));
goto fail;
}
@@ -1100,7 +1146,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
debugelf = elf_begin (debug_fd, ELF_C_WRITE, NULL);
if (unlikely (gelf_newehdr (debugelf, gelf_getclass (elf)) == 0))
{
- error (0, 0, gettext ("cannot create new ehdr for file '%s': %s"),
+ error (0, 0, _("cannot create new ehdr for file '%s': %s"),
debug_fname, elf_errmsg (-1));
goto fail_close;
}
@@ -1110,7 +1156,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
{
if (unlikely (gelf_newphdr (debugelf, phnum) == 0))
{
- error (0, 0, gettext ("cannot create new phdr for file '%s': %s"),
+ error (0, 0, _("cannot create new phdr for file '%s': %s"),
debug_fname, elf_errmsg (-1));
goto fail_close;
}
@@ -1130,7 +1176,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
size_t shnum;
if (unlikely (elf_getshdrnum (elf, &shnum) < 0))
{
- error (0, 0, gettext ("cannot determine number of sections: %s"),
+ error (0, 0, _("cannot determine number of sections: %s"),
elf_errmsg (-1));
goto fail_close;
}
@@ -1191,7 +1237,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (shdr_info[cnt].name == NULL)
{
illformed:
- error (0, 0, gettext ("illformed file '%s'"), fname);
+ error (0, 0, _("illformed file '%s'"), fname);
goto fail_close;
}
@@ -1201,7 +1247,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if ((shdr_info[cnt].shdr.sh_flags & SHF_ALLOC) != 0)
{
error (0, 0,
- gettext ("Cannot remove allocated section '%s'"),
+ _("Cannot remove allocated section '%s'"),
shdr_info[cnt].name);
result = 1;
goto fail_close;
@@ -1210,7 +1256,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (section_name_matches (keep_secs, shdr_info[cnt].name))
{
error (0, 0,
- gettext ("Cannot both keep and remove section '%s'"),
+ _("Cannot both keep and remove section '%s'"),
shdr_info[cnt].name);
result = 1;
goto fail_close;
@@ -1535,25 +1581,30 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
files by setting the .debug_data pointer to the original
file's .data pointer. Below, we'll copy the section
contents. */
+ size_t shdr_indices[2] = { shdr_info[cnt].shdr.sh_link, 0 };
+ int n = 1;
- inline void check_preserved (size_t i)
- {
- if (i != 0 && i < shnum + 2 && shdr_info[i].idx != 0
- && shdr_info[i].debug_data == NULL)
- {
- if (shdr_info[i].data == NULL)
- shdr_info[i].data = elf_getdata (shdr_info[i].scn, NULL);
- if (shdr_info[i].data == NULL)
- INTERNAL_ERROR (fname);
+ if (SH_INFO_LINK_P (&shdr_info[cnt].shdr))
+ {
+ shdr_indices[1] = shdr_info[cnt].shdr.sh_info;
+ n++;
+ }
- shdr_info[i].debug_data = shdr_info[i].data;
- changes |= i < cnt;
- }
- }
+ for (int j = 0; j < n; j++)
+ {
+ size_t i = shdr_indices[j];
+ if (i != 0 && i < shnum + 2 && shdr_info[i].idx != 0
+ && shdr_info[i].debug_data == NULL)
+ {
+ if (shdr_info[i].data == NULL)
+ shdr_info[i].data = elf_getdata (shdr_info[i].scn, NULL);
+ if (shdr_info[i].data == NULL)
+ INTERNAL_ERROR (fname);
- check_preserved (shdr_info[cnt].shdr.sh_link);
- if (SH_INFO_LINK_P (&shdr_info[cnt].shdr))
- check_preserved (shdr_info[cnt].shdr.sh_info);
+ shdr_info[i].debug_data = shdr_info[i].data;
+ changes |= i < cnt;
+ }
+ }
}
}
}
@@ -1570,7 +1621,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
{
cleanup_debug ();
error (EXIT_FAILURE, 0,
- gettext ("while generating output file: %s"),
+ _("while generating output file: %s"),
elf_errmsg (-1));
}
@@ -1634,7 +1685,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (unlikely (gelf_update_ehdr (debugelf, debugehdr) == 0))
{
- error (0, 0, gettext ("%s: error while updating ELF header: %s"),
+ error (0, 0, _("%s: error while updating ELF header: %s"),
debug_fname, elf_errmsg (-1));
result = 1;
goto fail_close;
@@ -1643,7 +1694,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
size_t shdrstrndx;
if (elf_getshdrstrndx (elf, &shdrstrndx) < 0)
{
- error (0, 0, gettext ("%s: error while getting shdrstrndx: %s"),
+ error (0, 0, _("%s: error while getting shdrstrndx: %s"),
fname, elf_errmsg (-1));
result = 1;
goto fail_close;
@@ -1651,7 +1702,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (update_shdrstrndx (debugelf, shdrstrndx) != 0)
{
- error (0, 0, gettext ("%s: error updating shdrstrndx: %s"),
+ error (0, 0, _("%s: error updating shdrstrndx: %s"),
debug_fname, elf_errmsg (-1));
result = 1;
goto fail_close;
@@ -1668,7 +1719,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (shst == NULL)
{
cleanup_debug ();
- error (EXIT_FAILURE, errno, gettext ("while preparing output for '%s'"),
+ error (EXIT_FAILURE, errno, _("while preparing output for '%s'"),
output_fname ?: fname);
}
@@ -1685,7 +1736,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
{
cleanup_debug ();
error (EXIT_FAILURE, 0,
- gettext ("while generating output file: %s"),
+ _("while generating output file: %s"),
elf_errmsg (-1));
}
@@ -1730,7 +1781,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
{
cleanup_debug ();
error (EXIT_FAILURE, 0,
- gettext ("while create section header section: %s"),
+ _("while create section header section: %s"),
elf_errmsg (-1));
}
elf_assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
@@ -1739,7 +1790,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (shdr_info[cnt].data == NULL)
{
cleanup_debug ();
- error (EXIT_FAILURE, 0, gettext ("cannot allocate section data: %s"),
+ error (EXIT_FAILURE, 0, _("cannot allocate section data: %s"),
elf_errmsg (-1));
}
@@ -1793,7 +1844,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
{
cleanup_debug ();
error (EXIT_FAILURE, 0,
- gettext ("while create section header section: %s"),
+ _("while create section header section: %s"),
elf_errmsg (-1));
}
elf_assert (elf_ndxscn (shdr_info[cnt].newscn) == idx);
@@ -1805,14 +1856,14 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
{
cleanup_debug ();
error (EXIT_FAILURE, 0,
- gettext ("while create section header string table: %s"),
+ _("while create section header string table: %s"),
elf_errmsg (-1));
}
if (dwelf_strtab_finalize (shst, shstrtab_data) == NULL)
{
cleanup_debug ();
error (EXIT_FAILURE, 0,
- gettext ("no memory to create section header string table"));
+ _("no memory to create section header string table"));
}
/* We have to set the section size. */
@@ -1832,7 +1883,7 @@ 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. Keep
+ might be section indices 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;
@@ -2025,7 +2076,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
sections. Just warn and set the symbol
section to UNDEF. */
error (0, 0,
- gettext ("Cannot remove symbol [%zd] from allocated symbol table [%zd]"), inner, cnt);
+ _("Cannot remove symbol [%zd] from allocated symbol table [%zd]"), inner, cnt);
sym->st_shndx = SHN_UNDEF;
if (gelf_update_sym (shdr_info[cnt].data, destidx,
sym) == 0)
@@ -2124,69 +2175,43 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
/* Find all relocation sections which use this symbol table. */
for (cnt = 1; cnt <= shdridx; ++cnt)
{
- /* Update section headers when the data size has changed.
- We also update the SHT_NOBITS section in the debug
- file so that the section headers match in sh_size. */
- inline void update_section_size (const Elf_Data *newdata)
- {
- GElf_Shdr shdr_mem;
- GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
- shdr->sh_size = newdata->d_size;
- (void) gelf_update_shdr (scn, shdr);
- if (debugelf != NULL)
- {
- /* libelf will use d_size to set sh_size. */
- Elf_Data *debugdata = elf_getdata (elf_getscn (debugelf,
- cnt), NULL);
- if (debugdata == NULL)
- INTERNAL_ERROR (fname);
- debugdata->d_size = newdata->d_size;
- }
- }
-
- if (shdr_info[cnt].idx == 0 && debug_fname == NULL)
+ struct shdr_info *info = &shdr_info[cnt];
+ if (info->idx == 0 && debug_fname == NULL)
/* Ignore sections which are discarded. When we are saving a
relocation section in a separate debug file, we must fix up
the symbol table references. */
continue;
- const Elf32_Word symtabidx = shdr_info[cnt].old_sh_link;
+ const Elf32_Word symtabidx = info->old_sh_link;
elf_assert (symtabidx < shnum + 2);
const Elf32_Word *const newsymidx = shdr_info[symtabidx].newsymidx;
- switch (shdr_info[cnt].shdr.sh_type)
- {
- inline bool no_symtab_updates (void)
- {
- /* If the symbol table hasn't changed, do not do anything. */
- if (shdr_info[symtabidx].newsymidx == NULL)
- return true;
-
- /* If the symbol table is not discarded, but additionally
- duplicated in the separate debug file and this section
- is discarded, don't adjust anything. */
- return (shdr_info[cnt].idx == 0
- && shdr_info[symtabidx].debug_data != NULL);
- }
+ /* If the symbol table hasn't changed, do not do anything. */
+ if (newsymidx == NULL)
+ continue;
+
+ /* If the symbol table is not discarded, but additionally
+ duplicated in the separate debug file and this section
+ is discarded, don't adjust anything. */
+ if (info->idx == 0 && shdr_info[symtabidx].debug_data != NULL)
+ continue;
+
+ switch (info->shdr.sh_type)
+ {
case SHT_REL:
case SHT_RELA:
- if (no_symtab_updates ())
- break;
-
- Elf_Data *d = elf_getdata (shdr_info[cnt].idx == 0
- ? elf_getscn (debugelf, cnt)
- : elf_getscn (newelf,
- shdr_info[cnt].idx),
- NULL);
+ scn = (info->idx == 0
+ ? elf_getscn (debugelf, cnt)
+ : elf_getscn (newelf, info->idx));
+ Elf_Data *d = elf_getdata (scn, NULL);
elf_assert (d != NULL && d->d_buf != NULL
- && shdr_info[cnt].shdr.sh_entsize != 0);
- size_t nrels = (shdr_info[cnt].shdr.sh_size
- / shdr_info[cnt].shdr.sh_entsize);
+ && info->shdr.sh_entsize != 0);
+ size_t nrels = (info->shdr.sh_size / info->shdr.sh_entsize);
size_t symsize = gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT);
const Elf32_Word symidxn = (shdr_info[symtabidx].data->d_size
/ symsize);
- if (shdr_info[cnt].shdr.sh_type == SHT_REL)
+ if (info->shdr.sh_type == SHT_REL)
for (size_t relidx = 0; relidx < nrels; ++relidx)
{
GElf_Rel rel_mem;
@@ -2227,15 +2252,12 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
break;
case SHT_HASH:
- if (no_symtab_updates ())
- break;
-
/* We have to recompute the hash table. */
- elf_assert (shdr_info[cnt].idx > 0);
+ elf_assert (info->idx > 0);
/* The hash section in the new file. */
- scn = elf_getscn (newelf, shdr_info[cnt].idx);
+ scn = elf_getscn (newelf, info->idx);
/* The symbol table data. */
Elf_Data *symd = elf_getdata (elf_getscn (newelf,
@@ -2247,7 +2269,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
Elf_Data *hashd = elf_getdata (scn, NULL);
elf_assert (hashd != NULL && hashd->d_buf != NULL);
- if (shdr_info[cnt].shdr.sh_entsize == sizeof (Elf32_Word))
+ if (info->shdr.sh_entsize == sizeof (Elf32_Word))
{
/* Sane arches first. */
elf_assert (hashd->d_size >= 2 * sizeof (Elf32_Word));
@@ -2273,7 +2295,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
* sizeof (Elf32_Word));
elf_assert (n_size <= hashd->d_size);
hashd->d_size = n_size;
- update_section_size (hashd);
+ update_section_size (scn, hashd, debugelf, cnt, fname);
/* Clear the arrays. */
memset (bucket, '\0',
@@ -2308,8 +2330,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
else
{
/* Alpha and S390 64-bit use 64-bit SHT_HASH entries. */
- elf_assert (shdr_info[cnt].shdr.sh_entsize
- == sizeof (Elf64_Xword));
+ elf_assert (info->shdr.sh_entsize == sizeof (Elf64_Xword));
Elf64_Xword *bucket = (Elf64_Xword *) hashd->d_buf;
@@ -2335,7 +2356,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
* sizeof (Elf64_Xword));
elf_assert (n_size <= hashd->d_size);
hashd->d_size = n_size;
- update_section_size (hashd);
+ update_section_size (scn, hashd, debugelf, cnt, fname);
/* Clear the arrays. */
memset (bucket, '\0',
@@ -2371,13 +2392,10 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
case SHT_GNU_versym:
/* If the symbol table changed we have to adjust the entries. */
- if (no_symtab_updates ())
- break;
-
- elf_assert (shdr_info[cnt].idx > 0);
+ elf_assert (info->idx > 0);
/* The symbol version section in the new file. */
- scn = elf_getscn (newelf, shdr_info[cnt].idx);
+ scn = elf_getscn (newelf, info->idx);
/* The symbol table data. */
symd = elf_getdata (elf_getscn (newelf, shdr_info[symtabidx].idx),
@@ -2409,16 +2427,13 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
/ gelf_fsize (elf, symd->d_type, 1,
EV_CURRENT),
EV_CURRENT);
- update_section_size (verd);
+ update_section_size (scn, verd, debugelf, cnt, fname);
break;
case SHT_GROUP:
- if (no_symtab_updates ())
- break;
-
/* Yes, the symbol table changed.
Update the section header of the section group. */
- scn = elf_getscn (newelf, shdr_info[cnt].idx);
+ scn = elf_getscn (newelf, info->idx);
GElf_Shdr shdr_mem;
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
elf_assert (shdr != NULL);
@@ -2448,7 +2463,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
/* Finally write the file. */
if (unlikely (elf_update (debugelf, ELF_C_WRITE) == -1))
{
- error (0, 0, gettext ("while writing '%s': %s"),
+ error (0, 0, _("while writing '%s': %s"),
tmp_debug_fname, elf_errmsg (-1));
result = 1;
goto fail_close;
@@ -2459,7 +2474,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
if (rename (tmp_debug_fname, debug_fname) != 0
|| fchmod (debug_fd, mode) != 0)
{
- error (0, errno, gettext ("while creating '%s'"), debug_fname);
+ error (0, errno, _("while creating '%s'"), debug_fname);
result = 1;
goto fail_close;
}
@@ -2482,7 +2497,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
/* Compute the checksum which we will add to the executable. */
if (crc32_file (debug_fd, &debug_crc) != 0)
{
- error (0, errno, gettext ("\
+ error (0, errno, _("\
while computing checksum for debug information"));
unlink (debug_fname);
result = 1;
@@ -2523,7 +2538,7 @@ while computing checksum for debug information"));
if (gelf_update_ehdr (newelf, newehdr) == 0)
{
- error (0, 0, gettext ("%s: error while creating ELF header: %s"),
+ error (0, 0, _("%s: error while creating ELF header: %s"),
output_fname ?: fname, elf_errmsg (-1));
cleanup_debug ();
return 1;
@@ -2532,7 +2547,7 @@ while computing checksum for debug information"));
/* The new section header string table index. */
if (update_shdrstrndx (newelf, idx) != 0)
{
- error (0, 0, gettext ("%s: error updating shdrstrndx: %s"),
+ error (0, 0, _("%s: error updating shdrstrndx: %s"),
output_fname ?: fname, elf_errmsg (-1));
cleanup_debug ();
return 1;
@@ -2541,7 +2556,7 @@ while computing checksum for debug information"));
/* We have everything from the old file. */
if (elf_cntl (elf, ELF_C_FDDONE) != 0)
{
- error (0, 0, gettext ("%s: error while reading the file: %s"),
+ error (0, 0, _("%s: error while reading the file: %s"),
fname, elf_errmsg (-1));
cleanup_debug ();
return 1;
@@ -2556,7 +2571,7 @@ while computing checksum for debug information"));
/* Finally write the file. */
if (elf_update (newelf, ELF_C_WRITE) == -1)
{
- error (0, 0, gettext ("while writing '%s': %s"),
+ error (0, 0, _("while writing '%s': %s"),
output_fname ?: fname, elf_errmsg (-1));
result = 1;
}
@@ -2581,7 +2596,7 @@ while computing checksum for debug information"));
!= sizeof zero)
|| ftruncate (fd, lastsec_offset) < 0)
{
- error (0, errno, gettext ("while writing '%s'"),
+ error (0, errno, _("while writing '%s'"),
output_fname ?: fname);
result = 1;
}
@@ -2601,7 +2616,7 @@ while computing checksum for debug information"));
!= sizeof zero)
|| ftruncate (fd, lastsec_offset) < 0)
{
- error (0, errno, gettext ("while writing '%s'"),
+ error (0, errno, _("while writing '%s'"),
output_fname ?: fname);
result = 1;
}
@@ -2638,14 +2653,14 @@ while computing checksum for debug information"));
/* That was it. Close the descriptors. */
if (elf_end (newelf) != 0)
{
- error (0, 0, gettext ("error while finishing '%s': %s"),
+ error (0, 0, _("error while finishing '%s': %s"),
output_fname ?: fname, elf_errmsg (-1));
result = 1;
}
if (debugelf != NULL && elf_end (debugelf) != 0)
{
- error (0, 0, gettext ("error while finishing '%s': %s"), debug_fname,
+ error (0, 0, _("error while finishing '%s': %s"), debug_fname,
elf_errmsg (-1));
result = 1;
}
@@ -2662,7 +2677,7 @@ while computing checksum for debug information"));
{
if (futimens (fd, tvp) != 0)
{
- error (0, errno, gettext ("\
+ error (0, errno, _("\
cannot set access and modification date of '%s'"),
output_fname ?: fname);
result = 1;
@@ -2738,14 +2753,14 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname,
{
if (unlikely (futimens (fd, tvp) != 0))
{
- error (0, errno, gettext ("\
+ error (0, errno, _("\
cannot set access and modification date of '%s'"), fname);
result = 1;
}
}
if (unlikely (close (fd) != 0))
- error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname);
+ error (EXIT_FAILURE, errno, _("while closing '%s'"), fname);
return result;
}
diff --git a/src/unstrip.c b/src/unstrip.c
index 9b8c09a1..85803295 100644
--- a/src/unstrip.c
+++ b/src/unstrip.c
@@ -52,10 +52,6 @@
#include "libeu.h"
#include "printversion.h"
-#ifndef _
-# define _(str) gettext (str)
-#endif
-
/* Name and version of program. */
ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
@@ -311,12 +307,18 @@ make_directories (const char *path)
if (lastslash == path)
return;
- char *dir = strndupa (path, lastslash - path);
- while (mkdir (dir, 0777) < 0 && errno != EEXIST)
- if (errno == ENOENT)
- make_directories (dir);
- else
- error (EXIT_FAILURE, errno, _("cannot create directory '%s'"), dir);
+ char *dir = strndup (path, lastslash - path);
+ if (dir == NULL)
+ error(EXIT_FAILURE, errno, _("memory exhausted"));
+
+ while (mkdir (dir, ACCESSPERMS) < 0 && errno != EEXIST)
+ {
+ if (errno == ENOENT)
+ make_directories (dir);
+ else
+ error (EXIT_FAILURE, errno, _("cannot create directory '%s'"), dir);
+ }
+ free (dir);
}
/* Keep track of new section data we are creating, so we can free it
@@ -500,7 +502,8 @@ adjust_relocs (Elf_Scn *outscn, Elf_Scn *inscn, const GElf_Shdr *shdr,
error (EXIT_FAILURE, 0, "Symbol table cannot have zero sh_entsize");
const size_t nsym = symshdr->sh_size / symshdr->sh_entsize;
const size_t onent = shdr->sh_size / shdr->sh_entsize;
- assert (data->d_size == shdr->sh_size);
+ if (data->d_size != shdr->sh_size)
+ error (EXIT_FAILURE, 0, "HASH section has inconsistent size");
#define CONVERT_HASH(Hash_Word) \
{ \
@@ -509,7 +512,8 @@ adjust_relocs (Elf_Scn *outscn, Elf_Scn *inscn, const GElf_Shdr *shdr,
const size_t nchain = old_hash[1]; \
const Hash_Word *const old_bucket = &old_hash[2]; \
const Hash_Word *const old_chain = &old_bucket[nbucket]; \
- assert (onent == 2 + nbucket + nchain); \
+ if (onent != 2 + nbucket + nchain) \
+ error (EXIT_FAILURE, 0, "HASH section has inconsistent entsize"); \
\
const size_t nent = 2 + nbucket + nsym; \
Hash_Word *const new_hash = xcalloc (nent, sizeof new_hash[0]); \
@@ -2184,7 +2188,8 @@ DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"),
/* Copy the unstripped file and then modify it. */
int outfd = open (output_file, O_RDWR | O_CREAT,
- stripped_ehdr->e_type == ET_REL ? 0666 : 0777);
+ (stripped_ehdr->e_type == ET_REL
+ ? DEFFILEMODE : ACCESSPERMS));
if (outfd < 0)
error (EXIT_FAILURE, errno, _("cannot open '%s'"), output_file);
Elf *outelf = elf_begin (outfd, ELF_C_WRITE, NULL);
@@ -2469,8 +2474,7 @@ match_module (Dwfl_Module *mod,
const char *file;
const char *check = dwfl_module_info (mod, NULL, NULL, NULL,
NULL, NULL, &file, NULL);
- assert (check == name);
- if (file == NULL)
+ if (check == NULL || strcmp (check, name) != 0 || file == NULL)
return DWARF_CB_OK;
name = file;
diff --git a/tests/.gitignore b/tests/.gitignore
new file mode 100644
index 00000000..d0e83da2
--- /dev/null
+++ b/tests/.gitignore
@@ -0,0 +1,114 @@
+/*.log
+/*.trs
+/addrcfi
+/addrscopes
+/addsections
+/aggregate_size
+/all-dwarf-ranges
+/alldts
+/allfcts
+/allregs
+/arextract
+/arls
+/arsymtest
+/asm-tst1
+/asm-tst2
+/asm-tst3
+/asm-tst4
+/asm-tst5
+/asm-tst6
+/asm-tst7
+/asm-tst8
+/asm-tst9
+/attr-integrate-skel
+/backtrace
+/backtrace-child
+/backtrace-child-biarch
+/backtrace-data
+/backtrace-dwarf
+/buildid
+/core-dump-backtrace.lock
+/debugaltlink
+/debuginfod_build_id_find
+/debuglink
+/deleted
+/dwarf-die-addr-die
+/dwarf-getmacros
+/dwarf-getstring
+/dwarf-ranges
+/dwarf_default_lower_bound
+/dwarfcfi
+/dwelf_elf_e_machine_string
+/dwelfgnucompressed
+/dwfl-addr-sect
+/dwfl-bug-addr-overflow
+/dwfl-bug-fd-leak
+/dwfl-bug-getmodules
+/dwfl-bug-report
+/dwfl-proc-attach
+/dwfl-report-elf-align
+/dwfl-report-segment-contiguous
+/dwfllines
+/dwflmodtest
+/dwflsyms
+/early-offscn
+/ecp
+/elfcopy
+/elfgetchdr
+/elfgetzdata
+/elfputzdata
+/elfrdwrnop
+/elfshphehdr
+/elfstrmerge
+/elfstrtab
+/emptyfile
+/fillfile
+/find-prologues
+/funcretval
+/funcscopes
+/get-aranges
+/get-files
+/get-lines
+/get-pubnames
+/get-units-invalid
+/get-units-split
+/getphdrnum
+/getsrc_die
+/hash
+/leb128
+/line2addr
+/low_high_pc
+/msg_tst
+/newdata
+/newfile
+/newscn
+/next-files
+/next-lines
+/next_cfi
+/peel_type
+/rdwrmmap
+/read_unaligned
+/rerequest_tag
+/saridx
+/scnnames
+/sectiondump
+/show-abbrev
+/show-die-info
+/showptable
+/strptr
+/system-elf-libelf-test
+/test-elf_cntl_gelf_getshdr
+/test-flag-nobits
+/test-nlist
+/typeiter
+/typeiter2
+/unit-info
+/update1
+/update2
+/update3
+/update4
+/varlocs
+/vdsosyms
+/vendorelf
+/xlate_notes
+/zstrptr
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 6e3923f5..907b6351 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,440 @@
+2021-02-04 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Smoke test --fdcache-mintmp option handling.
+
+2021-01-31 Sergei Trofimovich <slyfox@gentoo.org>
+
+ * Makefile.am (TESTS_ENVIRONMENT): export CC variable
+ to tests for use instead of 'gcc'.
+ * run-disasm-x86-64.sh: use ${CC} instead of 'gcc'.
+ * run-disasm-x86.sh: Likewise.
+ * run-strip-g.sh: Likewise.
+ * run-strip-nothing.sh: Likewise.
+ * run-test-includes.sh: Likewise.
+
+2021-01-06 Timm Bäder <tbaeder@redhat.com>
+
+ * zstrptr.c (main): Lift print_strings function up to ...
+ (print_strings): ... here. New file scope function taking
+ Elf_Scn*, Elf* and ndx as arguments.
+
+2020-12-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ * .gitignore: New file.
+
+2020-12-12 Mark Wielaard <mark@klomp.org>
+
+ * testfile-retain.o.bz2: New test file.
+ * run-retain.sh: New test.
+ * Makefile.am (TESTS): Add run-retain.sh.
+ (EXTRA_DIST): Add run-retain.sh and testfile-retain.o.bz2
+
+2020-12-16 Dmitry V. Levin <ldv@altlinux.org>
+
+ * dwflmodtest.c (N_): Remove.
+
+2020-12-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ * dwarf-die-addr-die.c (main): Fix spelling typo in error diagnostics.
+ * run-lfs-symbols.sh: Likewise.
+ * elfstrmerge.c (main): Fix spelling typos in comments.
+ * dwfl-bug-fd-leak.c: Likewise.
+ * run-readelf-line.sh: Likewise.
+ * run-stack-demangled-test.sh: Likewise.
+ * sectiondump.c (main): Likewise.
+ * varlocs.c (handle_die): Likewise.
+
+2020-12-11 Dmitry V. Levin <ldv@altlinux.org>
+
+ * configure.ac: Remove.
+ * Makefile.am [STANDALONE]: Remove.
+ (check_PROGRAMS): Add msg_tst, system-elf-libelf-test, and $(asm_TESTS)
+ unconditionally.
+ (TESTS): Add msg_tst, system-elf-libelf-test, $(asm_TESTS), and
+ run-disasm-bpf.sh unconditionally.
+
+2020-11-23 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Add sqlite error injection & stats.
+
+2020-11-02 Mark Wielaard <mark@klomp.org>
+
+ * run-debuginfod-find.sh: Create bogus R/nothing.rpm with cyclic
+ symlink instead of chmod 000.
+
+2020-11-19 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Look for http-* metrics.
+
+2020-11-01 Érico N. Rolim <erico.erc@gmail.com>
+ Mark Wielaard <mark@klomp.org>
+
+ * alldts.c (main): Use DEFFILEMODE for open with O_CREAT.
+ * arextract.c (main): Likewise.
+ * ecp.c (main): Likewise for creat.
+ * elfstrtab.c (check_elf): Use DEFFILEMODE for open with O_CREAT,
+ remove mode from open calls without O_CREAT.
+ * emptyfile.c (check_elf): Likewise.
+ * fillfile.c (check_elf): Likewise.
+ * vendorelf.c (check_elf): Likewise.
+ * newdata.c (checkelf): Use DEFFILEMODE for open with O_CREAT.
+ * update{1,2,3,4}.c (main): Likewise.
+ *
+
+2020-10-31 Mark Wielaard <mark@klomp.org>
+
+ * dwfl-proc-attach.c (dlopen): New external function override.
+
+2020-10-31 Mark Wielaard <mark@klomp.org>
+
+ * test-wrapper.sh: Use =, not == for string compare.
+
+2020-10-29 Mark Wielaard <mark@klomp.org>
+
+ * test-wrapper.sh: Determine whether the test is a script or not
+ and run binaries directly under valgrind.
+ * dwfl-bug-fd-leak.c (main): Call getrlimit before calling setrlimit.
+ * dwfl-proc-attach.c (main): Call dwfl_end, pthread_cancel and
+ pthread_join.
+ * vdsosyms.c (main): Call dwfl_end.
+
+2020-10-31 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Modify for tweaked/new metrics.
+
+2020-10-30 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26775
+ * run-debuginfod-find.sh: Modify test for restored
+ thread_work_total semantics for grooming.
+
+2020-10-29 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26775
+ * run-debuginfod-find.sh: Modify test for different
+ thread_work_total semantics for grooming.
+
+2020-10-29 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26810
+ * run-debuginfod-find.sh: Add tests for successful archive fetches across
+ renamed RPMs, even without grooming.
+
+2020-10-25 Mark Wielaard <mark@klomp.org>
+
+ * read_unaligned.c: New test.
+ * Makefile.am (check_PROGRAMS, TESTS): Add read_unaligned.
+ (read_unaligned_LDADD): New variable.
+
+2020-10-28 Tom Tromey <tom@tromey.com>
+
+ PR26773
+ * Makefile.am (check_PROGRAMS, TESTS): Add leb128.
+ (leb128_LDADD): New variable.
+ * leb128.c: New file.
+
+2020-10-19 Mark Wielaard <mark@klomp.org>
+
+ * addrcfi.c (print_register): Make ops_mem 3 elements.
+
+2020-10-19 Mark Wielaard <mark@klomp.org>
+
+ * testfile60.bz2: Removed.
+ * Makefile.am (EXTRA_DIST): Remove testfile60.bz2.
+ * run-allregs.sh: Remove tilegx testfile60 testcase.
+
+2020-10-20 Frank Ch. Eigler <fche@redhat.com>
+
+ PR26756: more prometheus metrics
+ * run-debuginfod-find.sh: Trigger some errors with dummy "nothing.rpm"
+ and check for new metrics.
+
+2020-09-18 Mark Wielaard <mark@klomp.org>
+
+ * run-readelf-compressed-zstd.sh: New test.
+ * Makefile.am (EXTRA_DISTS): Add run-readelf-compressed-zstd.sh.
+ (TESTS): Add run-readelf-compressed-zstd.sh if HAVE_ZSTD.
+
+2020-09-03 Mark Wielaard <mark@klomp.org>
+
+ * run-readelf-frames.sh: New test.
+ * Makefile.am (TESTS): Add run-readelf-frames.sh.
+ (EXTRA_DIST): Likewise.
+
+2020-09-03 Mark Wielaard <mark@klomp.org>
+
+ * testfile-gnu-property-note-aarch64.bz2: New file.
+ * run-readelf-n.sh: Handle testfile-gnu-property-note-aarch64.
+ * Makefile.am (EXTRA_DIST): Add
+ testfile-gnu-property-note-aarch64.bz2.
+
+2020-07-19 Mark Wielaard <mark@klomp.org>
+
+ * asm-tst1.c: Include libebl.h after libasm.h.
+ * asm-tst2.c: Likewise.
+ * asm-tst3.c: Likewise.
+ * asm-tst4.c: Likewise.
+ * asm-tst5.c: Likewise.
+ * asm-tst6.c: Likewise.
+ * asm-tst7.c: Likewise.
+ * asm-tst8.c: Likewise.
+ * asm-tst9.c: Likewise.
+
+2020-07-05 Mark Wielaard <mark@klomp.org>
+
+ * run-test-includes.sh: New test.
+ * Makefile.am (TESTS): Add run-test-includes.sh.
+ (EXTRA_DIST): Likewise.
+
+2020-07-03 Alice Zhang <alizhang@redhat.com>
+
+ * run-debuginfod-find.sh: Add scheme free url testcase.
+
+2020-06-19 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (TESTS): Don't add run-debuginfod-find.sh when
+ DUMMY_LIBDEBUGINFOD.
+
+2020-06-16 Mark Wielaard <mark@klomp.org>
+
+ * coverage.sh: Use /usr/bin/env bash.
+ * run-ar.sh: Likewise.
+ * run-backtrace-core-aarch64.sh: Likewise.
+ * run-backtrace-core-i386.sh: Likewise.
+ * run-backtrace-core-ppc.sh: Likewise.
+ * run-backtrace-core-s390.sh: Likewise.
+ * run-backtrace-core-s390x.sh: Likewise.
+ * run-backtrace-core-sparc.sh: Likewise.
+ * run-backtrace-core-x32.sh: Likewise.
+ * run-backtrace-core-x86_64.sh: Likewise.
+ * run-backtrace-data.sh: Likewise.
+ * run-backtrace-demangle.sh: Likewise.
+ * run-backtrace-dwarf.sh: Likewise.
+ * run-backtrace-fp-core-aarch64.sh: Likewise.
+ * run-backtrace-fp-core-i386.sh: Likewise.
+ * run-backtrace-fp-core-ppc64le.sh: Likewise.
+ * run-backtrace-fp-core-x86_64.sh: Likewise.
+ * run-backtrace-native-biarch.sh: Likewise.
+ * run-backtrace-native-core-biarch.sh: Likewise.
+ * run-backtrace-native-core.sh: Likewise.
+ * run-backtrace-native.sh: Likewise.
+ * run-debuginfod-find.sh: Likewise.
+ * run-deleted.sh: Likewise.
+ * run-dwelf_elf_e_machine_string.sh: Likewise.
+ * run-large-elf-file.sh: Likewise.
+ * run-lfs-symbols.sh: Likewise.
+ * run-linkmap-cut.sh: Likewise.
+
+2020-06-11 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (nlist-test): Add GCOV flags when necessary.
+
+2020-06-06 Mark Wielaard <mark@klomp.org>
+
+ * testfilesyms32.bz2: New test file.
+ * testfilesyms64.bz2: Likewise.
+ * run-nm-syms.sh: New test.
+ * Makefile.am (TESTS): Add run-nm-syms.sh.
+ (EXTRA_DIST): run-nm-syms.sh, testfilesyms32.bz2 and
+ testfilesyms64.bz2
+
+2020-05-08 Mark Wielaard <mark@klomp.org>
+
+ * elfputzdata.c (main): Explicitly check orig_buf is not NULL
+ before calling memcmp.
+
+2020-05-05 Mark Wielaard <mark@klomp.org>
+
+ * testfile-lto-gcc8.bz2: New test file.
+ * testfile-lto-gcc9.bz2: Likewise.
+ * Makefile.am (EXTRA_DIST): Add testfile-lto-gcc8.bz2 and
+ testfile-lto-gcc9.bz2.
+ * run-allfcts.sh: Add testfile-lto-gcc9 and testfile-lto-gcc8
+ tests.
+
+2020-05-05 Mark Wielaard <mark@klomp.org>
+
+ * testfile-lto-gcc10.bz2: New test file.
+ * Makefile.am (EXTRA_DIST): Add testfile-lto-gcc10.bz2.
+ * run-allfcts.sh: Add testfile-lto-gcc10 test.
+
+2020-04-17 Mark Wielaard <mark@klomp.org>
+
+ * test-subr.sh (testrun_on_self_obj): New function.
+ * run-varlocs-self.sh: Run testrun_on_self_exe and
+ testrun_on_self_lib with -e, run testrun_on_self_obj with
+ --exprlocs -e.
+
+2020-04-17 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (test-nlist$): New goal with minimal CFLAGS.
+ (test_nlist_CFLAGS): New variable.
+
+2020-03-28 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Test timestamps of archive-origin files.
+
+2020-03-27 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Test /path/-based debuginfod-find.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Test relay of UA and XFF headers across
+ federating debuginfods.
+
+2020-03-26 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Look for debuginfod's new
+ http_responses_* metrics.
+
+2020-03-26 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Look for bsdtar instead of dpkg.
+
+2020-03-26 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Check for bsdtar zstd capability
+ for running tests against zstd-compressed fedora31 rpms.
+
+2020-03-26 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (EXTRA_DIST): Add
+ debuginfod-rpms/fedora31/hello3-1.0-2.src.rpm,
+ debuginfod-rpms/fedora31/hello3-1.0-2.x86_64.rpm,
+ debuginfod-rpms/fedora31/hello3-debuginfo-1.0-2.x86_64.rpm,
+ debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm,
+ debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm,
+ debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-rpms/hello3.spec., /fedora31/*: New files with
+ uncanonicalized source paths.
+ * run-debuginfod-find.sh: Test them.
+
+2020-03-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Test the more detailed debuginfod
+ webapi log format.
+
+2020-03-23 Mark Wielaard <mark@klomp.org>
+
+ * getphdrnum.c: Include config.h.
+ * run-lfs-symbols.sh: Also check that file exists. Add more logs.
+ Remove ebl modules check.
+
+2020-03-22 Omar Sandoval <osandov@fb.com>
+ Mark Wielaard <mark@klomp.org>
+
+ * getphdrnum.c: New file.
+ * run-getphdrnum.sh: New test.
+ * testfile-phdrs.elf.bz2: New test file.
+ * Makefile.am (check_PROGRAMS): Add getphdrnum.
+ (TESTS): Add run-getphdrnum.sh.
+ (EXTRA_DIST): Add run-getphdrnum.sh and testfile-phdrs.elf.bz2.
+ (getphdrnum_LDADD): New variable.
+
+2020-03-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Look for URL in default progressfn
+ and from debuginfod-find -v.
+
+2020-02-19 Aaron Merey <amerey@redhat.com>
+
+ * run-debuginfod-find.sh: Run tests for verifying default
+ client cache locations.
+
+2020-02-26 Konrad Kleine <kkleine@redhat.com>
+
+ * run-debuginfod-find.sh: added tests for DEBUGINFOD_URLS beginning
+ with "file://"
+
+2020-02-21 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (TESTS_ENVIRONMENT): Explicitly unset DEBUGINFOD_URLS.
+ (installed_TESTS_ENVIRONMENT): Likewise.
+
+2020-02-19 Aaron Merey <amerey@redhat.com>
+
+ * run-debuginfod-find.sh: Test that files unrelated to debuginfod
+ survive cache cleaning.
+
+2020-02-08 Mark Wielaard <mark@klomp.org>
+
+ * run-pt_gnu_prop-tests.sh: New test.
+ * testfile_pt_gnu_prop.bz2: New test file.
+ * testfile_pt_gnu_prop32.bz2: Likewise.
+ * Makefile.am (TESTS): Add run-pt_gnu_prop-tests.sh
+ (EXTRA_DISTS): Likewise. Add testfile_pt_gnu_prop.bz2 and
+ testfile_pt_gnu_prop32.bz2.
+
+2020-02-05 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfo-tars/*: New test files from Eli Schwartz of ArchLinux.
+ * Makefile.am (EXTRA_DIST): Package them.
+ * run-debuginfod-find.sh: Run basic archive extraction tests.
+
+2020-02-03 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Protect against missing curl & rpm2cpio.
+
+2020-01-19 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Check for proper groom completion count.
+
+2020-01-18 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Test empty source_paths[].
+
+2020-01-08 Mark Wielaard <mark@klomp.org>
+
+ * asm-test?.c: include libebl.h.
+
+2020-01-11 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Test --fdcache* options.
+
+2020-01-11 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuginfod-find.sh: Adjust to new work-queue metrics.
+
+2020-01-02 Mark Wielaard <mark@klomp.org>
+
+ * run-debuginfod-find.sh: Set DEBUGINFOD_TIMEOUT to 10.
+
+2019-12-22 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod-debs/*: New test files, based on
+ https://wiki.debian.org/Packaging/Intro.
+ * run-debuginfod-find.sh: Test deb file processing (if dpkg
+ installed).
+
+2019-12-04 Frank Ch. Eigler <fche@redhat.com>
+
+ * run-debuinfod-find.sh: Test $DEBUGINFOD_PROGRESS.
+
+2019-12-11 Omar Sandoval <osandov@fb.com>
+
+ * dwfl-report-segment-coalesce.c: New test.
+ * Makefile.am: Add dwfl-report-segment-coalesce
+
+2019-12-06 Mark Wielaard <mark@klomp.org>
+
+ * run-debuginfod-find.sh: Force -Wl,--build-id.
+
+2019-12-05 Mark Wielaard <mark@klomp.org>
+
+ * run-findinfod-find.sh: Run strip under testrun.
+
+2019-12-06 Mark Wielaard <mark@klomp.org>
+
+ * backtrace-data.c (main): Add break after assert.
+
+2019-12-05 Mark Wielaard <mark@klomp.org>
+
+ * run-elfclassify.sh: Run elfcompress under testrun.
+
2019-11-26 Mark Wielaard <mark@klomp.org>
* Makefile.am (BUILD_STATIC): Add libraries needed for libdw.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index eab4ae6f..c145720c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -19,15 +19,11 @@
include $(top_srcdir)/config/eu.am
BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
-AM_LDFLAGS =
-
-if !STANDALONE
AM_CPPFLAGS += -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
-I$(top_srcdir)/libdwfl -I$(top_srcdir)/libdwelf \
-I$(top_srcdir)/libebl -I$(top_srcdir)/libelf \
-I$(top_srcdir)/lib -I..
-AM_LDFLAGS += -Wl,-rpath-link,../libasm:../libdw:../libelf
-endif
+AM_LDFLAGS = -Wl,-rpath-link,../libasm:../libdw:../libelf
if TESTS_RPATH
AM_LDFLAGS += -Wl,-rpath,$(BUILD_RPATH)
@@ -50,7 +46,8 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \
test-flag-nobits dwarf-getstring rerequest_tag \
alldts typeiter typeiter2 low_high_pc \
test-elf_cntl_gelf_getshdr dwflsyms dwfllines \
- dwfl-report-elf-align varlocs backtrace backtrace-child \
+ dwfl-report-elf-align dwfl-report-segment-contiguous \
+ varlocs backtrace backtrace-child \
backtrace-data backtrace-dwarf debuglink debugaltlink \
buildid deleted deleted-lib.so aggregate_size peel_type \
vdsosyms \
@@ -61,7 +58,10 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \
get-units-invalid get-units-split attr-integrate-skel \
all-dwarf-ranges unit-info next_cfi \
elfcopy addsections xlate_notes elfrdwrnop \
- dwelf_elf_e_machine_string
+ dwelf_elf_e_machine_string \
+ getphdrnum leb128 read_unaligned \
+ msg_tst system-elf-libelf-test \
+ $(asm_TESTS)
asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
asm-tst6 asm-tst7 asm-tst8 asm-tst9
@@ -78,6 +78,20 @@ backtrace-child-biarch$(EXEEXT): backtrace-child.c
$(AM_LDFLAGS) $(LDFLAGS) $(backtrace_child_LDFLAGS) \
-o $@ $<
+if GCOV
+GCOV_FLAGS=-fprofile-arcs -ftest-coverage
+else
+GCOV_FLAGS=
+endif
+
+# test_nlist checks its own symbol table, and expects various symbols
+# to be in the order as specified in the source file. Explicitly set
+# minimal CFLAGS
+test-nlist$(EXEEXT): test-nlist.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(test_nlist_CFLAGS) $(GCOV_FLAGS) -o $@ $< $(test_nlist_LDADD)
+
TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
update1 update2 update3 update4 \
run-show-die-info.sh run-get-files.sh run-get-lines.sh \
@@ -100,7 +114,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
run-ranlib-test2.sh run-ranlib-test3.sh run-ranlib-test4.sh \
run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
run-find-prologues.sh run-allregs.sh run-addrcfi.sh \
- run-dwarfcfi.sh \
+ run-dwarfcfi.sh run-nm-syms.sh \
run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \
run-readelf-compressed.sh \
run-readelf-const-values.sh \
@@ -109,11 +123,13 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
run-readelf-test4.sh run-readelf-twofiles.sh \
run-readelf-macro.sh run-readelf-loc.sh run-readelf-ranges.sh \
run-readelf-aranges.sh run-readelf-line.sh run-readelf-z.sh \
+ run-readelf-frames.sh \
run-readelf-n.sh \
+ run-retain.sh \
run-native-test.sh run-bug1-test.sh \
run-debuglink.sh run-debugaltlink.sh run-buildid.sh \
dwfl-bug-addr-overflow run-addrname-test.sh \
- dwfl-bug-fd-leak dwfl-bug-report \
+ dwfl-bug-fd-leak dwfl-bug-report dwfl-report-segment-contiguous \
run-dwfl-bug-offline-rel.sh run-dwfl-addr-sect.sh \
run-disasm-x86.sh run-disasm-x86-64.sh \
run-early-offscn.sh run-dwarf-getmacros.sh run-dwarf-ranges.sh \
@@ -166,7 +182,12 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
run-readelf-discr.sh \
run-dwelf_elf_e_machine_string.sh \
run-elfclassify.sh run-elfclassify-self.sh \
- run-disasm-riscv64.sh
+ run-disasm-riscv64.sh \
+ run-pt_gnu_prop-tests.sh \
+ run-getphdrnum.sh run-test-includes.sh \
+ leb128 read_unaligned \
+ msg_tst system-elf-libelf-test \
+ $(asm_TESTS) run-disasm-bpf.sh
if !BIARCH
export ELFUTILS_DISABLE_BIARCH = 1
@@ -176,24 +197,21 @@ if !DEMANGLE
export ELFUTILS_DISABLE_DEMANGLE = 1
endif
-if !STANDALONE
-check_PROGRAMS += msg_tst system-elf-libelf-test
-TESTS += msg_tst system-elf-libelf-test
-endif
-
if LZMA
TESTS += run-readelf-s.sh run-dwflsyms.sh
endif
-if HAVE_LIBASM
-check_PROGRAMS += $(asm_TESTS)
-TESTS += $(asm_TESTS) run-disasm-bpf.sh
+if HAVE_ZSTD
+TESTS += run-readelf-compressed-zstd.sh
endif
if DEBUGINFOD
check_PROGRAMS += debuginfod_build_id_find
+# With the dummy delegation doesn't work
+if !DUMMY_LIBDEBUGINFOD
TESTS += run-debuginfod-find.sh
endif
+endif
EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
run-show-die-info.sh run-get-files.sh run-get-lines.sh \
@@ -206,6 +224,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
testfile9.bz2 testfile10.bz2 testfile11.bz2 testfile12.bz2 \
testfile13.bz2 run-strip-test3.sh run-allfcts.sh \
testfile_class_func.bz2 testfile_nested_funcs.bz2 \
+ testfile-lto-gcc10.bz2 \
+ testfile-lto-gcc9.bz2 testfile-lto-gcc8.bz2 \
run-line2addr.sh run-elflint-test.sh testfile14.bz2 \
run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \
run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \
@@ -229,8 +249,10 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
run-elflint-self.sh run-ranlib-test.sh run-ranlib-test2.sh \
run-ranlib-test3.sh run-ranlib-test4.sh \
run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
+ run-nm-syms.sh testfilesyms32.bz2 testfilesyms64.bz2 \
run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \
run-readelf-compressed.sh \
+ run-readelf-compressed-zstd.sh \
run-readelf-const-values.sh testfile-const-values.debug.bz2 \
run-addrcfi.sh run-dwarfcfi.sh \
testfile11-debugframe.bz2 testfile12-debugframe.bz2 \
@@ -289,12 +311,15 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
testfile-dwzstr.bz2 testfile-dwzstr.multi.bz2 \
run-readelf-addr.sh run-readelf-str.sh \
run-readelf-types.sh \
+ run-readelf-frames.sh \
run-readelf-n.sh \
testfile-gnu-property-note.bz2 testfile-gnu-property-note.o.bz2 \
testfile_gnu_props.32le.o.bz2 \
testfile_gnu_props.64le.o.bz2 \
testfile_gnu_props.32be.o.bz2 \
testfile_gnu_props.64be.o.bz2 \
+ testfile-gnu-property-note-aarch64.bz2 \
+ run-retain.sh testfile-retain.o.bz2 \
run-allfcts-multi.sh \
test-offset-loop.bz2 test-offset-loop.alt.bz2 \
run-prelink-addr-test.sh \
@@ -335,7 +360,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
run-macro-test.sh testfile-macinfo.bz2 testfile-macros.bz2 \
run-elf_cntl_gelf_getshdr.sh \
run-test-archive64.sh testarchive64.a.bz2 \
- testfile60.bz2 testfile61.bz2 \
+ testfile61.bz2 \
run-readelf-vmcoreinfo.sh testfile62.bz2 \
run-readelf-mixed-corenote.sh testfile63.bz2 testfile64.bz2 \
testfile65.bz2 testfile67.bz2 testfile68.bz2 \
@@ -453,6 +478,12 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
debuginfod-rpms/fedora30/hello2-debugsource-1.0-2.x86_64.rpm \
debuginfod-rpms/fedora30/hello2-two-1.0-2.x86_64.rpm \
debuginfod-rpms/fedora30/hello2-two-debuginfo-1.0-2.x86_64.rpm \
+ debuginfod-rpms/fedora31/hello3-1.0-2.src.rpm \
+ debuginfod-rpms/fedora31/hello3-1.0-2.x86_64.rpm \
+ debuginfod-rpms/fedora31/hello3-debuginfo-1.0-2.x86_64.rpm \
+ debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm \
+ debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm \
+ debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm \
debuginfod-rpms/hello2.spec. \
debuginfod-rpms/rhel6/hello2-1.0-2.i686.rpm \
debuginfod-rpms/rhel6/hello2-1.0-2.src.rpm \
@@ -461,8 +492,22 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
debuginfod-rpms/rhel7/hello2-1.0-2.src.rpm \
debuginfod-rpms/rhel7/hello2-1.0-2.x86_64.rpm \
debuginfod-rpms/rhel7/hello2-debuginfo-1.0-2.x86_64.rpm \
- debuginfod-rpms/rhel7/hello2-two-1.0-2.x86_64.rpm
-
+ debuginfod-rpms/rhel7/hello2-two-1.0-2.x86_64.rpm \
+ debuginfod-rpms/rhel7/hello2-two-1.0-2.x86_64.rpm \
+ debuginfod-debs/hithere-dbgsym_1.0-1_amd64.ddeb \
+ debuginfod-debs/hithere_1.0-1.debian.tar.xz \
+ debuginfod-debs/hithere_1.0-1.dsc \
+ debuginfod-debs/hithere_1.0-1_amd64.deb \
+ debuginfod-debs/hithere_1.0.orig.tar.gz \
+ debuginfod-tars/hello-1-1-x86_64.pkg.tar.xz \
+ debuginfod-tars/hello-debug-1-1-x86_64.pkg.tar.bz2 \
+ debuginfod-tars/pacman-sources/PKGBUILD \
+ debuginfod-tars/pacman-sources/README.md \
+ debuginfod-tars/pacman-sources/hello.c \
+ run-pt_gnu_prop-tests.sh \
+ testfile_pt_gnu_prop.bz2 testfile_pt_gnu_prop32.bz2 \
+ run-getphdrnum.sh testfile-phdrs.elf.bz2 \
+ run-test-includes.sh
if USE_VALGRIND
@@ -481,21 +526,21 @@ installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir); \
export abs_top_builddir; \
export libdir; export bindir; \
export LC_ALL; export LANG; export VALGRIND_CMD; \
- NM=$(NM); export NM;
+ unset DEBUGINFOD_URLS; \
+ NM=$(NM); export NM; \
+ CC=$(CC); export CC;
installed_LOG_COMPILER = $(abs_srcdir)/test-wrapper.sh \
installed $(tests_rpath) \
'$(program_transform_name)'
-if STANDALONE
-TESTS_ENVIRONMENT = $(installed_TESTS_ENVIRONMENT)
-LOG_COMPILER = $(installed_LOG_COMPILER)
-else !STANDALONE
TESTS_ENVIRONMENT = LC_ALL=C; LANG=C; VALGRIND_CMD=$(valgrind_cmd); \
abs_srcdir=$(abs_srcdir); abs_builddir=$(abs_builddir); \
abs_top_builddir=$(abs_top_builddir); \
export abs_srcdir; export abs_builddir; \
export abs_top_builddir; \
export LC_ALL; export LANG; export VALGRIND_CMD; \
- NM=$(NM); export NM;
+ unset DEBUGINFOD_URLS; \
+ NM=$(NM); export NM; \
+ CC=$(CC); export CC;
LOG_COMPILER = $(abs_srcdir)/test-wrapper.sh \
$(abs_top_builddir)/libdw:$(abs_top_builddir)/backends:$(abs_top_builddir)/libelf:$(abs_top_builddir)/libasm:$(abs_top_builddir)/debuginfod
@@ -503,14 +548,7 @@ installcheck-local:
$(MAKE) $(AM_MAKEFLAGS) \
TESTS_ENVIRONMENT="$(installed_TESTS_ENVIRONMENT)" \
LOG_COMPILER="$(installed_LOG_COMPILER)" check-TESTS
-endif !STANDALONE
-if STANDALONE
-libdw = -ldw
-libelf = -lelf
-libasm = -lasm
-libebl = -lebl
-else !STANDALONE
if BUILD_STATIC
libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl -lpthread
libelf = ../libelf/libelf.a -lz
@@ -522,7 +560,6 @@ libasm = ../libasm/libasm.so
endif
libebl = ../libebl/libebl.a ../backends/libebl_backends.a ../libcpu/libcpu.a
libeu = ../lib/libeu.a
-endif !STANDALONE
arextract_LDADD = $(libelf)
arsymtest_LDADD = $(libelf)
@@ -532,6 +569,7 @@ scnnames_LDADD = $(libelf)
sectiondump_LDADD = $(libelf)
showptable_LDADD = $(libelf)
hash_LDADD = $(libelf)
+test_nlist_CFLAGS =-g -O0
test_nlist_LDADD = $(libelf)
msg_tst_LDADD = $(libelf)
newscn_LDADD = $(libelf)
@@ -589,6 +627,7 @@ test_elf_cntl_gelf_getshdr_LDADD = $(libelf)
dwflsyms_LDADD = $(libdw) $(libelf) $(argp_LDADD)
dwfllines_LDADD = $(libdw) $(libelf) $(argp_LDADD)
dwfl_report_elf_align_LDADD = $(libdw)
+dwfl_report_segment_contiguous_LDADD = $(libdw) $(libebl) $(libelf)
varlocs_LDADD = $(libdw) $(libelf) $(argp_LDADD)
backtrace_LDADD = $(libdw) $(libelf) $(argp_LDADD)
# backtrace-child-biarch also uses those *_CFLAGS and *_LDLAGS variables:
@@ -637,6 +676,9 @@ debuginfod_build_id_find_LDADD = $(libelf) $(libdw)
xlate_notes_LDADD = $(libelf)
elfrdwrnop_LDADD = $(libelf)
dwelf_elf_e_machine_string_LDADD = $(libelf) $(libdw)
+getphdrnum_LDADD = $(libelf) $(libdw)
+leb128_LDADD = $(libelf) $(libdw)
+read_unaligned_LDADD = $(libelf) $(libdw)
# We want to test the libelf header against the system elf.h header.
# Don't include any -I CPPFLAGS. Except when we install our own elf.h.
diff --git a/tests/addrcfi.c b/tests/addrcfi.c
index 589b8513..2b7d7bd0 100644
--- a/tests/addrcfi.c
+++ b/tests/addrcfi.c
@@ -92,7 +92,7 @@ print_register (void *arg,
printf ("\t%s reg%u (%s%s): ", setname, regno, prefix, regname);
- Dwarf_Op ops_mem[2];
+ Dwarf_Op ops_mem[3];
Dwarf_Op *ops;
size_t nops;
int result = dwarf_frame_register (stuff->frame, regno, ops_mem, &ops, &nops);
diff --git a/tests/alldts.c b/tests/alldts.c
index 28b3063c..3e9f9fe6 100644
--- a/tests/alldts.c
+++ b/tests/alldts.c
@@ -32,6 +32,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
int
@@ -68,7 +69,7 @@ main (void)
(void) __fsetlocking (stdout, FSETLOCKING_BYCALLER);
/* Open the file. */
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %m\n", fname);
diff --git a/tests/arextract.c b/tests/arextract.c
index 2c4dc758..936d7f55 100644
--- a/tests/arextract.c
+++ b/tests/arextract.c
@@ -95,7 +95,7 @@ Failed to get base address for the archive element: %s\n",
}
/* Open the output file. */
- outfd = open (argv[3], O_CREAT | O_TRUNC | O_RDWR, 0666);
+ outfd = open (argv[3], O_CREAT | O_TRUNC | O_RDWR, DEFFILEMODE);
if (outfd == -1)
{
printf ("cannot open output file: %m");
diff --git a/tests/asm-tst1.c b/tests/asm-tst1.c
index 9afc676b..d03a4361 100644
--- a/tests/asm-tst1.c
+++ b/tests/asm-tst1.c
@@ -21,6 +21,7 @@
#include <fcntl.h>
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <string.h>
diff --git a/tests/asm-tst2.c b/tests/asm-tst2.c
index 2556d0c4..e65a9d2f 100644
--- a/tests/asm-tst2.c
+++ b/tests/asm-tst2.c
@@ -21,6 +21,7 @@
#include <fcntl.h>
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <string.h>
diff --git a/tests/asm-tst3.c b/tests/asm-tst3.c
index e52cfbe1..e45fa16a 100644
--- a/tests/asm-tst3.c
+++ b/tests/asm-tst3.c
@@ -21,6 +21,7 @@
#include <fcntl.h>
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <string.h>
diff --git a/tests/asm-tst4.c b/tests/asm-tst4.c
index 52e9e20b..1a05bfcc 100644
--- a/tests/asm-tst4.c
+++ b/tests/asm-tst4.c
@@ -21,6 +21,7 @@
#include <fcntl.h>
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/tests/asm-tst5.c b/tests/asm-tst5.c
index 5a29b01c..256873f0 100644
--- a/tests/asm-tst5.c
+++ b/tests/asm-tst5.c
@@ -21,6 +21,7 @@
#include <fcntl.h>
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/tests/asm-tst6.c b/tests/asm-tst6.c
index bd9b362b..4a665ed0 100644
--- a/tests/asm-tst6.c
+++ b/tests/asm-tst6.c
@@ -20,6 +20,7 @@
#endif
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/tests/asm-tst7.c b/tests/asm-tst7.c
index 00cb2bfe..87c21485 100644
--- a/tests/asm-tst7.c
+++ b/tests/asm-tst7.c
@@ -22,6 +22,7 @@
#include <fcntl.h>
#include <inttypes.h>
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <unistd.h>
diff --git a/tests/asm-tst8.c b/tests/asm-tst8.c
index 4fb0d998..7dbac10f 100644
--- a/tests/asm-tst8.c
+++ b/tests/asm-tst8.c
@@ -22,6 +22,7 @@
#include <fcntl.h>
#include <inttypes.h>
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <unistd.h>
diff --git a/tests/asm-tst9.c b/tests/asm-tst9.c
index b6d0e431..6bec3f6e 100644
--- a/tests/asm-tst9.c
+++ b/tests/asm-tst9.c
@@ -22,6 +22,7 @@
#include <fcntl.h>
#include <inttypes.h>
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <string.h>
diff --git a/tests/backtrace-data.c b/tests/backtrace-data.c
index 907b4780..c81880d9 100644
--- a/tests/backtrace-data.c
+++ b/tests/backtrace-data.c
@@ -280,6 +280,7 @@ main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
{
case -1:
assert (0);
+ break;
case 0:;
long l = ptrace (PTRACE_TRACEME, 0, NULL, NULL);
assert (l == 0);
diff --git a/tests/configure.ac b/tests/configure.ac
deleted file mode 100644
index ed51920a..00000000
--- a/tests/configure.ac
+++ /dev/null
@@ -1,58 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-dnl Configure input file for elfutils test suite. -*-autoconf-*-
-dnl
-dnl Copyright (C) 2005 Red Hat, Inc.
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation, version 2.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-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, write to the Free Software Foundation,
-dnl Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
-dnl
-AC_INIT([elfutils tests],[0.117],
- [http://bugzilla.redhat.com/bugzilla/],
- [elfutils-tests])
-
-AC_COPYRIGHT([Copyright (C) 2005 Red Hat, Inc.])
-AC_PREREQ(2.59) dnl Minimum Autoconf version required.
-
-AM_INIT_AUTOMAKE([foreign 1.7])
-
-AC_CONFIG_SRCDIR([allfcts.c])
-AC_CONFIG_FILES([Makefile])
-AC_CONFIG_HEADERS([config.h])
-
-AC_PROG_CC
-
-AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -std=gnu99"
-AC_COMPILE_IFELSE([dnl
-int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }],
- ac_cv_c99=yes, ac_cv_c99=no)
-CFLAGS="$old_CFLAGS"])
-AS_IF([test "x$ac_cv_c99" != xyes],
- AC_MSG_ERROR([gcc with C99 support required]))
-
-AC_CHECK_HEADERS([libelf.h elfutils/libdw.h],,
-[AC_MSG_ERROR([elfutils-devel package not installed])])
-
-AC_CHECK_LIB([asm], [asm_begin], [have_libasm=yes], [have_libasm=no])
-AM_CONDITIONAL(HAVE_LIBASM, [test $have_libasm = yes])
-
-AM_CONDITIONAL(STANDALONE, true)
-AM_CONDITIONAL(BUILD_STATIC, false)
-AM_CONDITIONAL(TESTS_RPATH, false)
-AM_CONDITIONAL(GCOV, false)
-
-dnl Text of the config.h file.
-AH_BOTTOM([#define ELFUTILS_HEADER(name) <elfutils/lib##name.h>])
-
-AC_OUTPUT
diff --git a/tests/coverage.sh b/tests/coverage.sh
index 01d292cc..448d43ba 100755
--- a/tests/coverage.sh
+++ b/tests/coverage.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
if [ "x$1" = "x-v" ]; then
verbose=yes
diff --git a/tests/debuginfod-debs/hithere-dbgsym_1.0-1_amd64.ddeb b/tests/debuginfod-debs/hithere-dbgsym_1.0-1_amd64.ddeb
new file mode 100644
index 00000000..f9879eb6
--- /dev/null
+++ b/tests/debuginfod-debs/hithere-dbgsym_1.0-1_amd64.ddeb
Binary files differ
diff --git a/tests/debuginfod-debs/hithere_1.0-1.debian.tar.xz b/tests/debuginfod-debs/hithere_1.0-1.debian.tar.xz
new file mode 100644
index 00000000..9f0ce684
--- /dev/null
+++ b/tests/debuginfod-debs/hithere_1.0-1.debian.tar.xz
Binary files differ
diff --git a/tests/debuginfod-debs/hithere_1.0-1.dsc b/tests/debuginfod-debs/hithere_1.0-1.dsc
new file mode 100644
index 00000000..d5f72b90
--- /dev/null
+++ b/tests/debuginfod-debs/hithere_1.0-1.dsc
@@ -0,0 +1,19 @@
+Format: 3.0 (quilt)
+Source: hithere
+Binary: hithere
+Architecture: any
+Version: 1.0-1
+Maintainer: Lars Wirzenius <liw@liw.fi>
+Standards-Version: 3.9.2
+Build-Depends: debhelper (>= 9)
+Package-List:
+ hithere deb misc optional arch=any
+Checksums-Sha1:
+ 2dcd65497a12a3ea03223f52186447bd5733dce9 617 hithere_1.0.orig.tar.gz
+ 0b71331ef1c714c5bac67878551864b7356c56ce 764 hithere_1.0-1.debian.tar.xz
+Checksums-Sha256:
+ 63062b582a712f169f37a5f52a41aa3ca9a405aafb8aa837bc906fa413b62cdb 617 hithere_1.0.orig.tar.gz
+ 9afa907e360e626639ccb86b86e799429bea27149034aec5d5c7e500971d651e 764 hithere_1.0-1.debian.tar.xz
+Files:
+ 5b2830fa1fcd44ce489774771625526e 617 hithere_1.0.orig.tar.gz
+ 70106164d9397c70c2c1a4594e9897e4 764 hithere_1.0-1.debian.tar.xz
diff --git a/tests/debuginfod-debs/hithere_1.0-1_amd64.deb b/tests/debuginfod-debs/hithere_1.0-1_amd64.deb
new file mode 100644
index 00000000..11d1e958
--- /dev/null
+++ b/tests/debuginfod-debs/hithere_1.0-1_amd64.deb
Binary files differ
diff --git a/tests/debuginfod-debs/hithere_1.0.orig.tar.gz b/tests/debuginfod-debs/hithere_1.0.orig.tar.gz
new file mode 100644
index 00000000..23abea70
--- /dev/null
+++ b/tests/debuginfod-debs/hithere_1.0.orig.tar.gz
Binary files differ
diff --git a/tests/debuginfod-rpms/fedora31/hello3-1.0-2.src.rpm b/tests/debuginfod-rpms/fedora31/hello3-1.0-2.src.rpm
new file mode 100644
index 00000000..d0b34540
--- /dev/null
+++ b/tests/debuginfod-rpms/fedora31/hello3-1.0-2.src.rpm
Binary files differ
diff --git a/tests/debuginfod-rpms/fedora31/hello3-1.0-2.x86_64.rpm b/tests/debuginfod-rpms/fedora31/hello3-1.0-2.x86_64.rpm
new file mode 100644
index 00000000..8b2fe9bb
--- /dev/null
+++ b/tests/debuginfod-rpms/fedora31/hello3-1.0-2.x86_64.rpm
Binary files differ
diff --git a/tests/debuginfod-rpms/fedora31/hello3-debuginfo-1.0-2.x86_64.rpm b/tests/debuginfod-rpms/fedora31/hello3-debuginfo-1.0-2.x86_64.rpm
new file mode 100644
index 00000000..ee479ecb
--- /dev/null
+++ b/tests/debuginfod-rpms/fedora31/hello3-debuginfo-1.0-2.x86_64.rpm
Binary files differ
diff --git a/tests/debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm b/tests/debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm
new file mode 100644
index 00000000..890478e4
--- /dev/null
+++ b/tests/debuginfod-rpms/fedora31/hello3-debugsource-1.0-2.x86_64.rpm
Binary files differ
diff --git a/tests/debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm b/tests/debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm
new file mode 100644
index 00000000..73fd939d
--- /dev/null
+++ b/tests/debuginfod-rpms/fedora31/hello3-two-1.0-2.x86_64.rpm
Binary files differ
diff --git a/tests/debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm b/tests/debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm
new file mode 100644
index 00000000..0cc24073
--- /dev/null
+++ b/tests/debuginfod-rpms/fedora31/hello3-two-debuginfo-1.0-2.x86_64.rpm
Binary files differ
diff --git a/tests/debuginfod-rpms/hello3.spec. b/tests/debuginfod-rpms/hello3.spec.
new file mode 100644
index 00000000..ffb95134
--- /dev/null
+++ b/tests/debuginfod-rpms/hello3.spec.
@@ -0,0 +1,60 @@
+Summary: hello3 -- double hello, world rpm
+Name: hello3
+Version: 1.0
+Release: 2
+Group: Utilities
+License: GPL
+Distribution: RPM ^W Elfutils test suite.
+Vendor: Red Hat Software
+Packager: Red Hat Software <bugs@redhat.com>
+URL: http://www.redhat.com
+BuildRequires: gcc make
+Source0: hello-1.0.tar.gz
+
+%description
+Simple rpm demonstration with an eye to consumption by debuginfod.
+
+%package two
+Summary: hello3two
+License: GPL
+
+%description two
+Dittoish.
+
+%prep
+%setup -q -n hello-1.0
+
+%build
+mkdir foobar
+gcc -g -O1 foobar///./../hello.c -o hello
+gcc -g -O2 -D_FORTIFY_SOURCE=2 foobar///./../hello.c -o hello3
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/usr/local/bin
+cp hello $RPM_BUILD_ROOT/usr/local/bin/
+cp hello3 $RPM_BUILD_ROOT/usr/local/bin/
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root)
+%attr(0751,root,root) /usr/local/bin/hello
+
+%files two
+%defattr(-,root,root)
+%attr(0751,root,root) /usr/local/bin/hello3
+
+%changelog
+* Tue Mar 24 2020 Frank Ch. Eigler <fche@redhat.com>
+- New variant of hello2, with crazy source file paths
+
+* Thu Nov 14 2019 Frank Ch. Eigler <fche@redhat.com>
+- Dropped misc files not relevant to debuginfod testing.
+
+* Wed May 18 2016 Mark Wielaard <mjw@redhat.com>
+- Add hello2 for dwz testing support.
+
+* Tue Oct 20 1998 Jeff Johnson <jbj@redhat.com>
+- create.
diff --git a/tests/debuginfod-tars/hello-1-1-x86_64.pkg.tar.xz b/tests/debuginfod-tars/hello-1-1-x86_64.pkg.tar.xz
new file mode 100644
index 00000000..fd784332
--- /dev/null
+++ b/tests/debuginfod-tars/hello-1-1-x86_64.pkg.tar.xz
Binary files differ
diff --git a/tests/debuginfod-tars/hello-debug-1-1-x86_64.pkg.tar.bz2 b/tests/debuginfod-tars/hello-debug-1-1-x86_64.pkg.tar.bz2
new file mode 100644
index 00000000..8701861f
--- /dev/null
+++ b/tests/debuginfod-tars/hello-debug-1-1-x86_64.pkg.tar.bz2
Binary files differ
diff --git a/tests/debuginfod-tars/pacman-sources/PKGBUILD b/tests/debuginfod-tars/pacman-sources/PKGBUILD
new file mode 100644
index 00000000..0cac1706
--- /dev/null
+++ b/tests/debuginfod-tars/pacman-sources/PKGBUILD
@@ -0,0 +1,19 @@
+pkgname=hello
+pkgver=1
+pkgrel=1
+pkgdesc="Simple hello world program to exercise debuginfod"
+arch=('x86_64')
+source=('hello.c')
+sha256sums=('f85badd2007451bbda4791e7fe820b41be0a424172a567573511688bff975235')
+
+# guarantee that split debug packages are turned on
+options=('strip' 'debug')
+
+build() {
+ # implicit Makefile
+ make hello
+}
+
+package() {
+ install -Dm755 hello "${pkgdir}"/usr/bin/hello
+}
diff --git a/tests/debuginfod-tars/pacman-sources/README.md b/tests/debuginfod-tars/pacman-sources/README.md
new file mode 100644
index 00000000..17f59bcb
--- /dev/null
+++ b/tests/debuginfod-tars/pacman-sources/README.md
@@ -0,0 +1,19 @@
+# Creating sample pacman packages
+
+You will need:
+- an archlinux installation
+- `pacman -S base-devel` for basic build requirements (like debian "build-essential")
+
+Run `makepkg` inside this directory to produce *.pkg.tar.* archives. This may
+be .xz, .zst, .gz etc. depending on the current defaults, see makepkg.conf(5)
+"PKGEXT" for details. The archives will appear in the current directory, or the
+"PKGDEST" defined by makepkg.conf(5).
+
+# Byte-for-byte reproduction
+
+You will need:
+- an archlinux installation
+- `pacman -S devtools` for the clean chroot builder/reproducer
+
+Run `makerepropkg /path/to/hello-debug-1-1-x86_64.pkg.tar.xz` (or whichever the
+archive filename is) inside this directory.
diff --git a/tests/debuginfod-tars/pacman-sources/hello.c b/tests/debuginfod-tars/pacman-sources/hello.c
new file mode 100644
index 00000000..c1ef1554
--- /dev/null
+++ b/tests/debuginfod-tars/pacman-sources/hello.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main() {
+ printf("hello\n");
+ return 0;
+}
diff --git a/tests/dwarf-die-addr-die.c b/tests/dwarf-die-addr-die.c
index 7899988f..24bfbeb7 100644
--- a/tests/dwarf-die-addr-die.c
+++ b/tests/dwarf-die-addr-die.c
@@ -164,7 +164,7 @@ main (int argc, char *argv[])
int fd = open (name, O_RDONLY);
if (fd < 0)
{
- printf ("Cannnot open '%s': %s\n", name, strerror (errno));
+ printf ("Cannot open '%s': %s\n", name, strerror (errno));
return -1;
}
diff --git a/tests/dwfl-bug-fd-leak.c b/tests/dwfl-bug-fd-leak.c
index ee3a916b..7554d6ec 100644
--- a/tests/dwfl-bug-fd-leak.c
+++ b/tests/dwfl-bug-fd-leak.c
@@ -1,4 +1,4 @@
-/* Test program for libdwfl file decriptors leakage.
+/* Test program for libdwfl file descriptors leakage.
Copyright (C) 2007, 2008 Red Hat, Inc.
This file is part of elfutils.
@@ -101,7 +101,14 @@ main (void)
/* Set locale. */
(void) setlocale (LC_ALL, "");
- struct rlimit fd_limit = { .rlim_cur = 32, .rlim_max = 32 };
+ /* Get both the soft and hard limits first. The soft limit is what
+ will be enforced against the process. The hard limit is the max
+ that can be set for the soft limit. We don't want to lower it
+ because we might not be able to (under valgrind). */
+ struct rlimit fd_limit;
+ if (getrlimit (RLIMIT_NOFILE, &fd_limit) < 0)
+ error (2, errno, "getrlimit");
+ fd_limit.rlim_cur = 32;
if (setrlimit (RLIMIT_NOFILE, &fd_limit) < 0)
error (2, errno, "setrlimit");
diff --git a/tests/dwfl-proc-attach.c b/tests/dwfl-proc-attach.c
index 102ba181..d02e9fc0 100644
--- a/tests/dwfl-proc-attach.c
+++ b/tests/dwfl-proc-attach.c
@@ -97,7 +97,26 @@ main (int argc __attribute__ ((unused)),
if (dwfl_getthreads (dwfl, thread_callback, &threads) != DWARF_CB_OK)
error (-1, 0, "dwfl_getthreads failed: %s", dwfl_errmsg (-1));
+ dwfl_end (dwfl);
+
+ pthread_cancel (thread1);
+ pthread_cancel (thread2);
+ pthread_join (thread1, NULL);
+ pthread_join (thread2, NULL);
+
return (threads == 3) ? 0 : -1;
}
+/* HACK. This is a simple workaround for a combination of old glibc
+ and valgrind. libdw will try to dlopen libdebuginfod this causes
+ some unsuppressable memory leak warnings when the process is
+ multi-threaded under valgrind because of some bad backtraces.
+ So simply override dlopen and always return NULL so libdebuginfod
+ (and libcurl) are never loaded. This test doesn't rely on
+ libdebuginfod anyway. */
+void *dlopen (void)
+{
+ return NULL;
+}
+
#endif /* __linux__ */
diff --git a/tests/dwfl-report-segment-contiguous.c b/tests/dwfl-report-segment-contiguous.c
new file mode 100644
index 00000000..61e6bfee
--- /dev/null
+++ b/tests/dwfl-report-segment-contiguous.c
@@ -0,0 +1,82 @@
+/* Test bug in dwfl_report_segment() coalescing.
+ Copyright (C) 2019 Facebook
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include ELFUTILS_HEADER(dwfl)
+
+
+static const Dwfl_Callbacks offline_callbacks =
+ {
+ .find_debuginfo = INTUSE(dwfl_standard_find_debuginfo),
+ .section_address = INTUSE(dwfl_offline_section_address),
+ };
+
+
+int
+main (void)
+{
+ /* We use no threads here which can interfere with handling a stream. */
+ (void) __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+
+ /* Set locale. */
+ (void) setlocale (LC_ALL, "");
+
+ Dwfl *dwfl = dwfl_begin (&offline_callbacks);
+ assert (dwfl != NULL);
+
+ GElf_Phdr phdr1 =
+ {
+ .p_type = PT_LOAD,
+ .p_flags = PF_R,
+ .p_offset = 0xf00,
+ .p_vaddr = 0xf00,
+ .p_filesz = 0x100,
+ .p_memsz = 0x100,
+ .p_align = 4,
+ };
+
+ int ndx = dwfl_report_segment (dwfl, 1, &phdr1, 0, dwfl);
+ assert(ndx == 1);
+
+ ndx = dwfl_addrsegment (dwfl, 0xf00, NULL);
+ assert(ndx == 1);
+
+ GElf_Phdr phdr2 =
+ {
+ .p_type = PT_LOAD,
+ .p_flags = PF_R | PF_W,
+ .p_offset = 0x1000,
+ .p_vaddr = 0x1000,
+ .p_filesz = 0x100,
+ .p_memsz = 0x100,
+ .p_align = 4,
+ };
+ ndx = dwfl_report_segment (dwfl, 2, &phdr2, 0, dwfl);
+ assert(ndx == 2);
+
+ ndx = dwfl_addrsegment (dwfl, 0x1000, NULL);
+ assert(ndx == 1 || ndx == 2);
+
+ dwfl_end (dwfl);
+
+ return 0;
+}
diff --git a/tests/dwflmodtest.c b/tests/dwflmodtest.c
index 9251d158..bec8a07c 100644
--- a/tests/dwflmodtest.c
+++ b/tests/dwflmodtest.c
@@ -204,10 +204,6 @@ print_module (Dwfl_Module *mod __attribute__ ((unused)),
static bool show_functions;
-/* gettext helper macro. */
-#undef N_
-#define N_(Str) Str
-
static const struct argp_option options[] =
{
{ "functions", 'f', NULL, 0, N_("Additionally show function names"), 0 },
diff --git a/tests/ecp.c b/tests/ecp.c
index 1df40a32..44a7bda2 100644
--- a/tests/ecp.c
+++ b/tests/ecp.c
@@ -43,7 +43,7 @@ main (int argc, char *argv[])
error (EXIT_FAILURE, 0, "problems opening '%s' as ELF file: %s",
argv[1], elf_errmsg (-1));
- int outfd = creat (argv[2], 0666);
+ int outfd = creat (argv[2], DEFFILEMODE);
if (outfd == -1)
error (EXIT_FAILURE, errno, "cannot open output file '%s'", argv[2]);
diff --git a/tests/elfputzdata.c b/tests/elfputzdata.c
index 66ab77ba..0d9c020e 100644
--- a/tests/elfputzdata.c
+++ b/tests/elfputzdata.c
@@ -105,14 +105,17 @@ main (int argc, char *argv[])
printf ("Unexpected data size for orig section %zd\n", idx);
return -1;
}
- char *orig_buf = malloc (d->d_size);
- if (orig_size > 0 && orig_buf == NULL)
+ char *orig_buf = NULL;
+ if (orig_size > 0)
{
- printf ("No memory to copy section %zd data\n", idx);
- return -1;
+ orig_buf = malloc (d->d_size);
+ if (orig_buf == NULL)
+ {
+ printf ("No memory to copy section %zd data\n", idx);
+ return -1;
+ }
+ memcpy (orig_buf, d->d_buf, orig_size);
}
- if (orig_size > 0)
- memcpy (orig_buf, d->d_buf, orig_size);
bool forced = false;
if (gnu)
@@ -175,7 +178,8 @@ main (int argc, char *argv[])
}
if (new_size == orig_size
- && memcmp (orig_buf, d->d_buf, orig_size) == 0)
+ && (orig_buf == NULL
+ || memcmp (orig_buf, d->d_buf, orig_size) == 0))
{
printf ("section %zd didn't compress\n", idx);
return -1;
@@ -211,7 +215,8 @@ main (int argc, char *argv[])
return -1;
}
if (newer_size != orig_size
- && memcmp (orig_buf, d->d_buf, orig_size) != 0)
+ && (orig_buf == NULL
+ || memcmp (orig_buf, d->d_buf, orig_size) != 0))
{
printf ("section %zd didn't correctly uncompress\n", idx);
return -1;
diff --git a/tests/elfstrmerge.c b/tests/elfstrmerge.c
index ba0d68df..abbdf3fd 100644
--- a/tests/elfstrmerge.c
+++ b/tests/elfstrmerge.c
@@ -332,7 +332,7 @@ main (int argc, char **argv)
if (unlikely (secndx == 0 || secndx == shdrstrndx || secndx >= shdrnum))
{
/* Don't use fail... too specialized messages. Call release
- outselves and then error. Ignores midx if widx is
+ ourselves and then error. Ignores midx if widx is
zero. */
release ();
if (widx == 0)
@@ -543,7 +543,7 @@ main (int argc, char **argv)
{
new_data_buf (newdata);
/* A section group contains Elf32_Words. The first
- word is a falg value, the rest of the words are
+ word is a flag value, the rest of the words are
indexes of the sections belonging to the group. */
Elf32_Word *group = (Elf32_Word *) data->d_buf;
Elf32_Word *newgroup = (Elf32_Word *) newdata->d_buf;
diff --git a/tests/elfstrtab.c b/tests/elfstrtab.c
index c27d6cfb..5fae37e0 100644
--- a/tests/elfstrtab.c
+++ b/tests/elfstrtab.c
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
#include ELFUTILS_HEADER(elf)
#include <gelf.h>
@@ -134,7 +135,7 @@ check_elf (const char *fname, int class, int use_mmap)
printf ("\nfname: %s\n", fname);
stridx = 0;
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
@@ -280,7 +281,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
/* Read the ELF from disk now. */
- fd = open (fname, O_RDWR, 0666);
+ fd = open (fname, O_RDWR);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
@@ -349,7 +350,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
// And read it in one last time.
- fd = open (fname, O_RDONLY, 0666);
+ fd = open (fname, O_RDONLY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/emptyfile.c b/tests/emptyfile.c
index 6d086246..9124c397 100644
--- a/tests/emptyfile.c
+++ b/tests/emptyfile.c
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
#include ELFUTILS_HEADER(elf)
#include <gelf.h>
@@ -67,7 +68,7 @@ check_elf (const char *fname, int class, int use_mmap)
printf ("\nfname: %s\n", fname);
stridx = 0; // Reset strtab strings index
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
@@ -125,7 +126,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
/* Reread the ELF from disk now. */
- fd = open (fname, O_RDWR, 0666);
+ fd = open (fname, O_RDWR);
if (fd == -1)
{
printf ("cannot (re)open `%s': %s\n", fname, strerror (errno));
@@ -208,7 +209,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
// And read it in one last time.
- fd = open (fname, O_RDONLY, 0666);
+ fd = open (fname, O_RDONLY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/fillfile.c b/tests/fillfile.c
index 915e249d..7f622536 100644
--- a/tests/fillfile.c
+++ b/tests/fillfile.c
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
#include ELFUTILS_HEADER(elf)
#include <gelf.h>
@@ -201,7 +202,7 @@ check_elf (const char *fname, int class, int use_mmap)
printf ("\nfname: %s\n", fname);
stridx = 0; // Reset strtab strings index
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
@@ -266,7 +267,7 @@ check_elf (const char *fname, int class, int use_mmap)
/* Reread the ELF from disk now. */
printf ("Rereading %s\n", fname);
- fd = open (fname, O_RDWR, 0666);
+ fd = open (fname, O_RDWR);
if (fd == -1)
{
printf ("cannot (re)open `%s': %s\n", fname, strerror (errno));
@@ -347,7 +348,7 @@ check_elf (const char *fname, int class, int use_mmap)
// And read it in one last time.
printf ("Rereading %s again\n", fname);
- fd = open (fname, O_RDONLY, 0666);
+ fd = open (fname, O_RDONLY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/getphdrnum.c b/tests/getphdrnum.c
new file mode 100644
index 00000000..07f75db0
--- /dev/null
+++ b/tests/getphdrnum.c
@@ -0,0 +1,48 @@
+#include "config.h"
+
+#include <fcntl.h>
+#include <libelf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+int main (int argc, const char **argv)
+{
+ int fd;
+ Elf *elf;
+ size_t phnum;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "usage: %s FILE\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ fd = open (argv[1], O_RDONLY);
+ if (fd == -1)
+ {
+ perror ("open");
+ return EXIT_FAILURE;
+ }
+ elf_version (EV_CURRENT);
+ elf = elf_begin (fd, ELF_C_READ, NULL);
+ if (!elf)
+ {
+ fprintf (stderr, "elf_begin: %s\n", elf_errmsg (-1));
+ return EXIT_FAILURE;
+ }
+ if (elf_getphdrnum (elf, &phnum))
+ {
+ fprintf(stderr, "elf_getphdrnum: %s\n", elf_errmsg (-1));
+ return EXIT_FAILURE;
+ }
+
+ printf("%zu\n", phnum);
+
+ elf_end (elf);
+ close (fd);
+
+ return EXIT_SUCCESS;
+}
diff --git a/tests/leb128.c b/tests/leb128.c
new file mode 100644
index 00000000..47b57c0d
--- /dev/null
+++ b/tests/leb128.c
@@ -0,0 +1,173 @@
+/* Test program for leb128
+ Copyright (C) 2020 Tom Tromey
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <stddef.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <libdw.h>
+#include "../libdw/libdwP.h"
+#include "../libdw/memory-access.h"
+
+#define OK 0
+#define FAIL 1
+
+static const unsigned char v0[] = { 0x0 };
+static const unsigned char v1[] = { 0x1 };
+static const unsigned char v23[] = { 23 };
+static const unsigned char vm_1[] = { 0x7f };
+static const unsigned char vm_2[] = { 0x7e };
+static const unsigned char s127[] = { 0xff, 0x00 };
+static const unsigned char v128[] = { 0x80, 0x01 };
+static const unsigned char v129[] = { 0x81, 0x01 };
+static const unsigned char vm_127[] = { 0x81, 0x7f };
+static const unsigned char vm_128[] = { 0x80, 0x7f };
+static const unsigned char vm_129[] = { 0xff, 0x7e };
+static const unsigned char vhuge[] =
+ {
+ 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x0
+ };
+static const unsigned char most_positive[] =
+ {
+ 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x3f
+ };
+static const unsigned char most_negative[] =
+ {
+ 0x80, 0x80, 0x80, 0x80, 0x80,
+ 0x80, 0x80, 0x80, 0x40
+ };
+static const unsigned char minus_one[] =
+ {
+ 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x7f
+ };
+static const unsigned char int64_max_m1[] =
+ {
+ 0xfe, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x00
+ };
+static const unsigned char int64_min_p1[] =
+ {
+ 0x81, 0x80, 0x80, 0x80, 0x80,
+ 0x80, 0x80, 0x80, 0x80, 0x7f
+ };
+
+static int
+test_one_sleb (const unsigned char *data, size_t len, int64_t expect)
+{
+ int64_t value;
+ const unsigned char *p;
+
+ p = data;
+ get_sleb128 (value, p, p + len);
+ if (value != expect || p != data + len)
+ return FAIL;
+
+ p = data;
+ get_sleb128_unchecked (value, p);
+ if (value != expect || p != data + len)
+ return FAIL;
+
+ return OK;
+}
+
+static int
+test_sleb (void)
+{
+#define TEST(ARRAY, V) \
+ if (test_one_sleb (ARRAY, sizeof (ARRAY), V) != OK) \
+ return FAIL;
+
+ TEST (v0, 0);
+ TEST (v1, 1);
+ TEST (v23, 23);
+ TEST (vm_1, -1);
+ TEST (vm_2, -2);
+ TEST (s127, 127);
+ TEST (v128, 128);
+ TEST (v129, 129);
+ TEST (vm_127, -127);
+ TEST (vm_128, -128);
+ TEST (vm_129, -129);
+ TEST (vhuge, 9223372036854775807ll);
+ TEST (most_positive, 4611686018427387903ll);
+ TEST (most_negative, -4611686018427387904ll);
+ TEST (minus_one, -1);
+ TEST (int64_max_m1, INT64_MAX - 1);
+ TEST (int64_min_p1, INT64_MIN + 1);
+
+#undef TEST
+
+ return OK;
+}
+
+static int
+test_one_uleb (const unsigned char *data, size_t len, uint64_t expect)
+{
+ uint64_t value;
+ const unsigned char *p;
+
+ p = data;
+ get_uleb128 (value, p, p + len);
+ if (value != expect || p != data + len)
+ return FAIL;
+
+ p = data;
+ get_uleb128_unchecked (value, p);
+ if (value != expect || p != data + len)
+ return FAIL;
+
+ return OK;
+}
+
+static int
+test_uleb (void)
+{
+#define TEST(ARRAY, V) \
+ if (test_one_uleb (ARRAY, sizeof (ARRAY), V) != OK) \
+ return FAIL;
+
+ TEST (v0, 0);
+ TEST (v1, 1);
+ TEST (v23, 23);
+ TEST (vm_1, 127);
+ TEST (vm_2, 126);
+ TEST (s127, 127);
+ TEST (v128, 128);
+ TEST (v129, 129);
+ TEST (vm_127, 16257);
+ TEST (vm_128, 16256);
+ TEST (vm_129, 16255);
+ TEST (vhuge, 9223372036854775807ull);
+ TEST (most_positive, 4611686018427387903ull);
+ TEST (most_negative, 4611686018427387904ull);
+ TEST (minus_one, 9223372036854775807ull);
+ TEST (int64_max_m1, INT64_MAX - 1);
+ TEST (int64_min_p1, INT64_MIN + 1);
+
+#undef TEST
+
+ return OK;
+}
+
+int
+main (void)
+{
+ return test_sleb () || test_uleb ();
+}
diff --git a/tests/newdata.c b/tests/newdata.c
index 9af99564..fcf26acf 100644
--- a/tests/newdata.c
+++ b/tests/newdata.c
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
#include ELFUTILS_HEADER(elf)
#include <gelf.h>
@@ -243,7 +244,7 @@ check_elf (int class, int use_mmap)
printf ("\ncheck_elf: %s\n", fname);
- int fd = open (fname, O_RDWR|O_CREAT|O_TRUNC, 00666);
+ int fd = open (fname, O_RDWR|O_CREAT|O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot create `%s': %s\n", fname, strerror (errno));
diff --git a/tests/read_unaligned.c b/tests/read_unaligned.c
new file mode 100644
index 00000000..15e0c002
--- /dev/null
+++ b/tests/read_unaligned.c
@@ -0,0 +1,564 @@
+/* Test program for read_[type]_unaligned.
+ Copyright (C) 2020, Red Hat Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <assert.h>
+#include <endian.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+
+#include "../libdw/libdwP.h"
+#include "../libdw/memory-access.h"
+
+union u8
+{
+ uint8_t v;
+ unsigned char c[1];
+};
+
+union s8
+{
+ int8_t v;
+ unsigned char c[1];
+};
+
+union u16
+{
+ uint16_t v;
+ unsigned char c[2];
+};
+
+union s16
+{
+ int16_t v;
+ unsigned char c[2];
+};
+
+union u24
+{
+ uint32_t v:24;
+ unsigned char c[3];
+} __attribute__((packed));
+
+union u32
+{
+ uint32_t v;
+ unsigned char c[4];
+};
+
+union s32
+{
+ int32_t v;
+ unsigned char c[4];
+};
+
+union u64
+{
+ uint64_t v;
+ unsigned char c[8];
+};
+
+union s64
+{
+ uint64_t v;
+ unsigned char c[8];
+};
+
+uint8_t u8_nums[] =
+ {
+ 0,
+ 1,
+ UINT8_MAX / 2 - 1,
+ UINT8_MAX / 2,
+ UINT8_MAX / 2 + 1,
+ UINT8_MAX,
+ UINT8_MAX -1
+ };
+
+int8_t s8_nums[] =
+ {
+ INT8_MIN,
+ INT8_MIN + 1,
+ -1,
+ 0,
+ 1,
+ INT8_MAX,
+ INT8_MAX - 1
+ };
+
+uint16_t u16_nums[] =
+ {
+ 0,
+ 1,
+ UINT16_MAX / 2 - 1,
+ UINT16_MAX / 2,
+ UINT16_MAX / 2 + 1,
+ UINT16_MAX,
+ UINT16_MAX -1
+ };
+
+int16_t s16_nums[] =
+ {
+ INT16_MIN,
+ INT16_MIN + 1,
+ -1,
+ 0,
+ 1,
+ INT16_MAX,
+ INT16_MAX - 1
+ };
+
+#define UINT24_MAX 0xffffff
+
+uint32_t u24_nums[] =
+ {
+ 0,
+ 1,
+ UINT24_MAX / 2 - 1,
+ UINT24_MAX / 2,
+ UINT24_MAX / 2 + 1,
+ UINT24_MAX,
+ UINT24_MAX -1
+ };
+
+uint32_t u32_nums[] =
+ {
+ 0,
+ 1,
+ UINT32_MAX / 2 - 1,
+ UINT32_MAX / 2,
+ UINT32_MAX / 2 + 1,
+ UINT32_MAX,
+ UINT32_MAX -1
+ };
+
+int32_t s32_nums[] =
+ {
+ INT32_MIN,
+ INT32_MIN + 1,
+ -1,
+ 0,
+ 1,
+ INT32_MAX,
+ INT32_MAX - 1
+ };
+
+uint64_t u64_nums[] =
+ {
+ 0,
+ 1,
+ UINT64_MAX / 2 - 1,
+ UINT64_MAX / 2,
+ UINT64_MAX / 2 + 1,
+ UINT64_MAX,
+ UINT64_MAX -1
+ };
+
+int64_t s64_nums[] =
+ {
+ INT64_MIN,
+ INT64_MIN + 1,
+ -1,
+ 0,
+ 1,
+ INT64_MAX,
+ INT64_MAX - 1
+ };
+
+static unsigned char le_mem[] =
+ {
+ /* u8 */
+ 0x00,
+ 0x01,
+ 0x7e,
+ 0x7f,
+ 0x80,
+ 0xff,
+ 0xfe,
+ /* s8 */
+ 0x80,
+ 0x81,
+ 0xff,
+ 0x00,
+ 0x01,
+ 0x7f,
+ 0x7e,
+ /* u16 */
+ 0x00, 0x00,
+ 0x01, 0x00,
+ 0xfe, 0x7f,
+ 0xff, 0x7f,
+ 0x00, 0x80,
+ 0xff, 0xff,
+ 0xfe, 0xff,
+ /* s16 */
+ 0x00, 0x80,
+ 0x01, 0x80,
+ 0xff, 0xff,
+ 0x00, 0x00,
+ 0x01, 0x00,
+ 0xff, 0x7f,
+ 0xfe, 0x7f,
+ /* u24 */
+ 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00,
+ 0xfe, 0xff, 0x7f,
+ 0xff, 0xff, 0x7f,
+ 0x00, 0x00, 0x80,
+ 0xff, 0xff, 0xff,
+ 0xfe, 0xff, 0xff,
+ /* u32 */
+ 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00,
+ 0xfe, 0xff, 0xff, 0x7f,
+ 0xff, 0xff, 0xff, 0x7f,
+ 0x00, 0x00, 0x00, 0x80,
+ 0xff, 0xff, 0xff, 0xff,
+ 0xfe, 0xff, 0xff, 0xff,
+ /* s32 */
+ 0x00, 0x00, 0x00, 0x80,
+ 0x01, 0x00, 0x00, 0x80,
+ 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0x7f,
+ 0xfe, 0xff, 0xff, 0x7f,
+ /* u64 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* s64 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+ };
+
+static unsigned char be_mem[] =
+ {
+ /* u8 */
+ 0x00,
+ 0x01,
+ 0x7e,
+ 0x7f,
+ 0x80,
+ 0xff,
+ 0xfe,
+ /* s8 */
+ 0x80,
+ 0x81,
+ 0xff,
+ 0x00,
+ 0x01,
+ 0x7f,
+ 0x7e,
+ /* u16 */
+ 0x00, 0x00,
+ 0x00, 0x01,
+ 0x7f, 0xfe,
+ 0x7f, 0xff,
+ 0x80, 0x00,
+ 0xff, 0xff,
+ 0xff, 0xfe,
+ /* s16 */
+ 0x80, 0x00,
+ 0x80, 0x01,
+ 0xff, 0xff,
+ 0x00, 0x00,
+ 0x00, 0x01,
+ 0x7f, 0xff,
+ 0x7f, 0xfe,
+ /* u24 */
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01,
+ 0x7f, 0xff, 0xfe,
+ 0x7f, 0xff, 0xff,
+ 0x80, 0x00, 0x00,
+ 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xfe,
+ /* u32 */
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01,
+ 0x7f, 0xff, 0xff, 0xfe,
+ 0x7f, 0xff, 0xff, 0xff,
+ 0x80, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xfe,
+ /* s32 */
+ 0x80, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x01,
+ 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01,
+ 0x7f, 0xff, 0xff, 0xff,
+ 0x7f, 0xff, 0xff, 0xfe,
+ /* u64 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
+ 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
+ /* s64 */
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
+ };
+
+int
+main (int argc, char **argv __attribute__((unused)))
+{
+ /* No arguments means check, otherwise Write out the memory array. */
+ bool write = false;
+ if (argc > 1)
+ write = true;
+
+ bool is_le = (BYTE_ORDER == LITTLE_ENDIAN);
+
+ if (write)
+ {
+ if (is_le)
+ printf ("static unsigned char le_mem[] =\n");
+ else
+ printf ("static unsigned char be_mem[] =\n");
+ printf (" {\n");
+ }
+
+ Dwarf dbg_le = { .other_byte_order = !is_le };
+ Dwarf dbg_be = { .other_byte_order = is_le };
+
+ unsigned char *p_le = le_mem;
+ unsigned char *p_be = be_mem;
+
+ union u8 u8;
+ if (write)
+ printf (" /* u8 */\n");
+ for (size_t i = 0; i < sizeof (u8_nums) / sizeof (u8); i++)
+ {
+ if (write)
+ {
+ u8.v = u8_nums[i];
+ printf (" 0x%02" PRIx8 ",\n", u8.c[0]);
+ }
+ else
+ {
+ uint8_t v = *p_le++;
+ assert (v == u8_nums[i]);
+ v = *p_be++;
+ assert (v == u8_nums[i]);
+ }
+ }
+
+ union s8 s8;
+ if (write)
+ printf (" /* s8 */\n");
+ for (size_t i = 0; i < sizeof (s8_nums) / sizeof (s8); i++)
+ {
+ if (write)
+ {
+ s8.v = s8_nums[i];
+ printf (" 0x%02" PRIx8 ",\n", s8.c[0]);
+ }
+ else
+ {
+ int8_t v = *p_le++;
+ assert (v == s8_nums[i]);
+ v = *p_be++;
+ assert (v == s8_nums[i]);
+ }
+ }
+
+ union u16 u16;
+ if (write)
+ printf (" /* u16 */\n");
+ for (size_t i = 0; i < sizeof (u16_nums) / sizeof (u16); i++)
+ {
+ if (write)
+ {
+ u16.v = u16_nums[i];
+ printf (" 0x%02" PRIx8 ", ", u16.c[0]);
+ printf ("0x%02" PRIx8 ",\n", u16.c[1]);
+ }
+ else
+ {
+ uint16_t v = read_2ubyte_unaligned_inc (&dbg_le, p_le);
+ assert (v == u16_nums[i]);
+ v = read_2ubyte_unaligned_inc (&dbg_be, p_be);
+ assert (v == u16_nums[i]);
+ }
+ }
+
+ union s16 s16;
+ if (write)
+ printf (" /* s16 */\n");
+ for (size_t i = 0; i < sizeof (s16_nums) / sizeof (s16); i++)
+ {
+ if (write)
+ {
+ s16.v = s16_nums[i];
+ printf (" 0x%02" PRIx8 ", ", s16.c[0]);
+ printf ("0x%02" PRIx8 ",\n", s16.c[1]);
+ }
+ else
+ {
+ int16_t v = read_2sbyte_unaligned_inc (&dbg_le, p_le);
+ assert (v == s16_nums[i]);
+ v = read_2sbyte_unaligned_inc (&dbg_be, p_be);
+ assert (v == s16_nums[i]);
+ }
+ }
+
+ union u24 u24;
+ if (write)
+ printf (" /* u24 */\n");
+ for (size_t i = 0; i < sizeof (u24_nums) / sizeof (uint32_t); i++)
+ {
+ if (write)
+ {
+ u24.v = u24_nums[i];
+ printf (" 0x%02" PRIx8 ", ", u24.c[0]);
+ printf ("0x%02" PRIx8 ", ", u24.c[1]);
+ printf ("0x%02" PRIx8 ",\n", u24.c[2]);
+ }
+ else
+ {
+ uint32_t v = read_3ubyte_unaligned_inc (&dbg_le, p_le);
+ assert (v == u24_nums[i]);
+ v = read_3ubyte_unaligned_inc (&dbg_be, p_be);
+ assert (v == u24_nums[i]);
+ }
+ }
+
+ union u32 u32;
+ if (write)
+ printf (" /* u32 */\n");
+ for (size_t i = 0; i < sizeof (u32_nums) / sizeof (u32); i++)
+ {
+ if (write)
+ {
+ u32.v = u32_nums[i];
+ printf (" 0x%02" PRIx8 ", ", u32.c[0]);
+ printf ("0x%02" PRIx8 ", ", u32.c[1]);
+ printf ("0x%02" PRIx8 ", ", u32.c[2]);
+ printf ("0x%02" PRIx8 ",\n", u32.c[3]);
+ }
+ else
+ {
+ uint32_t v = read_4ubyte_unaligned_inc (&dbg_le, p_le);
+ assert (v == u32_nums[i]);
+ v = read_4ubyte_unaligned_inc (&dbg_be, p_be);
+ assert (v == u32_nums[i]);
+ }
+ }
+
+ union s32 s32;
+ if (write)
+ printf (" /* s32 */\n");
+ for (size_t i = 0; i < sizeof (s32_nums) / sizeof (s32); i++)
+ {
+ if (write)
+ {
+ s32.v = s32_nums[i];
+ printf (" 0x%02" PRIx8 ", ", s32.c[0]);
+ printf ("0x%02" PRIx8 ", ", s32.c[1]);
+ printf ("0x%02" PRIx8 ", ", s32.c[2]);
+ printf ("0x%02" PRIx8 ",\n", s32.c[3]);
+ }
+ else
+ {
+ int32_t v = read_4sbyte_unaligned_inc (&dbg_le, p_le);
+ assert (v == s32_nums[i]);
+ v = read_4sbyte_unaligned_inc (&dbg_be, p_be);
+ assert (v == s32_nums[i]);
+ }
+ }
+
+ union u64 u64;
+ if (write)
+ printf (" /* u64 */\n");
+ for (size_t i = 0; i < sizeof (u64_nums) / sizeof (u64); i++)
+ {
+ if (write)
+ {
+ u64.v = u64_nums[i];
+ printf (" 0x%02" PRIx8 ", ", u64.c[0]);
+ printf ("0x%02" PRIx8 ", ", u64.c[1]);
+ printf ("0x%02" PRIx8 ", ", u64.c[2]);
+ printf ("0x%02" PRIx8 ", ", u64.c[3]);
+ printf ("0x%02" PRIx8 ", ", u64.c[4]);
+ printf ("0x%02" PRIx8 ", ", u64.c[5]);
+ printf ("0x%02" PRIx8 ", ", u64.c[6]);
+ printf ("0x%02" PRIx8 ",\n", u64.c[7]);
+ }
+ else
+ {
+ uint64_t v = read_8ubyte_unaligned_inc (&dbg_le, p_le);
+ assert (v == u64_nums[i]);
+ v = read_8ubyte_unaligned_inc (&dbg_be, p_be);
+ assert (v == u64_nums[i]);
+ }
+ }
+
+ union s64 s64;
+ if (write)
+ printf (" /* s64 */\n");
+ for (size_t i = 0; i < sizeof (s64_nums) / sizeof (s64); i++)
+ {
+ if (write)
+ {
+ s64.v = s64_nums[i];
+ printf (" 0x%02" PRIx8 ", ", s64.c[0]);
+ printf ("0x%02" PRIx8 ", ", s64.c[1]);
+ printf ("0x%02" PRIx8 ", ", s64.c[2]);
+ printf ("0x%02" PRIx8 ", ", s64.c[3]);
+ printf ("0x%02" PRIx8 ", ", s64.c[4]);
+ printf ("0x%02" PRIx8 ", ", s64.c[5]);
+ printf ("0x%02" PRIx8 ", ", s64.c[6]);
+ printf ("0x%02" PRIx8 ",\n", s64.c[7]);
+ }
+ else
+ {
+ int64_t v = read_8sbyte_unaligned_inc (&dbg_le, p_le);
+ assert (v == s64_nums[i]);
+ v = read_8sbyte_unaligned_inc (&dbg_be, p_be);
+ assert (v == s64_nums[i]);
+ }
+ }
+
+ if (write)
+ printf (" };\n");
+ else
+ {
+ assert (p_le == le_mem + sizeof (le_mem));
+ assert (p_be == be_mem + sizeof (be_mem));
+ }
+
+ return 0;
+}
diff --git a/tests/run-allfcts.sh b/tests/run-allfcts.sh
index 6eaf13c8..9c0a55d8 100755
--- a/tests/run-allfcts.sh
+++ b/tests/run-allfcts.sh
@@ -91,4 +91,83 @@ testrun_compare ${abs_builddir}/allfcts testfile_nested_funcs testfile_class_fun
/home/mark/src/tests/nested/class_func.cxx:13:main
EOF
+# = testfile-lto.h =
+# struct t
+# {
+# int *p;
+# int c;
+# };
+#
+# extern int foo (int i, struct t *t);
+
+# = testfile-lto-func.c =
+# #include "testfile-lto.h"
+#
+# int
+# foo (int i, struct t *t)
+# {
+# int j, res = 0;
+# for (j = 0; j < i && j < t->c; j++)
+# res += t->p[j];
+#
+# return res;
+# }
+
+# = testfile-lto-main.c =
+# #include "testfile-lto.h"
+#
+# static struct t g;
+#
+# int
+# main (int argc, char **argv)
+# {
+# int i;
+# int j[argc];
+# g.c = argc;
+# g.p = j;
+# for (i = 0; i < argc; i++)
+# j[i] = (int) argv[i][0];
+# return foo (3, &g);
+# }
+
+# Using gcc (GCC) 10.0.1 20200430 (Red Hat 10.0.1-0.13)
+# gcc -g -O2 -flto -c testfile-lto-func.c
+# gcc -g -O2 -flto -c testfile-lto-main.c
+# gcc -g -O2 -flto -o testfile-lto-gcc10 testfile-lto-func.o testfile-lto-main.o
+
+testfiles testfile-lto-gcc10
+
+testrun_compare ${abs_builddir}/allfcts testfile-lto-gcc10 <<\EOF
+/home/mark/src/tests/testfile-lto-main.c:6:main
+/home/mark/src/tests/testfile-lto-func.c:4:foo
+/home/mark/src/tests/testfile-lto-main.c:6:main
+EOF
+
+# Using gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)
+# gcc -g -O2 -flto -c testfile-lto-func.c
+# gcc -g -O2 -flto -c testfile-lto-main.c
+# gcc -g -O2 -flto -o testfile-lto-gcc8 testfile-lto-func.o testfile-lto-main.o
+
+testfiles testfile-lto-gcc8
+
+testrun_compare ${abs_builddir}/allfcts testfile-lto-gcc8 <<\EOF
+/home/mark/src/tests/testfile-lto-func.c:4:foo
+/home/mark/src/tests/testfile-lto-main.c:6:main
+/home/mark/src/tests/testfile-lto-main.c:6:main
+/home/mark/src/tests/testfile-lto-func.c:4:foo
+EOF
+
+# gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2)
+# gcc -g -O2 -flto -c testfile-lto-func.c
+# gcc -g -O2 -flto -c testfile-lto-main.c
+# gcc -g -O2 -flto -o testfile-lto-gcc9 testfile-lto-func.o testfile-lto-main.o
+
+testfiles testfile-lto-gcc9
+
+testrun_compare ${abs_builddir}/allfcts testfile-lto-gcc9 <<\EOF
+/home/mark/src/tests/testfile-lto-main.c:6:main
+/home/mark/src/tests/testfile-lto-func.c:4:foo
+/home/mark/src/tests/testfile-lto-main.c:6:main
+EOF
+
exit 0
diff --git a/tests/run-allregs.sh b/tests/run-allregs.sh
index 1422bd67..87b16c95 100755
--- a/tests/run-allregs.sh
+++ b/tests/run-allregs.sh
@@ -2585,75 +2585,6 @@ FPU registers:
63: $fpcr (fpcr), unsigned 64 bits
EOF
-regs_test testfile60 <<\EOF
-integer registers:
- 0: r0 (r0), signed 64 bits
- 1: r1 (r1), signed 64 bits
- 2: r2 (r2), signed 64 bits
- 3: r3 (r3), signed 64 bits
- 4: r4 (r4), signed 64 bits
- 5: r5 (r5), signed 64 bits
- 6: r6 (r6), signed 64 bits
- 7: r7 (r7), signed 64 bits
- 8: r8 (r8), signed 64 bits
- 9: r9 (r9), signed 64 bits
- 10: r10 (r10), signed 64 bits
- 11: r11 (r11), signed 64 bits
- 12: r12 (r12), signed 64 bits
- 13: r13 (r13), signed 64 bits
- 14: r14 (r14), signed 64 bits
- 15: r15 (r15), signed 64 bits
- 16: r16 (r16), signed 64 bits
- 17: r17 (r17), signed 64 bits
- 18: r18 (r18), signed 64 bits
- 19: r19 (r19), signed 64 bits
- 20: r20 (r20), signed 64 bits
- 21: r21 (r21), signed 64 bits
- 22: r22 (r22), signed 64 bits
- 23: r23 (r23), signed 64 bits
- 24: r24 (r24), signed 64 bits
- 25: r25 (r25), signed 64 bits
- 26: r26 (r26), signed 64 bits
- 27: r27 (r27), signed 64 bits
- 28: r28 (r28), signed 64 bits
- 29: r29 (r29), signed 64 bits
- 30: r30 (r30), signed 64 bits
- 31: r31 (r31), signed 64 bits
- 32: r32 (r32), signed 64 bits
- 33: r33 (r33), signed 64 bits
- 34: r34 (r34), signed 64 bits
- 35: r35 (r35), signed 64 bits
- 36: r36 (r36), signed 64 bits
- 37: r37 (r37), signed 64 bits
- 38: r38 (r38), signed 64 bits
- 39: r39 (r39), signed 64 bits
- 40: r40 (r40), signed 64 bits
- 41: r41 (r41), signed 64 bits
- 42: r42 (r42), signed 64 bits
- 43: r43 (r43), signed 64 bits
- 44: r44 (r44), signed 64 bits
- 45: r45 (r45), signed 64 bits
- 46: r46 (r46), signed 64 bits
- 47: r47 (r47), signed 64 bits
- 48: r48 (r48), signed 64 bits
- 49: r49 (r49), signed 64 bits
- 50: r50 (r50), signed 64 bits
- 51: r51 (r51), signed 64 bits
- 52: r52 (r52), signed 64 bits
- 53: tp (tp), address 64 bits
- 54: sp (sp), address 64 bits
- 55: lr (lr), address 64 bits
- 56: sn (sn), unsigned 64 bits
- 57: idn0 (idn0), unsigned 64 bits
- 58: idn1 (idn1), unsigned 64 bits
- 59: udn0 (udn0), unsigned 64 bits
- 60: udn1 (udn1), unsigned 64 bits
- 61: udn2 (udn2), unsigned 64 bits
- 62: udn3 (udn3), unsigned 64 bits
- 63: zero (zero), unsigned 64 bits
- 64: pc (pc), address 64 bits
-EOF
-
regs_test testfile61 <<\EOF
integer registers:
0: r0 (r0), signed 32 bits
diff --git a/tests/run-ar.sh b/tests/run-ar.sh
index fb9394d5..656f1d1a 100755
--- a/tests/run-ar.sh
+++ b/tests/run-ar.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2017 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-core-aarch64.sh b/tests/run-backtrace-core-aarch64.sh
index a29a6613..41221d36 100755
--- a/tests/run-backtrace-core-aarch64.sh
+++ b/tests/run-backtrace-core-aarch64.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-core-i386.sh b/tests/run-backtrace-core-i386.sh
index 7294ec3d..c497f4aa 100755
--- a/tests/run-backtrace-core-i386.sh
+++ b/tests/run-backtrace-core-i386.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-core-ppc.sh b/tests/run-backtrace-core-ppc.sh
index 555ac352..1a51046c 100755
--- a/tests/run-backtrace-core-ppc.sh
+++ b/tests/run-backtrace-core-ppc.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-core-s390.sh b/tests/run-backtrace-core-s390.sh
index d3b6dc9c..ce3afb93 100755
--- a/tests/run-backtrace-core-s390.sh
+++ b/tests/run-backtrace-core-s390.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-core-s390x.sh b/tests/run-backtrace-core-s390x.sh
index c3e236d4..39450c14 100755
--- a/tests/run-backtrace-core-s390x.sh
+++ b/tests/run-backtrace-core-s390x.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-core-sparc.sh b/tests/run-backtrace-core-sparc.sh
index 60399baa..2f39e745 100755
--- a/tests/run-backtrace-core-sparc.sh
+++ b/tests/run-backtrace-core-sparc.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2015 Oracle, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-core-x32.sh b/tests/run-backtrace-core-x32.sh
index 2ad76bcf..e6144b35 100755
--- a/tests/run-backtrace-core-x32.sh
+++ b/tests/run-backtrace-core-x32.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) H.J. Lu <hjl.tools@gmail.com>, 2015.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-core-x86_64.sh b/tests/run-backtrace-core-x86_64.sh
index d00cd6d6..49248015 100755
--- a/tests/run-backtrace-core-x86_64.sh
+++ b/tests/run-backtrace-core-x86_64.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-data.sh b/tests/run-backtrace-data.sh
index 3062c304..f67a43ef 100755
--- a/tests/run-backtrace-data.sh
+++ b/tests/run-backtrace-data.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-demangle.sh b/tests/run-backtrace-demangle.sh
index 2d253240..403a4852 100755
--- a/tests/run-backtrace-demangle.sh
+++ b/tests/run-backtrace-demangle.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2014, 2015 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-dwarf.sh b/tests/run-backtrace-dwarf.sh
index 8834048a..7ed795d8 100755
--- a/tests/run-backtrace-dwarf.sh
+++ b/tests/run-backtrace-dwarf.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-fp-core-aarch64.sh b/tests/run-backtrace-fp-core-aarch64.sh
index fda88d37..397e3c3a 100755
--- a/tests/run-backtrace-fp-core-aarch64.sh
+++ b/tests/run-backtrace-fp-core-aarch64.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2017 The Qt Company
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-fp-core-i386.sh b/tests/run-backtrace-fp-core-i386.sh
index c58ff532..43f859fe 100755
--- a/tests/run-backtrace-fp-core-i386.sh
+++ b/tests/run-backtrace-fp-core-i386.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2017 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-fp-core-ppc64le.sh b/tests/run-backtrace-fp-core-ppc64le.sh
index 326ca342..345b8dbe 100755
--- a/tests/run-backtrace-fp-core-ppc64le.sh
+++ b/tests/run-backtrace-fp-core-ppc64le.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2017 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-fp-core-x86_64.sh b/tests/run-backtrace-fp-core-x86_64.sh
index 348eb183..12f44c4b 100755
--- a/tests/run-backtrace-fp-core-x86_64.sh
+++ b/tests/run-backtrace-fp-core-x86_64.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2017 The Qt Company
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-native-biarch.sh b/tests/run-backtrace-native-biarch.sh
index 2afe38a5..92869830 100755
--- a/tests/run-backtrace-native-biarch.sh
+++ b/tests/run-backtrace-native-biarch.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013, 2015 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-native-core-biarch.sh b/tests/run-backtrace-native-core-biarch.sh
index 02552ce9..23274257 100755
--- a/tests/run-backtrace-native-core-biarch.sh
+++ b/tests/run-backtrace-native-core-biarch.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013, 2015 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-native-core.sh b/tests/run-backtrace-native-core.sh
index cb025a56..db95895f 100755
--- a/tests/run-backtrace-native-core.sh
+++ b/tests/run-backtrace-native-core.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-backtrace-native.sh b/tests/run-backtrace-native.sh
index ddae345d..823c4117 100755
--- a/tests/run-backtrace-native.sh
+++ b/tests/run-backtrace-native.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2013 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
index 0ade03b7..6340f60e 100755
--- a/tests/run-debuginfod-find.sh
+++ b/tests/run-debuginfod-find.sh
@@ -1,6 +1,6 @@
-#!/bin/bash
+#!/usr/bin/env bash
#
-# Copyright (C) 2019 Red Hat, Inc.
+# Copyright (C) 2019-2020 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
@@ -18,19 +18,31 @@
. $srcdir/test-subr.sh # includes set -e
+type curl 2>/dev/null || (echo "need curl"; exit 77)
+type rpm2cpio 2>/dev/null || (echo "need rpm2cpio"; exit 77)
+type bzcat 2>/dev/null || (echo "need bzcat"; exit 77)
+bsdtar --version | grep -q zstd && zstd=true || zstd=false
+echo "zstd=$zstd bsdtar=`bsdtar --version`"
+
+# for test case debugging, uncomment:
+#set -x
+#VERBOSE=-vvvv
+
DB=${PWD}/.debuginfod_tmp.sqlite
tempfiles $DB
export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache
PID1=0
PID2=0
+PID3=0
cleanup()
{
if [ $PID1 -ne 0 ]; then kill $PID1; wait $PID1; fi
if [ $PID2 -ne 0 ]; then kill $PID2; wait $PID2; fi
+ if [ $PID3 -ne 0 ]; then kill $PID3; wait $PID3; fi
- rm -rf F R L ${PWD}/.client_cache*
+ rm -rf F R D L Z ${PWD}/foobar ${PWD}/mocktree ${PWD}/.client_cache* ${PWD}/tmp*
exit_cleanup
}
@@ -52,8 +64,8 @@ done
# So we gather the LD_LIBRARY_PATH with this cunning trick:
ldpath=`testrun sh -c 'echo $LD_LIBRARY_PATH'`
-mkdir F R L
-# not tempfiles F R L - they are directories which we clean up manually
+mkdir F R L D Z
+# not tempfiles F R L D Z - they are directories which we clean up manually
ln -s ${abs_builddir}/dwfllines L/foo # any program not used elsewhere in this test
wait_ready()
@@ -77,13 +89,20 @@ wait_ready()
done;
if [ $timeout -eq 0 ]; then
- echo "metric $what never changed to $value on port $port"
+ echo "metric $what never changed to $value on port $port"
+ curl -s http://127.0.0.1:$port/metrics
exit 1;
fi
}
-env LD_LIBRARY_PATH=$ldpath DEBUGINFOD_URLS= ${abs_builddir}/../debuginfod/debuginfod -F -R -d $DB -p $PORT1 -t0 -g0 R F L &
+# create a bogus .rpm file to evoke a metric-visible error
+# Use a cyclic symlink instead of chmod 000 to make sure even root
+# would see an error (running the testsuite under root is NOT encouraged).
+ln -s R/nothing.rpm R/nothing.rpm
+
+env LD_LIBRARY_PATH=$ldpath DEBUGINFOD_URLS= ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -F -R -d $DB -p $PORT1 -t0 -g0 --fdcache-fds 1 --fdcache-mbs 2 --fdcache-mintmp 0 -Z .tar.xz -Z .tar.bz2=bzcat -v R F Z L > vlog4 2>&1 &
PID1=$!
+tempfiles vlog4
# Server must become ready
wait_ready $PORT1 'ready' 1
export DEBUGINFOD_URLS=http://127.0.0.1:$PORT1/ # or without trailing /
@@ -101,16 +120,21 @@ export DEBUGINFOD_TIMEOUT=10
# cannot find it without debuginfod.
echo "int main() { return 0; }" > ${PWD}/prog.c
tempfiles prog.c
-gcc -g -o prog ${PWD}/prog.c
- ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+# Create a subdirectory to confound source path names
+mkdir foobar
+gcc -Wl,--build-id -g -o prog ${PWD}/foobar///./../prog.c
+testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
-a prog | grep 'Build ID' | cut -d ' ' -f 7`
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 1
mv prog F
mv prog.debug F
kill -USR1 $PID1
# Wait till both files are in the index.
-wait_ready $PORT1 'thread_work_total{file="F"}' 2
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 2
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
########################################################################
@@ -125,12 +149,62 @@ rm -rf $DEBUGINFOD_CACHE_PATH # clean it from previous tests
filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID`
cmp $filename F/prog.debug
-filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable $BUILDID`
+filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable F/prog`
cmp $filename F/prog
+# raw source filename
+filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $BUILDID ${PWD}/foobar///./../prog.c`
+cmp $filename ${PWD}/prog.c
+
+# and also the canonicalized one
filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $BUILDID ${PWD}/prog.c`
cmp $filename ${PWD}/prog.c
+
+########################################################################
+
+# Test whether the cache default locations are correct
+
+mkdir tmphome
+
+# $HOME/.cache should be created.
+testrun env HOME=$PWD/tmphome XDG_CACHE_HOME= DEBUGINFOD_CACHE_PATH= ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID
+if [ ! -f $PWD/tmphome/.cache/debuginfod_client/$BUILDID/debuginfo ]; then
+ echo "could not find cache in $PWD/tmphome/.cache"
+ exit 1
+fi
+
+# $HOME/.cache should be found.
+testrun env HOME=$PWD/tmphome XDG_CACHE_HOME= DEBUGINFOD_CACHE_PATH= ${abs_top_builddir}/debuginfod/debuginfod-find executable $BUILDID
+if [ ! -f $PWD/tmphome/.cache/debuginfod_client/$BUILDID/executable ]; then
+ echo "could not find cache in $PWD/tmphome/.cache"
+ exit 1
+fi
+
+# $XDG_CACHE_HOME should take priority over $HOME.cache.
+testrun env HOME=$PWD/tmphome XDG_CACHE_HOME=$PWD/tmpxdg DEBUGINFOD_CACHE_PATH= ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID
+if [ ! -f $PWD/tmpxdg/debuginfod_client/$BUILDID/debuginfo ]; then
+ echo "could not find cache in $PWD/tmpxdg/"
+ exit 1
+fi
+
+# A cache at the old default location ($HOME/.debuginfod_client_cache) should take
+# priority over $HOME/.cache, $XDG_CACHE_HOME.
+cp -r $DEBUGINFOD_CACHE_PATH tmphome/.debuginfod_client_cache
+
+# Add a file that doesn't exist in $HOME/.cache, $XDG_CACHE_HOME.
+mkdir tmphome/.debuginfod_client_cache/deadbeef
+echo ELF... > tmphome/.debuginfod_client_cache/deadbeef/debuginfo
+filename=`testrun env HOME=$PWD/tmphome XDG_CACHE_HOME=$PWD/tmpxdg DEBUGINFOD_CACHE_PATH= ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo deadbeef`
+cmp $filename tmphome/.debuginfod_client_cache/deadbeef/debuginfo
+
+# $DEBUGINFO_CACHE_PATH should take priority over all else.
+testrun env HOME=$PWD/tmphome XDG_CACHE_HOME=$PWD/tmpxdg DEBUGINFOD_CACHE_PATH=$PWD/tmpcache ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID
+if [ ! -f $PWD/tmpcache/$BUILDID/debuginfo ]; then
+ echo "could not find cache in $PWD/tmpcache/"
+ exit 1
+fi
+
########################################################################
# Add artifacts to the search paths and test whether debuginfod finds them while already running.
@@ -138,31 +212,46 @@ cmp $filename ${PWD}/prog.c
# Build another, non-stripped binary
echo "int main() { return 0; }" > ${PWD}/prog2.c
tempfiles prog2.c
-gcc -g -o prog2 ${PWD}/prog2.c
+gcc -Wl,--build-id -g -o prog2 ${PWD}/prog2.c
BUILDID2=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
-a prog2 | grep 'Build ID' | cut -d ' ' -f 7`
mv prog2 F
kill -USR1 $PID1
# Now there should be 3 files in the index
-wait_ready $PORT1 'thread_work_total{file="F"}' 3
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 3
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
# Rerun same tests for the prog2 binary
filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find -v debuginfo $BUILDID2 2>vlog`
cmp $filename F/prog2
cat vlog
grep -q Progress vlog
+grep -q Downloaded.from vlog
tempfiles vlog
-filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable $BUILDID2`
+filename=`testrun env DEBUGINFOD_PROGRESS=1 ${abs_top_builddir}/debuginfod/debuginfod-find executable $BUILDID2 2>vlog2`
cmp $filename F/prog2
+cat vlog2
+grep -q 'Downloading.*http' vlog2
+tempfiles vlog2
filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $BUILDID2 ${PWD}/prog2.c`
cmp $filename ${PWD}/prog2.c
-cp -rp ${abs_srcdir}/debuginfod-rpms R
+cp -rvp ${abs_srcdir}/debuginfod-rpms R
+if [ "$zstd" = "false" ]; then # nuke the zstd fedora 31 ones
+ rm -vrf R/debuginfod-rpms/fedora31
+fi
+
+cp -rvp ${abs_srcdir}/debuginfod-tars Z
kill -USR1 $PID1
-# All rpms need to be in the index
-rpms=$(find R -name \*rpm | wc -l)
-wait_ready $PORT1 'scanned_total{source="rpm"}' $rpms
+# All rpms need to be in the index, except the dummy permission-000 one
+rpms=$(find R -name \*rpm | grep -v nothing | wc -l)
+wait_ready $PORT1 'scanned_files_total{source=".rpm archive"}' $rpms
+txz=$(find Z -name \*tar.xz | wc -l)
+wait_ready $PORT1 'scanned_files_total{source=".tar.xz archive"}' $txz
+tb2=$(find Z -name \*tar.bz2 | wc -l)
+wait_ready $PORT1 'scanned_files_total{source=".tar.bz2 archive"}' $tb2
kill -USR1 $PID1 # two hits of SIGUSR1 may be needed to resolve .debug->dwz->srefs
# Expect all source files found in the rpms (they are all called hello.c :)
@@ -171,13 +260,13 @@ kill -USR1 $PID1 # two hits of SIGUSR1 may be needed to resolve .debug->dwz->sr
mkdir extracted
cd extracted
subdir=0;
-newrpms=$(find ../R -name \*\.rpm)
+newrpms=$(find ../R -name \*\.rpm | grep -v nothing)
for i in $newrpms; do
subdir=$[$subdir+1];
mkdir $subdir;
cd $subdir;
ls -lah ../$i
- rpm2cpio ../$i | cpio -id;
+ rpm2cpio ../$i | cpio -ivd;
cd ..;
done
sourcefiles=$(find -name \*\\.debug \
@@ -187,11 +276,11 @@ sourcefiles=$(find -name \*\\.debug \
cd ..
rm -rf extracted
-wait_ready $PORT1 'found_sourcerefs_total{source="rpm"}' $sourcefiles
+wait_ready $PORT1 'found_sourcerefs_total{source=".rpm archive"}' $sourcefiles
-# Run a bank of queries against the debuginfod-rpms test cases
+# Run a bank of queries against the debuginfod-rpms / debuginfod-debs test cases
-rpm_test() {
+archive_test() {
__BUILDID=$1
__SOURCEPATH=$2
__SOURCESHA1=$3
@@ -200,29 +289,51 @@ rpm_test() {
buildid=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
-a $filename | grep 'Build ID' | cut -d ' ' -f 7`
test $__BUILDID = $buildid
+ # check that timestamps are plausible - older than the near-present (tmpdir mtime)
+ test $filename -ot `pwd`
+
+ # run again to assure that fdcache is being enjoyed
+ filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable $__BUILDID`
+ buildid=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+ -a $filename | grep 'Build ID' | cut -d ' ' -f 7`
+ test $__BUILDID = $buildid
+ test $filename -ot `pwd`
filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $__BUILDID`
buildid=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
-a $filename | grep 'Build ID' | cut -d ' ' -f 7`
test $__BUILDID = $buildid
-
- filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $__BUILDID $__SOURCEPATH`
- hash=`cat $filename | sha1sum | awk '{print $1}'`
- test $__SOURCESHA1 = $hash
+ test $filename -ot `pwd`
+
+ if test "x$__SOURCEPATH" != "x"; then
+ filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $__BUILDID $__SOURCEPATH`
+ hash=`cat $filename | sha1sum | awk '{print $1}'`
+ test $__SOURCESHA1 = $hash
+ test $filename -ot `pwd`
+ fi
}
# common source file sha1
SHA=f4a1a8062be998ae93b8f1cd744a398c6de6dbb1
+# fedora31
+if [ $zstd = true ]; then
+ # fedora31 uses zstd compression on rpms, older rpm2cpio/libarchive can't handle it
+ # and we're not using the fancy -Z '.rpm=(rpm2cpio|zstdcat)<' workaround in this testsuite
+ archive_test 420e9e3308971f4b817cc5bf83928b41a6909d88 /usr/src/debug/hello3-1.0-2.x86_64/foobar////./../hello.c $SHA
+ archive_test 87c08d12c78174f1082b7c888b3238219b0eb265 /usr/src/debug/hello3-1.0-2.x86_64///foobar/./..//hello.c $SHA
+fi
# fedora30
-rpm_test c36708a78618d597dee15d0dc989f093ca5f9120 /usr/src/debug/hello2-1.0-2.x86_64/hello.c $SHA
-rpm_test 41a236eb667c362a1c4196018cc4581e09722b1b /usr/src/debug/hello2-1.0-2.x86_64/hello.c $SHA
+archive_test c36708a78618d597dee15d0dc989f093ca5f9120 /usr/src/debug/hello2-1.0-2.x86_64/hello.c $SHA
+archive_test 41a236eb667c362a1c4196018cc4581e09722b1b /usr/src/debug/hello2-1.0-2.x86_64/hello.c $SHA
# rhel7
-rpm_test bc1febfd03ca05e030f0d205f7659db29f8a4b30 /usr/src/debug/hello-1.0/hello.c $SHA
-rpm_test f0aa15b8aba4f3c28cac3c2a73801fefa644a9f2 /usr/src/debug/hello-1.0/hello.c $SHA
+archive_test bc1febfd03ca05e030f0d205f7659db29f8a4b30 /usr/src/debug/hello-1.0/hello.c $SHA
+archive_test f0aa15b8aba4f3c28cac3c2a73801fefa644a9f2 /usr/src/debug/hello-1.0/hello.c $SHA
# rhel6
-rpm_test bbbf92ebee5228310e398609c23c2d7d53f6e2f9 /usr/src/debug/hello-1.0/hello.c $SHA
-rpm_test d44d42cbd7d915bc938c81333a21e355a6022fb7 /usr/src/debug/hello-1.0/hello.c $SHA
+archive_test bbbf92ebee5228310e398609c23c2d7d53f6e2f9 /usr/src/debug/hello-1.0/hello.c $SHA
+archive_test d44d42cbd7d915bc938c81333a21e355a6022fb7 /usr/src/debug/hello-1.0/hello.c $SHA
+# arch
+archive_test cee13b2ea505a7f37bd20d271c6bc7e5f8d2dfcb /usr/src/debug/hello.c 7a1334e086b97e5f124003a6cfb3ed792d10cdf4
RPM_BUILDID=d44d42cbd7d915bc938c81333a21e355a6022fb7 # in rhel6/ subdir, for a later test
@@ -235,6 +346,8 @@ RPM_BUILDID=d44d42cbd7d915bc938c81333a21e355a6022fb7 # in rhel6/ subdir, for a l
rm -r R/debuginfod-rpms/rhel6/*
kill -USR2 $PID1 # groom cycle
# Expect 3 rpms to be deleted by the groom
+# 1 groom cycle already took place at/soon-after startup, so -USR2 makes 2
+wait_ready $PORT1 'thread_work_total{role="groom"}' 2
wait_ready $PORT1 'groom{statistic="file d/e"}' 3
rm -rf $DEBUGINFOD_CACHE_PATH # clean it from previous tests
@@ -245,6 +358,38 @@ testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable $BUILDID2
########################################################################
+# PR26810: Now rename some files in the R directory, then rescan, so
+# there are two copies of the same buildid in the index, one for the
+# no-longer-existing file name, and one under the new name.
+
+# run a groom cycle to force server to drop its fdcache
+kill -USR2 $PID1 # groom cycle
+wait_ready $PORT1 'thread_work_total{role="groom"}' 3
+# move it around a couple of times to make it likely to hit a nonexistent entry during iteration
+mv R/debuginfod-rpms/rhel7 R/debuginfod-rpms/rhel7renamed
+kill -USR1 $PID1 # scan cycle
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 6
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+mv R/debuginfod-rpms/rhel7renamed R/debuginfod-rpms/rhel7renamed2
+kill -USR1 $PID1 # scan cycle
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 7
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+mv R/debuginfod-rpms/rhel7renamed2 R/debuginfod-rpms/rhel7renamed3
+kill -USR1 $PID1 # scan cycle
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 8
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+
+# retest rhel7
+archive_test bc1febfd03ca05e030f0d205f7659db29f8a4b30 /usr/src/debug/hello-1.0/hello.c $SHA
+archive_test f0aa15b8aba4f3c28cac3c2a73801fefa644a9f2 /usr/src/debug/hello-1.0/hello.c $SHA
+
+egrep '(libc.error.*rhel7)|(bc1febfd03ca)|(f0aa15b8aba)' vlog4
+
+########################################################################
+
# Federation mode
# find another unused port
@@ -257,16 +402,46 @@ export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache2
mkdir -p $DEBUGINFOD_CACHE_PATH
# NB: inherits the DEBUGINFOD_URLS to the first server
# NB: run in -L symlink-following mode for the L subdir
-env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod -F -d ${DB}_2 -p $PORT2 -L L &
+env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -F -U -d ${DB}_2 -p $PORT2 -L L D > vlog3 2>&1 &
PID2=$!
+tempfiles vlog3
tempfiles ${DB}_2
wait_ready $PORT2 'ready' 1
+wait_ready $PORT2 'thread_work_total{role="traverse"}' 1
+wait_ready $PORT2 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT2 'thread_busy{role="scan"}' 0
+
+wait_ready $PORT2 'thread_busy{role="http-buildid"}' 0
+wait_ready $PORT2 'thread_busy{role="http-metrics"}' 1
# have clients contact the new server
export DEBUGINFOD_URLS=http://127.0.0.1:$PORT2
+
+if type bsdtar 2>/dev/null; then
+ # copy in the deb files
+ cp -rvp ${abs_srcdir}/debuginfod-debs/*deb D
+ kill -USR1 $PID2
+ # All debs need to be in the index
+ debs=$(find D -name \*.deb | wc -l)
+ wait_ready $PORT2 'scanned_files_total{source=".deb archive"}' `expr $debs`
+ ddebs=$(find D -name \*.ddeb | wc -l)
+ wait_ready $PORT2 'scanned_files_total{source=".ddeb archive"}' `expr $ddebs`
+
+ # ubuntu
+ archive_test f17a29b5a25bd4960531d82aa6b07c8abe84fa66 "" ""
+fi
+
rm -rf $DEBUGINFOD_CACHE_PATH
testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID
+# send a request to stress XFF and User-Agent federation relay;
+# we'll grep for the two patterns in vlog4
+curl -s -H 'User-Agent: TESTCURL' -H 'X-Forwarded-For: TESTXFF' $DEBUGINFOD_URLS/buildid/deaddeadbeef00000000/debuginfo -o /dev/null || true
+
+grep UA:TESTCURL vlog4
+grep XFF:TESTXFF vlog4
+
+
# confirm that first server can't resolve symlinked info in L/ but second can
BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
-a L/foo | grep 'Build ID' | cut -d ' ' -f 7`
@@ -278,6 +453,12 @@ testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID && fal
export DEBUGINFOD_URLS=http://127.0.0.1:$PORT2
testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID
+# test again with scheme free url
+export DEBUGINFOD_URLS=127.0.0.1:$PORT1
+rm -rf $DEBUGINFOD_CACHE_PATH
+testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID && false || true
+export DEBUGINFOD_URLS=127.0.0.1:$PORT2
+testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID
# test parallel queries in client
export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache3
@@ -288,14 +469,42 @@ testrun ${abs_builddir}/debuginfod_build_id_find -e F/prog2 1
########################################################################
-# Fetch some metrics, if curl program is installed
-if type curl 2>/dev/null; then
- curl http://127.0.0.1:$PORT1/badapi
- curl http://127.0.0.1:$PORT1/metrics
- curl http://127.0.0.1:$PORT2/metrics
- curl http://127.0.0.1:$PORT1/metrics | grep -q 'http_responses_total.*result.*error'
- curl http://127.0.0.1:$PORT2/metrics | grep -q 'http_responses_total.*result.*upstream'
-fi
+# Fetch some metrics
+curl -s http://127.0.0.1:$PORT1/badapi
+curl -s http://127.0.0.1:$PORT1/metrics
+curl -s http://127.0.0.1:$PORT2/metrics
+curl -s http://127.0.0.1:$PORT1/metrics | grep -q 'http_responses_total.*result.*error'
+curl -s http://127.0.0.1:$PORT1/metrics | grep -q 'http_responses_total.*result.*fdcache'
+curl -s http://127.0.0.1:$PORT2/metrics | grep -q 'http_responses_total.*result.*upstream'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_duration_milliseconds_count'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_duration_milliseconds_sum'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_count'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_sum'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'fdcache_'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'error_count'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'traversed_total'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'scanned_bytes_total'
+
+# And generate a few errors into the second debuginfod's logs, for analysis just below
+curl -s http://127.0.0.1:$PORT2/badapi > /dev/null || true
+curl -s http://127.0.0.1:$PORT2/buildid/deadbeef/debuginfo > /dev/null || true
+
+
+########################################################################
+# Corrupt the sqlite database and get debuginfod to trip across its errors
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'sqlite3.*reset'
+ls -al $DB
+dd if=/dev/zero of=$DB bs=1 count=1
+ls -al $DB
+# trigger some random activity that's Sure to get sqlite3 upset
+kill -USR1 $PID1
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 9
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+kill -USR2 $PID1
+wait_ready $PORT1 'thread_work_total{role="groom"}' 4
+curl -s http://127.0.0.1:$PORT1/buildid/beefbeefbeefd00dd00d/debuginfo > /dev/null || true
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'error_count.*sqlite'
########################################################################
@@ -310,8 +519,21 @@ tempfiles .debuginfod_*
testrun ${abs_builddir}/debuginfod_build_id_find -e F/prog2 1
+# check out the debuginfod logs for the new style status lines
+# cat vlog3
+grep -q 'UA:.*XFF:.*GET /buildid/.* 200 ' vlog3
+grep -q 'UA:.*XFF:.*GET /metrics 200 ' vlog3
+grep -q 'UA:.*XFF:.*GET /badapi 503 ' vlog3
+grep -q 'UA:.*XFF:.*GET /buildid/deadbeef.* 404 ' vlog3
+
########################################################################
+# Add some files to the cache that do not fit its naming format.
+# They should survive cache cleaning.
+mkdir $DEBUGINFOD_CACHE_PATH/malformed
+touch $DEBUGINFOD_CACHE_PATH/malformed0
+touch $DEBUGINFOD_CACHE_PATH/malformed/malformed1
+
# Trigger a cache clean and run the tests again. The clients should be unable to
# find the target.
echo 0 > $DEBUGINFOD_CACHE_PATH/cache_clean_interval_s
@@ -321,4 +543,36 @@ testrun ${abs_builddir}/debuginfod_build_id_find -e F/prog 1
testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID2 && false || true
+if [ ! -f $DEBUGINFOD_CACHE_PATH/malformed0 ] \
+ || [ ! -f $DEBUGINFOD_CACHE_PATH/malformed/malformed1 ]; then
+ echo "unrelated files did not survive cache cleaning"
+ exit 1
+fi
+
+# Test debuginfod without a path list; reuse $PORT1
+env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -F -U -d :memory: -p $PORT1 -L -F &
+PID3=$!
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 1
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+kill -int $PID3
+wait $PID3
+PID3=0
+
+########################################################################
+# Test fetching a file using file:// . No debuginfod server needs to be run for
+# this test.
+local_dir=${PWD}/mocktree/buildid/aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd/source/my/path
+mkdir -p ${local_dir}
+echo "int main() { return 0; }" > ${local_dir}/main.c
+
+# first test that is doesn't work, when no DEBUGINFOD_URLS is set
+DEBUGINFOD_URLS=""
+testrun ${abs_top_builddir}/debuginfod/debuginfod-find source aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd /my/path/main.c && false || true
+
+# Now test is with proper DEBUGINFOD_URLS
+DEBUGINFOD_URLS="file://${PWD}/mocktree/"
+filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd /my/path/main.c`
+cmp $filename ${local_dir}/main.c
+
exit 0
diff --git a/tests/run-deleted.sh b/tests/run-deleted.sh
index 0f647621..a1ec1ecf 100755
--- a/tests/run-deleted.sh
+++ b/tests/run-deleted.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2014 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-disasm-x86-64.sh b/tests/run-disasm-x86-64.sh
index a6be62bb..07b612b0 100755
--- a/tests/run-disasm-x86-64.sh
+++ b/tests/run-disasm-x86-64.sh
@@ -22,7 +22,7 @@ case "`uname -m`" in
x86_64)
tempfiles testfile45.o
testfiles testfile45.S testfile45.expect
- gcc -m64 -c -o testfile45.o testfile45.S
+ ${CC} -m64 -c -o testfile45.o testfile45.S
testrun_compare ${abs_top_builddir}/src/objdump -d testfile45.o < testfile45.expect
;;
esac
diff --git a/tests/run-disasm-x86.sh b/tests/run-disasm-x86.sh
index 28a3df74..7ac73ad7 100755
--- a/tests/run-disasm-x86.sh
+++ b/tests/run-disasm-x86.sh
@@ -22,7 +22,7 @@ case "`uname -m`" in
x86_64 | i?86 )
tempfiles testfile44.o
testfiles testfile44.S testfile44.expect
- gcc -m32 -c -o testfile44.o testfile44.S
+ ${CC} -m32 -c -o testfile44.o testfile44.S
testrun_compare ${abs_top_builddir}/src/objdump -d testfile44.o < testfile44.expect
;;
esac
diff --git a/tests/run-dwelf_elf_e_machine_string.sh b/tests/run-dwelf_elf_e_machine_string.sh
index ba6d0e63..658f229f 100755
--- a/tests/run-dwelf_elf_e_machine_string.sh
+++ b/tests/run-dwelf_elf_e_machine_string.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Test to make sure all EM values in elf.h are recognized
# Copyright (C) 2019 Red Hat, Inc.
# This file is part of elfutils.
diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh
index 5a849bbd..fb14139d 100755
--- a/tests/run-elfclassify.sh
+++ b/tests/run-elfclassify.sh
@@ -267,7 +267,7 @@ $(echo $kmod_files | sed -e "s/ /\n/g")
EOF
echo "gnu compressed kmods are unstripped"
-${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
+testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files
testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <<EOF
$(echo $kmod_files | sed -e "s/ /\n/g")
@@ -312,7 +312,7 @@ $(echo $debug_files | sed -e "s/ /\n/g")
EOF
echo "compress the debug sections and try again"
-${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
+testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
echo "again unstripped"
testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files
diff --git a/tests/run-getphdrnum.sh b/tests/run-getphdrnum.sh
new file mode 100755
index 00000000..889cdaf1
--- /dev/null
+++ b/tests/run-getphdrnum.sh
@@ -0,0 +1,137 @@
+#! /bin/sh
+
+# testfile-phdrs.elf generated with python3 script
+# import struct
+# import sys
+#
+# phnum = 66000
+#
+# sys.stdout.buffer.write(
+# struct.pack(
+# "<16BHHIQQQIHHHHHH",
+# # EI_MAG
+# *b"\x7fELF",
+# # EI_CLASS = ELFCLASS64
+# 2,
+# # EI_DATA = ELFDATA2LSB
+# 1,
+# # EI_VERSION
+# 1,
+# # EI_OSABI = ELFOSABI_SYSV
+# 0,
+# # EI_ABIVERSION
+# 0,
+# # EI_PAD
+# *bytes(7),
+# # e_type = ET_CORE
+# 4,
+# # e_machine = EM_X86_64
+# 62,
+# # e_version
+# 1,
+# # e_entry
+# 0,
+# # e_phoff = sizeof(Elf64_Ehdr) + sizeof(Elf64_Shdr)
+# 128,
+# # e_shoff = sizeof(Elf64_Ehdr)
+# 64,
+# # e_flags
+# 0,
+# # e_ehsize
+# 64,
+# # e_phentsize
+# 56,
+# # e_phnum = PN_XNUM
+# 0xFFFF,
+# # e_shentsize
+# 64,
+# # e_shnum
+# 1,
+# # e_shstrndx
+# 0,
+# )
+# )
+#
+# sys.stdout.buffer.write(
+# struct.pack(
+# "<IIQQQQIIQQ",
+# # sh_name
+# 0,
+# # sh_type = SHT_NULL
+# 0,
+# # sh_flags
+# 0,
+# # sh_addr
+# 0,
+# # sh_offset
+# 0,
+# # sh_size
+# 0,
+# # sh_link
+# 0,
+# # sh_info
+# phnum,
+# # sh_addralign
+# 0,
+# # sh_entsize
+# 0,
+# )
+# )
+#
+# for i in range(phnum):
+# sys.stdout.buffer.write(
+# struct.pack(
+# "<IIQQQQQQ",
+# # p_type = PT_LOAD
+# 1,
+# # p_flags = PF_X|PF_W|PF_R
+# 0x7,
+# # p_offset
+# 0,
+# # p_vaddr
+# # i * 4096,
+# 4096,
+# # p_paddr
+# 0,
+# # p_filesz
+# 0,
+# # p_memsz
+# 4096,
+# # p_align
+# 0,
+# )
+# )
+
+. $srcdir/test-subr.sh
+
+testfiles testfile-phdrs.elf
+
+testrun_compare ${abs_top_builddir}/src/readelf -h testfile-phdrs.elf<<\EOF
+ELF Header:
+ Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
+ Class: ELF64
+ Data: 2's complement, little endian
+ Ident Version: 1 (current)
+ OS/ABI: UNIX - System V
+ ABI Version: 0
+ Type: CORE (Core file)
+ Machine: AMD x86-64
+ Version: 1 (current)
+ Entry point address: 0
+ Start of program headers: 128 (bytes into file)
+ Start of section headers: 64 (bytes into file)
+ Flags:
+ Size of this header: 64 (bytes)
+ Size of program header entries: 56 (bytes)
+ Number of program headers entries: 65535 (66000 in [0].sh_info)
+ Size of section header entries: 64 (bytes)
+ Number of section headers entries: 1
+ Section header string table index: 0
+
+EOF
+
+testrun_compare ${abs_builddir}/getphdrnum testfile-phdrs.elf<<\EOF
+66000
+EOF
+
+exit 0
diff --git a/tests/run-large-elf-file.sh b/tests/run-large-elf-file.sh
index cbe30615..667d24d8 100755
--- a/tests/run-large-elf-file.sh
+++ b/tests/run-large-elf-file.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2019 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-lfs-symbols.sh b/tests/run-lfs-symbols.sh
index f0894405..762a5d96 100755
--- a/tests/run-lfs-symbols.sh
+++ b/tests/run-lfs-symbols.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2015 Red Hat, Inc.
# This file is part of elfutils.
#
@@ -18,7 +18,7 @@
. $srcdir/test-subr.sh
if ! grep -q -F '#define _FILE_OFFSET_BITS' ${abs_top_builddir}/config.h; then
- echo "LFS testing is irrelevent on this system"
+ echo "LFS testing is irrelevant on this system"
exit 77
fi
@@ -46,41 +46,44 @@ makeprint() {
}
testrun_lfs() {
- bad=$(testrun ${abs_top_builddir}/src/nm -u "$1" | awk "$LFS")
- if [ -n "$bad" ]; then
- echo "$1 contains non-lfs symbols:" $bad
+ echo "checking $1"
+ if [ -e "$1" ]; then
+ bad=$(testrun ${abs_top_builddir}/src/nm -u "$1" | awk "$LFS")
+ if [ -n "$bad" ]; then
+ echo "$1 contains non-lfs symbols:" $bad
+ exit_status=1
+ fi
+ else
+ echo "$1 doesn't exist"
exit_status=1
fi
}
-# First sanity-check that LFS detection works.
+echo First sanity-check that LFS detection works.
exit_status=0
testrun_lfs ./testfile-nolfs
if [ $exit_status -eq 0 ]; then
echo "Didn't detect any problem with testfile-nolfs!"
exit 99
fi
+echo
exit_status=0
-# Check all normal build targets.
+echo Check all normal build targets.
for dir in libelf libdw libasm libcpu src; do
dir=${abs_top_builddir}/$dir
for program in $(makeprint PROGRAMS $dir); do
testrun_lfs $dir/$program
done
done
+echo
-# Check all libebl modules.
-dir=${abs_top_builddir}/backends
-for module in $(makeprint modules $dir); do
- testrun_lfs $dir/libebl_$module.so
-done
-
-# Check all test programs.
+echo Check all test programs.
dir=${abs_builddir}
for program in $(makeprint check_PROGRAMS $dir); do
testrun_lfs $dir/$program
done
+echo
exit $exit_status
diff --git a/tests/run-linkmap-cut.sh b/tests/run-linkmap-cut.sh
index de2bc7cc..053b96dc 100755
--- a/tests/run-linkmap-cut.sh
+++ b/tests/run-linkmap-cut.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# Copyright (C) 2014 Red Hat, Inc.
# This file is part of elfutils.
#
diff --git a/tests/run-nm-syms.sh b/tests/run-nm-syms.sh
new file mode 100755
index 00000000..ddf09222
--- /dev/null
+++ b/tests/run-nm-syms.sh
@@ -0,0 +1,166 @@
+#! /bin/sh
+# Copyright (C) 2020 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# void *SYM1;
+# void *SYM2 = 0;
+# extern void *SYM3;
+# static void *SYM4;
+#
+# void *SYM6 = &SYM3;
+# static void *SYM7 = &SYM3;
+#
+# void *SYM8 __attribute__((__weak__));
+#
+# void FUN1 (void) { }
+# static void FUN2 (void) { }
+# extern void FUN3 (void);
+#
+# void *FREF = FUN3;
+#
+# void __attribute__((__weak__)) FUN4 (void) { };
+#
+# int NUM0 = 0; __asm__(".type NUM0,%gnu_unique_object");
+# int __thread NUM1 = 1;
+#
+# gcc -m64 -c syms.c -o testfilesyms64
+# gcc -m32 -c syms.c -o testfilesyms32
+
+testfiles testfilesyms32 testfilesyms64
+
+testrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms32 <<\EOF
+00000008 D FREF
+00000000 T FUN1
+00000010 t FUN2
+ U FUN3
+00000020 W FUN4
+00000008 u NUM0
+00000000 D NUM1
+00000004 C SYM1
+00000000 B SYM2
+ U SYM3
+0000000c b SYM4
+00000000 D SYM6
+00000004 d SYM7
+00000004 V SYM8
+ U _GLOBAL_OFFSET_TABLE_
+00000000 T __x86.get_pc_thunk.ax
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms32 <<\EOF
+FREF D 00000008 00000004
+FUN1 T 00000000 00000010
+FUN2 t 00000010 00000010
+FUN3 U
+FUN4 W 00000020 00000010
+NUM0 u 00000008 00000004
+NUM1 D 00000000 00000004
+SYM1 C 00000004 00000004
+SYM2 B 00000000 00000004
+SYM3 U
+SYM4 b 0000000c 00000004
+SYM6 D 00000000 00000004
+SYM7 d 00000004 00000004
+SYM8 V 00000004 00000004
+_GLOBAL_OFFSET_TABLE_ U
+__x86.get_pc_thunk.ax T 00000000 00000000
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms32 <<\EOF
+
+
+Symbols from testfilesyms32:
+
+Name Value Class Type Size Line Section
+
+FREF |00000008|GLOBAL|OBJECT |00000004| |.data.rel
+FUN1 |00000000|GLOBAL|FUNC |00000010| |.text
+FUN2 |00000010|LOCAL |FUNC |00000010| |.text
+FUN3 | |GLOBAL|NOTYPE | | |UNDEF
+FUN4 |00000020|WEAK |FUNC |00000010| |.text
+NUM0 |00000008|UNIQUE|OBJECT |00000004| |.bss
+NUM1 |00000000|GLOBAL|TLS |00000004| |.tdata
+SYM1 |00000004|GLOBAL|OBJECT |00000004| |COMMON
+SYM2 |00000000|GLOBAL|OBJECT |00000004| |.bss
+SYM3 | |GLOBAL|NOTYPE | | |UNDEF
+SYM4 |0000000c|LOCAL |OBJECT |00000004| |.bss
+SYM6 |00000000|GLOBAL|OBJECT |00000004| |.data.rel
+SYM7 |00000004|LOCAL |OBJECT |00000004| |.data.rel
+SYM8 |00000004|WEAK |OBJECT |00000004| |.bss
+_GLOBAL_OFFSET_TABLE_| |GLOBAL|NOTYPE | | |UNDEF
+__x86.get_pc_thunk.ax|00000000|GLOBAL|FUNC |00000000| |.text.__x86.get_pc_thunk.ax
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms64 <<\EOF
+0000000000000010 D FREF
+0000000000000000 T FUN1
+0000000000000007 t FUN2
+ U FUN3
+000000000000000e W FUN4
+0000000000000010 u NUM0
+0000000000000000 D NUM1
+0000000000000008 C SYM1
+0000000000000000 B SYM2
+ U SYM3
+0000000000000018 b SYM4
+0000000000000000 D SYM6
+0000000000000008 d SYM7
+0000000000000008 V SYM8
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms64 <<\EOF
+FREF D 0000000000000010 0000000000000008
+FUN1 T 0000000000000000 0000000000000007
+FUN2 t 0000000000000007 0000000000000007
+FUN3 U
+FUN4 W 000000000000000e 0000000000000007
+NUM0 u 0000000000000010 0000000000000004
+NUM1 D 0000000000000000 0000000000000004
+SYM1 C 0000000000000008 0000000000000008
+SYM2 B 0000000000000000 0000000000000008
+SYM3 U
+SYM4 b 0000000000000018 0000000000000008
+SYM6 D 0000000000000000 0000000000000008
+SYM7 d 0000000000000008 0000000000000008
+SYM8 V 0000000000000008 0000000000000008
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms64 <<\EOF
+
+
+Symbols from testfilesyms64:
+
+Name Value Class Type Size Line Section
+
+FREF |0000000000000010|GLOBAL|OBJECT |0000000000000008| |.data.rel
+FUN1 |0000000000000000|GLOBAL|FUNC |0000000000000007| |.text
+FUN2 |0000000000000007|LOCAL |FUNC |0000000000000007| |.text
+FUN3 | |GLOBAL|NOTYPE | | |UNDEF
+FUN4 |000000000000000e|WEAK |FUNC |0000000000000007| |.text
+NUM0 |0000000000000010|UNIQUE|OBJECT |0000000000000004| |.bss
+NUM1 |0000000000000000|GLOBAL|TLS |0000000000000004| |.tdata
+SYM1 |0000000000000008|GLOBAL|OBJECT |0000000000000008| |COMMON
+SYM2 |0000000000000000|GLOBAL|OBJECT |0000000000000008| |.bss
+SYM3 | |GLOBAL|NOTYPE | | |UNDEF
+SYM4 |0000000000000018|LOCAL |OBJECT |0000000000000008| |.bss
+SYM6 |0000000000000000|GLOBAL|OBJECT |0000000000000008| |.data.rel
+SYM7 |0000000000000008|LOCAL |OBJECT |0000000000000008| |.data.rel
+SYM8 |0000000000000008|WEAK |OBJECT |0000000000000008| |.bss
+EOF
+
+exit 0
diff --git a/tests/run-pt_gnu_prop-tests.sh b/tests/run-pt_gnu_prop-tests.sh
new file mode 100755
index 00000000..a9a8d912
--- /dev/null
+++ b/tests/run-pt_gnu_prop-tests.sh
@@ -0,0 +1,135 @@
+#! /bin/sh
+# Copyright (C) 2020 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# On Fedora 31 with GCC 9.2.1 and binutils 2.32-31
+# echo "int main () { }" | \
+# gcc -o testfile_pt_gnu_prop \
+# -Os -fstack-clash-protection -fcf-protection=full -xc - && \
+# eu-strip --remove-comment -R .gnu.build.attributes testfile_pt_gnu_prop
+#
+# echo "int main () { }" | \
+# gcc -m32 -o testfile_pt_gnu_prop \
+# -Os -fstack-clash-protection -fcf-protection=full -xc - && \
+# eu-strip --remove-comment -R .gnu.build.attributes testfile_pt_gnu_prop32
+
+testfiles testfile_pt_gnu_prop testfile_pt_gnu_prop32
+
+testrun_compare ${abs_top_builddir}/src/readelf -ln testfile_pt_gnu_prop32 <<\EOF
+Program Headers:
+ Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
+ PHDR 0x000034 0x08048034 0x08048034 0x000180 0x000180 R 0x4
+ INTERP 0x0001b4 0x080481b4 0x080481b4 0x000013 0x000013 R 0x1
+ [Requesting program interpreter: /lib/ld-linux.so.2]
+ LOAD 0x000000 0x08048000 0x08048000 0x000308 0x000308 R 0x1000
+ LOAD 0x001000 0x08049000 0x08049000 0x000224 0x000224 R E 0x1000
+ LOAD 0x002000 0x0804a000 0x0804a000 0x00015c 0x00015c R 0x1000
+ LOAD 0x002f0c 0x0804bf0c 0x0804bf0c 0x000108 0x00010c RW 0x1000
+ DYNAMIC 0x002f14 0x0804bf14 0x0804bf14 0x0000e8 0x0000e8 RW 0x4
+ NOTE 0x0001c8 0x080481c8 0x080481c8 0x000060 0x000060 R 0x4
+ GNU_PROPERTY 0x0001ec 0x080481ec 0x080481ec 0x00001c 0x00001c R 0x4
+ GNU_EH_FRAME 0x00200c 0x0804a00c 0x0804a00c 0x00004c 0x00004c R 0x4
+ GNU_STACK 0x000000 0x00000000 0x00000000 0x000000 0x000000 RW 0x10
+ GNU_RELRO 0x002f0c 0x0804bf0c 0x0804bf0c 0x0000f4 0x0000f4 R 0x1
+
+ Section to Segment mapping:
+ Segment Sections...
+ 00
+ 01 [RO: .interp]
+ 02 [RO: .interp .note.gnu.build-id .note.gnu.property .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt]
+ 03 [RO: .init .plt .plt.sec .text .fini]
+ 04 [RO: .rodata .eh_frame_hdr .eh_frame]
+ 05 [RELRO: .init_array .fini_array .dynamic .got] .got.plt .data .bss
+ 06 [RELRO: .dynamic]
+ 07 [RO: .note.gnu.build-id .note.gnu.property .note.ABI-tag]
+ 08 [RO: .note.gnu.property]
+ 09 [RO: .eh_frame_hdr]
+ 10
+ 11 [RELRO: .init_array .fini_array .dynamic .got]
+
+Note section [ 2] '.note.gnu.build-id' of 36 bytes at offset 0x1c8:
+ Owner Data size Type
+ GNU 20 GNU_BUILD_ID
+ Build ID: 2fcce91f5c2532f78b00a9f5f565354d2f44bc19
+
+Note section [ 3] '.note.gnu.property' of 28 bytes at offset 0x1ec:
+ Owner Data size Type
+ GNU 12 GNU_PROPERTY_TYPE_0
+ X86 FEATURE_1_AND: 00000003 IBT SHSTK
+
+Note section [ 4] '.note.ABI-tag' of 32 bytes at offset 0x208:
+ Owner Data size Type
+ GNU 16 GNU_ABI_TAG
+ OS: Linux, ABI: 3.2.0
+EOF
+
+testrun ${abs_top_builddir}/src/elflint --gnu testfile_pt_gnu_prop32
+
+testrun_compare ${abs_top_builddir}/src/readelf -ln testfile_pt_gnu_prop <<\EOF
+Program Headers:
+ Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
+ PHDR 0x000040 0x0000000000400040 0x0000000000400040 0x0002d8 0x0002d8 R 0x8
+ INTERP 0x000318 0x0000000000400318 0x0000000000400318 0x00001c 0x00001c R 0x1
+ [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
+ LOAD 0x000000 0x0000000000400000 0x0000000000400000 0x000498 0x000498 R 0x1000
+ LOAD 0x001000 0x0000000000401000 0x0000000000401000 0x0001a5 0x0001a5 R E 0x1000
+ LOAD 0x002000 0x0000000000402000 0x0000000000402000 0x000100 0x000100 R 0x1000
+ LOAD 0x002e50 0x0000000000403e50 0x0000000000403e50 0x0001cc 0x0001d0 RW 0x1000
+ DYNAMIC 0x002e60 0x0000000000403e60 0x0000000000403e60 0x000190 0x000190 RW 0x8
+ NOTE 0x000338 0x0000000000400338 0x0000000000400338 0x000020 0x000020 R 0x8
+ NOTE 0x000358 0x0000000000400358 0x0000000000400358 0x000044 0x000044 R 0x4
+ GNU_PROPERTY 0x000338 0x0000000000400338 0x0000000000400338 0x000020 0x000020 R 0x8
+ GNU_EH_FRAME 0x002010 0x0000000000402010 0x0000000000402010 0x000034 0x000034 R 0x4
+ GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x10
+ GNU_RELRO 0x002e50 0x0000000000403e50 0x0000000000403e50 0x0001b0 0x0001b0 R 0x1
+
+ Section to Segment mapping:
+ Segment Sections...
+ 00
+ 01 [RO: .interp]
+ 02 [RO: .interp .note.gnu.property .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn]
+ 03 [RO: .init .text .fini]
+ 04 [RO: .rodata .eh_frame_hdr .eh_frame]
+ 05 [RELRO: .init_array .fini_array .dynamic .got] .got.plt .data .bss
+ 06 [RELRO: .dynamic]
+ 07 [RO: .note.gnu.property]
+ 08 [RO: .note.gnu.build-id .note.ABI-tag]
+ 09 [RO: .note.gnu.property]
+ 10 [RO: .eh_frame_hdr]
+ 11
+ 12 [RELRO: .init_array .fini_array .dynamic .got]
+
+Note section [ 2] '.note.gnu.property' of 32 bytes at offset 0x338:
+ Owner Data size Type
+ GNU 16 GNU_PROPERTY_TYPE_0
+ X86 FEATURE_1_AND: 00000003 IBT SHSTK
+
+Note section [ 3] '.note.gnu.build-id' of 36 bytes at offset 0x358:
+ Owner Data size Type
+ GNU 20 GNU_BUILD_ID
+ Build ID: 84fa4d40bad074bc82431575821902da624a5b22
+
+Note section [ 4] '.note.ABI-tag' of 32 bytes at offset 0x37c:
+ Owner Data size Type
+ GNU 16 GNU_ABI_TAG
+ OS: Linux, ABI: 3.2.0
+EOF
+
+testrun ${abs_top_builddir}/src/elflint --gnu testfile_pt_gnu_prop
+
+exit 0
diff --git a/tests/run-readelf-compressed-zstd.sh b/tests/run-readelf-compressed-zstd.sh
new file mode 100755
index 00000000..96208092
--- /dev/null
+++ b/tests/run-readelf-compressed-zstd.sh
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2018 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+if ! grep -q -F '#define USE_ZSTD' ${abs_top_builddir}/config.h; then
+ echo "elfutils built without zstd support"
+ exit 77
+fi
+
+# See run-strip-reloc.sh
+testfiles hello_i386.ko
+
+tempfiles hello_i386.ko.zst readelf.out.1 readelf.out.2
+
+testrun ${abs_top_builddir}/src/readelf -a hello_i386.ko > readelf.out.1
+zstd hello_i386.ko
+testrun ${abs_top_builddir}/src/readelf -a hello_i386.ko.zst > readelf.out.2
+
+diff -u readelf.out.1 readelf.out.2
+if [ $? != 0 ]; then
+ exit 1;
+fi
+
+exit 0
diff --git a/tests/run-readelf-frames.sh b/tests/run-readelf-frames.sh
new file mode 100755
index 00000000..f0429d19
--- /dev/null
+++ b/tests/run-readelf-frames.sh
@@ -0,0 +1,173 @@
+#! /bin/sh
+# Copyright (C) 2020 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# See run-readelf-n.sh
+testfiles testfile-gnu-property-note-aarch64
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=frames testfile-gnu-property-note-aarch64 <<\EOF
+
+Call frame search table section [17] '.eh_frame_hdr':
+ version: 1
+ eh_frame_ptr_enc: 0x1b (sdata4 pcrel)
+ fde_count_enc: 0x3 (udata4)
+ table_enc: 0x3b (sdata4 datarel)
+ eh_frame_ptr: 0x44 (offset: 0x758)
+ fde_count: 7
+ Table:
+ 0xfffffe70 (offset: 0x580) -> 0x5c fde=[ 14]
+ 0xfffffea0 (offset: 0x5b0) -> 0x70 fde=[ 28]
+ 0xfffffee0 (offset: 0x5f0) -> 0x84 fde=[ 3c]
+ 0xffffff20 (offset: 0x630) -> 0xac fde=[ 64]
+ 0xffffff28 (offset: 0x638) -> 0xc0 fde=[ 78]
+ 0xffffff40 (offset: 0x650) -> 0xd8 fde=[ 90]
+ 0xffffffc0 (offset: 0x6d0) -> 0x110 fde=[ c8]
+
+Call frame information section [18] '.eh_frame' at offset 0x758:
+
+ [ 0] CIE length=16
+ CIE_id: 0
+ version: 1
+ augmentation: "zR"
+ code_alignment_factor: 4
+ data_alignment_factor: -8
+ return_address_register: 30
+ Augmentation data: 0x1b (FDE address encoding: sdata4 pcrel)
+
+ Program:
+ def_cfa r31 (sp) at offset 0
+
+ [ 14] FDE length=16 cie=[ 0]
+ CIE_pointer: 24
+ initial_location: 0x0000000000400580 (offset: 0x580)
+ address_range: 0x30 (end offset: 0x5b0)
+
+ Program:
+ nop
+ nop
+ nop
+
+ [ 28] FDE length=16 cie=[ 0]
+ CIE_pointer: 44
+ initial_location: 0x00000000004005b0 (offset: 0x5b0)
+ address_range: 0x3c (end offset: 0x5ec)
+
+ Program:
+ nop
+ nop
+ nop
+
+ [ 3c] FDE length=36 cie=[ 0]
+ CIE_pointer: 64
+ initial_location: 0x00000000004005f0 (offset: 0x5f0)
+ address_range: 0x38 (end offset: 0x628)
+
+ Program:
+ advance_loc 1 to 0x5f4
+ AARCH64_negate_ra_state
+ advance_loc 1 to 0x5f8
+ def_cfa_offset 32
+ offset r29 (x29) at cfa-32
+ offset r30 (x30) at cfa-24
+ advance_loc 2 to 0x600
+ offset r19 (x19) at cfa-16
+ advance_loc 8 to 0x620
+ restore r30 (x30)
+ restore r29 (x29)
+ restore r19 (x19)
+ def_cfa_offset 0
+ advance_loc 1 to 0x624
+ AARCH64_negate_ra_state
+ nop
+ nop
+ nop
+
+ [ 64] FDE length=16 cie=[ 0]
+ CIE_pointer: 104
+ initial_location: 0x0000000000400630 (offset: 0x630)
+ address_range: 0x8 (end offset: 0x638)
+
+ Program:
+ nop
+ nop
+ nop
+
+ [ 78] FDE length=20 cie=[ 0]
+ CIE_pointer: 124
+ initial_location: 0x0000000000400638 (offset: 0x638)
+ address_range: 0xc (end offset: 0x644)
+
+ Program:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+
+ [ 90] FDE length=52 cie=[ 0]
+ CIE_pointer: 148
+ initial_location: 0x0000000000400650 (offset: 0x650)
+ address_range: 0x80 (end offset: 0x6d0)
+
+ Program:
+ advance_loc 1 to 0x654
+ AARCH64_negate_ra_state
+ advance_loc 1 to 0x658
+ def_cfa_offset 64
+ offset r29 (x29) at cfa-64
+ offset r30 (x30) at cfa-56
+ advance_loc 2 to 0x660
+ offset r19 (x19) at cfa-48
+ offset r20 (x20) at cfa-40
+ advance_loc 3 to 0x66c
+ offset r21 (x21) at cfa-32
+ offset r22 (x22) at cfa-24
+ advance_loc 5 to 0x680
+ offset r23 (x23) at cfa-16
+ offset r24 (x24) at cfa-8
+ advance_loc 18 to 0x6c8
+ restore r30 (x30)
+ restore r29 (x29)
+ restore r23 (x23)
+ restore r24 (x24)
+ restore r21 (x21)
+ restore r22 (x22)
+ restore r19 (x19)
+ restore r20 (x20)
+ def_cfa_offset 0
+ advance_loc 1 to 0x6cc
+ AARCH64_negate_ra_state
+ nop
+ nop
+
+ [ c8] FDE length=16 cie=[ 0]
+ CIE_pointer: 204
+ initial_location: 0x00000000004006d0 (offset: 0x6d0)
+ address_range: 0x8 (end offset: 0x6d8)
+
+ Program:
+ nop
+ nop
+ nop
+
+ [ dc] Zero terminator
+EOF
+
+exit 0
diff --git a/tests/run-readelf-line.sh b/tests/run-readelf-line.sh
index a95e6aa9..eef50e9d 100755
--- a/tests/run-readelf-line.sh
+++ b/tests/run-readelf-line.sh
@@ -262,7 +262,7 @@ DWARF section [30] '.debug_line' at offset 0x15f6:
EOF
-# A .debug_line table with mininum instruction length > 1.
+# A .debug_line table with minimum instruction length > 1.
#
# = hello.c
# #include <stdio.h>
diff --git a/tests/run-readelf-n.sh b/tests/run-readelf-n.sh
index cc7d7f66..4c98fd82 100755
--- a/tests/run-readelf-n.sh
+++ b/tests/run-readelf-n.sh
@@ -226,3 +226,34 @@ Note section [ 4] '.note.gnu.property' of 56 bytes at offset 0x40:
GNU 8 GNU_PROPERTY_TYPE_0
NO_COPY_ON_PROTECTION
EOF
+
+# - testfile-gnu-property-note.c
+# int
+# main ()
+# {
+# return 0;
+# }
+#
+# gcc -mbranch-protection=standard -c testfile-gnu-property-note.c
+# gcc -o testfile-gnu-property-note-aarch64 testfile-gnu-property-note.o
+# eu-strip --remove-section=.gnu.build.attributes \
+# testfile-gnu-property-note-aarch64
+
+testfiles testfile-gnu-property-note-aarch64
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile-gnu-property-note-aarch64 << EOF
+
+Note section [ 2] '.note.gnu.property' of 32 bytes at offset 0x2c8:
+ Owner Data size Type
+ GNU 16 GNU_PROPERTY_TYPE_0
+ AARCH64 FEATURE_1_AND: 00000003 BTI PAC
+
+Note section [ 3] '.note.gnu.build-id' of 36 bytes at offset 0x2e8:
+ Owner Data size Type
+ GNU 20 GNU_BUILD_ID
+ Build ID: af82d6df6f3b396487e3e27a826ca9cbbbecbe5f
+
+Note section [ 4] '.note.ABI-tag' of 32 bytes at offset 0x30c:
+ Owner Data size Type
+ GNU 16 GNU_ABI_TAG
+ OS: Linux, ABI: 3.7.0
+EOF
diff --git a/tests/run-retain.sh b/tests/run-retain.sh
new file mode 100755
index 00000000..c5376de4
--- /dev/null
+++ b/tests/run-retain.sh
@@ -0,0 +1,44 @@
+# Copyright (C) 2020 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# - retian.s
+# .section .data.retain,"R"
+# .word 1
+#
+# as -o testfile-retain.o retain.s
+
+testfiles testfile-retain.o
+
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile-retain.o << EOF
+There are 9 section headers, starting at offset 0x158:
+
+Section Headers:
+[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
+[ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0
+[ 1] .text PROGBITS 0000000000000000 00000040 00000000 0 AX 0 0 1
+[ 2] .data PROGBITS 0000000000000000 00000040 00000000 0 WA 0 0 1
+[ 3] .bss NOBITS 0000000000000000 00000040 00000000 0 WA 0 0 1
+[ 4] .data.retain PROGBITS 0000000000000000 00000040 00000002 0 WAR 0 0 1
+[ 5] .note.gnu.property NOTE 0000000000000000 00000048 00000030 0 A 0 0 8
+[ 6] .symtab SYMTAB 0000000000000000 00000078 00000090 24 7 6 8
+[ 7] .strtab STRTAB 0000000000000000 00000108 00000001 0 0 0 1
+[ 8] .shstrtab STRTAB 0000000000000000 00000109 0000004c 0 0 0 1
+
+EOF
+
+testrun ${abs_top_builddir}/src/elflint --gnu testfile-retain.o
diff --git a/tests/run-stack-demangled-test.sh b/tests/run-stack-demangled-test.sh
index c26918f9..ac5bc617 100755
--- a/tests/run-stack-demangled-test.sh
+++ b/tests/run-stack-demangled-test.sh
@@ -24,7 +24,7 @@ fi
# See run-stack-d-test.sh and run-stack-i-test.sh
# Same tests, now with demangler support, no -r, and without -d.
-# Only change in output is an explit fu(int) instead of _Z2fui.
+# Only change in output is an explicit fu(int) instead of _Z2fui.
testfiles testfiledwarfinlines testfiledwarfinlines.core
diff --git a/tests/run-strip-g.sh b/tests/run-strip-g.sh
index 13038195..15921215 100755
--- a/tests/run-strip-g.sh
+++ b/tests/run-strip-g.sh
@@ -25,7 +25,7 @@
tempfiles a.out strip.out debug.out readelf.out
echo Create debug a.out.
-echo "int main() { return 1; }" | gcc -g -xc -
+echo "int main() { return 1; }" | ${CC} -g -xc -
echo strip -g to file with debug file
testrun ${abs_top_builddir}/src/strip -g -o strip.out -f debug.out ||
diff --git a/tests/run-strip-nothing.sh b/tests/run-strip-nothing.sh
index 914fdfbf..710c200d 100755
--- a/tests/run-strip-nothing.sh
+++ b/tests/run-strip-nothing.sh
@@ -23,7 +23,7 @@
tempfiles a.out strip.out debug.out
# Create no-debug a.out.
-echo "int main() { return 1; }" | gcc -s -xc -
+echo "int main() { return 1; }" | ${CC} -s -xc -
# strip to file
testrun ${abs_top_builddir}/src/strip -g -o strip.out ||
diff --git a/tests/run-test-includes.sh b/tests/run-test-includes.sh
new file mode 100755
index 00000000..b107c6b9
--- /dev/null
+++ b/tests/run-test-includes.sh
@@ -0,0 +1,26 @@
+# All public include headers should be usable "standalone".
+
+. $srcdir/test-subr.sh
+
+echo '#include "libelf.h"' \
+ | ${CC} -c -o /dev/null -I ${abs_srcdir}/../libelf -xc -
+echo '#include "gelf.h"' \
+ | ${CC} -c -o /dev/null -I ${abs_srcdir}/../libelf -xc -
+
+echo '#include "dwarf.h"' \
+ | ${CC} -c -o /dev/null -I ${abs_srcdir}/../libelf \
+ -I ${abs_srcdir}/../libdw -xc -
+echo '#include "libdw.h"' \
+ | ${CC} -c -o /dev/null -I ${abs_srcdir}/../libelf \
+ -I ${abs_srcdir}/../libdw -xc -
+
+echo '#include "libdwfl.h"' \
+ | ${CC} -c -o /dev/null -I ${abs_srcdir}/../libelf \
+ -I ${abs_srcdir}/../libdw -I ${abs_srcdir}/../libdwfl -xc -
+echo '#include "libdwelf.h"' \
+ | ${CC} -c -o /dev/null -I ${abs_srcdir}/../libelf \
+ -I ${abs_srcdir}/../libdw -I ${abs_srcdir}/../libdwelf -xc -
+
+echo '#include "libasm.h"' \
+ | ${CC} -c -o /dev/null -I ${abs_srcdir}/../libelf \
+ -I ${abs_srcdir}/../libasm -xc -
diff --git a/tests/run-varlocs-self.sh b/tests/run-varlocs-self.sh
index 54b6a8d7..5454fc70 100755
--- a/tests/run-varlocs-self.sh
+++ b/tests/run-varlocs-self.sh
@@ -19,4 +19,6 @@
# Make sure varlocs doesn't crash, doesn't trigger self-check/asserts
# or leaks running under valgrind.
-testrun_on_self_quiet ${abs_top_builddir}/tests/varlocs -e
+testrun_on_self_exe ${abs_top_builddir}/tests/varlocs -e
+testrun_on_self_lib ${abs_top_builddir}/tests/varlocs -e
+testrun_on_self_obj ${abs_top_builddir}/tests/varlocs --exprlocs -e
diff --git a/tests/sectiondump.c b/tests/sectiondump.c
index f33484f9..661e6440 100644
--- a/tests/sectiondump.c
+++ b/tests/sectiondump.c
@@ -49,7 +49,7 @@ main (int argc, char *argv[])
if (fd == -1)
error (EXIT_FAILURE, errno, "cannot open input file `%s'", argv[1]);
- /* Set the library versio we expect. */
+ /* Set the library version we expect. */
elf_version (EV_CURRENT);
/* Create the ELF descriptor. */
@@ -58,7 +58,7 @@ main (int argc, char *argv[])
error (EXIT_FAILURE, 0, "cannot create ELF descriptor: %s",
elf_errmsg (0));
- /* Now proces all the sections mentioned in the rest of the command line. */
+ /* Now process all the sections mentioned in the rest of the command line. */
for (cnt = 2; cnt < argc; ++cnt)
if (handle_section (elf, elf_getscn (elf, atoi (argv[cnt]))) != 0)
/* When we encounter an error stop immediately. */
@@ -116,7 +116,7 @@ handle_section (Elf *elf, Elf_Scn *scn)
if (data == NULL)
return 1;
- /* Now proces the different section types accordingly. */
+ /* Now process the different section types accordingly. */
switch (shdr->sh_type)
{
case SHT_SYMTAB:
diff --git a/tests/test-subr.sh b/tests/test-subr.sh
index e768c1e5..411e5f28 100644
--- a/tests/test-subr.sh
+++ b/tests/test-subr.sh
@@ -168,6 +168,19 @@ testrun_on_self_lib()
if test $exit_status != 0; then exit $exit_status; fi
}
+testrun_on_self_obj()
+{
+ exit_status=0
+
+ for file in $self_test_files_obj; do
+ testrun $* $file \
+ || { echo "*** failure in $* $file"; exit_status=1; }
+ done
+
+ # Only exit if something failed
+ if test $exit_status != 0; then exit $exit_status; fi
+}
+
# Compress the files first. Compress both debug sections and symtab.
testrun_on_self_compressed()
{
diff --git a/tests/test-wrapper.sh b/tests/test-wrapper.sh
index 09b4d49f..c5d3f159 100755
--- a/tests/test-wrapper.sh
+++ b/tests/test-wrapper.sh
@@ -44,6 +44,7 @@ case "$1" in
*.sh)
export built_library_path program_transform_name elfutils_testrun
export elfutils_tests_rpath
+ is_shell_script="yes"
;;
*)
if [ $elfutils_testrun = built ]; then
@@ -55,6 +56,7 @@ case "$1" in
LD_LIBRARY_PATH="${libdir}:${libdir}/elfutils$old_path"
fi
export LD_LIBRARY_PATH
+ is_shell_script="no"
;;
esac
@@ -62,4 +64,10 @@ if [ "x$VALGRIND_CMD" != "x" ]; then
export VALGRIND_CMD
fi
-exec "$@"
+# When it is a run-*.sh script the VALGRIND_CMD will be passed on
+# otherwise we'll need to run the binary explicitly under valgrind.
+if [ "x$is_shell_script" = xyes ]; then
+ exec "$@"
+else
+ exec $VALGRIND_CMD "$@"
+fi
diff --git a/tests/testfile-gnu-property-note-aarch64.bz2 b/tests/testfile-gnu-property-note-aarch64.bz2
new file mode 100755
index 00000000..2fe37b19
--- /dev/null
+++ b/tests/testfile-gnu-property-note-aarch64.bz2
Binary files differ
diff --git a/tests/testfile-lto-gcc10.bz2 b/tests/testfile-lto-gcc10.bz2
new file mode 100755
index 00000000..e8ef621f
--- /dev/null
+++ b/tests/testfile-lto-gcc10.bz2
Binary files differ
diff --git a/tests/testfile-lto-gcc8.bz2 b/tests/testfile-lto-gcc8.bz2
new file mode 100755
index 00000000..cf744d9e
--- /dev/null
+++ b/tests/testfile-lto-gcc8.bz2
Binary files differ
diff --git a/tests/testfile-lto-gcc9.bz2 b/tests/testfile-lto-gcc9.bz2
new file mode 100755
index 00000000..df503618
--- /dev/null
+++ b/tests/testfile-lto-gcc9.bz2
Binary files differ
diff --git a/tests/testfile-phdrs.elf.bz2 b/tests/testfile-phdrs.elf.bz2
new file mode 100644
index 00000000..024ed79d
--- /dev/null
+++ b/tests/testfile-phdrs.elf.bz2
Binary files differ
diff --git a/tests/testfile-retain.o.bz2 b/tests/testfile-retain.o.bz2
new file mode 100644
index 00000000..7571c0ec
--- /dev/null
+++ b/tests/testfile-retain.o.bz2
Binary files differ
diff --git a/tests/testfile60.bz2 b/tests/testfile60.bz2
deleted file mode 100755
index 6a0cd7bc..00000000
--- a/tests/testfile60.bz2
+++ /dev/null
Binary files differ
diff --git a/tests/testfile_pt_gnu_prop.bz2 b/tests/testfile_pt_gnu_prop.bz2
new file mode 100755
index 00000000..f030fb9c
--- /dev/null
+++ b/tests/testfile_pt_gnu_prop.bz2
Binary files differ
diff --git a/tests/testfile_pt_gnu_prop32.bz2 b/tests/testfile_pt_gnu_prop32.bz2
new file mode 100755
index 00000000..6a7515a6
--- /dev/null
+++ b/tests/testfile_pt_gnu_prop32.bz2
Binary files differ
diff --git a/tests/testfilesyms32.bz2 b/tests/testfilesyms32.bz2
new file mode 100644
index 00000000..b3b7812c
--- /dev/null
+++ b/tests/testfilesyms32.bz2
Binary files differ
diff --git a/tests/testfilesyms64.bz2 b/tests/testfilesyms64.bz2
new file mode 100644
index 00000000..cdec3817
--- /dev/null
+++ b/tests/testfilesyms64.bz2
Binary files differ
diff --git a/tests/update1.c b/tests/update1.c
index f4c14753..b7be4e5f 100644
--- a/tests/update1.c
+++ b/tests/update1.c
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
int
@@ -38,7 +39,7 @@ main (int argc, char *argv[] __attribute__ ((unused)))
Elf32_Ehdr *ehdr;
int i;
- fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
diff --git a/tests/update2.c b/tests/update2.c
index 5805163d..71455633 100644
--- a/tests/update2.c
+++ b/tests/update2.c
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
int
@@ -39,7 +40,7 @@ main (int argc, char *argv[] __attribute__ ((unused)))
Elf32_Phdr *phdr;
int i;
- fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
diff --git a/tests/update3.c b/tests/update3.c
index 7a4224dd..62f67f74 100644
--- a/tests/update3.c
+++ b/tests/update3.c
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
#include ELFUTILS_HEADER(dwelf)
@@ -46,7 +47,7 @@ main (int argc, char *argv[] __attribute__ ((unused)))
Dwelf_Strent *shstrtabse;
int i;
- fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
diff --git a/tests/update4.c b/tests/update4.c
index a9bd4bf9..a703b592 100644
--- a/tests/update4.c
+++ b/tests/update4.c
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
#include ELFUTILS_HEADER(dwelf)
@@ -50,7 +51,7 @@ main (int argc, char *argv[] __attribute__ ((unused)))
Dwelf_Strent *shstrtabse;
int i;
- fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
diff --git a/tests/varlocs.c b/tests/varlocs.c
index 40505196..152c6555 100644
--- a/tests/varlocs.c
+++ b/tests/varlocs.c
@@ -1011,7 +1011,7 @@ handle_die (Dwarf_Die *die, int depth, bool outer_has_frame_base,
arg.entrypc = die_entrypc;
/* Whether this or the any outer DIE has a frame base. Used as
- sanity check when printing experssions that use DW_OP_fbreg. */
+ sanity check when printing expressions that use DW_OP_fbreg. */
bool die_has_frame_base = dwarf_hasattr (die, DW_AT_frame_base);
die_has_frame_base |= outer_has_frame_base;
has_frame_base = die_has_frame_base;
diff --git a/tests/vdsosyms.c b/tests/vdsosyms.c
index 7bfa7381..83ab034f 100644
--- a/tests/vdsosyms.c
+++ b/tests/vdsosyms.c
@@ -103,6 +103,8 @@ main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
if (dwfl_getmodules (dwfl, module_callback, NULL, 0) != 0)
error (1, 0, "dwfl_getmodules: %s", dwfl_errmsg (-1));
+ dwfl_end (dwfl);
+
/* No symbols is ok, then we haven't seen the vdso at all on this arch. */
return vdso_syms >= 0 ? 0 : -1;
}
diff --git a/tests/vendorelf.c b/tests/vendorelf.c
index bc13cce3..8ce1e5ec 100644
--- a/tests/vendorelf.c
+++ b/tests/vendorelf.c
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "system.h"
#include ELFUTILS_HEADER(elf)
#include <gelf.h>
@@ -36,7 +37,7 @@ check_elf (const char *fname, int class, int use_mmap)
{
printf ("\nfname: %s\n", fname);
- int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE);
if (fd == -1)
{
printf ("cannot open `%s': %s\n", fname, strerror (errno));
@@ -124,7 +125,7 @@ check_elf (const char *fname, int class, int use_mmap)
close (fd);
/* Reread the ELF from disk now. */
- fd = open (fname, O_RDONLY, 0666);
+ fd = open (fname, O_RDONLY);
if (fd == -1)
{
printf ("cannot open `%s' read-only: %s\n", fname, strerror (errno));
diff --git a/tests/zstrptr.c b/tests/zstrptr.c
index 6d8e19f7..9fb42e28 100644
--- a/tests/zstrptr.c
+++ b/tests/zstrptr.c
@@ -30,6 +30,26 @@
#include ELFUTILS_HEADER(elf)
#include <gelf.h>
+static void
+print_strings (Elf_Scn *scn, Elf *elf, size_t ndx)
+{
+ GElf_Shdr shdr_mem;
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+
+ printf ("Strings in section %zd (%s):\n", ndx,
+ ((shdr->sh_flags & SHF_COMPRESSED) != 0
+ ? "compressed" : "uncompressed"));
+
+ size_t off = 0;
+ const char *str = elf_strptr (elf, ndx, off);
+ while (str != NULL)
+ {
+ printf ("[%zx] '%s'\n", off, str);
+ off += strlen (str) + 1;
+ str = elf_strptr (elf, ndx, off);
+ }
+}
+
int
main (int argc, char *argv[])
{
@@ -79,38 +99,19 @@ main (int argc, char *argv[])
exit (1);
}
- void print_strings (void)
- {
- GElf_Shdr shdr_mem;
- GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
-
- printf ("Strings in section %zd (%s):\n", ndx,
- ((shdr->sh_flags & SHF_COMPRESSED) != 0
- ? "compressed" : "uncompressed"));
-
- size_t off = 0;
- const char *str = elf_strptr (elf, ndx, off);
- while (str != NULL)
- {
- printf ("[%zx] '%s'\n", off, str);
- off += strlen (str) + 1;
- str = elf_strptr (elf, ndx, off);
- }
- }
-
if (elf_compress (scn, ELFCOMPRESS_ZLIB, 0) < 0)
{
printf ("Couldn't compress section %zd: %s\n", ndx, elf_errmsg (-1));
exit (1);
}
- print_strings ();
+ print_strings (scn, elf, ndx);
if (elf_compress (scn, 0, 0) < 0)
{
printf ("Couldn't decompress section %zd: %s\n", ndx, elf_errmsg (-1));
exit (1);
}
- print_strings ();
+ print_strings (scn, elf, ndx);
if (elf_end (elf) != 0)
{
diff --git a/version.h b/version.h
index 651f9fbe..8690a24b 100644
--- a/version.h
+++ b/version.h
@@ -30,7 +30,7 @@
#ifndef _ELFUTILS_VERSION_H
#define _ELFUTILS_VERSION_H 1
-#define _ELFUTILS_VERSION 173
+#define _ELFUTILS_VERSION 183
#define _ELFUTILS_PREREQ(major, minor) \
(_ELFUTILS_VERSION >= ((major) * 1000 + (minor)))